CMGDK r49-rc2
|
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