CMGDK r49-rc2
K:/CMGDKv18/SDK/Source/SQL/MySQL/include/m_string.h
浏览该文件的文档。
00001 / *   C o p y r i g h t   ( C )   2 0 0 0   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 e r e   m a y   b e   p r o l e m s   i n c l u d e   a l l   o f   t h e e s e .   T r y   t o   t e s t   i n 
00024  
00025        c o n f i g u r e   w i t h   o n e s   a r e   n e e d e d ?   * / 
00026  
00027  / *     T h i s   i s   n e e d e d   f o r   t h e   d e f i n i t i o n s   o f   s t r c h r . . .   o n   s o l a r i s   * / 
00028  
00029  # i f n d e f   _ m _ s t r i n g _ h 
00030  
00031  # d e f i n e   _ m _ s t r i n g _ h 
00032  
00033  # i f n d e f   _ _ U S E _ G N U 
00034  
00035  # d e f i n e   _ _ U S E _ G N U               / *   W e   w a n t   t o   u s e   s t p c p y   * / 
00036  
00037  # e n d i f 
00038  
00039  # i f   d e f i n e d ( H A V E _ S T R I N G S _ H ) 
00040  
00041  # i n c l u d e   < s t r i n g s . h > 
00042  
00043  # e n d i f 
00044  
00045  # i f   d e f i n e d ( H A V E _ S T R I N G _ H ) 
00046  
00047  # i n c l u d e   < s t r i n g . h > 
00048  
00049  # e n d i f 
00050  
00051  / *   n e e d   b y   m y _ v s n p r i n t f   * / 
00052  
00053  # i n c l u d e   < s t d a r g . h >   
00054  
00055  # i f d e f   _ A I X 
00056  
00057  # u n d e f   H A V E _ B C M P 
00058  
00059  # e n d i f 
00060  
00061  / *     T h i s   i s   n e e d e d   f o r   t h e   d e f i n i t i o n s   o f   b z e r o . . .   o n   s o l a r i s   * / 
00062  
00063  # i f   d e f i n e d ( H A V E _ S T R I N G S _ H ) 
00064  
00065  # i n c l u d e   < s t r i n g s . h > 
00066  
00067  # e n d i f 
00068  
00069  / *     T h i s   i s   n e e d e d   f o r   t h e   d e f i n i t i o n s   o f   m e m c p y . . .   o n   s o l a r i s   * / 
00070  
00071  # i f   d e f i n e d ( H A V E _ M E M O R Y _ H )   & &   ! d e f i n e d ( _ _ c p l u s p l u s ) 
00072  
00073  # i n c l u d e   < m e m o r y . h > 
00074  
00075  # e n d i f 
00076  
00077  # i f   ! d e f i n e d ( H A V E _ M E M C P Y )   & &   ! d e f i n e d ( H A V E _ M E M M O V E ) 
00078  
00079  #   d e f i n e   m e m c p y ( d ,   s ,   n )     b c o p y   ( ( s ) ,   ( d ) ,   ( n ) ) 
00080  
00081  #   d e f i n e   m e m s e t ( A , C , B )         b f i l l ( ( A ) , ( B ) , ( C ) ) 
00082  
00083  #   d e f i n e   m e m m o v e ( d ,   s ,   n )   b m o v e   ( ( d ) ,   ( s ) ,   ( n ) ) 
00084  
00085  # e l i f   d e f i n e d ( H A V E _ M E M M O V E ) 
00086  
00087  #   d e f i n e   b m o v e ( d ,   s ,   n )       m e m m o v e ( ( d ) ,   ( s ) ,   ( n ) ) 
00088  
00089  # e l s e 
00090  
00091  #   d e f i n e   m e m m o v e ( d ,   s ,   n )   b m o v e ( ( d ) ,   ( s ) ,   ( n ) )   / *   o u r   b m o v e   * / 
00092  
00093  # e n d i f 
00094  
00095  / *   U n i x w a r e   7   * / 
00096  
00097  # i f   ! d e f i n e d ( H A V E _ B F I L L ) 
00098  
00099  #   d e f i n e   b f i l l ( A , B , C )                       m e m s e t ( ( A ) , ( C ) , ( B ) ) 
00100  
00101  #   d e f i n e   b m o v e _ a l i g n ( A , B , C )         m e m c p y ( ( A ) , ( B ) , ( C ) ) 
00102  
00103  # e n d i f 
00104  
00105  # i f   ! d e f i n e d ( H A V E _ B C M P ) 
00106  
00107  #   d e f i n e   b c o p y ( s ,   d ,   n )       m e m c p y ( ( d ) ,   ( s ) ,   ( n ) ) 
00108  
00109  #   d e f i n e   b c m p ( A , B , C )         m e m c m p ( ( A ) , ( B ) , ( C ) ) 
00110  
00111  #   d e f i n e   b z e r o ( A , B )       m e m s e t ( ( A ) , 0 , ( B ) ) 
00112  
00113  #   d e f i n e   b m o v e _ a l i g n ( A , B , C )           m e m c p y ( ( A ) , ( B ) , ( C ) ) 
00114  
00115  # e n d i f 
00116  
00117  # i f   d e f i n e d ( _ _ c p l u s p l u s ) 
00118  
00119  e x t e r n   " C "   { 
00120  
00121  # e n d i f 
00122  
00123  / * 
00124  
00125      m y _ s t r _ m a l l o c ( )   a n d   m y _ s t r _ f r e e ( )   a r e   a s s i g n e d   t o   i m p l e m e n t a t i o n s   i n 
00126  
00127      s t r i n g s / a l l o c . c ,   b u t   c a n   b e   o v e r r i d d e n   i n   t h e   c a l l i n g   p r o g r a m . 
00128  
00129    * / 
00130  
00131  e x t e r n   v o i d   * ( * m y _ s t r _ m a l l o c ) ( s i z e _ t ) ; 
00132  
00133  e x t e r n   v o i d   ( * m y _ s t r _ f r e e ) ( v o i d   * ) ; 
00134  
00135  # i f   d e f i n e d ( H A V E _ S T P C P Y ) 
00136  
00137  # d e f i n e   s t r m o v ( A , B )   s t p c p y ( ( A ) , ( B ) ) 
00138  
00139  # i f n d e f   s t p c p y 
00140  
00141  e x t e r n   c h a r   * s t p c p y ( c h a r   * ,   c o n s t   c h a r   * ) ;     / *   F o r   A I X   w i t h   g c c   2 . 9 5 . 3   * / 
00142  
00143  # e n d i f 
00144  
00145  # e n d i f 
00146  
00147  / *   D e c l a r e d   i n   i n t 2 s t r ( )   * / 
00148  
00149  e x t e r n   c h a r   N E A R   _ d i g _ v e c _ u p p e r [ ] ; 
00150  
00151  e x t e r n   c h a r   N E A R   _ d i g _ v e c _ l o w e r [ ] ; 
00152  
00153  # i f d e f   B A D _ S T R I N G _ C O M P I L E R 
00154  
00155  # d e f i n e   s t r m o v ( A , B )     ( m e m c c p y ( A , B , 0 , I N T _ M A X ) - 1 ) 
00156  
00157  # e l s e 
00158  
00159  # d e f i n e   s t r m o v _ o v e r l a p p ( A , B )   s t r m o v ( A , B ) 
00160  
00161  # d e f i n e   s t r m a k e _ o v e r l a p p ( A , B , C )   s t r m a k e ( A , B , C ) 
00162  
00163  # e n d i f 
00164  
00165  # i f d e f   B A D _ M E M C P Y           / *   P r o b l e m   w i t h   g c c   o n   A l p h a   * / 
00166  
00167  # d e f i n e   m e m c p y _ f i x e d ( A , B , C )   b m o v e ( ( A ) , ( B ) , ( C ) ) 
00168  
00169  # e l s e 
00170  
00171  # d e f i n e   m e m c p y _ f i x e d ( A , B , C )   m e m c p y ( ( A ) , ( B ) , ( C ) ) 
00172  
00173  # e n d i f 
00174  
00175  # i f   ( ! d e f i n e d ( U S E _ B M O V E 5 1 2 )   | |   d e f i n e d ( H A V E _ p u r i f y ) )   & &   ! d e f i n e d ( b m o v e 5 1 2 ) 
00176  
00177  # d e f i n e   b m o v e 5 1 2 ( A , B , C )   m e m c p y ( A , B , C ) 
00178  
00179  # e n d i f 
00180  
00181      / *   P r o t o t y p e s   f o r   s t r i n g   f u n c t i o n s   * / 
00182  
00183  # i f   ! d e f i n e d ( b f i l l )   & &   ! d e f i n e d ( H A V E _ B F I L L ) 
00184  
00185  e x t e r n     v o i d   b f i l l ( u c h a r   * d s t , s i z e _ t   l e n , p c h a r   f i l l ) ; 
00186  
00187  # e n d i f 
00188  
00189  # i f   ! d e f i n e d ( b z e r o )   & &   ! d e f i n e d ( H A V E _ B Z E R O ) 
00190  
00191  e x t e r n     v o i d   b z e r o ( u c h a r   *   d s t , s i z e _ t   l e n ) ; 
00192  
00193  # e n d i f 
00194  
00195  # i f   ! d e f i n e d ( b c m p )   & &   ! d e f i n e d ( H A V E _ B C M P ) 
00196  
00197  e x t e r n     s i z e _ t   b c m p ( c o n s t   u c h a r   * s 1 , c o n s t   u c h a r   * s 2 , s i z e _ t   l e n ) ; 
00198  
00199  # e n d i f 
00200  
00201  # i f d e f   H A V E _ p u r i f y 
00202  
00203  e x t e r n     s i z e _ t   m y _ b c m p ( c o n s t   u c h a r   * s 1 , c o n s t   u c h a r   * s 2 , s i z e _ t   l e n ) ; 
00204  
00205  # u n d e f   b c m p 
00206  
00207  # d e f i n e   b c m p ( A , B , C )   m y _ b c m p ( ( A ) , ( B ) , ( C ) ) 
00208  
00209  # d e f i n e   b z e r o _ i f _ p u r i f y ( A , B )   b z e r o ( A , B ) 
00210  
00211  # e l s e 
00212  
00213  # d e f i n e   b z e r o _ i f _ p u r i f y ( A , B ) 
00214  
00215  # e n d i f   / *   H A V E _ p u r i f y   * / 
00216  
00217  # 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 ) 
00218  
00219  # d e f i n e   L I N T _ I N I T _ S T R U C T ( v a r )   b z e r o ( & v a r ,   s i z e o f ( v a r ) )   / *   N o   u n i n i t i a l i z e - w a r n i n g   * / 
00220  
00221  # e l s e 
00222  
00223  # d e f i n e   L I N T _ I N I T _ S T R U C T ( v a r ) 
00224  
00225  # e n d i f 
00226  
00227  # i f n d e f   b m o v e 5 1 2 
00228  
00229  e x t e r n     v o i d   b m o v e 5 1 2 ( u c h a r   * d s t , c o n s t   u c h a r   * s r c , s i z e _ t   l e n ) ; 
00230  
00231  # e n d i f 
00232  
00233  # i f   ! d e f i n e d ( H A V E _ B M O V E )   & &   ! d e f i n e d ( b m o v e ) 
00234  
00235  e x t e r n     v o i d   b m o v e ( u u c h a r   * d s t ,   c o n s t   u c h a r   * s r c , s i z e _ t   l e n ) ; 
00236  
00237  # e n d i f 
00238  
00239  e x t e r n     v o i d   b m o v e _ u p p ( u c h a r   * d s t , c o n s t   u c h a r   * s r c , s i z e _ t   l e n ) ; 
00240  
00241  e x t e r n     v o i d   b c h a n g e ( u c h a r   * d s t , s i z e _ t   o l d _ l e n , c o n s t   u c h a r   * s r c , 
00242  
00243                    s i z e _ t   n e w _ l e n , s i z e _ t   t o t _ l e n ) ; 
00244  
00245  e x t e r n     v o i d   s t r a p p e n d ( c h a r   * s , s i z e _ t   l e n , p c h a r   f i l l ) ; 
00246  
00247  e x t e r n     c h a r   * s t r e n d ( c o n s t   c h a r   * s ) ; 
00248  
00249  e x t e r n     c h a r   * s t r c e n d ( c o n s t   c h a r   * ,   p c h a r ) ; 
00250  
00251  e x t e r n     c h a r   * s t r f i e l d ( c h a r   * s r c , i n t   f i e l d s , i n t   c h a r s , i n t   b l a n k s , 
00252  
00253                    i n t   t a b c h ) ; 
00254  
00255  e x t e r n     c h a r   * s t r f i l l ( c h a r   *   s , s i z e _ t   l e n , p c h a r   f i l l ) ; 
00256  
00257  e x t e r n     s i z e _ t   s t r i n s t r ( c o n s t   c h a r   * s t r , c o n s t   c h a r   * s e a r c h ) ; 
00258  
00259  e x t e r n     s i z e _ t   r _ s t r i n s t r ( c o n s t   c h a r   * s t r ,   s i z e _ t   f r o m ,   c o n s t   c h a r   * s e a r c h ) ; 
00260  
00261  e x t e r n     c h a r   * s t r k e y ( c h a r   * d s t , c h a r   * h e a d , c h a r   * t a i l , c h a r   * f l a g s ) ; 
00262  
00263  e x t e r n     c h a r   * s t r m a k e ( c h a r   * d s t , c o n s t   c h a r   * s r c , s i z e _ t   l e n g t h ) ; 
00264  
00265  # i f n d e f   s t r m a k e _ o v e r l a p p 
00266  
00267  e x t e r n     c h a r   * s t r m a k e _ o v e r l a p p ( c h a r   * d s t , c o n s t   c h a r   * s r c ,   s i z e _ t   l e n g t h ) ; 
00268  
00269  # e n d i f 
00270  
00271  # i f n d e f   s t r m o v 
00272  
00273  e x t e r n     c h a r   * s t r m o v ( c h a r   * d s t , c o n s t   c h a r   * s r c ) ; 
00274  
00275  # e n d i f 
00276  
00277  e x t e r n     c h a r   * s t r n m o v ( c h a r   * d s t , c o n s t   c h a r   * s r c , s i z e _ t   n ) ; 
00278  
00279  e x t e r n     c h a r   * s t r s u f f ( c o n s t   c h a r   * s r c , c o n s t   c h a r   * s u f f i x ) ; 
00280  
00281  e x t e r n     c h a r   * s t r c o n t ( c o n s t   c h a r   * s r c , c o n s t   c h a r   * s e t ) ; 
00282  
00283  e x t e r n     c h a r   * s t r x c a t   _ V A R A R G S ( ( c h a r   * d s t , c o n s t   c h a r   * s r c ,   . . . ) ) ; 
00284  
00285  e x t e r n     c h a r   * s t r x m o v   _ V A R A R G S ( ( c h a r   * d s t , c o n s t   c h a r   * s r c ,   . . . ) ) ; 
00286  
00287  e x t e r n     c h a r   * s t r x c p y   _ V A R A R G S ( ( c h a r   * d s t , c o n s t   c h a r   * s r c ,   . . . ) ) ; 
00288  
00289  e x t e r n     c h a r   * s t r x n c a t   _ V A R A R G S ( ( c h a r   * d s t , s i z e _ t   l e n ,   c o n s t   c h a r   * s r c ,   . . . ) ) ; 
00290  
00291  e x t e r n     c h a r   * s t r x n m o v   _ V A R A R G S ( ( c h a r   * d s t , s i z e _ t   l e n ,   c o n s t   c h a r   * s r c ,   . . . ) ) ; 
00292  
00293  e x t e r n     c h a r   * s t r x n c p y   _ V A R A R G S ( ( c h a r   * d s t , s i z e _ t   l e n ,   c o n s t   c h a r   * s r c ,   . . . ) ) ; 
00294  
00295  / *   P r o t o t y p e s   o f   n o r m a l   s t r i n g f u n c t i o n s   ( w i t h   m a y   o u r s )   * / 
00296  
00297  # i f d e f   W A N T _ S T R I N G _ P R O T O T Y P E S 
00298  
00299  e x t e r n   c h a r   * s t r c a t ( c h a r   * ,   c o n s t   c h a r   * ) ; 
00300  
00301  e x t e r n   c h a r   * s t r c h r ( c o n s t   c h a r   * ,   p c h a r ) ; 
00302  
00303  e x t e r n   c h a r   * s t r r c h r ( c o n s t   c h a r   * ,   p c h a r ) ; 
00304  
00305  e x t e r n   c h a r   * s t r c p y ( c h a r   * ,   c o n s t   c h a r   * ) ; 
00306  
00307  e x t e r n   i n t   s t r c m p ( c o n s t   c h a r   * ,   c o n s t   c h a r   * ) ; 
00308  
00309  # i f n d e f   _ _ G N U C _ _ 
00310  
00311  e x t e r n   s i z e _ t   s t r l e n ( c o n s t   c h a r   * ) ; 
00312  
00313  # e n d i f 
00314  
00315  # e n d i f 
00316  
00317  # i f n d e f   H A V E _ S T R N L E N 
00318  
00319  e x t e r n   s i z e _ t   s t r n l e n ( c o n s t   c h a r   * s ,   s i z e _ t   n ) ; 
00320  
00321  # e n d i f 
00322  
00323  # i f   ! d e f i n e d ( _ _ c p l u s p l u s ) 
00324  
00325  # i f n d e f   H A V E _ S T R P B R K 
00326  
00327  e x t e r n   c h a r   * s t r p b r k ( c o n s t   c h a r   * ,   c o n s t   c h a r   * ) ; 
00328  
00329  # e n d i f 
00330  
00331  # i f n d e f   H A V E _ S T R S T R 
00332  
00333  e x t e r n   c h a r   * s t r s t r ( c o n s t   c h a r   * ,   c o n s t   c h a r   * ) ; 
00334  
00335  # e n d i f 
00336  
00337  # e n d i f 
00338  
00339  e x t e r n   i n t   i s _ p r e f i x ( c o n s t   c h a r   * ,   c o n s t   c h a r   * ) ; 
00340  
00341  / *   C o n v e r s i o n   r o u t i n e s   * / 
00342  
00343  t y p e d e f   e n u m   { 
00344  
00345      M Y _ G C V T _ A R G _ F L O A T , 
00346  
00347      M Y _ G C V T _ A R G _ D O U B L E 
00348  
00349  }   m y _ g c v t _ a r g _ t y p e ; 
00350  
00351  d o u b l e   m y _ s t r t o d ( c o n s t   c h a r   * s t r ,   c h a r   * * e n d ,   i n t   * e r r o r ) ; 
00352  
00353  d o u b l e   m y _ a t o f ( c o n s t   c h a r   * n p t r ) ; 
00354  
00355  s i z e _ t   m y _ f c v t ( d o u b l e   x ,   i n t   p r e c i s i o n ,   c h a r   * t o ,   m y _ b o o l   * e r r o r ) ; 
00356  
00357  s i z e _ t   m y _ g c v t ( d o u b l e   x ,   m y _ g c v t _ a r g _ t y p e   t y p e ,   i n t   w i d t h ,   c h a r   * t o , 
00358  
00359                                m y _ b o o l   * e r r o r ) ; 
00360  
00361  # d e f i n e   N O T _ F I X E D _ D E C   3 1 
00362  
00363  / * 
00364  
00365      T h e   l o n g e s t   s t r i n g   m y _ f c v t   c a n   r e t u r n   i s   3 1 1   +   " p r e c i s i o n "   b y t e s . 
00366  
00367      H e r e   w e   a s s u m e   t h a t   w e   n e v e r   c a l   m y _ f c v t ( )   w i t h   p r e c i s i o n   > =   N O T _ F I X E D _ D E C 
00368  
00369      ( +   1   b y t e   f o r   t h e   t e r m i n a t i n g   ' \ 0 ' ) . 
00370  
00371  * / 
00372  
00373  # d e f i n e   F L O A T I N G _ P O I N T _ B U F F E R   ( 3 1 1   +   N O T _ F I X E D _ D E C ) 
00374  
00375  / * 
00376  
00377      W e   w a n t   t o   u s e   t h e   ' e '   f o r m a t   i n   s o m e   c a s e s   e v e n   i f   w e   h a v e   e n o u g h   s p a c e 
00378  
00379      f o r   t h e   ' f '   o n e   j u s t   t o   m i m i c   s p r i n t f ( " % . 1 5 g " )   b e h a v i o r   f o r   l a r g e   i n t e g e r s , 
00380  
00381      a n d   t o   i m p r o v e   i t   f o r   n u m b e r s   <   1 0 ^ ( - 4 ) . 
00382  
00383      T h a t   i s ,   f o r   | x |   <   1   w e   r e q u i r e   | x |   > =   1 0 ^ ( - 1 5 ) ,   a n d   f o r   | x |   >   1   w e   r e q u i r e 
00384  
00385      i t   t o   b e   i n t e g e r   a n d   b e   < =   1 0 ^ D B L _ D I G   f o r   t h e   ' f '   f o r m a t   t o   b e   u s e d . 
00386  
00387      W e   d o n ' t   l o s e   p r e c i s i o n ,   b u t   m a k e   c a s e s   l i k e   " 1 e 2 0 0 "   o r   " 0 . 0 0 0 0 1 "   l o o k   n i c e r . 
00388  
00389  * / 
00390  
00391  # d e f i n e   M A X _ D E C P T _ F O R _ F _ F O R M A T   D B L _ D I G 
00392  
00393  / * 
00394  
00395      T h e   m a x i m u m   p o s s i b l e   f i e l d   w i d t h   f o r   m y _ g c v t ( )   c o n v e r s i o n . 
00396  
00397      ( D B L _ D I G   +   2 )   s i g n i f i c a n t   d i g i t s   +   s i g n   +   " . "   +   ( " e - N N N "   o r 
00398  
00399      M A X _ D E C P T _ F O R _ F _ F O R M A T   z e r o s   f o r   c a s e s   w h e n   | x | < 1   a n d   t h e   ' f '   f o r m a t   i s   u s e d ) . 
00400  
00401  * / 
00402  
00403  # d e f i n e   M Y _ G C V T _ M A X _ F I E L D _ W I D T H   ( D B L _ D I G   +   4   +   m a x ( 5 ,   M A X _ D E C P T _ F O R _ F _ F O R M A T ) ) 
00404  
00405      
00406  
00407  e x t e r n   c h a r   * l l s t r ( l o n g l o n g   v a l u e , c h a r   * b u f f ) ; 
00408  
00409  e x t e r n   c h a r   * u l l s t r ( l o n g l o n g   v a l u e , c h a r   * b u f f ) ; 
00410  
00411  # i f n d e f   H A V E _ S T R T O U L 
00412  
00413  e x t e r n   l o n g   s t r t o l ( c o n s t   c h a r   * s t r ,   c h a r   * * p t r ,   i n t   b a s e ) ; 
00414  
00415  e x t e r n   u l o n g   s t r t o u l ( c o n s t   c h a r   * s t r ,   c h a r   * * p t r ,   i n t   b a s e ) ; 
00416  
00417  # e n d i f 
00418  
00419  e x t e r n   c h a r   * i n t 2 s t r ( l o n g   v a l ,   c h a r   * d s t ,   i n t   r a d i x ,   i n t   u p c a s e ) ; 
00420  
00421  e x t e r n   c h a r   * i n t 1 0 _ t o _ s t r ( l o n g   v a l , c h a r   * d s t , i n t   r a d i x ) ; 
00422  
00423  e x t e r n   c h a r   * s t r 2 i n t ( c o n s t   c h a r   * s r c , i n t   r a d i x , l o n g   l o w e r , l o n g   u p p e r , 
00424  
00425                l o n g   * v a l ) ; 
00426  
00427  l o n g l o n g   m y _ s t r t o l l 1 0 ( c o n s t   c h a r   * n p t r ,   c h a r   * * e n d p t r ,   i n t   * e r r o r ) ; 
00428  
00429  # i f   S I Z E O F _ L O N G   = =   S I Z E O F _ L O N G _ L O N G 
00430  
00431  # d e f i n e   l l 2 s t r ( A , B , C , D )   i n t 2 s t r ( ( A ) , ( B ) , ( C ) , ( D ) ) 
00432  
00433  # d e f i n e   l o n g l o n g 2 s t r ( A , B , C )   i n t 2 s t r ( ( A ) , ( B ) , ( C ) , 1 ) 
00434  
00435  # d e f i n e   l o n g l o n g 1 0 _ t o _ s t r ( A , B , C )   i n t 1 0 _ t o _ s t r ( ( A ) , ( B ) , ( C ) ) 
00436  
00437  # u n d e f   s t r t o l l 
00438  
00439  # d e f i n e   s t r t o l l ( A , B , C )   s t r t o l ( ( A ) , ( B ) , ( C ) ) 
00440  
00441  # d e f i n e   s t r t o u l l ( A , B , C )   s t r t o u l ( ( A ) , ( B ) , ( C ) ) 
00442  
00443  # i f n d e f   H A V E _ S T R T O U L L 
00444  
00445  # d e f i n e   H A V E _ S T R T O U L L 
00446  
00447  # e n d i f 
00448  
00449  # i f n d e f   H A V E _ S T R T O L L 
00450  
00451  # d e f i n e   H A V E _ S T R T O L L 
00452  
00453  # e n d i f 
00454  
00455  # e l s e 
00456  
00457  # i f d e f   H A V E _ L O N G _ L O N G 
00458  
00459  e x t e r n   c h a r   * l l 2 s t r ( l o n g l o n g   v a l , c h a r   * d s t , i n t   r a d i x ,   i n t   u p c a s e ) ; 
00460  
00461  # d e f i n e   l o n g l o n g 2 s t r ( A , B , C )   l l 2 s t r ( ( A ) , ( B ) , ( C ) , 1 ) 
00462  
00463  e x t e r n   c h a r   * l o n g l o n g 1 0 _ t o _ s t r ( l o n g l o n g   v a l , c h a r   * d s t , i n t   r a d i x ) ; 
00464  
00465  # i f   ( ! d e f i n e d ( H A V E _ S T R T O U L L )   | |   d e f i n e d ( N O _ S T R T O L L _ P R O T O ) ) 
00466  
00467  e x t e r n   l o n g l o n g   s t r t o l l ( c o n s t   c h a r   * s t r ,   c h a r   * * p t r ,   i n t   b a s e ) ; 
00468  
00469  e x t e r n   u l o n g l o n g   s t r t o u l l ( c o n s t   c h a r   * s t r ,   c h a r   * * p t r ,   i n t   b a s e ) ; 
00470  
00471  # e n d i f 
00472  
00473  # e n d i f 
00474  
00475  # e n d i f 
00476  
00477  / *   m y _ v s n p r i n t f . c   * / 
00478  
00479  e x t e r n   s i z e _ t   m y _ v s n p r i n t f ( c h a r   * s t r ,   s i z e _ t   n , 
00480  
00481                                                        c o n s t   c h a r   * f o r m a t ,   v a _ l i s t   a p ) ; 
00482  
00483  e x t e r n   s i z e _ t   m y _ s n p r i n t f ( c h a r   * t o ,   s i z e _ t   n ,   c o n s t   c h a r   * f m t ,   . . . ) 
00484  
00485      A T T R I B U T E _ F O R M A T ( p r i n t f ,   3 ,   4 ) ; 
00486  
00487  # i f   d e f i n e d ( _ _ c p l u s p l u s ) 
00488  
00489  } 
00490  
00491  # e n d i f 
00492  
00493  / * 
00494  
00495      L E X _ S T R I N G   - -   a   p a i r   o f   a   C - s t r i n g   a n d   i t s   l e n g t h . 
00496  
00497      ( i t ' s   p a r t   o f   t h e   p l u g i n   A P I   a s   a   M Y S Q L _ L E X _ S T R I N G ) 
00498  
00499  * / 
00500  
00501  t y p e d e f   s t r u c t   s t _ m y s q l _ l e x _ s t r i n g   L E X _ S T R I N G ; 
00502  
00503  # d e f i n e   S T R I N G _ W I T H _ L E N ( X )   ( X ) ,   ( ( s i z e _ t )   ( s i z e o f ( X )   -   1 ) ) 
00504  
00505  # d e f i n e   U S T R I N G _ W I T H _ L E N ( X )   ( ( u c h a r * )   X ) ,   ( ( s i z e _ t )   ( s i z e o f ( X )   -   1 ) ) 
00506  
00507  # d e f i n e   C _ S T R I N G _ W I T H _ L E N ( X )   ( ( c h a r   * )   ( X ) ) ,   ( ( s i z e _ t )   ( s i z e o f ( X )   -   1 ) ) 
00508  
00509  / *   A   v a r i a n t   w i t h   c o n s t   * / 
00510  
00511  s t r u c t   s t _ m y s q l _ c o n s t _ l e x _ s t r i n g 
00512  
00513  { 
00514  
00515      c o n s t   c h a r   * s t r ; 
00516  
00517      s i z e _ t   l e n g t h ; 
00518  
00519  } ; 
00520  
00521  t y p e d e f   s t r u c t   s t _ m y s q l _ c o n s t _ l e x _ s t r i n g   L E X _ C S T R I N G ; 
00522  
00523  / *   A   v a r i a n t   w i t h   c o n s t   a n d   u n s i g n e d   * / 
00524  
00525  s t r u c t   s t _ m y s q l _ c o n s t _ u n s i g n e d _ l e x _ s t r i n g 
00526  
00527  { 
00528  
00529      c o n s t   u c h a r   * s t r ; 
00530  
00531      s i z e _ t   l e n g t h ; 
00532  
00533  } ; 
00534  
00535  t y p e d e f   s t r u c t   s t _ m y s q l _ c o n s t _ u n s i g n e d _ l e x _ s t r i n g   L E X _ C U S T R I N G ; 
00536  
00537  / *   S P A C E _ I N T   i s   a   w o r d   t h a t   c o n t a i n s   o n l y   s p a c e s   * / 
00538  
00539  # i f   S I Z E O F _ I N T   = =   4 
00540  
00541  # d e f i n e   S P A C E _ I N T   0 x 2 0 2 0 2 0 2 0 
00542  
00543  # e l i f   S I Z E O F _ I N T   = =   8 
00544  
00545  # d e f i n e   S P A C E _ I N T   0 x 2 0 2 0 2 0 2 0 2 0 2 0 2 0 2 0 
00546  
00547  # e l s e 
00548  
00549  # e r r o r   d e f i n e   t h e   a p p r o p r i a t e   c o n s t a n t   f o r   a   w o r d   f u l l   o f   s p a c e s 
00550  
00551  # e n d i f 
00552  
00553  / * * 
00554  
00555      S k i p   t r a i l i n g   s p a c e . 
00556  
00557      O n   m o s t   s y s t e m s   r e a d i n g   m e m o r y   i n   l a r g e r   c h u n k s   ( i d e a l l y   e q u a l   t o   t h e   s i z e   o f 
00558  
00559      t h e   c h i n k s   t h a t   t h e   m a c h i n e   p h y s i c a l l y   r e a d s   f r o m   m e m o r y )   c a u s e s   f e w e r   m e m o r y 
00560  
00561      a c c e s s   l o o p s   a n d   h e n c e   i n c r e a s e d   p e r f o r m a n c e . 
00562  
00563      T h i s   i s   w h y   t h e   ' i n t '   t y p e   i s   u s e d   :   i t ' s   c l o s e s t   t o   t h a t   ( a c c o r d i n g   t o   h o w 
00564  
00565      i t ' s   d e f i n e d   i n   C ) . 
00566  
00567      S o   w h e n   w e   d e t e r m i n e   t h e   a m o u n t   o f   w h i t e s p a c e   a t   t h e   e n d   o f   a   s t r i n g   w e   d o 
00568  
00569      t h e   f o l l o w i n g   : 
00570  
00571          1 .   W e   d i v i d e   t h e   s t r i n g   i n t o   3   z o n e s   : 
00572  
00573              a )   f r o m   t h e   s t a r t   o f   t h e   s t r i n g   ( _ _ s t a r t )   t o   t h e   f i r s t   m u l t i p l e 
00574  
00575                  o f   s i z e o f ( i n t )     ( _ _ s t a r t _ w o r d s ) 
00576  
00577              b )   f r o m   t h e   e n d   o f   t h e   s t r i n g   ( _ _ e n d )   t o   t h e   l a s t   m u l t i p l e   o f   s i z e o f ( i n t ) 
00578  
00579                  ( _ _ e n d _ w o r d s ) 
00580  
00581              c )   a   z o n e   t h a t   i s   a l i g n e d   t o   s i z e o f ( i n t )   a n d   c a n   b e   s a f e l y   a c c e s s e d 
00582  
00583                  t h r o u g h   a n   i n t   * 
00584  
00585          2 .   W e   s t a r t   c o m p a r i n g   b a c k w a r d s   f r o m   ( c )   c h a r - b y - c h a r .   I f   a l l   w e   f i n d   i s 
00586  
00587                s p a c e   t h e n   w e   c o n t i n u e 
00588  
00589          3 .   I f   t h e r e   a r e   e l e m e n t s   i n   z o n e   ( b )   w e   c o m p a r e   t h e m   a s   u n s i g n e d   i n t s   t o   a 
00590  
00591                i n t   m a s k   ( S P A C E _ I N T )   c o n s i s t i n g   o f   a l l   s p a c e s 
00592  
00593          4 .   F i n a l l y   w e   c o m p a r e   t h e   r e m a i n i n g   p a r t   ( a )   o f   t h e   s t r i n g   c h a r   b y   c h a r . 
00594  
00595                T h i s   c o v e r s   f o r   t h e   l a s t   n o n - s p a c e   u n s i g n e d   i n t   f r o m   3 .   ( i f   a n y ) 
00596  
00597        T h i s   a l g o r i t h m   w o r k s   w e l l   f o r   r e l a t i v e l y   l a r g e r   s t r i n g s ,   b u t   i t   w i l l   s l o w 
00598  
00599        t h e   t h i n g s   d o w n   f o r   s m a l l e r   s t r i n g s   ( b e c a u s e   o f   t h e   a d d i t i o n a l   c a l c u l a t i o n s 
00600  
00601        a n d   c h e c k s   c o m p a r e d   t o   t h e   n a i v e   m e t h o d ) .   T h u s   t h e   b a r r i e r   o f   l e n g t h   2 0 
00602  
00603        i s   a d d e d . 
00604  
00605        @ p a r a m           p t r       p o i n t e r   t o   t h e   i n p u t   s t r i n g 
00606  
00607        @ p a r a m           l e n       t h e   l e n g t h   o f   t h e   s t r i n g 
00608  
00609        @ r e t u r n                     t h e   l a s t   n o n - s p a c e   c h a r a c t e r 
00610  
00611  * / 
00612  
00613  s t a t i c   i n l i n e   c o n s t   u c h a r   * s k i p _ t r a i l i n g _ s p a c e ( c o n s t   u c h a r   * p t r , s i z e _ t   l e n ) 
00614  
00615  { 
00616  
00617      c o n s t   u c h a r   * e n d =   p t r   +   l e n ; 
00618  
00619      i f   ( l e n   >   2 0 ) 
00620  
00621      { 
00622  
00623          c o n s t   u c h a r   * e n d _ w o r d s =   ( c o n s t   u c h a r   * ) ( i n t p t r ) 
00624  
00625              ( ( ( u l o n g l o n g ) ( i n t p t r ) e n d )   /   S I Z E O F _ I N T   *   S I Z E O F _ I N T ) ; 
00626  
00627          c o n s t   u c h a r   * s t a r t _ w o r d s =   ( c o n s t   u c h a r   * ) ( i n t p t r ) 
00628  
00629                ( ( ( ( u l o n g l o n g ) ( i n t p t r ) p t r )   +   S I Z E O F _ I N T   -   1 )   /   S I Z E O F _ I N T   *   S I Z E O F _ I N T ) ; 
00630  
00631          D B U G _ A S S E R T ( ( ( u l o n g l o n g ) ( i n t p t r ) p t r )   > =   S I Z E O F _ I N T ) ; 
00632  
00633          i f   ( e n d _ w o r d s   >   p t r ) 
00634  
00635          { 
00636  
00637              w h i l e   ( e n d   >   e n d _ w o r d s   & &   e n d [ - 1 ]   = =   0 x 2 0 ) 
00638  
00639                  e n d - - ; 
00640  
00641              i f   ( e n d [ - 1 ]   = =   0 x 2 0   & &   s t a r t _ w o r d s   <   e n d _ w o r d s ) 
00642  
00643                  w h i l e   ( e n d   >   s t a r t _ w o r d s   & &   ( ( u n s i g n e d   * ) e n d ) [ - 1 ]   = =   S P A C E _ I N T ) 
00644  
00645                      e n d   - =   S I Z E O F _ I N T ; 
00646  
00647          } 
00648  
00649      } 
00650  
00651      w h i l e   ( e n d   >   p t r   & &   e n d [ - 1 ]   = =   0 x 2 0 ) 
00652  
00653          e n d - - ; 
00654  
00655      r e t u r n   ( e n d ) ; 
00656  
00657  } 
00658  
00659  # i f d e f   S A F E M A L L O C 
00660  
00661  # d e f i n e   T R A S H ( A , B )   b f i l l ( A ,   B ,   0 x 8 F ) 
00662  
00663  # e l s e 
00664  
00665  # d e f i n e   T R A S H ( A , B )   / *   n o t h i n g   * / 
00666  
00667  # e n d i f   / *   S A F E M A L L O C   * / 
00668  
00669  # e n d i f   / *   _ m _ s t r i n g _ h   * / 
00670  
00671  
 全部  名字空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义