CMGDK r49-rc2
K:/CMGDKv18/SDK/Include/hgl/type/FixedList.H
浏览该文件的文档。
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  
 全部  名字空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义