CMGDK r49-rc2
K:/CMGDKv18/SDK/Source/UtilityTools/DevilVM/DevilCommand.h
浏览该文件的文档。
00001 # i f n d e f   D e v i l C o m m a n d H 
00002  
00003  # d e f i n e   D e v i l C o m m a n d H 
00004  
00005  
00006  
00007  # i n c l u d e < h g l / t y p e / L i s t . H > 
00008  
00009  # i n c l u d e < h g l / t y p e / W i d e S t r i n g . H > 
00010  
00011  # i n c l u d e " a s _ t o k e n i z e r . h " 
00012  
00013  
00014  
00015  u s i n g   n a m e s p a c e   a n g l e _ s c r i p t ; 
00016  
00017  n a m e s p a c e   h g l 
00018  
00019  { 
00020  
00021      c l a s s   D e v i l E n g i n e ; 
00022  
00023      c l a s s   D e v i l F u n c ; 
00024  
00025  
00026  
00027      u n i o n   D e v i l S y s t e m F u n c P a r a m             / / QpeSpe
00028  
00029      { 
00030  
00031          v o i d   * v o i d _ p o i n t e r ; 
00032  
00033  
00034  
00035          c h a r   c ; 
00036  
00037          c h a r   * s t r ; 
00038  
00039          w c h a r _ t   w c ; 
00040  
00041          w c h a r _ t   * w i d e _ s t r ; 
00042  
00043          i n t   i ; 
00044  
00045          i n t   * i n t _ p o i n t e r ; 
00046  
00047          u i n t   u ; 
00048  
00049          u i n t   * u i n t _ p o i n t e r ; 
00050  
00051          f l o a t   f ; 
00052  
00053          f l o a t   * f l o a t _ p o i n t e r ; 
00054  
00055  
00056  
00057      # i f   H G L _ C P U   = =   H G L _ C P U _ X 8 6 _ 6 4 
00058  
00059          d o u b l e   d ; 
00060  
00061          d o u b l e   * d o u b l e _ p o i n t e r ; 
00062  
00063      # e n d i f / / H G L _ C P U   = =   H G L _ C P U _ X 8 6 _ 6 4 
00064  
00065      } ; / / u n i o n   D e v i l S y s t e m F u n c P a r a m 
00066  
00067  
00068  
00069      s t r u c t   D e v i l F u n c M a p                   / / w[Qpe f\
00070  
00071      { 
00072  
00073          v o i d   * b a s e ;                       / / W0W@W
00074  
00075  
00076  
00077                  v o i d   * f u n c ;                       / / Qpe0W@W
00078  
00079  
00080  
00081          e T o k e n T y p e   r e s u l t ;                 / / ԏV{|W
00082  
00083  
00084  
00085          L i s t < e T o k e n T y p e >   p a r a m ;           / / Spe{|W
00086  
00087  
00088  
00089          D e v i l F u n c M a p ( ) 
00090  
00091          { 
00092  
00093              b a s e = 0 ; 
00094  
00095              f u n c = 0 ; 
00096  
00097          } 
00098  
00099  
00100  
00101                  b o o l   C a l l ( c o n s t   D e v i l S y s t e m F u n c P a r a m   * , c o n s t   i n t , v o i d   * ) ; 
00102  
00103      } ; / / s t r u c t   D e v i l F u n c M a p 
00104  
00105  
00106  
00107      s t r u c t   D e v i l P r o p e r t y M a p               / / w[^\'` f\
00108  
00109      { 
00110  
00111          e T o k e n T y p e   t y p e ;                 / / penc{|W
00112  
00113          
00114  
00115          v o i d   * a d d r e s s ;                     / / ^\'`0W@W
00116  
00117      } ; 
00118  
00119  
00120  
00121      c l a s s   D e v i l C o m m a n d                                                                                                                                                             / / Zb:gcN
00122  
00123      { 
00124  
00125      p u b l i c : 
00126  
00127  
00128  
00129          D e v i l C o m m a n d ( ) { } ; 
00130  
00131          v i r t u a l   ~ D e v i l C o m m a n d ( ) { } ; 
00132  
00133  
00134  
00135          v i r t u a l   b o o l   R u n ( ) { r e t u r n   f a l s e ; } 
00136  
00137      } ; 
00138  
00139  
00140  
00141      t e m p l a t e < t y p e n a m e   T >   c l a s s   D e v i l F u n c C a l l : p u b l i c   D e v i l C o m m a n d                                     / / Qpe|TS
00142  
00143      {                       
00144  
00145      p u b l i c : 
00146  
00147  
00148  
00149          T   r e s u l t ;                                                                                   / / ԏV<P
00150  
00151  
00152  
00153      p u b l i c : 
00154  
00155  
00156  
00157          v i r t u a l   ~ D e v i l F u n c C a l l ( ) { } ; 
00158  
00159  
00160  
00161          v i r t u a l   b o o l   R u n ( ) = 0 ; 
00162  
00163      } ; 
00164  
00165  
00166  
00167  / / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
00168  
00169      c l a s s   D e v i l V a l u e I n t e r f a c e                                                                       / / SϑcS
00170  
00171      { 
00172  
00173      p r o t e c t e d : 
00174  
00175  
00176  
00177          D e v i l E n g i n e   * e n g i n e ; 
00178  
00179  
00180  
00181      p u b l i c : 
00182  
00183  
00184  
00185              e T o k e n T y p e   t y p e ; 
00186  
00187  
00188  
00189      p u b l i c : 
00190  
00191  
00192  
00193          D e v i l V a l u e I n t e r f a c e ( D e v i l E n g i n e   * d e , e T o k e n T y p e   t t ) 
00194  
00195          { 
00196  
00197              e n g i n e = d e ; 
00198  
00199              t y p e = t t ; 
00200  
00201          } 
00202  
00203  
00204  
00205          v i r t u a l   ~ D e v i l V a l u e I n t e r f a c e ( ) { } ; 
00206  
00207      } ; 
00208  
00209  
00210  
00211      t e m p l a t e < t y p e n a m e   T >   c l a s s   D e v i l V a l u e : p u b l i c   D e v i l V a l u e I n t e r f a c e                                 / / Sϑ
00212  
00213      { 
00214  
00215      p u b l i c : 
00216  
00217  
00218  
00219          v i r t u a l   T   & G e t V a l u e ( ) = 0 ; 
00220  
00221  
00222  
00223          v o i d   S e t V a l u e ( T   & ) { } ; 
00224  
00225  
00226  
00227      p u b l i c : 
00228  
00229  
00230  
00231          D e v i l V a l u e ( D e v i l E n g i n e   * d e , e T o k e n T y p e   t t ) : D e v i l V a l u e I n t e r f a c e ( d e , t t ) { } ; 
00232  
00233  
00234  
00235              v i r t u a l   ~ D e v i l V a l u e ( ) { } ; 
00236  
00237      } ; 
00238  
00239  
00240  
00241      c l a s s   D e v i l C o m p I n t e r f a c e                                                                         / / kW{|
00242  
00243      { 
00244  
00245      p u b l i c : 
00246  
00247  
00248  
00249              v i r t u a l   ~ D e v i l C o m p I n t e r f a c e ( ) { } ; 
00250  
00251  
00252  
00253              v i r t u a l   b o o l   C o m p ( ) = 0 ; 
00254  
00255      } ; 
00256  
00257  
00258  
00259      # i f d e f   O P E R _ O V E R 
00260  
00261      # u n d e f   O P E R _ O V E R 
00262  
00263      # e n d i f / / 
00264  
00265  
00266  
00267      # d e f i n e   O P E R _ O V E R ( n a m e , o p e r )     t e m p l a t e < t y p e n a m e   T 1 , t y p e n a m e   T 2 >   c l a s s   n a m e : p u b l i c   D e v i l C o m p I n t e r f a c e     \ 
00268  
00269                                      {   \ 
00270  
00271                                          D e v i l V a l u e < T 1 >   * l e f t ;   \ 
00272  
00273                                          D e v i l V a l u e < T 2 >   * r i g h t ;     \ 
00274  
00275                                          \ 
00276  
00277                                      p u b l i c :   \ 
00278  
00279                                          \ 
00280  
00281                                          n a m e ( D e v i l V a l u e I n t e r f a c e   * l , D e v i l V a l u e I n t e r f a c e   * r )   \ 
00282  
00283                                          {   \ 
00284  
00285                                              l e f t   = ( D e v i l V a l u e < T 1 >   * ) l ;     \ 
00286  
00287                                              r i g h t = ( D e v i l V a l u e < T 2 >   * ) r ;     \ 
00288  
00289                                          }   \ 
00290  
00291                                          \ 
00292  
00293                                          ~ n a m e ( )   \ 
00294  
00295                                          {   \ 
00296  
00297                                              d e l e t e   l e f t ;     \ 
00298  
00299                                              d e l e t e   r i g h t ;   \ 
00300  
00301                                          }   \ 
00302  
00303                                          \ 
00304  
00305                                          b o o l   C o m p ( )   \ 
00306  
00307                                          {   \ 
00308  
00309                                              r e t u r n ( l e f t - > G e t V a l u e ( )   o p e r   r i g h t - > G e t V a l u e ( ) ) ;     \ 
00310  
00311                                          }   \ 
00312  
00313                                      } ; 
00314  
00315                                      
00316  
00317      O P E R _ O V E R ( D e v i l C o m p E q u ,           = = ) ; 
00318  
00319      O P E R _ O V E R ( D e v i l C o m p N o t E q u ,         ! = ) ; 
00320  
00321      O P E R _ O V E R ( D e v i l C o m p L e s s E q u ,       < = ) ; 
00322  
00323      O P E R _ O V E R ( D e v i l C o m p G r e a t e r E q u ,     > = ) ; 
00324  
00325      O P E R _ O V E R ( D e v i l C o m p L e s s ,         <   ) ; 
00326  
00327      O P E R _ O V E R ( D e v i l C o m p G r e a t e r ,       >   ) ; 
00328  
00329  
00330  
00331      # u n d e f   O P E R _ O V E R 
00332  
00333  
00334  
00335      # i f d e f   D E V I L _ V A L U E 
00336  
00337      # d e f i n e   D E V I L _ V A L U E 
00338  
00339      # e n d i f / / D E V I L _ V A L U E 
00340  
00341  
00342  
00343      # d e f i n e   D E V I L _ V A L U E ( n a m e , T , t t , p r o c )   c l a s s   n a m e : p u b l i c   D e v i l V a l u e < T >       \ 
00344  
00345                                          {   \ 
00346  
00347                                              T   v a l u e ;     \ 
00348  
00349                                              \ 
00350  
00351                                          p u b l i c :   \ 
00352  
00353                                          \ 
00354  
00355                                              T   & G e t V a l u e ( ) { r e t u r n   v a l u e ; }     \ 
00356  
00357                                              \ 
00358  
00359                                          p u b l i c :   \ 
00360  
00361                                          \ 
00362  
00363                                              n a m e ( D e v i l E n g i n e   * d e , c o n s t   w c h a r _ t   * s t r ) : D e v i l V a l u e < T > ( d e , t t )   \ 
00364  
00365                                              {   \ 
00366  
00367                                                  v a l u e = p r o c ( s t r ) ;     \ 
00368  
00369                                              }   \ 
00370  
00371                                          } ; 
00372  
00373  
00374  
00375      D E V I L _ V A L U E ( D e v i l I n t e g e r ,   i n t ,     t t I n t ,         w t o i ) ;                 / / w[pe<P,  g&{Stepe
00376  
00377      D E V I L _ V A L U E ( D e v i l U I n t e g e r ,     u i n t ,   t t U I n t ,       w t o u ) ;                 / / w[pe<P, e&{Stepe
00378  
00379      D E V I L _ V A L U E ( D e v i l F l o a t ,       f l o a t ,     t t F l o a t ,     w t o f ) ;                 / / w[pe<P, nmppe
00380  
00381      D E V I L _ V A L U E ( D e v i l B o o l ,         b o o l ,   t t B o o l   ,     w t o b ) ;                 / / w[pe<P, ^\W
00382  
00383      D E V I L _ V A L U E ( D e v i l I n t 6 4 ,       i n t 6 4 ,     t t I n t 6 4 ,     w t o i ) ; 
00384  
00385      D E V I L _ V A L U E ( D e v i l U I n t 6 4 ,     u i n t 6 4 ,   t t U I n t 6 4 ,   w t o u ) ; 
00386  
00387      D E V I L _ V A L U E ( D e v i l D o u b l e ,     d o u b l e ,   t t D o u b l e ,   w t o d ) ; 
00388  
00389  
00390  
00391      # u n d e f   D E V I L _ V A L U E 
00392  
00393  
00394  
00395      t e m p l a t e < t y p e n a m e   T >   c l a s s   D e v i l V a l u e P r o p e r t y : p u b l i c   D e v i l V a l u e < T >                                 / / Sϑw[^\'` f\
00396  
00397      { 
00398  
00399          T   * a d d r e s s ; 
00400  
00401  
00402  
00403      p u b l i c : 
00404  
00405  
00406  
00407          D e v i l V a l u e P r o p e r t y ( D e v i l E n g i n e   * d e , D e v i l P r o p e r t y M a p   * d p m , e T o k e n T y p e   t y p e ) : D e v i l V a l u e < T > ( d e , t y p e ) 
00408  
00409          { 
00410  
00411              a d d r e s s = ( T   * ) ( d p m - > a d d r e s s ) ; 
00412  
00413          } 
00414  
00415  
00416  
00417          T   & G e t V a l u e ( ) 
00418  
00419          { 
00420  
00421                      r e t u r n   * a d d r e s s ; 
00422  
00423          } 
00424  
00425      } ; 
00426  
00427  
00428  
00429      t e m p l a t e < t y p e n a m e   T >   c l a s s   D e v i l V a l u e F u n c M a p : p u b l i c   D e v i l V a l u e < T >                               / / Sϑ:   Qpe f\
00430  
00431      { 
00432  
00433          D e v i l C o m m a n d   * c m d ; 
00434  
00435  
00436  
00437      p u b l i c : 
00438  
00439  
00440  
00441          D e v i l V a l u e F u n c M a p ( D e v i l E n g i n e   * d e , D e v i l C o m m a n d   * d f c , e T o k e n T y p e   t y p e ) : D e v i l V a l u e < T > ( d e , t y p e ) 
00442  
00443          { 
00444  
00445              c m d = d f c ; 
00446  
00447          } 
00448  
00449  
00450  
00451          ~ D e v i l V a l u e F u n c M a p ( ) 
00452  
00453          { 
00454  
00455                      d e l e t e   c m d ; 
00456  
00457          } 
00458  
00459  
00460  
00461          T   & G e t V a l u e ( ) 
00462  
00463          { 
00464  
00465              c m d - > R u n ( ) ; 
00466  
00467  
00468  
00469              r e t u r n   ( ( D e v i l F u n c C a l l < T >   * ) c m d ) - > r e s u l t ; 
00470  
00471          } 
00472  
00473      } ; 
00474  
00475  
00476  
00477      t e m p l a t e < t y p e n a m e   T >   c l a s s   D e v i l S c r i p t V a l u e : p u b l i c   D e v i l V a l u e < T >                                 / / Sϑ,gSϑ
00478  
00479      { 
00480  
00481          W i d e S t r i n g   f u n c _ n a m e ; 
00482  
00483          W i d e S t r i n g   v a l u e _ n a m e ; 
00484  
00485  
00486  
00487          T   v a l u e ; 
00488  
00489  
00490  
00491      p u b l i c : 
00492  
00493  
00494  
00495          D e v i l S c r i p t V a l u e ( ) 
00496  
00497          { 
00498  
00499              f u n c _ n a m e = L " n u l l " ; 
00500  
00501              v a l u e _ n a m e = L " n u l l " ; 
00502  
00503          } 
00504  
00505  
00506  
00507          D e v i l S c r i p t V a l u e ( D e v i l E n g i n e   * d e , c o n s t   W i d e S t r i n g   & f n , c o n s t   W i d e S t r i n g   & v n , e T o k e n T y p e   t t ) : D e v i l V a l u e < T > ( d e , t t ) 
00508  
00509          { 
00510  
00511              f u n c _ n a m e = f n ; 
00512  
00513              v a l u e _ n a m e = v n ; 
00514  
00515          } 
00516  
00517  
00518  
00519          T   & G e t V a l u e ( )   
00520  
00521          { 
00522  
00523              r e t u r n   v a l u e ; 
00524  
00525          } 
00526  
00527  
00528  
00529          v o i d   S e t V a l u e ( T   & v )   
00530  
00531          { 
00532  
00533              v a l u e = v ; 
00534  
00535          } 
00536  
00537      } ; 
00538  
00539  / / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
00540  
00541      t e m p l a t e < t y p e n a m e   T >   c l a s s   D e v i l S y s t e m F u n c C a l l : p u b l i c   D e v i l F u n c C a l l < T >                             / / w[Qpe|TS
00542  
00543      { 
00544  
00545      p u b l i c : 
00546  
00547      } ; 
00548  
00549  
00550  
00551      t e m p l a t e < t y p e n a m e   T >   c l a s s   D e v i l S y s t e m F u n c C a l l F i x e d : p u b l i c   D e v i l F u n c C a l l < T >                                           / / V[Spevw[Qpe|TS
00552  
00553      { 
00554  
00555          D e v i l F u n c M a p   * f u n c ;               / / w[Qpe f\
00556  
00557          
00558  
00559          D e v i l S y s t e m F u n c P a r a m   * p a r a m ; 
00560  
00561          i n t   p a r a m _ s i z e ; 
00562  
00563  
00564  
00565      p u b l i c : 
00566  
00567  
00568  
00569          D e v i l S y s t e m F u n c C a l l F i x e d ( D e v i l F u n c M a p   * d f m , D e v i l S y s t e m F u n c P a r a m   * p , i n t   p c ) 
00570  
00571          { 
00572  
00573              f u n c = d f m ; 
00574  
00575  
00576  
00577              p a r a m = p ; 
00578  
00579              p a r a m _ s i z e = p c * s i z e o f ( D e v i l S y s t e m F u n c P a r a m ) ; 
00580  
00581          } 
00582  
00583  
00584  
00585          ~ D e v i l S y s t e m F u n c C a l l F i x e d ( ) 
00586  
00587          { 
00588  
00589              d e l e t e [ ]   p a r a m ; 
00590  
00591          } 
00592  
00593  
00594  
00595          b o o l   R u n ( ) 
00596  
00597          { 
00598  
00599              r e t u r n   f u n c - > C a l l ( p a r a m , p a r a m _ s i z e , & r e s u l t ) ; 
00600  
00601          } 
00602  
00603      } ; 
00604  
00605  
00606  
00607  / /     c l a s s   D e v i l S y s t e m F u n c C a l l D y n a m i c : p u b l i c   D e v i l F u n c C a l l                                           / / SSSpevw[Qpe|TS
00608  
00609  / /     { 
00610  
00611  / /         D e v i l F u n c M a p   * f u n c ;               / / w[Qpe f\
00612  
00613  / / 
00614  
00615  / /         u i n t   * p a r a m ; 
00616  
00617  / /         i n t   p a r a m _ s i z e ; 
00618  
00619  / / 
00620  
00621  / /     p u b l i c : 
00622  
00623  / / 
00624  
00625  / /         D e v i l S y s t e m F u n c C a l l D y n a m i c ( D e v i l F u n c M a p   * ) ; 
00626  
00627  / /         ~ D e v i l S y s t e m F u n c C a l l D y n a m i c ( ) ; 
00628  
00629  / / 
00630  
00631  / /         b o o l   R u n ( ) ; 
00632  
00633  / /     } ; 
00634  
00635  
00636  
00637      c l a s s   D e v i l S c r i p t F u n c C a l l : p u b l i c   D e v i l C o m m a n d                                                                                                       / / ,gQpe|TS
00638  
00639      { 
00640  
00641          D e v i l E n g i n e   * e n g i n e ; 
00642  
00643          D e v i l F u n c   * f u n c ; 
00644  
00645          
00646  
00647      p u b l i c : 
00648  
00649  
00650  
00651          D e v i l S c r i p t F u n c C a l l ( D e v i l E n g i n e   * , D e v i l F u n c   * ) ; 
00652  
00653  
00654  
00655          b o o l   R u n ( ) ;           
00656  
00657      } ; 
00658  
00659  
00660  
00661      c l a s s   D e v i l G o t o : p u b l i c   D e v i l C o m m a n d                                                                                                                           / / l
00662  
00663      { 
00664  
00665          D e v i l E n g i n e   * e n g i n e ; 
00666  
00667          D e v i l F u n c   * f u n c ; 
00668  
00669          W i d e S t r i n g   n a m e ; 
00670  
00671  
00672  
00673          i n t   i n d e x ; 
00674  
00675          
00676  
00677      p u b l i c : 
00678  
00679  
00680  
00681          D e v i l G o t o ( D e v i l E n g i n e   * , D e v i l F u n c   * , c o n s t   W i d e S t r i n g   & ) ; 
00682  
00683  
00684  
00685          b o o l   R u n ( ) ; 
00686  
00687      } ; 
00688  
00689  
00690  
00691      c l a s s   D e v i l C o m p G o t o : p u b l i c   D e v i l C o m m a n d                                                                                                                   / / kv^l
00692  
00693      { 
00694  
00695          D e v i l E n g i n e   * e n g i n e ; 
00696  
00697          D e v i l C o m p I n t e r f a c e   * c o m p ; 
00698  
00699          D e v i l F u n c   * f u n c ; 
00700  
00701  
00702  
00703          i n t   i n d e x ; 
00704  
00705  
00706  
00707      p u b l i c : 
00708  
00709  
00710  
00711          W i d e S t r i n g   e l s e _ f l a g ; 
00712  
00713  
00714  
00715      p u b l i c : 
00716  
00717  
00718  
00719          D e v i l C o m p G o t o ( D e v i l E n g i n e   * , D e v i l C o m p I n t e r f a c e   * d c i , D e v i l F u n c   * ) ; 
00720  
00721          ~ D e v i l C o m p G o t o ( ) ; 
00722  
00723  
00724  
00725          b o o l   R u n ( ) ; 
00726  
00727      } ; 
00728  
00729  
00730  
00731      c l a s s   D e v i l R e t u r n : p u b l i c   D e v i l C o m m a n d                                                                                                                       / / QpeԏV
00732  
00733      { 
00734  
00735          D e v i l E n g i n e   * e n g i n e ; 
00736  
00737  
00738  
00739      p u b l i c : 
00740  
00741  
00742  
00743          D e v i l R e t u r n ( D e v i l E n g i n e   * ) ; 
00744  
00745  
00746  
00747          b o o l   R u n ( ) ; 
00748  
00749      } ; 
00750  
00751  
00752  
00753      c l a s s   D e v i l S y s t e m V a l u e E q u : p u b l i c   D e v i l C o m m a n d                                                   / / w[SϑK<P
00754  
00755      { 
00756  
00757      p u b l i c : 
00758  
00759  
00760  
00761          D e v i l S y s t e m V a l u e E q u ( D e v i l E n g i n e   * ) ; 
00762  
00763  
00764  
00765          b o o l   R u n ( ) ; 
00766  
00767      } ; 
00768  
00769  } / / n a m e s p a c e   h g l 
00770  
00771  # e n d i f / / D e v i l C o m m a n d H 
00772  
00773  
 全部  名字空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义