1 /* 2 * Copyright (C) 2008 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 /* ---- includes ----------------------------------------------------------- */ 18 19 #include "b_BasicEm/Functions.h" 20 #include "b_BitFeatureEm/Feature.h" 21 22 #include "b_BitFeatureEm/Sequence.h" 23 #include "b_BitFeatureEm/I04Dns2x2Ftr.h" 24 #include "b_BitFeatureEm/I04Tld2x4Ftr.h" 25 #include "b_BitFeatureEm/I04Dns2x4Ftr.h" 26 #include "b_BitFeatureEm/L01Tld2x4Ftr.h" 27 #include "b_BitFeatureEm/L01Dns2x4Ftr.h" 28 #include "b_BitFeatureEm/L04Dns2x4Ftr.h" 29 #include "b_BitFeatureEm/L04Dns3x3Ftr.h" 30 #include "b_BitFeatureEm/L06Dns3x3Ftr.h" 31 #include "b_BitFeatureEm/L06Dns4x4Ftr.h" 32 #include "b_BitFeatureEm/L06DnsNx4x4Ftr.h" 33 #include "b_BitFeatureEm/L01Tld1x1Ftr.h" 34 #include "b_BitFeatureEm/L04Tld2x4Ftr.h" 35 #include "b_BitFeatureEm/L04Dns2x2Ftr.h" 36 37 /* ------------------------------------------------------------------------- */ 38 39 /* ========================================================================= */ 40 /* */ 41 /* ---- \ghd{ auxiliary functions } ---------------------------------------- */ 42 /* */ 43 /* ========================================================================= */ 44 45 /* ------------------------------------------------------------------------- */ 46 47 /* ========================================================================= */ 48 /* */ 49 /* ---- \ghd{ constructor / destructor } ----------------------------------- */ 50 /* */ 51 /* ========================================================================= */ 52 53 /* ------------------------------------------------------------------------- */ 54 55 void bbf_Feature_init( struct bbs_Context* cpA, 56 struct bbf_Feature* ptrA ) 57 { 58 ptrA->typeE = 0; 59 ptrA->patchWidthE = 0; 60 ptrA->patchHeightE = 0; 61 ptrA->vpActivityE = NULL; 62 } 63 64 /* ------------------------------------------------------------------------- */ 65 66 void bbf_Feature_exit( struct bbs_Context* cpA, 67 struct bbf_Feature* ptrA ) 68 { 69 ptrA->typeE = 0; 70 ptrA->patchWidthE = 0; 71 ptrA->patchHeightE = 0; 72 ptrA->vpActivityE = NULL; 73 } 74 75 /* ------------------------------------------------------------------------- */ 76 77 /* ========================================================================= */ 78 /* */ 79 /* ---- \ghd{ operators } -------------------------------------------------- */ 80 /* */ 81 /* ========================================================================= */ 82 83 /* ------------------------------------------------------------------------- */ 84 85 void bbf_Feature_copy( struct bbs_Context* cpA, 86 struct bbf_Feature* ptrA, 87 const struct bbf_Feature* srcPtrA ) 88 { 89 ptrA->typeE = srcPtrA->typeE; 90 ptrA->patchWidthE = srcPtrA->patchWidthE; 91 ptrA->patchHeightE = srcPtrA->patchHeightE; 92 ptrA->vpActivityE = srcPtrA->vpActivityE; 93 } 94 95 /* ------------------------------------------------------------------------- */ 96 97 flag bbf_Feature_equal( struct bbs_Context* cpA, 98 const struct bbf_Feature* ptrA, 99 const struct bbf_Feature* srcPtrA ) 100 { 101 102 if( ptrA->typeE != srcPtrA->typeE ) return FALSE; 103 if( ptrA->patchWidthE != srcPtrA->patchWidthE ) return FALSE; 104 if( ptrA->patchHeightE != srcPtrA->patchHeightE ) return FALSE; 105 if( ptrA->vpActivityE != srcPtrA->vpActivityE ) return FALSE; 106 return TRUE; 107 } 108 109 /* ------------------------------------------------------------------------- */ 110 111 /* ========================================================================= */ 112 /* */ 113 /* ---- \ghd{ query functions } -------------------------------------------- */ 114 /* */ 115 /* ========================================================================= */ 116 117 /* ------------------------------------------------------------------------- */ 118 119 /* ========================================================================= */ 120 /* */ 121 /* ---- \ghd{ modify functions } ------------------------------------------- */ 122 /* */ 123 /* ========================================================================= */ 124 125 /* ------------------------------------------------------------------------- */ 126 127 /* ========================================================================= */ 128 /* */ 129 /* ---- \ghd{ I/O } -------------------------------------------------------- */ 130 /* */ 131 /* ========================================================================= */ 132 133 /* ------------------------------------------------------------------------- */ 134 135 uint32 bbf_Feature_memSize( struct bbs_Context* cpA, 136 const struct bbf_Feature* ptrA ) 137 { 138 uint32 memSizeL = 0; 139 memSizeL += bbs_SIZEOF16( ptrA->typeE ); 140 memSizeL += bbs_SIZEOF16( ptrA->patchWidthE ); 141 memSizeL += bbs_SIZEOF16( ptrA->patchHeightE ); 142 return memSizeL; 143 } 144 145 /* ------------------------------------------------------------------------- */ 146 147 uint32 bbf_Feature_memWrite( struct bbs_Context* cpA, 148 const struct bbf_Feature* ptrA, 149 uint16* memPtrA ) 150 { 151 uint32 memSizeL = bbf_Feature_memSize( cpA, ptrA ); 152 memPtrA += bbs_memWrite32( &ptrA->typeE, memPtrA ); 153 memPtrA += bbs_memWrite32( &ptrA->patchWidthE, memPtrA ); 154 memPtrA += bbs_memWrite32( &ptrA->patchHeightE, memPtrA ); 155 return memSizeL; 156 } 157 158 /* ------------------------------------------------------------------------- */ 159 160 uint32 bbf_Feature_memRead( struct bbs_Context* cpA, 161 struct bbf_Feature* ptrA, 162 const uint16* memPtrA ) 163 { 164 if( bbs_Context_error( cpA ) ) return 0; 165 memPtrA += bbs_memRead32( &ptrA->typeE, memPtrA ); 166 memPtrA += bbs_memRead32( &ptrA->patchWidthE, memPtrA ); 167 memPtrA += bbs_memRead32( &ptrA->patchHeightE, memPtrA ); 168 return bbf_Feature_memSize( cpA, ptrA ); 169 } 170 171 /* ------------------------------------------------------------------------- */ 172 173 /* ========================================================================= */ 174 /* */ 175 /* ---- \ghd{ exec functions } --------------------------------------------- */ 176 /* */ 177 /* ========================================================================= */ 178 179 /* ------------------------------------------------------------------------- */ 180 181 void bbf_featureInit( struct bbs_Context* cpA, 182 struct bbf_Feature* ptrA, 183 enum bbf_FeatureType typeA ) 184 { 185 switch( typeA ) 186 { 187 case bbf_FT_SEQUENCE: bbf_Sequence_init( cpA, ( struct bbf_Sequence* )ptrA ); return; 188 case bbf_FT_I04_DNS_2X2_FTR: bbf_I04Dns2x2Ftr_init( cpA, ( struct bbf_I04Dns2x2Ftr* )ptrA ); return; 189 case bbf_FT_I04_TLD_2X4_FTR: bbf_I04Tld2x4Ftr_init( cpA, ( struct bbf_I04Tld2x4Ftr* )ptrA ); return; 190 case bbf_FT_I04_DNS_2X4_FTR: bbf_I04Dns2x4Ftr_init( cpA, ( struct bbf_I04Dns2x4Ftr* )ptrA ); return; 191 case bbf_FT_L01_TLD_2X4_FTR: bbf_L01Tld2x4Ftr_init( cpA, ( struct bbf_L01Tld2x4Ftr* )ptrA ); return; 192 case bbf_FT_L01_DNS_2X4_FTR: bbf_L01Dns2x4Ftr_init( cpA, ( struct bbf_L01Dns2x4Ftr* )ptrA ); return; 193 case bbf_FT_L04_DNS_2X4_FTR: bbf_L04Dns2x4Ftr_init( cpA, ( struct bbf_L04Dns2x4Ftr* )ptrA ); return; 194 case bbf_FT_L04_DNS_3X3_FTR: bbf_L04Dns3x3Ftr_init( cpA, ( struct bbf_L04Dns3x3Ftr* )ptrA ); return; 195 case bbf_FT_L06_DNS_3X3_FTR: bbf_L06Dns3x3Ftr_init( cpA, ( struct bbf_L06Dns3x3Ftr* )ptrA ); return; 196 case bbf_FT_L06_DNS_4X4_FTR: bbf_L06Dns4x4Ftr_init( cpA, ( struct bbf_L06Dns4x4Ftr* )ptrA ); return; 197 case bbf_FT_L06_DNS_NX4X4_FTR: bbf_L06DnsNx4x4Ftr_init( cpA, ( struct bbf_L06DnsNx4x4Ftr* )ptrA ); return; 198 case bbf_FT_L01_TLD_1X1_FTR: bbf_L01Tld1x1Ftr_init( cpA, ( struct bbf_L01Tld1x1Ftr* )ptrA ); return; 199 case bbf_FT_L04_TLD_2X4_FTR: bbf_L04Tld2x4Ftr_init( cpA, ( struct bbf_L04Tld2x4Ftr* )ptrA ); return; 200 case bbf_FT_L04_DNS_2X2_FTR: bbf_L04Dns2x2Ftr_init( cpA, ( struct bbf_L04Dns2x2Ftr* )ptrA ); return; 201 202 default: bbs_ERROR0( "bbf_featureInit: invalid type" ); 203 } 204 } 205 206 /* ------------------------------------------------------------------------- */ 207 208 void bbf_featureExit( struct bbs_Context* cpA, 209 struct bbf_Feature* ptrA ) 210 { 211 switch( ptrA->typeE ) 212 { 213 case bbf_FT_SEQUENCE: bbf_Sequence_exit( cpA, ( struct bbf_Sequence* )ptrA ); return; 214 case bbf_FT_I04_DNS_2X2_FTR: bbf_I04Dns2x2Ftr_exit( cpA, ( struct bbf_I04Dns2x2Ftr* )ptrA ); return; 215 case bbf_FT_I04_TLD_2X4_FTR: bbf_I04Tld2x4Ftr_exit( cpA, ( struct bbf_I04Tld2x4Ftr* )ptrA ); return; 216 case bbf_FT_I04_DNS_2X4_FTR: bbf_I04Dns2x4Ftr_exit( cpA, ( struct bbf_I04Dns2x4Ftr* )ptrA ); return; 217 case bbf_FT_L01_TLD_2X4_FTR: bbf_L01Tld2x4Ftr_exit( cpA, ( struct bbf_L01Tld2x4Ftr* )ptrA ); return; 218 case bbf_FT_L01_DNS_2X4_FTR: bbf_L01Dns2x4Ftr_exit( cpA, ( struct bbf_L01Dns2x4Ftr* )ptrA ); return; 219 case bbf_FT_L04_DNS_2X4_FTR: bbf_L04Dns2x4Ftr_exit( cpA, ( struct bbf_L04Dns2x4Ftr* )ptrA ); return; 220 case bbf_FT_L04_DNS_3X3_FTR: bbf_L04Dns3x3Ftr_exit( cpA, ( struct bbf_L04Dns3x3Ftr* )ptrA ); return; 221 case bbf_FT_L06_DNS_3X3_FTR: bbf_L06Dns3x3Ftr_exit( cpA, ( struct bbf_L06Dns3x3Ftr* )ptrA ); return; 222 case bbf_FT_L06_DNS_4X4_FTR: bbf_L06Dns4x4Ftr_exit( cpA, ( struct bbf_L06Dns4x4Ftr* )ptrA ); return; 223 case bbf_FT_L06_DNS_NX4X4_FTR: bbf_L06DnsNx4x4Ftr_exit( cpA, ( struct bbf_L06DnsNx4x4Ftr* )ptrA ); return; 224 case bbf_FT_L01_TLD_1X1_FTR: bbf_L01Tld1x1Ftr_exit( cpA, ( struct bbf_L01Tld1x1Ftr* )ptrA ); return; 225 case bbf_FT_L04_TLD_2X4_FTR: bbf_L04Tld2x4Ftr_exit( cpA, ( struct bbf_L04Tld2x4Ftr* )ptrA ); return; 226 case bbf_FT_L04_DNS_2X2_FTR: bbf_L04Dns2x2Ftr_exit( cpA, ( struct bbf_L04Dns2x2Ftr* )ptrA ); return; 227 default: bbs_ERROR0( "bbf_featureExit: invalid type" ); 228 } 229 } 230 231 /* ------------------------------------------------------------------------- */ 232 233 uint32 bbf_featureMemSize( struct bbs_Context* cpA, 234 const struct bbf_Feature* ptrA ) 235 { 236 switch( ptrA->typeE ) 237 { 238 case bbf_FT_SEQUENCE: return bbf_Sequence_memSize( cpA, ( struct bbf_Sequence* )ptrA ); 239 case bbf_FT_I04_DNS_2X2_FTR: return bbf_I04Dns2x2Ftr_memSize( cpA, ( struct bbf_I04Dns2x2Ftr* )ptrA ); 240 case bbf_FT_I04_TLD_2X4_FTR: return bbf_I04Tld2x4Ftr_memSize( cpA, ( struct bbf_I04Tld2x4Ftr* )ptrA ); 241 case bbf_FT_I04_DNS_2X4_FTR: return bbf_I04Dns2x4Ftr_memSize( cpA, ( struct bbf_I04Dns2x4Ftr* )ptrA ); 242 case bbf_FT_L01_TLD_2X4_FTR: return bbf_L01Tld2x4Ftr_memSize( cpA, ( struct bbf_L01Tld2x4Ftr* )ptrA ); 243 case bbf_FT_L01_DNS_2X4_FTR: return bbf_L01Dns2x4Ftr_memSize( cpA, ( struct bbf_L01Dns2x4Ftr* )ptrA ); 244 case bbf_FT_L04_DNS_2X4_FTR: return bbf_L04Dns2x4Ftr_memSize( cpA, ( struct bbf_L04Dns2x4Ftr* )ptrA ); 245 case bbf_FT_L04_DNS_3X3_FTR: return bbf_L04Dns3x3Ftr_memSize( cpA, ( struct bbf_L04Dns3x3Ftr* )ptrA ); 246 case bbf_FT_L06_DNS_3X3_FTR: return bbf_L06Dns3x3Ftr_memSize( cpA, ( struct bbf_L06Dns3x3Ftr* )ptrA ); 247 case bbf_FT_L06_DNS_4X4_FTR: return bbf_L06Dns4x4Ftr_memSize( cpA, ( struct bbf_L06Dns4x4Ftr* )ptrA ); 248 case bbf_FT_L06_DNS_NX4X4_FTR: return bbf_L06DnsNx4x4Ftr_memSize( cpA, ( struct bbf_L06DnsNx4x4Ftr* )ptrA ); 249 case bbf_FT_L01_TLD_1X1_FTR: return bbf_L01Tld1x1Ftr_memSize( cpA, ( struct bbf_L01Tld1x1Ftr* )ptrA ); 250 case bbf_FT_L04_TLD_2X4_FTR: return bbf_L04Tld2x4Ftr_memSize( cpA, ( struct bbf_L04Tld2x4Ftr* )ptrA ); 251 case bbf_FT_L04_DNS_2X2_FTR: return bbf_L04Dns2x2Ftr_memSize( cpA, ( struct bbf_L04Dns2x2Ftr* )ptrA ); 252 default: bbs_ERROR0( "bbf_featureExit: invalid type" ); 253 } 254 return 0; 255 } 256 257 /* ------------------------------------------------------------------------- */ 258 259 uint32 bbf_featureMemWrite( struct bbs_Context* cpA, 260 const struct bbf_Feature* ptrA, uint16* memPtrA ) 261 { 262 switch( ptrA->typeE ) 263 { 264 case bbf_FT_SEQUENCE: return bbf_Sequence_memWrite( cpA, ( struct bbf_Sequence* )ptrA, memPtrA ); 265 case bbf_FT_I04_DNS_2X2_FTR: return bbf_I04Dns2x2Ftr_memWrite( cpA, ( struct bbf_I04Dns2x2Ftr* )ptrA, memPtrA ); 266 case bbf_FT_I04_TLD_2X4_FTR: return bbf_I04Tld2x4Ftr_memWrite( cpA, ( struct bbf_I04Tld2x4Ftr* )ptrA, memPtrA ); 267 case bbf_FT_I04_DNS_2X4_FTR: return bbf_I04Dns2x4Ftr_memWrite( cpA, ( struct bbf_I04Dns2x4Ftr* )ptrA, memPtrA ); 268 case bbf_FT_L01_TLD_2X4_FTR: return bbf_L01Tld2x4Ftr_memWrite( cpA, ( struct bbf_L01Tld2x4Ftr* )ptrA, memPtrA ); 269 case bbf_FT_L01_DNS_2X4_FTR: return bbf_L01Dns2x4Ftr_memWrite( cpA, ( struct bbf_L01Dns2x4Ftr* )ptrA, memPtrA ); 270 case bbf_FT_L04_DNS_2X4_FTR: return bbf_L04Dns2x4Ftr_memWrite( cpA, ( struct bbf_L04Dns2x4Ftr* )ptrA, memPtrA ); 271 case bbf_FT_L04_DNS_3X3_FTR: return bbf_L04Dns3x3Ftr_memWrite( cpA, ( struct bbf_L04Dns3x3Ftr* )ptrA, memPtrA ); 272 case bbf_FT_L06_DNS_3X3_FTR: return bbf_L06Dns3x3Ftr_memWrite( cpA, ( struct bbf_L06Dns3x3Ftr* )ptrA, memPtrA ); 273 case bbf_FT_L06_DNS_4X4_FTR: return bbf_L06Dns4x4Ftr_memWrite( cpA, ( struct bbf_L06Dns4x4Ftr* )ptrA, memPtrA ); 274 case bbf_FT_L06_DNS_NX4X4_FTR: return bbf_L06DnsNx4x4Ftr_memWrite( cpA, ( struct bbf_L06DnsNx4x4Ftr* )ptrA, memPtrA ); 275 case bbf_FT_L01_TLD_1X1_FTR: return bbf_L01Tld1x1Ftr_memWrite( cpA, ( struct bbf_L01Tld1x1Ftr* )ptrA, memPtrA ); 276 case bbf_FT_L04_TLD_2X4_FTR: return bbf_L04Tld2x4Ftr_memWrite( cpA, ( struct bbf_L04Tld2x4Ftr* )ptrA, memPtrA ); 277 case bbf_FT_L04_DNS_2X2_FTR: return bbf_L04Dns2x2Ftr_memWrite( cpA, ( struct bbf_L04Dns2x2Ftr* )ptrA, memPtrA ); 278 default: bbs_ERROR0( "bbf_featureMemWrite: invalid type" ); 279 } 280 return 0; 281 } 282 283 /* ------------------------------------------------------------------------- */ 284 285 uint32 bbf_featureMemRead( struct bbs_Context* cpA, 286 struct bbf_Feature* ptrA, 287 const uint16* memPtrA, 288 struct bbs_MemTbl* mtpA ) 289 { 290 switch( ptrA->typeE ) 291 { 292 case bbf_FT_SEQUENCE: return bbf_Sequence_memRead( cpA, ( struct bbf_Sequence* )ptrA, memPtrA, mtpA ); 293 case bbf_FT_I04_DNS_2X2_FTR: return bbf_I04Dns2x2Ftr_memRead( cpA, ( struct bbf_I04Dns2x2Ftr* )ptrA, memPtrA, mtpA ); 294 case bbf_FT_I04_TLD_2X4_FTR: return bbf_I04Tld2x4Ftr_memRead( cpA, ( struct bbf_I04Tld2x4Ftr* )ptrA, memPtrA, mtpA ); 295 case bbf_FT_I04_DNS_2X4_FTR: return bbf_I04Dns2x4Ftr_memRead( cpA, ( struct bbf_I04Dns2x4Ftr* )ptrA, memPtrA, mtpA ); 296 case bbf_FT_L01_TLD_2X4_FTR: return bbf_L01Tld2x4Ftr_memRead( cpA, ( struct bbf_L01Tld2x4Ftr* )ptrA, memPtrA, mtpA ); 297 case bbf_FT_L01_DNS_2X4_FTR: return bbf_L01Dns2x4Ftr_memRead( cpA, ( struct bbf_L01Dns2x4Ftr* )ptrA, memPtrA, mtpA ); 298 case bbf_FT_L04_DNS_2X4_FTR: return bbf_L04Dns2x4Ftr_memRead( cpA, ( struct bbf_L04Dns2x4Ftr* )ptrA, memPtrA, mtpA ); 299 case bbf_FT_L04_DNS_3X3_FTR: return bbf_L04Dns3x3Ftr_memRead( cpA, ( struct bbf_L04Dns3x3Ftr* )ptrA, memPtrA, mtpA ); 300 case bbf_FT_L06_DNS_3X3_FTR: return bbf_L06Dns3x3Ftr_memRead( cpA, ( struct bbf_L06Dns3x3Ftr* )ptrA, memPtrA, mtpA ); 301 case bbf_FT_L06_DNS_4X4_FTR: return bbf_L06Dns4x4Ftr_memRead( cpA, ( struct bbf_L06Dns4x4Ftr* )ptrA, memPtrA, mtpA ); 302 case bbf_FT_L06_DNS_NX4X4_FTR: return bbf_L06DnsNx4x4Ftr_memRead( cpA, ( struct bbf_L06DnsNx4x4Ftr* )ptrA, memPtrA, mtpA ); 303 case bbf_FT_L01_TLD_1X1_FTR: return bbf_L01Tld1x1Ftr_memRead( cpA, ( struct bbf_L01Tld1x1Ftr* )ptrA, memPtrA, mtpA ); 304 case bbf_FT_L04_TLD_2X4_FTR: return bbf_L04Tld2x4Ftr_memRead( cpA, ( struct bbf_L04Tld2x4Ftr* )ptrA, memPtrA, mtpA ); 305 case bbf_FT_L04_DNS_2X2_FTR: return bbf_L04Dns2x2Ftr_memRead( cpA, ( struct bbf_L04Dns2x2Ftr* )ptrA, memPtrA, mtpA ); 306 default: bbs_ERROR0( "bbf_featureMemRead: invalid type" ); 307 } 308 return 0; 309 } 310 311 /* ------------------------------------------------------------------------- */ 312 313 uint32 bbf_featureSizeOf16( struct bbs_Context* cpA, enum bbf_FeatureType typeA ) 314 { 315 switch( typeA ) 316 { 317 case bbf_FT_SEQUENCE: return bbs_SIZEOF16( struct bbf_Sequence ); 318 case bbf_FT_I04_DNS_2X2_FTR: return bbs_SIZEOF16( struct bbf_I04Dns2x2Ftr ); 319 case bbf_FT_I04_TLD_2X4_FTR: return bbs_SIZEOF16( struct bbf_I04Tld2x4Ftr ); 320 case bbf_FT_I04_DNS_2X4_FTR: return bbs_SIZEOF16( struct bbf_I04Dns2x4Ftr ); 321 case bbf_FT_L01_TLD_2X4_FTR: return bbs_SIZEOF16( struct bbf_L01Tld2x4Ftr ); 322 case bbf_FT_L01_DNS_2X4_FTR: return bbs_SIZEOF16( struct bbf_L01Dns2x4Ftr ); 323 case bbf_FT_L04_DNS_2X4_FTR: return bbs_SIZEOF16( struct bbf_L04Dns2x4Ftr ); 324 case bbf_FT_L04_DNS_3X3_FTR: return bbs_SIZEOF16( struct bbf_L04Dns3x3Ftr ); 325 case bbf_FT_L06_DNS_3X3_FTR: return bbs_SIZEOF16( struct bbf_L06Dns3x3Ftr ); 326 case bbf_FT_L06_DNS_4X4_FTR: return bbs_SIZEOF16( struct bbf_L06Dns4x4Ftr ); 327 case bbf_FT_L06_DNS_NX4X4_FTR: return bbs_SIZEOF16( struct bbf_L06DnsNx4x4Ftr ); 328 case bbf_FT_L01_TLD_1X1_FTR: return bbs_SIZEOF16( struct bbf_L01Tld1x1Ftr ); 329 case bbf_FT_L04_TLD_2X4_FTR: return bbs_SIZEOF16( struct bbf_L04Tld2x4Ftr ); 330 case bbf_FT_L04_DNS_2X2_FTR: return bbs_SIZEOF16( struct bbf_L04Dns2x2Ftr ); 331 default: bbs_ERROR0( "bbf_featureSizeOf16: invalid type" ); 332 } 333 return 0; 334 } 335 336 /* ------------------------------------------------------------------------- */ 337 338 /* ========================================================================= */ 339 340