CMGDK r49-rc2
K:/CMGDKv18/SDK/Source/SQL/MySQL/include/my_bitmap.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  # i f n d e f   _ m y _ b i t m a p _ h _ 
00024  
00025  # d e f i n e   _ m y _ b i t m a p _ h _ 
00026  
00027  # d e f i n e   M Y _ B I T _ N O N E   ( ~ ( u i n t )   0 ) 
00028  
00029  # i n c l u d e   < m _ s t r i n g . h > 
00030  
00031  t y p e d e f   u i n t 3 2   m y _ b i t m a p _ m a p ; 
00032  
00033  t y p e d e f   s t r u c t   s t _ b i t m a p 
00034  
00035  { 
00036  
00037      m y _ b i t m a p _ m a p   * b i t m a p ; 
00038  
00039      u i n t   n _ b i t s ;   / *   n u m b e r   o f   b i t s   o c c u p i e d   b y   t h e   a b o v e   * / 
00040  
00041      m y _ b i t m a p _ m a p   l a s t _ w o r d _ m a s k ; 
00042  
00043      m y _ b i t m a p _ m a p   * l a s t _ w o r d _ p t r ; 
00044  
00045      / * 
00046  
00047            m u t e x   w i l l   b e   a c q u i r e d   f o r   t h e   d u r a t i o n   o f   e a c h   b i t m a p   o p e r a t i o n   i f 
00048  
00049            t h r e a d _ s a f e   f l a g   i n   b i t m a p _ i n i t   w a s   s e t .     O t h e r w i s e ,   w e   o p t i m i z e   b y   n o t 
00050  
00051            a c q u i r i n g   t h e   m u t e x 
00052  
00053        * / 
00054  
00055  # i f d e f   T H R E A D 
00056  
00057      p t h r e a d _ m u t e x _ t   * m u t e x ; 
00058  
00059  # e n d i f 
00060  
00061  }   M Y _ B I T M A P ; 
00062  
00063  # i f d e f     _ _ c p l u s p l u s 
00064  
00065  e x t e r n   " C "   { 
00066  
00067  # e n d i f 
00068  
00069  e x t e r n   v o i d   c r e a t e _ l a s t _ w o r d _ m a s k ( M Y _ B I T M A P   * m a p ) ; 
00070  
00071  e x t e r n   m y _ b o o l   b i t m a p _ i n i t ( M Y _ B I T M A P   * m a p ,   m y _ b i t m a p _ m a p   * b u f ,   u i n t   n _ b i t s , 
00072  
00073                                                        m y _ b o o l   t h r e a d _ s a f e ) ; 
00074  
00075  e x t e r n   m y _ b o o l   b i t m a p _ i s _ c l e a r _ a l l ( c o n s t   M Y _ B I T M A P   * m a p ) ; 
00076  
00077  e x t e r n   m y _ b o o l   b i t m a p _ i s _ p r e f i x ( c o n s t   M Y _ B I T M A P   * m a p ,   u i n t   p r e f i x _ s i z e ) ; 
00078  
00079  e x t e r n   m y _ b o o l   b i t m a p _ i s _ s e t _ a l l ( c o n s t   M Y _ B I T M A P   * m a p ) ; 
00080  
00081  e x t e r n   m y _ b o o l   b i t m a p _ i s _ s u b s e t ( c o n s t   M Y _ B I T M A P   * m a p 1 ,   c o n s t   M Y _ B I T M A P   * m a p 2 ) ; 
00082  
00083  e x t e r n   m y _ b o o l   b i t m a p _ i s _ o v e r l a p p i n g ( c o n s t   M Y _ B I T M A P   * m a p 1 , 
00084  
00085                                                                            c o n s t   M Y _ B I T M A P   * m a p 2 ) ; 
00086  
00087  e x t e r n   m y _ b o o l   b i t m a p _ t e s t _ a n d _ s e t ( M Y _ B I T M A P   * m a p ,   u i n t   b i t m a p _ b i t ) ; 
00088  
00089  e x t e r n   m y _ b o o l   b i t m a p _ t e s t _ a n d _ c l e a r ( M Y _ B I T M A P   * m a p ,   u i n t   b i t m a p _ b i t ) ; 
00090  
00091  e x t e r n   m y _ b o o l   b i t m a p _ f a s t _ t e s t _ a n d _ s e t ( M Y _ B I T M A P   * m a p ,   u i n t   b i t m a p _ b i t ) ; 
00092  
00093  e x t e r n   u i n t   b i t m a p _ s e t _ n e x t ( M Y _ B I T M A P   * m a p ) ; 
00094  
00095  e x t e r n   u i n t   b i t m a p _ g e t _ f i r s t ( c o n s t   M Y _ B I T M A P   * m a p ) ; 
00096  
00097  e x t e r n   u i n t   b i t m a p _ g e t _ f i r s t _ s e t ( c o n s t   M Y _ B I T M A P   * m a p ) ; 
00098  
00099  e x t e r n   u i n t   b i t m a p _ b i t s _ s e t ( c o n s t   M Y _ B I T M A P   * m a p ) ; 
00100  
00101  e x t e r n   v o i d   b i t m a p _ f r e e ( M Y _ B I T M A P   * m a p ) ; 
00102  
00103  e x t e r n   v o i d   b i t m a p _ s e t _ a b o v e ( M Y _ B I T M A P   * m a p ,   u i n t   f r o m _ b y t e ,   u i n t   u s e _ b i t ) ; 
00104  
00105  e x t e r n   v o i d   b i t m a p _ s e t _ p r e f i x ( M Y _ B I T M A P   * m a p ,   u i n t   p r e f i x _ s i z e ) ; 
00106  
00107  e x t e r n   v o i d   b i t m a p _ i n t e r s e c t ( M Y _ B I T M A P   * m a p ,   c o n s t   M Y _ B I T M A P   * m a p 2 ) ; 
00108  
00109  e x t e r n   v o i d   b i t m a p _ s u b t r a c t ( M Y _ B I T M A P   * m a p ,   c o n s t   M Y _ B I T M A P   * m a p 2 ) ; 
00110  
00111  e x t e r n   v o i d   b i t m a p _ u n i o n ( M Y _ B I T M A P   * m a p ,   c o n s t   M Y _ B I T M A P   * m a p 2 ) ; 
00112  
00113  e x t e r n   v o i d   b i t m a p _ x o r ( M Y _ B I T M A P   * m a p ,   c o n s t   M Y _ B I T M A P   * m a p 2 ) ; 
00114  
00115  e x t e r n   v o i d   b i t m a p _ i n v e r t ( M Y _ B I T M A P   * m a p ) ; 
00116  
00117  e x t e r n   v o i d   b i t m a p _ c o p y ( M Y _ B I T M A P   * m a p ,   c o n s t   M Y _ B I T M A P   * m a p 2 ) ; 
00118  
00119  e x t e r n   u i n t   b i t m a p _ l o c k _ s e t _ n e x t ( M Y _ B I T M A P   * m a p ) ; 
00120  
00121  e x t e r n   v o i d   b i t m a p _ l o c k _ c l e a r _ b i t ( M Y _ B I T M A P   * m a p ,   u i n t   b i t m a p _ b i t ) ; 
00122  
00123  # i f d e f   N O T _ U S E D 
00124  
00125  e x t e r n   u i n t   b i t m a p _ l o c k _ b i t s _ s e t ( c o n s t   M Y _ B I T M A P   * m a p ) ; 
00126  
00127  e x t e r n   m y _ b o o l   b i t m a p _ l o c k _ i s _ s e t _ a l l ( c o n s t   M Y _ B I T M A P   * m a p ) ; 
00128  
00129  e x t e r n   u i n t   b i t m a p _ l o c k _ g e t _ f i r s t ( c o n s t   M Y _ B I T M A P   * m a p ) ; 
00130  
00131  e x t e r n   u i n t   b i t m a p _ l o c k _ g e t _ f i r s t _ s e t ( c o n s t   M Y _ B I T M A P   * m a p ) ; 
00132  
00133  e x t e r n   m y _ b o o l   b i t m a p _ l o c k _ i s _ s u b s e t ( c o n s t   M Y _ B I T M A P   * m a p 1 , 
00134  
00135                                                                            c o n s t   M Y _ B I T M A P   * m a p 2 ) ; 
00136  
00137  e x t e r n   m y _ b o o l   b i t m a p _ l o c k _ i s _ p r e f i x ( c o n s t   M Y _ B I T M A P   * m a p ,   u i n t   p r e f i x _ s i z e ) ; 
00138  
00139  e x t e r n   m y _ b o o l   b i t m a p _ l o c k _ i s _ s e t ( c o n s t   M Y _ B I T M A P   * m a p ,   u i n t   b i t m a p _ b i t ) ; 
00140  
00141  e x t e r n   m y _ b o o l   b i t m a p _ l o c k _ i s _ c l e a r _ a l l ( c o n s t   M Y _ B I T M A P   * m a p ) ; 
00142  
00143  e x t e r n   m y _ b o o l   b i t m a p _ l o c k _ c m p ( c o n s t   M Y _ B I T M A P   * m a p 1 ,   c o n s t   M Y _ B I T M A P   * m a p 2 ) ; 
00144  
00145  e x t e r n   v o i d   b i t m a p _ l o c k _ s e t _ a l l ( M Y _ B I T M A P   * m a p ) ; 
00146  
00147  e x t e r n   v o i d   b i t m a p _ l o c k _ c l e a r _ a l l ( M Y _ B I T M A P   * m a p ) ; 
00148  
00149  e x t e r n   v o i d   b i t m a p _ l o c k _ s e t _ b i t ( M Y _ B I T M A P   * m a p ,   u i n t   b i t m a p _ b i t ) ; 
00150  
00151  e x t e r n   v o i d   b i t m a p _ l o c k _ f l i p _ b i t ( M Y _ B I T M A P   * m a p ,   u i n t   b i t m a p _ b i t ) ; 
00152  
00153  e x t e r n   v o i d   b i t m a p _ l o c k _ s e t _ p r e f i x ( M Y _ B I T M A P   * m a p ,   u i n t   p r e f i x _ s i z e ) ; 
00154  
00155  e x t e r n   v o i d   b i t m a p _ l o c k _ i n t e r s e c t ( M Y _ B I T M A P   * m a p ,   c o n s t   M Y _ B I T M A P   * m a p 2 ) ; 
00156  
00157  e x t e r n   v o i d   b i t m a p _ l o c k _ s u b t r a c t ( M Y _ B I T M A P   * m a p ,   c o n s t   M Y _ B I T M A P   * m a p 2 ) ; 
00158  
00159  e x t e r n   v o i d   b i t m a p _ l o c k _ u n i o n ( M Y _ B I T M A P   * m a p ,   c o n s t   M Y _ B I T M A P   * m a p 2 ) ; 
00160  
00161  e x t e r n   v o i d   b i t m a p _ l o c k _ x o r ( M Y _ B I T M A P   * m a p ,   c o n s t   M Y _ B I T M A P   * m a p 2 ) ; 
00162  
00163  e x t e r n   v o i d   b i t m a p _ l o c k _ i n v e r t ( M Y _ B I T M A P   * m a p ) ; 
00164  
00165  # e n d i f 
00166  
00167  / *   F a s t ,   n o t   t h r e a d   s a f e ,   b i t m a p   f u n c t i o n s   * / 
00168  
00169  # d e f i n e   b i t m a p _ b u f f e r _ s i z e ( b i t s )   ( ( ( b i t s ) + 3 1 ) / 3 2 ) * 4 
00170  
00171  # d e f i n e   n o _ b y t e s _ i n _ m a p ( m a p )   ( ( ( m a p ) - > n _ b i t s   +   7 ) / 8 ) 
00172  
00173  # d e f i n e   n o _ w o r d s _ i n _ m a p ( m a p )   ( ( ( m a p ) - > n _ b i t s   +   3 1 ) / 3 2 ) 
00174  
00175  # d e f i n e   b y t e s _ w o r d _ a l i g n e d ( b y t e s )   ( 4 * ( ( b y t e s   +   3 ) / 4 ) ) 
00176  
00177  # d e f i n e   _ b i t m a p _ s e t _ b i t ( M A P ,   B I T )   ( ( ( u c h a r * ) ( M A P ) - > b i t m a p ) [ ( B I T )   /   8 ]   \ 
00178  
00179                                                                      | =   ( 1   < <   ( ( B I T )   &   7 ) ) ) 
00180  
00181  # d e f i n e   _ b i t m a p _ f l i p _ b i t ( M A P ,   B I T )   ( ( ( u c h a r * ) ( M A P ) - > b i t m a p ) [ ( B I T )   /   8 ]   \ 
00182  
00183                                                                      ^ =   ( 1   < <   ( ( B I T )   &   7 ) ) ) 
00184  
00185  # d e f i n e   _ b i t m a p _ c l e a r _ b i t ( M A P ,   B I T )   ( ( ( u c h a r * ) ( M A P ) - > b i t m a p ) [ ( B I T )   /   8 ]   \ 
00186  
00187                                                                      & =   ~   ( 1   < <   ( ( B I T )   &   7 ) ) ) 
00188  
00189  # d e f i n e   _ b i t m a p _ i s _ s e t ( M A P ,   B I T )   ( u i n t )   ( ( ( u c h a r * ) ( M A P ) - > b i t m a p ) [ ( B I T )   /   8 ]   \ 
00190  
00191                                                                                    &   ( 1   < <   ( ( B I T )   &   7 ) ) ) 
00192  
00193  / * 
00194  
00195      W A R N I N G ! 
00196  
00197      T h e   b e l o w   s y m b o l s   a r e   i n l i n e   f u n c t i o n s   i n   D E B U G   b u i l d s   a n d   m a c r o s   i n 
00198  
00199      n o n - D E B U G   b u i l d s .   T h e   l a t t e r   e v a l u a t e   t h e i r   ' b i t '   a r g u m e n t   t w i c e . 
00200  
00201      N E V E R   u s e   a n   i n c r e m e n t / d e c r e m e n t   o p e r a t o r   w i t h   t h e   ' b i t '   a r g u m e n t . 
00202  
00203      I t   w o u l d   w o r k   w i t h   D E B U G   b u i l d s ,   b u t   f a i l s   l a t e r   i n   p r o d u c t i o n   b u i l d s ! 
00204  
00205      F O R B I D D E N :   b i t m a p _ s e t _ b i t ( $ m y _ b i t m a p ,   ( f i e l d + + ) - > f i e l d _ i n d e x ) ; 
00206  
00207  * / 
00208  
00209  # i f n d e f   D B U G _ O F F 
00210  
00211  s t a t i c   i n l i n e   v o i d 
00212  
00213  b i t m a p _ s e t _ b i t ( M Y _ B I T M A P   * m a p , u i n t   b i t ) 
00214  
00215  { 
00216  
00217      D B U G _ A S S E R T ( b i t   <   ( m a p ) - > n _ b i t s ) ; 
00218  
00219      _ b i t m a p _ s e t _ b i t ( m a p , b i t ) ; 
00220  
00221  } 
00222  
00223  s t a t i c   i n l i n e   v o i d 
00224  
00225  b i t m a p _ f l i p _ b i t ( M Y _ B I T M A P   * m a p , u i n t   b i t ) 
00226  
00227  { 
00228  
00229      D B U G _ A S S E R T ( b i t   <   ( m a p ) - > n _ b i t s ) ; 
00230  
00231      _ b i t m a p _ f l i p _ b i t ( m a p , b i t ) ; 
00232  
00233  } 
00234  
00235  s t a t i c   i n l i n e   v o i d 
00236  
00237  b i t m a p _ c l e a r _ b i t ( M Y _ B I T M A P   * m a p , u i n t   b i t ) 
00238  
00239  { 
00240  
00241      D B U G _ A S S E R T ( b i t   <   ( m a p ) - > n _ b i t s ) ; 
00242  
00243      _ b i t m a p _ c l e a r _ b i t ( m a p , b i t ) ; 
00244  
00245  } 
00246  
00247  s t a t i c   i n l i n e   u i n t 
00248  
00249  b i t m a p _ i s _ s e t ( c o n s t   M Y _ B I T M A P   * m a p , u i n t   b i t ) 
00250  
00251  { 
00252  
00253      D B U G _ A S S E R T ( b i t   <   ( m a p ) - > n _ b i t s ) ; 
00254  
00255      r e t u r n   _ b i t m a p _ i s _ s e t ( m a p , b i t ) ; 
00256  
00257  } 
00258  
00259  # e l s e 
00260  
00261  # d e f i n e   b i t m a p _ s e t _ b i t ( M A P ,   B I T )   _ b i t m a p _ s e t _ b i t ( M A P ,   B I T ) 
00262  
00263  # d e f i n e   b i t m a p _ f l i p _ b i t ( M A P ,   B I T )   _ b i t m a p _ f l i p _ b i t ( M A P ,   B I T ) 
00264  
00265  # d e f i n e   b i t m a p _ c l e a r _ b i t ( M A P ,   B I T )   _ b i t m a p _ c l e a r _ b i t ( M A P ,   B I T ) 
00266  
00267  # d e f i n e   b i t m a p _ i s _ s e t ( M A P ,   B I T )   _ b i t m a p _ i s _ s e t ( M A P ,   B I T ) 
00268  
00269  # e n d i f 
00270  
00271  s t a t i c   i n l i n e   m y _ b o o l   b i t m a p _ c m p ( c o n s t   M Y _ B I T M A P   * m a p 1 ,   c o n s t   M Y _ B I T M A P   * m a p 2 ) 
00272  
00273  { 
00274  
00275      * ( m a p 1 ) - > l a s t _ w o r d _ p t r | =   ( m a p 1 ) - > l a s t _ w o r d _ m a s k ; 
00276  
00277      * ( m a p 2 ) - > l a s t _ w o r d _ p t r | =   ( m a p 2 ) - > l a s t _ w o r d _ m a s k ; 
00278  
00279      r e t u r n   m e m c m p ( ( m a p 1 ) - > b i t m a p ,   ( m a p 2 ) - > b i t m a p ,   4 * n o _ w o r d s _ i n _ m a p ( ( m a p 1 ) ) ) = = 0 ; 
00280  
00281  } 
00282  
00283  # d e f i n e   b i t m a p _ c l e a r _ a l l ( M A P )   \ 
00284  
00285      {   m e m s e t ( ( M A P ) - > b i t m a p ,   0 ,   4 * n o _ w o r d s _ i n _ m a p ( ( M A P ) ) ) ;   } 
00286  
00287  # d e f i n e   b i t m a p _ s e t _ a l l ( M A P )   \ 
00288  
00289      ( m e m s e t ( ( M A P ) - > b i t m a p ,   0 x F F ,   4 * n o _ w o r d s _ i n _ m a p ( ( M A P ) ) ) ) 
00290  
00291  / * * 
00292  
00293        c h e c k ,   s e t   a n d   c l e a r   a   b i t   o f   i n t e r e s t   o f   a n   i n t e g e r . 
00294  
00295        I f   t h e   b i t   i s   o u t   o f   r a n g e   @ r e t v a l   - 1 .   O t h e r w i s e 
00296  
00297        b i t _ i s _ s e t       @ r e t u r n   0   o r   1   r e f l e c t i n g   t h e   b i t   i s   s e t   o r   n o t ; 
00298  
00299        b i t _ d o _ s e t       @ r e t u r n   1   ( b i t   i s   s e t   1 ) 
00300  
00301        b i t _ d o _ c l e a r   @ r e t u r n   0   ( b i t   i s   c l e a r e d   t o   0 ) 
00302  
00303  * / 
00304  
00305  # d e f i n e   b i t _ i s _ s e t ( I , B )       ( s i z e o f ( I )   *   C H A R _ B I T   >   ( B )   ?                                   \ 
00306  
00307                                                        ( ( ( I )   &   ( 1 U L L   < <   ( B ) ) )   = =   0   ?   0   :   1 )   :   - 1 ) 
00308  
00309  # d e f i n e   b i t _ d o _ s e t ( I , B )       ( s i z e o f ( I )   *   C H A R _ B I T   >   ( B )   ?                   \ 
00310  
00311                                                        ( ( I )   | =   ( 1 U L L   < <   ( B ) ) ,   1 )   :   - 1 ) 
00312  
00313  # d e f i n e   b i t _ d o _ c l e a r ( I , B )   ( s i z e o f ( I )   *   C H A R _ B I T   >   ( B )   ?                   \ 
00314  
00315                                                        ( ( I )   & =   ~ ( 1 U L L   < <   ( B ) ) ,   0 )   :   - 1 ) 
00316  
00317  # i f d e f     _ _ c p l u s p l u s 
00318  
00319  } 
00320  
00321  # e n d i f 
00322  
00323  # e n d i f   / *   _ m y _ b i t m a p _ h _   * / 
00324  
00325  
 全部  名字空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义