Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

383 lines
20 KiB

  1. /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2. Copyright (c) 1999-1999 Microsoft Corporation
  3. Module Name:
  4. cgvisitor.hxx
  5. Abstract:
  6. classes and templates for visitors
  7. Notes:
  8. History:
  9. mzoran Nov-24-1999 Created.
  10. ----------------------------------------------------------------------------*/
  11. class CG_ARRAY;
  12. class CG_ASYNC_HANDLE;
  13. class CG_AUX;
  14. class CG_BASETYPE;
  15. class CG_BYTE_COUNT_POINTER;
  16. class CG_CALLBACK_PROC;
  17. class CG_CASE;
  18. class CG_CLASS;
  19. class CG_COCLASS;
  20. class CG_COMP;
  21. class CG_COMPLEX_STRUCT;
  22. class CG_CONFORMANT_ARRAY;
  23. class CG_CONFORMANT_STRING_ARRAY;
  24. class CG_CONFORMANT_STRUCT;
  25. class CG_CONFORMANT_VARYING_ARRAY;
  26. class CG_CONFORMANT_VARYING_STRUCT;
  27. class CG_CONTEXT_HANDLE;
  28. class CG_CS_TAG;
  29. class CG_CSTUB_FILE;
  30. class CG_DEFAULT_CASE;
  31. class CG_DISPINTERFACE;
  32. class CG_ENCAPSULATED_STRUCT;
  33. class CG_ENCODE_PROC;
  34. class CG_ENUM;
  35. class CG_ERROR_STATUS_T;
  36. class CG_FIELD;
  37. class CG_FILE;
  38. class CG_FIXED_ARRAY;
  39. class CG_GENERIC_HANDLE;
  40. class CG_HDR_FILE;
  41. class CG_HRESULT;
  42. class CG_ID;
  43. class CG_IGNORED_POINTER;
  44. class CG_IID_FILE;
  45. class CG_IIDIS_INTERFACE_POINTER;
  46. class CG_INHERITED_OBJECT_INTERFACE;
  47. class CG_INHERITED_OBJECT_PROC;
  48. class CG_INT3264;
  49. class CG_INTERFACE;
  50. class CG_INTERFACE_POINTER;
  51. class CG_INTERFACE_REFERENCE;
  52. class CG_IUNKNOWN_OBJECT_INTERFACE;
  53. class CG_IUNKNOWN_OBJECT_PROC;
  54. class CG_LENGTH_POINTER;
  55. class CG_LIBRARY;
  56. class CG_LOCAL_OBJECT_PROC;
  57. class CG_MODULE;
  58. class CG_NETMONSTUB_FILE;
  59. class CG_OBJECT_INTERFACE;
  60. class CG_OBJECT_PROC;
  61. class CG_PARAM;
  62. class CG_PIPE;
  63. class CG_POINTER;
  64. class CG_PRIMITIVE_HANDLE;
  65. class CG_PROC;
  66. class CG_PROXY_FILE;
  67. class CG_QUALIFIED_POINTER;
  68. class CG_REPRESENT_AS;
  69. class CG_RETURN;
  70. class CG_SAFEARRAY;
  71. class CG_SIZE_LENGTH_POINTER;
  72. class CG_SIZE_POINTER;
  73. class CG_SIZE_STRING_POINTER;
  74. class CG_SOURCE;
  75. class CG_SSTUB_FILE;
  76. class CG_STRING_ARRAY;
  77. class CG_STRING_POINTER;
  78. class CG_STRUCT;
  79. class CG_TRANSMIT_AS;
  80. class CG_TYPE_ENCODE;
  81. class CG_TYPE_ENCODE_PROC;
  82. class CG_TYPEDEF;
  83. class CG_TYPELIBRARY_FILE;
  84. class CG_UNION;
  85. class CG_UNION_FIELD;
  86. class CG_USER_MARSHAL;
  87. class CG_VARYING_ARRAY;
  88. //
  89. // New 64b NDR types
  90. //
  91. //
  92. // New Class for 64bit NDR
  93. //
  94. // structures
  95. class CG_FULL_COMPLEX_STRUCT;
  96. class CG_FORCED_COMPLEX_STRUCT;
  97. class CG_CONFORMANT_FULL_COMPLEX_STRUCT;
  98. class CG_CONFORMANT_FORCED_COMPLEX_STRUCT;
  99. class CG_REGION;
  100. class CG_SIMPLE_REGION;
  101. class CG_COMPLEX_REGION;
  102. // arrays
  103. class CG_COMPLEX_FIXED_ARRAY;
  104. class CG_FORCED_COMPLEX_FIXED_ARRAY;
  105. class CG_FULL_COMPLEX_FIXED_ARRAY;
  106. class CG_COMPLEX_CONFORMANT_ARRAY;
  107. class CG_FORCED_COMPLEX_CONFORMANT_ARRAY;
  108. class CG_FULL_COMPLEX_CONFORMANT_ARRAY;
  109. class CG_COMPLEX_VARYING_ARRAY;
  110. class CG_FORCED_COMPLEX_VARYING_ARRAY;
  111. class CG_FULL_COMPLEX_VARYING_ARRAY;
  112. class CG_COMPLEX_CONFORMANT_VARYING_ARRAY;
  113. class CG_FORCED_COMPLEX_CONFORMANT_VARYING_ARRAY;
  114. class CG_FULL_COMPLEX_CONFORMANT_VARYING_ARRAY;
  115. // qualified pointers
  116. class CG_COMPLEX_SIZE_POINTER;
  117. class CG_FORCED_COMPLEX_SIZE_POINTER;
  118. class CG_FULL_COMPLEX_SIZE_POINTER;
  119. class CG_COMPLEX_LENGTH_POINTER;
  120. class CG_FORCED_COMPLEX_LENGTH_POINTER;
  121. class CG_FULL_COMPLEX_LENGTH_POINTER;
  122. class CG_COMPLEX_SIZE_LENGTH_POINTER;
  123. class CG_FORCED_COMPLEX_SIZE_LENGTH_POINTER;
  124. class CG_FULL_COMPLEX_SIZE_LENGTH_POINTER;
  125. class CG_PAD;
  126. class CG_VISITOR
  127. {
  128. public:
  129. virtual void Visit( CG_ARRAY *pClass ) = 0;
  130. virtual void Visit( CG_ASYNC_HANDLE *pClass ) = 0;
  131. virtual void Visit( CG_AUX *pClass ) = 0;
  132. virtual void Visit( CG_BASETYPE *pClass ) = 0;
  133. virtual void Visit( CG_BYTE_COUNT_POINTER *pClass ) = 0;
  134. virtual void Visit( CG_CALLBACK_PROC *pClass ) = 0;
  135. virtual void Visit( CG_CASE *pClass ) = 0;
  136. virtual void Visit( CG_CLASS *pClass ) = 0;
  137. virtual void Visit( CG_COCLASS *pClass ) = 0;
  138. virtual void Visit( CG_COMP *pClass ) = 0;
  139. virtual void Visit( CG_COMPLEX_STRUCT *pClass ) = 0;
  140. virtual void Visit( CG_CONFORMANT_ARRAY *pClass ) = 0;
  141. virtual void Visit( CG_CONFORMANT_STRING_ARRAY *pClass ) = 0;
  142. virtual void Visit( CG_CONFORMANT_STRUCT *pClass ) = 0;
  143. virtual void Visit( CG_CONFORMANT_VARYING_ARRAY *pClass ) = 0;
  144. virtual void Visit( CG_CONFORMANT_VARYING_STRUCT *pClass ) = 0;
  145. virtual void Visit( CG_CONTEXT_HANDLE *pClass ) = 0;
  146. virtual void Visit( CG_CS_TAG *pClass ) = 0;
  147. virtual void Visit( CG_CSTUB_FILE *pClass ) = 0;
  148. virtual void Visit( CG_DEFAULT_CASE *pClass ) = 0;
  149. virtual void Visit( CG_DISPINTERFACE *pClass ) = 0;
  150. virtual void Visit( CG_ENCAPSULATED_STRUCT *pClass ) = 0;
  151. virtual void Visit( CG_ENCODE_PROC *pClass ) = 0;
  152. virtual void Visit( CG_ENUM *pClass ) = 0;
  153. virtual void Visit( CG_ERROR_STATUS_T *pClass ) = 0;
  154. virtual void Visit( CG_FIELD *pClass ) = 0;
  155. virtual void Visit( CG_FILE *pClass ) = 0;
  156. virtual void Visit( CG_FIXED_ARRAY *pClass ) = 0;
  157. virtual void Visit( CG_GENERIC_HANDLE *pClass ) = 0;
  158. virtual void Visit( CG_HDR_FILE *pClass ) = 0;
  159. virtual void Visit( CG_HRESULT *pClass ) = 0;
  160. virtual void Visit( CG_ID *pClass ) = 0;
  161. virtual void Visit( CG_IGNORED_POINTER *pClass ) = 0;
  162. virtual void Visit( CG_IID_FILE *pClass ) = 0;
  163. virtual void Visit( CG_IIDIS_INTERFACE_POINTER *pClass ) = 0;
  164. virtual void Visit( CG_INHERITED_OBJECT_INTERFACE *pClass ) = 0;
  165. virtual void Visit( CG_INHERITED_OBJECT_PROC *pClass ) = 0;
  166. virtual void Visit( CG_INT3264 *pClass ) = 0;
  167. virtual void Visit( CG_INTERFACE *pClass ) = 0;
  168. virtual void Visit( CG_INTERFACE_POINTER *pClass ) = 0;
  169. virtual void Visit( CG_INTERFACE_REFERENCE *pClass ) = 0;
  170. virtual void Visit( CG_IUNKNOWN_OBJECT_INTERFACE *pClass ) = 0;
  171. virtual void Visit( CG_IUNKNOWN_OBJECT_PROC *pClass ) = 0;
  172. virtual void Visit( CG_LENGTH_POINTER *pClass ) = 0;
  173. virtual void Visit( CG_LIBRARY *pClass ) = 0;
  174. virtual void Visit( CG_LOCAL_OBJECT_PROC *pClass ) = 0;
  175. virtual void Visit( CG_MODULE *pClass ) = 0;
  176. virtual void Visit( CG_NETMONSTUB_FILE *pClass ) = 0;
  177. virtual void Visit( CG_OBJECT_INTERFACE *pClass ) = 0;
  178. virtual void Visit( CG_OBJECT_PROC *pClass ) = 0;
  179. virtual void Visit( CG_PARAM *pClass ) = 0;
  180. virtual void Visit( CG_PIPE *pClass ) = 0;
  181. virtual void Visit( CG_POINTER *pClass ) = 0;
  182. virtual void Visit( CG_PRIMITIVE_HANDLE *pClass ) = 0;
  183. virtual void Visit( CG_PROC *pClass ) = 0;
  184. virtual void Visit( CG_PROXY_FILE *pClass ) = 0;
  185. virtual void Visit( CG_QUALIFIED_POINTER *pClass ) = 0;
  186. virtual void Visit( CG_REPRESENT_AS *pClass ) = 0;
  187. virtual void Visit( CG_RETURN *pClass ) = 0;
  188. virtual void Visit( CG_SAFEARRAY *pClass ) = 0;
  189. virtual void Visit( CG_SIZE_LENGTH_POINTER *pClass ) = 0;
  190. virtual void Visit( CG_SIZE_POINTER *pClass ) = 0;
  191. virtual void Visit( CG_SIZE_STRING_POINTER *pClass ) = 0;
  192. virtual void Visit( CG_SOURCE *pClass ) = 0;
  193. virtual void Visit( CG_SSTUB_FILE *pClass ) = 0;
  194. virtual void Visit( CG_STRING_ARRAY *pClass ) = 0;
  195. virtual void Visit( CG_STRING_POINTER *pClass ) = 0;
  196. virtual void Visit( CG_STRUCT *pClass ) = 0;
  197. virtual void Visit( CG_TRANSMIT_AS *pClass ) = 0;
  198. virtual void Visit( CG_TYPE_ENCODE *pClass ) = 0;
  199. virtual void Visit( CG_TYPE_ENCODE_PROC *pClass ) = 0;
  200. virtual void Visit( CG_TYPEDEF *pClass ) = 0;
  201. virtual void Visit( CG_TYPELIBRARY_FILE *pClass ) = 0;
  202. virtual void Visit( CG_UNION *pClass ) = 0;
  203. virtual void Visit( CG_UNION_FIELD *pClass ) = 0;
  204. virtual void Visit( CG_USER_MARSHAL *pClass ) = 0;
  205. virtual void Visit( CG_VARYING_ARRAY *pClass ) = 0;
  206. // New Class for 64bit NDR
  207. // structures
  208. virtual void Visit( CG_FULL_COMPLEX_STRUCT *pClass ) = 0;
  209. virtual void Visit( CG_FORCED_COMPLEX_STRUCT *pClass ) = 0;
  210. virtual void Visit( CG_CONFORMANT_FULL_COMPLEX_STRUCT *pClass ) = 0;
  211. virtual void Visit( CG_CONFORMANT_FORCED_COMPLEX_STRUCT *pClass ) = 0;
  212. virtual void Visit( CG_REGION *pClass ) = 0;
  213. virtual void Visit( CG_SIMPLE_REGION *pClass ) = 0;
  214. virtual void Visit( CG_COMPLEX_REGION *pClass ) = 0;
  215. // arrays
  216. virtual void Visit( CG_COMPLEX_FIXED_ARRAY *pClass ) = 0;
  217. virtual void Visit( CG_FORCED_COMPLEX_FIXED_ARRAY *pClass ) = 0;
  218. virtual void Visit( CG_FULL_COMPLEX_FIXED_ARRAY *pClass ) = 0;
  219. virtual void Visit( CG_COMPLEX_CONFORMANT_ARRAY *pClass ) = 0;
  220. virtual void Visit( CG_FORCED_COMPLEX_CONFORMANT_ARRAY *pClass ) = 0;
  221. virtual void Visit( CG_FULL_COMPLEX_CONFORMANT_ARRAY *pClass ) = 0;
  222. virtual void Visit( CG_COMPLEX_VARYING_ARRAY *pClass ) = 0;
  223. virtual void Visit( CG_FORCED_COMPLEX_VARYING_ARRAY *pClass ) = 0;
  224. virtual void Visit( CG_FULL_COMPLEX_VARYING_ARRAY *pClass ) = 0;
  225. virtual void Visit( CG_COMPLEX_CONFORMANT_VARYING_ARRAY *pClass ) = 0;
  226. virtual void Visit( CG_FORCED_COMPLEX_CONFORMANT_VARYING_ARRAY *pClass ) = 0;
  227. virtual void Visit( CG_FULL_COMPLEX_CONFORMANT_VARYING_ARRAY *pClass ) = 0;
  228. // qualified pointers
  229. virtual void Visit( CG_COMPLEX_SIZE_POINTER *pClass ) = 0;
  230. virtual void Visit( CG_FORCED_COMPLEX_SIZE_POINTER *pClass ) = 0;
  231. virtual void Visit( CG_FULL_COMPLEX_SIZE_POINTER *pClass ) = 0;
  232. virtual void Visit( CG_COMPLEX_LENGTH_POINTER *pClass ) = 0;
  233. virtual void Visit( CG_FORCED_COMPLEX_LENGTH_POINTER *pClass ) = 0;
  234. virtual void Visit( CG_FULL_COMPLEX_LENGTH_POINTER *pClass ) = 0;
  235. virtual void Visit( CG_COMPLEX_SIZE_LENGTH_POINTER *pClass ) = 0;
  236. virtual void Visit( CG_FORCED_COMPLEX_SIZE_LENGTH_POINTER *pClass ) = 0;
  237. virtual void Visit( CG_FULL_COMPLEX_SIZE_LENGTH_POINTER *pClass ) = 0;
  238. virtual void Visit( CG_PAD *pClass ) = 0;
  239. };
  240. template<class T>
  241. class CG_VISITOR_TEMPLATE : public CG_VISITOR, public T
  242. {
  243. public:
  244. CG_VISITOR_TEMPLATE() : T() {}
  245. CG_VISITOR_TEMPLATE( const T & Node ) : T( Node ) {}
  246. operator=( const T & Node ) { *(( T *)this) = Node; }
  247. virtual void Visit( CG_ARRAY *pClass ) { T::Visit( pClass ); }
  248. virtual void Visit( CG_ASYNC_HANDLE *pClass ) { T::Visit( pClass ); }
  249. virtual void Visit( CG_AUX *pClass ) { T::Visit( pClass ); }
  250. virtual void Visit( CG_BASETYPE *pClass ) { T::Visit( pClass ); }
  251. virtual void Visit( CG_BYTE_COUNT_POINTER *pClass ) { T::Visit( pClass ); }
  252. virtual void Visit( CG_CALLBACK_PROC *pClass ) { T::Visit( pClass ); }
  253. virtual void Visit( CG_CASE *pClass ) { T::Visit( pClass ); }
  254. virtual void Visit( CG_CLASS *pClass ) { T::Visit( pClass ); }
  255. virtual void Visit( CG_COCLASS *pClass ) { T::Visit( pClass ); }
  256. virtual void Visit( CG_COMP *pClass ) { T::Visit( pClass ); }
  257. virtual void Visit( CG_COMPLEX_STRUCT *pClass ) { T::Visit( pClass ); }
  258. virtual void Visit( CG_CONFORMANT_ARRAY *pClass ) { T::Visit( pClass ); }
  259. virtual void Visit( CG_CONFORMANT_STRUCT *pClass ) { T::Visit( pClass ); }
  260. virtual void Visit( CG_CONFORMANT_STRING_ARRAY *pClass ) { T::Visit( pClass ); }
  261. virtual void Visit( CG_CONFORMANT_VARYING_ARRAY *pClass ) { T::Visit( pClass ); }
  262. virtual void Visit( CG_CONFORMANT_VARYING_STRUCT *pClass ) { T::Visit( pClass ); }
  263. virtual void Visit( CG_CONTEXT_HANDLE *pClass ) { T::Visit( pClass ); }
  264. virtual void Visit( CG_CS_TAG *pClass ) { T::Visit( pClass ); }
  265. virtual void Visit( CG_CSTUB_FILE *pClass ) { T::Visit( pClass ); }
  266. virtual void Visit( CG_DEFAULT_CASE *pClass ) { T::Visit( pClass ); }
  267. virtual void Visit( CG_DISPINTERFACE *pClass ) { T::Visit( pClass ); }
  268. virtual void Visit( CG_ENCAPSULATED_STRUCT *pClass ) { T::Visit( pClass ); }
  269. virtual void Visit( CG_ENCODE_PROC *pClass ) { T::Visit( pClass ); }
  270. virtual void Visit( CG_ENUM *pClass ) { T::Visit( pClass ); }
  271. virtual void Visit( CG_ERROR_STATUS_T *pClass ) { T::Visit( pClass ); }
  272. virtual void Visit( CG_FIELD *pClass ) { T::Visit( pClass ); }
  273. virtual void Visit( CG_FILE *pClass ) { T::Visit( pClass ); }
  274. virtual void Visit( CG_FIXED_ARRAY *pClass ) { T::Visit( pClass ); }
  275. virtual void Visit( CG_GENERIC_HANDLE *pClass ) { T::Visit( pClass ); }
  276. virtual void Visit( CG_HDR_FILE *pClass ) { T::Visit( pClass ); }
  277. virtual void Visit( CG_HRESULT *pClass ) { T::Visit( pClass ); }
  278. virtual void Visit( CG_ID *pClass ) { T::Visit( pClass ); }
  279. virtual void Visit( CG_IGNORED_POINTER *pClass ) { T::Visit( pClass ); }
  280. virtual void Visit( CG_IID_FILE *pClass ) { T::Visit( pClass ); }
  281. virtual void Visit( CG_IIDIS_INTERFACE_POINTER *pClass ) { T::Visit( pClass ); }
  282. virtual void Visit( CG_INHERITED_OBJECT_INTERFACE *pClass ) { T::Visit( pClass ); }
  283. virtual void Visit( CG_INHERITED_OBJECT_PROC *pClass ) { T::Visit( pClass ); }
  284. virtual void Visit( CG_INT3264 *pClass ) { T::Visit( pClass ); }
  285. virtual void Visit( CG_INTERFACE *pClass ) { T::Visit( pClass ); }
  286. virtual void Visit( CG_INTERFACE_POINTER *pClass ) { T::Visit( pClass ); }
  287. virtual void Visit( CG_INTERFACE_REFERENCE *pClass ) { T::Visit( pClass ); }
  288. virtual void Visit( CG_IUNKNOWN_OBJECT_INTERFACE *pClass ) { T::Visit( pClass ); }
  289. virtual void Visit( CG_IUNKNOWN_OBJECT_PROC *pClass ) { T::Visit( pClass ); }
  290. virtual void Visit( CG_LENGTH_POINTER *pClass ) { T::Visit( pClass ); }
  291. virtual void Visit( CG_LIBRARY *pClass ) { T::Visit( pClass ); }
  292. virtual void Visit( CG_LOCAL_OBJECT_PROC *pClass ) { T::Visit( pClass ); }
  293. virtual void Visit( CG_MODULE *pClass ) { T::Visit( pClass ); }
  294. virtual void Visit( CG_NETMONSTUB_FILE *pClass ) { T::Visit( pClass ); }
  295. virtual void Visit( CG_OBJECT_INTERFACE *pClass ) { T::Visit( pClass ); }
  296. virtual void Visit( CG_OBJECT_PROC *pClass ) { T::Visit( pClass ); }
  297. virtual void Visit( CG_PARAM *pClass ) { T::Visit( pClass ); }
  298. virtual void Visit( CG_PIPE *pClass ) { T::Visit( pClass ); }
  299. virtual void Visit( CG_POINTER *pClass ) { T::Visit( pClass ); }
  300. virtual void Visit( CG_PRIMITIVE_HANDLE *pClass ) { T::Visit( pClass ); }
  301. virtual void Visit( CG_PROC *pClass ) { T::Visit( pClass ); }
  302. virtual void Visit( CG_PROXY_FILE *pClass ) { T::Visit( pClass ); }
  303. virtual void Visit( CG_QUALIFIED_POINTER *pClass ) { T::Visit( pClass ); }
  304. virtual void Visit( CG_REPRESENT_AS *pClass ) { T::Visit( pClass ); }
  305. virtual void Visit( CG_RETURN *pClass ) { T::Visit( pClass ); }
  306. virtual void Visit( CG_SAFEARRAY *pClass ) { T::Visit( pClass ); }
  307. virtual void Visit( CG_SIZE_LENGTH_POINTER *pClass ) { T::Visit( pClass ); }
  308. virtual void Visit( CG_SIZE_POINTER *pClass ) { T::Visit( pClass ); }
  309. virtual void Visit( CG_SIZE_STRING_POINTER *pClass ) { T::Visit( pClass ); }
  310. virtual void Visit( CG_SOURCE *pClass ) { T::Visit( pClass ); }
  311. virtual void Visit( CG_SSTUB_FILE *pClass ) { T::Visit( pClass ); }
  312. virtual void Visit( CG_STRING_ARRAY *pClass ) { T::Visit( pClass ); }
  313. virtual void Visit( CG_STRING_POINTER *pClass ) { T::Visit( pClass ); }
  314. virtual void Visit( CG_STRUCT *pClass ) { T::Visit( pClass ); }
  315. virtual void Visit( CG_TRANSMIT_AS *pClass ) { T::Visit( pClass ); }
  316. virtual void Visit( CG_TYPE_ENCODE *pClass ) { T::Visit( pClass ); }
  317. virtual void Visit( CG_TYPE_ENCODE_PROC *pClass ) { T::Visit( pClass ); }
  318. virtual void Visit( CG_TYPEDEF *pClass ) { T::Visit( pClass ); }
  319. virtual void Visit( CG_TYPELIBRARY_FILE *pClass ) { T::Visit( pClass ); }
  320. virtual void Visit( CG_UNION *pClass ) { T::Visit( pClass ); }
  321. virtual void Visit( CG_UNION_FIELD *pClass ) { T::Visit( pClass ); }
  322. virtual void Visit( CG_USER_MARSHAL *pClass ) { T::Visit( pClass ); }
  323. virtual void Visit( CG_VARYING_ARRAY *pClass ) { T::Visit( pClass ); }
  324. // structures
  325. virtual void Visit( CG_FULL_COMPLEX_STRUCT *pClass ) { T::Visit( pClass ); }
  326. virtual void Visit( CG_FORCED_COMPLEX_STRUCT *pClass ) { T::Visit( pClass ); }
  327. virtual void Visit( CG_CONFORMANT_FULL_COMPLEX_STRUCT *pClass ) { T::Visit( pClass ); }
  328. virtual void Visit( CG_CONFORMANT_FORCED_COMPLEX_STRUCT *pClass ) { T::Visit( pClass ); }
  329. virtual void Visit( CG_REGION *pClass ) { T::Visit( pClass ); }
  330. virtual void Visit( CG_SIMPLE_REGION *pClass ) { T::Visit( pClass ); }
  331. virtual void Visit( CG_COMPLEX_REGION *pClass ) { T::Visit( pClass ); }
  332. // arrays
  333. virtual void Visit( CG_COMPLEX_FIXED_ARRAY *pClass ) { T::Visit( pClass ); }
  334. virtual void Visit( CG_FORCED_COMPLEX_FIXED_ARRAY *pClass ) { T::Visit( pClass ); }
  335. virtual void Visit( CG_FULL_COMPLEX_FIXED_ARRAY *pClass ) { T::Visit( pClass ); }
  336. virtual void Visit( CG_COMPLEX_CONFORMANT_ARRAY *pClass ) { T::Visit( pClass ); }
  337. virtual void Visit( CG_FORCED_COMPLEX_CONFORMANT_ARRAY *pClass ) { T::Visit( pClass ); }
  338. virtual void Visit( CG_FULL_COMPLEX_CONFORMANT_ARRAY *pClass ) { T::Visit( pClass ); }
  339. virtual void Visit( CG_COMPLEX_VARYING_ARRAY *pClass ) { T::Visit( pClass ); }
  340. virtual void Visit( CG_FORCED_COMPLEX_VARYING_ARRAY *pClass ) { T::Visit( pClass ); }
  341. virtual void Visit( CG_FULL_COMPLEX_VARYING_ARRAY *pClass ) { T::Visit( pClass ); }
  342. virtual void Visit( CG_COMPLEX_CONFORMANT_VARYING_ARRAY *pClass ) { T::Visit( pClass ); }
  343. virtual void Visit( CG_FORCED_COMPLEX_CONFORMANT_VARYING_ARRAY *pClass ) { T::Visit( pClass ); }
  344. virtual void Visit( CG_FULL_COMPLEX_CONFORMANT_VARYING_ARRAY *pClass ) { T::Visit( pClass ); }
  345. // qualified pointers
  346. virtual void Visit( CG_COMPLEX_SIZE_POINTER *pClass ) { T::Visit( pClass ); }
  347. virtual void Visit( CG_FORCED_COMPLEX_SIZE_POINTER *pClass ) { T::Visit( pClass ); }
  348. virtual void Visit( CG_FULL_COMPLEX_SIZE_POINTER *pClass ) { T::Visit( pClass ); }
  349. virtual void Visit( CG_COMPLEX_LENGTH_POINTER *pClass ) { T::Visit( pClass ); }
  350. virtual void Visit( CG_FORCED_COMPLEX_LENGTH_POINTER *pClass ) { T::Visit( pClass ); }
  351. virtual void Visit( CG_FULL_COMPLEX_LENGTH_POINTER *pClass ) { T::Visit( pClass ); }
  352. virtual void Visit( CG_COMPLEX_SIZE_LENGTH_POINTER *pClass ) { T::Visit( pClass ); }
  353. virtual void Visit( CG_FORCED_COMPLEX_SIZE_LENGTH_POINTER *pClass ) { T::Visit( pClass ); }
  354. virtual void Visit( CG_FULL_COMPLEX_SIZE_LENGTH_POINTER *pClass ) { T::Visit( pClass ); }
  355. virtual void Visit( CG_PAD *pClass ) { T::Visit( pClass ); }
  356. };