CMGDK r49-rc2
K:/CMGDKv18/SDK/Source/SQL/MySQL/include/hash.h
浏览该文件的文档。
00001 / *   C o p y r i g h t   2 0 0 0 - 2 0 0 8   M y S Q L   A B ,   2 0 0 8   S u n   M i c r o s y s t e m s ,   I n c . 
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  / *   D y n a m i c   h a s h i n g   o f   r e c o r d   w i t h   d i f f e r e n t   k e y - l e n g t h   * / 
00024  
00025  # i f n d e f   _ h a s h _ h 
00026  
00027  # d e f i n e   _ h a s h _ h 
00028  
00029  # i f d e f     _ _ c p l u s p l u s 
00030  
00031  e x t e r n   " C "   { 
00032  
00033  # e n d i f 
00034  
00035  / * 
00036  
00037      O v e r h e a d   t o   s t o r e   a n   e l e m e n t   i n   h a s h 
00038  
00039      C a n   b e   u s e d   t o   a p p r o x i m a t e   m e m o r y   c o n s u m p t i o n   f o r   a   h a s h 
00040  
00041    * / 
00042  
00043  # d e f i n e   H A S H _ O V E R H E A D   ( s i z e o f ( c h a r * ) * 2 ) 
00044  
00045  / *   f l a g s   f o r   h a s h _ i n i t   * / 
00046  
00047  # d e f i n e   H A S H _ U N I Q U E           1               / *   h a s h _ i n s e r t   f a i l s   o n   d u p l i c a t e   k e y   * / 
00048  
00049  t y p e d e f   u c h a r   * ( * m y _ h a s h _ g e t _ k e y ) ( c o n s t   u c h a r   * , s i z e _ t * , m y _ b o o l ) ; 
00050  
00051  t y p e d e f   v o i d   ( * m y _ h a s h _ f r e e _ k e y ) ( v o i d   * ) ; 
00052  
00053  t y p e d e f   m y _ b o o l   ( * m y _ h a s h _ w a l k _ a c t i o n ) ( v o i d   * , v o i d   * ) ; 
00054  
00055  t y p e d e f   s t r u c t   s t _ h a s h   { 
00056  
00057      s i z e _ t   k e y _ o f f s e t , k e y _ l e n g t h ;       / *   L e n g t h   o f   k e y   i f   c o n s t   l e n g t h   * / 
00058  
00059      s i z e _ t   b l e n g t h ; 
00060  
00061      u l o n g   r e c o r d s ; 
00062  
00063      u i n t   f l a g s ; 
00064  
00065      D Y N A M I C _ A R R A Y   a r r a y ;                 / *   P l a c e   f o r   h a s h _ k e y s   * / 
00066  
00067      m y _ h a s h _ g e t _ k e y   g e t _ k e y ; 
00068  
00069      v o i d   ( * f r e e ) ( v o i d   * ) ; 
00070  
00071      C H A R S E T _ I N F O   * c h a r s e t ; 
00072  
00073  }   H A S H ; 
00074  
00075  / *   A   s e a r c h   i t e r a t o r   s t a t e   * / 
00076  
00077  t y p e d e f   u i n t   H A S H _ S E A R C H _ S T A T E ; 
00078  
00079  # d e f i n e   m y _ h a s h _ i n i t ( A , B , C , D , E , F , G , H )   \ 
00080  
00081                      _ m y _ h a s h _ i n i t ( A , 0 , B , C , D , E , F , G , H   C A L L E R _ I N F O ) 
00082  
00083  # d e f i n e   m y _ h a s h _ i n i t 2 ( A , B , C , D , E , F , G , H , I )   \ 
00084  
00085                      _ m y _ h a s h _ i n i t ( A , B , C , D , E , F , G , H , I   C A L L E R _ I N F O ) 
00086  
00087  m y _ b o o l   _ m y _ h a s h _ i n i t ( H A S H   * h a s h ,   u i n t   g r o w t h _ s i z e ,   C H A R S E T _ I N F O   * c h a r s e t , 
00088  
00089                                              u l o n g   d e f a u l t _ a r r a y _ e l e m e n t s ,   s i z e _ t   k e y _ o f f s e t , 
00090  
00091                                              s i z e _ t   k e y _ l e n g t h ,   m y _ h a s h _ g e t _ k e y   g e t _ k e y , 
00092  
00093                                              v o i d   ( * f r e e _ e l e m e n t ) ( v o i d * ) , 
00094  
00095                                              u i n t   f l a g s   C A L L E R _ I N F O _ P R O T O ) ; 
00096  
00097  v o i d   m y _ h a s h _ f r e e ( H A S H   * t r e e ) ; 
00098  
00099  v o i d   m y _ h a s h _ r e s e t ( H A S H   * h a s h ) ; 
00100  
00101  u c h a r   * m y _ h a s h _ e l e m e n t ( H A S H   * h a s h ,   u l o n g   i d x ) ; 
00102  
00103  u c h a r   * m y _ h a s h _ s e a r c h ( c o n s t   H A S H   * i n f o ,   c o n s t   u c h a r   * k e y ,   s i z e _ t   l e n g t h ) ; 
00104  
00105  u c h a r   * m y _ h a s h _ f i r s t ( c o n s t   H A S H   * i n f o ,   c o n s t   u c h a r   * k e y ,   s i z e _ t   l e n g t h , 
00106  
00107                                            H A S H _ S E A R C H _ S T A T E   * s t a t e ) ; 
00108  
00109  u c h a r   * m y _ h a s h _ n e x t ( c o n s t   H A S H   * i n f o ,   c o n s t   u c h a r   * k e y ,   s i z e _ t   l e n g t h , 
00110  
00111                                          H A S H _ S E A R C H _ S T A T E   * s t a t e ) ; 
00112  
00113  m y _ b o o l   m y _ h a s h _ i n s e r t ( H A S H   * i n f o ,   c o n s t   u c h a r   * d a t a ) ; 
00114  
00115  m y _ b o o l   m y _ h a s h _ d e l e t e ( H A S H   * h a s h ,   u c h a r   * r e c o r d ) ; 
00116  
00117  m y _ b o o l   m y _ h a s h _ u p d a t e ( H A S H   * h a s h ,   u c h a r   * r e c o r d ,   u c h a r   * o l d _ k e y , 
00118  
00119                                                s i z e _ t   o l d _ k e y _ l e n g t h ) ; 
00120  
00121  v o i d   m y _ h a s h _ r e p l a c e ( H A S H   * h a s h ,   H A S H _ S E A R C H _ S T A T E   * s t a t e ,   u c h a r   * n e w _ r o w ) ; 
00122  
00123  m y _ b o o l   m y _ h a s h _ c h e c k ( H A S H   * h a s h ) ;   / *   O n l y   i n   d e b u g   l i b r a r y   * / 
00124  
00125  m y _ b o o l   m y _ h a s h _ i t e r a t e ( H A S H   * h a s h ,   m y _ h a s h _ w a l k _ a c t i o n   a c t i o n ,   v o i d   * a r g u m e n t ) ; 
00126  
00127  # d e f i n e   m y _ h a s h _ c l e a r ( H )   b z e r o ( ( c h a r * )   ( H ) ,   s i z e o f ( * ( H ) ) ) 
00128  
00129  # d e f i n e   m y _ h a s h _ i n i t e d ( H )   ( ( H ) - > a r r a y . b u f f e r   ! =   0 ) 
00130  
00131  # d e f i n e   m y _ h a s h _ i n i t _ o p t ( A , B , C , D , E , F , G , H )   \ 
00132  
00133                      ( ! m y _ h a s h _ i n i t e d ( A )   & &   _ m y _ h a s h _ i n i t ( A , 0 , B , C , D , E , F , G ,   H   C A L L E R _ I N F O ) ) 
00134  
00135  # i f d e f     _ _ c p l u s p l u s 
00136  
00137  } 
00138  
00139  # e n d i f 
00140  
00141  # e n d i f 
00142  
00143  
 全部  名字空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义