CMGDK r49-rc2
|
00001 # i f n d e f H G L _ F I X E D L I S T _ I N C L U D E 00002 00003 # d e f i n e H G L _ F I X E D L I S 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 / D a t a T y p e . H > 00008 00009 # i n c l u d e < h g l / t h r e a d / R W L o c k . H > 00010 00011 n a m e s p a c e h g l 00012 00013 { 00014 00015 / * * 00016 00017 * [Rh(uNOX[V[^vpenc 00018 00019 * / 00020 00021 t e m p l a t e < t y p e n a m e T > c l a s s F i x e d L i s t / / / [Rh 00022 00023 { 00024 00025 p r o t e c t e d : 00026 00027 00028 00029 T * i t e m s ; 00030 00031 i n t m a x _ c o u n t , c o u n t ; 00032 00033 00034 00035 T * G e t D a t a ( ) { r e t u r n i t e m s ; } / / / < cOSYpency 00036 00037 v o i d I n i t P r i v a t e ( ) ; 00038 00039 00040 00041 p u b l i c : / / ^\'` 00042 00043 00044 00045 P r o p e r t y < T * > D a t a ; / / / < vcpencQX[c 00046 00047 00048 00049 p u b l i c : / / NN 00050 00051 00052 00053 v o i d ( * O n C l e a r ) ( c o n s t T & ) ; / / / < ndNN 00054 00055 00056 00057 p u b l i c : / / el 00058 00059 00060 00061 F i x e d L i s t ( ) ; / / / < ,g{|g Qpe 00062 00063 F i x e d L i s t ( i n t ) ; / / / < ,g{|g Qpe 00064 00065 v i r t u a l ~ F i x e d L i s t ( ) ; / / / < ,g{|ggQpe 00066 00067 00068 00069 v i r t u a l v o i d C r e a t e ( i n t ) ; / / / < R^pencRh 00070 00071 00072 00073 / / :N(W>mu{|-N:SR[hQelN^[hQel 00074 NSN\Nb N*NQpe9e:N^\'` 00075 00076 v i r t u a l i n t G e t M a x C o u n t ( ) { r e t u r n m a x _ c o u n t ; } / / / < S_ g'Ypenc*Npe 00077 00078 v i r t u a l i n t G e t C o u n t ( ) { r e t u r n c o u n t ; } / / / < S_S_MRpenc*Npe 00079 00080 v i r t u a l b o o l I s F u l l ( ) { r e t u r n c o u n t > = m a x _ c o u n t ; } / / / < /f&T/fnv 00081 00082 00083 00084 v i r t u a l b o o l A p p e n d ( c o n s t T & ) ; / / / < SeQ N*Npenc 00085 00086 v i r t u a l b o o l A p p e n d ( c o n s t T * , i n t ) ; / / / < SeQ Nybpenc 00087 00088 00089 00090 v i r t u a l i n t F i n d ( c o n s t T & ) ; / / / < g~bpenc 00091 00092 00093 00094 v i r t u a l b o o l D e l e t e ( i n t ) ; / / / < Rdc[penc 00095 00096 v i r t u a l b o o l D e l e t e ( c o n s t T & v ) { r e t u r n D e l e t e ( F i n d ( v ) ) ; } / / / < Rdc[penc 00097 00098 v i r t u a l v o i d D e l e t e ( c o n s t T * , i n t ) ; / / / < Rdc[penc 00099 00100 00101 00102 v i r t u a l v o i d C l e a r ( ) ; / / / < nd@b gpenc( hQn0 ) 00103 00104 00105 00106 v i r t u a l T * C r e a t e C o p y ( i n t & ) ; / / / < R^ N*Nb 00107 00108 00109 00110 v i r t u a l T & o p e r a t o r [ ] ( i n t n ) ; 00111 00112 } ; / / t e m p l a t e < t y p e n a m e T > c l a s s F i x e d L i s t 00113 00114 00115 00116 t e m p l a t e < t y p e n a m e T > c l a s s F i x e d O b j e c t L i s t : p u b l i c F i x e d L i s t < T * > / / / [[aRh 00117 00118 { 00119 00120 p u b l i c : 00121 00122 00123 00124 F i x e d O b j e c t L i s t ( ) : F i x e d L i s t < T * > ( ) { } ; 00125 00126 F i x e d O b j e c t L i s t ( i n t n ) : F i x e d L i s t < T * > ( n ) { } 00127 00128 00129 00130 v i r t u a l ~ F i x e d O b j e c t L i s t ( ) { C l e a r ( ) ; } 00131 00132 00133 00134 v i r t u a l b o o l D e l e t e ( i n t ) ; 00135 00136 v i r t u a l v o i d C l e a r ( ) ; 00137 00138 } ; / / t e m p l a t e < t y p e n a m e T > c l a s s F i x e d O b j e c t L i s t 00139 00140 00141 00142 t e m p l a t e < t y p e n a m e T > c l a s s M T F i x e d L i s t : p u b l i c F i x e d L i s t < T > / / / < Y~z[pencRh 00143 00144 { 00145 00146 R W L o c k * l o c k ; 00147 00148 00149 00150 p u b l i c : 00151 00152 00153 00154 M T F i x e d L i s t ( ) : F i x e d L i s t < T > ( ) 00155 00156 { 00157 00158 l o c k = C r e a t e R W L o c k ( ) ; 00159 00160 } 00161 00162 00163 00164 M T F i x e d L i s t ( i n t n ) : F i x e d L i s t < T > ( n ) 00165 00166 { 00167 00168 l o c k = C r e a t e R W L o c k ( ) ; 00169 00170 } 00171 00172 00173 00174 v i r t u a l ~ M T F i x e d L i s t ( ) 00175 00176 { 00177 00178 S a f e C l e a r ( ) ; 00179 00180 } 00181 00182 00183 00184 p u b l i c : 00185 00186 00187 00188 H G L _ R W L O C K ( l o c k ) ; 00189 00190 00191 00192 p u b l i c : / / [hQel 00193 00194 00195 00196 v i r t u a l v o i d S a f e C r e a t e ( i n t c ) 00197 00198 { 00199 00200 l o c k - > W r i t e L o c k ( ) ; 00201 00202 C r e a t e ( c ) ; 00203 00204 l o c k - > W r i t e U n l o c k ( ) ; 00205 00206 } 00207 00208 00209 00210 v i r t u a l T * S a f e C r e a t e C o p y ( i n t & c ) 00211 00212 { 00213 00214 T * c o p y ; 00215 00216 00217 00218 l o c k - > R e a d L o c k ( ) ; 00219 00220 c o p y = F i x e d L i s t < T > : : C r e a t e C o p y ( c ) ; 00221 00222 l o c k - > R e a d U n l o c k ( ) ; 00223 00224 00225 00226 r e t u r n c o p y ; 00227 00228 } 00229 00230 00231 00232 i n t S a f e G e t C o u n t ( ) 00233 00234 { 00235 00236 i n t r e s u l t ; 00237 00238 00239 00240 l o c k - > R e a d L o c k ( ) ; 00241 00242 r e s u l t = c o u n t ; 00243 00244 l o c k - > R e a d U n l o c k ( ) ; 00245 00246 00247 00248 r e t u r n r e s u l t ; 00249 00250 } 00251 00252 00253 00254 i n t S a f e G e t M a x C o u n t ( ) 00255 00256 { 00257 00258 i n t r e s u l t ; 00259 00260 00261 00262 l o c k - > R e a d L o c k ( ) ; 00263 00264 r e s u l t = m a x _ c o u n t ; 00265 00266 l o c k - > R e a d U n l o c k ( ) ; 00267 00268 00269 00270 r e t u r n r e s u l t ; 00271 00272 } 00273 00274 00275 00276 v o i d S a f e G e t C o u n t ( i n t & c , i n t & m ) 00277 00278 { 00279 00280 l o c k - > R e a d L o c k ( ) ; 00281 00282 c = c o u n t ; 00283 00284 m = m a x _ c o u n t ; 00285 00286 l o c k - > R e a d U n l o c k ( ) ; 00287 00288 } 00289 00290 00291 00292 b o o l S a f e I s F u l l ( ) 00293 00294 { 00295 00296 b o o l r e s u l t ; 00297 00298 00299 00300 l o c k - > R e a d L o c k ( ) ; 00301 00302 r e s u l t = I s F u l l ( ) ; 00303 00304 l o c k - > R e a d U n l o c k ( ) ; 00305 00306 00307 00308 r e t u r n r e s u l t ; 00309 00310 } 00311 00312 00313 00314 v i r t u a l b o o l S a f e A p p e n d ( c o n s t T & d a t a ) 00315 00316 { 00317 00318 b o o l r e s u l t ; 00319 00320 00321 00322 l o c k - > W r i t e L o c k ( ) ; 00323 00324 r e s u l t = A p p e n d ( d a t a ) ; 00325 00326 l o c k - > W r i t e U n l o c k ( ) ; 00327 00328 00329 00330 r e t u r n ( r e s u l t ) ; 00331 00332 } 00333 00334 00335 00336 v i r t u a l b o o l S a f e A p p e n d ( c o n s t T * d a t a , i n t n ) 00337 00338 { 00339 00340 b o o l r e s u l t ; 00341 00342 00343 00344 l o c k - > W r i t e L o c k ( ) ; 00345 00346 r e s u l t = A p p e n d ( d a t a , n ) ; 00347 00348 l o c k - > W r i t e U n l o c k ( ) ; 00349 00350 00351 00352 r e t u r n ( r e s u l t ) ; 00353 00354 } 00355 00356 00357 00358 v i r t u a l i n t S a f e F i n d ( c o n s t T & d a t a ) 00359 00360 { 00361 00362 i n t r e s u l t ; 00363 00364 00365 00366 l o c k - > R e a d L o c k ( ) ; 00367 00368 r e s u l t = F i n d ( d a t a ) ; 00369 00370 l o c k - > R e a d U n l o c k ( ) ; 00371 00372 00373 00374 r e t u r n ( r e s u l t ) ; 00375 00376 } 00377 00378 00379 00380 v i r t u a l b o o l S a f e D e l e t e ( i n t n ) 00381 00382 { 00383 00384 b o o l r e s u l t ; 00385 00386 00387 00388 l o c k - > W r i t e L o c k ( ) ; 00389 00390 r e s u l t = D e l e t e ( n ) ; 00391 00392 l o c k - > W r i t e U n l o c k ( ) ; 00393 00394 00395 00396 r e t u r n ( r e s u l t ) ; 00397 00398 } 00399 00400 00401 00402 v i r t u a l b o o l S a f e D e l e t e ( c o n s t T & d a t a ) 00403 00404 { 00405 00406 i n t i n d e x ; 00407 00408 b o o l r e s u l t ; 00409 00410 00411 00412 l o c k - > W r i t e L o c k ( ) ; 00413 00414 i n d e x = F i n d ( d a t a ) ; 00415 00416 r e s u l t = D e l e t e ( i n d e x ) ; 00417 00418 l o c k - > W r i t e U n l o c k ( ) ; 00419 00420 00421 00422 r e t u r n ( r e s u l t ) ; 00423 00424 } 00425 00426 00427 00428 v i r t u a l v o i d S a f e D e l e t e ( c o n s t T * d a t a , i n t n ) 00429 00430 { 00431 00432 l o c k - > W r i t e L o c k ( ) ; 00433 00434 D e l e t e ( d a t a , n ) ; 00435 00436 l o c k - > W r i t e U n l o c k ( ) ; 00437 00438 } 00439 00440 00441 00442 v i r t u a l v o i d S a f e C l e a r ( ) 00443 00444 { 00445 00446 l o c k - > W r i t e L o c k ( ) ; 00447 00448 C l e a r ( ) ; 00449 00450 l o c k - > W r i t e U n l o c k ( ) ; 00451 00452 } 00453 00454 00455 00456 v i r t u a l T S a f e G e t I t e m ( i n t n ) 00457 00458 { 00459 00460 T r e s u l t ; 00461 00462 00463 00464 l o c k - > R e a d L o c k ( ) ; 00465 00466 r e s u l t = o p e r a t o r [ ] ( n ) ; 00467 00468 l o c k - > R e a d U n l o c k ( ) ; 00469 00470 00471 00472 r e t u r n r e s u l t ; 00473 00474 } 00475 00476 } ; / / t e m p l a t e < t y p e n a m e T > c l a s s M T F i x e d L i s t 00477 00478 00479 00480 t e m p l a t e < t y p e n a m e T > c l a s s M T F i x e d O b j e c t L i s t : p u b l i c M T F i x e d L i s t < T * > / / / < Y~z[[aRh 00481 00482 { 00483 00484 p u b l i c : 00485 00486 00487 00488 M T F i x e d O b j e c t L i s t ( ) : M T F i x e d L i s t < T * > ( ) { } 00489 00490 M T F i x e d O b j e c t L i s t ( i n t n ) : M T F i x e d L i s t < T * > ( n ) { } 00491 00492 v i r t u a l ~ M T F i x e d O b j e c t L i s t ( ) 00493 00494 { 00495 00496 S a f e C l e a r ( ) ; 00497 00498 } 00499 00500 00501 00502 v i r t u a l b o o l D e l e t e ( i n t ) ; 00503 00504 v i r t u a l v o i d C l e a r ( ) ; 00505 00506 } ; / / t e m p l a t e < t y p e n a m e T > c l a s s M T F i x e d O b j e c t L i s t 00507 00508 } / / n a m e s p a c e h g l 00509 00510 # i n c l u d e < h g l / t y p e / F i x e d L i s t . C P P > 00511 00512 # e n d i f / / H G L _ F I X E D L I S T _ I N C L U D E 00513 00514