CMGDK r49-rc2
|
00001 / * C o p y r i g h t ( C ) 2 0 0 0 - 2 0 0 3 M y S Q L A B 00002 00003 T h i s p r o g r a m i s f r e e s o f t w a r e ; y o u c a n r e d i s t r i b u t e i t a n d / o r m o d i f y 00004 00005 i t u n d e r t h e t e r m s o f t h e G N U G e n e r a l P u b l i c L i c e n s e a s p u b l i s h e d b y 00006 00007 t h e F r e e S o f t w a r e F o u n d a t i o n ; v e r s i o n 2 o f t h e L i c e n s e . 00008 00009 T h i s p r o g r a m i s d i s t r i b u t e d i n t h e h o p e t h a t i t w i l l b e u s e f u l , 00010 00011 b u t W I T H O U T A N Y W A R R A N T Y ; w i t h o u t e v e n t h e i m p l i e d w a r r a n t y o f 00012 00013 M E R C H A N T A B I L I T Y o r F I T N E S S F O R A P A R T I C U L A R P U R P O S E . S e e t h e 00014 00015 G N U G e n e r a l P u b l i c L i c e n s e f o r m o r e d e t a i l s . 00016 00017 Y o u s h o u l d h a v e r e c e i v e d a c o p y o f t h e G N U G e n e r a l P u b l i c L i c e n s e 00018 00019 a l o n g w i t h t h i s p r o g r a m ; i f n o t , w r i t e t o t h e F r e e S o f t w a r e 00020 00021 F o u n d a t i o n , I n c . , 5 9 T e m p l e P l a c e , S u i t e 3 3 0 , B o s t o n , M A 0 2 1 1 1 - 1 3 0 7 U S A * / 00022 00023 / * T h i s i s t h e i n c l u d e f i l e t h a t s h o u l d b e i n c l u d e d ' f i r s t ' i n e v e r y C f i l e . * / 00024 00025 # i f n d e f _ g l o b a l _ h 00026 00027 # d e f i n e _ g l o b a l _ h 00028 00029 / * 00030 00031 I n n o D B d e p e n d s o n s o m e M y S Q L i n t e r n a l s w h i c h o t h e r p l u g i n s s h o u l d n o t 00032 00033 n e e d . T h i s i s b e c a u s e o f I n n o D B ' s f o r e i g n k e y s u p p o r t , " s a f e " b i n l o g 00034 00035 t r u n c a t i o n , a n d o t h e r s i m i l a r l e g a c y f e a t u r e s . 00036 00037 W e d e f i n e a c c e s s o r s f o r t h e s e i n t e r n a l s u n c o n d i t i o n a l l y , b u t d o n o t 00038 00039 e x p o s e t h e m i n m y s q l / p l u g i n . h . T h e y a r e d e c l a r e d i n h a _ i n n o d b . h f o r 00040 00041 I n n o D B ' s u s e . 00042 00043 * / 00044 00045 # d e f i n e I N N O D B _ C O M P A T I B I L I T Y _ H O O K S 00046 00047 # i f d e f _ _ C Y G W I N _ _ 00048 00049 / * W e u s e a U n i x A P I , s o p r e t e n d i t ' s n o t W i n d o w s * / 00050 00051 # u n d e f W I N 00052 00053 # u n d e f W I N 3 2 00054 00055 # u n d e f _ W I N 00056 00057 # u n d e f _ W I N 3 2 00058 00059 # u n d e f _ W I N 6 4 00060 00061 # u n d e f _ _ W I N _ _ 00062 00063 # u n d e f _ _ W I N 3 2 _ _ 00064 00065 # d e f i n e H A V E _ E R R N O _ A S _ D E F I N E 00066 00067 # e n d i f / * _ _ C Y G W I N _ _ * / 00068 00069 # i f d e f i n e d ( _ _ Q N X N T O _ _ ) & & ! d e f i n e d ( F D _ S E T S I Z E ) 00070 00071 # d e f i n e F D _ S E T S I Z E 1 0 2 4 / * M a x n u m b e r o f f i l e d e s c r i p t o r b i t s i n 00072 00073 f d _ s e t , u s e d w h e n c a l l i n g ' s e l e c t ' 00074 00075 M u s t b e d e f i n e d b e f o r e i n c l u d i n g 00076 00077 " s y s / s e l e c t . h " a n d " s y s / t i m e . h " 00078 00079 * / 00080 00081 # e n d i f 00082 00083 00084 00085 / * t o m a k e c o m m a n d l i n e s h o r t e r w e ' l l d e f i n e U S E _ P R A G M A _ I N T E R F A C E h e r e * / 00086 00087 # i f d e f U S E _ P R A G M A _ I M P L E M E N T A T I O N 00088 00089 # d e f i n e U S E _ P R A G M A _ I N T E R F A C E 00090 00091 # e n d i f 00092 00093 # i f d e f i n e d ( i 3 8 6 ) & & ! d e f i n e d ( _ _ i 3 8 6 _ _ ) 00094 00095 # d e f i n e _ _ i 3 8 6 _ _ 00096 00097 # e n d i f 00098 00099 / * M a c r o s t o m a k e s w i t c h i n g b e t w e e n C a n d C + + m o d e e a s i e r * / 00100 00101 # i f d e f _ _ c p l u s p l u s 00102 00103 # d e f i n e C _ M O D E _ S T A R T e x t e r n " C " { 00104 00105 # d e f i n e C _ M O D E _ E N D } 00106 00107 # d e f i n e S T A T I C _ C A S T ( T Y P E ) s t a t i c _ c a s t < T Y P E > 00108 00109 # e l s e 00110 00111 # d e f i n e C _ M O D E _ S T A R T 00112 00113 # d e f i n e C _ M O D E _ E N D 00114 00115 # d e f i n e S T A T I C _ C A S T ( T Y P E ) ( T Y P E ) 00116 00117 # e n d i f 00118 00119 # i f d e f i n e d ( _ W I N 3 2 ) | | d e f i n e d ( _ W I N 6 4 ) | | d e f i n e d ( _ _ W I N 3 2 _ _ ) | | d e f i n e d ( W I N 3 2 ) 00120 00121 # i n c l u d e < c o n f i g - w i n . h > 00122 00123 # e l s e 00124 00125 # i n c l u d e < m y _ c o n f i g . h > 00126 00127 # i f d e f i n e d ( _ _ c p l u s p l u s ) & & d e f i n e d ( i n l i n e ) 00128 00129 # u n d e f i n l i n e / * f i x c o n f i g u r e p r o b l e m * / 00130 00131 # e n d i f 00132 00133 # e n d i f / * _ W I N 3 2 . . . * / 00134 00135 # i n c l u d e < m y _ c h a r s e t s . h > 00136 00137 / * M a k e i t e a s i e r t o a d d c o n d i t i o n a l c o d e f o r w i n d o w s * / 00138 00139 # i f d e f _ _ W I N _ _ 00140 00141 # d e f i n e I F _ W I N ( A , B ) ( A ) 00142 00143 # e l s e 00144 00145 # d e f i n e I F _ W I N ( A , B ) ( B ) 00146 00147 # e n d i f 00148 00149 # i f n d e f E M B E D D E D _ L I B R A R Y 00150 00151 # i f d e f W I T H _ N D B _ B I N L O G 00152 00153 # d e f i n e H A V E _ N D B _ B I N L O G 1 00154 00155 # e n d i f 00156 00157 # e n d i f / * ! E M B E D D E D _ L I B R A R Y * / 00158 00159 # i f n d e f E M B E D D E D _ L I B R A R Y 00160 00161 # d e f i n e H A V E _ R E P L I C A T I O N 00162 00163 # d e f i n e H A V E _ E X T E R N A L _ C L I E N T 00164 00165 # e n d i f 00166 00167 / * S o m e d e f i n e s t o a v o i d i f d e f s i n t h e c o d e * / 00168 00169 # i f n d e f N E T W A R E _ Y I E L D 00170 00171 # d e f i n e N E T W A R E _ Y I E L D 00172 00173 # d e f i n e N E T W A R E _ S E T _ S C R E E N _ M O D E ( A ) 00174 00175 # e n d i f 00176 00177 / * W o r k a r o u n d f o r _ L A R G E _ F I L E S a n d _ L A R G E _ F I L E _ A P I i n c o m p a t i b i l i t y o n A I X * / 00178 00179 # i f d e f i n e d ( _ A I X ) & & d e f i n e d ( _ L A R G E _ F I L E _ A P I ) 00180 00181 # u n d e f _ L A R G E _ F I L E _ A P I 00182 00183 # e n d i f 00184 00185 / * 00186 00187 T h e m a c r o s b e l o w a r e u s e d t o a l l o w b u i l d o f U n i v e r s a l / f a t b i n a r i e s o f 00188 00189 M y S Q L a n d M y S Q L a p p l i c a t i o n s u n d e r d a r w i n . 00190 00191 * / 00192 00193 # i f d e f i n e d ( _ _ A P P L E _ _ ) & & d e f i n e d ( _ _ M A C H _ _ ) 00194 00195 # u n d e f S I Z E O F _ C H A R P 00196 00197 # u n d e f S I Z E O F _ S H O R T 00198 00199 # u n d e f S I Z E O F _ I N T 00200 00201 # u n d e f S I Z E O F _ L O N G 00202 00203 # u n d e f S I Z E O F _ L O N G _ L O N G 00204 00205 # u n d e f S I Z E O F _ O F F _ T 00206 00207 # u n d e f W O R D S _ B I G E N D I A N 00208 00209 # d e f i n e S I Z E O F _ S H O R T 2 00210 00211 # d e f i n e S I Z E O F _ I N T 4 00212 00213 # d e f i n e S I Z E O F _ L O N G _ L O N G 8 00214 00215 # d e f i n e S I Z E O F _ O F F _ T 8 00216 00217 # i f d e f i n e d ( _ _ i 3 8 6 _ _ ) | | d e f i n e d ( _ _ p p c _ _ ) 00218 00219 # d e f i n e S I Z E O F _ C H A R P 4 00220 00221 # d e f i n e S I Z E O F _ L O N G 4 00222 00223 # e l i f d e f i n e d ( _ _ x 8 6 _ 6 4 _ _ ) | | d e f i n e d ( _ _ p p c 6 4 _ _ ) 00224 00225 # d e f i n e S I Z E O F _ C H A R P 8 00226 00227 # d e f i n e S I Z E O F _ L O N G 8 00228 00229 # e l s e 00230 00231 # e r r o r B u i l d i n g F A T b i n a r y f o r a n u n k n o w n a r c h i t e c t u r e . 00232 00233 # e n d i f 00234 00235 # i f d e f i n e d ( _ _ p p c _ _ ) | | d e f i n e d ( _ _ p p c 6 4 _ _ ) 00236 00237 # d e f i n e W O R D S _ B I G E N D I A N 00238 00239 # e n d i f 00240 00241 # e n d i f / * d e f i n e d ( _ _ A P P L E _ _ ) & & d e f i n e d ( _ _ M A C H _ _ ) * / 00242 00243 00244 00245 / * 00246 00247 T h e m a c r o s b e l o w a r e b o r r o w e d f r o m i n c l u d e / l i n u x / c o m p i l e r . h i n t h e 00248 00249 L i n u x k e r n e l . U s e t h e m t o i n d i c a t e t h e l i k e l y h o o d o f t h e t r u t h f u l n e s s 00250 00251 o f a c o n d i t i o n . T h i s s e r v e s t w o p u r p o s e s - n e w e r v e r s i o n s o f g c c w i l l b e 00252 00253 a b l e t o o p t i m i z e f o r b r a n c h p r e d i c a t i o n , w h i c h c o u l d y i e l d s i g i n f i c a n t 00254 00255 p e r f o r m a n c e g a i n s i n f r e q u e n t l y e x e c u t e d s e c t i o n s o f t h e c o d e , a n d t h e 00256 00257 o t h e r r e a s o n t o u s e t h e m i s f o r d o c u m e n t a t i o n 00258 00259 * / 00260 00261 # i f ! d e f i n e d ( _ _ G N U C _ _ ) | | ( _ _ G N U C _ _ = = 2 & & _ _ G N U C _ M I N O R _ _ < 9 6 ) 00262 00263 # d e f i n e _ _ b u i l t i n _ e x p e c t ( x , e x p e c t e d _ v a l u e ) ( x ) 00264 00265 # e n d i f 00266 00267 / * * 00268 00269 T h e s e m a n t i c s o f b u i l t i n _ e x p e c t ( ) a r e t h a t 00270 00271 1 ) i t s t w o a r g u m e n t s a r e l o n g 00272 00273 2 ) i t ' s l i k e l y t h a t t h e y a r e = = 00274 00275 T h o s e o f o u r l i k e l y ( x ) a r e t h a t x c a n b e b o o l / i n t / l o n g l o n g / p o i n t e r . 00276 00277 * / 00278 00279 # d e f i n e l i k e l y ( x ) _ _ b u i l t i n _ e x p e c t ( ( ( x ) ! = 0 ) , 1 ) 00280 00281 # d e f i n e u n l i k e l y ( x ) _ _ b u i l t i n _ e x p e c t ( ( ( x ) ! = 0 ) , 0 ) 00282 00283 / * 00284 00285 T h e m a c r o s b e l o w a r e u s e f u l i n o p t i m i s i n g p l a c e s w h e r e i t h a s b e e n 00286 00287 d i s c o v e r e d t h a t c a c h e m i s s e s s t a l l t h e p r o c e s s a n d w h e r e a p r e f e t c h 00288 00289 o f t h e c a c h e l i n e c a n i m p r o v e m a t t e r s . T h i s i s a v a i l a b l e i n G C C 3 . 1 . 1 00290 00291 a n d l a t e r v e r s i o n s . 00292 00293 P R E F E T C H _ R E A D s a y s t h a t a d d r i s g o i n g t o b e u s e d f o r r e a d i n g a n d t h a t 00294 00295 i t i s t o b e k e p t i n c a c h e s i f p o s s i b l e f o r a w h i l e 00296 00297 P R E F E T C H _ W R I T E a l s o s a y s t h a t t h e i t e m t o b e c a c h e d i s l i k e l y t o b e 00298 00299 u p d a t e d . 00300 00301 T h e * L O C A L I T Y s c r i p t s a r e a l s o a v a i l a b l e f o r e x p e r i m e n t a t i o n p u r p o s e s 00302 00303 m o s t l y a n d s h o u l d o n l y b e u s e d i f t h e y a r e v e r i f i e d t o i m p r o v e m a t t e r s . 00304 00305 F o r m o r e i n p u t s e e G C C m a n u a l ( a v a i l a b l e i n G C C 3 . 1 . 1 a n d l a t e r ) 00306 00307 * / 00308 00309 # i f ( _ _ G N U C _ _ > 3 ) | | ( _ _ G N U C _ _ = = 3 & & _ _ G N U C _ M I N O R > 1 0 ) 00310 00311 # d e f i n e P R E F E T C H _ R E A D ( a d d r ) _ _ b u i l t i n _ p r e f e t c h ( a d d r , 0 , 3 ) 00312 00313 # d e f i n e P R E F E T C H _ W R I T E ( a d d r ) \ 00314 00315 _ _ b u i l t i n _ p r e f e t c h ( a d d r , 1 , 3 ) 00316 00317 # d e f i n e P R E F E T C H _ R E A D _ L O C A L I T Y ( a d d r , l o c a l i t y ) \ 00318 00319 _ _ b u i l t i n _ p r e f e t c h ( a d d r , 0 , l o c a l i t y ) 00320 00321 # d e f i n e P R E F E T C H _ W R I T E _ L O C A L I T Y ( a d d r , l o c a l i t y ) \ 00322 00323 _ _ b u i l t i n _ p r e f e t c h ( a d d r , 1 , l o c a l i t y ) 00324 00325 # e l s e 00326 00327 # d e f i n e P R E F E T C H _ R E A D ( a d d r ) 00328 00329 # d e f i n e P R E F E T C H _ R E A D _ L O C A L I T Y ( a d d r , l o c a l i t y ) 00330 00331 # d e f i n e P R E F E T C H _ W R I T E ( a d d r ) 00332 00333 # d e f i n e P R E F E T C H _ W R I T E _ L O C A L I T Y ( a d d r , l o c a l i t y ) 00334 00335 # e n d i f 00336 00337 / * 00338 00339 T h e f o l l o w i n g m a c r o i s u s e d t o e n s u r e t h a t c o d e o f t e n u s e d i n m o s t 00340 00341 S Q L s t a t e m e n t s a n d d e f i n i t e l y f o r p a r t s o f t h e S Q L p r o c e s s i n g a r e 00342 00343 k e p t i n a c o d e s e g m e n t b y i t s e l f . T h i s h a s t h e a d v a n t a g e t h a t t h e 00344 00345 r i s k o f c o m m o n c o d e b e i n g o v e r l a p p i n g i n c a c h e s o f t h e C P U i s l e s s . 00346 00347 T h i s c a n b e a c a u s e o f b i g p e r f o r m a n c e p r o b l e m s . 00348 00349 R o u t i n e s s h o u l d b e p u t i n t h i s c a t e g o r y w i t h c a r e a n d w h e n t h e y a r e 00350 00351 p u t t h e r e o n e s h o u l d a l s o s t r i v e t o m a k e a s m u c h o f t h e e r r o r h a n d l i n g 00352 00353 a s p o s s i b l e ( o r u n c o m m o n c o d e o f t h e r o u t i n e ) t o e x e c u t e i n a 00354 00355 s e p a r a t e m e t h o d t o a v o i d m o v i n g t o m u c h c o d e t o t h i s c o d e s e g m e n t . 00356 00357 I t i s v e r y e a s y t o u s e , s i m p l y a d d H O T _ M E T H O D a t t h e e n d o f t h e 00358 00359 f u n c t i o n d e c l a r a t i o n . 00360 00361 F o r m o r e i n p u t s e e G C C m a n u a l ( a v a i l a b l e i n G C C 2 . 9 5 a n d l a t e r ) 00362 00363 * / 00364 00365 # i f ( _ _ G N U C _ _ > 2 ) | | ( _ _ G N U C _ _ = = 2 & & _ _ G N U C _ M I N O R > 9 4 ) 00366 00367 # d e f i n e H O T _ M E T H O D \ 00368 00369 _ _ a t t r i b u t e _ _ ( ( s e c t i o n ( " h o t _ c o d e _ s e c t i o n " ) ) ) 00370 00371 # e l s e 00372 00373 # d e f i n e H O T _ M E T H O D 00374 00375 # e n d i f 00376 00377 / * 00378 00379 T h e f o l l o w i n g m a c r o i s u s e d t o e n s u r e t h a t p o p u l a r g l o b a l v a r i a b l e s 00380 00381 a r e l o c a t e d n e x t t o e a c h o t h e r t o a v o i d t h a t t h e y c o n t e n d f o r t h e 00382 00383 s a m e c a c h e l i n e s . 00384 00385 I t i s v e r y e a s y t o u s e , s i m p l y a d d H O T _ D A T A a t t h e e n d o f t h e d e c l a r a t i o n 00386 00387 o f t h e v a r i a b l e , t h e v a r i a b l e m u s t b e i n i t i a l i s e d b e c a u s e o f t h e w a y 00388 00389 t h a t l i n k e r w o r k s s o a d e c l a r a t i o n u s i n g H O T _ D A T A s h o u l d l o o k l i k e : 00390 00391 u i n t g l o b a l _ h o t _ d a t a H O T _ D A T A = 0 ; 00392 00393 F o r m o r e i n p u t s e e G C C m a n u a l ( a v a i l a b l e i n G C C 2 . 9 5 a n d l a t e r ) 00394 00395 * / 00396 00397 # i f ( _ _ G N U C _ _ > 2 ) | | ( _ _ G N U C _ _ = = 2 & & _ _ G N U C _ M I N O R > 9 4 ) 00398 00399 # d e f i n e H O T _ D A T A \ 00400 00401 _ _ a t t r i b u t e _ _ ( ( s e c t i o n ( " h o t _ d a t a _ s e c t i o n " ) ) ) 00402 00403 # e l s e 00404 00405 # d e f i n e H O T _ D A T A 00406 00407 # e n d i f 00408 00409 / * 00410 00411 n o w l e t ' s f i g u r e o u t i f i n l i n e f u n c t i o n s a r e s u p p o r t e d 00412 00413 a u t o c o n f d e f i n e s ' i n l i n e ' t o b e e m p t y , i f n o t 00414 00415 * / 00416 00417 # d e f i n e i n l i n e _ t e s t _ 1 ( X ) X # # 1 00418 00419 # d e f i n e i n l i n e _ t e s t _ 2 ( X ) i n l i n e _ t e s t _ 1 ( X ) 00420 00421 # i f i n l i n e _ t e s t _ 2 ( i n l i n e ) ! = 1 00422 00423 # d e f i n e H A V E _ I N L I N E 00424 00425 # e n d i f 00426 00427 # u n d e f i n l i n e _ t e s t _ 2 00428 00429 # u n d e f i n l i n e _ t e s t _ 1 00430 00431 / * h e l p e r m a c r o f o r " i n s t a n t i a t i n g " i n l i n e f u n c t i o n s * / 00432 00433 # d e f i n e S T A T I C _ I N L I N E s t a t i c i n l i n e 00434 00435 / * 00436 00437 T h e f o l l o w i n g m a c r o s a r e u s e d t o c o n t r o l i n l i n i n g a b i t m o r e t h a n 00438 00439 u s u a l . T h e s e m a c r o s a r e u s e d t o e n s u r e t h a t i n l i n i n g a l w a y s o r 00440 00441 n e v e r o c c u r s ( i n d e p e n d e n t o f c o m p i l a t i o n m o d e ) . 00442 00443 F o r m o r e i n p u t s e e G C C m a n u a l ( a v a i l a b l e i n G C C 3 . 1 . 1 a n d l a t e r ) 00444 00445 * / 00446 00447 # i f ( _ _ G N U C _ _ > 3 ) | | ( _ _ G N U C _ _ = = 3 & & _ _ G N U C _ M I N O R > 1 0 ) 00448 00449 # d e f i n e A L W A Y S _ I N L I N E _ _ a t t r i b u t e _ _ ( ( a l w a y s _ i n l i n e ) ) 00450 00451 # d e f i n e N E V E R _ I N L I N E _ _ a t t r i b u t e _ _ ( ( n o i n l i n e ) ) 00452 00453 # e l s e 00454 00455 # d e f i n e A L W A Y S _ I N L I N E 00456 00457 # d e f i n e N E V E R _ I N L I N E 00458 00459 # e n d i f 00460 00461 00462 00463 / * F i x p r o b l e m w i t h S _ I S L N K ( ) o n L i n u x * / 00464 00465 # i f d e f i n e d ( T A R G E T _ O S _ L I N U X ) | | d e f i n e d ( _ _ G L I B C _ _ ) 00466 00467 # u n d e f _ G N U _ S O U R C E 00468 00469 # d e f i n e _ G N U _ S O U R C E 1 00470 00471 # e n d i f 00472 00473 / * 00474 00475 T e m p o r a r y s o l u t i o n t o s o l v e b u g # 7 1 5 6 . I n c l u d e " s y s / t y p e s . h " b e f o r e 00476 00477 t h e t h r e a d h e a d e r s , e l s e t h e f u n c t i o n m a d v i s e ( ) w i l l n o t b e d e f i n e d 00478 00479 * / 00480 00481 # i f d e f i n e d ( H A V E _ S Y S _ T Y P E S _ H ) & & ( d e f i n e d ( s u n ) | | d e f i n e d ( _ _ s u n ) ) 00482 00483 # i n c l u d e < s y s / t y p e s . h > 00484 00485 # e n d i f 00486 00487 / * T h e c l i e n t d e f i n e s t h i s t o a v o i d a l l t h r e a d c o d e * / 00488 00489 # i f d e f i n e d ( U N D E F _ T H R E A D S _ H A C K ) 00490 00491 # u n d e f T H R E A D 00492 00493 # u n d e f H A V E _ L I N U X T H R E A D S 00494 00495 # u n d e f H A V E _ N P T L 00496 00497 # e n d i f 00498 00499 # i f d e f H A V E _ T H R E A D S _ W I T H O U T _ S O C K E T S 00500 00501 / * M I T p t h r e a d s d o e s n o t w o r k w i t h u n i x s o c k e t s * / 00502 00503 # u n d e f H A V E _ S Y S _ U N _ H 00504 00505 # e n d i f 00506 00507 # d e f i n e _ _ E X T E N S I O N S _ _ 1 / * W e w a n t s o m e e x t e n s i o n * / 00508 00509 # i f n d e f _ _ S T D C _ E X T _ _ 00510 00511 # d e f i n e _ _ S T D C _ E X T _ _ 1 / * T o g e t l a r g e f i l e s u p p o r t o n h p u x * / 00512 00513 # e n d i f 00514 00515 / * 00516 00517 S o l a r i s 9 i n c l u d e f i l e < s y s / f e a t u r e _ t e s t s . h > r e f e r s t o X / O p e n d o c u m e n t 00518 00519 S y s t e m I n t e r f a c e s a n d H e a d e r s , I s s u e 5 00520 00521 s a y i n g w e s h o u l d d e f i n e _ X O P E N _ S O U R C E = 5 0 0 t o g e t P O S I X . 1 c p r o t o t y p e s , 00522 00523 b u t a p p a r e n t l y o t h e r s y s t e m s ( n a m e l y F r e e B S D ) d o n ' t a g r e e . 00524 00525 O n a n e w e r S o l a r i s 1 0 , t h e a b o v e f i l e r e c o g n i z e s a l s o _ X O P E N _ S O U R C E = 6 0 0 . 00526 00527 F u r t h e r m o r e , i t t e s t s t h a t i f a p r o g r a m r e q u i r e s o l d e r s t a n d a r d 00528 00529 ( _ X O P E N _ S O U R C E < 6 0 0 o r _ P O S I X _ C _ S O U R C E < 2 0 0 1 1 2 L ) i t c a n n o t b e 00530 00531 r u n o n a n e w c o m p i l e r ( t h a t d e f i n e s _ S T D C _ C 9 9 ) a n d i s s u e s a n # e r r o r . 00532 00533 I t ' s a l s o a n # e r r o r i f a p r o g r a m r e q u i r e s n e w s t a n d a r d ( _ X O P E N _ S O U R C E = 6 0 0 00534 00535 o r _ P O S I X _ C _ S O U R C E = 2 0 0 1 1 2 L ) a n d a c o m p i l e r d o e s n o t d e f i n e _ S T D C _ C 9 9 . 00536 00537 T o a d d m o r e t o t h i s m e s s , S u n S t u d i o C c o m p i l e r d e f i n e s _ S T D C _ C 9 9 w h i l e 00538 00539 C + + c o m p i l e r d o e s n o t ! 00540 00541 S o , i n a d e s p e r a t e a t t e m p t t o g e t c o r r e c t p r o t o t y p e s f o r b o t h 00542 00543 C a n d C + + c o d e , w e d e f i n e e i t h e r _ X O P E N _ S O U R C E = 6 0 0 o r _ X O P E N _ S O U R C E = 5 0 0 00544 00545 d e p e n d i n g o n t h e c o m p i l e r ' s a n n o u n c e d C s t a n d a r d s u p p o r t . 00546 00547 C l e a n e r s o l u t i o n s a r e w e l c o m e . 00548 00549 * / 00550 00551 # i f d e f _ _ s u n 00552 00553 # i f _ _ S T D C _ V E R S I O N _ _ - 0 > = 1 9 9 9 0 1 L 00554 00555 # d e f i n e _ X O P E N _ S O U R C E 6 0 0 00556 00557 # e l s e 00558 00559 # d e f i n e _ X O P E N _ S O U R C E 5 0 0 00560 00561 # e n d i f 00562 00563 # e n d i f 00564 00565 # i f d e f i n e d ( T H R E A D ) & & ! d e f i n e d ( _ _ W I N _ _ ) 00566 00567 # i f n d e f _ P O S I X _ P T H R E A D _ S E M A N T I C S 00568 00569 # d e f i n e _ P O S I X _ P T H R E A D _ S E M A N T I C S / * W e w a n t p o s i x t h r e a d s * / 00570 00571 # e n d i f 00572 00573 # i f ! d e f i n e d ( S C O ) 00574 00575 # d e f i n e _ R E E N T R A N T 1 / * S o m e t h r e a d l i b r a r i e s r e q u i r e t h i s * / 00576 00577 # e n d i f 00578 00579 # i f ! d e f i n e d ( _ T H R E A D _ S A F E ) & & ! d e f i n e d ( _ A I X ) 00580 00581 # d e f i n e _ T H R E A D _ S A F E / * R e q u i r e d f o r O S F 1 * / 00582 00583 # e n d i f 00584 00585 # i f d e f i n e d ( H P U X 1 0 ) | | d e f i n e d ( H P U X 1 1 ) 00586 00587 C _ M O D E _ S T A R T / * H P U X n e e d s t h i s , s i g n a l . h b u g * / 00588 00589 # i n c l u d e < p t h r e a d . h > 00590 00591 C _ M O D E _ E N D 00592 00593 # e l s e 00594 00595 # i n c l u d e < p t h r e a d . h > / * A I X m u s t h a v e t h i s i n c l u d e d f i r s t * / 00596 00597 # e n d i f 00598 00599 # i f ! d e f i n e d ( S C O ) & & ! d e f i n e d ( _ R E E N T R A N T ) 00600 00601 # d e f i n e _ R E E N T R A N T 1 / * T h r e a d s r e q u i r e s r e e n t r a n t c o d e * / 00602 00603 # e n d i f 00604 00605 # e n d i f / * T H R E A D * / 00606 00607 / * G o a r o u n d s o m e b u g s i n d i f f e r e n t O S a n d c o m p i l e r s * / 00608 00609 # i f d e f _ A I X / * B y s o r e n @ t . d k * / 00610 00611 # d e f i n e _ H _ S T R I N G S 00612 00613 # d e f i n e _ S Y S _ S T R E A M _ H 00614 00615 / * # d e f i n e _ A I X 3 2 _ C U R S E S * / / * X X X : t h i s b r e a k s A I X 4 . 3 . 3 ( o t h e r s ? ) . * / 00616 00617 # d e f i n e u l o n g l o n g 2 d o u b l e ( A ) m y _ u l o n g l o n g 2 d o u b l e ( A ) 00618 00619 # d e f i n e m y _ o f f _ t 2 d o u b l e ( A ) m y _ u l o n g l o n g 2 d o u b l e ( A ) 00620 00621 C _ M O D E _ S T A R T 00622 00623 d o u b l e m y _ u l o n g l o n g 2 d o u b l e ( u n s i g n e d l o n g l o n g A ) ; 00624 00625 C _ M O D E _ E N D 00626 00627 # e n d i f / * _ A I X * / 00628 00629 # i f d e f H A V E _ B R O K E N _ S N P R I N T F / * H P U X 1 0 . 2 0 d o n ' t h a v e t h i s d e f i n e d * / 00630 00631 # u n d e f H A V E _ S N P R I N T F 00632 00633 # e n d i f 00634 00635 # i f d e f H A V E _ B R O K E N _ P R E A D 00636 00637 / * 00638 00639 p r e a d ( ) / p w r i t e ( ) a r e n o t 6 4 b i t s a f e o n H P - U X 1 1 . 0 w i t h o u t 00640 00641 i n s t a l l i n g t h e k e r n e l p a t c h P H K L _ 2 0 3 4 9 o r g r e a t e r 00642 00643 * / 00644 00645 # u n d e f H A V E _ P R E A D 00646 00647 # u n d e f H A V E _ P W R I T E 00648 00649 # e n d i f 00650 00651 # i f d e f i n e d ( H A V E _ B R O K E N _ I N L I N E ) & & ! d e f i n e d ( _ _ c p l u s p l u s ) 00652 00653 # u n d e f i n l i n e 00654 00655 # d e f i n e i n l i n e 00656 00657 # e n d i f 00658 00659 # i f d e f U N D E F _ H A V E _ G E T H O S T B Y N A M E _ R / * F o r O S F 4 . x * / 00660 00661 # u n d e f H A V E _ G E T H O S T B Y N A M E _ R 00662 00663 # e n d i f 00664 00665 # i f d e f U N D E F _ H A V E _ I N I T G R O U P S / * F o r A I X 4 . 3 * / 00666 00667 # u n d e f H A V E _ I N I T G R O U P S 00668 00669 # e n d i f 00670 00671 / * g c c / e g c s i s s u e s * / 00672 00673 # i f d e f i n e d ( _ _ G N U C ) & & d e f i n e d ( _ _ E X C E P T I O N S ) 00674 00675 # e r r o r " P l e a s e a d d - f n o - e x c e p t i o n s t o C X X F L A G S a n d r e c o n f i g u r e / r e c o m p i l e " 00676 00677 # e n d i f 00678 00679 00680 00681 / * F i x a b u g i n g c c 2 . 8 . 0 o n I R I X 6 . 2 * / 00682 00683 # i f S I Z E O F _ L O N G = = 4 & & d e f i n e d ( _ _ L O N G _ M A X _ _ ) & & ( _ _ G N U C _ _ = = 2 & & _ _ G N U C _ M I N O R _ _ = = 8 ) 00684 00685 # u n d e f _ _ L O N G _ M A X _ _ / * I s a l o n g l o n g v a l u e i n g c c 2 . 8 . 0 ? ? ? * / 00686 00687 # d e f i n e _ _ L O N G _ M A X _ _ 2 1 4 7 4 8 3 6 4 7 00688 00689 # e n d i f 00690 00691 / * e g c s 1 . 1 . 2 h a s a p r o b l e m w i t h m e m c p y o n A l p h a * / 00692 00693 # i f d e f i n e d ( _ _ G N U C _ _ ) & & d e f i n e d ( _ _ a l p h a _ _ ) & & ! ( _ _ G N U C _ _ > 2 | | ( _ _ G N U C _ _ = = 2 & & _ _ G N U C _ M I N O R _ _ > = 9 5 ) ) 00694 00695 # d e f i n e B A D _ M E M C P Y 00696 00697 # e n d i f 00698 00699 # i f d e f i n e d ( _ l i n t ) & & ! d e f i n e d ( l i n t ) 00700 00701 # d e f i n e l i n t 00702 00703 # e n d i f 00704 00705 # i f S I Z E O F _ L O N G _ L O N G > 4 & & ! d e f i n e d ( _ L O N G _ L O N G ) 00706 00707 # d e f i n e _ L O N G _ L O N G 1 / * F o r A I X s t r i n g l i b r a r y * / 00708 00709 # e n d i f 00710 00711 # i f n d e f s t d i n 00712 00713 # i n c l u d e < s t d i o . h > 00714 00715 # e n d i f 00716 00717 # i n c l u d e < s t d a r g . h > 00718 00719 # i f d e f H A V E _ S T D L I B _ H 00720 00721 # i n c l u d e < s t d l i b . h > 00722 00723 # e n d i f 00724 00725 # i f d e f H A V E _ S T D D E F _ H 00726 00727 # i n c l u d e < s t d d e f . h > 00728 00729 # e n d i f 00730 00731 # i n c l u d e < m a t h . h > 00732 00733 # i f d e f H A V E _ L I M I T S _ H 00734 00735 # i n c l u d e < l i m i t s . h > 00736 00737 # e n d i f 00738 00739 # i f d e f H A V E _ F L O A T _ H 00740 00741 # i n c l u d e < f l o a t . h > 00742 00743 # e n d i f 00744 00745 # i f d e f H A V E _ F E N V _ H 00746 00747 # i n c l u d e < f e n v . h > / * F o r f e s e t r o u n d ( ) * / 00748 00749 # e n d i f 00750 00751 # i f d e f H A V E _ S Y S _ T Y P E S _ H 00752 00753 # i n c l u d e < s y s / t y p e s . h > 00754 00755 # e n d i f 00756 00757 # i f d e f H A V E _ F C N T L _ H 00758 00759 # i n c l u d e < f c n t l . h > 00760 00761 # e n d i f 00762 00763 # i f d e f H A V E _ S Y S _ S T A T _ H 00764 00765 # i n c l u d e < s y s / s t a t . h > 00766 00767 # e n d i f 00768 00769 # i f d e f H A V E _ S Y S _ T I M E B _ H 00770 00771 # i n c l u d e < s y s / t i m e b . h > / * A v o i d w a r n i n g s o n S C O * / 00772 00773 # e n d i f 00774 00775 # i f T I M E _ W I T H _ S Y S _ T I M E 00776 00777 # i n c l u d e < s y s / t i m e . h > 00778 00779 # i n c l u d e < t i m e . h > 00780 00781 # e l s e 00782 00783 # i f H A V E _ S Y S _ T I M E _ H 00784 00785 # i n c l u d e < s y s / t i m e . h > 00786 00787 # e l s e 00788 00789 # i n c l u d e < t i m e . h > 00790 00791 # e n d i f 00792 00793 # e n d i f / * T I M E _ W I T H _ S Y S _ T I M E * / 00794 00795 # i f d e f H A V E _ U N I S T D _ H 00796 00797 # i n c l u d e < u n i s t d . h > 00798 00799 # e n d i f 00800 00801 # i f d e f i n e d ( _ _ c p l u s p l u s ) & & d e f i n e d ( N O _ C P L U S P L U S _ A L L O C A ) 00802 00803 # u n d e f H A V E _ A L L O C A 00804 00805 # u n d e f H A V E _ A L L O C A _ H 00806 00807 # e n d i f 00808 00809 # i f d e f H A V E _ A L L O C A _ H 00810 00811 # i n c l u d e < a l l o c a . h > 00812 00813 # e n d i f 00814 00815 # i n c l u d e < e r r n o . h > / * R e c o m m e n d e d b y d e b i a n * / 00816 00817 / * W e n e e d t h e f o l l o w i n g t o g o a r o u n d a p r o b l e m w i t h o p e n s s l o n s o l a r i s * / 00818 00819 # i f d e f i n e d ( H A V E _ C R Y P T _ H ) 00820 00821 # i n c l u d e < c r y p t . h > 00822 00823 # e n d i f 00824 00825 / * 00826 00827 A l o t o f o u r p r o g r a m s u s e s a s s e r t s , s o b e t t e r t o a l w a y s i n c l u d e i t 00828 00829 T h i s a l s o f i x e s a p r o b l e m w h e n p e o p l e u s e s D B U G _ A S S E R T w i t h o u t i n c l u d i n g 00830 00831 a s s e r t . h 00832 00833 * / 00834 00835 # i n c l u d e < a s s e r t . h > 00836 00837 / * a n a s s e r t t h a t w o r k s a t c o m p i l e - t i m e . o n l y f o r c o n s t a n t e x p r e s s i o n * / 00838 00839 # i f d e f _ s o m e _ o l d _ c o m p i l e r _ t h a t _ d o e s _ n o t _ u n d e r s t a n d _ t h e _ c o n s t r u c t _ b e l o w _ 00840 00841 # d e f i n e c o m p i l e _ t i m e _ a s s e r t ( X ) d o { } w h i l e ( 0 ) 00842 00843 # e l s e 00844 00845 # d e f i n e c o m p i l e _ t i m e _ a s s e r t ( X ) \ 00846 00847 d o \ 00848 00849 { \ 00850 00851 t y p e d e f c h a r c o m p i l e _ t i m e _ a s s e r t [ ( X ) ? 1 : - 1 ] ; \ 00852 00853 } w h i l e ( 0 ) 00854 00855 # e n d i f 00856 00857 / * G o a r o u n d s o m e b u g s i n d i f f e r e n t O S a n d c o m p i l e r s * / 00858 00859 # i f d e f i n e d ( H P U X 1 1 ) & & d e f i n e d ( _ L A R G E F I L E _ S O U R C E ) 00860 00861 # d e f i n e _ L A R G E F I L E 6 4 _ S O U R C E 00862 00863 # e n d i f 00864 00865 # i f d e f i n e d ( _ H P U X _ S O U R C E ) & & d e f i n e d ( H A V E _ S Y S _ S T R E A M _ H ) 00866 00867 # i n c l u d e < s y s / s t r e a m . h > / * H P U X 1 0 . 2 0 d e f i n e s u l o n g h e r e . U G L Y ! ! ! * / 00868 00869 # d e f i n e H A V E _ U L O N G 00870 00871 # e n d i f 00872 00873 # i f d e f i n e d ( H P U X 1 0 ) & & d e f i n e d ( _ L A R G E F I L E 6 4 _ S O U R C E ) & & d e f i n e d ( T H R E A D ) 00874 00875 / * F i x b u g i n s e t r l i m i t * / 00876 00877 # u n d e f s e t r l i m i t 00878 00879 # d e f i n e s e t r l i m i t c m a _ s e t r l i m i t 6 4 00880 00881 # e n d i f 00882 00883 / * D e c l a r e m a d v i s e w h e r e i t i s n o t d e c l a r e d f o r C + + , l i k e S o l a r i s * / 00884 00885 # i f H A V E _ M A D V I S E & & ! H A V E _ D E C L _ M A D V I S E & & d e f i n e d ( _ _ c p l u s p l u s ) 00886 00887 e x t e r n " C " i n t m a d v i s e ( v o i d * a d d r , s i z e _ t l e n , i n t b e h a v ) ; 00888 00889 # e n d i f 00890 00891 # i f d e f _ _ Q N X N T O _ _ 00892 00893 / * T h i s h a s t o b e a f t e r i n c l u d e l i m i t s . h * / 00894 00895 # d e f i n e H A V E _ E R R N O _ A S _ D E F I N E 00896 00897 # d e f i n e H A V E _ F C N T L _ L O C K 00898 00899 # u n d e f H A V E _ F I N I T E 00900 00901 # u n d e f L O N G L O N G _ M I N / * T h e s e g e t w r o n g l y d e f i n e d i n Q N X 6 . 2 * / 00902 00903 # u n d e f L O N G L O N G _ M A X / * s t a n d a r d s y s t e m l i b r a r y ' l i m i t s . h ' * / 00904 00905 # e n d i f 00906 00907 / * W e c a n n o t l i v e w i t h o u t t h e f o l l o w i n g d e f i n e s * / 00908 00909 # d e f i n e U S E _ M Y F U N C 1 / * M u s t u s e s y s c a l l i n d i r e c t i o n * / 00910 00911 # d e f i n e M A S T E R 1 / * C o m p i l e w i t h o u t u n i r e g * / 00912 00913 # d e f i n e E N G L I S H 1 / * M e s s a g e s i n E n g l i s h * / 00914 00915 # d e f i n e P O S I X _ M I S T A K E 1 / * r e g e x p : F i x s t u p i d s p e c e r r o r * / 00916 00917 # d e f i n e U S E _ R E G E X 1 / * W e w a n t t h e u s e t h e r e g e x l i b r a r y * / 00918 00919 / * D o n o t d e f i n e f o r u l t r a s p a r c s * / 00920 00921 # d e f i n e U S E _ B M O V E 5 1 2 1 / * U s e t h i s u n l e s s s y s t e m b m o v e i s f a s t e r * / 00922 00923 # d e f i n e Q U O T E _ A R G ( x ) # x / * Q u o t e a r g u m e n t ( b e f o r e c p p ) * / 00924 00925 # d e f i n e S T R I N G I F Y _ A R G ( x ) Q U O T E _ A R G ( x ) / * Q u o t e a r g u m e n t , a f t e r c p p * / 00926 00927 / * P a r a n o i d s e t t i n g s . D e f i n e I _ A M _ P A R A N O I D i f y o u a r e p a r a n o i d * / 00928 00929 # i f d e f I _ A M _ P A R A N O I D 00930 00931 # d e f i n e D O N T _ A L L O W _ U S E R _ C H A N G E 1 00932 00933 # d e f i n e D O N T _ U S E _ M Y S Q L _ P W D 1 00934 00935 # e n d i f 00936 00937 / * D o e s t h e s y s t e m r e m e m b e r a s i g n a l h a n d l e r a f t e r a s i g n a l ? * / 00938 00939 # i f n d e f H A V E _ B S D _ S I G N A L S 00940 00941 # d e f i n e D O N T _ R E M E M B E R _ S I G N A L 00942 00943 # e n d i f 00944 00945 # i f d e f i n e d ( _ l i n t ) | | d e f i n e d ( F O R C E _ I N I T _ O F _ V A R S ) 00946 00947 # d e f i n e L I N T _ I N I T ( v a r ) v a r = 0 / * N o u n i n i t i a l i z e - w a r n i n g * / 00948 00949 # e l s e 00950 00951 # d e f i n e L I N T _ I N I T ( v a r ) 00952 00953 # e n d i f 00954 00955 # i f d e f i n e d ( _ l i n t ) | | d e f i n e d ( F O R C E _ I N I T _ O F _ V A R S ) | | d e f i n e d ( H A V E _ p u r i f y ) 00956 00957 # d e f i n e P U R I F Y _ O R _ L I N T _ I N I T ( v a r ) v a r = 0 00958 00959 # e l s e 00960 00961 # d e f i n e P U R I F Y _ O R _ L I N T _ I N I T ( v a r ) 00962 00963 # e n d i f 00964 00965 # i f ! d e f i n e d ( H A V E _ U I N T ) 00966 00967 # u n d e f H A V E _ U I N T 00968 00969 # d e f i n e H A V E _ U I N T 00970 00971 t y p e d e f u n s i g n e d i n t u i n t ; 00972 00973 t y p e d e f u n s i g n e d s h o r t u s h o r t ; 00974 00975 # e n d i f 00976 00977 # d e f i n e C M P _ N U M ( a , b ) ( ( ( a ) < ( b ) ) ? - 1 : ( ( a ) = = ( b ) ) ? 0 : 1 ) 00978 00979 # d e f i n e s g n ( a ) ( ( ( a ) < 0 ) ? - 1 : ( ( a ) > 0 ) ? 1 : 0 ) 00980 00981 # d e f i n e s w a p _ v a r i a b l e s ( t , a , b ) { t s w a p _ d u m m y ; s w a p _ d u m m y = a ; a = b ; b = s w a p _ d u m m y ; } 00982 00983 # d e f i n e t e s t ( a ) ( ( a ) ? 1 : 0 ) 00984 00985 # d e f i n e s e t _ i f _ b i g g e r ( a , b ) d o { i f ( ( a ) < ( b ) ) ( a ) = ( b ) ; } w h i l e ( 0 ) 00986 00987 # d e f i n e s e t _ i f _ s m a l l e r ( a , b ) d o { i f ( ( a ) > ( b ) ) ( a ) = ( b ) ; } w h i l e ( 0 ) 00988 00989 # d e f i n e t e s t _ a l l _ b i t s ( a , b ) ( ( ( a ) & ( b ) ) = = ( b ) ) 00990 00991 # d e f i n e s e t _ b i t s ( t y p e , b i t _ c o u n t ) ( s i z e o f ( t y p e ) * 8 < = ( b i t _ c o u n t ) ? ~ ( t y p e ) 0 : ( ( ( ( t y p e ) 1 ) < < ( b i t _ c o u n t ) ) - ( t y p e ) 1 ) ) 00992 00993 # d e f i n e a r r a y _ e l e m e n t s ( A ) ( ( u i n t ) ( s i z e o f ( A ) / s i z e o f ( A [ 0 ] ) ) ) 00994 00995 / * D e f i n e s o m e g e n e r a l c o n s t a n t s * / 00996 00997 # i f n d e f T R U E 00998 00999 # d e f i n e T R U E ( 1 ) / * L o g i c a l t r u e * / 01000 01001 # d e f i n e F A L S E ( 0 ) / * L o g i c a l f a l s e * / 01002 01003 # e n d i f 01004 01005 # i f d e f i n e d ( _ _ G N U C _ _ ) 01006 01007 # d e f i n e f u n c t i o n _ v o l a t i l e v o l a t i l e 01008 01009 # d e f i n e m y _ r e i n t e r p r e t _ c a s t ( A ) r e i n t e r p r e t _ c a s t < A > 01010 01011 # d e f i n e m y _ c o n s t _ c a s t ( A ) c o n s t _ c a s t < A > 01012 01013 # i f n d e f G C C _ V E R S I O N 01014 01015 # d e f i n e G C C _ V E R S I O N ( _ _ G N U C _ _ * 1 0 0 0 + _ _ G N U C _ M I N O R _ _ ) 01016 01017 # e n d i f 01018 01019 # e l i f ! d e f i n e d ( m y _ r e i n t e r p r e t _ c a s t ) 01020 01021 # d e f i n e m y _ r e i n t e r p r e t _ c a s t ( A ) ( A ) 01022 01023 # d e f i n e m y _ c o n s t _ c a s t ( A ) ( A ) 01024 01025 # e n d i f 01026 01027 # i n c l u d e < m y _ a t t r i b u t e . h > 01028 01029 / * 01030 01031 W e n u s i n g t h e e m b e d d e d l i b r a r y , u s e r s m i g h t r u n i n t o l i n k p r o b l e m s , 01032 01033 d u p l i c a t e d e c l a r a t i o n o f _ _ c x a _ p u r e _ v i r t u a l , s o l v e d b y d e c l a r i n g i t a 01034 01035 w e a k s y m b o l . 01036 01037 * / 01038 01039 # i f d e f i n e d ( U S E _ M Y S Y S _ N E W ) & & ! d e f i n e d ( D O N T _ D E C L A R E _ C X A _ P U R E _ V I R T U A L ) 01040 01041 C _ M O D E _ S T A R T 01042 01043 i n t _ _ c x a _ p u r e _ v i r t u a l ( ) _ _ a t t r i b u t e _ _ ( ( w e a k ) ) ; 01044 01045 C _ M O D E _ E N D 01046 01047 # e n d i f 01048 01049 / * F r o m o l d s - s y s t e m . h * / 01050 01051 / * 01052 01053 S u p p o r t m a c r o s f o r n o n a n s i & o t h e r o l d c o m p i l e r s . S i n c e s u c h 01054 01055 t h i n g s a r e n o l o n g e r s u p p o r t e d w e d o n o t h i n g . W e k e e p t h e n s i n c e 01056 01057 s o m e o f o u r c o d e m a y s t i l l b e n e e d e d t o u p g r a d e o l d c u s t o m e r s . 01058 01059 * / 01060 01061 # d e f i n e _ V A R A R G S ( X ) X 01062 01063 # d e f i n e _ S T A T I C _ V A R A R G S ( X ) X 01064 01065 / * T h e D B U G _ O N f l a g a l w a y s t a k e s p r e c e d e n c e o v e r d e f a u l t D B U G _ O F F * / 01066 01067 # i f d e f i n e d ( D B U G _ O N ) & & d e f i n e d ( D B U G _ O F F ) 01068 01069 # u n d e f D B U G _ O F F 01070 01071 # e n d i f 01072 01073 / * W e m i g h t b e f o r c e d t o t u r n d e b u g o f f , i f n o t t u r n e d o f f a l r e a d y * / 01074 01075 # i f ( d e f i n e d ( F O R C E _ D B U G _ O F F ) | | d e f i n e d ( _ l i n t ) ) & & ! d e f i n e d ( D B U G _ O F F ) 01076 01077 # d e f i n e D B U G _ O F F 01078 01079 # i f d e f D B U G _ O N 01080 01081 # u n d e f D B U G _ O N 01082 01083 # e n d i f 01084 01085 # e n d i f 01086 01087 t y p e d e f c h a r m y _ b o o l ; / * S m a l l b o o l * / 01088 01089 # i n c l u d e < m y _ d b u g . h > 01090 01091 # d e f i n e M I N _ A R R A Y _ S I Z E 0 / * Z e r o o r O n e . G c c a l l o w s z e r o * / 01092 01093 # d e f i n e A S C I I _ B I T S _ U S E D 8 / * B i t c h a r u s e d * / 01094 01095 # d e f i n e N E A R _ F / * N o n e a r f u n c t i o n h a n d l i n g * / 01096 01097 / * S o m e t y p e s t h a t i s d i f f e r e n t b e t w e e n s y s t e m s * / 01098 01099 t y p e d e f i n t F i l e ; / * F i l e d e s c r i p t o r * / 01100 01101 # i f n d e f S o c k e t _ d e f i n e d 01102 01103 t y p e d e f i n t m y _ s o c k e t ; / * F i l e d e s c r i p t o r f o r s o c k e t s * / 01104 01105 # d e f i n e I N V A L I D _ S O C K E T - 1 01106 01107 # e n d i f 01108 01109 / * T y p e f o r f u c t i o n s t h a t h a n d l e s s i g n a l s * / 01110 01111 # d e f i n e s i g _ h a n d l e r v o i d 01112 01113 C _ M O D E _ S T A R T 01114 01115 t y p e d e f v o i d ( * s i g _ r e t u r n ) ( ) ; / * R e t u r n s t y p e f r o m s i g n a l * / 01116 01117 C _ M O D E _ E N D 01118 01119 # i f d e f i n e d ( _ _ G N U C _ _ ) & & ! d e f i n e d ( _ l i n t ) 01120 01121 t y p e d e f c h a r p c h a r ; / * M i x e d p r o t o t y p e s c a n t a k e c h a r * / 01122 01123 t y p e d e f c h a r p u c h a r ; / * M i x e d p r o t o t y p e s c a n t a k e c h a r * / 01124 01125 t y p e d e f c h a r p b o o l ; / * M i x e d p r o t o t y p e s c a n t a k e c h a r * / 01126 01127 t y p e d e f s h o r t p s h o r t ; / * M i x e d p r o t o t y p e s c a n t a k e s h o r t i n t * / 01128 01129 t y p e d e f f l o a t p f l o a t ; / * M i x e d p r o t o t y p e s c a n t a k e f l o a t * / 01130 01131 # e l s e 01132 01133 t y p e d e f i n t p c h a r ; / * M i x e d p r o t o t y p e s c a n ' t t a k e c h a r * / 01134 01135 t y p e d e f u i n t p u c h a r ; / * M i x e d p r o t o t y p e s c a n ' t t a k e c h a r * / 01136 01137 t y p e d e f i n t p b o o l ; / * M i x e d p r o t o t y p e s c a n ' t t a k e c h a r * / 01138 01139 t y p e d e f i n t p s h o r t ; / * M i x e d p r o t o t y p e s c a n ' t t a k e s h o r t i n t * / 01140 01141 t y p e d e f d o u b l e p f l o a t ; / * M i x e d p r o t o t y p e s c a n ' t t a k e f l o a t * / 01142 01143 # e n d i f 01144 01145 C _ M O D E _ S T A R T 01146 01147 t y p e d e f i n t ( * q s o r t _ c m p ) ( c o n s t v o i d * , c o n s t v o i d * ) ; 01148 01149 t y p e d e f i n t ( * q s o r t _ c m p 2 ) ( v o i d * , c o n s t v o i d * , c o n s t v o i d * ) ; 01150 01151 C _ M O D E _ E N D 01152 01153 # d e f i n e q s o r t _ t R E T Q S O R T T Y P E / * B r o k e n G C C c a n t h a n d l e t y p e d e f ! ! ! ! * / 01154 01155 # i f d e f H A V E _ S Y S _ S O C K E T _ H 01156 01157 # i n c l u d e < s y s / s o c k e t . h > 01158 01159 # e n d i f 01160 01161 / * f i l e c r e a t e f l a g s * / 01162 01163 # i f n d e f O _ S H A R E / * P r o b a b l y n o t w i n d o w s * / 01164 01165 # d e f i n e O _ S H A R E 0 / * F l a g t o m y _ o p e n f o r s h a r e d f i l e s * / 01166 01167 # i f n d e f O _ B I N A R Y 01168 01169 # d e f i n e O _ B I N A R Y 0 / * F l a g t o m y _ o p e n f o r b i n a r y f i l e s * / 01170 01171 # e n d i f 01172 01173 # i f n d e f F I L E _ B I N A R Y 01174 01175 # d e f i n e F I L E _ B I N A R Y O _ B I N A R Y / * F l a g t o m y _ f o p e n f o r b i n a r y s t r e a m s * / 01176 01177 # e n d i f 01178 01179 # i f d e f H A V E _ F C N T L 01180 01181 # d e f i n e H A V E _ F C N T L _ L O C K 01182 01183 # d e f i n e F _ T O _ E O F 0 L / * P a r a m t o l o c k f ( ) t o l o c k r e s t o f f i l e * / 01184 01185 # e n d i f 01186 01187 # e n d i f / * O _ S H A R E * / 01188 01189 # i f n d e f O _ T E M P O R A R Y 01190 01191 # d e f i n e O _ T E M P O R A R Y 0 01192 01193 # e n d i f 01194 01195 # i f n d e f O _ S H O R T _ L I V E D 01196 01197 # d e f i n e O _ S H O R T _ L I V E D 0 01198 01199 # e n d i f 01200 01201 # i f n d e f O _ N O F O L L O W 01202 01203 # d e f i n e O _ N O F O L L O W 0 01204 01205 # e n d i f 01206 01207 / * a d d i t i o n a l f i l e s h a r e f l a g s f o r w i n 3 2 * / 01208 01209 # i f d e f _ _ W I N _ _ 01210 01211 # d e f i n e _ S H _ D E N Y R W D 0 x 1 1 0 / * d e n y r e a d / w r i t e m o d e & d e l e t e * / 01212 01213 # d e f i n e _ S H _ D E N Y W R D 0 x 1 2 0 / * d e n y w r i t e m o d e & d e l e t e * / 01214 01215 # d e f i n e _ S H _ D E N Y R D D 0 x 1 3 0 / * d e n y r e a d m o d e & d e l e t e * / 01216 01217 # d e f i n e _ S H _ D E N Y D E L 0 x 1 4 0 / * d e n y d e l e t e o n l y * / 01218 01219 # e n d i f / * _ _ W I N _ _ * / 01220 01221 01222 01223 / * # d e f i n e U S E _ R E C O R D _ L O C K * / 01224 01225 / * U n s i g n e d t y p e s s u p p o r t e d b y t h e c o m p i l e r * / 01226 01227 # d e f i n e U N S I N T 8 / * u n s i g n e d i n t 8 ( c h a r ) * / 01228 01229 # d e f i n e U N S I N T 1 6 / * u n s i g n e d i n t 1 6 * / 01230 01231 # d e f i n e U N S I N T 3 2 / * u n s i g n e d i n t 3 2 * / 01232 01233 / * G e n e r a l c o n s t a n t s * / 01234 01235 # d e f i n e F N _ L E N 2 5 6 / * M a x f i l e n a m e l e n * / 01236 01237 # d e f i n e F N _ H E A D L E N 2 5 3 / * M a x l e n g t h o f f i l e p a r t o f f i l e n a m e * / 01238 01239 # d e f i n e F N _ E X T L E N 2 0 / * M a x l e n g t h o f e x t e n s i o n ( p a r t o f F N _ L E N ) * / 01240 01241 # d e f i n e F N _ R E F L E N 5 1 2 / * M a x l e n g t h o f f u l l p a t h - n a m e * / 01242 01243 # d e f i n e F N _ E X T C H A R ' . ' 01244 01245 # d e f i n e F N _ H O M E L I B ' ~ ' / * ~ / i s u s e d a s a b b r e v f o r h o m e d i r * / 01246 01247 # d e f i n e F N _ C U R L I B ' . ' / * . / i s u s e d a s a b b r e v f o r c u r r e n t d i r * / 01248 01249 # d e f i n e F N _ P A R E N T D I R " . . " / * P a r e n t d i r e c t o r y ; M u s t b e a s t r i n g * / 01250 01251 # i f n d e f F N _ L I B C H A R 01252 01253 # d e f i n e F N _ L I B C H A R ' / ' 01254 01255 # d e f i n e F N _ R O O T D I R " / " 01256 01257 # e n d i f 01258 01259 / * 01260 01261 M Y _ F I L E _ M I N i s W i n d o w s s p e c i a l i t y a n d i s u s e d t o q u i c k l y d e t e c t 01262 01263 t h e m i s m a t c h o f C R T a n d m y s y s f i l e I O u s a g e o n W i n d o w s a t r u n t i m e . 01264 01265 C R T f i l e d e s c r i p t o r s c a n b e i n t h e r a n g e 0 - 2 0 4 7 , w h e r e a s d e s c r i p t o r s r e t u r n e d 01266 01267 b y m y _ o p e n ( ) w i l l s t a r t w i t h 2 0 4 8 . I f a f i l e d e s c r i p t o r w i t h v a l u e l e s s t h e n 01268 01269 M Y _ F I L E _ M I N i s p a s s e d t o m y s y s I O f u n c t i o n , c h a n c e s a r e i t s t e m m s f r o m 01270 01271 o p e n ( ) / f i l e n o ( ) a n d n o t m y _ o p e n ( ) / m y _ f i l e n o . 01272 01273 F o r P o s i x , m y s y s f u n c t i o n s a r e l i g h t w r a p p e r s a r o u n d l i b c , a n d M Y _ F I L E _ M I N 01274 01275 i s l o g i c a l l y 0 . 01276 01277 * / 01278 01279 # i f d e f _ W I N 3 2 01280 01281 # d e f i n e M Y _ F I L E _ M I N 2 0 4 8 01282 01283 # e l s e 01284 01285 # d e f i n e M Y _ F I L E _ M I N 0 01286 01287 # e n d i f 01288 01289 / * 01290 01291 M Y _ N F I L E i s t h e d e f a u l t s i z e o f m y _ f i l e _ i n f o a r r a y . 01292 01293 I t i s l a r g e r o n W i n d o w s , b e c a u s e i t a l l f i l e h a n d l e s a r e s t o r e d i n m y _ f i l e _ i n f o 01294 01295 D e f a u l t s i z e i s 1 6 3 8 4 a n d t h i s s h o u l d b e e n o u g h f o r m o s t c a s e s . I f i t i s n o t 01296 01297 e n o u g h , - - m a x - o p e n - f i l e s w i t h l a r g e r v a l u e c a n b e u s e d . 01298 01299 F o r P o s i x , m y _ f i l e _ i n f o a r r a y i s o n l y u s e d t o s t o r e f i l e n a m e s f o r 01300 01301 e r r o r r e p o r t i n g a n d i t s s i z e i s n o t a l i m i t a t i o n f o r n u m b e r o f o p e n f i l e s . 01302 01303 * / 01304 01305 # i f d e f _ W I N 3 2 01306 01307 # d e f i n e M Y _ N F I L E ( 1 6 3 8 4 + M Y _ F I L E _ M I N ) 01308 01309 # e l s e 01310 01311 # d e f i n e M Y _ N F I L E 6 4 01312 01313 # e n d i f 01314 01315 # i f n d e f O S _ F I L E _ L I M I T 01316 01317 # d e f i n e O S _ F I L E _ L I M I T 6 5 5 3 5 01318 01319 # e n d i f 01320 01321 / * # d e f i n e E X T _ I N _ L I B N A M E * / 01322 01323 / * # d e f i n e F N _ N O _ C A S E _ S E N C E * / 01324 01325 / * # d e f i n e F N _ U P P E R _ C A S E T R U E * / 01326 01327 / * 01328 01329 I o b u f f e r s i z e ; M u s t b e a p o w e r o f 2 a n d a m u l t i p l e o f 5 1 2 . M a y b e 01330 01331 s m a l l e r w h a t t h e d i s k p a g e s i z e . T h i s i n f l u e n c e s t h e s p e e d o f t h e 01332 01333 i s a m b t r e e l i b r a r y . e g t o b i g t o s l o w . 01334 01335 * / 01336 01337 # d e f i n e I O _ S I Z E 4 0 9 6 01338 01339 / * 01340 01341 H o w m u c h o v e r h e a d d o e s m a l l o c h a v e . T h e c o d e o f t e n a l l o c a t e s 01342 01343 s o m e t h i n g l i k e 1 0 2 4 - M A L L O C _ O V E R H E A D b y t e s 01344 01345 * / 01346 01347 # i f d e f S A F E M A L L O C 01348 01349 # d e f i n e M A L L O C _ O V E R H E A D ( 8 + 2 4 + 4 ) 01350 01351 # e l s e 01352 01353 # d e f i n e M A L L O C _ O V E R H E A D 8 01354 01355 # e n d i f 01356 01357 / * g e t m e m o r y i n h u n c s * / 01358 01359 # d e f i n e O N C E _ A L L O C _ I N I T ( u i n t ) ( 4 0 9 6 - M A L L O C _ O V E R H E A D ) 01360 01361 / * T y p i c a l r e c o r d c a s h * / 01362 01363 # d e f i n e R E C O R D _ C A C H E _ S I Z E ( u i n t ) ( 6 4 * 1 0 2 4 - M A L L O C _ O V E R H E A D ) 01364 01365 / * T y p i c a l k e y c a s h * / 01366 01367 # d e f i n e K E Y _ C A C H E _ S I Z E ( u i n t ) ( 8 * 1 0 2 4 * 1 0 2 4 - M A L L O C _ O V E R H E A D ) 01368 01369 / * D e f a u l t s i z e o f a k e y c a c h e b l o c k * / 01370 01371 # d e f i n e K E Y _ C A C H E _ B L O C K _ S I Z E ( u i n t ) 1 0 2 4 01372 01373 01374 01375 / * S o m e t h i n g s t h a t t h i s s y s t e m d o e s n ' t h a v e * / 01376 01377 # d e f i n e N O _ H A S H / * N o t n e e d e d a n y m o r e * / 01378 01379 # i f d e f _ W I N 3 2 01380 01381 # d e f i n e N O _ D I R _ L I B R A R Y / * N o t s t a n d a r d d i r - l i b r a r y * / 01382 01383 # e n d i f 01384 01385 / * S o m e d e f i n e s o f f u n c t i o n s f o r p o r t a b i l i t y * / 01386 01387 # u n d e f r e m o v e / * C r a s h e s M y S Q L o n S C O 5 . 0 . 0 * / 01388 01389 # i f n d e f _ _ W I N _ _ 01390 01391 # d e f i n e c l o s e s o c k e t ( A ) c l o s e ( A ) 01392 01393 # i f n d e f u l o n g l o n g 2 d o u b l e 01394 01395 # d e f i n e u l o n g l o n g 2 d o u b l e ( A ) ( ( d o u b l e ) ( u l o n g l o n g ) ( A ) ) 01396 01397 # d e f i n e m y _ o f f _ t 2 d o u b l e ( A ) ( ( d o u b l e ) ( m y _ o f f _ t ) ( A ) ) 01398 01399 # e n d i f 01400 01401 # i f n d e f d o u b l e 2 u l o n g l o n g 01402 01403 # d e f i n e d o u b l e 2 u l o n g l o n g ( A ) ( ( u l o n g l o n g ) ( d o u b l e ) ( A ) ) 01404 01405 # e n d i f 01406 01407 # e n d i f 01408 01409 # i f n d e f o f f s e t o f 01410 01411 # d e f i n e o f f s e t o f ( T Y P E , M E M B E R ) ( ( s i z e _ t ) & ( ( T Y P E * ) 0 ) - > M E M B E R ) 01412 01413 # e n d i f 01414 01415 # d e f i n e u l o n g _ t o _ d o u b l e ( X ) ( ( d o u b l e ) ( u l o n g ) ( X ) ) 01416 01417 # d e f i n e S E T _ S T A C K _ S I Z E ( X ) / * N o t n e e d e d o n r e a l m a c h i n e s * / 01418 01419 # i f n d e f S T A C K _ D I R E C T I O N 01420 01421 # e r r o r " p l e a s e a d d - D S T A C K _ D I R E C T I O N = 1 o r - 1 t o y o u r C P P F L A G S " 01422 01423 # e n d i f 01424 01425 # i f ! d e f i n e d ( H A V E _ S T R T O K _ R ) 01426 01427 i n l i n e c h a r * s t r t o k _ r ( c h a r * s t r , c o n s t c h a r * d e l i m , c h a r * * s a v e p t r ) 01428 01429 { 01430 01431 r e t u r n s t r t o k ( s t r , d e l i m ) ; 01432 01433 } 01434 01435 # e n d i f 01436 01437 / * T h i s i s f r o m t h e o l d m - m a c h i n e . h f i l e * / 01438 01439 # i f S I Z E O F _ L O N G _ L O N G > 4 01440 01441 # d e f i n e H A V E _ L O N G _ L O N G 1 01442 01443 # e n d i f 01444 01445 / * 01446 01447 S o m e p r e - A N S I - C 9 9 s y s t e m s l i k e A I X 5 . 1 a n d L i n u x / G C C 2 . 9 5 d e f i n e 01448 01449 U L O N G L O N G _ M A X , L O N G L O N G _ M I N , L O N G L O N G _ M A X ; w e u s e t h e m i f t h e y ' r e d e f i n e d . 01450 01451 A l s o o n W i n d o w s w e d e f i n e t h e s e c o n s t a n t s b y h a n d i n c o n f i g - w i n . h . 01452 01453 * / 01454 01455 # i f d e f i n e d ( H A V E _ L O N G _ L O N G ) & & ! d e f i n e d ( L O N G L O N G _ M I N ) 01456 01457 # d e f i n e L O N G L O N G _ M I N ( ( l o n g l o n g ) 0 x 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 L L ) 01458 01459 # d e f i n e L O N G L O N G _ M A X ( ( l o n g l o n g ) 0 x 7 F F F F F F F F F F F F F F F L L ) 01460 01461 # e n d i f 01462 01463 # i f d e f i n e d ( H A V E _ L O N G _ L O N G ) & & ! d e f i n e d ( U L O N G L O N G _ M A X ) 01464 01465 / * F i r s t c h e c k f o r A N S I C 9 9 d e f i n i t i o n : * / 01466 01467 # i f d e f U L L O N G _ M A X 01468 01469 # d e f i n e U L O N G L O N G _ M A X U L L O N G _ M A X 01470 01471 # e l s e 01472 01473 # d e f i n e U L O N G L O N G _ M A X ( ( u n s i g n e d l o n g l o n g ) ( ~ 0 U L L ) ) 01474 01475 # e n d i f 01476 01477 # e n d i f / * d e f i n e d ( H A V E _ L O N G _ L O N G ) & & ! d e f i n e d ( U L O N G L O N G _ M A X ) * / 01478 01479 # d e f i n e I N T _ M I N 3 2 ( ~ 0 x 7 F F F F F F F L ) 01480 01481 # d e f i n e I N T _ M A X 3 2 0 x 7 F F F F F F F L 01482 01483 # d e f i n e U I N T _ M A X 3 2 0 x F F F F F F F F L 01484 01485 # d e f i n e I N T _ M I N 2 4 ( ~ 0 x 0 0 7 F F F F F ) 01486 01487 # d e f i n e I N T _ M A X 2 4 0 x 0 0 7 F F F F F 01488 01489 # d e f i n e U I N T _ M A X 2 4 0 x 0 0 F F F F F F 01490 01491 # d e f i n e I N T _ M I N 1 6 ( ~ 0 x 7 F F F ) 01492 01493 # d e f i n e I N T _ M A X 1 6 0 x 7 F F F 01494 01495 # d e f i n e U I N T _ M A X 1 6 0 x F F F F 01496 01497 # d e f i n e I N T _ M I N 8 ( ~ 0 x 7 F ) 01498 01499 # d e f i n e I N T _ M A X 8 0 x 7 F 01500 01501 # d e f i n e U I N T _ M A X 8 0 x F F 01502 01503 / * F r o m l i m i t s . h i n s t e a d * / 01504 01505 # i f n d e f D B L _ M I N 01506 01507 # d e f i n e D B L _ M I N 4 . 9 4 0 6 5 6 4 5 8 4 1 2 4 6 5 4 4 e - 3 2 4 01508 01509 # d e f i n e F L T _ M I N ( ( f l o a t ) 1 . 4 0 1 2 9 8 4 6 4 3 2 4 8 1 7 0 7 e - 4 5 ) 01510 01511 # e n d i f 01512 01513 # i f n d e f D B L _ M A X 01514 01515 # d e f i n e D B L _ M A X 1 . 7 9 7 6 9 3 1 3 4 8 6 2 3 1 4 7 0 e + 3 0 8 01516 01517 # d e f i n e F L T _ M A X ( ( f l o a t ) 3 . 4 0 2 8 2 3 4 6 6 3 8 5 2 8 8 6 0 e + 3 8 ) 01518 01519 # e n d i f 01520 01521 # i f n d e f S I Z E _ T _ M A X 01522 01523 # d e f i n e S I Z E _ T _ M A X ~ ( ( s i z e _ t ) 0 ) 01524 01525 # e n d i f 01526 01527 # i f n d e f i s f i n i t e 01528 01529 # i f d e f H A V E _ F I N I T E 01530 01531 # d e f i n e i s f i n i t e ( x ) f i n i t e ( x ) 01532 01533 # e l s e 01534 01535 # d e f i n e f i n i t e ( x ) ( 1 . 0 / f a b s ( x ) > 0 . 0 ) 01536 01537 # e n d i f / * H A V E _ F I N I T E * / 01538 01539 # e n d i f / * i s f i n i t e * / 01540 01541 # i f n d e f H A V E _ I S N A N 01542 01543 # d e f i n e i s n a n ( x ) ( ( x ) ! = ( x ) ) 01544 01545 # e n d i f 01546 01547 # i f d e f H A V E _ I S I N F 01548 01549 / * C h e c k i f C c o m p i l e r i s a f f e c t e d b y G C C b u g # 3 9 2 2 8 * / 01550 01551 # i f ! d e f i n e d ( _ _ c p l u s p l u s ) & & d e f i n e d ( H A V E _ B R O K E N _ I S I N F ) 01552 01553 / * F o r c e s t o r e / r e l o a d o f t h e a r g u m e n t t o / f r o m a 6 4 - b i t d o u b l e * / 01554 01555 s t a t i c i n l i n e d o u b l e m y _ i s i n f ( d o u b l e x ) 01556 01557 { 01558 01559 v o l a t i l e d o u b l e t = x ; 01560 01561 r e t u r n i s i n f ( t ) ; 01562 01563 } 01564 01565 # e l s e 01566 01567 / * S y s t e m - p r o v i d e d i s i n f ( ) i s a v a i l a b l e a n d s a f e t o u s e * / 01568 01569 # d e f i n e m y _ i s i n f ( X ) i s i n f ( X ) 01570 01571 # e n d i f 01572 01573 # e l s e / * ! H A V E _ I S I N F * / 01574 01575 # d e f i n e m y _ i s i n f ( X ) ( ! f i n i t e ( X ) & & ! i s n a n ( X ) ) 01576 01577 # e n d i f 01578 01579 / * D e f i n e m i s s i n g m a t h c o n s t a n t s . * / 01580 01581 # i f n d e f M _ P I 01582 01583 # d e f i n e M _ P I 3 . 1 4 1 5 9 2 6 5 3 5 8 9 7 9 3 2 3 8 4 6 01584 01585 # e n d i f 01586 01587 # i f n d e f M _ E 01588 01589 # d e f i n e M _ E 2 . 7 1 8 2 8 1 8 2 8 4 5 9 0 4 5 2 3 5 4 01590 01591 # e n d i f 01592 01593 # i f n d e f M _ L N 2 01594 01595 # d e f i n e M _ L N 2 0 . 6 9 3 1 4 7 1 8 0 5 5 9 9 4 5 3 0 9 4 2 01596 01597 # e n d i f 01598 01599 / * 01600 01601 M a x s i z e t h a t m u s t b e a d d e d t o a s o t h a t w e k n o w S i z e t o m a k e 01602 01603 a d r e s s a b l e o b j . 01604 01605 * / 01606 01607 # i f S I Z E O F _ C H A R P = = 4 01608 01609 t y p e d e f l o n g m y _ p t r d i f f _ t ; 01610 01611 # e l s e 01612 01613 t y p e d e f l o n g l o n g m y _ p t r d i f f _ t ; 01614 01615 # e n d i f 01616 01617 # d e f i n e M Y _ A L I G N ( A , L ) ( ( ( A ) + ( L ) - 1 ) & ~ ( ( L ) - 1 ) ) 01618 01619 # d e f i n e A L I G N _ S I Z E ( A ) M Y _ A L I G N ( ( A ) , s i z e o f ( d o u b l e ) ) 01620 01621 / * S i z e t o m a k e a d r e s s a b l e o b j . * / 01622 01623 # d e f i n e A L I G N _ P T R ( A , t ) ( ( t * ) M Y _ A L I G N ( ( A ) , s i z e o f ( t ) ) ) 01624 01625 / * O f f s e t o f f i e l d f i n s t r u c t u r e t * / 01626 01627 # d e f i n e O F F S E T ( t , f ) ( ( s i z e _ t ) ( c h a r * ) & ( ( t * ) 0 ) - > f ) 01628 01629 # d e f i n e A D D _ T O _ P T R ( p t r , s i z e , t y p e ) ( t y p e ) ( ( u c h a r * ) ( p t r ) + s i z e ) 01630 01631 # d e f i n e P T R _ B Y T E _ D I F F ( A , B ) ( m y _ p t r d i f f _ t ) ( ( u c h a r * ) ( A ) - ( u c h a r * ) ( B ) ) 01632 01633 # d e f i n e M Y _ D I V _ U P ( A , B ) ( ( ( A ) + ( B ) - 1 ) / ( B ) ) 01634 01635 # d e f i n e M Y _ A L I G N E D _ B Y T E _ A R R A Y ( N , S , T ) T N [ M Y _ D I V _ U P ( S , s i z e o f ( T ) ) ] 01636 01637 / * 01638 01639 C u s t o m v e r s i o n o f s t a n d a r d o f f s e t o f ( ) m a c r o w h i c h c a n b e u s e d t o g e t 01640 01641 o f f s e t s o f m e m b e r s i n c l a s s f o r n o n - P O D t y p e s ( a c c o r d i n g t o t h e c u r r e n t 01642 01643 v e r s i o n o f C + + s t a n d a r d o f f s e t o f ( ) m a c r o c a n ' t b e u s e d i n s u c h c a s e s a n d 01644 01645 a t t e m p t t o d o s o c a u s e s w a r n i n g s t o b e e m i t t e d , O T O H i n m a n y c a s e s i t i s 01646 01647 s t i l l O K t o a s s u m e t h a t a l l i n s t a n c e s o f t h e c l a s s h a s t h e s a m e o f f s e t s 01648 01649 f o r t h e s a m e m e m b e r s ) . 01650 01651 T h i s i s t e m p o r a r y s o l u t i o n w h i c h s h o u l d b e r e m o v e d o n c e F i l e _ p a r s e r c l a s s 01652 01653 a n d r e l a t e d r o u t i n e s a r e r e f a c t o r e d . 01654 01655 * / 01656 01657 # d e f i n e m y _ o f f s e t o f ( T Y P E , M E M B E R ) \ 01658 01659 ( ( s i z e _ t ) ( ( c h a r * ) & ( ( ( T Y P E * ) 0 x 1 0 ) - > M E M B E R ) - ( c h a r * ) 0 x 1 0 ) ) 01660 01661 # d e f i n e N u l l S S T A T I C _ C A S T ( c h a r * ) ( 0 ) 01662 01663 / * N o w d a y s w e d o n o t s u p p o r t M e s s y D o s * / 01664 01665 # i f n d e f N E A R 01666 01667 # d e f i n e N E A R / * W h o n e e d s s e g m e n t s ? * / 01668 01669 # d e f i n e F A R / * O n a g o o d m a c h i n e * / 01670 01671 # i f n d e f H U G E _ P T R 01672 01673 # d e f i n e H U G E _ P T R 01674 01675 # e n d i f 01676 01677 # e n d i f 01678 01679 # i f d e f i n e d ( _ _ I B M C _ _ ) | | d e f i n e d ( _ _ I B M C P P _ _ ) 01680 01681 / * T h i s w a s _ S y s t e m _ E x p o r t b u t c a u s e d a l o t o f w a r n i n g s o n _ A I X 4 3 * / 01682 01683 # d e f i n e S T D C A L L 01684 01685 # e l i f ! d e f i n e d ( S T D C A L L ) 01686 01687 # d e f i n e S T D C A L L 01688 01689 # e n d i f 01690 01691 / * T y p d e f s f o r e a s y i e r p o r t a b i l i t y * / 01692 01693 # i f n d e f H A V E _ U C H A R 01694 01695 t y p e d e f u n s i g n e d c h a r u c h a r ; / * S h o r t f o r u n s i g n e d c h a r * / 01696 01697 # e n d i f 01698 01699 # i f n d e f H A V E _ I N T 8 01700 01701 t y p e d e f s i g n e d c h a r i n t 8 ; / * S i g n e d i n t e g e r > = 8 b i t s * / 01702 01703 # e n d i f 01704 01705 # i f n d e f H A V E _ U I N T 8 01706 01707 t y p e d e f u n s i g n e d c h a r u i n t 8 ; / * U n s i g n e d i n t e g e r > = 8 b i t s * / 01708 01709 # e n d i f 01710 01711 # i f n d e f H A V E _ I N T 1 6 01712 01713 t y p e d e f s h o r t i n t 1 6 ; 01714 01715 # e n d i f 01716 01717 # i f n d e f H A V E _ U I N T 1 6 01718 01719 t y p e d e f u n s i g n e d s h o r t u i n t 1 6 ; 01720 01721 # e n d i f 01722 01723 # i f S I Z E O F _ I N T = = 4 01724 01725 # i f n d e f H A V E _ I N T 3 2 01726 01727 t y p e d e f i n t i n t 3 2 ; 01728 01729 # e n d i f 01730 01731 # i f n d e f H A V E _ U I N T 3 2 01732 01733 t y p e d e f u n s i g n e d i n t u i n t 3 2 ; 01734 01735 # e n d i f 01736 01737 # e l i f S I Z E O F _ L O N G = = 4 01738 01739 # i f n d e f H A V E _ I N T 3 2 01740 01741 t y p e d e f l o n g i n t 3 2 ; 01742 01743 # e n d i f 01744 01745 # i f n d e f H A V E _ U I N T 3 2 01746 01747 t y p e d e f u n s i g n e d l o n g u i n t 3 2 ; 01748 01749 # e n d i f 01750 01751 # e l s e 01752 01753 # e r r o r N e i t h e r i n t o r l o n g i s o f 4 b y t e s w i d t h 01754 01755 # e n d i f 01756 01757 # i f ! d e f i n e d ( H A V E _ U L O N G ) & & ! d e f i n e d ( _ _ U S E _ M I S C ) 01758 01759 t y p e d e f u n s i g n e d l o n g u l o n g ; / * S h o r t f o r u n s i g n e d l o n g * / 01760 01761 # e n d i f 01762 01763 # i f n d e f l o n g l o n g _ d e f i n e d 01764 01765 / * 01766 01767 U s i n g [ u n s i g n e d ] l o n g l o n g i s p r e f e r a b l e a s [ u ] l o n g l o n g b e c a u s e w e u s e 01768 01769 [ u n s i g n e d ] l o n g l o n g u n c o n d i t i o n a l l y i n m a n y p l a c e s , 01770 01771 f o r e x a m p l e i n c o n s t a n t s w i t h [ U ] L L s u f f i x . 01772 01773 * / 01774 01775 # i f d e f i n e d ( H A V E _ L O N G _ L O N G ) & & S I Z E O F _ L O N G _ L O N G = = 8 01776 01777 t y p e d e f u n s i g n e d l o n g l o n g i n t u l o n g l o n g ; / * u l o n g o r u n s i g n e d l o n g l o n g * / 01778 01779 t y p e d e f l o n g l o n g i n t l o n g l o n g ; 01780 01781 # e l s e 01782 01783 t y p e d e f u n s i g n e d l o n g u l o n g l o n g ; / * u l o n g o r u n s i g n e d l o n g l o n g * / 01784 01785 t y p e d e f l o n g l o n g l o n g ; 01786 01787 # e n d i f 01788 01789 # e n d i f 01790 01791 # i f n d e f H A V E _ I N T 6 4 01792 01793 t y p e d e f l o n g l o n g i n t 6 4 ; 01794 01795 # e n d i f 01796 01797 # i f n d e f H A V E _ U I N T 6 4 01798 01799 t y p e d e f u l o n g l o n g u i n t 6 4 ; 01800 01801 # e n d i f 01802 01803 # i f d e f i n e d ( N O _ C L I E N T _ L O N G _ L O N G ) 01804 01805 t y p e d e f u n s i g n e d l o n g m y _ u l o n g l o n g ; 01806 01807 # e l i f d e f i n e d ( _ _ W I N _ _ ) 01808 01809 t y p e d e f u n s i g n e d _ _ i n t 6 4 m y _ u l o n g l o n g ; 01810 01811 # e l s e 01812 01813 t y p e d e f u n s i g n e d l o n g l o n g m y _ u l o n g l o n g ; 01814 01815 # e n d i f 01816 01817 # i f S I Z E O F _ C H A R P = = S I Z E O F _ I N T 01818 01819 t y p e d e f i n t i n t p t r ; 01820 01821 # e l i f S I Z E O F _ C H A R P = = S I Z E O F _ L O N G 01822 01823 t y p e d e f l o n g i n t p t r ; 01824 01825 # e l i f S I Z E O F _ C H A R P = = S I Z E O F _ L O N G _ L O N G 01826 01827 t y p e d e f l o n g l o n g i n t p t r ; 01828 01829 # e l s e 01830 01831 # e r r o r s i z e o f ( v o i d * ) i s n e i t h e r s i z e o f ( i n t ) n o r s i z e o f ( l o n g ) n o r s i z e o f ( l o n g l o n g ) 01832 01833 # e n d i f 01834 01835 # d e f i n e M Y _ E R R P T R ( ( v o i d * ) ( i n t p t r ) 1 ) 01836 01837 # i f d e f U S E _ R A I D 01838 01839 / * 01840 01841 T h e f o l l o w i n g i s d o n e w i t h a i f t o n o t g e t p r o b l e m s w i t h p r e - p r o c e s s o r s 01842 01843 w i t h l a t e d e f i n e e v a l u a t i o n 01844 01845 * / 01846 01847 # i f S I Z E O F _ O F F _ T = = 4 01848 01849 # d e f i n e S Y S T E M _ S I Z E O F _ O F F _ T 4 01850 01851 # e l s e 01852 01853 # d e f i n e S Y S T E M _ S I Z E O F _ O F F _ T 8 01854 01855 # e n d i f 01856 01857 # u n d e f S I Z E O F _ O F F _ T 01858 01859 # d e f i n e S I Z E O F _ O F F _ T 8 01860 01861 # e l s e 01862 01863 # d e f i n e S Y S T E M _ S I Z E O F _ O F F _ T S I Z E O F _ O F F _ T 01864 01865 # e n d i f / * U S E _ R A I D * / 01866 01867 # i f S I Z E O F _ O F F _ T > 4 01868 01869 t y p e d e f u l o n g l o n g m y _ o f f _ t ; 01870 01871 # e l s e 01872 01873 t y p e d e f u n s i g n e d l o n g m y _ o f f _ t ; 01874 01875 # e n d i f 01876 01877 # d e f i n e M Y _ F I L E P O S _ E R R O R ( ~ S T A T I C _ C A S T ( m y _ o f f _ t ) ( 0 ) ) 01878 01879 # i f ! d e f i n e d ( _ _ W I N _ _ ) 01880 01881 t y p e d e f o f f _ t o s _ o f f _ t ; 01882 01883 # e n d i f 01884 01885 # i f d e f i n e d ( _ _ W I N _ _ ) 01886 01887 # d e f i n e s o c k e t _ e r r n o W S A G e t L a s t E r r o r ( ) 01888 01889 # d e f i n e S O C K E T _ E I N T R W S A E I N T R 01890 01891 # d e f i n e S O C K E T _ E A G A I N W S A E I N P R O G R E S S 01892 01893 # d e f i n e S O C K E T _ E T I M E D O U T W S A E T I M E D O U T 01894 01895 # d e f i n e S O C K E T _ E W O U L D B L O C K W S A E W O U L D B L O C K 01896 01897 # d e f i n e S O C K E T _ E A D D R I N U S E W S A E A D D R I N U S E 01898 01899 # d e f i n e S O C K E T _ E N F I L E E N F I L E 01900 01901 # d e f i n e S O C K E T _ E M F I L E E M F I L E 01902 01903 # e l s e / * U n i x * / 01904 01905 # d e f i n e s o c k e t _ e r r n o e r r n o 01906 01907 # d e f i n e c l o s e s o c k e t ( A ) c l o s e ( A ) 01908 01909 # d e f i n e S O C K E T _ E I N T R E I N T R 01910 01911 # d e f i n e S O C K E T _ E A G A I N E A G A I N 01912 01913 # d e f i n e S O C K E T _ E T I M E D O U T S O C K E T _ E I N T R 01914 01915 # d e f i n e S O C K E T _ E W O U L D B L O C K E W O U L D B L O C K 01916 01917 # d e f i n e S O C K E T _ E A D D R I N U S E E A D D R I N U S E 01918 01919 # d e f i n e S O C K E T _ E N F I L E E N F I L E 01920 01921 # d e f i n e S O C K E T _ E M F I L E E M F I L E 01922 01923 # e n d i f 01924 01925 t y p e d e f u i n t 8 i n t 7 ; / * M o s t e f f e c t i v e i n t e g e r 0 < = x < = 1 2 7 * / 01926 01927 t y p e d e f s h o r t i n t 1 5 ; / * M o s t e f f e c t i v e i n t e g e r 0 < = x < = 3 2 7 6 7 * / 01928 01929 t y p e d e f i n t m y f ; / * T y p e o f M y F l a g s i n m y _ f u n c s * / 01930 01931 / * M a c r o s f o r c o n v e r t i n g * c o n s t a n t s * t o t h e r i g h t t y p e * / 01932 01933 # d e f i n e I N T 8 ( v ) ( i n t 8 ) ( v ) 01934 01935 # d e f i n e I N T 1 6 ( v ) ( i n t 1 6 ) ( v ) 01936 01937 # d e f i n e I N T 3 2 ( v ) ( i n t 3 2 ) ( v ) 01938 01939 # d e f i n e M Y F ( v ) S T A T I C _ C A S T ( m y f ) ( v ) 01940 01941 / * 01942 01943 D e f i n e s t o m a k e i t p o s s i b l e t o p r i o r i t i z e r e g i s t e r a s s i g n m e n t s . N o 01944 01945 l o n g e r t h a t i m p o r t a n t w i t h m o d e r n c o m p i l e r s . 01946 01947 * / 01948 01949 # i f n d e f U S I N G _ X 01950 01951 # d e f i n e r e g 1 r e g i s t e r 01952 01953 # d e f i n e r e g 2 r e g i s t e r 01954 01955 # d e f i n e r e g 3 r e g i s t e r 01956 01957 # d e f i n e r e g 4 r e g i s t e r 01958 01959 # d e f i n e r e g 5 r e g i s t e r 01960 01961 # d e f i n e r e g 6 r e g i s t e r 01962 01963 # d e f i n e r e g 7 r e g i s t e r 01964 01965 # d e f i n e r e g 8 r e g i s t e r 01966 01967 # d e f i n e r e g 9 r e g i s t e r 01968 01969 # d e f i n e r e g 1 0 r e g i s t e r 01970 01971 # d e f i n e r e g 1 1 r e g i s t e r 01972 01973 # d e f i n e r e g 1 2 r e g i s t e r 01974 01975 # d e f i n e r e g 1 3 r e g i s t e r 01976 01977 # d e f i n e r e g 1 4 r e g i s t e r 01978 01979 # d e f i n e r e g 1 5 r e g i s t e r 01980 01981 # d e f i n e r e g 1 6 r e g i s t e r 01982 01983 # e n d i f 01984 01985 / * 01986 01987 S o m e t i m e s w e w a n t t o m a k e s u r e t h a t t h e v a r i a b l e i s n o t p u t i n t o 01988 01989 a r e g i s t e r i n d e b u g g i n g m o d e s o w e c a n s e e i t s v a l u e i n t h e c o r e 01990 01991 * / 01992 01993 # i f n d e f D B U G _ O F F 01994 01995 # d e f i n e d b u g _ v o l a t i l e v o l a t i l e 01996 01997 # e l s e 01998 01999 # d e f i n e d b u g _ v o l a t i l e 02000 02001 # e n d i f 02002 02003 / * S o m e h e l p e r m a c r o s * / 02004 02005 # d e f i n e Y E S N O ( X ) ( ( X ) ? " y e s " : " n o " ) 02006 02007 / * D e f i n e s f o r t i m e f u n c t i o n * / 02008 02009 # d e f i n e S C A L E _ S E C 1 0 0 02010 02011 # d e f i n e S C A L E _ U S E C 1 0 0 0 0 02012 02013 # d e f i n e M Y _ H O W _ O F T E N _ T O _ A L A R M 2 / * H o w o f t e n w e w a n t i n f o o n s c r e e n * / 02014 02015 # d e f i n e M Y _ H O W _ O F T E N _ T O _ W R I T E 1 0 0 0 0 / * H o w o f t e n w e w a n t i n f o o n s c r e e n * / 02016 02017 / * 02018 02019 D e f i n e - f u n k t i o n s f o r r e a d i n g a n d s t o r i n g i n m a c h i n e i n d e p e n d e n t f o r m a t 02020 02021 ( l o w b y t e f i r s t ) 02022 02023 * / 02024 02025 / * O p t i m i z e d s t o r e f u n c t i o n s f o r I n t e l x 8 6 * / 02026 02027 # i f d e f i n e d ( _ _ i 3 8 6 _ _ ) | | d e f i n e d ( _ W I N 3 2 ) 02028 02029 # d e f i n e s i n t 2 k o r r ( A ) ( * ( ( c o n s t i n t 1 6 * ) ( A ) ) ) 02030 02031 # d e f i n e s i n t 3 k o r r ( A ) ( ( i n t 3 2 ) ( ( ( ( u c h a r ) ( A ) [ 2 ] ) & 1 2 8 ) ? \ 02032 02033 ( ( ( u i n t 3 2 ) 2 5 5 L < < 2 4 ) | \ 02034 02035 ( ( ( u i n t 3 2 ) ( u c h a r ) ( A ) [ 2 ] ) < < 1 6 ) | \ 02036 02037 ( ( ( u i n t 3 2 ) ( u c h a r ) ( A ) [ 1 ] ) < < 8 ) | \ 02038 02039 ( ( u i n t 3 2 ) ( u c h a r ) ( A ) [ 0 ] ) ) : \ 02040 02041 ( ( ( u i n t 3 2 ) ( u c h a r ) ( A ) [ 2 ] ) < < 1 6 ) | \ 02042 02043 ( ( ( u i n t 3 2 ) ( u c h a r ) ( A ) [ 1 ] ) < < 8 ) | \ 02044 02045 ( ( u i n t 3 2 ) ( u c h a r ) ( A ) [ 0 ] ) ) ) 02046 02047 # d e f i n e s i n t 4 k o r r ( A ) ( * ( ( c o n s t l o n g * ) ( A ) ) ) 02048 02049 # d e f i n e u i n t 2 k o r r ( A ) ( * ( ( c o n s t u i n t 1 6 * ) ( A ) ) ) 02050 02051 # i f d e f i n e d ( H A V E _ p u r i f y ) & & ! d e f i n e d ( _ W I N 3 2 ) 02052 02053 # d e f i n e u i n t 3 k o r r ( A ) ( u i n t 3 2 ) ( ( ( u i n t 3 2 ) ( ( u c h a r ) ( A ) [ 0 ] ) ) + \ 02054 02055 ( ( ( u i n t 3 2 ) ( ( u c h a r ) ( A ) [ 1 ] ) ) < < 8 ) + \ 02056 02057 ( ( ( u i n t 3 2 ) ( ( u c h a r ) ( A ) [ 2 ] ) ) < < 1 6 ) ) 02058 02059 # e l s e 02060 02061 / * 02062 02063 A T T E N T I O N ! 02064 02065 02066 02067 P l e a s e , n o t e , u i n t 3 k o r r r e a d s 4 b y t e s ( n o t 3 ) ! 02068 02069 I t m e a n s , t h a t y o u h a v e t o p r o v i d e e n o u g h a l l o c a t e d s p a c e ! 02070 02071 * / 02072 02073 # d e f i n e u i n t 3 k o r r ( A ) ( l o n g ) ( * ( ( c o n s t u n s i g n e d i n t * ) ( A ) ) & 0 x F F F F F F ) 02074 02075 # e n d i f / * H A V E _ p u r i f y & & ! _ W I N 3 2 * / 02076 02077 # d e f i n e u i n t 4 k o r r ( A ) ( * ( ( c o n s t u i n t 3 2 * ) ( A ) ) ) 02078 02079 # d e f i n e u i n t 5 k o r r ( A ) ( ( u l o n g l o n g ) ( ( ( u i n t 3 2 ) ( ( u c h a r ) ( A ) [ 0 ] ) ) + \ 02080 02081 ( ( ( u i n t 3 2 ) ( ( u c h a r ) ( A ) [ 1 ] ) ) < < 8 ) + \ 02082 02083 ( ( ( u i n t 3 2 ) ( ( u c h a r ) ( A ) [ 2 ] ) ) < < 1 6 ) + \ 02084 02085 ( ( ( u i n t 3 2 ) ( ( u c h a r ) ( A ) [ 3 ] ) ) < < 2 4 ) ) + \ 02086 02087 ( ( ( u l o n g l o n g ) ( ( u c h a r ) ( A ) [ 4 ] ) ) < < 3 2 ) ) 02088 02089 # d e f i n e u i n t 6 k o r r ( A ) ( ( u l o n g l o n g ) ( ( ( u i n t 3 2 ) ( ( u c h a r ) ( A ) [ 0 ] ) ) + \ 02090 02091 ( ( ( u i n t 3 2 ) ( ( u c h a r ) ( A ) [ 1 ] ) ) < < 8 ) + \ 02092 02093 ( ( ( u i n t 3 2 ) ( ( u c h a r ) ( A ) [ 2 ] ) ) < < 1 6 ) + \ 02094 02095 ( ( ( u i n t 3 2 ) ( ( u c h a r ) ( A ) [ 3 ] ) ) < < 2 4 ) ) + \ 02096 02097 ( ( ( u l o n g l o n g ) ( ( u c h a r ) ( A ) [ 4 ] ) ) < < 3 2 ) + \ 02098 02099 ( ( ( u l o n g l o n g ) ( ( u c h a r ) ( A ) [ 5 ] ) ) < < 4 0 ) ) 02100 02101 # d e f i n e u i n t 8 k o r r ( A ) ( * ( ( c o n s t u l o n g l o n g * ) ( A ) ) ) 02102 02103 # d e f i n e s i n t 8 k o r r ( A ) ( * ( ( c o n s t l o n g l o n g * ) ( A ) ) ) 02104 02105 # d e f i n e i n t 2 s t o r e ( T , A ) * ( ( u i n t 1 6 * ) ( T ) ) = ( u i n t 1 6 ) ( A ) 02106 02107 # d e f i n e i n t 3 s t o r e ( T , A ) d o { * ( T ) = ( u c h a r ) ( ( A ) ) ; \ 02108 02109 * ( T + 1 ) = ( u c h a r ) ( ( ( u i n t ) ( A ) > > 8 ) ) ; \ 02110 02111 * ( T + 2 ) = ( u c h a r ) ( ( ( A ) > > 1 6 ) ) ; } w h i l e ( 0 ) 02112 02113 # d e f i n e i n t 4 s t o r e ( T , A ) * ( ( l o n g * ) ( T ) ) = ( l o n g ) ( A ) 02114 02115 # d e f i n e i n t 5 s t o r e ( T , A ) d o { * ( T ) = ( u c h a r ) ( ( A ) ) ; \ 02116 02117 * ( ( T ) + 1 ) = ( u c h a r ) ( ( ( A ) > > 8 ) ) ; \ 02118 02119 * ( ( T ) + 2 ) = ( u c h a r ) ( ( ( A ) > > 1 6 ) ) ; \ 02120 02121 * ( ( T ) + 3 ) = ( u c h a r ) ( ( ( A ) > > 2 4 ) ) ; \ 02122 02123 * ( ( T ) + 4 ) = ( u c h a r ) ( ( ( A ) > > 3 2 ) ) ; } w h i l e ( 0 ) 02124 02125 # d e f i n e i n t 6 s t o r e ( T , A ) d o { * ( T ) = ( u c h a r ) ( ( A ) ) ; \ 02126 02127 * ( ( T ) + 1 ) = ( u c h a r ) ( ( ( A ) > > 8 ) ) ; \ 02128 02129 * ( ( T ) + 2 ) = ( u c h a r ) ( ( ( A ) > > 1 6 ) ) ; \ 02130 02131 * ( ( T ) + 3 ) = ( u c h a r ) ( ( ( A ) > > 2 4 ) ) ; \ 02132 02133 * ( ( T ) + 4 ) = ( u c h a r ) ( ( ( A ) > > 3 2 ) ) ; \ 02134 02135 * ( ( T ) + 5 ) = ( u c h a r ) ( ( ( A ) > > 4 0 ) ) ; } w h i l e ( 0 ) 02136 02137 # d e f i n e i n t 8 s t o r e ( T , A ) * ( ( u l o n g l o n g * ) ( T ) ) = ( u l o n g l o n g ) ( A ) 02138 02139 t y p e d e f u n i o n { 02140 02141 d o u b l e v ; 02142 02143 l o n g m [ 2 ] ; 02144 02145 } d o u b l e g e t _ u n i o n ; 02146 02147 # d e f i n e d o u b l e g e t ( V , M ) \ 02148 02149 d o { d o u b l e g e t _ u n i o n _ t m p ; \ 02150 02151 _ t m p . m [ 0 ] = * ( ( c o n s t l o n g * ) ( M ) ) ; \ 02152 02153 _ t m p . m [ 1 ] = * ( ( ( c o n s t l o n g * ) ( M ) ) + 1 ) ; \ 02154 02155 ( V ) = _ t m p . v ; } w h i l e ( 0 ) 02156 02157 # d e f i n e d o u b l e s t o r e ( T , V ) d o { * ( ( l o n g * ) T ) = ( ( c o n s t d o u b l e g e t _ u n i o n * ) & V ) - > m [ 0 ] ; \ 02158 02159 * ( ( ( l o n g * ) T ) + 1 ) = ( ( c o n s t d o u b l e g e t _ u n i o n * ) & V ) - > m [ 1 ] ; \ 02160 02161 } w h i l e ( 0 ) 02162 02163 # d e f i n e f l o a t 4 g e t ( V , M ) d o { * ( ( f l o a t * ) & ( V ) ) = * ( ( c o n s t f l o a t * ) ( M ) ) ; } w h i l e ( 0 ) 02164 02165 # d e f i n e f l o a t 8 g e t ( V , M ) d o u b l e g e t ( ( V ) , ( M ) ) 02166 02167 # d e f i n e f l o a t 4 s t o r e ( V , M ) m e m c p y ( ( u c h a r * ) V , ( c o n s t u c h a r * ) ( & M ) , s i z e o f ( f l o a t ) ) 02168 02169 # d e f i n e f l o a t s t o r e ( T , V ) m e m c p y ( ( u c h a r * ) ( T ) , ( c o n s t u c h a r * ) ( & V ) , s i z e o f ( f l o a t ) ) 02170 02171 # d e f i n e f l o a t g e t ( V , M ) m e m c p y ( ( u c h a r * ) & V , ( c o n s t u c h a r * ) ( M ) , s i z e o f ( f l o a t ) ) 02172 02173 # d e f i n e f l o a t 8 s t o r e ( V , M ) d o u b l e s t o r e ( ( V ) , ( M ) ) 02174 02175 # e l s e 02176 02177 / * 02178 02179 W e ' r e h e r e i f i t ' s n o t a I A - 3 2 a r c h i t e c t u r e ( W i n 3 2 a n d U N I X I A - 3 2 d e f i n e s 02180 02181 w e r e d o n e b e f o r e ) 02182 02183 * / 02184 02185 # d e f i n e s i n t 2 k o r r ( A ) ( i n t 1 6 ) ( ( ( i n t 1 6 ) ( ( u c h a r ) ( A ) [ 0 ] ) ) + \ 02186 02187 ( ( i n t 1 6 ) ( ( i n t 1 6 ) ( A ) [ 1 ] ) < < 8 ) ) 02188 02189 # d e f i n e s i n t 3 k o r r ( A ) ( ( i n t 3 2 ) ( ( ( ( u c h a r ) ( A ) [ 2 ] ) & 1 2 8 ) ? \ 02190 02191 ( ( ( u i n t 3 2 ) 2 5 5 L < < 2 4 ) | \ 02192 02193 ( ( ( u i n t 3 2 ) ( u c h a r ) ( A ) [ 2 ] ) < < 1 6 ) | \ 02194 02195 ( ( ( u i n t 3 2 ) ( u c h a r ) ( A ) [ 1 ] ) < < 8 ) | \ 02196 02197 ( ( u i n t 3 2 ) ( u c h a r ) ( A ) [ 0 ] ) ) : \ 02198 02199 ( ( ( u i n t 3 2 ) ( u c h a r ) ( A ) [ 2 ] ) < < 1 6 ) | \ 02200 02201 ( ( ( u i n t 3 2 ) ( u c h a r ) ( A ) [ 1 ] ) < < 8 ) | \ 02202 02203 ( ( u i n t 3 2 ) ( u c h a r ) ( A ) [ 0 ] ) ) ) 02204 02205 # d e f i n e s i n t 4 k o r r ( A ) ( i n t 3 2 ) ( ( ( i n t 3 2 ) ( ( u c h a r ) ( A ) [ 0 ] ) ) + \ 02206 02207 ( ( ( i n t 3 2 ) ( ( u c h a r ) ( A ) [ 1 ] ) < < 8 ) ) + \ 02208 02209 ( ( ( i n t 3 2 ) ( ( u c h a r ) ( A ) [ 2 ] ) < < 1 6 ) ) + \ 02210 02211 ( ( ( i n t 3 2 ) ( ( i n t 1 6 ) ( A ) [ 3 ] ) < < 2 4 ) ) ) 02212 02213 # d e f i n e s i n t 8 k o r r ( A ) ( l o n g l o n g ) u i n t 8 k o r r ( A ) 02214 02215 # d e f i n e u i n t 2 k o r r ( A ) ( u i n t 1 6 ) ( ( ( u i n t 1 6 ) ( ( u c h a r ) ( A ) [ 0 ] ) ) + \ 02216 02217 ( ( u i n t 1 6 ) ( ( u c h a r ) ( A ) [ 1 ] ) < < 8 ) ) 02218 02219 # d e f i n e u i n t 3 k o r r ( A ) ( u i n t 3 2 ) ( ( ( u i n t 3 2 ) ( ( u c h a r ) ( A ) [ 0 ] ) ) + \ 02220 02221 ( ( ( u i n t 3 2 ) ( ( u c h a r ) ( A ) [ 1 ] ) ) < < 8 ) + \ 02222 02223 ( ( ( u i n t 3 2 ) ( ( u c h a r ) ( A ) [ 2 ] ) ) < < 1 6 ) ) 02224 02225 # d e f i n e u i n t 4 k o r r ( A ) ( u i n t 3 2 ) ( ( ( u i n t 3 2 ) ( ( u c h a r ) ( A ) [ 0 ] ) ) + \ 02226 02227 ( ( ( u i n t 3 2 ) ( ( u c h a r ) ( A ) [ 1 ] ) ) < < 8 ) + \ 02228 02229 ( ( ( u i n t 3 2 ) ( ( u c h a r ) ( A ) [ 2 ] ) ) < < 1 6 ) + \ 02230 02231 ( ( ( u i n t 3 2 ) ( ( u c h a r ) ( A ) [ 3 ] ) ) < < 2 4 ) ) 02232 02233 # d e f i n e u i n t 5 k o r r ( A ) ( ( u l o n g l o n g ) ( ( ( u i n t 3 2 ) ( ( u c h a r ) ( A ) [ 0 ] ) ) + \ 02234 02235 ( ( ( u i n t 3 2 ) ( ( u c h a r ) ( A ) [ 1 ] ) ) < < 8 ) + \ 02236 02237 ( ( ( u i n t 3 2 ) ( ( u c h a r ) ( A ) [ 2 ] ) ) < < 1 6 ) + \ 02238 02239 ( ( ( u i n t 3 2 ) ( ( u c h a r ) ( A ) [ 3 ] ) ) < < 2 4 ) ) + \ 02240 02241 ( ( ( u l o n g l o n g ) ( ( u c h a r ) ( A ) [ 4 ] ) ) < < 3 2 ) ) 02242 02243 # d e f i n e u i n t 6 k o r r ( A ) ( ( u l o n g l o n g ) ( ( ( u i n t 3 2 ) ( ( u c h a r ) ( A ) [ 0 ] ) ) + \ 02244 02245 ( ( ( u i n t 3 2 ) ( ( u c h a r ) ( A ) [ 1 ] ) ) < < 8 ) + \ 02246 02247 ( ( ( u i n t 3 2 ) ( ( u c h a r ) ( A ) [ 2 ] ) ) < < 1 6 ) + \ 02248 02249 ( ( ( u i n t 3 2 ) ( ( u c h a r ) ( A ) [ 3 ] ) ) < < 2 4 ) ) + \ 02250 02251 ( ( ( u l o n g l o n g ) ( ( u c h a r ) ( A ) [ 4 ] ) ) < < 3 2 ) + \ 02252 02253 ( ( ( u l o n g l o n g ) ( ( u c h a r ) ( A ) [ 5 ] ) ) < < 4 0 ) ) 02254 02255 # d e f i n e u i n t 8 k o r r ( A ) ( ( u l o n g l o n g ) ( ( ( u i n t 3 2 ) ( ( u c h a r ) ( A ) [ 0 ] ) ) + \ 02256 02257 ( ( ( u i n t 3 2 ) ( ( u c h a r ) ( A ) [ 1 ] ) ) < < 8 ) + \ 02258 02259 ( ( ( u i n t 3 2 ) ( ( u c h a r ) ( A ) [ 2 ] ) ) < < 1 6 ) + \ 02260 02261 ( ( ( u i n t 3 2 ) ( ( u c h a r ) ( A ) [ 3 ] ) ) < < 2 4 ) ) + \ 02262 02263 ( ( ( u l o n g l o n g ) ( ( ( u i n t 3 2 ) ( ( u c h a r ) ( A ) [ 4 ] ) ) + \ 02264 02265 ( ( ( u i n t 3 2 ) ( ( u c h a r ) ( A ) [ 5 ] ) ) < < 8 ) + \ 02266 02267 ( ( ( u i n t 3 2 ) ( ( u c h a r ) ( A ) [ 6 ] ) ) < < 1 6 ) + \ 02268 02269 ( ( ( u i n t 3 2 ) ( ( u c h a r ) ( A ) [ 7 ] ) ) < < 2 4 ) ) ) < < \ 02270 02271 3 2 ) ) 02272 02273 # d e f i n e i n t 2 s t o r e ( T , A ) d o { u i n t d e f _ t e m p = ( u i n t ) ( A ) ; \ 02274 02275 * ( ( u c h a r * ) ( T ) ) = ( u c h a r ) ( d e f _ t e m p ) ; \ 02276 02277 * ( ( u c h a r * ) ( T ) + 1 ) = ( u c h a r ) ( ( d e f _ t e m p > > 8 ) ) ; \ 02278 02279 } w h i l e ( 0 ) 02280 02281 # d e f i n e i n t 3 s t o r e ( T , A ) d o { / * l i n t - s a v e - e 7 3 4 * / \ 02282 02283 * ( ( u c h a r * ) ( T ) ) = ( u c h a r ) ( ( A ) ) ; \ 02284 02285 * ( ( u c h a r * ) ( T ) + 1 ) = ( u c h a r ) ( ( ( A ) > > 8 ) ) ; \ 02286 02287 * ( ( u c h a r * ) ( T ) + 2 ) = ( u c h a r ) ( ( ( A ) > > 1 6 ) ) ; \ 02288 02289 / * l i n t - r e s t o r e * / } w h i l e ( 0 ) 02290 02291 # d e f i n e i n t 4 s t o r e ( T , A ) d o { * ( ( c h a r * ) ( T ) ) = ( c h a r ) ( ( A ) ) ; \ 02292 02293 * ( ( ( c h a r * ) ( T ) ) + 1 ) = ( c h a r ) ( ( ( A ) > > 8 ) ) ; \ 02294 02295 * ( ( ( c h a r * ) ( T ) ) + 2 ) = ( c h a r ) ( ( ( A ) > > 1 6 ) ) ; \ 02296 02297 * ( ( ( c h a r * ) ( T ) ) + 3 ) = ( c h a r ) ( ( ( A ) > > 2 4 ) ) ; } w h i l e ( 0 ) 02298 02299 # d e f i n e i n t 5 s t o r e ( T , A ) d o { * ( ( c h a r * ) ( T ) ) = ( c h a r ) ( ( A ) ) ; \ 02300 02301 * ( ( ( c h a r * ) ( T ) ) + 1 ) = ( c h a r ) ( ( ( A ) > > 8 ) ) ; \ 02302 02303 * ( ( ( c h a r * ) ( T ) ) + 2 ) = ( c h a r ) ( ( ( A ) > > 1 6 ) ) ; \ 02304 02305 * ( ( ( c h a r * ) ( T ) ) + 3 ) = ( c h a r ) ( ( ( A ) > > 2 4 ) ) ; \ 02306 02307 * ( ( ( c h a r * ) ( T ) ) + 4 ) = ( c h a r ) ( ( ( A ) > > 3 2 ) ) ; \ 02308 02309 } w h i l e ( 0 ) 02310 02311 # d e f i n e i n t 6 s t o r e ( T , A ) d o { * ( ( c h a r * ) ( T ) ) = ( c h a r ) ( ( A ) ) ; \ 02312 02313 * ( ( ( c h a r * ) ( T ) ) + 1 ) = ( c h a r ) ( ( ( A ) > > 8 ) ) ; \ 02314 02315 * ( ( ( c h a r * ) ( T ) ) + 2 ) = ( c h a r ) ( ( ( A ) > > 1 6 ) ) ; \ 02316 02317 * ( ( ( c h a r * ) ( T ) ) + 3 ) = ( c h a r ) ( ( ( A ) > > 2 4 ) ) ; \ 02318 02319 * ( ( ( c h a r * ) ( T ) ) + 4 ) = ( c h a r ) ( ( ( A ) > > 3 2 ) ) ; \ 02320 02321 * ( ( ( c h a r * ) ( T ) ) + 5 ) = ( c h a r ) ( ( ( A ) > > 4 0 ) ) ; \ 02322 02323 } w h i l e ( 0 ) 02324 02325 # d e f i n e i n t 8 s t o r e ( T , A ) d o { u i n t d e f _ t e m p = ( u i n t ) ( A ) , d e f _ t e m p 2 = ( u i n t ) ( ( A ) > > 3 2 ) ; \ 02326 02327 i n t 4 s t o r e ( ( T ) , d e f _ t e m p ) ; \ 02328 02329 i n t 4 s t o r e ( ( T + 4 ) , d e f _ t e m p 2 ) ; } w h i l e ( 0 ) 02330 02331 # i f d e f W O R D S _ B I G E N D I A N 02332 02333 # d e f i n e f l o a t 4 s t o r e ( T , A ) d o { * ( T ) = ( ( u c h a r * ) & A ) [ 3 ] ; \ 02334 02335 * ( ( T ) + 1 ) = ( c h a r ) ( ( u c h a r * ) & A ) [ 2 ] ; \ 02336 02337 * ( ( T ) + 2 ) = ( c h a r ) ( ( u c h a r * ) & A ) [ 1 ] ; \ 02338 02339 * ( ( T ) + 3 ) = ( c h a r ) ( ( u c h a r * ) & A ) [ 0 ] ; } w h i l e ( 0 ) 02340 02341 # d e f i n e f l o a t 4 g e t ( V , M ) d o { f l o a t d e f _ t e m p ; \ 02342 02343 ( ( u c h a r * ) & d e f _ t e m p ) [ 0 ] = ( M ) [ 3 ] ; \ 02344 02345 ( ( u c h a r * ) & d e f _ t e m p ) [ 1 ] = ( M ) [ 2 ] ; \ 02346 02347 ( ( u c h a r * ) & d e f _ t e m p ) [ 2 ] = ( M ) [ 1 ] ; \ 02348 02349 ( ( u c h a r * ) & d e f _ t e m p ) [ 3 ] = ( M ) [ 0 ] ; \ 02350 02351 ( V ) = d e f _ t e m p ; } w h i l e ( 0 ) 02352 02353 # d e f i n e f l o a t 8 s t o r e ( T , V ) d o { * ( T ) = ( ( u c h a r * ) & V ) [ 7 ] ; \ 02354 02355 * ( ( T ) + 1 ) = ( c h a r ) ( ( u c h a r * ) & V ) [ 6 ] ; \ 02356 02357 * ( ( T ) + 2 ) = ( c h a r ) ( ( u c h a r * ) & V ) [ 5 ] ; \ 02358 02359 * ( ( T ) + 3 ) = ( c h a r ) ( ( u c h a r * ) & V ) [ 4 ] ; \ 02360 02361 * ( ( T ) + 4 ) = ( c h a r ) ( ( u c h a r * ) & V ) [ 3 ] ; \ 02362 02363 * ( ( T ) + 5 ) = ( c h a r ) ( ( u c h a r * ) & V ) [ 2 ] ; \ 02364 02365 * ( ( T ) + 6 ) = ( c h a r ) ( ( u c h a r * ) & V ) [ 1 ] ; \ 02366 02367 * ( ( T ) + 7 ) = ( c h a r ) ( ( u c h a r * ) & V ) [ 0 ] ; } w h i l e ( 0 ) 02368 02369 # d e f i n e f l o a t 8 g e t ( V , M ) d o { d o u b l e d e f _ t e m p ; \ 02370 02371 ( ( u c h a r * ) & d e f _ t e m p ) [ 0 ] = ( M ) [ 7 ] ; \ 02372 02373 ( ( u c h a r * ) & d e f _ t e m p ) [ 1 ] = ( M ) [ 6 ] ; \ 02374 02375 ( ( u c h a r * ) & d e f _ t e m p ) [ 2 ] = ( M ) [ 5 ] ; \ 02376 02377 ( ( u c h a r * ) & d e f _ t e m p ) [ 3 ] = ( M ) [ 4 ] ; \ 02378 02379 ( ( u c h a r * ) & d e f _ t e m p ) [ 4 ] = ( M ) [ 3 ] ; \ 02380 02381 ( ( u c h a r * ) & d e f _ t e m p ) [ 5 ] = ( M ) [ 2 ] ; \ 02382 02383 ( ( u c h a r * ) & d e f _ t e m p ) [ 6 ] = ( M ) [ 1 ] ; \ 02384 02385 ( ( u c h a r * ) & d e f _ t e m p ) [ 7 ] = ( M ) [ 0 ] ; \ 02386 02387 ( V ) = d e f _ t e m p ; } w h i l e ( 0 ) 02388 02389 # e l s e 02390 02391 # d e f i n e f l o a t 4 g e t ( V , M ) m e m c p y _ f i x e d ( ( u c h a r * ) & V , ( u c h a r * ) ( M ) , s i z e o f ( f l o a t ) ) 02392 02393 # d e f i n e f l o a t 4 s t o r e ( V , M ) m e m c p y _ f i x e d ( ( u c h a r * ) V , ( u c h a r * ) ( & M ) , s i z e o f ( f l o a t ) ) 02394 02395 # i f d e f i n e d ( _ _ F L O A T _ W O R D _ O R D E R ) & & ( _ _ F L O A T _ W O R D _ O R D E R = = _ _ B I G _ E N D I A N ) 02396 02397 # d e f i n e d o u b l e s t o r e ( T , V ) d o { * ( ( ( c h a r * ) T ) + 0 ) = ( c h a r ) ( ( u c h a r * ) & V ) [ 4 ] ; \ 02398 02399 * ( ( ( c h a r * ) T ) + 1 ) = ( c h a r ) ( ( u c h a r * ) & V ) [ 5 ] ; \ 02400 02401 * ( ( ( c h a r * ) T ) + 2 ) = ( c h a r ) ( ( u c h a r * ) & V ) [ 6 ] ; \ 02402 02403 * ( ( ( c h a r * ) T ) + 3 ) = ( c h a r ) ( ( u c h a r * ) & V ) [ 7 ] ; \ 02404 02405 * ( ( ( c h a r * ) T ) + 4 ) = ( c h a r ) ( ( u c h a r * ) & V ) [ 0 ] ; \ 02406 02407 * ( ( ( c h a r * ) T ) + 5 ) = ( c h a r ) ( ( u c h a r * ) & V ) [ 1 ] ; \ 02408 02409 * ( ( ( c h a r * ) T ) + 6 ) = ( c h a r ) ( ( u c h a r * ) & V ) [ 2 ] ; \ 02410 02411 * ( ( ( c h a r * ) T ) + 7 ) = ( c h a r ) ( ( u c h a r * ) & V ) [ 3 ] ; } \ 02412 02413 w h i l e ( 0 ) 02414 02415 # d e f i n e d o u b l e g e t ( V , M ) d o { d o u b l e d e f _ t e m p ; \ 02416 02417 ( ( u c h a r * ) & d e f _ t e m p ) [ 0 ] = ( M ) [ 4 ] ; \ 02418 02419 ( ( u c h a r * ) & d e f _ t e m p ) [ 1 ] = ( M ) [ 5 ] ; \ 02420 02421 ( ( u c h a r * ) & d e f _ t e m p ) [ 2 ] = ( M ) [ 6 ] ; \ 02422 02423 ( ( u c h a r * ) & d e f _ t e m p ) [ 3 ] = ( M ) [ 7 ] ; \ 02424 02425 ( ( u c h a r * ) & d e f _ t e m p ) [ 4 ] = ( M ) [ 0 ] ; \ 02426 02427 ( ( u c h a r * ) & d e f _ t e m p ) [ 5 ] = ( M ) [ 1 ] ; \ 02428 02429 ( ( u c h a r * ) & d e f _ t e m p ) [ 6 ] = ( M ) [ 2 ] ; \ 02430 02431 ( ( u c h a r * ) & d e f _ t e m p ) [ 7 ] = ( M ) [ 3 ] ; \ 02432 02433 ( V ) = d e f _ t e m p ; } w h i l e ( 0 ) 02434 02435 # e n d i f / * _ _ F L O A T _ W O R D _ O R D E R * / 02436 02437 # d e f i n e f l o a t 8 g e t ( V , M ) d o u b l e g e t ( ( V ) , ( M ) ) 02438 02439 # d e f i n e f l o a t 8 s t o r e ( V , M ) d o u b l e s t o r e ( ( V ) , ( M ) ) 02440 02441 # e n d i f / * W O R D S _ B I G E N D I A N * / 02442 02443 # e n d i f / * _ _ i 3 8 6 _ _ O R _ W I N 3 2 * / 02444 02445 / * 02446 02447 M a c r o f o r r e a d i n g 3 2 - b i t i n t e g e r f r o m n e t w o r k b y t e o r d e r ( b i g - e n d i a n ) 02448 02449 f r o m u n a l i g n e d m e m o r y l o c a t i o n . 02450 02451 * / 02452 02453 # d e f i n e i n t 4 n e t ( A ) ( i n t 3 2 ) ( ( ( u i n t 3 2 ) ( ( u c h a r ) ( A ) [ 3 ] ) ) | \ 02454 02455 ( ( ( u i n t 3 2 ) ( ( u c h a r ) ( A ) [ 2 ] ) ) < < 8 ) | \ 02456 02457 ( ( ( u i n t 3 2 ) ( ( u c h a r ) ( A ) [ 1 ] ) ) < < 1 6 ) | \ 02458 02459 ( ( ( u i n t 3 2 ) ( ( u c h a r ) ( A ) [ 0 ] ) ) < < 2 4 ) ) 02460 02461 / * 02462 02463 D e f i n e - f u n k t i o n s f o r r e a d i n g a n d s t o r i n g i n m a c h i n e f o r m a t f r o m / t o 02464 02465 s h o r t / l o n g t o / f r o m s o m e p l a c e i n m e m o r y V s h o u l d b e a ( n o t 02466 02467 r e g i s t e r ) v a r i a b l e , M i s a p o i n t e r t o b y t e 02468 02469 * / 02470 02471 # i f d e f W O R D S _ B I G E N D I A N 02472 02473 # d e f i n e u s h o r t g e t ( V , M ) d o { V = ( u i n t 1 6 ) ( ( ( u i n t 1 6 ) ( ( u c h a r ) ( M ) [ 1 ] ) ) + \ 02474 02475 ( ( u i n t 1 6 ) ( ( u i n t 1 6 ) ( M ) [ 0 ] ) < < 8 ) ) ; } w h i l e ( 0 ) 02476 02477 # d e f i n e s h o r t g e t ( V , M ) d o { V = ( s h o r t ) ( ( ( s h o r t ) ( ( u c h a r ) ( M ) [ 1 ] ) ) + \ 02478 02479 ( ( s h o r t ) ( ( s h o r t ) ( M ) [ 0 ] ) < < 8 ) ) ; } w h i l e ( 0 ) 02480 02481 # d e f i n e l o n g g e t ( V , M ) d o { i n t 3 2 d e f _ t e m p ; \ 02482 02483 ( ( u c h a r * ) & d e f _ t e m p ) [ 0 ] = ( M ) [ 0 ] ; \ 02484 02485 ( ( u c h a r * ) & d e f _ t e m p ) [ 1 ] = ( M ) [ 1 ] ; \ 02486 02487 ( ( u c h a r * ) & d e f _ t e m p ) [ 2 ] = ( M ) [ 2 ] ; \ 02488 02489 ( ( u c h a r * ) & d e f _ t e m p ) [ 3 ] = ( M ) [ 3 ] ; \ 02490 02491 ( V ) = d e f _ t e m p ; } w h i l e ( 0 ) 02492 02493 # d e f i n e u l o n g g e t ( V , M ) d o { u i n t 3 2 d e f _ t e m p ; \ 02494 02495 ( ( u c h a r * ) & d e f _ t e m p ) [ 0 ] = ( M ) [ 0 ] ; \ 02496 02497 ( ( u c h a r * ) & d e f _ t e m p ) [ 1 ] = ( M ) [ 1 ] ; \ 02498 02499 ( ( u c h a r * ) & d e f _ t e m p ) [ 2 ] = ( M ) [ 2 ] ; \ 02500 02501 ( ( u c h a r * ) & d e f _ t e m p ) [ 3 ] = ( M ) [ 3 ] ; \ 02502 02503 ( V ) = d e f _ t e m p ; } w h i l e ( 0 ) 02504 02505 # d e f i n e s h o r t s t o r e ( T , A ) d o { u i n t d e f _ t e m p = ( u i n t ) ( A ) ; \ 02506 02507 * ( ( ( c h a r * ) T ) + 1 ) = ( c h a r ) ( d e f _ t e m p ) ; \ 02508 02509 * ( ( ( c h a r * ) T ) + 0 ) = ( c h a r ) ( d e f _ t e m p > > 8 ) ; } w h i l e ( 0 ) 02510 02511 # d e f i n e l o n g s t o r e ( T , A ) d o { * ( ( ( c h a r * ) T ) + 3 ) = ( ( A ) ) ; \ 02512 02513 * ( ( ( c h a r * ) T ) + 2 ) = ( ( ( A ) > > 8 ) ) ; \ 02514 02515 * ( ( ( c h a r * ) T ) + 1 ) = ( ( ( A ) > > 1 6 ) ) ; \ 02516 02517 * ( ( ( c h a r * ) T ) + 0 ) = ( ( ( A ) > > 2 4 ) ) ; } w h i l e ( 0 ) 02518 02519 # d e f i n e f l o a t g e t ( V , M ) m e m c p y _ f i x e d ( ( u c h a r * ) & V , ( u c h a r * ) ( M ) , s i z e o f ( f l o a t ) ) 02520 02521 # d e f i n e f l o a t s t o r e ( T , V ) m e m c p y _ f i x e d ( ( u c h a r * ) ( T ) , ( u c h a r * ) ( & V ) , s i z e o f ( f l o a t ) ) 02522 02523 # d e f i n e d o u b l e g e t ( V , M ) m e m c p y _ f i x e d ( ( u c h a r * ) & V , ( u c h a r * ) ( M ) , s i z e o f ( d o u b l e ) ) 02524 02525 # d e f i n e d o u b l e s t o r e ( T , V ) m e m c p y _ f i x e d ( ( u c h a r * ) ( T ) , ( u c h a r * ) & V , s i z e o f ( d o u b l e ) ) 02526 02527 # d e f i n e l o n g l o n g g e t ( V , M ) m e m c p y _ f i x e d ( ( u c h a r * ) & V , ( u c h a r * ) ( M ) , s i z e o f ( u l o n g l o n g ) ) 02528 02529 # d e f i n e l o n g l o n g s t o r e ( T , V ) m e m c p y _ f i x e d ( ( u c h a r * ) ( T ) , ( u c h a r * ) & V , s i z e o f ( u l o n g l o n g ) ) 02530 02531 # e l s e 02532 02533 # d e f i n e u s h o r t g e t ( V , M ) d o { V = u i n t 2 k o r r ( M ) ; } w h i l e ( 0 ) 02534 02535 # d e f i n e s h o r t g e t ( V , M ) d o { V = s i n t 2 k o r r ( M ) ; } w h i l e ( 0 ) 02536 02537 # d e f i n e l o n g g e t ( V , M ) d o { V = s i n t 4 k o r r ( M ) ; } w h i l e ( 0 ) 02538 02539 # d e f i n e u l o n g g e t ( V , M ) d o { V = u i n t 4 k o r r ( M ) ; } w h i l e ( 0 ) 02540 02541 # d e f i n e s h o r t s t o r e ( T , V ) i n t 2 s t o r e ( T , V ) 02542 02543 # d e f i n e l o n g s t o r e ( T , V ) i n t 4 s t o r e ( T , V ) 02544 02545 # i f n d e f f l o a t s t o r e 02546 02547 # d e f i n e f l o a t s t o r e ( T , V ) m e m c p y _ f i x e d ( ( u c h a r * ) ( T ) , ( u c h a r * ) ( & V ) , s i z e o f ( f l o a t ) ) 02548 02549 # d e f i n e f l o a t g e t ( V , M ) m e m c p y _ f i x e d ( ( u c h a r * ) & V , ( u c h a r * ) ( M ) , s i z e o f ( f l o a t ) ) 02550 02551 # e n d i f 02552 02553 # i f n d e f d o u b l e g e t 02554 02555 # d e f i n e d o u b l e g e t ( V , M ) m e m c p y _ f i x e d ( ( u c h a r * ) & V , ( u c h a r * ) ( M ) , s i z e o f ( d o u b l e ) ) 02556 02557 # d e f i n e d o u b l e s t o r e ( T , V ) m e m c p y _ f i x e d ( ( u c h a r * ) ( T ) , ( u c h a r * ) & V , s i z e o f ( d o u b l e ) ) 02558 02559 # e n d i f / * d o u b l e g e t * / 02560 02561 # d e f i n e l o n g l o n g g e t ( V , M ) m e m c p y _ f i x e d ( ( u c h a r * ) & V , ( u c h a r * ) ( M ) , s i z e o f ( u l o n g l o n g ) ) 02562 02563 # d e f i n e l o n g l o n g s t o r e ( T , V ) m e m c p y _ f i x e d ( ( u c h a r * ) ( T ) , ( u c h a r * ) & V , s i z e o f ( u l o n g l o n g ) ) 02564 02565 # e n d i f / * W O R D S _ B I G E N D I A N * / 02566 02567 / * s p r i n t f d o e s n o t a l w a y s r e t u r n t h e n u m b e r o f b y t e s : - * / 02568 02569 # i f d e f S P R I N T F _ R E T U R N S _ I N T 02570 02571 # d e f i n e m y _ s p r i n t f ( b u f f , a r g s ) s p r i n t f a r g s 02572 02573 # e l s e 02574 02575 # i f d e f S P R I N T F _ R E T U R N S _ P T R 02576 02577 # d e f i n e m y _ s p r i n t f ( b u f f , a r g s ) ( ( i n t ) ( s p r i n t f a r g s - b u f f ) ) 02578 02579 # e l s e 02580 02581 # d e f i n e m y _ s p r i n t f ( b u f f , a r g s ) ( ( u l o n g ) s p r i n t f a r g s , ( u l o n g ) s t r l e n ( b u f f ) ) 02582 02583 # e n d i f 02584 02585 # e n d i f 02586 02587 # i f n d e f T H R E A D 02588 02589 # d e f i n e t h r e a d _ s a f e _ i n c r e m e n t ( V , L ) ( V ) + + 02590 02591 # d e f i n e t h r e a d _ s a f e _ d e c r e m e n t ( V , L ) ( V ) - - 02592 02593 # d e f i n e t h r e a d _ s a f e _ a d d ( V , C , L ) ( V ) + = ( C ) 02594 02595 # d e f i n e t h r e a d _ s a f e _ s u b ( V , C , L ) ( V ) - = ( C ) 02596 02597 # d e f i n e s t a t i s t i c _ i n c r e m e n t ( V , L ) ( V ) + + 02598 02599 # d e f i n e s t a t i s t i c _ d e c r e m e n t ( V , L ) ( V ) - - 02600 02601 # d e f i n e s t a t i s t i c _ a d d ( V , C , L ) ( V ) + = ( C ) 02602 02603 # d e f i n e s t a t i s t i c _ s u b ( V , C , L ) ( V ) - = ( C ) 02604 02605 # e n d i f 02606 02607 # i f d e f i n e d ( H A V E _ C H A R S E T _ u t f 8 m b 3 ) | | d e f i n e d ( H A V E _ C H A R S E T _ u t f 8 m b 4 ) 02608 02609 # d e f i n e M Y S Q L _ U N I V E R S A L _ C L I E N T _ C H A R S E T " u t f 8 " 02610 02611 # e l s e 02612 02613 # d e f i n e M Y S Q L _ U N I V E R S A L _ C L I E N T _ C H A R S E T M Y S Q L _ D E F A U L T _ C H A R S E T _ N A M E 02614 02615 # e n d i f 02616 02617 # i f d e f i n e d ( E M B E D D E D _ L I B R A R Y ) & & ! d e f i n e d ( H A V E _ E M B E D D E D _ P R I V I L E G E _ C O N T R O L ) 02618 02619 # d e f i n e N O _ E M B E D D E D _ A C C E S S _ C H E C K S 02620 02621 # e n d i f 02622 02623 # i f d e f H A V E _ D L O P E N 02624 02625 # i f d e f i n e d ( _ _ W I N _ _ ) 02626 02627 # d e f i n e d l s y m ( l i b , n a m e ) G e t P r o c A d d r e s s ( ( H M O D U L E ) l i b , n a m e ) 02628 02629 # d e f i n e d l o p e n ( l i b n a m e , u n u s e d ) L o a d L i b r a r y E x ( l i b n a m e , N U L L , 0 ) 02630 02631 # d e f i n e d l c l o s e ( l i b ) F r e e L i b r a r y ( ( H M O D U L E ) l i b ) 02632 02633 # e l i f d e f i n e d ( H A V E _ D L F C N _ H ) 02634 02635 # i n c l u d e < d l f c n . h > 02636 02637 # e n d i f 02638 02639 # e n d i f 02640 02641 / * F r e e B S D 2 . 2 . 2 d o e s n o t d e f i n e R T L D _ N O W ) * / 02642 02643 # i f n d e f R T L D _ N O W 02644 02645 # d e f i n e R T L D _ N O W 1 02646 02647 # e n d i f 02648 02649 # i f n d e f H A V E _ D L E R R O R 02650 02651 # d e f i n e d l e r r o r ( ) " " 02652 02653 # e n d i f 02654 02655 02656 02657 # i f n d e f _ _ N E T W A R E _ _ 02658 02659 / * 02660 02661 * I n c l u d e s t a n d a r d d e f i n i t i o n s o f o p e r a t o r n e w a n d d e l e t e . 02662 02663 * / 02664 02665 # i f d e f _ _ c p l u s p l u s 02666 02667 # i n c l u d e < n e w > 02668 02669 # e n d i f 02670 02671 # e l s e 02672 02673 / * 02674 02675 * D e f i n e p l a c e m e n t v e r s i o n s o f o p e r a t o r n e w a n d o p e r a t o r d e l e t e s i n c e 02676 02677 * w e d o n ' t h a v e < n e w > w h e n b u i l d i n g f o r N e t w a r e . 02678 02679 * / 02680 02681 # i f d e f _ _ c p l u s p l u s 02682 02683 i n l i n e v o i d * o p e r a t o r n e w ( s i z e _ t , v o i d * p t r ) { r e t u r n p t r ; } 02684 02685 i n l i n e v o i d * o p e r a t o r n e w [ ] ( s i z e _ t , v o i d * p t r ) { r e t u r n p t r ; } 02686 02687 i n l i n e v o i d o p e r a t o r d e l e t e ( v o i d * , v o i d * ) { / * D o n o t h i n g * / } 02688 02689 i n l i n e v o i d o p e r a t o r d e l e t e [ ] ( v o i d * , v o i d * ) { / * D o n o t h i n g * / } 02690 02691 # e n d i f 02692 02693 # e n d i f 02694 02695 / * L e n g t h o f d e c i m a l n u m b e r r e p r e s e n t e d b y I N T 3 2 . * / 02696 02697 # d e f i n e M Y _ I N T 3 2 _ N U M _ D E C I M A L _ D I G I T S 1 1 02698 02699 / * L e n g t h o f d e c i m a l n u m b e r r e p r e s e n t e d b y I N T 6 4 . * / 02700 02701 # d e f i n e M Y _ I N T 6 4 _ N U M _ D E C I M A L _ D I G I T S 2 1 02702 02703 / * D e f i n e s o m e u s e f u l g e n e r a l m a c r o s ( s h o u l d b e d o n e a f t e r a l l h e a d e r s ) . * / 02704 02705 # i f ! d e f i n e d ( m a x ) 02706 02707 # d e f i n e m a x ( a , b ) ( ( a ) > ( b ) ? ( a ) : ( b ) ) 02708 02709 # d e f i n e m i n ( a , b ) ( ( a ) < ( b ) ? ( a ) : ( b ) ) 02710 02711 # e n d i f 02712 02713 / * 02714 02715 O n l y L i n u x i s k n o w n t o n e e d a n e x p l i c i t s y n c o f t h e d i r e c t o r y t o m a k e s u r e a 02716 02717 f i l e c r e a t i o n / d e l e t i o n / r e n a m i n g i n ( f r o m , t o ) t h i s d i r e c t o r y d u r a b l e . 02718 02719 * / 02720 02721 # i f d e f T A R G E T _ O S _ L I N U X 02722 02723 # d e f i n e N E E D _ E X P L I C I T _ S Y N C _ D I R 1 02724 02725 # e l s e 02726 02727 / * 02728 02729 O n l i n u x d e f a u l t r w l o c k s c h e d u l i n g p o l i c y i s g o o d e n o u g h f o r 02730 02731 w a i t i n g _ t h r e a d s . c , o n o t h e r s y s t e m s u s e o u r s p e c i a l i m p l e m e n t a t i o n 02732 02733 ( w h i c h i s s l o w e r ) . 02734 02735 Q Q p e r h a p s t h i s s h o u l d b e t e s t e d i n c o n f i g u r e ? h o w ? 02736 02737 * / 02738 02739 # d e f i n e W T _ R W L O C K S _ U S E _ M U T E X E S 1 02740 02741 # e n d i f 02742 02743 # i f ! d e f i n e d ( _ _ c p l u s p l u s ) & & ! d e f i n e d ( b o o l ) 02744 02745 # d e f i n e b o o l I n _ C _ y o u _ s h o u l d _ u s e _ m y _ b o o l _ i n s t e a d ( ) 02746 02747 # e n d i f 02748 02749 / * P r o v i d e _ _ f u n c _ _ m a c r o d e f i n i t i o n f o r p l a t f o r m s t h a t m i s s i t . * / 02750 02751 # i f _ _ S T D C _ V E R S I O N _ _ < 1 9 9 9 0 1 L 02752 02753 # i f _ _ G N U C _ _ > = 2 02754 02755 # d e f i n e _ _ f u n c _ _ _ _ F U N C T I O N _ _ 02756 02757 # e l s e 02758 02759 # d e f i n e _ _ f u n c _ _ " < u n k n o w n > " 02760 02761 # e n d i f 02762 02763 # e l i f d e f i n e d ( _ M S C _ V E R ) 02764 02765 # i f _ M S C _ V E R < 1 3 0 0 02766 02767 # d e f i n e _ _ f u n c _ _ " < u n k n o w n > " 02768 02769 # e l s e 02770 02771 # d e f i n e _ _ f u n c _ _ _ _ F U N C T I O N _ _ 02772 02773 # e n d i f 02774 02775 # e l i f d e f i n e d ( _ _ B O R L A N D C _ _ ) 02776 02777 # d e f i n e _ _ f u n c _ _ _ _ F U N C _ _ 02778 02779 # e l s e 02780 02781 # d e f i n e _ _ f u n c _ _ " < u n k n o w n > " 02782 02783 # e n d i f 02784 02785 # i f n d e f H A V E _ R I N T 02786 02787 / * * 02788 02789 A l l i n t e g e r s u p t o t h i s n u m b e r c a n b e r e p r e s e n t e d e x a c t l y a s d o u b l e p r e c i s i o n 02790 02791 v a l u e s ( D B L _ M A N T _ D I G = = 5 3 f o r I E E E 7 5 4 h a r d w a r e ) . 02792 02793 * / 02794 02795 # d e f i n e M A X _ E X A C T _ I N T E G E R ( ( 1 L L < < D B L _ M A N T _ D I G ) - 1 ) 02796 02797 / * * 02798 02799 r i n t ( 3 ) i m p l e m e n t a t i o n f o r p l a t f o r m s t h a t d o n o t h a v e i t . 02800 02801 A l w a y s r o u n d s t o t h e n e a r e s t i n t e g e r w i t h t i e s b e i n g r o u n d e d t o t h e n e a r e s t 02802 02803 e v e n i n t e g e r t o m i m i c g l i b c ' s r i n t ( ) b e h a v i o r i n t h e " r o u n d - t o - n e a r e s t " 02804 02805 F P U m o d e . H a r d w a r e - s p e c i f i c o p t i m i z a t i o n s a r e p o s s i b l e ( f r n d i n t o n x 8 6 ) . 02806 02807 U n l i k e t h i s i m p l e m e n t a t i o n , h a r d w a r e w i l l a l s o h o n o r t h e F P U r o u n d i n g m o d e . 02808 02809 * / 02810 02811 s t a t i c i n l i n e d o u b l e r i n t ( d o u b l e x ) 02812 02813 { 02814 02815 d o u b l e f , i ; 02816 02817 f = m o d f ( x , & i ) ; 02818 02819 / * 02820 02821 A l l d o u b l e s w i t h a b s o l u t e v a l u e s > M A X _ E X A C T _ I N T E G E R a r e e v e n a n y w a y , 02822 02823 n o n e e d t o c h e c k i t . 02824 02825 * / 02826 02827 i f ( x > 0 . 0 ) 02828 02829 i + = ( d o u b l e ) ( ( f > 0 . 5 ) | | ( f = = 0 . 5 & & 02830 02831 i < = ( d o u b l e ) M A X _ E X A C T _ I N T E G E R & & 02832 02833 ( l o n g l o n g ) i % 2 ) ) ; 02834 02835 e l s e 02836 02837 i - = ( d o u b l e ) ( ( f < - 0 . 5 ) | | ( f = = - 0 . 5 & & 02838 02839 i > = ( d o u b l e ) - M A X _ E X A C T _ I N T E G E R & & 02840 02841 ( l o n g l o n g ) i % 2 ) ) ; 02842 02843 r e t u r n i ; 02844 02845 } 02846 02847 # e n d i f / * H A V E _ R I N T * / 02848 02849 / * 02850 02851 M Y S Q L _ P L U G I N _ I M P O R T m a c r o i s u s e d t o e x p o r t m y s q l d d a t a 02852 02853 ( i . e v a r i a b l e s ) f o r u s a g e i n s t o r a g e e n g i n e l o a d a b l e p l u g i n s . 02854 02855 O u t s i d e o f W i n d o w s , i t i s d u m m y . 02856 02857 * / 02858 02859 # i f n d e f M Y S Q L _ P L U G I N _ I M P O R T 02860 02861 # i f ( d e f i n e d ( _ W I N 3 2 ) & & d e f i n e d ( M Y S Q L _ D Y N A M I C _ P L U G I N ) ) 02862 02863 # d e f i n e M Y S Q L _ P L U G I N _ I M P O R T _ _ d e c l s p e c ( d l l i m p o r t ) 02864 02865 # e l s e 02866 02867 # d e f i n e M Y S Q L _ P L U G I N _ I M P O R T 02868 02869 # e n d i f 02870 02871 # e n d i f 02872 02873 # e n d i f / * m y _ g l o b a l _ h * / 02874 02875