CMGDK r49-rc2
|
00001 # i f n d e f H G L _ S E T _ I N C L U D E 00002 00003 # d e f i n e H G L _ S E T _ I N C L U D E 00004 00005 00006 00007 # i n c l u d e < h g l / t y p e / B i t A r r a y . H > 00008 00009 n a m e s p a c e h g l 00010 00011 { 00012 00013 / * * 00014 00015 * bn(u!jg 00016 00017 * / 00018 00019 t e m p l a t e < t y p e n a m e E , u n s i g n e d i n t S t a r t , u n s i g n e d i n t E n d > c l a s s S e t 00020 00021 { 00022 00023 B i t A r r a y b i t ; 00024 00025 00026 00027 p u b l i c : 00028 00029 00030 00031 S e t ( ) : b i t ( E n d - S t a r t + 1 ) { } 00032 00033 00034 00035 v i r t u a l ~ S e t ( ) { } ; 00036 00037 00038 00039 / * * 00040 00041 * S_pencc 00042 00043 * @ p a r a m b u f pencc 00044 00045 * @ r e t u r n W[^ 00046 00047 * / 00048 00049 i n t G e t D a t a ( v o i d * * b u f ) 00050 00051 { 00052 00053 i n t b y t e _ s i z e = ( b i t . C o u n t + 7 > > 3 ) ; 00054 00055 00056 00057 * b u f = b i t . D a t a ; 00058 00059 00060 00061 r e t u r n b y t e _ s i z e ; 00062 00063 } 00064 00065 00066 00067 S e t & o p e r a t o r = ( c o n s t S e t & r h s ) 00068 00069 { 00070 00071 i f ( t h i s ! = & r h s ) 00072 00073 b i t = r h s . b i t ; 00074 00075 00076 00077 r e t u r n * t h i s ; 00078 00079 } 00080 00081 00082 00083 S e t & o p e r a t o r + = ( c o n s t S e t & r h s ) 00084 00085 { 00086 00087 i f ( t h i s ! = & r h s ) 00088 00089 b i t + = r h s . b i t ; 00090 00091 00092 00093 r e t u r n * t h i s ; 00094 00095 } 00096 00097 00098 00099 S e t & o p e r a t o r - = ( c o n s t S e t & r h s ) 00100 00101 { 00102 00103 i f ( t h i s ! = & r h s ) 00104 00105 b i t - = r h s . b i t ; 00106 00107 00108 00109 r e t u r n * t h i s ; 00110 00111 } 00112 00113 00114 00115 S e t & o p e r a t o r * = ( c o n s t S e t & r h s ) 00116 00117 { 00118 00119 i f ( t h i s ! = & r h s ) 00120 00121 b i t * = r h s . b i t ; 00122 00123 00124 00125 r e t u r n * t h i s ; 00126 00127 } 00128 00129 00130 00131 S e t o p e r a t o r + ( c o n s t S e t & r h s ) c o n s t 00132 00133 { 00134 00135 S e t < E , S t a r t , E n d > s = t h i s ; 00136 00137 00138 00139 s + = r h s ; 00140 00141 00142 00143 r e t u r n s ; 00144 00145 } 00146 00147 00148 00149 S e t o p e r a t o r - ( c o n s t S e t & r h s ) c o n s t 00150 00151 { 00152 00153 S e t < E , S t a r t , E n d > s = t h i s ; 00154 00155 00156 00157 s - = r h s ; 00158 00159 00160 00161 r e t u r n s ; 00162 00163 } 00164 00165 00166 00167 S e t o p e r a t o r * ( c o n s t S e t & r h s ) c o n s t 00168 00169 { 00170 00171 S e t < E , S t a r t , E n d > s = t h i s ; 00172 00173 00174 00175 s + = r h s ; 00176 00177 00178 00179 r e t u r n s ; 00180 00181 } 00182 00183 00184 00185 S e t & o p e r a t o r < < ( c o n s t E e l ) 00186 00187 { 00188 00189 b i t . W r i t e P o s ( e l - S t a r t , t r u e ) ; 00190 00191 00192 00193 r e t u r n * t h i s ; 00194 00195 } 00196 00197 00198 00199 S e t & o p e r a t o r > > ( c o n s t E e l ) 00200 00201 { 00202 00203 b i t . W r i t e P o s ( e l - S t a r t , f a l s e ) ; 00204 00205 00206 00207 r e t u r n * t h i s ; 00208 00209 } 00210 00211 00212 00213 v o i d C l e a r ( b o o l a l l _ s e l e c t = f a l s e ) 00214 00215 { 00216 00217 b i t . F i l l ( a l l _ s e l e c t ) ; 00218 00219 } 00220 00221 00222 00223 b o o l C h e c k ( c o n s t E e l ) c o n s t 00224 00225 { 00226 00227 r e t u r n b i t . R e a d P o s ( e l - S t a r t ) ; 00228 00229 } 00230 00231 00232 00233 b o o l o p e r a t o r = = ( c o n s t S e t & r h s ) c o n s t 00234 00235 { 00236 00237 r e t u r n b i t = = r h s . b i t ; 00238 00239 } 00240 00241 00242 00243 b o o l o p e r a t o r ! = ( c o n s t S e t & r h s ) c o n s t { r e t u r n ! o p e r a t o r = = ( r h s ) ; } 00244 00245 00246 00247 b o o l S a v e T o S t r e a m ( S t r e a m * s t r ) { r e t u r n b i t . S a v e T o S t r e a m ( s t r ) ; } / / / < OX[S_MRMO5Rpenc0RAm 00248 00249 b o o l L o a d F r o m S t r e a m ( S t r e a m * s t r ) { r e t u r n b i t . L o a d F r o m S t r e a m ( s t r ) ; } / / / < NAm-NSMO5Rpenc 00250 00251 b o o l S a v e T o F i l e ( c o n s t w c h a r _ t * f n ) { r e t u r n b i t . S a v e T o F i l e ( f n ) ; } / / / < OX[S_MRMO5Rpenc0ReN 00252 00253 b o o l L o a d F r o m F i l e ( c o n s t w c h a r _ t * f n ) { r e t u r n b i t . L o a d F r o m F i l e ( f n ) ; } / / / < NeN-NSMO5Rpenc 00254 00255 } ; 00256 00257 } / / n a m e s p a c e h g l 00258 00259 # e n d i f / / H G L _ S E T _ I N C L U D E 00260 00261