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 VTK_PARSE_DATA_H
27 #define VTK_PARSE_DATA_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 {
61  VTK_USING_INFO = 10
63 
67 typedef struct _ItemInfo
68 {
70  int Index;
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 {
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 */
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;
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);
277 void vtkParse_FreeFile(FileInfo *file_info);
278 void vtkParse_FreeNamespace(NamespaceInfo *namespace_info);
292  const char ***valueArray, int *count, const char *value);
293 
298  ItemInfo **valueArray, int *count, parse_item_t type, int idx);
299 
300 
329 
330 #ifdef __cplusplus
331 } /* extern "C" */
332 #endif
333 
334 #endif
vtkParse_InitNamespace
void vtkParse_InitNamespace(NamespaceInfo *namespace_info)
_ValueInfo::Type
unsigned int Type
Definition: vtkParseData.h:105
vtkParse_AddFunctionToNamespace
void vtkParse_AddFunctionToNamespace(NamespaceInfo *info, FunctionInfo *item)
_FunctionInfo::ReturnType
unsigned int ReturnType
Definition: vtkParseData.h:150
_UsingInfo::ItemType
parse_item_t ItemType
Definition: vtkParseData.h:165
vtkParse_CopyEnum
void vtkParse_CopyEnum(EnumInfo *data, const EnumInfo *orig)
vtkgl::data
GLsizei GLsizei GLenum GLenum const GLvoid * data
Definition: vtkgl.h:11339
vtkParse_AddTypedefToNamespace
void vtkParse_AddTypedefToNamespace(NamespaceInfo *info, ValueInfo *item)
VTK_USING_INFO
@ VTK_USING_INFO
Definition: vtkParseData.h:61
_FileInfo
FileInfo is for header files.
Definition: vtkParseData.h:223
_ClassInfo::Template
TemplateInfo * Template
Definition: vtkParseData.h:181
_FunctionInfo::HaveHint
int HaveHint
Definition: vtkParseData.h:152
VTK_ACCESS_PRIVATE
@ VTK_ACCESS_PRIVATE
Definition: vtkParseData.h:44
_ValueInfo
ValueInfo is for typedefs, constants, variables, function parameters, and return values.
Definition: vtkParseData.h:99
vtkParse_InitTemplate
void vtkParse_InitTemplate(TemplateInfo *arg)
_ValueInfo::Access
parse_access_t Access
Definition: vtkParseData.h:101
vtkgl::count
GLuint GLuint GLsizei count
Definition: vtkgl.h:11315
VTK_STRUCT_INFO
@ VTK_STRUCT_INFO
Definition: vtkParseData.h:54
_TemplateInfo::Parameters
ValueInfo ** Parameters
Definition: vtkParseData.h:87
_FunctionInfo::ItemType
parse_item_t ItemType
Definition: vtkParseData.h:123
_FileInfo::SeeAlso
const char * SeeAlso
Definition: vtkParseData.h:228
_ClassInfo::NumberOfNamespaces
int NumberOfNamespaces
Definition: vtkParseData.h:200
VTK_TYPEDEF_INFO
@ VTK_TYPEDEF_INFO
Definition: vtkParseData.h:60
_ClassInfo::SuperClasses
const char ** SuperClasses
Definition: vtkParseData.h:183
_ClassInfo
ClassInfo is for classes, structs, unions, and namespaces.
Definition: vtkParseData.h:176
vtkParse_AddIncludeToFile
void vtkParse_AddIncludeToFile(FileInfo *info, FileInfo *item)
Add various items to the structs.
_ValueInfo::IsEnum
int IsEnum
Definition: vtkParseData.h:114
VTK_ACCESS_PROTECTED
@ VTK_ACCESS_PROTECTED
Definition: vtkParseData.h:43
_ClassInfo::Functions
FunctionInfo ** Functions
Definition: vtkParseData.h:189
_ValueInfo::IsStatic
int IsStatic
Definition: vtkParseData.h:113
_UsingInfo::Scope
const char * Scope
Definition: vtkParseData.h:169
_ValueInfo::Count
int Count
Definition: vtkParseData.h:107
_FunctionInfo::NumberOfParameters
int NumberOfParameters
Definition: vtkParseData.h:130
VTK_UNION_INFO
@ VTK_UNION_INFO
Definition: vtkParseData.h:55
MAX_ARGS
#define MAX_ARGS
Definition: vtkParseData.h:34
_FunctionInfo::IsExplicit
int IsExplicit
Definition: vtkParseData.h:144
_ClassInfo::Typedefs
ValueInfo ** Typedefs
Definition: vtkParseData.h:197
_FunctionInfo::IsOperator
int IsOperator
Definition: vtkParseData.h:135
_UsingInfo::Access
parse_access_t Access
Definition: vtkParseData.h:166
vtkParse_InitClass
void vtkParse_InitClass(ClassInfo *cls)
_UsingInfo::Comment
const char * Comment
Definition: vtkParseData.h:168
VTK_ENUM_INFO
@ VTK_ENUM_INFO
Definition: vtkParseData.h:56
_FunctionInfo::ReturnValue
ValueInfo * ReturnValue
Definition: vtkParseData.h:132
_FileInfo::Caveats
const char * Caveats
Definition: vtkParseData.h:227
_ValueInfo::Value
const char * Value
Definition: vtkParseData.h:104
vtkgl::func
GLenum func
Definition: vtkgl.h:11980
VTK_CONSTANT_INFO
@ VTK_CONSTANT_INFO
Definition: vtkParseData.h:59
_FileInfo::Contents
NamespaceInfo * Contents
Definition: vtkParseData.h:233
vtkParse_AddConstantToClass
void vtkParse_AddConstantToClass(ClassInfo *info, ValueInfo *item)
_ClassInfo::IsAbstract
int IsAbstract
Definition: vtkParseData.h:202
_FunctionInfo::Macro
const char * Macro
Definition: vtkParseData.h:133
_ClassInfo::Namespaces
struct _ClassInfo ** Namespaces
Definition: vtkParseData.h:201
_FunctionInfo::IsPureVirtual
int IsPureVirtual
Definition: vtkParseData.h:140
vtkParse_CopyUsing
void vtkParse_CopyUsing(UsingInfo *data, const UsingInfo *orig)
vtkParse_CopyTemplate
void vtkParse_CopyTemplate(TemplateInfo *data, const TemplateInfo *orig)
_FileInfo::NumberOfIncludes
int NumberOfIncludes
Definition: vtkParseData.h:230
_ValueInfo::IsPack
int IsPack
Definition: vtkParseData.h:115
ItemInfo
struct _ItemInfo ItemInfo
ItemInfo just contains an index.
vtkParse_AddParameterToFunction
void vtkParse_AddParameterToFunction(FunctionInfo *info, ValueInfo *item)
_ClassInfo::Enums
struct _ClassInfo ** Enums
Definition: vtkParseData.h:195
_ClassInfo::NumberOfClasses
int NumberOfClasses
Definition: vtkParseData.h:186
_FunctionInfo::Class
const char * Class
Definition: vtkParseData.h:127
vtkParse_AddUsingToClass
void vtkParse_AddUsingToClass(ClassInfo *info, UsingInfo *item)
_ValueInfo::Comment
const char * Comment
Definition: vtkParseData.h:103
_ValueInfo::Name
const char * Name
Definition: vtkParseData.h:102
_ItemInfo::Index
int Index
Definition: vtkParseData.h:70
vtkParse_AddStringToArray
void vtkParse_AddStringToArray(const char ***valueArray, int *count, const char *value)
Add a string to an array of strings, grow array as necessary.
VTK_NAMESPACE_INFO
@ VTK_NAMESPACE_INFO
Definition: vtkParseData.h:52
_ItemInfo
ItemInfo just contains an index.
Definition: vtkParseData.h:68
_ClassInfo::Usings
UsingInfo ** Usings
Definition: vtkParseData.h:199
_FunctionInfo::Template
TemplateInfo * Template
Definition: vtkParseData.h:129
vtkParse_InitUsing
void vtkParse_InitUsing(UsingInfo *item)
vtkParse_InitFile
void vtkParse_InitFile(FileInfo *file_info)
Initializer methods.
vtkParse_AddVariableToClass
void vtkParse_AddVariableToClass(ClassInfo *info, ValueInfo *item)
vtkParse_InitEnum
void vtkParse_InitEnum(EnumInfo *item)
vtkgl::val
GLuint GLfloat * val
Definition: vtkgl.h:13789
_UsingInfo::Name
const char * Name
Definition: vtkParseData.h:167
vtkParse_AddClassToNamespace
void vtkParse_AddClassToNamespace(NamespaceInfo *info, ClassInfo *item)
_ClassInfo::Access
parse_access_t Access
Definition: vtkParseData.h:178
vtkParse_FreeTemplate
void vtkParse_FreeTemplate(TemplateInfo *arg)
_ClassInfo::ItemType
parse_item_t ItemType
Definition: vtkParseData.h:177
_FunctionInfo::Signature
const char * Signature
Definition: vtkParseData.h:128
vtkParse_FreeUsing
void vtkParse_FreeUsing(UsingInfo *item)
vtkParse_AddTypedefToClass
void vtkParse_AddTypedefToClass(ClassInfo *info, ValueInfo *item)
_FunctionInfo::Access
parse_access_t Access
Definition: vtkParseData.h:124
vtkParse_FreeClass
void vtkParse_FreeClass(ClassInfo *cls)
_ItemInfo::Type
parse_item_t Type
Definition: vtkParseData.h:69
vtkgl::value
GLsizei const GLfloat * value
Definition: vtkgl.h:12021
_ClassInfo::NumberOfVariables
int NumberOfVariables
Definition: vtkParseData.h:192
vtkParse_InitFunction
void vtkParse_InitFunction(FunctionInfo *func)
_UsingInfo
UsingInfo is for using directives.
Definition: vtkParseData.h:164
_TemplateInfo::NumberOfParameters
int NumberOfParameters
Definition: vtkParseData.h:86
_parse_access_t
_parse_access_t
Access flags.
Definition: vtkParseData.h:41
vtkParseType.h
_FunctionInfo::Comment
const char * Comment
Definition: vtkParseData.h:126
vtkParse_AddDefaultConstructors
void vtkParse_AddDefaultConstructors(ClassInfo *data, StringCache *cache)
Add default constructors to a class if they do not already exist.
vtkParse_AddEnumToNamespace
void vtkParse_AddEnumToNamespace(NamespaceInfo *info, EnumInfo *item)
_FunctionInfo::IsLegacy
int IsLegacy
Definition: vtkParseData.h:137
_FileInfo::Strings
StringCache * Strings
Definition: vtkParseData.h:234
vtkParse_FreeNamespace
void vtkParse_FreeNamespace(NamespaceInfo *namespace_info)
_FileInfo::Includes
struct _FileInfo ** Includes
Definition: vtkParseData.h:231
_ClassInfo::Classes
struct _ClassInfo ** Classes
Definition: vtkParseData.h:187
_FunctionInfo
FunctionInfo is for functions and methods.
Definition: vtkParseData.h:122
vtkParse_AddConstantToNamespace
void vtkParse_AddConstantToNamespace(NamespaceInfo *info, ValueInfo *item)
_FileInfo::NameComment
const char * NameComment
Definition: vtkParseData.h:225
_FunctionInfo::SizeHint
const char * SizeHint
Definition: vtkParseData.h:134
_StringCache
StringCache provides a simple way of allocating strings centrally.
Definition: vtkParseString.h:209
_FunctionInfo::IsDeleted
int IsDeleted
Definition: vtkParseData.h:142
vtkParse_AddParameterToTemplate
void vtkParse_AddParameterToTemplate(TemplateInfo *info, ValueInfo *item)
_ClassInfo::NumberOfUsings
int NumberOfUsings
Definition: vtkParseData.h:198
_FileInfo::MainClass
ClassInfo * MainClass
Definition: vtkParseData.h:232
_ValueInfo::CountHint
const char * CountHint
Definition: vtkParseData.h:108
_ClassInfo::NumberOfItems
int NumberOfItems
Definition: vtkParseData.h:184
vtkParse_FreeFile
void vtkParse_FreeFile(FileInfo *file_info)
Free methods.
vtkParse_AddVariableToNamespace
void vtkParse_AddVariableToNamespace(NamespaceInfo *info, ValueInfo *item)
VTK_VARIABLE_INFO
@ VTK_VARIABLE_INFO
Definition: vtkParseData.h:58
_ClassInfo::IsFinal
int IsFinal
Definition: vtkParseData.h:203
_ValueInfo::Function
FunctionInfo * Function
Definition: vtkParseData.h:111
_FunctionInfo::IsVirtual
int IsVirtual
Definition: vtkParseData.h:139
TemplateInfo
struct _TemplateInfo TemplateInfo
TemplateInfo holds template definitions.
_ClassInfo::HasDelete
int HasDelete
Definition: vtkParseData.h:204
_ValueInfo::NumberOfDimensions
int NumberOfDimensions
Definition: vtkParseData.h:109
vtkParse_AddFunctionToClass
void vtkParse_AddFunctionToClass(ClassInfo *info, FunctionInfo *item)
_FunctionInfo::IsProtected
int IsProtected
Definition: vtkParseData.h:156
_ClassInfo::Comment
const char * Comment
Definition: vtkParseData.h:180
parse_access_t
enum _parse_access_t parse_access_t
Access flags.
_ValueInfo::Dimensions
const char ** Dimensions
Definition: vtkParseData.h:110
_ValueInfo::Template
TemplateInfo * Template
Definition: vtkParseData.h:112
VTK_FUNCTION_INFO
@ VTK_FUNCTION_INFO
Definition: vtkParseData.h:57
_ValueInfo::ItemType
parse_item_t ItemType
Definition: vtkParseData.h:100
vtkX3D::info
@ info
Definition: vtkX3D.h:376
_FunctionInfo::ArgClasses
const char * ArgClasses[MAX_ARGS]
Definition: vtkParseData.h:148
_FunctionInfo::ArgTypes
unsigned int ArgTypes[MAX_ARGS]
Definition: vtkParseData.h:147
VTK_CLASS_INFO
@ VTK_CLASS_INFO
Definition: vtkParseData.h:53
_ClassInfo::Variables
ValueInfo ** Variables
Definition: vtkParseData.h:193
vtkParse_AddClassToClass
void vtkParse_AddClassToClass(ClassInfo *info, ClassInfo *item)
_ClassInfo::Constants
ValueInfo ** Constants
Definition: vtkParseData.h:191
_FunctionInfo::IsStatic
int IsStatic
Definition: vtkParseData.h:138
_FileInfo::Description
const char * Description
Definition: vtkParseData.h:226
_ClassInfo::Name
const char * Name
Definition: vtkParseData.h:179
_ClassInfo::Items
ItemInfo * Items
Definition: vtkParseData.h:185
vtkParse_CopyNamespace
void vtkParse_CopyNamespace(NamespaceInfo *data, const NamespaceInfo *orig)
Copy methods.
vtkParse_FreeFunction
void vtkParse_FreeFunction(FunctionInfo *func)
vtkParse_CopyValue
void vtkParse_CopyValue(ValueInfo *data, const ValueInfo *orig)
_FileInfo::FileName
const char * FileName
Definition: vtkParseData.h:224
_TemplateInfo
TemplateInfo holds template definitions.
Definition: vtkParseData.h:85
_FunctionInfo::IsVariadic
int IsVariadic
Definition: vtkParseData.h:136
vtkParse_AddNamespaceToNamespace
void vtkParse_AddNamespaceToNamespace(NamespaceInfo *info, NamespaceInfo *item)
_FunctionInfo::NumberOfArguments
int NumberOfArguments
Definition: vtkParseData.h:146
_FunctionInfo::Parameters
ValueInfo ** Parameters
Definition: vtkParseData.h:131
_FunctionInfo::ArrayFailure
int ArrayFailure
Definition: vtkParseData.h:154
vtkParse_AddItemToArray
void vtkParse_AddItemToArray(ItemInfo **valueArray, int *count, parse_item_t type, int idx)
Expand the Item array for classes and namespaces.
_ClassInfo::NumberOfEnums
int NumberOfEnums
Definition: vtkParseData.h:194
_FunctionInfo::IsPublic
int IsPublic
Definition: vtkParseData.h:155
parse_item_t
enum _parse_item_t parse_item_t
ItemType constants.
_FunctionInfo::HintSize
int HintSize
Definition: vtkParseData.h:153
_parse_item_t
_parse_item_t
ItemType constants.
Definition: vtkParseData.h:51
_ClassInfo::NumberOfConstants
int NumberOfConstants
Definition: vtkParseData.h:190
vtkParseString.h
_ClassInfo::NumberOfFunctions
int NumberOfFunctions
Definition: vtkParseData.h:188
ClassInfo
struct _ClassInfo ClassInfo
ClassInfo is for classes, structs, unions, and namespaces.
_FunctionInfo::ArgCounts
int ArgCounts[MAX_ARGS]
Definition: vtkParseData.h:149
vtkParse_FreeEnum
void vtkParse_FreeEnum(EnumInfo *item)
_FunctionInfo::Name
const char * Name
Definition: vtkParseData.h:125
_ClassInfo::NumberOfSuperClasses
int NumberOfSuperClasses
Definition: vtkParseData.h:182
_FunctionInfo::ReturnClass
const char * ReturnClass
Definition: vtkParseData.h:151
UsingInfo
struct _UsingInfo UsingInfo
UsingInfo is for using directives.
_ValueInfo::Class
const char * Class
Definition: vtkParseData.h:106
vtkgl::type
GLuint GLuint GLsizei GLenum type
Definition: vtkgl.h:11315
vtkParse_AddUsingToNamespace
void vtkParse_AddUsingToNamespace(NamespaceInfo *info, UsingInfo *item)
vtkParse_CopyClass
void vtkParse_CopyClass(ClassInfo *data, const ClassInfo *orig)
vtkParse_AddEnumToClass
void vtkParse_AddEnumToClass(ClassInfo *info, EnumInfo *item)
vtkParse_FreeValue
void vtkParse_FreeValue(ValueInfo *val)
_FunctionInfo::IsConst
int IsConst
Definition: vtkParseData.h:141
vtkParse_InitValue
void vtkParse_InitValue(ValueInfo *val)
vtkParse_CopyFunction
void vtkParse_CopyFunction(FunctionInfo *data, const FunctionInfo *orig)
_ClassInfo::NumberOfTypedefs
int NumberOfTypedefs
Definition: vtkParseData.h:196
VTK_ACCESS_PUBLIC
@ VTK_ACCESS_PUBLIC
Definition: vtkParseData.h:42
_FunctionInfo::IsFinal
int IsFinal
Definition: vtkParseData.h:143