~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to storage/myisam/myisampack.h

  • Committer: Brian Aker
  • Date: 2008-10-06 06:47:29 UTC
  • Revision ID: brian@tangent.org-20081006064729-2i9mhjkzyvow9xsm
RemoveĀ uint.

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
 
 
19
16
/*
20
17
  Storing of values in high byte first order.
21
18
 
25
22
 
26
23
/* these two are for uniformity */
27
24
#define mi_sint1korr(A) ((int8_t)(*A))
 
25
#define mi_uint1korr(A) ((uint8_t)(*A))
28
26
 
29
27
#define mi_sint2korr(A) ((int16_t) (((int16_t) (((const unsigned char*) (A))[1])) +\
30
28
                                  ((int16_t) ((int16_t) ((const char*) (A))[0]) << 8)))
128
126
 
129
127
#ifdef WORDS_BIGENDIAN
130
128
 
 
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
 
131
134
#define mi_float4get(V,M)   { float def_temp;\
132
135
                              ((unsigned char*) &def_temp)[0]= ((const unsigned char*) (M))[0];\
133
136
                              ((unsigned char*) &def_temp)[1]= ((const unsigned char*) (M))[1];\
135
138
                              ((unsigned char*) &def_temp)[3]= ((const unsigned char*) (M))[3];\
136
139
                              (V)= def_temp; }
137
140
 
 
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
 
138
150
#define mi_float8get(V,M)   { double def_temp;\
139
151
                              ((unsigned char*) &def_temp)[0]= ((unsigned char*) (M))[0];\
140
152
                              ((unsigned char*) &def_temp)[1]= ((unsigned char*) (M))[1];\
147
159
                              (V)= def_temp; }
148
160
#else
149
161
 
 
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
 
150
167
#define mi_float4get(V,M)   { float def_temp;\
151
168
                              ((unsigned char*) &def_temp)[0]= ((unsigned char*) (M))[3];\
152
169
                              ((unsigned char*) &def_temp)[1]= ((unsigned char*) (M))[2];\
155
172
                              (V)= def_temp; }
156
173
 
157
174
#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];}
158
183
 
159
184
#define mi_float8get(V,M)   { double def_temp;\
160
185
                              ((unsigned char*) &def_temp)[0]= ((unsigned char*) (M))[3];\
168
193
                              (V)= def_temp; }
169
194
 
170
195
#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];}
171
204
 
172
205
#define mi_float8get(V,M)   { double def_temp;\
173
206
                              ((unsigned char*) &def_temp)[0]= ((unsigned char*) (M))[7];\
183
216
#endif /* WORDS_BIGENDIAN */
184
217
 
185
218
/* Fix to avoid warnings when sizeof(ha_rows) == sizeof(long) */
 
219
 
 
220
#ifdef BIG_TABLES
186
221
#define mi_rowstore(T,A)    mi_int8store(T, A)
187
222
#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
188
228
 
 
229
#if SIZEOF_OFF_T > 4
189
230
#define mi_sizestore(T,A)   mi_int8store(T, A)
190
231
#define mi_sizekorr(T)      mi_uint8korr(T)
191
 
 
192
 
#endif /* PLUGIN_MYISAM_MYISAMPACK_H */
 
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