VTK
vtkParseData.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkParseData.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
15 /*-------------------------------------------------------------------------
16  Copyright (c) 2010 David Gobbi.
17 
18  Contributed to the VisualizationToolkit by the author in May 2010
19  under the terms of the Visualization Toolkit 2008 copyright.
20 -------------------------------------------------------------------------*/
21 
22 /*
23  Data structures used by vtkParse.
24 */
25 
26 #ifndef vtkParseData_h
27 #define vtkParseData_h
28 
29 #include "vtkParseType.h"
30 #include "vtkParseString.h"
31 
32 /* legacy */
33 #ifndef VTK_PARSE_LEGACY_REMOVE
34 #define MAX_ARGS 20
35 #endif
36 
40 typedef enum _parse_access_t
41 {
46 
50 typedef enum _parse_item_t
51 {
62 } parse_item_t;
63 
67 typedef struct _ItemInfo
68 {
70  int Index;
71 } ItemInfo;
72 
73 /* forward declarations */
74 struct _ValueInfo;
75 struct _FunctionInfo;
76 struct _FileInfo;
77 typedef struct _ValueInfo ValueInfo;
78 typedef struct _FunctionInfo FunctionInfo;
79 typedef struct _FileInfo FileInfo;
80 
84 typedef struct _TemplateInfo
85 {
88 } TemplateInfo;
89 
98 struct _ValueInfo
99 {
102  const char *Name;
103  const char *Comment;
104  const char *Value; /* for vars or default paramter values */
105  unsigned int Type; /* as defined in vtkParseType.h */
106  const char *Class; /* classname for type */
107  int Count; /* total number of values, if known */
108  const char *CountHint; /* hint about how to get the count */
109  int NumberOfDimensions; /* dimensionality for arrays */
110  const char **Dimensions; /* dimensions for arrays */
111  FunctionInfo *Function; /* for function pointer values */
112  TemplateInfo *Template; /* template parameters, or NULL */
113  int IsStatic; /* for class variables only */
114  int IsEnum; /* for constants only */
115  int IsPack; /* for pack expansions */
116 };
117 
122 {
125  const char *Name;
126  const char *Comment;
127  const char *Class; /* class name for methods */
128  const char *Signature; /* function signature as text */
129  TemplateInfo *Template; /* template parameters, or NULL */
132  ValueInfo *ReturnValue; /* NULL for constructors and destructors */
133  const char *Macro; /* the macro that defined this function */
134  const char *SizeHint; /* hint the size e.g. for operator[] */
137  int IsLegacy; /* marked as a legacy method or function */
138  int IsStatic; /* methods only */
139  int IsVirtual; /* methods only */
140  int IsPureVirtual; /* methods only */
141  int IsConst; /* methods only */
142  int IsDeleted; /* methods only */
143  int IsFinal; /* methods only */
144  int IsExplicit; /* constructors only */
145 #ifndef VTK_PARSE_LEGACY_REMOVE
146  int NumberOfArguments; /* legacy */
147  unsigned int ArgTypes[MAX_ARGS]; /* legacy */
148  const char *ArgClasses[MAX_ARGS];/* legacy */
149  int ArgCounts[MAX_ARGS]; /* legacy */
150  unsigned int ReturnType; /* legacy */
151  const char *ReturnClass; /* legacy */
152  int HaveHint; /* legacy */
153  int HintSize; /* legacy */
154  int ArrayFailure;/* legacy */
155  int IsPublic; /* legacy */
156  int IsProtected; /* legacy */
157 #endif
158 };
159 
163 typedef struct _UsingInfo
164 {
167  const char *Name; /* null for using whole namespace */
168  const char *Comment;
169  const char *Scope; /* the namespace or class */
170 } UsingInfo;
171 
175 typedef struct _ClassInfo
176 {
179  const char *Name;
180  const char *Comment;
183  const char **SuperClasses;
187  struct _ClassInfo **Classes;
195  struct _ClassInfo **Enums;
203  int IsFinal;
205 } ClassInfo;
206 
212 typedef struct _ClassInfo EnumInfo;
213 
217 typedef struct _ClassInfo NamespaceInfo;
218 
222 struct _FileInfo
223 {
224  const char *FileName;
225  const char *NameComment;
226  const char *Description;
227  const char *Caveats;
228  const char *SeeAlso;
229 
231  struct _FileInfo **Includes;
235 };
236 
237 
238 #ifdef __cplusplus
239 extern "C" {
240 #endif
241 
246 void vtkParse_InitFile(FileInfo *file_info);
247 void vtkParse_InitNamespace(NamespaceInfo *namespace_info);
248 void vtkParse_InitClass(ClassInfo *cls);
250 void vtkParse_InitValue(ValueInfo *val);
251 void vtkParse_InitEnum(EnumInfo *item);
252 void vtkParse_InitUsing(UsingInfo *item);
263 void vtkParse_CopyClass(ClassInfo *data, const ClassInfo *orig);
264 void vtkParse_CopyFunction(FunctionInfo *data, const FunctionInfo *orig);
265 void vtkParse_CopyValue(ValueInfo *data, const ValueInfo *orig);
266 void vtkParse_CopyEnum(EnumInfo *data, const EnumInfo *orig);
267 void vtkParse_CopyUsing(UsingInfo *data, const UsingInfo *orig);
268 void vtkParse_CopyTemplate(TemplateInfo *data, const TemplateInfo *orig);
277 void vtkParse_FreeFile(FileInfo *file_info);
278 void vtkParse_FreeNamespace(NamespaceInfo *namespace_info);
279 void vtkParse_FreeClass(ClassInfo *cls);
281 void vtkParse_FreeValue(ValueInfo *val);
282 void vtkParse_FreeEnum(EnumInfo *item);
283 void vtkParse_FreeUsing(UsingInfo *item);
292  const char ***valueArray, int *count, const char *value);
293 
298  ItemInfo **valueArray, int *count, parse_item_t type, int idx);
299 
300 
306 void vtkParse_AddClassToClass(ClassInfo *info, ClassInfo *item);
308 void vtkParse_AddEnumToClass(ClassInfo *info, EnumInfo *item);
312 void vtkParse_AddUsingToClass(ClassInfo *info, UsingInfo *item);
329 
330 #ifdef __cplusplus
331 } /* extern "C" */
332 #endif
333 
334 #endif
void vtkParse_AddParameterToTemplate(TemplateInfo *info, ValueInfo *item)
Add various items to the structs.
const char * Comment
Definition: vtkParseData.h:126
void vtkParse_CopyNamespace(NamespaceInfo *data, const NamespaceInfo *orig)
Copy methods.
void vtkParse_InitFunction(FunctionInfo *func)
Initializer methods.
void vtkParse_InitFile(FileInfo *file_info)
Initializer methods.
void vtkParse_FreeTemplate(TemplateInfo *arg)
Free methods.
struct _ClassInfo ClassInfo
ClassInfo is for classes, structs, unions, and namespaces.
void vtkParse_AddClassToClass(ClassInfo *info, ClassInfo *item)
Add various items to the structs.
int NumberOfParameters
Definition: vtkParseData.h:86
void vtkParse_AddVariableToNamespace(NamespaceInfo *info, ValueInfo *item)
Add various items to the structs.
UsingInfo is for using directives.
Definition: vtkParseData.h:163
void vtkParse_AddUsingToNamespace(NamespaceInfo *info, UsingInfo *item)
Add various items to the structs.
const char * ArgClasses[MAX_ARGS]
Definition: vtkParseData.h:148
int NumberOfConstants
Definition: vtkParseData.h:190
const char * SeeAlso
Definition: vtkParseData.h:228
void vtkParse_CopyValue(ValueInfo *data, const ValueInfo *orig)
Copy methods.
int NumberOfTypedefs
Definition: vtkParseData.h:196
FunctionInfo * Function
Definition: vtkParseData.h:111
const char * Comment
Definition: vtkParseData.h:168
void vtkParse_AddConstantToNamespace(NamespaceInfo *info, ValueInfo *item)
Add various items to the structs.
const char * Signature
Definition: vtkParseData.h:128
const char * Caveats
Definition: vtkParseData.h:227
FileInfo is for header files.
Definition: vtkParseData.h:222
int NumberOfClasses
Definition: vtkParseData.h:186
int NumberOfEnums
Definition: vtkParseData.h:194
const char * Value
Definition: vtkParseData.h:104
NamespaceInfo * Contents
Definition: vtkParseData.h:233
void vtkParse_FreeEnum(EnumInfo *item)
Free methods.
void vtkParse_AddVariableToClass(ClassInfo *info, ValueInfo *item)
Add various items to the structs.
void vtkParse_InitValue(ValueInfo *val)
Initializer methods.
int NumberOfIncludes
Definition: vtkParseData.h:230
ValueInfo ** Constants
Definition: vtkParseData.h:191
void vtkParse_InitTemplate(TemplateInfo *arg)
Initializer methods.
int NumberOfSuperClasses
Definition: vtkParseData.h:182
void vtkParse_FreeClass(ClassInfo *cls)
Free methods.
TemplateInfo * Template
Definition: vtkParseData.h:181
parse_item_t ItemType
Definition: vtkParseData.h:177
const char * Class
Definition: vtkParseData.h:127
const char * Scope
Definition: vtkParseData.h:169
int ArgCounts[MAX_ARGS]
Definition: vtkParseData.h:149
int NumberOfUsings
Definition: vtkParseData.h:198
void vtkParse_AddTypedefToNamespace(NamespaceInfo *info, ValueInfo *item)
Add various items to the structs.
FunctionInfo ** Functions
Definition: vtkParseData.h:189
void vtkParse_AddEnumToNamespace(NamespaceInfo *info, EnumInfo *item)
Add various items to the structs.
const char * Name
Definition: vtkParseData.h:167
struct _UsingInfo UsingInfo
UsingInfo is for using directives.
void vtkParse_AddFunctionToClass(ClassInfo *info, FunctionInfo *item)
Add various items to the structs.
ValueInfo ** Variables
Definition: vtkParseData.h:193
ValueInfo ** Parameters
Definition: vtkParseData.h:131
const char * Name
Definition: vtkParseData.h:125
const char * Class
Definition: vtkParseData.h:106
parse_access_t Access
Definition: vtkParseData.h:166
const char * Comment
Definition: vtkParseData.h:180
void vtkParse_FreeFunction(FunctionInfo *func)
Free methods.
ClassInfo * MainClass
Definition: vtkParseData.h:232
void vtkParse_FreeFile(FileInfo *file_info)
Free methods.
void vtkParse_CopyUsing(UsingInfo *data, const UsingInfo *orig)
Copy methods.
TemplateInfo * Template
Definition: vtkParseData.h:112
UsingInfo ** Usings
Definition: vtkParseData.h:199
void vtkParse_InitEnum(EnumInfo *item)
Initializer methods.
parse_access_t Access
Definition: vtkParseData.h:178
void vtkParse_CopyTemplate(TemplateInfo *data, const TemplateInfo *orig)
Copy methods.
ValueInfo ** Typedefs
Definition: vtkParseData.h:197
unsigned int ArgTypes[MAX_ARGS]
Definition: vtkParseData.h:147
const char ** Dimensions
Definition: vtkParseData.h:110
ItemInfo just contains an index.
Definition: vtkParseData.h:67
void vtkParse_FreeUsing(UsingInfo *item)
Free methods.
void vtkParse_AddIncludeToFile(FileInfo *info, FileInfo *item)
Add various items to the structs.
parse_access_t Access
Definition: vtkParseData.h:124
void vtkParse_AddItemToArray(ItemInfo **valueArray, int *count, parse_item_t type, int idx)
Expand the Item array for classes and namespaces.
ValueInfo is for typedefs, constants, variables, function parameters, and return values.
Definition: vtkParseData.h:98
struct _ClassInfo ** Classes
Definition: vtkParseData.h:187
const char * Name
Definition: vtkParseData.h:179
const char * FileName
Definition: vtkParseData.h:224
struct _ItemInfo ItemInfo
ItemInfo just contains an index.
void vtkParse_InitUsing(UsingInfo *item)
Initializer methods.
struct _TemplateInfo TemplateInfo
TemplateInfo holds template definitions.
struct _FileInfo ** Includes
Definition: vtkParseData.h:231
StringCache * Strings
Definition: vtkParseData.h:234
void vtkParse_FreeNamespace(NamespaceInfo *namespace_info)
Free methods.
void vtkParse_AddFunctionToNamespace(NamespaceInfo *info, FunctionInfo *item)
Add various items to the structs.
FunctionInfo is for functions and methods.
Definition: vtkParseData.h:121
void vtkParse_AddClassToNamespace(NamespaceInfo *info, ClassInfo *item)
Add various items to the structs.
enum _parse_access_t parse_access_t
Access flags.
const char * CountHint
Definition: vtkParseData.h:108
void vtkParse_AddEnumToClass(ClassInfo *info, EnumInfo *item)
Add various items to the structs.
void vtkParse_AddUsingToClass(ClassInfo *info, UsingInfo *item)
Add various items to the structs.
void vtkParse_FreeValue(ValueInfo *val)
Free methods.
const char * NameComment
Definition: vtkParseData.h:225
void vtkParse_InitClass(ClassInfo *cls)
Initializer methods.
unsigned int Type
Definition: vtkParseData.h:105
parse_item_t Type
Definition: vtkParseData.h:69
void vtkParse_CopyFunction(FunctionInfo *data, const FunctionInfo *orig)
Copy methods.
parse_item_t ItemType
Definition: vtkParseData.h:165
ClassInfo is for classes, structs, unions, and namespaces.
Definition: vtkParseData.h:175
int NumberOfFunctions
Definition: vtkParseData.h:188
const char ** SuperClasses
Definition: vtkParseData.h:183
void vtkParse_AddDefaultConstructors(ClassInfo *data, StringCache *cache)
Add default constructors to a class if they do not already exist.
struct _ClassInfo ** Namespaces
Definition: vtkParseData.h:201
parse_item_t ItemType
Definition: vtkParseData.h:123
StringCache provides a simple way of allocating strings centrally.
void vtkParse_CopyEnum(EnumInfo *data, const EnumInfo *orig)
Copy methods.
void vtkParse_CopyClass(ClassInfo *data, const ClassInfo *orig)
Copy methods.
void vtkParse_AddParameterToFunction(FunctionInfo *info, ValueInfo *item)
Add various items to the structs.
#define MAX_ARGS
Definition: vtkParseData.h:34
enum _parse_item_t parse_item_t
ItemType constants.
const char * Comment
Definition: vtkParseData.h:103
const char * Description
Definition: vtkParseData.h:226
int NumberOfNamespaces
Definition: vtkParseData.h:200
const char * SizeHint
Definition: vtkParseData.h:134
const char * Name
Definition: vtkParseData.h:102
parse_access_t Access
Definition: vtkParseData.h:101
void vtkParse_InitNamespace(NamespaceInfo *namespace_info)
Initializer methods.
unsigned int ReturnType
Definition: vtkParseData.h:150
parse_item_t ItemType
Definition: vtkParseData.h:100
int NumberOfItems
Definition: vtkParseData.h:184
TemplateInfo * Template
Definition: vtkParseData.h:129
struct _ClassInfo ** Enums
Definition: vtkParseData.h:195
ValueInfo * ReturnValue
Definition: vtkParseData.h:132
const char * ReturnClass
Definition: vtkParseData.h:151
const char * Macro
Definition: vtkParseData.h:133
int NumberOfDimensions
Definition: vtkParseData.h:109
void vtkParse_AddStringToArray(const char ***valueArray, int *count, const char *value)
Add a string to an array of strings, grow array as necessary.
int NumberOfVariables
Definition: vtkParseData.h:192
int NumberOfParameters
Definition: vtkParseData.h:130
_parse_access_t
Access flags.
Definition: vtkParseData.h:40
ItemInfo * Items
Definition: vtkParseData.h:185
void vtkParse_AddConstantToClass(ClassInfo *info, ValueInfo *item)
Add various items to the structs.
void vtkParse_AddNamespaceToNamespace(NamespaceInfo *info, NamespaceInfo *item)
Add various items to the structs.
TemplateInfo holds template definitions.
Definition: vtkParseData.h:84
void vtkParse_AddTypedefToClass(ClassInfo *info, ValueInfo *item)
Add various items to the structs.
ValueInfo ** Parameters
Definition: vtkParseData.h:87
_parse_item_t
ItemType constants.
Definition: vtkParseData.h:50