Home | History | Annotate | Download | only in b_BitFeatureEm
      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 #ifndef bbf_FEATURE_EM_H
     18 #define bbf_FEATURE_EM_H
     19 
     20 /* ---- includes ----------------------------------------------------------- */
     21 
     22 #include "b_BasicEm/Context.h"
     23 #include "b_BasicEm/Basic.h"
     24 #include "b_BasicEm/MemTbl.h"
     25 #include "b_BitFeatureEm/Functions.h"
     26 
     27 /* ---- related objects  --------------------------------------------------- */
     28 
     29 /* ---- typedefs ----------------------------------------------------------- */
     30 
     31 enum bbf_FeatureType
     32 {
     33 	bbf_FT_UNDEFINED = 0,
     34 	bbf_FT_SEQUENCE,
     35 	bbf_FT_I04_DNS_2X2_FTR,
     36 	bbf_FT_I04_TLD_2X4_FTR,
     37 	bbf_FT_I04_DNS_2X4_FTR,
     38 	bbf_FT_L01_TLD_2X4_FTR,
     39 	bbf_FT_L01_DNS_2X4_FTR,
     40 	bbf_FT_L04_DNS_2X4_FTR,
     41 	bbf_FT_L04_DNS_3X3_FTR,
     42 	bbf_FT_L06_DNS_3X3_FTR,
     43 	bbf_FT_L06_DNS_4X4_FTR,
     44 	bbf_FT_L06_DNS_NX4X4_FTR,
     45 
     46 	bbf_FT_L01_TLD_1X1_FTR,
     47 	bbf_FT_L04_TLD_2X4_FTR,
     48 	bbf_FT_L04_DNS_2X2_FTR
     49 };
     50 
     51 /* ---- constants ---------------------------------------------------------- */
     52 
     53 /* ---- object definition -------------------------------------------------- */
     54 
     55 /** base object for features (occurs as first element in all feature objects) */
     56 struct bbf_Feature
     57 {
     58 	/* ---- private data --------------------------------------------------- */
     59 
     60 	/* ---- public data ---------------------------------------------------- */
     61 
     62 	/** feature type */
     63 	uint32 typeE;
     64 
     65 	/** width of patch */
     66 	uint32 patchWidthE;
     67 
     68 	/** height of patch */
     69 	uint32 patchHeightE;
     70 
     71 	/* ---- virtual functions ---------------------------------------------- */
     72 
     73 	/** computes feature's activity (4.28) on the given patch */
     74 	int32 ( *vpActivityE )( const struct bbf_Feature* ptrA, const uint32* patchA );
     75 };
     76 
     77 /* ---- associated objects ------------------------------------------------- */
     78 
     79 /* ---- external functions ------------------------------------------------- */
     80 
     81 /* ---- \ghd{ constructor/destructor } ------------------------------------- */
     82 
     83 /** initializes bbf_Feature  */
     84 void bbf_Feature_init( struct bbs_Context* cpA,
     85 					   struct bbf_Feature* ptrA );
     86 
     87 /** resets bbf_Feature  */
     88 void bbf_Feature_exit( struct bbs_Context* cpA,
     89 					   struct bbf_Feature* ptrA );
     90 
     91 /* ---- \ghd{ operators } -------------------------------------------------- */
     92 
     93 /** copy operator */
     94 void bbf_Feature_copy( struct bbs_Context* cpA,
     95 					   struct bbf_Feature* ptrA,
     96 					   const struct bbf_Feature* srcPtrA );
     97 
     98 /** equal operator */
     99 flag bbf_Feature_equal( struct bbs_Context* cpA,
    100 						const struct bbf_Feature* ptrA,
    101 						const struct bbf_Feature* srcPtrA );
    102 
    103 /* ---- \ghd{ query functions } -------------------------------------------- */
    104 
    105 /* ---- \ghd{ modify functions } ------------------------------------------- */
    106 
    107 /* ---- \ghd{ memory I/O } ------------------------------------------------- */
    108 
    109 /** word size (16-bit) object needs when written to memory */
    110 uint32 bbf_Feature_memSize( struct bbs_Context* cpA,
    111 						    const struct bbf_Feature* ptrA );
    112 
    113 /** writes object to memory; returns number of words (16-bit) written */
    114 uint32 bbf_Feature_memWrite( struct bbs_Context* cpA,
    115 							 const struct bbf_Feature* ptrA, uint16* memPtrA );
    116 
    117 /** reads object from memory; returns number of words (16-bit) read */
    118 uint32 bbf_Feature_memRead( struct bbs_Context* cpA,
    119 							struct bbf_Feature* ptrA, const uint16* memPtrA );
    120 
    121 /* ---- \ghd{ exec functions } --------------------------------------------- */
    122 
    123 /** virtual init function  */
    124 void bbf_featureInit( struct bbs_Context* cpA,
    125 					  struct bbf_Feature* ptrA,
    126 					  enum bbf_FeatureType typeA );
    127 
    128 /** virtual exit function */
    129 void bbf_featureExit( struct bbs_Context* cpA,
    130 					  struct bbf_Feature* ptrA );
    131 
    132 /** virtual mem size function */
    133 uint32 bbf_featureMemSize( struct bbs_Context* cpA,
    134 						   const struct bbf_Feature* ptrA );
    135 
    136 /** virtual mem write function */
    137 uint32 bbf_featureMemWrite( struct bbs_Context* cpA,
    138 						    const struct bbf_Feature* ptrA, uint16* memPtrA );
    139 
    140 /** virtual mem read function */
    141 uint32 bbf_featureMemRead( struct bbs_Context* cpA,
    142 						   struct bbf_Feature* ptrA,
    143 						   const uint16* memPtrA,
    144 						   struct bbs_MemTbl* mtpA );
    145 
    146 /** virtual sizeof operator for 16bit units */
    147 uint32 bbf_featureSizeOf16( struct bbs_Context* cpA, enum bbf_FeatureType typeA );
    148 
    149 #endif /* bbf_FEATURE_EM_H */
    150 
    151