1 /*=========================================================================
3 Program: Visualization Toolkit
4 Module: vtkParseInternal.h
6 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
8 See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
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.
14 =========================================================================*/
17 This is an internal header for vtkParse.y, it contains methods for
18 manipulating the data structures that are not meant for general
19 use by the wrappers, and that are likely to change over time.
22 #ifndef VTK_PARSE_PRIVATE_H
23 #define VTK_PARSE_PRIVATE_H
35 void vtkParse_InitFile(FileInfo *file_info);
36 void vtkParse_InitNamespace(NamespaceInfo *namespace_info);
37 void vtkParse_InitClass(ClassInfo *cls);
38 void vtkParse_InitFunction(FunctionInfo *func);
39 void vtkParse_InitValue(ValueInfo *val);
40 void vtkParse_InitEnum(EnumInfo *item);
41 void vtkParse_InitUsing(UsingInfo *item);
42 void vtkParse_InitTemplateArgs(TemplateArgs *arg);
43 void vtkParse_InitTemplateArg(TemplateArg *arg);
50 void vtkParse_CopyNamespace(NamespaceInfo *data, const NamespaceInfo *orig);
51 void vtkParse_CopyClass(ClassInfo *data, const ClassInfo *orig);
52 void vtkParse_CopyFunction(FunctionInfo *data, const FunctionInfo *orig);
53 void vtkParse_CopyValue(ValueInfo *data, const ValueInfo *orig);
54 void vtkParse_CopyEnum(EnumInfo *data, const EnumInfo *orig);
55 void vtkParse_CopyUsing(UsingInfo *data, const UsingInfo *orig);
56 void vtkParse_CopyTemplateArgs(TemplateArgs *data, const TemplateArgs *orig);
57 void vtkParse_CopyTemplateArg(TemplateArg *data, const TemplateArg *orig);
64 void vtkParse_FreeFile(FileInfo *file_info);
65 void vtkParse_FreeNamespace(NamespaceInfo *namespace_info);
66 void vtkParse_FreeClass(ClassInfo *cls);
67 void vtkParse_FreeFunction(FunctionInfo *func);
68 void vtkParse_FreeValue(ValueInfo *val);
69 void vtkParse_FreeEnum(EnumInfo *item);
70 void vtkParse_FreeUsing(UsingInfo *item);
71 void vtkParse_FreeTemplateArgs(TemplateArgs *arg);
72 void vtkParse_FreeTemplateArg(TemplateArg *arg);
76 * Make a persistent copy of a string for use with AddStringToArray:
77 * At most 'n' chars will be copied, and the string will be terminated.
78 * If a null pointer is provided, then a null pointer will be returned.
80 const char *vtkParse_DuplicateString(const char *cp, size_t n);
83 * Add a string to an array of strings, grow array as necessary.
85 void vtkParse_AddStringToArray(
86 const char ***valueArray, int *count, const char *value);
89 * Expand the Item array for classes and namespaces.
91 void vtkParse_AddItemToArray(
92 ItemInfo **valueArray, int *count, parse_item_t type, int idx);
96 * Add various items to the structs.
99 void vtkParse_AddClassToClass(ClassInfo *info, ClassInfo *item);
100 void vtkParse_AddFunctionToClass(ClassInfo *info, FunctionInfo *item);
101 void vtkParse_AddEnumToClass(ClassInfo *info, EnumInfo *item);
102 void vtkParse_AddConstantToClass(ClassInfo *info, ValueInfo *item);
103 void vtkParse_AddVariableToClass(ClassInfo *info, ValueInfo *item);
104 void vtkParse_AddTypedefToClass(ClassInfo *info, ValueInfo *item);
105 void vtkParse_AddUsingToClass(ClassInfo *info, UsingInfo *item);
106 void vtkParse_AddNamespaceToNamespace(NamespaceInfo *info,NamespaceInfo *item);
107 void vtkParse_AddClassToNamespace(NamespaceInfo *info, ClassInfo *item);
108 void vtkParse_AddFunctionToNamespace(NamespaceInfo *info, FunctionInfo *item);
109 void vtkParse_AddEnumToNamespace(NamespaceInfo *info, EnumInfo *item);
110 void vtkParse_AddConstantToNamespace(NamespaceInfo *info, ValueInfo *item);
111 void vtkParse_AddVariableToNamespace(NamespaceInfo *info, ValueInfo *item);
112 void vtkParse_AddTypedefToNamespace(NamespaceInfo *info, ValueInfo *item);
113 void vtkParse_AddUsingToNamespace(NamespaceInfo *info, UsingInfo *item);
114 void vtkParse_AddArgumentToFunction(FunctionInfo *info, ValueInfo *item);
115 void vtkParse_AddArgumentToTemplate(TemplateArgs *info, TemplateArg *item);
119 * Add default constructors if they do not already exist
121 void vtkParse_AddDefaultConstructors(ClassInfo *data);
124 * Simple utility for mapping VTK types to VTK_PARSE types.
126 unsigned int vtkParse_MapType(int vtktype);
129 * Ignore BTX/ETX markers
131 void vtkParse_SetIgnoreBTX(int option);