/usr/include/vtk-6.3/vtkParseExtras.h is in libvtk6-dev 6.3.0+dfsg1-5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 | /*=========================================================================
Program: Visualization Toolkit
Module: vtkParseExtras.h
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
/*-------------------------------------------------------------------------
Copyright (c) 2011 David Gobbi.
Contributed to the VisualizationToolkit by the author in May 2011
under the terms of the Visualization Toolkit 2008 copyright.
-------------------------------------------------------------------------*/
/**
* This file contains extra utilities for parsing and wrapping.
*/
#ifndef VTK_PARSE_EXTRAS_H
#define VTK_PARSE_EXTRAS_H
#include "vtkParseData.h"
#include <stddef.h>
/* Flags for selecting what info to print for declarations */
#define VTK_PARSE_NAMES 0x00000010
#define VTK_PARSE_VALUES 0x00000020
#define VTK_PARSE_RETURN_VALUE 0x00000040
#define VTK_PARSE_PARAMETER_LIST 0x00000080
#define VTK_PARSE_SPECIFIERS 0x00FF0000
#define VTK_PARSE_TRAILERS 0x0F000000
#define VTK_PARSE_TEMPLATES 0xF0000000
#define VTK_PARSE_EVERYTHING 0xFFFFFFFF
#ifdef __cplusplus
extern "C" {
#endif
/**
* Skip over a sequence of characters that begin with an alphabetic
* character or an underscore, and include only alphanumeric
* characters or underscores. Return the number of characters.
*/
size_t vtkParse_IdentifierLength(const char *text);
/**
* Skip over a name, including any namespace prefixes and
* any template arguments. Return the number of characters.
* Examples are "name", "::name", "name<arg>", "name::name2",
* "::name::name2<arg1,arg2>".
*/
size_t vtkParse_NameLength(const char *text);
/**
* Skip over a name, including any template arguments, but stopping
* if a '::' is encoutered. Return the number of characters.
* Examples are "name" and "name<arg>"
*/
size_t vtkParse_UnscopedNameLength(const char *text);
/**
* Skip over a literal, which may be a number, a char in single
* quotes, a string in double quotes, or a name, or a name followed
* by arguments in parentheses.
*/
size_t vtkParse_LiteralLength(const char *text);
/**
* Get a type from a type name, and return the number of characters used.
* If the "classname" argument is not NULL, then it is used to return
* the short name for the type, e.g. "long int" becomes "long", while
* typedef names and class names are returned unchanged. If "const"
* appears in the type name, then the const bit flag is set for the
* type, but "const" will not appear in the returned classname.
*/
size_t vtkParse_BasicTypeFromString(
const char *text, unsigned int *type,
const char **classname, size_t *classname_len);
/**
* Generate a ValueInfo by parsing the type from the provided text.
* Only simple text strings are supported, e.g. "const T **".
* Returns the number of characters consumed.
*/
size_t vtkParse_ValueInfoFromString(
ValueInfo *val, StringCache *cache, const char *text);
/**
* Generate a C++ declaration string from a ValueInfo struct.
*
* The resulting string can represent a parameter declaration, a variable
* or type declaration, or a function return value. To use this function,
* you should call it twice: first, call it with "text" set to NULL, and
* it will return a lower bound on the length of the string that will be
* produced. Next, allocate at least length+1 bytes for the string, and
* and call it again with "text" set to the allocated string. The number
* of bytes written to the string (not including the terminating null) will
* be returned.
*
* The flags provide a mask that controls what information will be included,
* for example VTK_PARSE_CONST|VTK_PARSE_VOLATILE is needed to include the
* 'const' or 'volatile' qualifiers. Use VTK_PARSE_EVERYTHING to generate
* the entire declaration for a variable or parameter.
*/
size_t vtkParse_ValueInfoToString(
ValueInfo *data, char *text, unsigned int flags);
/**
* Generate a C++ function signature from a FunctionInfo struct.
*
* See vtkParse_ValueInfoToString() for basic usage. The flags can be set
* to VTK_PARSE_RETURN_VALUE to print only the return value for the function,
* or VTK_PARSE_PARAMETER_LIST to print only the parameter list.
*/
size_t vtkParse_FunctionInfoToString(
FunctionInfo *func, char *text, unsigned int flags);
/**
* Generate a C++ template declaration from a TemplateInfo struct.
*
* See vtkParse_ValueInfoToString() for basic usage.
*/
size_t vtkParse_TemplateInfoToString(
TemplateInfo *func, char *text, unsigned int flags);
/**
* Compare two C++ functions to see if they have the same signature.
*
* The following are the possible return values. Any non-zero return value
* means that the parameters match. If the 2nd bit is also set, then the
* function return value also matches. If the 3rd bit is set, then the
* parameters match and both methods are members of the same class, and
* the constness of the functions match. This means that the signatures
* are not identical unless the return value is 7 or higher (.
*/
int vtkParse_CompareFunctionSignature(
const FunctionInfo *func1, const FunctionInfo *func2);
/**
* Expand a typedef within a variable, parameter, or typedef declaration.
* The expansion is done in-place.
*/
void vtkParse_ExpandTypedef(ValueInfo *valinfo, ValueInfo *typedefinfo);
/**
* Expand any unrecognized types within a variable, parameter, or typedef
* that match any of the supplied typedefs. The expansion is done in-place.
*/
void vtkParse_ExpandTypedefs(
ValueInfo *valinfo, StringCache *cache,
int n, const char *name[], const char *val[],
ValueInfo *typedefinfo[]);
/**
* Wherever one of the specified names exists inside a Value or inside
* a Dimension size, replace it with the corresponding val string.
* This is used to replace constants with their values.
*/
void vtkParse_ExpandValues(
ValueInfo *valinfo, StringCache *cache,
int n, const char *name[], const char *val[]);
/**
* Search and replace, return the initial string if no replacements
* occurred, else return a new string allocated with malloc. */
const char *vtkParse_StringReplace(
const char *str1, int n, const char *name[], const char *val[]);
/**
* Extract the class name and template args from a templated
* class type ID. Returns the full number of characters that
* were consumed during the decomposition.
*/
size_t vtkParse_DecomposeTemplatedType(
const char *text, const char **classname,
int n, const char ***args, const char *defaults[]);
/**
* Free the list of strings returned by ExtractTemplateArgs.
*/
void vtkParse_FreeTemplateDecomposition(
const char *classname, int n, const char **args);
/**
* Instantiate a class template by substituting the provided arguments
* for the template parameters. If "n" is less than the number of template
* parameters, then default parameter values (if present) will be used.
* If an error occurs, the error will be printed to stderr and NULL will
* be returned.
*/
void vtkParse_InstantiateClassTemplate(
ClassInfo *data, StringCache *cache, int n, const char *args[]);
/**
* Instantiate a function or class method template by substituting the
* provided arguments for the template parameters. If "n" is less than
* the number of template parameters, then default parameter values
* (if present) will be used. If an error occurs, the error will be
* printed to stderr and NULL will be returned.
*/
void vtkParse_IntantiateFunctionTemplate(
FunctionInfo *data, int n, const char *args[]);
/**
* Get a zero-terminated array of the types in vtkTemplateMacro.
*/
const char **vtkParse_GetTemplateMacroTypes();
/**
* Get a zero-terminated array of the types in vtkArray.
*/
const char **vtkParse_GetArrayTypes();
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif
|