~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to plugin/myisam/myisampack.h

pandora-build v0.72 - Moved remaining hard-coded tests into pandora-build
macros.
Add PANDORA_DRIZZLE_BUILD to run the extra checks that drizzle needs that 
plugins would also need to run so we can just use that macro in generated
external plugin builds.
Added support to register_plugins for external plugin building.
Renamed register_plugins.py to pandora-plugin.

Show diffs side-by-side

added added

removed removed

Lines of Context:
13
13
   along with this program; if not, write to the Free Software
14
14
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
15
15
 
 
16
#ifndef PLUGIN_MYISAM_MYISAMPACK_H
 
17
#define PLUGIN_MYISAM_MYISAMPACK_H
 
18
 
16
19
/*
17
20
  Storing of values in high byte first order.
18
21
 
22
25
 
23
26
/* these two are for uniformity */
24
27
#define mi_sint1korr(A) ((int8_t)(*A))
25
 
#define mi_uint1korr(A) ((uint8_t)(*A))
26
28
 
27
29
#define mi_sint2korr(A) ((int16_t) (((int16_t) (((const unsigned char*) (A))[1])) +\
28
30
                                  ((int16_t) ((int16_t) ((const char*) (A))[0]) << 8)))
126
128
 
127
129
#ifdef WORDS_BIGENDIAN
128
130
 
129
 
#define mi_float4store(T,A) { ((unsigned char*) (T))[0]= ((const unsigned char*) &A)[0];\
130
 
                              ((unsigned char*) (T))[1]= ((const unsigned char*) &A)[1];\
131
 
                              ((unsigned char*) (T))[2]= ((const unsigned char*) &A)[2];\
132
 
                              ((unsigned char*) (T))[3]= ((const unsigned char*) &A)[3]; }
133
 
 
134
131
#define mi_float4get(V,M)   { float def_temp;\
135
132
                              ((unsigned char*) &def_temp)[0]= ((const unsigned char*) (M))[0];\
136
133
                              ((unsigned char*) &def_temp)[1]= ((const unsigned char*) (M))[1];\
138
135
                              ((unsigned char*) &def_temp)[3]= ((const unsigned char*) (M))[3];\
139
136
                              (V)= def_temp; }
140
137
 
141
 
#define mi_float8store(T,V) { ((unsigned char*) (T))[0]= ((unsigned char*) &V)[0];\
142
 
                              ((unsigned char*) (T))[1]= ((unsigned char*) &V)[1];\
143
 
                              ((unsigned char*) (T))[2]= ((unsigned char*) &V)[2];\
144
 
                              ((unsigned char*) (T))[3]= ((unsigned char*) &V)[3];\
145
 
                              ((unsigned char*) (T))[4]= ((unsigned char*) &V)[4];\
146
 
                              ((unsigned char*) (T))[5]= ((unsigned char*) &V)[5];\
147
 
                              ((unsigned char*) (T))[6]= ((unsigned char*) &V)[6];\
148
 
                              ((unsigned char*) (T))[7]= ((unsigned char*) &V)[7]; }
149
 
 
150
138
#define mi_float8get(V,M)   { double def_temp;\
151
139
                              ((unsigned char*) &def_temp)[0]= ((unsigned char*) (M))[0];\
152
140
                              ((unsigned char*) &def_temp)[1]= ((unsigned char*) (M))[1];\
159
147
                              (V)= def_temp; }
160
148
#else
161
149
 
162
 
#define mi_float4store(T,A) { ((unsigned char*) (T))[0]= ((unsigned char*) &A)[3];\
163
 
                              ((unsigned char*) (T))[1]= ((unsigned char*) &A)[2];\
164
 
                              ((unsigned char*) (T))[2]= ((unsigned char*) &A)[1];\
165
 
                              ((unsigned char*) (T))[3]= ((unsigned char*) &A)[0]; }
166
 
 
167
150
#define mi_float4get(V,M)   { float def_temp;\
168
151
                              ((unsigned char*) &def_temp)[0]= ((unsigned char*) (M))[3];\
169
152
                              ((unsigned char*) &def_temp)[1]= ((unsigned char*) (M))[2];\
172
155
                              (V)= def_temp; }
173
156
 
174
157
#if defined(__FLOAT_WORD_ORDER) && (__FLOAT_WORD_ORDER == __BIG_ENDIAN)
175
 
#define mi_float8store(T,V) { ((unsigned char*) (T))[0]= ((unsigned char*) &V)[3];\
176
 
                              ((unsigned char*) (T))[1]= ((unsigned char*) &V)[2];\
177
 
                              ((unsigned char*) (T))[2]= ((unsigned char*) &V)[1];\
178
 
                              ((unsigned char*) (T))[3]= ((unsigned char*) &V)[0];\
179
 
                              ((unsigned char*) (T))[4]= ((unsigned char*) &V)[7];\
180
 
                              ((unsigned char*) (T))[5]= ((unsigned char*) &V)[6];\
181
 
                              ((unsigned char*) (T))[6]= ((unsigned char*) &V)[5];\
182
 
                              ((unsigned char*) (T))[7]= ((unsigned char*) &V)[4];}
183
158
 
184
159
#define mi_float8get(V,M)   { double def_temp;\
185
160
                              ((unsigned char*) &def_temp)[0]= ((unsigned char*) (M))[3];\
193
168
                              (V)= def_temp; }
194
169
 
195
170
#else
196
 
#define mi_float8store(T,V) { ((unsigned char*) (T))[0]= ((unsigned char*) &V)[7];\
197
 
                              ((unsigned char*) (T))[1]= ((unsigned char*) &V)[6];\
198
 
                              ((unsigned char*) (T))[2]= ((unsigned char*) &V)[5];\
199
 
                              ((unsigned char*) (T))[3]= ((unsigned char*) &V)[4];\
200
 
                              ((unsigned char*) (T))[4]= ((unsigned char*) &V)[3];\
201
 
                              ((unsigned char*) (T))[5]= ((unsigned char*) &V)[2];\
202
 
                              ((unsigned char*) (T))[6]= ((unsigned char*) &V)[1];\
203
 
                              ((unsigned char*) (T))[7]= ((unsigned char*) &V)[0];}
204
171
 
205
172
#define mi_float8get(V,M)   { double def_temp;\
206
173
                              ((unsigned char*) &def_temp)[0]= ((unsigned char*) (M))[7];\
216
183
#endif /* WORDS_BIGENDIAN */
217
184
 
218
185
/* Fix to avoid warnings when sizeof(ha_rows) == sizeof(long) */
219
 
 
220
 
#ifdef BIG_TABLES
221
186
#define mi_rowstore(T,A)    mi_int8store(T, A)
222
187
#define mi_rowkorr(T)       mi_uint8korr(T)
223
 
#else
224
 
#define mi_rowstore(T,A)    { mi_int4store(T, 0);\
225
 
                              mi_int4store(((unsigned char*) (T) + 4), A); }
226
 
#define mi_rowkorr(T)       mi_uint4korr((unsigned char*) (T) + 4)
227
 
#endif
228
188
 
229
 
#if SIZEOF_OFF_T > 4
230
189
#define mi_sizestore(T,A)   mi_int8store(T, A)
231
190
#define mi_sizekorr(T)      mi_uint8korr(T)
232
 
#else
233
 
#define mi_sizestore(T,A)            \
234
 
  do {                               \
235
 
    if ((A) == HA_OFFSET_ERROR)      \
236
 
      memset((T), 255, 8);           \
237
 
    else {                           \
238
 
      mi_int4store((T), 0);          \
239
 
      mi_int4store(((T) + 4), A);    \
240
 
    }                                \
241
 
  } while (0)
242
 
#define mi_sizekorr(T)      mi_uint4korr((unsigned char*) (T) + 4)
243
 
#endif
 
191
 
 
192
#endif /* PLUGIN_MYISAM_MYISAMPACK_H */