CMGDK r49-rc2
K:/CMGDKv18/SDK/Include/hgl/PlugIn.H
浏览该文件的文档。
00001 # i f n d e f   H G L _ P L U G I N _ I N C L U D E 
00002  
00003  # d e f i n e   H G L _ P L U G I N _ 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  u s i n g   n a m e s p a c e   h g l ; 
00010  
00011  
00012  
00013  / * * 
00014  
00015  *   cN{|Wg>N
00016  
00017  * / 
00018  
00019  e n u m   P l u g I n T y p e           / / / cN{|Wg>N
00020  
00021  { 
00022  
00023      p i t N o r m a l = 0 ,         / / / < nfcN
00024  
00025  
00026  
00027      p i t L o g ,               / / / < e_
00028  
00029      p i t P l a t f o r m ,         / / / < s^S
00030  
00031      p i t O p e n G L ,             / / / < O p e n G L 
00032  
00033      p i t O p e n A L ,             / / / < O p e n A L 
00034  
00035  
00036  
00037      p i t E n d 
00038  
00039  } ; 
00040  
00041  
00042  
00043  t y p e d e f   v o i d         ( _ _ c d e c l   * I n i t P l u g I n P R O C ) ( ) ;                                         / / RYScN
00044  
00045  t y p e d e f   v o i d         ( _ _ c d e c l   * C l o s e P l u g I n P R O C ) ( ) ;                                       / / sQcN
00046  
00047  
00048  
00049  t y p e d e f   u i n t 3 2             ( _ _ c d e c l   * G e t P l u g I n V e r s i o n P R O C ) ( ) ;                                                     / / S_cNHr,gS
00050  
00051  t y p e d e f   w c h a r _ t   *       ( _ _ c d e c l   * G e t P l u g I n I n t r o P R O C ) ( ) ;                                                         / / S_cNN~Oo`
00052  
00053  
00054  
00055  t y p e d e f   b o o l         ( _ _ c d e c l   * G e t P l u g I n I n t e r f a c e P R O C ) ( u i n t 3 2 , v o i d   * ) ;                           / / S_cNcS
00056  
00057  t y p e d e f   v o i d             ( _ _ c d e c l   * S e t P l u g I n I n t e r f a c e P R O C ) ( v o i d   * , v o i d   * ) ;                                   / / ncNcS
00058  
00059  
00060  
00061  t y p e d e f   b o o l         ( _ _ c d e c l   * L o a d I n t e r f a c e B y N a m e P R O C ) ( c o n s t   w c h a r _ t   * , u i n t 3 2 , v o i d   * ) ;     / / S_cS
00062  
00063  t y p e d e f   b o o l         ( _ _ c d e c l   * L o a d I n t e r f a c e B y I n d e x P R O C ) ( u i n t 3 2 , u i n t 3 2 , v o i d   * ) ;             / / S_cS
00064  
00065  
00066  
00067  # i f n d e f   _ _ M A K E _ P L U G I N _ _ 
00068  
00069  # 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 > 
00070  
00071  # i n c l u d e < h g l / t y p e / I n d e x D a t a . H > 
00072  
00073  # i n c l u d e < h g l / E x t e r n a l M o d u l e . H > 
00074  
00075  # i n c l u d e < h g l / L o g I n f o . H > 
00076  
00077  # i n c l u d e < s t r i n g . h > 
00078  
00079  n a m e s p a c e   h g l 
00080  
00081  { 
00082  
00083      / * * 
00084  
00085      *   cNW{|
00086  
00087      * / 
00088  
00089      c l a s s   P l u g I n                                                                                                                                                                         / / / cN
00090  
00091      { 
00092  
00093      p r o t e c t e d : 
00094  
00095  
00096  
00097          i n t   R e f C o u n t ;         
00098  
00099  
00100  
00101          u i n t   v e r ; 
00102  
00103          w c h a r _ t   * i n t r o ; 
00104  
00105  
00106  
00107      p u b l i c : 
00108  
00109  
00110  
00111          P l u g I n T y p e   T y p e ;                                                                             / / / < cN{|W
00112  
00113  
00114  
00115          W i d e S t r i n g   N a m e ;                                                                                                                                                                 / / / < cN
00116 Ty
00117  
00118          W i d e S t r i n g   F i l e N a m e ;                                                                                                                                                         / / / < cNeN
00119 T
00120  
00121  
00122  
00123          u i n t   G e t V e r s i o n ( ) { r e t u r n   v e r ; }                                                                 / / / < cNHr,g
00124  
00125          w c h a r _ t   * G e t I n t r o ( ) { r e t u r n   i n t r o ; }                                                             / / / < cNN~
00126  
00127  
00128  
00129  	 p u b l i c : 
00130  
00131  
00132  
00133          P l u g I n ( ) ; 
00134  
00135          v i r t u a l   ~ P l u g I n ( ) ; 
00136  
00137  
00138  
00139          v i r t u a l   v o i d   A d d R e f ( ) { R e f C o u n t + + ; } 
00140  
00141          v i r t u a l   i n t   R e l e a s e ( ) { r e t u r n ( - - R e f C o u n t ) ; } 
00142  
00143  
00144  
00145          G e t P l u g I n I n t e r f a c e P R O C   G e t I n t e r f a c e ;                                                                                                     / / / < S_cSQpec
00146  
00147      } ; 
00148  
00149  
00150  
00151      / * * 
00152  
00153      *   YcN
00154  
00155      * / 
00156  
00157      c l a s s   E x t e r n a l P l u g I n : p u b l i c   P l u g I n                                                                                                                             / / / YcN
00158  
00159      { 
00160  
00161      p r o t e c t e d : 
00162  
00163  
00164  
00165          E x t e r n a l M o d u l e   m o d u l e ;                                                                                                                                             / / / < cN!jWW
00166  
00167  
00168  
00169          b o o l   L o a d ( ) ; 
00170  
00171  
00172  
00173      p u b l i c : 
00174  
00175  
00176  
00177          E x t e r n a l P l u g I n ( c o n s t   w c h a r _ t   * ) ; 
00178  
00179          v i r t u a l   ~ E x t e r n a l P l u g I n ( ) ; 
00180  
00181      } ; 
00182  
00183  
00184  
00185      v o i d   I n i t P l u g I n ( ) ;                                                                                 / / / < RYScN{t
00186  
00187      v o i d   C l e a r A l l P l u g I n ( ) ;                                                                                                                                                     / / / < nd@b gcN
00188  
00189  
00190  
00191      v o i d   S e t P l u g I n ( P l u g I n   * , P l u g I n T y p e ) ;                                                             / / / < n N*NcN
00192  
00193  
00194  
00195      P l u g I n   *     _ _ c d e c l   L o a d P l u g I n ( c o n s t   w c h a r _ t   * , P l u g I n T y p e = p i t N o r m a l ) ;                                                       / / / < R} N*NcN
00196  
00197      v o i d         _ _ c d e c l   U n l o a d P l u g I n ( P l u g I n   * ) ;                                                                                                           / / / < ʑ>e N*NcN
00198  
00199  
00200  
00201      v o i d   *         _ _ c d e c l   L o a d I n t e r f a c e ( c o n s t   w c h a r _ t   * , i n t ) ;                                           / / / < R} N*NcNv^S_c[cS
00202  
00203      / / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
00204  
00205      t e m p l a t e < t y p e n a m e   T >   s t r u c t   P l u g I n F l a g D a t a 
00206  
00207      { 
00208  
00209          W i d e S t r i n g   f l a g ; 
00210  
00211          T   d a t a ; 
00212  
00213  
00214  
00215          P l u g I n   * p i ; 
00216  
00217      } ; 
00218  
00219  
00220  
00221      t e m p l a t e < t y p e n a m e   T > 
00222  
00223      T   * C h e c k P l u g I n ( _ I n d e x O b j e c t < W i d e S t r i n g , T , P l u g I n F l a g D a t a < T   * >   >   & P I M , c o n s t   W i d e S t r i n g   & f r o n t , u i n t   v e r , c o n s t   W i d e S t r i n g   & n a m e ) 
00224  
00225      { 
00226  
00227          T   * i f a c e ; 
00228  
00229  
00230  
00231          i f ( P I M . G e t ( n a m e , i f a c e ) )                   / / cSS,g1\:NN U L L , @bN
00232 Nvc(uP I M [ n a m e ] 
00233  
00234              r e t u r n ( i f a c e ) ; 
00235  
00236  
00237  
00238          P l u g I n   * p i = L o a d P l u g I n ( f r o n t + L ' . ' + n a m e ) ;   / / R}cN
00239  
00240  
00241  
00242          i f ( p i )     / / R}cNbR
00243  
00244          { 
00245  
00246              i f ( p i - > G e t V e r s i o n ( ) < v e r ) 
00247  
00248              { 
00249  
00250                  P u t E r r o r ( L " cN< % s > vHr,g*YNO" , n a m e . w c _ s t r ( ) ) ; 
00251  
00252              } 
00253  
00254              e l s e 
00255  
00256              { 
00257  
00258                  i f a c e = n e w   T ; 
00259  
00260  
00261  
00262                  m e m s e t ( i f a c e , 0 , s i z e o f ( T ) ) ; 
00263  
00264  
00265  
00266                  i f ( p i - > G e t I n t e r f a c e ( v e r , i f a c e ) ) 
00267  
00268                  { 
00269  
00270                      P I M . A d d ( n a m e , i f a c e ) - > p i = p i ; 
00271  
00272  
00273  
00274                      r e t u r n ( i f a c e ) ; 
00275  
00276                  } 
00277  
00278                  e l s e 
00279  
00280                  { 
00281  
00282                                      d e l e t e   i f a c e ; 
00283  
00284  
00285  
00286                      P u t E r r o r ( L " ScN< % s > cS< v e r : % d > 1Y%! " , n a m e . w c _ s t r ( ) , v e r ) ; 
00287  
00288                  } 
00289  
00290              } 
00291  
00292          } 
00293  
00294  
00295  
00296          P I M . A d d ( n a m e , N U L L ) ; 
00297  
00298  
00299  
00300          i f ( p i ) 
00301  
00302              U n l o a d P l u g I n ( p i ) ; 
00303  
00304  
00305  
00306          P u t E r r o r ( L " R}cN< % s > 1Y%! " , n a m e . w c _ s t r ( ) ) ; 
00307  
00308          r e t u r n ( N U L L ) ; 
00309  
00310      } 
00311  
00312  
00313  
00314      v o i d   R e g i s t r y P I M C l e a r ( v o i d   ( * ) ( ) ) ;         / / lQndQpe
00315  
00316  
00317  
00318      # d e f i n e   P l u g I n M a n a g e ( n a m e , s t r _ n a m e , v e r )   s t a t i c   C u s I n d e x O b j e c t < W i d e S t r i n g , n a m e # # P l u g I n I n t e r f a c e , P l u g I n F l a g D a t a < n a m e # # P l u g I n I n t e r f a c e   * >   >   n a m e # # I n t e r f a c e ;   \ 
00319  
00320                                              \ 
00321  
00322                                              v o i d   n a m e # # P l u g I n C l e a r ( )     \ 
00323  
00324                                              {   \ 
00325  
00326                                                  i n t   n = n a m e # # I n t e r f a c e . C o u n t ;     \ 
00327  
00328                                                  \ 
00329  
00330                                                  i f ( ! n ) r e t u r n ;   \ 
00331  
00332                                                  \ 
00333  
00334                                                  D e b u g L o g ( L " C l e a r < "   s t r _ n a m e   L " >   P l u g - I n s , n u m b e r = % d . " , n ) ;     \ 
00335  
00336                                                  \ 
00337  
00338                                                  w h i l e ( n - - )     \ 
00339  
00340                                                  {   \ 
00341  
00342                                                      P l u g I n F l a g D a t a < n a m e # # P l u g I n I n t e r f a c e   * >   * p i f d = n a m e # # I n t e r f a c e . G e t I t e m ( n ) ;   \ 
00343  
00344                                                      \ 
00345  
00346                                                      i f ( p i f d )     \ 
00347  
00348                                                          U n l o a d P l u g I n ( p i f d - > p i ) ;   \ 
00349  
00350                                                  }   \ 
00351  
00352                                                  \ 
00353  
00354                                                  n a m e # # I n t e r f a c e . C l e a r ( ) ;     \ 
00355  
00356                                              }   \ 
00357  
00358                                              \ 
00359  
00360                                              n a m e # # P l u g I n I n t e r f a c e   * n a m e # # I n t e r f a c e C h e c k ( c o n s t   W i d e S t r i n g   & p l u g i n _ n a m e )     \ 
00361  
00362                                              {   \ 
00363  
00364                                                  s t a t i c   b o o l   f i r s t = t r u e ;   \ 
00365  
00366                                                  \ 
00367  
00368                                                  i f ( f i r s t )   \ 
00369  
00370                                                  {   \ 
00371  
00372                                                      f i r s t = f a l s e ;     \ 
00373  
00374                                                      \ 
00375  
00376                                                      D e b u g L o g ( L " R e g i s t r y   < "   s t r _ n a m e   L " >   P l u g - I n   M a n a g e r . " ) ;   \ 
00377  
00378                                                      R e g i s t r y P I M C l e a r ( n a m e # # P l u g I n C l e a r ) ;     \ 
00379  
00380                                                  }   \ 
00381  
00382                                                  \ 
00383  
00384                                                  r e t u r n   C h e c k P l u g I n < n a m e # # P l u g I n I n t e r f a c e > ( n a m e # # I n t e r f a c e , s t r _ n a m e , v e r , p l u g i n _ n a m e ) ;     \ 
00385  
00386                                              } 
00387  
00388  } / / n a m e s p a c e   h g l 
00389  
00390  # e n d i f / / _ _ M A K E _ P L U G I N _ _ 
00391  
00392  # e n d i f / / H G L _ P L U G I N _ I N C L U D E 
00393  
00394  
 全部  名字空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义