CMGDK r49-rc2
K:/CMGDKv18/SDK/Source/SQL/MySQL/include/my_global.h
浏览该文件的文档。
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  
 全部  名字空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义