CMGDK r49-rc2
|
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*NcNv^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