auto import from //depot/cupcake/@135843
[android/platform/external/neven.git] / Embedded / common / src / b_BitFeatureEm / Feature.h
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