CMGDK r49-rc2
|
00001 # i f n d e f H G L _ E V E N T _ F U N C _ I N C L U D E 00002 00003 # d e f i n e H G L _ E V E N T _ F U N C _ I N C L U D E 00004 00005 00006 00007 # i n c l u d e < h g l / o b j e c t / _ O b j e c t . H > 00008 00009 n a m e s p a c e h g l 00010 00011 { 00012 00013 # i f d e f _ _ B O R L A N D C _ _ 00014 00015 00016 00017 # d e f i n e S e t E v e n t C a l l ( e v e n t _ o b j , o b j _ t h i s , c l a s s _ n a m e , e v e n t _ f u n c ) e v e n t _ o b j = o b j _ t h i s - > c l a s s _ n a m e : : e v e n t _ f u n c 00018 00019 # d e f i n e S a f e C a l l E v e n t ( e v e n t _ o b j , i n t r o ) { i f ( e v e n t _ o b j ) e v e n t _ o b j i n t r o ; } 00020 00021 # d e f i n e C a l l E v e n t ( e v e n t _ o b j , i n t r o ) e v e n t _ o b j i n t r o 00022 00023 # d e f i n e D e f E v e n t ( r e s u l t , n a m e , i n t r o ) r e s u l t ( _ _ c l o s u r e * n a m e ) i n t r o 00024 00025 00026 00027 # e l s e 00028 00029 00030 00031 t e m p l a t e < t y p e n a m e F u n c > s t r u c t E v e n t F u n c 00032 00033 { 00034 00035 u n i o n 00036 00037 { 00038 00039 v o i d * v p _ t h i s ; 00040 00041 _ O b j e c t * t h i s _ p o i n t e r ; 00042 00043 } ; 00044 00045 00046 00047 u n i o n 00048 00049 { 00050 00051 v o i d * v p _ f u n c ; 00052 00053 F u n c f u n c _ p o i n t e r ; 00054 00055 O b j e c t M e m b e r F u n c o m f ; 00056 00057 } ; 00058 00059 00060 00061 v o i d o p e r a t o r = ( v o i d * v ) 00062 00063 { 00064 00065 i f ( v = = 0 ) 00066 00067 v p _ f u n c = 0 ; 00068 00069 } 00070 00071 00072 00073 b o o l o p e r a t o r = = ( v o i d * v ) 00074 00075 { 00076 00077 r e t u r n ( v p _ f u n c = = v ) ; 00078 00079 } 00080 00081 00082 00083 b o o l o p e r a t o r ! = ( v o i d * v ) 00084 00085 { 00086 00087 r e t u r n ( v p _ f u n c ! = v ) ; 00088 00089 } 00090 00091 } ; / / t e m p l a t e < t y p e n a m e F u n c > s t r u c t E v e n t F u n c 00092 00093 00094 00095 # d e f i n e S e t E v e n t C a l l ( e v e n t _ o b j , o b j _ t h i s , c l a s s _ n a m e , e v e n t _ f u n c ) { \ 00096 00097 e v e n t _ o b j . v p _ t h i s = o b j _ t h i s ; \ 00098 00099 e v e n t _ o b j . v p _ f u n c = G e t M e m b e r F u n c P o i n t e r ( c l a s s _ n a m e , e v e n t _ f u n c ) ; \ 00100 00101 } 00102 00103 00104 00105 # d e f i n e S e t E v e n t T h i s ( e v e n t _ o b j , o b j _ t h i s ) e v e n t _ o b j . v p _ t h i s = o b j _ t h i s ; 00106 00107 00108 00109 # d e f i n e C a l l E v e n t ( e v e n t _ o b j , i n t r o ) ( ( e v e n t _ o b j . t h i s _ p o i n t e r - > * ( e v e n t _ o b j . f u n c _ p o i n t e r ) ) i n t r o ) 00110 00111 00112 00113 # d e f i n e S a f e C a l l E v e n t ( e v e n t _ o b j , i n t r o ) { i f ( e v e n t _ o b j . v p _ f u n c ) C a l l E v e n t ( e v e n t _ o b j , i n t r o ) ; } 00114 00115 00116 00117 # d e f i n e D e f E v e n t ( r e s u l t , n a m e , i n t r o ) E v e n t F u n c < r e s u l t ( _ O b j e c t : : * ) i n t r o > n a m e ; 00118 00119 00120 00121 # e n d i f / / _ _ B O R L A N D C _ _ 00122 00123 00124 00125 / * 00126 00127 00128 00129 O(uel: 00130 00131 00132 00133 c l a s s E x a m p l e 00134 00135 { 00136 00137 / / SB o r l a n d / C o d e G e a r e_ 00138 00139 v o i d ( _ _ c l o s u r e * O n C l i c k ) ( O b j e c t * ) ; 00140 00141 00142 00143 / / s(ue_ 00144 00145 D e f E v e n t ( v o i d , O n C l i c k , ( O b j e c t * ) ) ; 00146 00147 } ; 00148 00149 00150 00151 v o i d T e s t : : C l i c k P r o c ( O b j e c t * ) ; 00152 00153 00154 00155 v o i d T e s t : : f u n c ( ) 00156 00157 { 00158 00159 E x a m p l e * e x p ; 00160 00161 00162 00163 { 00164 00165 / / SB o r l a n d / C o d e G e a r e_ 00166 00167 e x p - > O n C l i c k = t h i s - > C l i c k P r o c ; 00168 00169 b 00170 00171 e x p - > O n C l i c k = C l i c k P r o c ; 00172 00173 00174 00175 / / s(ue_ 00176 00177 S e t E v e n t C a l l ( e x p - > O n C l i c k , t h i s , T e s t , C l i c k P r o c ) ; 00178 00179 } 00180 00181 00182 00183 { 00184 00185 / / SB o r l a n d / C o d e G e a r e_ 00186 00187 e x p - > O n C l i c k ( N U L L ) ; 00188 00189 00190 00191 / / s(ue_ 00192 00193 C a l l E v e n t ( e x p - > O n C l i c k , ( N U L L ) ) ; 00194 00195 } 00196 00197 } 00198 00199 00200 00201 * / 00202 00203 } / / n a m e s p a c e h g l 00204 00205 # e n d i f / / H G L _ E V E N T _ F U N C _ I N C L U D E 00206 00207