~ubuntu-branches/ubuntu/wily/opencollada/wily-proposed

« back to all changes in this revision

Viewing changes to COLLADASaxFrameworkLoader/src/generated15/COLLADASaxFWLColladaParserAutoGen15Private.cpp

  • Committer: Package Import Robot
  • Author(s): Matteo F. Vescovi
  • Date: 2015-05-14 17:23:27 UTC
  • Revision ID: package-import@ubuntu.com-20150514172327-f862u8envms01fra
Tags: upstream-0.1.0~20140703.ddf8f47+dfsg1
ImportĀ upstreamĀ versionĀ 0.1.0~20140703.ddf8f47+dfsg1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
    Copyright (c) 2008-2009 NetAllied Systems GmbH
 
3
 
 
4
    This file is part of COLLADASaxFrameworkLoader.
 
5
 
 
6
    Licensed under the MIT Open Source License,
 
7
    for details please see LICENSE file or the website
 
8
    http://www.opensource.org/licenses/mit-license.php
 
9
*/
 
10
 
 
11
#include "COLLADASaxFWLStableHeaders.h"
 
12
#include "GeneratedSaxParserUtils.h"
 
13
 
 
14
#include "COLLADASaxFWLColladaParserAutoGen15Private.h"
 
15
 
 
16
 
 
17
// disable warning "unused variable"
 
18
#if defined(__INTEL_COMPILER) && !defined(WIN32)
 
19
template <typename T>
 
20
inline void disable_warning_unused(T &x) { (void)x; }
 
21
#    define DISABLE_WARNING_UNUSED(x) disable_warning_unused(x);
 
22
#else
 
23
#    define DISABLE_WARNING_UNUSED(x) (void)x;
 
24
#endif
 
25
 
 
26
 
 
27
 
 
28
namespace COLLADASaxFWL15
 
29
{
 
30
 
 
31
 
 
32
//---------------------------------------------------------------------
 
33
ColladaParserAutoGen15Private::ColladaParserAutoGen15Private( COLLADASaxFWL15::ColladaParserAutoGen15* impl, GeneratedSaxParser::IErrorHandler* errorHandler 
 
34
)    : GeneratedSaxParser::ParserTemplate<ColladaParserAutoGen15Private, ColladaParserAutoGen15>(impl, errorHandler)
 
35
{
 
36
    initFunctionMap();
 
37
    initNameMap();
 
38
}
 
39
 
 
40
//---------------------------------------------------------------------
 
41
ColladaParserAutoGen15Private::~ColladaParserAutoGen15Private()
 
42
{
 
43
}
 
44
 
 
45
 
 
46
//---------------------------------------------------------------------
 
47
const char* NAME_NAMESPACE_COLLADA = "http://www.collada.org/2008/03/COLLADASchema";
 
48
const char* NAME_NAMESPACE_http___www_w3_org_2001_XMLSchema = "http://www.w3.org/2001/XMLSchema";
 
49
const char* NAME_NAMESPACE_http___www_w3_org_XML_1998_namespace = "http://www.w3.org/XML/1998/namespace";
 
50
const char* NAME_NAMESPACE_mathml = "http://www.w3.org/1998/Math/MathML";
 
51
const char* NAME_NAMESPACE_http___www_w3_org_1999_xlink = "http://www.w3.org/1999/xlink";
 
52
 
 
53
const char* NAME_ATTRIBUTE_ALTIMG = "altimg";
 
54
const char* NAME_ATTRIBUTE_ALTTEXT = "alttext";
 
55
const char* NAME_ATTRIBUTE_ARRAY_INDEX = "array_index";
 
56
const char* NAME_ATTRIBUTE_AUTO_GENERATE = "auto_generate";
 
57
const char* NAME_ATTRIBUTE_AXIS = NAME_ELEMENT_AXIS;
 
58
const char* NAME_ATTRIBUTE_BASE = "xml:base";
 
59
const char* NAME_ATTRIBUTE_BASELINE = "baseline";
 
60
const char* NAME_ATTRIBUTE_BODY = "body";
 
61
const char* NAME_ATTRIBUTE_CAMERA_NODE = "camera_node";
 
62
const char* NAME_ATTRIBUTE_CHANNELS = "channels";
 
63
const char* NAME_ATTRIBUTE_CLASS = "class";
 
64
const char* NAME_ATTRIBUTE_CLOSED = "closed";
 
65
const char* NAME_ATTRIBUTE_CLOSED_U = "closed_u";
 
66
const char* NAME_ATTRIBUTE_CLOSED_V = "closed_v";
 
67
const char* NAME_ATTRIBUTE_CLOSURE = "closure";
 
68
const char* NAME_ATTRIBUTE_CONSTRAINT = "constraint";
 
69
const char* NAME_ATTRIBUTE_CONVEX_HULL_OF = "convex_hull_of";
 
70
const char* NAME_ATTRIBUTE_COUNT = "count";
 
71
const char* NAME_ATTRIBUTE_DEFINITIONURL = "definitionURL";
 
72
const char* NAME_ATTRIBUTE_DEGREE = "degree";
 
73
const char* NAME_ATTRIBUTE_DEGREE_U = "degree_u";
 
74
const char* NAME_ATTRIBUTE_DEGREE_V = "degree_v";
 
75
const char* NAME_ATTRIBUTE_DEPTH = "depth";
 
76
const char* NAME_ATTRIBUTE_DIGITS = "digits";
 
77
const char* NAME_ATTRIBUTE_DISPLAY = "display";
 
78
const char* NAME_ATTRIBUTE_ENABLE = "enable";
 
79
const char* NAME_ATTRIBUTE_ENCODING = "encoding";
 
80
const char* NAME_ATTRIBUTE_END = "end";
 
81
const char* NAME_ATTRIBUTE_ENTRY = "entry";
 
82
const char* NAME_ATTRIBUTE_FACE = NAME_ELEMENT_FACE;
 
83
const char* NAME_ATTRIBUTE_FORMAT = "format";
 
84
const char* NAME_ATTRIBUTE_HEIGHT = "height";
 
85
const char* NAME_ATTRIBUTE_HREF = "href";
 
86
const char* NAME_ATTRIBUTE_ID = "id";
 
87
const char* NAME_ATTRIBUTE_INDEX = "index";
 
88
const char* NAME_ATTRIBUTE_INPUT_SEMANTIC = "input_semantic";
 
89
const char* NAME_ATTRIBUTE_INPUT_SET = "input_set";
 
90
const char* NAME_ATTRIBUTE_JOINT = NAME_ELEMENT_JOINT;
 
91
const char* NAME_ATTRIBUTE_LANGUAGE = "language";
 
92
const char* NAME_ATTRIBUTE_LAYER = "layer";
 
93
const char* NAME_ATTRIBUTE_LENGTH = "length";
 
94
const char* NAME_ATTRIBUTE_LEVELS = "levels";
 
95
const char* NAME_ATTRIBUTE_LINK = NAME_ELEMENT_LINK;
 
96
const char* NAME_ATTRIBUTE_MACROS = "macros";
 
97
const char* NAME_ATTRIBUTE_MAGNITUDE = "magnitude";
 
98
const char* NAME_ATTRIBUTE_MATERIAL = "material";
 
99
const char* NAME_ATTRIBUTE_MAXINCLUSIVE = "maxInclusive";
 
100
const char* NAME_ATTRIBUTE_METER = "meter";
 
101
const char* NAME_ATTRIBUTE_METHOD = "method";
 
102
const char* NAME_ATTRIBUTE_MININCLUSIVE = "minInclusive";
 
103
const char* NAME_ATTRIBUTE_MIP = "mip";
 
104
const char* NAME_ATTRIBUTE_MIPS_GENERATE = "mips_generate";
 
105
const char* NAME_ATTRIBUTE_MIP_INDEX = "mip_index";
 
106
const char* NAME_ATTRIBUTE_MODE = "mode";
 
107
const char* NAME_ATTRIBUTE_NAME = "name";
 
108
const char* NAME_ATTRIBUTE_NARGS = "nargs";
 
109
const char* NAME_ATTRIBUTE_NODE = NAME_ELEMENT_NODE;
 
110
const char* NAME_ATTRIBUTE_OCCURRENCE = "occurrence";
 
111
const char* NAME_ATTRIBUTE_OFFSET = "offset";
 
112
const char* NAME_ATTRIBUTE_OPAQUE = "opaque";
 
113
const char* NAME_ATTRIBUTE_OPERAND = "operand";
 
114
const char* NAME_ATTRIBUTE_OPERATOR = "operator";
 
115
const char* NAME_ATTRIBUTE_OPTIONS = "options";
 
116
const char* NAME_ATTRIBUTE_ORDER = "order";
 
117
const char* NAME_ATTRIBUTE_OVERFLOW = "overflow";
 
118
const char* NAME_ATTRIBUTE_PARAM = NAME_ELEMENT_PARAM;
 
119
const char* NAME_ATTRIBUTE_PARENT = "parent";
 
120
const char* NAME_ATTRIBUTE_PASS = NAME_ELEMENT_PASS;
 
121
const char* NAME_ATTRIBUTE_PLATFORM = "platform";
 
122
const char* NAME_ATTRIBUTE_PLATFORMS = "platforms";
 
123
const char* NAME_ATTRIBUTE_POST_BEHAVIOR = "post_behavior";
 
124
const char* NAME_ATTRIBUTE_PRECISION = "precision";
 
125
const char* NAME_ATTRIBUTE_PRE_BEHAVIOR = "pre_behavior";
 
126
const char* NAME_ATTRIBUTE_PROFILE = "profile";
 
127
const char* NAME_ATTRIBUTE_PROXY = "proxy";
 
128
const char* NAME_ATTRIBUTE_RANGE = "range";
 
129
const char* NAME_ATTRIBUTE_REF = "ref";
 
130
const char* NAME_ATTRIBUTE_RESIZABLE = "resizable";
 
131
const char* NAME_ATTRIBUTE_RIGID_BODY = NAME_ELEMENT_RIGID_BODY;
 
132
const char* NAME_ATTRIBUTE_SAMPLER = NAME_ELEMENT_SAMPLER;
 
133
const char* NAME_ATTRIBUTE_SCALE = "scale";
 
134
const char* NAME_ATTRIBUTE_SCOPE = "scope";
 
135
const char* NAME_ATTRIBUTE_SEMANTIC = "semantic";
 
136
const char* NAME_ATTRIBUTE_SET = "set";
 
137
const char* NAME_ATTRIBUTE_SHARE = "share";
 
138
const char* NAME_ATTRIBUTE_SID = "sid";
 
139
const char* NAME_ATTRIBUTE_SLICE = "slice";
 
140
const char* NAME_ATTRIBUTE_SOURCE = NAME_ELEMENT_SOURCE;
 
141
const char* NAME_ATTRIBUTE_SPACE = "space";
 
142
const char* NAME_ATTRIBUTE_STAGE = "stage";
 
143
const char* NAME_ATTRIBUTE_START = "start";
 
144
const char* NAME_ATTRIBUTE_STRIDE = "stride";
 
145
const char* NAME_ATTRIBUTE_STYLE = "style";
 
146
const char* NAME_ATTRIBUTE_SYMBOL = "symbol";
 
147
const char* NAME_ATTRIBUTE_TARGET = "target";
 
148
const char* NAME_ATTRIBUTE_TEXCOORD = "texcoord";
 
149
const char* NAME_ATTRIBUTE_TEXTURE = NAME_ELEMENT_TEXTURE;
 
150
const char* NAME_ATTRIBUTE_TYPE = "type";
 
151
const char* NAME_ATTRIBUTE_TYPENAME = "typename";
 
152
const char* NAME_ATTRIBUTE_URL = "url";
 
153
const char* NAME_ATTRIBUTE_VALUE = "value";
 
154
const char* NAME_ATTRIBUTE_VERSION = "version";
 
155
const char* NAME_ATTRIBUTE_WIDTH = "width";
 
156
const char* NAME_ATTRIBUTE_XMLNS = "xmlns";
 
157
const char* NAME_ATTRIBUTE_XREF = "xref";
 
158
const char* NAME_ELEMENT_ABS = "abs";
 
159
const char* NAME_ELEMENT_ACCELERATION = "acceleration";
 
160
const char* NAME_ELEMENT_ACCELERATION____COMMON_FLOAT2_OR_PARAM_TYPE = "acceleration____common_float2_or_param_type";
 
161
const char* NAME_ELEMENT_ACCELERATION____COMMON_FLOAT_OR_PARAM_TYPE = "acceleration____common_float_or_param_type";
 
162
const char* NAME_ELEMENT_ACCESSOR = "accessor";
 
163
const char* NAME_ELEMENT_ACTIVE = "active";
 
164
const char* NAME_ELEMENT_ALPHA = "alpha";
 
165
const char* NAME_ELEMENT_ALPHA_FUNC = "alpha_func";
 
166
const char* NAME_ELEMENT_ALPHA_TEST_ENABLE = "alpha_test_enable";
 
167
const char* NAME_ELEMENT_ALPHA____GLES_TEXCOMBINER_COMMAND_ALPHA_TYPE = "alpha____gles_texcombiner_command_alpha_type";
 
168
const char* NAME_ELEMENT_ALTITUDE = "altitude";
 
169
const char* NAME_ELEMENT_AMBIENT = "ambient";
 
170
const char* NAME_ELEMENT_AMBIENT____FX_COMMON_COLOR_OR_TEXTURE_TYPE = "ambient____fx_common_color_or_texture_type";
 
171
const char* NAME_ELEMENT_AND = "and";
 
172
const char* NAME_ELEMENT_ANGLE = "angle";
 
173
const char* NAME_ELEMENT_ANGULAR = "angular";
 
174
const char* NAME_ELEMENT_ANGULAR_VELOCITY = "angular_velocity";
 
175
const char* NAME_ELEMENT_ANIMATION = "animation";
 
176
const char* NAME_ELEMENT_ANIMATION_CLIP = "animation_clip";
 
177
const char* NAME_ELEMENT_ANNOTATE = "annotate";
 
178
const char* NAME_ELEMENT_ANNOTATION = "annotation";
 
179
const char* NAME_ELEMENT_ANNOTATION_XML = "annotation_xml";
 
180
const char* NAME_ELEMENT_APPLY = "apply";
 
181
const char* NAME_ELEMENT_APPROX = "approx";
 
182
const char* NAME_ELEMENT_ARCCOS = "arccos";
 
183
const char* NAME_ELEMENT_ARCCOSH = "arccosh";
 
184
const char* NAME_ELEMENT_ARCCOT = "arccot";
 
185
const char* NAME_ELEMENT_ARCCOTH = "arccoth";
 
186
const char* NAME_ELEMENT_ARCCSC = "arccsc";
 
187
const char* NAME_ELEMENT_ARCCSCH = "arccsch";
 
188
const char* NAME_ELEMENT_ARCSEC = "arcsec";
 
189
const char* NAME_ELEMENT_ARCSECH = "arcsech";
 
190
const char* NAME_ELEMENT_ARCSIN = "arcsin";
 
191
const char* NAME_ELEMENT_ARCSINH = "arcsinh";
 
192
const char* NAME_ELEMENT_ARCTAN = "arctan";
 
193
const char* NAME_ELEMENT_ARCTANH = "arctanh";
 
194
const char* NAME_ELEMENT_ARG = "arg";
 
195
const char* NAME_ELEMENT_ARGUMENT = "argument";
 
196
const char* NAME_ELEMENT_ARGUMENT____GLES_TEXCOMBINER_ARGUMENT_ALPHA_TYPE = "argument____gles_texcombiner_argument_alpha_type";
 
197
const char* NAME_ELEMENT_ARGUMENT____GLES_TEXCOMBINER_ARGUMENT_RGB_TYPE = "argument____gles_texcombiner_argument_rgb_type";
 
198
const char* NAME_ELEMENT_ARRAY = "array";
 
199
const char* NAME_ELEMENT_ARRAY____CG_ARRAY_TYPE = "array____cg_array_type";
 
200
const char* NAME_ELEMENT_ARRAY____GLSL_ARRAY_TYPE = "array____glsl_array_type";
 
201
const char* NAME_ELEMENT_ARTICULATED_SYSTEM = "articulated_system";
 
202
const char* NAME_ELEMENT_ASPECT_RATIO = "aspect_ratio";
 
203
const char* NAME_ELEMENT_ASSET = "asset";
 
204
const char* NAME_ELEMENT_ATTACHMENT = "attachment";
 
205
const char* NAME_ELEMENT_ATTACHMENT_END = "attachment_end";
 
206
const char* NAME_ELEMENT_ATTACHMENT_FULL = "attachment_full";
 
207
const char* NAME_ELEMENT_ATTACHMENT_START = "attachment_start";
 
208
const char* NAME_ELEMENT_AUTHOR = "author";
 
209
const char* NAME_ELEMENT_AUTHORING_TOOL = "authoring_tool";
 
210
const char* NAME_ELEMENT_AUTHOR_EMAIL = "author_email";
 
211
const char* NAME_ELEMENT_AUTHOR_WEBSITE = "author_website";
 
212
const char* NAME_ELEMENT_AXIS = "axis";
 
213
const char* NAME_ELEMENT_AXIS_INFO = "axis_info";
 
214
const char* NAME_ELEMENT_AXIS_INFO____KINEMATICS_AXIS_INFO_TYPE = "axis_info____kinematics_axis_info_type";
 
215
const char* NAME_ELEMENT_AXIS_INFO____MOTION_AXIS_INFO_TYPE = "axis_info____motion_axis_info_type";
 
216
const char* NAME_ELEMENT_AXIS____AXIS_TYPE = "axis____axis_type";
 
217
const char* NAME_ELEMENT_AXIS____COMMON_SIDREF_OR_PARAM_TYPE = "axis____common_sidref_or_param_type";
 
218
const char* NAME_ELEMENT_AXIS____FLOAT3_TYPE = "axis____float3_type";
 
219
const char* NAME_ELEMENT_BACK = "back";
 
220
const char* NAME_ELEMENT_BINARY = "binary";
 
221
const char* NAME_ELEMENT_BINARY__HEX = "binary__hex";
 
222
const char* NAME_ELEMENT_BIND = "bind";
 
223
const char* NAME_ELEMENT_BIND_ATTRIBUTE = "bind_attribute";
 
224
const char* NAME_ELEMENT_BIND_JOINT_AXIS = "bind_joint_axis";
 
225
const char* NAME_ELEMENT_BIND_KINEMATICS_MODEL = "bind_kinematics_model";
 
226
const char* NAME_ELEMENT_BIND_MATERIAL = "bind_material";
 
227
const char* NAME_ELEMENT_BIND_MATERIAL_TYPE____TECHNIQUE_COMMON = "bind_material_type____technique_common";
 
228
const char* NAME_ELEMENT_BIND_SHAPE_MATRIX = "bind_shape_matrix";
 
229
const char* NAME_ELEMENT_BIND_UNIFORM = "bind_uniform";
 
230
const char* NAME_ELEMENT_BIND_VERTEX_INPUT = "bind_vertex_input";
 
231
const char* NAME_ELEMENT_BIND____KINEMATICS_BIND_TYPE = "bind____kinematics_bind_type";
 
232
const char* NAME_ELEMENT_BLEND_COLOR = "blend_color";
 
233
const char* NAME_ELEMENT_BLEND_ENABLE = "blend_enable";
 
234
const char* NAME_ELEMENT_BLEND_EQUATION = "blend_equation";
 
235
const char* NAME_ELEMENT_BLEND_EQUATION_SEPARATE = "blend_equation_separate";
 
236
const char* NAME_ELEMENT_BLEND_FUNC = "blend_func";
 
237
const char* NAME_ELEMENT_BLEND_FUNC_SEPARATE = "blend_func_separate";
 
238
const char* NAME_ELEMENT_BLINN = "blinn";
 
239
const char* NAME_ELEMENT_BOOL = "bool";
 
240
const char* NAME_ELEMENT_BOOL2 = "bool2";
 
241
const char* NAME_ELEMENT_BOOL2X1 = "bool2x1";
 
242
const char* NAME_ELEMENT_BOOL2X2 = "bool2x2";
 
243
const char* NAME_ELEMENT_BOOL2X3 = "bool2x3";
 
244
const char* NAME_ELEMENT_BOOL2X4 = "bool2x4";
 
245
const char* NAME_ELEMENT_BOOL3 = "bool3";
 
246
const char* NAME_ELEMENT_BOOL3X1 = "bool3x1";
 
247
const char* NAME_ELEMENT_BOOL3X2 = "bool3x2";
 
248
const char* NAME_ELEMENT_BOOL3X3 = "bool3x3";
 
249
const char* NAME_ELEMENT_BOOL3X4 = "bool3x4";
 
250
const char* NAME_ELEMENT_BOOL4 = "bool4";
 
251
const char* NAME_ELEMENT_BOOL4X1 = "bool4x1";
 
252
const char* NAME_ELEMENT_BOOL4X2 = "bool4x2";
 
253
const char* NAME_ELEMENT_BOOL4X3 = "bool4x3";
 
254
const char* NAME_ELEMENT_BOOL4X4 = "bool4x4";
 
255
const char* NAME_ELEMENT_BOOL_ARRAY = "bool_array";
 
256
const char* NAME_ELEMENT_BORDER_COLOR = "border_color";
 
257
const char* NAME_ELEMENT_BOX = "box";
 
258
const char* NAME_ELEMENT_BREP = "brep";
 
259
const char* NAME_ELEMENT_BVAR = "bvar";
 
260
const char* NAME_ELEMENT_BVEC2 = "bvec2";
 
261
const char* NAME_ELEMENT_BVEC3 = "bvec3";
 
262
const char* NAME_ELEMENT_BVEC4 = "bvec4";
 
263
const char* NAME_ELEMENT_CAMERA = "camera";
 
264
const char* NAME_ELEMENT_CAPSULE = "capsule";
 
265
const char* NAME_ELEMENT_CARD = "card";
 
266
const char* NAME_ELEMENT_CARTESIANPRODUCT = "cartesianproduct";
 
267
const char* NAME_ELEMENT_CEILING = "ceiling";
 
268
const char* NAME_ELEMENT_CG_PASS_TYPE____EVALUATE = "cg_pass_type____evaluate";
 
269
const char* NAME_ELEMENT_CG_PASS_TYPE____PROGRAM = "cg_pass_type____program";
 
270
const char* NAME_ELEMENT_CG_PASS_TYPE____STATES = "cg_pass_type____states";
 
271
const char* NAME_ELEMENT_CHANNEL = "channel";
 
272
const char* NAME_ELEMENT_CI = "ci";
 
273
const char* NAME_ELEMENT_CIRCLE = "circle";
 
274
const char* NAME_ELEMENT_CLIP_PLANE = "clip_plane";
 
275
const char* NAME_ELEMENT_CLIP_PLANE_ENABLE = "clip_plane_enable";
 
276
const char* NAME_ELEMENT_CN = "cn";
 
277
const char* NAME_ELEMENT_CODE = "code";
 
278
const char* NAME_ELEMENT_CODOMAIN = "codomain";
 
279
const char* NAME_ELEMENT_COLLADA = "COLLADA";
 
280
const char* NAME_ELEMENT_COLOR = "color";
 
281
const char* NAME_ELEMENT_COLOR_CLEAR = "color_clear";
 
282
const char* NAME_ELEMENT_COLOR_LOGIC_OP_ENABLE = "color_logic_op_enable";
 
283
const char* NAME_ELEMENT_COLOR_MASK = "color_mask";
 
284
const char* NAME_ELEMENT_COLOR_MATERIAL = "color_material";
 
285
const char* NAME_ELEMENT_COLOR_MATERIAL_ENABLE = "color_material_enable";
 
286
const char* NAME_ELEMENT_COLOR_MATERIAL__FACE = "color_material__face";
 
287
const char* NAME_ELEMENT_COLOR_MATERIAL__MODE = "color_material__mode";
 
288
const char* NAME_ELEMENT_COLOR_TARGET = "color_target";
 
289
const char* NAME_ELEMENT_COLOR____TARGETABLE_FLOAT3_TYPE = "color____targetable_float3_type";
 
290
const char* NAME_ELEMENT_COMMENTS = "comments";
 
291
const char* NAME_ELEMENT_COMPILER = "compiler";
 
292
const char* NAME_ELEMENT_COMPLEXES = "complexes";
 
293
const char* NAME_ELEMENT_COMPOSE = "compose";
 
294
const char* NAME_ELEMENT_CONDITION = "condition";
 
295
const char* NAME_ELEMENT_CONE = "cone";
 
296
const char* NAME_ELEMENT_CONJUGATE = "conjugate";
 
297
const char* NAME_ELEMENT_CONNECT_PARAM = "connect_param";
 
298
const char* NAME_ELEMENT_CONSTANT = "constant";
 
299
const char* NAME_ELEMENT_CONSTANT_ATTENUATION = "constant_attenuation";
 
300
const char* NAME_ELEMENT_CONSTANT____GLES_TEXTURE_CONSTANT_TYPE = "constant____gles_texture_constant_type";
 
301
const char* NAME_ELEMENT_CONTRIBUTOR = "contributor";
 
302
const char* NAME_ELEMENT_CONTROLLER = "controller";
 
303
const char* NAME_ELEMENT_CONTROL_VERTICES = "control_vertices";
 
304
const char* NAME_ELEMENT_CONVEX_MESH = "convex_mesh";
 
305
const char* NAME_ELEMENT_COPYRIGHT = "copyright";
 
306
const char* NAME_ELEMENT_COS = "cos";
 
307
const char* NAME_ELEMENT_COSH = "cosh";
 
308
const char* NAME_ELEMENT_COT = "cot";
 
309
const char* NAME_ELEMENT_COTH = "coth";
 
310
const char* NAME_ELEMENT_COVERAGE = "coverage";
 
311
const char* NAME_ELEMENT_CREATED = "created";
 
312
const char* NAME_ELEMENT_CREATE_2D = "create_2d";
 
313
const char* NAME_ELEMENT_CREATE_2D__ARRAY = "create_2d__array";
 
314
const char* NAME_ELEMENT_CREATE_2D__FORMAT = "create_2d__format";
 
315
const char* NAME_ELEMENT_CREATE_2D__FORMAT__HINT = "create_2d__format__hint";
 
316
const char* NAME_ELEMENT_CREATE_2D__INIT_FROM = "create_2d__init_from";
 
317
const char* NAME_ELEMENT_CREATE_3D = "create_3d";
 
318
const char* NAME_ELEMENT_CREATE_3D__ARRAY = "create_3d__array";
 
319
const char* NAME_ELEMENT_CREATE_3D__FORMAT = "create_3d__format";
 
320
const char* NAME_ELEMENT_CREATE_3D__FORMAT__HINT = "create_3d__format__hint";
 
321
const char* NAME_ELEMENT_CREATE_3D__INIT_FROM = "create_3d__init_from";
 
322
const char* NAME_ELEMENT_CREATE_3D__SIZE = "create_3d__size";
 
323
const char* NAME_ELEMENT_CREATE_CUBE = "create_cube";
 
324
const char* NAME_ELEMENT_CREATE_CUBE__ARRAY = "create_cube__array";
 
325
const char* NAME_ELEMENT_CREATE_CUBE__FORMAT = "create_cube__format";
 
326
const char* NAME_ELEMENT_CREATE_CUBE__FORMAT__HINT = "create_cube__format__hint";
 
327
const char* NAME_ELEMENT_CREATE_CUBE__INIT_FROM = "create_cube__init_from";
 
328
const char* NAME_ELEMENT_CREATE_CUBE__SIZE = "create_cube__size";
 
329
const char* NAME_ELEMENT_CSC = "csc";
 
330
const char* NAME_ELEMENT_CSCH = "csch";
 
331
const char* NAME_ELEMENT_CSYMBOL = "csymbol";
 
332
const char* NAME_ELEMENT_CULL_FACE = "cull_face";
 
333
const char* NAME_ELEMENT_CULL_FACE_ENABLE = "cull_face_enable";
 
334
const char* NAME_ELEMENT_CURL = "curl";
 
335
const char* NAME_ELEMENT_CURVE = "curve";
 
336
const char* NAME_ELEMENT_CURVES = "curves";
 
337
const char* NAME_ELEMENT_CYLINDER = "cylinder";
 
338
const char* NAME_ELEMENT_CYLINDER____CYLINDER_TYPE = "cylinder____cylinder_type";
 
339
const char* NAME_ELEMENT_DAMPING = "damping";
 
340
const char* NAME_ELEMENT_DECELERATION = "deceleration";
 
341
const char* NAME_ELEMENT_DECELERATION____COMMON_FLOAT2_OR_PARAM_TYPE = "deceleration____common_float2_or_param_type";
 
342
const char* NAME_ELEMENT_DECELERATION____COMMON_FLOAT_OR_PARAM_TYPE = "deceleration____common_float_or_param_type";
 
343
const char* NAME_ELEMENT_DECLARE = "declare";
 
344
const char* NAME_ELEMENT_DEGREE = NAME_ATTRIBUTE_DEGREE;
 
345
const char* NAME_ELEMENT_DENSITY = "density";
 
346
const char* NAME_ELEMENT_DEPTH_BOUNDS = "depth_bounds";
 
347
const char* NAME_ELEMENT_DEPTH_BOUNDS_ENABLE = "depth_bounds_enable";
 
348
const char* NAME_ELEMENT_DEPTH_CLAMP_ENABLE = "depth_clamp_enable";
 
349
const char* NAME_ELEMENT_DEPTH_CLEAR = "depth_clear";
 
350
const char* NAME_ELEMENT_DEPTH_FUNC = "depth_func";
 
351
const char* NAME_ELEMENT_DEPTH_MASK = "depth_mask";
 
352
const char* NAME_ELEMENT_DEPTH_RANGE = "depth_range";
 
353
const char* NAME_ELEMENT_DEPTH_TARGET = "depth_target";
 
354
const char* NAME_ELEMENT_DEPTH_TEST_ENABLE = "depth_test_enable";
 
355
const char* NAME_ELEMENT_DEST = "dest";
 
356
const char* NAME_ELEMENT_DEST_ALPHA = "dest_alpha";
 
357
const char* NAME_ELEMENT_DEST_RGB = "dest_rgb";
 
358
const char* NAME_ELEMENT_DETERMINANT = "determinant";
 
359
const char* NAME_ELEMENT_DIFF = "diff";
 
360
const char* NAME_ELEMENT_DIFFUSE = "diffuse";
 
361
const char* NAME_ELEMENT_DIRECTION = "direction";
 
362
const char* NAME_ELEMENT_DIRECTIONAL = "directional";
 
363
const char* NAME_ELEMENT_DITHER_ENABLE = "dither_enable";
 
364
const char* NAME_ELEMENT_DIVERGENCE = "divergence";
 
365
const char* NAME_ELEMENT_DIVIDE = "divide";
 
366
const char* NAME_ELEMENT_DOMAIN = "domain";
 
367
const char* NAME_ELEMENT_DOMAINOFAPPLICATION = "domainofapplication";
 
368
const char* NAME_ELEMENT_DRAW = "draw";
 
369
const char* NAME_ELEMENT_DYNAMIC = "dynamic";
 
370
const char* NAME_ELEMENT_DYNAMIC_FRICTION = "dynamic_friction";
 
371
const char* NAME_ELEMENT_EDGES = "edges";
 
372
const char* NAME_ELEMENT_EFFECT = "effect";
 
373
const char* NAME_ELEMENT_EFFECTOR_INFO = "effector_info";
 
374
const char* NAME_ELEMENT_ELLIPSE = "ellipse";
 
375
const char* NAME_ELEMENT_EMISSION = "emission";
 
376
const char* NAME_ELEMENT_EMPTYSET = "emptyset";
 
377
const char* NAME_ELEMENT_ENABLED = "enabled";
 
378
const char* NAME_ELEMENT_ENUM = "enum";
 
379
const char* NAME_ELEMENT_ENUM____GLES_ENUMERATION_TYPE = "enum____gles_enumeration_type";
 
380
const char* NAME_ELEMENT_ENUM____GL_ENUMERATION_TYPE = "enum____gl_enumeration_type";
 
381
const char* NAME_ELEMENT_ENUM____STRING = "enum____string";
 
382
const char* NAME_ELEMENT_EQ = "eq";
 
383
const char* NAME_ELEMENT_EQUATION = "equation";
 
384
const char* NAME_ELEMENT_EQUIVALENT = "equivalent";
 
385
const char* NAME_ELEMENT_EULERGAMMA = "eulergamma";
 
386
const char* NAME_ELEMENT_EVALUATE = "evaluate";
 
387
const char* NAME_ELEMENT_EVALUATE_SCENE = "evaluate_scene";
 
388
const char* NAME_ELEMENT_EXACT = "exact";
 
389
const char* NAME_ELEMENT_EXISTS = "exists";
 
390
const char* NAME_ELEMENT_EXP = "exp";
 
391
const char* NAME_ELEMENT_EXPONENTIALE = "exponentiale";
 
392
const char* NAME_ELEMENT_EXTRA = "extra";
 
393
const char* NAME_ELEMENT_FACE = "face";
 
394
const char* NAME_ELEMENT_FACES = "faces";
 
395
const char* NAME_ELEMENT_FACTORIAL = "factorial";
 
396
const char* NAME_ELEMENT_FACTOROF = "factorof";
 
397
const char* NAME_ELEMENT_FAIL = "fail";
 
398
const char* NAME_ELEMENT_FALLOFF_ANGLE = "falloff_angle";
 
399
const char* NAME_ELEMENT_FALLOFF_EXPONENT = "falloff_exponent";
 
400
const char* NAME_ELEMENT_FALSE = "false";
 
401
const char* NAME_ELEMENT_FIXED = "fixed";
 
402
const char* NAME_ELEMENT_FIXED2 = "fixed2";
 
403
const char* NAME_ELEMENT_FIXED2X1 = "fixed2x1";
 
404
const char* NAME_ELEMENT_FIXED2X2 = "fixed2x2";
 
405
const char* NAME_ELEMENT_FIXED2X3 = "fixed2x3";
 
406
const char* NAME_ELEMENT_FIXED2X4 = "fixed2x4";
 
407
const char* NAME_ELEMENT_FIXED3 = "fixed3";
 
408
const char* NAME_ELEMENT_FIXED3X1 = "fixed3x1";
 
409
const char* NAME_ELEMENT_FIXED3X2 = "fixed3x2";
 
410
const char* NAME_ELEMENT_FIXED3X3 = "fixed3x3";
 
411
const char* NAME_ELEMENT_FIXED3X4 = "fixed3x4";
 
412
const char* NAME_ELEMENT_FIXED4 = "fixed4";
 
413
const char* NAME_ELEMENT_FIXED4X1 = "fixed4x1";
 
414
const char* NAME_ELEMENT_FIXED4X2 = "fixed4x2";
 
415
const char* NAME_ELEMENT_FIXED4X3 = "fixed4x3";
 
416
const char* NAME_ELEMENT_FIXED4X4 = "fixed4x4";
 
417
const char* NAME_ELEMENT_FLOAT = "float";
 
418
const char* NAME_ELEMENT_FLOAT1X1 = "float1x1";
 
419
const char* NAME_ELEMENT_FLOAT1X2 = "float1x2";
 
420
const char* NAME_ELEMENT_FLOAT1X3 = "float1x3";
 
421
const char* NAME_ELEMENT_FLOAT1X4 = "float1x4";
 
422
const char* NAME_ELEMENT_FLOAT2 = "float2";
 
423
const char* NAME_ELEMENT_FLOAT2X1 = "float2x1";
 
424
const char* NAME_ELEMENT_FLOAT2X2 = "float2x2";
 
425
const char* NAME_ELEMENT_FLOAT2X3 = "float2x3";
 
426
const char* NAME_ELEMENT_FLOAT2X4 = "float2x4";
 
427
const char* NAME_ELEMENT_FLOAT3 = "float3";
 
428
const char* NAME_ELEMENT_FLOAT3X1 = "float3x1";
 
429
const char* NAME_ELEMENT_FLOAT3X2 = "float3x2";
 
430
const char* NAME_ELEMENT_FLOAT3X3 = "float3x3";
 
431
const char* NAME_ELEMENT_FLOAT3X4 = "float3x4";
 
432
const char* NAME_ELEMENT_FLOAT4 = "float4";
 
433
const char* NAME_ELEMENT_FLOAT4X1 = "float4x1";
 
434
const char* NAME_ELEMENT_FLOAT4X2 = "float4x2";
 
435
const char* NAME_ELEMENT_FLOAT4X3 = "float4x3";
 
436
const char* NAME_ELEMENT_FLOAT4X4 = "float4x4";
 
437
const char* NAME_ELEMENT_FLOAT_ARRAY = "float_array";
 
438
const char* NAME_ELEMENT_FLOAT____FLOAT_TYPE = "float____float_type";
 
439
const char* NAME_ELEMENT_FLOOR = "floor";
 
440
const char* NAME_ELEMENT_FOCAL = "focal";
 
441
const char* NAME_ELEMENT_FOG_COLOR = "fog_color";
 
442
const char* NAME_ELEMENT_FOG_COORD_SRC = "fog_coord_src";
 
443
const char* NAME_ELEMENT_FOG_DENSITY = "fog_density";
 
444
const char* NAME_ELEMENT_FOG_ENABLE = "fog_enable";
 
445
const char* NAME_ELEMENT_FOG_END = "fog_end";
 
446
const char* NAME_ELEMENT_FOG_MODE = "fog_mode";
 
447
const char* NAME_ELEMENT_FOG_START = "fog_start";
 
448
const char* NAME_ELEMENT_FORALL = "forall";
 
449
const char* NAME_ELEMENT_FORCE_FIELD = "force_field";
 
450
const char* NAME_ELEMENT_FORMAT = NAME_ATTRIBUTE_FORMAT;
 
451
const char* NAME_ELEMENT_FORMULA = "formula";
 
452
const char* NAME_ELEMENT_FRAME_OBJECT = "frame_object";
 
453
const char* NAME_ELEMENT_FRAME_ORIGIN = "frame_origin";
 
454
const char* NAME_ELEMENT_FRAME_TCP = "frame_tcp";
 
455
const char* NAME_ELEMENT_FRAME_TIP = "frame_tip";
 
456
const char* NAME_ELEMENT_FRONT = "front";
 
457
const char* NAME_ELEMENT_FRONT_FACE = "front_face";
 
458
const char* NAME_ELEMENT_FUNC = "func";
 
459
const char* NAME_ELEMENT_FX_COLORTARGET_TYPE____PARAM = "fx_colortarget_type____param";
 
460
const char* NAME_ELEMENT_FX_COMMON_COLOR_OR_TEXTURE_TYPE____COLOR = "fx_common_color_or_texture_type____color";
 
461
const char* NAME_ELEMENT_FX_COMMON_COLOR_OR_TEXTURE_TYPE____PARAM = "fx_common_color_or_texture_type____param";
 
462
const char* NAME_ELEMENT_FX_COMMON_FLOAT_OR_PARAM_TYPE____FLOAT = "fx_common_float_or_param_type____float";
 
463
const char* NAME_ELEMENT_FX_COMMON_FLOAT_OR_PARAM_TYPE____PARAM = "fx_common_float_or_param_type____param";
 
464
const char* NAME_ELEMENT_GCD = "gcd";
 
465
const char* NAME_ELEMENT_GEOGRAPHIC_LOCATION = "geographic_location";
 
466
const char* NAME_ELEMENT_GEOMETRY = "geometry";
 
467
const char* NAME_ELEMENT_GEQ = "geq";
 
468
const char* NAME_ELEMENT_GLES2_PASS_TYPE____EVALUATE = "gles2_pass_type____evaluate";
 
469
const char* NAME_ELEMENT_GLES2_PASS_TYPE____STATES = "gles2_pass_type____states";
 
470
const char* NAME_ELEMENT_GLES2_PROGRAM_TYPE____BIND_ATTRIBUTE = "gles2_program_type____bind_attribute";
 
471
const char* NAME_ELEMENT_GLES2_PROGRAM_TYPE____BIND_UNIFORM = "gles2_program_type____bind_uniform";
 
472
const char* NAME_ELEMENT_GLES2_SHADER_TYPE____SOURCES = "gles2_shader_type____sources";
 
473
const char* NAME_ELEMENT_GLSL_PROGRAM_TYPE____BIND_ATTRIBUTE = "glsl_program_type____bind_attribute";
 
474
const char* NAME_ELEMENT_GLSL_PROGRAM_TYPE____BIND_UNIFORM = "glsl_program_type____bind_uniform";
 
475
const char* NAME_ELEMENT_GRAD = "grad";
 
476
const char* NAME_ELEMENT_GRAVITY = "gravity";
 
477
const char* NAME_ELEMENT_GT = "gt";
 
478
const char* NAME_ELEMENT_H = "h";
 
479
const char* NAME_ELEMENT_HALF = "half";
 
480
const char* NAME_ELEMENT_HALF2 = "half2";
 
481
const char* NAME_ELEMENT_HALF2X1 = "half2x1";
 
482
const char* NAME_ELEMENT_HALF2X2 = "half2x2";
 
483
const char* NAME_ELEMENT_HALF2X3 = "half2x3";
 
484
const char* NAME_ELEMENT_HALF2X4 = "half2x4";
 
485
const char* NAME_ELEMENT_HALF3 = "half3";
 
486
const char* NAME_ELEMENT_HALF3X1 = "half3x1";
 
487
const char* NAME_ELEMENT_HALF3X2 = "half3x2";
 
488
const char* NAME_ELEMENT_HALF3X3 = "half3x3";
 
489
const char* NAME_ELEMENT_HALF3X4 = "half3x4";
 
490
const char* NAME_ELEMENT_HALF4 = "half4";
 
491
const char* NAME_ELEMENT_HALF4X1 = "half4x1";
 
492
const char* NAME_ELEMENT_HALF4X2 = "half4x2";
 
493
const char* NAME_ELEMENT_HALF4X3 = "half4x3";
 
494
const char* NAME_ELEMENT_HALF4X4 = "half4x4";
 
495
const char* NAME_ELEMENT_HALF_EXTENTS = "half_extents";
 
496
const char* NAME_ELEMENT_HEIGHT = NAME_ATTRIBUTE_HEIGHT;
 
497
const char* NAME_ELEMENT_HEX = "hex";
 
498
const char* NAME_ELEMENT_HINT = "hint";
 
499
const char* NAME_ELEMENT_HOLLOW = "hollow";
 
500
const char* NAME_ELEMENT_HYPERBOLA = "hyperbola";
 
501
const char* NAME_ELEMENT_IDENT = "ident";
 
502
const char* NAME_ELEMENT_IDREF_ARRAY = "IDREF_array";
 
503
const char* NAME_ELEMENT_IMAGE = "image";
 
504
const char* NAME_ELEMENT_IMAGER = "imager";
 
505
const char* NAME_ELEMENT_IMAGE_TYPE____INIT_FROM = "image_type____init_from";
 
506
const char* NAME_ELEMENT_IMAGE____FUNCTIONS_TYPE = "image____Functions_type";
 
507
const char* NAME_ELEMENT_IMAGE____IMAGE_TYPE = "image____image_type";
 
508
const char* NAME_ELEMENT_IMAGINARY = "imaginary";
 
509
const char* NAME_ELEMENT_IMAGINARYI = "imaginaryi";
 
510
const char* NAME_ELEMENT_IMPLIES = "implies";
 
511
const char* NAME_ELEMENT_IMPORT = "import";
 
512
const char* NAME_ELEMENT_IN = "in";
 
513
const char* NAME_ELEMENT_INCLUDE = "include";
 
514
const char* NAME_ELEMENT_INDEX = NAME_ATTRIBUTE_INDEX;
 
515
const char* NAME_ELEMENT_INDEX_OF_REFRACTION = "index_of_refraction";
 
516
const char* NAME_ELEMENT_INERTIA = "inertia";
 
517
const char* NAME_ELEMENT_INFINITY = "infinity";
 
518
const char* NAME_ELEMENT_INIT_FROM = "init_from";
 
519
const char* NAME_ELEMENT_INLINE = "inline";
 
520
const char* NAME_ELEMENT_INPUT = "input";
 
521
const char* NAME_ELEMENT_INPUT____INPUT_LOCAL_OFFSET_TYPE = "input____input_local_offset_type";
 
522
const char* NAME_ELEMENT_INPUT____INPUT_LOCAL_TYPE = "input____input_local_type";
 
523
const char* NAME_ELEMENT_INSTANCE_ANIMATION = "instance_animation";
 
524
const char* NAME_ELEMENT_INSTANCE_ARTICULATED_SYSTEM = "instance_articulated_system";
 
525
const char* NAME_ELEMENT_INSTANCE_CAMERA = "instance_camera";
 
526
const char* NAME_ELEMENT_INSTANCE_CONTROLLER = "instance_controller";
 
527
const char* NAME_ELEMENT_INSTANCE_EFFECT = "instance_effect";
 
528
const char* NAME_ELEMENT_INSTANCE_EFFECT_TYPE____SETPARAM = "instance_effect_type____setparam";
 
529
const char* NAME_ELEMENT_INSTANCE_FORCE_FIELD = "instance_force_field";
 
530
const char* NAME_ELEMENT_INSTANCE_FORMULA = "instance_formula";
 
531
const char* NAME_ELEMENT_INSTANCE_GEOMETRY = "instance_geometry";
 
532
const char* NAME_ELEMENT_INSTANCE_IMAGE = "instance_image";
 
533
const char* NAME_ELEMENT_INSTANCE_JOINT = "instance_joint";
 
534
const char* NAME_ELEMENT_INSTANCE_KINEMATICS_MODEL = "instance_kinematics_model";
 
535
const char* NAME_ELEMENT_INSTANCE_KINEMATICS_SCENE = "instance_kinematics_scene";
 
536
const char* NAME_ELEMENT_INSTANCE_LIGHT = "instance_light";
 
537
const char* NAME_ELEMENT_INSTANCE_MATERIAL = "instance_material";
 
538
const char* NAME_ELEMENT_INSTANCE_MATERIAL_TYPE____BIND = "instance_material_type____bind";
 
539
const char* NAME_ELEMENT_INSTANCE_MATERIAL____INSTANCE_MATERIAL_TYPE = "instance_material____instance_material_type";
 
540
const char* NAME_ELEMENT_INSTANCE_NODE = "instance_node";
 
541
const char* NAME_ELEMENT_INSTANCE_PHYSICS_MATERIAL = "instance_physics_material";
 
542
const char* NAME_ELEMENT_INSTANCE_PHYSICS_MODEL = "instance_physics_model";
 
543
const char* NAME_ELEMENT_INSTANCE_PHYSICS_SCENE = "instance_physics_scene";
 
544
const char* NAME_ELEMENT_INSTANCE_RIGID_BODY = "instance_rigid_body";
 
545
const char* NAME_ELEMENT_INSTANCE_RIGID_BODY_TYPE____TECHNIQUE_COMMON = "instance_rigid_body_type____technique_common";
 
546
const char* NAME_ELEMENT_INSTANCE_RIGID_BODY__TECHNIQUE_COMMON__DYNAMIC = "instance_rigid_body__technique_common__dynamic";
 
547
const char* NAME_ELEMENT_INSTANCE_RIGID_BODY__TECHNIQUE_COMMON__MASS_FRAME = "instance_rigid_body__technique_common__mass_frame";
 
548
const char* NAME_ELEMENT_INSTANCE_RIGID_BODY__TECHNIQUE_COMMON__SHAPE = "instance_rigid_body__technique_common__shape";
 
549
const char* NAME_ELEMENT_INSTANCE_RIGID_BODY__TECHNIQUE_COMMON__SHAPE__HOLLOW = "instance_rigid_body__technique_common__shape__hollow";
 
550
const char* NAME_ELEMENT_INSTANCE_RIGID_CONSTRAINT = "instance_rigid_constraint";
 
551
const char* NAME_ELEMENT_INSTANCE_VISUAL_SCENE = "instance_visual_scene";
 
552
const char* NAME_ELEMENT_INT = "int";
 
553
const char* NAME_ELEMENT_INT2 = "int2";
 
554
const char* NAME_ELEMENT_INT2X1 = "int2x1";
 
555
const char* NAME_ELEMENT_INT2X2 = "int2x2";
 
556
const char* NAME_ELEMENT_INT2X3 = "int2x3";
 
557
const char* NAME_ELEMENT_INT2X4 = "int2x4";
 
558
const char* NAME_ELEMENT_INT3 = "int3";
 
559
const char* NAME_ELEMENT_INT3X1 = "int3x1";
 
560
const char* NAME_ELEMENT_INT3X2 = "int3x2";
 
561
const char* NAME_ELEMENT_INT3X3 = "int3x3";
 
562
const char* NAME_ELEMENT_INT3X4 = "int3x4";
 
563
const char* NAME_ELEMENT_INT4 = "int4";
 
564
const char* NAME_ELEMENT_INT4X1 = "int4x1";
 
565
const char* NAME_ELEMENT_INT4X2 = "int4x2";
 
566
const char* NAME_ELEMENT_INT4X3 = "int4x3";
 
567
const char* NAME_ELEMENT_INT4X4 = "int4x4";
 
568
const char* NAME_ELEMENT_INTEGERS = "integers";
 
569
const char* NAME_ELEMENT_INTERPENETRATE = "interpenetrate";
 
570
const char* NAME_ELEMENT_INTERSECT = "intersect";
 
571
const char* NAME_ELEMENT_INTERVAL = "interval";
 
572
const char* NAME_ELEMENT_INT_ARRAY = "int_array";
 
573
const char* NAME_ELEMENT_INT____INT_TYPE = "int____int_type";
 
574
const char* NAME_ELEMENT_INT____INT_TYPE____MATHML = "int____int_type____mathml";
 
575
const char* NAME_ELEMENT_INVERSE = "inverse";
 
576
const char* NAME_ELEMENT_INVERT = "invert";
 
577
const char* NAME_ELEMENT_IVEC2 = "ivec2";
 
578
const char* NAME_ELEMENT_IVEC3 = "ivec3";
 
579
const char* NAME_ELEMENT_IVEC4 = "ivec4";
 
580
const char* NAME_ELEMENT_JERK = "jerk";
 
581
const char* NAME_ELEMENT_JERK____COMMON_FLOAT2_OR_PARAM_TYPE = "jerk____common_float2_or_param_type";
 
582
const char* NAME_ELEMENT_JERK____COMMON_FLOAT_OR_PARAM_TYPE = "jerk____common_float_or_param_type";
 
583
const char* NAME_ELEMENT_JOINT = "joint";
 
584
const char* NAME_ELEMENT_JOINTS = "joints";
 
585
const char* NAME_ELEMENT_KEYWORDS = "keywords";
 
586
const char* NAME_ELEMENT_KINEMATICS = "kinematics";
 
587
const char* NAME_ELEMENT_KINEMATICS_MODEL = "kinematics_model";
 
588
const char* NAME_ELEMENT_KINEMATICS_SCENE = "kinematics_scene";
 
589
const char* NAME_ELEMENT_LAMBDA = "lambda";
 
590
const char* NAME_ELEMENT_LAMBERT = "lambert";
 
591
const char* NAME_ELEMENT_LAPLACIAN = "laplacian";
 
592
const char* NAME_ELEMENT_LATITUDE = "latitude";
 
593
const char* NAME_ELEMENT_LAYER = NAME_ATTRIBUTE_LAYER;
 
594
const char* NAME_ELEMENT_LCM = "lcm";
 
595
const char* NAME_ELEMENT_LEQ = "leq";
 
596
const char* NAME_ELEMENT_LIBRARY_ANIMATIONS = "library_animations";
 
597
const char* NAME_ELEMENT_LIBRARY_ANIMATION_CLIPS = "library_animation_clips";
 
598
const char* NAME_ELEMENT_LIBRARY_ARTICULATED_SYSTEMS = "library_articulated_systems";
 
599
const char* NAME_ELEMENT_LIBRARY_CAMERAS = "library_cameras";
 
600
const char* NAME_ELEMENT_LIBRARY_CONTROLLERS = "library_controllers";
 
601
const char* NAME_ELEMENT_LIBRARY_EFFECTS = "library_effects";
 
602
const char* NAME_ELEMENT_LIBRARY_FORCE_FIELDS = "library_force_fields";
 
603
const char* NAME_ELEMENT_LIBRARY_FORMULAS = "library_formulas";
 
604
const char* NAME_ELEMENT_LIBRARY_GEOMETRIES = "library_geometries";
 
605
const char* NAME_ELEMENT_LIBRARY_IMAGES = "library_images";
 
606
const char* NAME_ELEMENT_LIBRARY_IMAGES__IMAGE__INIT_FROM__HEX = "library_images__image__init_from__hex";
 
607
const char* NAME_ELEMENT_LIBRARY_JOINTS = "library_joints";
 
608
const char* NAME_ELEMENT_LIBRARY_KINEMATICS_MODELS = "library_kinematics_models";
 
609
const char* NAME_ELEMENT_LIBRARY_KINEMATICS_SCENES = "library_kinematics_scenes";
 
610
const char* NAME_ELEMENT_LIBRARY_LIGHTS = "library_lights";
 
611
const char* NAME_ELEMENT_LIBRARY_MATERIALS = "library_materials";
 
612
const char* NAME_ELEMENT_LIBRARY_NODES = "library_nodes";
 
613
const char* NAME_ELEMENT_LIBRARY_PHYSICS_MATERIALS = "library_physics_materials";
 
614
const char* NAME_ELEMENT_LIBRARY_PHYSICS_MODELS = "library_physics_models";
 
615
const char* NAME_ELEMENT_LIBRARY_PHYSICS_SCENES = "library_physics_scenes";
 
616
const char* NAME_ELEMENT_LIBRARY_VISUAL_SCENES = "library_visual_scenes";
 
617
const char* NAME_ELEMENT_LIGHT = "light";
 
618
const char* NAME_ELEMENT_LIGHTING_ENABLE = "lighting_enable";
 
619
const char* NAME_ELEMENT_LIGHT_AMBIENT = "light_ambient";
 
620
const char* NAME_ELEMENT_LIGHT_CONSTANT_ATTENUATION = "light_constant_attenuation";
 
621
const char* NAME_ELEMENT_LIGHT_DIFFUSE = "light_diffuse";
 
622
const char* NAME_ELEMENT_LIGHT_ENABLE = "light_enable";
 
623
const char* NAME_ELEMENT_LIGHT_LINEAR_ATTENUATION = "light_linear_attenuation";
 
624
const char* NAME_ELEMENT_LIGHT_MODEL_AMBIENT = "light_model_ambient";
 
625
const char* NAME_ELEMENT_LIGHT_MODEL_COLOR_CONTROL = "light_model_color_control";
 
626
const char* NAME_ELEMENT_LIGHT_MODEL_LOCAL_VIEWER_ENABLE = "light_model_local_viewer_enable";
 
627
const char* NAME_ELEMENT_LIGHT_MODEL_TWO_SIDE_ENABLE = "light_model_two_side_enable";
 
628
const char* NAME_ELEMENT_LIGHT_POSITION = "light_position";
 
629
const char* NAME_ELEMENT_LIGHT_QUADRATIC_ATTENUATION = "light_quadratic_attenuation";
 
630
const char* NAME_ELEMENT_LIGHT_SPECULAR = "light_specular";
 
631
const char* NAME_ELEMENT_LIGHT_SPOT_CUTOFF = "light_spot_cutoff";
 
632
const char* NAME_ELEMENT_LIGHT_SPOT_DIRECTION = "light_spot_direction";
 
633
const char* NAME_ELEMENT_LIGHT_SPOT_EXPONENT = "light_spot_exponent";
 
634
const char* NAME_ELEMENT_LIGHT_TYPE____TECHNIQUE_COMMON = "light_type____technique_common";
 
635
const char* NAME_ELEMENT_LIGHT__TECHNIQUE_COMMON__AMBIENT = "light__technique_common__ambient";
 
636
const char* NAME_ELEMENT_LIMIT = "limit";
 
637
const char* NAME_ELEMENT_LIMITS = "limits";
 
638
const char* NAME_ELEMENT_LIMITS____JOINT_LIMITS_TYPE = "limits____joint_limits_type";
 
639
const char* NAME_ELEMENT_LIMITS____KINEMATICS_LIMITS_TYPE = "limits____kinematics_limits_type";
 
640
const char* NAME_ELEMENT_LINE = "line";
 
641
const char* NAME_ELEMENT_LINEAR = "linear";
 
642
const char* NAME_ELEMENT_LINEAR_ATTENUATION = "linear_attenuation";
 
643
const char* NAME_ELEMENT_LINES = "lines";
 
644
const char* NAME_ELEMENT_LINESTRIPS = "linestrips";
 
645
const char* NAME_ELEMENT_LINE_SMOOTH_ENABLE = "line_smooth_enable";
 
646
const char* NAME_ELEMENT_LINE_STIPPLE = "line_stipple";
 
647
const char* NAME_ELEMENT_LINE_STIPPLE_ENABLE = "line_stipple_enable";
 
648
const char* NAME_ELEMENT_LINE_WIDTH = "line_width";
 
649
const char* NAME_ELEMENT_LINK = "link";
 
650
const char* NAME_ELEMENT_LINKER = "linker";
 
651
const char* NAME_ELEMENT_LIST = "list";
 
652
const char* NAME_ELEMENT_LN = "ln";
 
653
const char* NAME_ELEMENT_LOCKED = "locked";
 
654
const char* NAME_ELEMENT_LOG = "log";
 
655
const char* NAME_ELEMENT_LOGBASE = "logbase";
 
656
const char* NAME_ELEMENT_LOGIC_OP = "logic_op";
 
657
const char* NAME_ELEMENT_LOGIC_OP_ENABLE = "logic_op_enable";
 
658
const char* NAME_ELEMENT_LONGITUDE = "longitude";
 
659
const char* NAME_ELEMENT_LOOKAT = "lookat";
 
660
const char* NAME_ELEMENT_LOWLIMIT = "lowlimit";
 
661
const char* NAME_ELEMENT_LT = "lt";
 
662
const char* NAME_ELEMENT_MAGFILTER = "magfilter";
 
663
const char* NAME_ELEMENT_MASK = "mask";
 
664
const char* NAME_ELEMENT_MASS = "mass";
 
665
const char* NAME_ELEMENT_MASS_FRAME = "mass_frame";
 
666
const char* NAME_ELEMENT_MAT2 = "mat2";
 
667
const char* NAME_ELEMENT_MAT3 = "mat3";
 
668
const char* NAME_ELEMENT_MAT4 = "mat4";
 
669
const char* NAME_ELEMENT_MATERIAL = NAME_ATTRIBUTE_MATERIAL;
 
670
const char* NAME_ELEMENT_MATERIAL_AMBIENT = "material_ambient";
 
671
const char* NAME_ELEMENT_MATERIAL_DIFFUSE = "material_diffuse";
 
672
const char* NAME_ELEMENT_MATERIAL_EMISSION = "material_emission";
 
673
const char* NAME_ELEMENT_MATERIAL_SHININESS = "material_shininess";
 
674
const char* NAME_ELEMENT_MATERIAL_SPECULAR = "material_specular";
 
675
const char* NAME_ELEMENT_MATH = "math";
 
676
const char* NAME_ELEMENT_MATRIX = "matrix";
 
677
const char* NAME_ELEMENT_MATRIXROW = "matrixrow";
 
678
const char* NAME_ELEMENT_MATRIX____MATRIX_TYPE = "matrix____matrix_type";
 
679
const char* NAME_ELEMENT_MATRIX____MATRIX_TYPE____MATHML = "matrix____matrix_type____mathml";
 
680
const char* NAME_ELEMENT_MAX = "max";
 
681
const char* NAME_ELEMENT_MAX_ANISOTROPY = "max_anisotropy";
 
682
const char* NAME_ELEMENT_MAX____ARITH_TYPE = "max____Arith_type";
 
683
const char* NAME_ELEMENT_MAX____COMMON_FLOAT_OR_PARAM_TYPE = "max____common_float_or_param_type";
 
684
const char* NAME_ELEMENT_MAX____MINMAX_TYPE = "max____minmax_type";
 
685
const char* NAME_ELEMENT_MAX____TARGETABLE_FLOAT3_TYPE = "max____targetable_float3_type";
 
686
const char* NAME_ELEMENT_MEAN = "mean";
 
687
const char* NAME_ELEMENT_MEDIAN = "median";
 
688
const char* NAME_ELEMENT_MESH = "mesh";
 
689
const char* NAME_ELEMENT_MIN = "min";
 
690
const char* NAME_ELEMENT_MINFILTER = "minfilter";
 
691
const char* NAME_ELEMENT_MINUS = "minus";
 
692
const char* NAME_ELEMENT_MIN____ARITH_TYPE = "min____Arith_type";
 
693
const char* NAME_ELEMENT_MIN____COMMON_FLOAT_OR_PARAM_TYPE = "min____common_float_or_param_type";
 
694
const char* NAME_ELEMENT_MIN____MINMAX_TYPE = "min____minmax_type";
 
695
const char* NAME_ELEMENT_MIN____TARGETABLE_FLOAT3_TYPE = "min____targetable_float3_type";
 
696
const char* NAME_ELEMENT_MIPFILTER = "mipfilter";
 
697
const char* NAME_ELEMENT_MIPS = "mips";
 
698
const char* NAME_ELEMENT_MIP_BIAS = "mip_bias";
 
699
const char* NAME_ELEMENT_MIP_MAX_LEVEL = "mip_max_level";
 
700
const char* NAME_ELEMENT_MIP_MIN_LEVEL = "mip_min_level";
 
701
const char* NAME_ELEMENT_MODE = NAME_ATTRIBUTE_MODE;
 
702
const char* NAME_ELEMENT_MODEL_VIEW_MATRIX = "model_view_matrix";
 
703
const char* NAME_ELEMENT_MODE____MODE_TYPE = "mode____mode_type";
 
704
const char* NAME_ELEMENT_MODIFIED = "modified";
 
705
const char* NAME_ELEMENT_MODIFIER = "modifier";
 
706
const char* NAME_ELEMENT_MOMENT = "moment";
 
707
const char* NAME_ELEMENT_MOMENTABOUT = "momentabout";
 
708
const char* NAME_ELEMENT_MORPH = "morph";
 
709
const char* NAME_ELEMENT_MOTION = "motion";
 
710
const char* NAME_ELEMENT_MULTISAMPLE_ENABLE = "multisample_enable";
 
711
const char* NAME_ELEMENT_NAME_ARRAY = "Name_array";
 
712
const char* NAME_ELEMENT_NATURALNUMBERS = "naturalnumbers";
 
713
const char* NAME_ELEMENT_NEQ = "neq";
 
714
const char* NAME_ELEMENT_NEWPARAM = "newparam";
 
715
const char* NAME_ELEMENT_NEWPARAM____CG_NEWPARAM_TYPE = "newparam____cg_newparam_type";
 
716
const char* NAME_ELEMENT_NEWPARAM____FORMULA_NEWPARAM_TYPE = "newparam____formula_newparam_type";
 
717
const char* NAME_ELEMENT_NEWPARAM____FX_COMMON_NEWPARAM_TYPE = "newparam____fx_common_newparam_type";
 
718
const char* NAME_ELEMENT_NEWPARAM____FX_NEWPARAM_TYPE = "newparam____fx_newparam_type";
 
719
const char* NAME_ELEMENT_NEWPARAM____GLES_NEWPARAM_TYPE = "newparam____gles_newparam_type";
 
720
const char* NAME_ELEMENT_NEWPARAM____GLSL_NEWPARAM_TYPE = "newparam____glsl_newparam_type";
 
721
const char* NAME_ELEMENT_NEWPARAM____KINEMATICS_NEWPARAM_TYPE = "newparam____kinematics_newparam_type";
 
722
const char* NAME_ELEMENT_NODE = "node";
 
723
const char* NAME_ELEMENT_NORMALIZE_ENABLE = "normalize_enable";
 
724
const char* NAME_ELEMENT_NOT = "not";
 
725
const char* NAME_ELEMENT_NOTANUMBER = "notanumber";
 
726
const char* NAME_ELEMENT_NOTIN = "notin";
 
727
const char* NAME_ELEMENT_NOTPRSUBSET = "notprsubset";
 
728
const char* NAME_ELEMENT_NOTSUBSET = "notsubset";
 
729
const char* NAME_ELEMENT_NURBS = "nurbs";
 
730
const char* NAME_ELEMENT_NURBS_SURFACE = "nurbs_surface";
 
731
const char* NAME_ELEMENT_NURBS_SURFACE_TYPE____CONTROL_VERTICES = "nurbs_surface_type____control_vertices";
 
732
const char* NAME_ELEMENT_NURBS_TYPE____CONTROL_VERTICES = "nurbs_type____control_vertices";
 
733
const char* NAME_ELEMENT_OPTICS = "optics";
 
734
const char* NAME_ELEMENT_OPTICS__TECHNIQUE_COMMON = "optics__technique_common";
 
735
const char* NAME_ELEMENT_OR = "or";
 
736
const char* NAME_ELEMENT_ORIENT = "orient";
 
737
const char* NAME_ELEMENT_ORIGIN = "origin";
 
738
const char* NAME_ELEMENT_ORIGIN____FLOAT3_TYPE = "origin____float3_type";
 
739
const char* NAME_ELEMENT_ORIGIN____ORIGIN_TYPE = "origin____origin_type";
 
740
const char* NAME_ELEMENT_ORTHOGRAPHIC = "orthographic";
 
741
const char* NAME_ELEMENT_OTHERWISE = "otherwise";
 
742
const char* NAME_ELEMENT_OUTERPRODUCT = "outerproduct";
 
743
const char* NAME_ELEMENT_P = "p";
 
744
const char* NAME_ELEMENT_PARABOLA = "parabola";
 
745
const char* NAME_ELEMENT_PARAM = "param";
 
746
const char* NAME_ELEMENT_PARAM____COMMON_PARAM_TYPE = "param____common_param_type";
 
747
const char* NAME_ELEMENT_PARAM____KINEMATICS_PARAM_TYPE = "param____kinematics_param_type";
 
748
const char* NAME_ELEMENT_PARAM____NCNAME = "param____NCName";
 
749
const char* NAME_ELEMENT_PARAM____PARAM_TYPE = "param____param_type";
 
750
const char* NAME_ELEMENT_PARTIALDIFF = "partialdiff";
 
751
const char* NAME_ELEMENT_PASS = "pass";
 
752
const char* NAME_ELEMENT_PASS____CG_PASS_TYPE = "pass____cg_pass_type";
 
753
const char* NAME_ELEMENT_PASS____GLES2_PASS_TYPE = "pass____gles2_pass_type";
 
754
const char* NAME_ELEMENT_PCURVES = "pcurves";
 
755
const char* NAME_ELEMENT_PERSPECTIVE = "perspective";
 
756
const char* NAME_ELEMENT_PH = "ph";
 
757
const char* NAME_ELEMENT_PHONG = "phong";
 
758
const char* NAME_ELEMENT_PHYSICS_MATERIAL = "physics_material";
 
759
const char* NAME_ELEMENT_PHYSICS_MATERIAL_TYPE____TECHNIQUE_COMMON = "physics_material_type____technique_common";
 
760
const char* NAME_ELEMENT_PHYSICS_MODEL = "physics_model";
 
761
const char* NAME_ELEMENT_PHYSICS_SCENE = "physics_scene";
 
762
const char* NAME_ELEMENT_PHYSICS_SCENE_TYPE____TECHNIQUE_COMMON = "physics_scene_type____technique_common";
 
763
const char* NAME_ELEMENT_PI = "pi";
 
764
const char* NAME_ELEMENT_PIECE = "piece";
 
765
const char* NAME_ELEMENT_PIECEWISE = "piecewise";
 
766
const char* NAME_ELEMENT_PLANE = "plane";
 
767
const char* NAME_ELEMENT_PLUS = "plus";
 
768
const char* NAME_ELEMENT_POINT = "point";
 
769
const char* NAME_ELEMENT_POINT_DISTANCE_ATTENUATION = "point_distance_attenuation";
 
770
const char* NAME_ELEMENT_POINT_FADE_THRESHOLD_SIZE = "point_fade_threshold_size";
 
771
const char* NAME_ELEMENT_POINT_SIZE = "point_size";
 
772
const char* NAME_ELEMENT_POINT_SIZE_ENABLE = "point_size_enable";
 
773
const char* NAME_ELEMENT_POINT_SIZE_MAX = "point_size_max";
 
774
const char* NAME_ELEMENT_POINT_SIZE_MIN = "point_size_min";
 
775
const char* NAME_ELEMENT_POINT_SMOOTH_ENABLE = "point_smooth_enable";
 
776
const char* NAME_ELEMENT_POLYGONS = "polygons";
 
777
const char* NAME_ELEMENT_POLYGON_MODE = "polygon_mode";
 
778
const char* NAME_ELEMENT_POLYGON_MODE__FACE = "polygon_mode__face";
 
779
const char* NAME_ELEMENT_POLYGON_MODE__MODE = "polygon_mode__mode";
 
780
const char* NAME_ELEMENT_POLYGON_OFFSET = "polygon_offset";
 
781
const char* NAME_ELEMENT_POLYGON_OFFSET_FILL_ENABLE = "polygon_offset_fill_enable";
 
782
const char* NAME_ELEMENT_POLYGON_OFFSET_LINE_ENABLE = "polygon_offset_line_enable";
 
783
const char* NAME_ELEMENT_POLYGON_OFFSET_POINT_ENABLE = "polygon_offset_point_enable";
 
784
const char* NAME_ELEMENT_POLYGON_SMOOTH_ENABLE = "polygon_smooth_enable";
 
785
const char* NAME_ELEMENT_POLYGON_STIPPLE_ENABLE = "polygon_stipple_enable";
 
786
const char* NAME_ELEMENT_POLYLIST = "polylist";
 
787
const char* NAME_ELEMENT_POWER = "power";
 
788
const char* NAME_ELEMENT_PRIMES = "primes";
 
789
const char* NAME_ELEMENT_PRISMATIC = "prismatic";
 
790
const char* NAME_ELEMENT_PRODUCT = "product";
 
791
const char* NAME_ELEMENT_PROFILE_BRIDGE = "profile_BRIDGE";
 
792
const char* NAME_ELEMENT_PROFILE_CG = "profile_CG";
 
793
const char* NAME_ELEMENT_PROFILE_CG_TYPE____TECHNIQUE = "profile_cg_type____technique";
 
794
const char* NAME_ELEMENT_PROFILE_CG__TECHNIQUE__PASS__PROGRAM__SHADER = "profile_CG__technique__pass__program__shader";
 
795
const char* NAME_ELEMENT_PROFILE_CG__TECHNIQUE__PASS__PROGRAM__SHADER__BIND_UNIFORM = "profile_CG__technique__pass__program__shader__bind_uniform";
 
796
const char* NAME_ELEMENT_PROFILE_CG__TECHNIQUE__PASS__PROGRAM__SHADER__BIND_UNIFORM__PARAM = "profile_CG__technique__pass__program__shader__bind_uniform__param";
 
797
const char* NAME_ELEMENT_PROFILE_CG__TECHNIQUE__PASS__PROGRAM__SHADER__SOURCES = "profile_CG__technique__pass__program__shader__sources";
 
798
const char* NAME_ELEMENT_PROFILE_COMMON = "profile_COMMON";
 
799
const char* NAME_ELEMENT_PROFILE_COMMON_TYPE____TECHNIQUE = "profile_common_type____technique";
 
800
const char* NAME_ELEMENT_PROFILE_COMMON__TECHNIQUE__CONSTANT = "profile_COMMON__technique__constant";
 
801
const char* NAME_ELEMENT_PROFILE_GLES = "profile_GLES";
 
802
const char* NAME_ELEMENT_PROFILE_GLES2 = "profile_GLES2";
 
803
const char* NAME_ELEMENT_PROFILE_GLES2_TYPE____NEWPARAM = "profile_gles2_type____newparam";
 
804
const char* NAME_ELEMENT_PROFILE_GLES2_TYPE____TECHNIQUE = "profile_gles2_type____technique";
 
805
const char* NAME_ELEMENT_PROFILE_GLES2__NEWPARAM__USERTYPE = "profile_GLES2__newparam__usertype";
 
806
const char* NAME_ELEMENT_PROFILE_GLES2__NEWPARAM__USERTYPE__SETPARAM = "profile_GLES2__newparam__usertype__setparam";
 
807
const char* NAME_ELEMENT_PROFILE_GLES2__NEWPARAM__USERTYPE__SETPARAM__ARRAY = "profile_GLES2__newparam__usertype__setparam__array";
 
808
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__PROGRAM__BIND_UNIFORM__PARAM = "profile_GLES2__technique__pass__program__bind_uniform__param";
 
809
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__BLEND_COLOR = "profile_GLES2__technique__pass__states__blend_color";
 
810
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__BLEND_ENABLE = "profile_GLES2__technique__pass__states__blend_enable";
 
811
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__BLEND_EQUATION = "profile_GLES2__technique__pass__states__blend_equation";
 
812
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__BLEND_EQUATION_SEPARATE = "profile_GLES2__technique__pass__states__blend_equation_separate";
 
813
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__BLEND_EQUATION_SEPARATE__ALPHA = "profile_GLES2__technique__pass__states__blend_equation_separate__alpha";
 
814
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__BLEND_EQUATION_SEPARATE__RGB = "profile_GLES2__technique__pass__states__blend_equation_separate__rgb";
 
815
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__BLEND_FUNC = "profile_GLES2__technique__pass__states__blend_func";
 
816
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__BLEND_FUNC_SEPARATE = "profile_GLES2__technique__pass__states__blend_func_separate";
 
817
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__BLEND_FUNC_SEPARATE__DEST_ALPHA = "profile_GLES2__technique__pass__states__blend_func_separate__dest_alpha";
 
818
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__BLEND_FUNC_SEPARATE__DEST_RGB = "profile_GLES2__technique__pass__states__blend_func_separate__dest_rgb";
 
819
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__BLEND_FUNC_SEPARATE__SRC_ALPHA = "profile_GLES2__technique__pass__states__blend_func_separate__src_alpha";
 
820
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__BLEND_FUNC_SEPARATE__SRC_RGB = "profile_GLES2__technique__pass__states__blend_func_separate__src_rgb";
 
821
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__BLEND_FUNC__DEST = "profile_GLES2__technique__pass__states__blend_func__dest";
 
822
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__BLEND_FUNC__SRC = "profile_GLES2__technique__pass__states__blend_func__src";
 
823
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__COLOR_MASK = "profile_GLES2__technique__pass__states__color_mask";
 
824
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__CULL_FACE = "profile_GLES2__technique__pass__states__cull_face";
 
825
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__CULL_FACE_ENABLE = "profile_GLES2__technique__pass__states__cull_face_enable";
 
826
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__DEPTH_FUNC = "profile_GLES2__technique__pass__states__depth_func";
 
827
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__DEPTH_MASK = "profile_GLES2__technique__pass__states__depth_mask";
 
828
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__DEPTH_RANGE = "profile_GLES2__technique__pass__states__depth_range";
 
829
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__DEPTH_TEST_ENABLE = "profile_GLES2__technique__pass__states__depth_test_enable";
 
830
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__DITHER_ENABLE = "profile_GLES2__technique__pass__states__dither_enable";
 
831
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__FRONT_FACE = "profile_GLES2__technique__pass__states__front_face";
 
832
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__LINE_WIDTH = "profile_GLES2__technique__pass__states__line_width";
 
833
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__POINT_SIZE = "profile_GLES2__technique__pass__states__point_size";
 
834
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__POLYGON_OFFSET = "profile_GLES2__technique__pass__states__polygon_offset";
 
835
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__POLYGON_OFFSET_FILL_ENABLE = "profile_GLES2__technique__pass__states__polygon_offset_fill_enable";
 
836
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__SAMPLE_ALPHA_TO_COVERAGE_ENABLE = "profile_GLES2__technique__pass__states__sample_alpha_to_coverage_enable";
 
837
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__SAMPLE_COVERAGE_ENABLE = "profile_GLES2__technique__pass__states__sample_coverage_enable";
 
838
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__SCISSOR = "profile_GLES2__technique__pass__states__scissor";
 
839
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__SCISSOR_TEST_ENABLE = "profile_GLES2__technique__pass__states__scissor_test_enable";
 
840
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__STENCIL_FUNC = "profile_GLES2__technique__pass__states__stencil_func";
 
841
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__STENCIL_FUNC_SEPARATE = "profile_GLES2__technique__pass__states__stencil_func_separate";
 
842
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__STENCIL_FUNC_SEPARATE__BACK = "profile_GLES2__technique__pass__states__stencil_func_separate__back";
 
843
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__STENCIL_FUNC_SEPARATE__FRONT = "profile_GLES2__technique__pass__states__stencil_func_separate__front";
 
844
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__STENCIL_FUNC_SEPARATE__MASK = "profile_GLES2__technique__pass__states__stencil_func_separate__mask";
 
845
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__STENCIL_FUNC_SEPARATE__REF = "profile_GLES2__technique__pass__states__stencil_func_separate__ref";
 
846
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__STENCIL_FUNC__FUNC = "profile_GLES2__technique__pass__states__stencil_func__func";
 
847
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__STENCIL_FUNC__MASK = "profile_GLES2__technique__pass__states__stencil_func__mask";
 
848
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__STENCIL_FUNC__REF = "profile_GLES2__technique__pass__states__stencil_func__ref";
 
849
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__STENCIL_MASK = "profile_GLES2__technique__pass__states__stencil_mask";
 
850
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__STENCIL_MASK_SEPARATE = "profile_GLES2__technique__pass__states__stencil_mask_separate";
 
851
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__STENCIL_MASK_SEPARATE__FACE = "profile_GLES2__technique__pass__states__stencil_mask_separate__face";
 
852
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__STENCIL_MASK_SEPARATE__MASK = "profile_GLES2__technique__pass__states__stencil_mask_separate__mask";
 
853
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__STENCIL_OP = "profile_GLES2__technique__pass__states__stencil_op";
 
854
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__STENCIL_OP_SEPARATE = "profile_GLES2__technique__pass__states__stencil_op_separate";
 
855
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__STENCIL_OP_SEPARATE__FACE = "profile_GLES2__technique__pass__states__stencil_op_separate__face";
 
856
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__STENCIL_OP_SEPARATE__FAIL = "profile_GLES2__technique__pass__states__stencil_op_separate__fail";
 
857
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__STENCIL_OP_SEPARATE__ZFAIL = "profile_GLES2__technique__pass__states__stencil_op_separate__zfail";
 
858
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__STENCIL_OP_SEPARATE__ZPASS = "profile_GLES2__technique__pass__states__stencil_op_separate__zpass";
 
859
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__STENCIL_OP__FAIL = "profile_GLES2__technique__pass__states__stencil_op__fail";
 
860
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__STENCIL_OP__ZFAIL = "profile_GLES2__technique__pass__states__stencil_op__zfail";
 
861
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__STENCIL_OP__ZPASS = "profile_GLES2__technique__pass__states__stencil_op__zpass";
 
862
const char* NAME_ELEMENT_PROFILE_GLES2__TECHNIQUE__PASS__STATES__STENCIL_TEST_ENABLE = "profile_GLES2__technique__pass__states__stencil_test_enable";
 
863
const char* NAME_ELEMENT_PROFILE_GLES_TYPE____TECHNIQUE = "profile_gles_type____technique";
 
864
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS = "profile_GLES__technique__pass";
 
865
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__EVALUATE = "profile_GLES__technique__pass__evaluate";
 
866
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES = "profile_GLES__technique__pass__states";
 
867
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__ALPHA_FUNC = "profile_GLES__technique__pass__states__alpha_func";
 
868
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__ALPHA_FUNC__FUNC = "profile_GLES__technique__pass__states__alpha_func__func";
 
869
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__ALPHA_FUNC__VALUE = "profile_GLES__technique__pass__states__alpha_func__value";
 
870
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__ALPHA_TEST_ENABLE = "profile_GLES__technique__pass__states__alpha_test_enable";
 
871
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__BLEND_ENABLE = "profile_GLES__technique__pass__states__blend_enable";
 
872
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__BLEND_FUNC = "profile_GLES__technique__pass__states__blend_func";
 
873
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__BLEND_FUNC__DEST = "profile_GLES__technique__pass__states__blend_func__dest";
 
874
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__BLEND_FUNC__SRC = "profile_GLES__technique__pass__states__blend_func__src";
 
875
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__CLIP_PLANE = "profile_GLES__technique__pass__states__clip_plane";
 
876
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__CLIP_PLANE_ENABLE = "profile_GLES__technique__pass__states__clip_plane_enable";
 
877
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__COLOR_LOGIC_OP_ENABLE = "profile_GLES__technique__pass__states__color_logic_op_enable";
 
878
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__COLOR_MASK = "profile_GLES__technique__pass__states__color_mask";
 
879
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__COLOR_MATERIAL_ENABLE = "profile_GLES__technique__pass__states__color_material_enable";
 
880
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__CULL_FACE = "profile_GLES__technique__pass__states__cull_face";
 
881
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__CULL_FACE_ENABLE = "profile_GLES__technique__pass__states__cull_face_enable";
 
882
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__DEPTH_FUNC = "profile_GLES__technique__pass__states__depth_func";
 
883
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__DEPTH_MASK = "profile_GLES__technique__pass__states__depth_mask";
 
884
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__DEPTH_RANGE = "profile_GLES__technique__pass__states__depth_range";
 
885
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__DEPTH_TEST_ENABLE = "profile_GLES__technique__pass__states__depth_test_enable";
 
886
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__DITHER_ENABLE = "profile_GLES__technique__pass__states__dither_enable";
 
887
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__FOG_COLOR = "profile_GLES__technique__pass__states__fog_color";
 
888
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__FOG_DENSITY = "profile_GLES__technique__pass__states__fog_density";
 
889
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__FOG_ENABLE = "profile_GLES__technique__pass__states__fog_enable";
 
890
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__FOG_END = "profile_GLES__technique__pass__states__fog_end";
 
891
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__FOG_MODE = "profile_GLES__technique__pass__states__fog_mode";
 
892
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__FOG_START = "profile_GLES__technique__pass__states__fog_start";
 
893
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__FRONT_FACE = "profile_GLES__technique__pass__states__front_face";
 
894
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__LIGHTING_ENABLE = "profile_GLES__technique__pass__states__lighting_enable";
 
895
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__LIGHT_AMBIENT = "profile_GLES__technique__pass__states__light_ambient";
 
896
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__LIGHT_CONSTANT_ATTENUATION = "profile_GLES__technique__pass__states__light_constant_attenuation";
 
897
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__LIGHT_DIFFUSE = "profile_GLES__technique__pass__states__light_diffuse";
 
898
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__LIGHT_ENABLE = "profile_GLES__technique__pass__states__light_enable";
 
899
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__LIGHT_LINEAR_ATTENUATION = "profile_GLES__technique__pass__states__light_linear_attenuation";
 
900
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__LIGHT_MODEL_AMBIENT = "profile_GLES__technique__pass__states__light_model_ambient";
 
901
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__LIGHT_MODEL_TWO_SIDE_ENABLE = "profile_GLES__technique__pass__states__light_model_two_side_enable";
 
902
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__LIGHT_POSITION = "profile_GLES__technique__pass__states__light_position";
 
903
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__LIGHT_QUADRATIC_ATTENUATION = "profile_GLES__technique__pass__states__light_quadratic_attenuation";
 
904
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__LIGHT_SPECULAR = "profile_GLES__technique__pass__states__light_specular";
 
905
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__LIGHT_SPOT_CUTOFF = "profile_GLES__technique__pass__states__light_spot_cutoff";
 
906
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__LIGHT_SPOT_DIRECTION = "profile_GLES__technique__pass__states__light_spot_direction";
 
907
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__LIGHT_SPOT_EXPONENT = "profile_GLES__technique__pass__states__light_spot_exponent";
 
908
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__LINE_SMOOTH_ENABLE = "profile_GLES__technique__pass__states__line_smooth_enable";
 
909
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__LINE_WIDTH = "profile_GLES__technique__pass__states__line_width";
 
910
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__LOGIC_OP = "profile_GLES__technique__pass__states__logic_op";
 
911
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__MATERIAL_AMBIENT = "profile_GLES__technique__pass__states__material_ambient";
 
912
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__MATERIAL_DIFFUSE = "profile_GLES__technique__pass__states__material_diffuse";
 
913
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__MATERIAL_EMISSION = "profile_GLES__technique__pass__states__material_emission";
 
914
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__MATERIAL_SHININESS = "profile_GLES__technique__pass__states__material_shininess";
 
915
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__MATERIAL_SPECULAR = "profile_GLES__technique__pass__states__material_specular";
 
916
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__MODEL_VIEW_MATRIX = "profile_GLES__technique__pass__states__model_view_matrix";
 
917
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__MULTISAMPLE_ENABLE = "profile_GLES__technique__pass__states__multisample_enable";
 
918
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__NORMALIZE_ENABLE = "profile_GLES__technique__pass__states__normalize_enable";
 
919
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__POINT_DISTANCE_ATTENUATION = "profile_GLES__technique__pass__states__point_distance_attenuation";
 
920
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__POINT_FADE_THRESHOLD_SIZE = "profile_GLES__technique__pass__states__point_fade_threshold_size";
 
921
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__POINT_SIZE = "profile_GLES__technique__pass__states__point_size";
 
922
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__POINT_SIZE_MAX = "profile_GLES__technique__pass__states__point_size_max";
 
923
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__POINT_SIZE_MIN = "profile_GLES__technique__pass__states__point_size_min";
 
924
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__POINT_SMOOTH_ENABLE = "profile_GLES__technique__pass__states__point_smooth_enable";
 
925
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__POLYGON_OFFSET = "profile_GLES__technique__pass__states__polygon_offset";
 
926
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__POLYGON_OFFSET_FILL_ENABLE = "profile_GLES__technique__pass__states__polygon_offset_fill_enable";
 
927
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__PROJECTION_MATRIX = "profile_GLES__technique__pass__states__projection_matrix";
 
928
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__RESCALE_NORMAL_ENABLE = "profile_GLES__technique__pass__states__rescale_normal_enable";
 
929
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__SAMPLE_ALPHA_TO_COVERAGE_ENABLE = "profile_GLES__technique__pass__states__sample_alpha_to_coverage_enable";
 
930
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__SAMPLE_ALPHA_TO_ONE_ENABLE = "profile_GLES__technique__pass__states__sample_alpha_to_one_enable";
 
931
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__SAMPLE_COVERAGE_ENABLE = "profile_GLES__technique__pass__states__sample_coverage_enable";
 
932
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__SCISSOR = "profile_GLES__technique__pass__states__scissor";
 
933
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__SCISSOR_TEST_ENABLE = "profile_GLES__technique__pass__states__scissor_test_enable";
 
934
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__SHADE_MODEL = "profile_GLES__technique__pass__states__shade_model";
 
935
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__STENCIL_FUNC = "profile_GLES__technique__pass__states__stencil_func";
 
936
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__STENCIL_FUNC__FUNC = "profile_GLES__technique__pass__states__stencil_func__func";
 
937
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__STENCIL_FUNC__MASK = "profile_GLES__technique__pass__states__stencil_func__mask";
 
938
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__STENCIL_FUNC__REF = "profile_GLES__technique__pass__states__stencil_func__ref";
 
939
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__STENCIL_MASK = "profile_GLES__technique__pass__states__stencil_mask";
 
940
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__STENCIL_OP = "profile_GLES__technique__pass__states__stencil_op";
 
941
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__STENCIL_OP__FAIL = "profile_GLES__technique__pass__states__stencil_op__fail";
 
942
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__STENCIL_OP__ZFAIL = "profile_GLES__technique__pass__states__stencil_op__zfail";
 
943
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__STENCIL_OP__ZPASS = "profile_GLES__technique__pass__states__stencil_op__zpass";
 
944
const char* NAME_ELEMENT_PROFILE_GLES__TECHNIQUE__PASS__STATES__STENCIL_TEST_ENABLE = "profile_GLES__technique__pass__states__stencil_test_enable";
 
945
const char* NAME_ELEMENT_PROFILE_GLSL = "profile_GLSL";
 
946
const char* NAME_ELEMENT_PROFILE_GLSL_TYPE____TECHNIQUE = "profile_glsl_type____technique";
 
947
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS = "profile_GLSL__technique__pass";
 
948
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__EVALUATE = "profile_GLSL__technique__pass__evaluate";
 
949
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__PROGRAM__BIND_UNIFORM__PARAM = "profile_GLSL__technique__pass__program__bind_uniform__param";
 
950
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES = "profile_GLSL__technique__pass__states";
 
951
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__ALPHA_FUNC = "profile_GLSL__technique__pass__states__alpha_func";
 
952
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__ALPHA_FUNC__FUNC = "profile_GLSL__technique__pass__states__alpha_func__func";
 
953
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__ALPHA_FUNC__VALUE = "profile_GLSL__technique__pass__states__alpha_func__value";
 
954
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__ALPHA_TEST_ENABLE = "profile_GLSL__technique__pass__states__alpha_test_enable";
 
955
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__BLEND_COLOR = "profile_GLSL__technique__pass__states__blend_color";
 
956
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__BLEND_ENABLE = "profile_GLSL__technique__pass__states__blend_enable";
 
957
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__BLEND_EQUATION = "profile_GLSL__technique__pass__states__blend_equation";
 
958
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__BLEND_EQUATION_SEPARATE = "profile_GLSL__technique__pass__states__blend_equation_separate";
 
959
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__BLEND_EQUATION_SEPARATE__ALPHA = "profile_GLSL__technique__pass__states__blend_equation_separate__alpha";
 
960
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__BLEND_EQUATION_SEPARATE__RGB = "profile_GLSL__technique__pass__states__blend_equation_separate__rgb";
 
961
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__BLEND_FUNC = "profile_GLSL__technique__pass__states__blend_func";
 
962
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__BLEND_FUNC_SEPARATE = "profile_GLSL__technique__pass__states__blend_func_separate";
 
963
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__BLEND_FUNC_SEPARATE__DEST_ALPHA = "profile_GLSL__technique__pass__states__blend_func_separate__dest_alpha";
 
964
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__BLEND_FUNC_SEPARATE__DEST_RGB = "profile_GLSL__technique__pass__states__blend_func_separate__dest_rgb";
 
965
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__BLEND_FUNC_SEPARATE__SRC_ALPHA = "profile_GLSL__technique__pass__states__blend_func_separate__src_alpha";
 
966
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__BLEND_FUNC_SEPARATE__SRC_RGB = "profile_GLSL__technique__pass__states__blend_func_separate__src_rgb";
 
967
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__BLEND_FUNC__DEST = "profile_GLSL__technique__pass__states__blend_func__dest";
 
968
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__BLEND_FUNC__SRC = "profile_GLSL__technique__pass__states__blend_func__src";
 
969
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__CLIP_PLANE = "profile_GLSL__technique__pass__states__clip_plane";
 
970
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__CLIP_PLANE_ENABLE = "profile_GLSL__technique__pass__states__clip_plane_enable";
 
971
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__COLOR_LOGIC_OP_ENABLE = "profile_GLSL__technique__pass__states__color_logic_op_enable";
 
972
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__COLOR_MASK = "profile_GLSL__technique__pass__states__color_mask";
 
973
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__COLOR_MATERIAL_ENABLE = "profile_GLSL__technique__pass__states__color_material_enable";
 
974
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__CULL_FACE = "profile_GLSL__technique__pass__states__cull_face";
 
975
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__CULL_FACE_ENABLE = "profile_GLSL__technique__pass__states__cull_face_enable";
 
976
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__DEPTH_FUNC = "profile_GLSL__technique__pass__states__depth_func";
 
977
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__DEPTH_MASK = "profile_GLSL__technique__pass__states__depth_mask";
 
978
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__DEPTH_RANGE = "profile_GLSL__technique__pass__states__depth_range";
 
979
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__DEPTH_TEST_ENABLE = "profile_GLSL__technique__pass__states__depth_test_enable";
 
980
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__DITHER_ENABLE = "profile_GLSL__technique__pass__states__dither_enable";
 
981
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__FOG_COLOR = "profile_GLSL__technique__pass__states__fog_color";
 
982
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__FOG_DENSITY = "profile_GLSL__technique__pass__states__fog_density";
 
983
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__FOG_ENABLE = "profile_GLSL__technique__pass__states__fog_enable";
 
984
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__FOG_END = "profile_GLSL__technique__pass__states__fog_end";
 
985
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__FOG_MODE = "profile_GLSL__technique__pass__states__fog_mode";
 
986
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__FOG_START = "profile_GLSL__technique__pass__states__fog_start";
 
987
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__FRONT_FACE = "profile_GLSL__technique__pass__states__front_face";
 
988
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__LIGHTING_ENABLE = "profile_GLSL__technique__pass__states__lighting_enable";
 
989
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__LIGHT_AMBIENT = "profile_GLSL__technique__pass__states__light_ambient";
 
990
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__LIGHT_CONSTANT_ATTENUATION = "profile_GLSL__technique__pass__states__light_constant_attenuation";
 
991
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__LIGHT_DIFFUSE = "profile_GLSL__technique__pass__states__light_diffuse";
 
992
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__LIGHT_ENABLE = "profile_GLSL__technique__pass__states__light_enable";
 
993
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__LIGHT_LINEAR_ATTENUATION = "profile_GLSL__technique__pass__states__light_linear_attenuation";
 
994
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__LIGHT_MODEL_AMBIENT = "profile_GLSL__technique__pass__states__light_model_ambient";
 
995
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__LIGHT_MODEL_TWO_SIDE_ENABLE = "profile_GLSL__technique__pass__states__light_model_two_side_enable";
 
996
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__LIGHT_POSITION = "profile_GLSL__technique__pass__states__light_position";
 
997
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__LIGHT_QUADRATIC_ATTENUATION = "profile_GLSL__technique__pass__states__light_quadratic_attenuation";
 
998
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__LIGHT_SPECULAR = "profile_GLSL__technique__pass__states__light_specular";
 
999
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__LIGHT_SPOT_CUTOFF = "profile_GLSL__technique__pass__states__light_spot_cutoff";
 
1000
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__LIGHT_SPOT_DIRECTION = "profile_GLSL__technique__pass__states__light_spot_direction";
 
1001
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__LIGHT_SPOT_EXPONENT = "profile_GLSL__technique__pass__states__light_spot_exponent";
 
1002
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__LINE_SMOOTH_ENABLE = "profile_GLSL__technique__pass__states__line_smooth_enable";
 
1003
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__LINE_WIDTH = "profile_GLSL__technique__pass__states__line_width";
 
1004
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__LOGIC_OP = "profile_GLSL__technique__pass__states__logic_op";
 
1005
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__MATERIAL_AMBIENT = "profile_GLSL__technique__pass__states__material_ambient";
 
1006
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__MATERIAL_DIFFUSE = "profile_GLSL__technique__pass__states__material_diffuse";
 
1007
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__MATERIAL_EMISSION = "profile_GLSL__technique__pass__states__material_emission";
 
1008
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__MATERIAL_SHININESS = "profile_GLSL__technique__pass__states__material_shininess";
 
1009
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__MATERIAL_SPECULAR = "profile_GLSL__technique__pass__states__material_specular";
 
1010
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__MODEL_VIEW_MATRIX = "profile_GLSL__technique__pass__states__model_view_matrix";
 
1011
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__MULTISAMPLE_ENABLE = "profile_GLSL__technique__pass__states__multisample_enable";
 
1012
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__NORMALIZE_ENABLE = "profile_GLSL__technique__pass__states__normalize_enable";
 
1013
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__POINT_DISTANCE_ATTENUATION = "profile_GLSL__technique__pass__states__point_distance_attenuation";
 
1014
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__POINT_FADE_THRESHOLD_SIZE = "profile_GLSL__technique__pass__states__point_fade_threshold_size";
 
1015
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__POINT_SIZE = "profile_GLSL__technique__pass__states__point_size";
 
1016
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__POINT_SIZE_MAX = "profile_GLSL__technique__pass__states__point_size_max";
 
1017
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__POINT_SIZE_MIN = "profile_GLSL__technique__pass__states__point_size_min";
 
1018
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__POINT_SMOOTH_ENABLE = "profile_GLSL__technique__pass__states__point_smooth_enable";
 
1019
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__POLYGON_OFFSET = "profile_GLSL__technique__pass__states__polygon_offset";
 
1020
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__POLYGON_OFFSET_FILL_ENABLE = "profile_GLSL__technique__pass__states__polygon_offset_fill_enable";
 
1021
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__PROJECTION_MATRIX = "profile_GLSL__technique__pass__states__projection_matrix";
 
1022
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__RESCALE_NORMAL_ENABLE = "profile_GLSL__technique__pass__states__rescale_normal_enable";
 
1023
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__SAMPLE_ALPHA_TO_COVERAGE_ENABLE = "profile_GLSL__technique__pass__states__sample_alpha_to_coverage_enable";
 
1024
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__SAMPLE_ALPHA_TO_ONE_ENABLE = "profile_GLSL__technique__pass__states__sample_alpha_to_one_enable";
 
1025
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__SAMPLE_COVERAGE_ENABLE = "profile_GLSL__technique__pass__states__sample_coverage_enable";
 
1026
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__SCISSOR = "profile_GLSL__technique__pass__states__scissor";
 
1027
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__SCISSOR_TEST_ENABLE = "profile_GLSL__technique__pass__states__scissor_test_enable";
 
1028
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__SHADE_MODEL = "profile_GLSL__technique__pass__states__shade_model";
 
1029
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__STENCIL_FUNC = "profile_GLSL__technique__pass__states__stencil_func";
 
1030
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__STENCIL_FUNC_SEPARATE = "profile_GLSL__technique__pass__states__stencil_func_separate";
 
1031
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__STENCIL_FUNC_SEPARATE__BACK = "profile_GLSL__technique__pass__states__stencil_func_separate__back";
 
1032
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__STENCIL_FUNC_SEPARATE__FRONT = "profile_GLSL__technique__pass__states__stencil_func_separate__front";
 
1033
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__STENCIL_FUNC_SEPARATE__MASK = "profile_GLSL__technique__pass__states__stencil_func_separate__mask";
 
1034
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__STENCIL_FUNC_SEPARATE__REF = "profile_GLSL__technique__pass__states__stencil_func_separate__ref";
 
1035
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__STENCIL_FUNC__FUNC = "profile_GLSL__technique__pass__states__stencil_func__func";
 
1036
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__STENCIL_FUNC__MASK = "profile_GLSL__technique__pass__states__stencil_func__mask";
 
1037
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__STENCIL_FUNC__REF = "profile_GLSL__technique__pass__states__stencil_func__ref";
 
1038
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__STENCIL_MASK = "profile_GLSL__technique__pass__states__stencil_mask";
 
1039
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__STENCIL_MASK_SEPARATE = "profile_GLSL__technique__pass__states__stencil_mask_separate";
 
1040
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__STENCIL_MASK_SEPARATE__FACE = "profile_GLSL__technique__pass__states__stencil_mask_separate__face";
 
1041
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__STENCIL_MASK_SEPARATE__MASK = "profile_GLSL__technique__pass__states__stencil_mask_separate__mask";
 
1042
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__STENCIL_OP = "profile_GLSL__technique__pass__states__stencil_op";
 
1043
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__STENCIL_OP_SEPARATE = "profile_GLSL__technique__pass__states__stencil_op_separate";
 
1044
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__STENCIL_OP_SEPARATE__FACE = "profile_GLSL__technique__pass__states__stencil_op_separate__face";
 
1045
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__STENCIL_OP_SEPARATE__FAIL = "profile_GLSL__technique__pass__states__stencil_op_separate__fail";
 
1046
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__STENCIL_OP_SEPARATE__ZFAIL = "profile_GLSL__technique__pass__states__stencil_op_separate__zfail";
 
1047
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__STENCIL_OP_SEPARATE__ZPASS = "profile_GLSL__technique__pass__states__stencil_op_separate__zpass";
 
1048
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__STENCIL_OP__FAIL = "profile_GLSL__technique__pass__states__stencil_op__fail";
 
1049
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__STENCIL_OP__ZFAIL = "profile_GLSL__technique__pass__states__stencil_op__zfail";
 
1050
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__STENCIL_OP__ZPASS = "profile_GLSL__technique__pass__states__stencil_op__zpass";
 
1051
const char* NAME_ELEMENT_PROFILE_GLSL__TECHNIQUE__PASS__STATES__STENCIL_TEST_ENABLE = "profile_GLSL__technique__pass__states__stencil_test_enable";
 
1052
const char* NAME_ELEMENT_PROGRAM = "program";
 
1053
const char* NAME_ELEMENT_PROGRAM____GLES2_PROGRAM_TYPE = "program____gles2_program_type";
 
1054
const char* NAME_ELEMENT_PROGRAM____GLSL_PROGRAM_TYPE = "program____glsl_program_type";
 
1055
const char* NAME_ELEMENT_PROJECTION_MATRIX = "projection_matrix";
 
1056
const char* NAME_ELEMENT_PRSUBSET = "prsubset";
 
1057
const char* NAME_ELEMENT_QUADRATIC_ATTENUATION = "quadratic_attenuation";
 
1058
const char* NAME_ELEMENT_QUOTIENT = "quotient";
 
1059
const char* NAME_ELEMENT_RADIUS = "radius";
 
1060
const char* NAME_ELEMENT_RADIUS____FLOAT2_TYPE = "radius____float2_type";
 
1061
const char* NAME_ELEMENT_RADIUS____FLOAT3_TYPE = "radius____float3_type";
 
1062
const char* NAME_ELEMENT_RADIUS____FLOAT_TYPE = "radius____float_type";
 
1063
const char* NAME_ELEMENT_RATIONALS = "rationals";
 
1064
const char* NAME_ELEMENT_REAL = "real";
 
1065
const char* NAME_ELEMENT_REALS = "reals";
 
1066
const char* NAME_ELEMENT_REF = NAME_ATTRIBUTE_REF;
 
1067
const char* NAME_ELEMENT_REFLECTIVE = "reflective";
 
1068
const char* NAME_ELEMENT_REFLECTIVITY = "reflectivity";
 
1069
const char* NAME_ELEMENT_REF_ATTACHMENT = "ref_attachment";
 
1070
const char* NAME_ELEMENT_REF____ANYURI = "ref____anyURI";
 
1071
const char* NAME_ELEMENT_REM = "rem";
 
1072
const char* NAME_ELEMENT_RENDER = "render";
 
1073
const char* NAME_ELEMENT_RENDERABLE = "renderable";
 
1074
const char* NAME_ELEMENT_RENDER__INSTANCE_MATERIAL = "render__instance_material";
 
1075
const char* NAME_ELEMENT_RENDER__INSTANCE_MATERIAL__BIND = "render__instance_material__bind";
 
1076
const char* NAME_ELEMENT_RESCALE_NORMAL_ENABLE = "rescale_normal_enable";
 
1077
const char* NAME_ELEMENT_RESTITUTION = "restitution";
 
1078
const char* NAME_ELEMENT_REVISION = "revision";
 
1079
const char* NAME_ELEMENT_REVOLUTE = "revolute";
 
1080
const char* NAME_ELEMENT_RGB = "rgb";
 
1081
const char* NAME_ELEMENT_RIGID_BODY = "rigid_body";
 
1082
const char* NAME_ELEMENT_RIGID_BODY_TYPE____TECHNIQUE_COMMON = "rigid_body_type____technique_common";
 
1083
const char* NAME_ELEMENT_RIGID_BODY__TECHNIQUE_COMMON__DYNAMIC = "rigid_body__technique_common__dynamic";
 
1084
const char* NAME_ELEMENT_RIGID_BODY__TECHNIQUE_COMMON__MASS_FRAME = "rigid_body__technique_common__mass_frame";
 
1085
const char* NAME_ELEMENT_RIGID_BODY__TECHNIQUE_COMMON__SHAPE = "rigid_body__technique_common__shape";
 
1086
const char* NAME_ELEMENT_RIGID_BODY__TECHNIQUE_COMMON__SHAPE__HOLLOW = "rigid_body__technique_common__shape__hollow";
 
1087
const char* NAME_ELEMENT_RIGID_CONSTRAINT = "rigid_constraint";
 
1088
const char* NAME_ELEMENT_RIGID_CONSTRAINT_TYPE____TECHNIQUE_COMMON = "rigid_constraint_type____technique_common";
 
1089
const char* NAME_ELEMENT_RIGID_CONSTRAINT__TECHNIQUE_COMMON__LIMITS = "rigid_constraint__technique_common__limits";
 
1090
const char* NAME_ELEMENT_RIGID_CONSTRAINT__TECHNIQUE_COMMON__LIMITS__LINEAR = "rigid_constraint__technique_common__limits__linear";
 
1091
const char* NAME_ELEMENT_ROOT = "root";
 
1092
const char* NAME_ELEMENT_ROTATE = "rotate";
 
1093
const char* NAME_ELEMENT_SAMPLER = "sampler";
 
1094
const char* NAME_ELEMENT_SAMPLER1D = "sampler1D";
 
1095
const char* NAME_ELEMENT_SAMPLER2D = "sampler2D";
 
1096
const char* NAME_ELEMENT_SAMPLER2D____FX_SAMPLER2D_TYPE = "sampler2D____fx_sampler2D_type";
 
1097
const char* NAME_ELEMENT_SAMPLER2D____GLES_SAMPLER_TYPE = "sampler2D____gles_sampler_type";
 
1098
const char* NAME_ELEMENT_SAMPLER3D = "sampler3D";
 
1099
const char* NAME_ELEMENT_SAMPLERCUBE = "samplerCUBE";
 
1100
const char* NAME_ELEMENT_SAMPLERDEPTH = "samplerDEPTH";
 
1101
const char* NAME_ELEMENT_SAMPLERRECT = "samplerRECT";
 
1102
const char* NAME_ELEMENT_SAMPLER_IMAGE = "sampler_image";
 
1103
const char* NAME_ELEMENT_SAMPLER_STATES = "sampler_states";
 
1104
const char* NAME_ELEMENT_SAMPLE_ALPHA_TO_COVERAGE_ENABLE = "sample_alpha_to_coverage_enable";
 
1105
const char* NAME_ELEMENT_SAMPLE_ALPHA_TO_ONE_ENABLE = "sample_alpha_to_one_enable";
 
1106
const char* NAME_ELEMENT_SAMPLE_COVERAGE = "sample_coverage";
 
1107
const char* NAME_ELEMENT_SAMPLE_COVERAGE_ENABLE = "sample_coverage_enable";
 
1108
const char* NAME_ELEMENT_SAMPLE_COVERAGE__VALUE = "sample_coverage__value";
 
1109
const char* NAME_ELEMENT_SCALARPRODUCT = "scalarproduct";
 
1110
const char* NAME_ELEMENT_SCALE = NAME_ATTRIBUTE_SCALE;
 
1111
const char* NAME_ELEMENT_SCENE = "scene";
 
1112
const char* NAME_ELEMENT_SCISSOR = "scissor";
 
1113
const char* NAME_ELEMENT_SCISSOR_TEST_ENABLE = "scissor_test_enable";
 
1114
const char* NAME_ELEMENT_SDEV = "sdev";
 
1115
const char* NAME_ELEMENT_SEC = "sec";
 
1116
const char* NAME_ELEMENT_SECH = "sech";
 
1117
const char* NAME_ELEMENT_SELECTOR = "selector";
 
1118
const char* NAME_ELEMENT_SEMANTIC = NAME_ATTRIBUTE_SEMANTIC;
 
1119
const char* NAME_ELEMENT_SEMANTICS = "semantics";
 
1120
const char* NAME_ELEMENT_SEMANTIC____NCNAME = "semantic____NCName";
 
1121
const char* NAME_ELEMENT_SEMANTIC____TOKEN = "semantic____token";
 
1122
const char* NAME_ELEMENT_SEP = "sep";
 
1123
const char* NAME_ELEMENT_SET = NAME_ATTRIBUTE_SET;
 
1124
const char* NAME_ELEMENT_SETDIFF = "setdiff";
 
1125
const char* NAME_ELEMENT_SETPARAM = "setparam";
 
1126
const char* NAME_ELEMENT_SETPARAM____CG_SETPARAM_TYPE = "setparam____cg_setparam_type";
 
1127
const char* NAME_ELEMENT_SETPARAM____FORMULA_SETPARAM_TYPE = "setparam____formula_setparam_type";
 
1128
const char* NAME_ELEMENT_SETPARAM____KINEMATICS_SETPARAM_TYPE = "setparam____kinematics_setparam_type";
 
1129
const char* NAME_ELEMENT_SHADER = "shader";
 
1130
const char* NAME_ELEMENT_SHADER____GLES2_SHADER_TYPE = "shader____gles2_shader_type";
 
1131
const char* NAME_ELEMENT_SHADER____GLSL_SHADER_TYPE = "shader____glsl_shader_type";
 
1132
const char* NAME_ELEMENT_SHADE_MODEL = "shade_model";
 
1133
const char* NAME_ELEMENT_SHAPE = "shape";
 
1134
const char* NAME_ELEMENT_SHELLS = "shells";
 
1135
const char* NAME_ELEMENT_SHININESS = "shininess";
 
1136
const char* NAME_ELEMENT_SIDREF = "SIDREF";
 
1137
const char* NAME_ELEMENT_SIDREF_ARRAY = "SIDREF_array";
 
1138
const char* NAME_ELEMENT_SIN = "sin";
 
1139
const char* NAME_ELEMENT_SINH = "sinh";
 
1140
const char* NAME_ELEMENT_SIZE = "size";
 
1141
const char* NAME_ELEMENT_SIZE_EXACT = "size_exact";
 
1142
const char* NAME_ELEMENT_SIZE_RATIO = "size_ratio";
 
1143
const char* NAME_ELEMENT_SKELETON = "skeleton";
 
1144
const char* NAME_ELEMENT_SKEW = "skew";
 
1145
const char* NAME_ELEMENT_SKIN = "skin";
 
1146
const char* NAME_ELEMENT_SOLIDS = "solids";
 
1147
const char* NAME_ELEMENT_SOURCE = "source";
 
1148
const char* NAME_ELEMENT_SOURCES = "sources";
 
1149
const char* NAME_ELEMENT_SOURCES____FX_SOURCES_TYPE = "sources____fx_sources_type";
 
1150
const char* NAME_ELEMENT_SOURCE_DATA = "source_data";
 
1151
const char* NAME_ELEMENT_SOURCE_TYPE____TECHNIQUE_COMMON = "source_type____technique_common";
 
1152
const char* NAME_ELEMENT_SPECULAR = "specular";
 
1153
const char* NAME_ELEMENT_SPEED = "speed";
 
1154
const char* NAME_ELEMENT_SPEED____COMMON_FLOAT2_OR_PARAM_TYPE = "speed____common_float2_or_param_type";
 
1155
const char* NAME_ELEMENT_SPEED____COMMON_FLOAT_OR_PARAM_TYPE = "speed____common_float_or_param_type";
 
1156
const char* NAME_ELEMENT_SPHERE = "sphere";
 
1157
const char* NAME_ELEMENT_SPLINE = "spline";
 
1158
const char* NAME_ELEMENT_SPLINE_TYPE____CONTROL_VERTICES = "spline_type____control_vertices";
 
1159
const char* NAME_ELEMENT_SPOT = "spot";
 
1160
const char* NAME_ELEMENT_SPRING = "spring";
 
1161
const char* NAME_ELEMENT_SPRING__LINEAR = "spring__linear";
 
1162
const char* NAME_ELEMENT_SRC = "src";
 
1163
const char* NAME_ELEMENT_SRC_ALPHA = "src_alpha";
 
1164
const char* NAME_ELEMENT_SRC_RGB = "src_rgb";
 
1165
const char* NAME_ELEMENT_STATES = "states";
 
1166
const char* NAME_ELEMENT_STATIC_FRICTION = "static_friction";
 
1167
const char* NAME_ELEMENT_STENCIL_CLEAR = "stencil_clear";
 
1168
const char* NAME_ELEMENT_STENCIL_FUNC = "stencil_func";
 
1169
const char* NAME_ELEMENT_STENCIL_FUNC_SEPARATE = "stencil_func_separate";
 
1170
const char* NAME_ELEMENT_STENCIL_MASK = "stencil_mask";
 
1171
const char* NAME_ELEMENT_STENCIL_MASK_SEPARATE = "stencil_mask_separate";
 
1172
const char* NAME_ELEMENT_STENCIL_OP = "stencil_op";
 
1173
const char* NAME_ELEMENT_STENCIL_OP_SEPARATE = "stencil_op_separate";
 
1174
const char* NAME_ELEMENT_STENCIL_TARGET = "stencil_target";
 
1175
const char* NAME_ELEMENT_STENCIL_TEST_ENABLE = "stencil_test_enable";
 
1176
const char* NAME_ELEMENT_STIFFNESS = "stiffness";
 
1177
const char* NAME_ELEMENT_STRING = "string";
 
1178
const char* NAME_ELEMENT_SUBJECT = "subject";
 
1179
const char* NAME_ELEMENT_SUBSET = "subset";
 
1180
const char* NAME_ELEMENT_SUM = "sum";
 
1181
const char* NAME_ELEMENT_SURFACE = "surface";
 
1182
const char* NAME_ELEMENT_SURFACES = "surfaces";
 
1183
const char* NAME_ELEMENT_SURFACE_CURVES = "surface_curves";
 
1184
const char* NAME_ELEMENT_SURFACE_TYPE____CYLINDER = "surface_type____cylinder";
 
1185
const char* NAME_ELEMENT_SWEPT_SURFACE = "swept_surface";
 
1186
const char* NAME_ELEMENT_SWING_CONE_AND_TWIST = "swing_cone_and_twist";
 
1187
const char* NAME_ELEMENT_TAN = "tan";
 
1188
const char* NAME_ELEMENT_TANH = "tanh";
 
1189
const char* NAME_ELEMENT_TARGET = NAME_ATTRIBUTE_TARGET;
 
1190
const char* NAME_ELEMENT_TARGETS = "targets";
 
1191
const char* NAME_ELEMENT_TARGET_VALUE = "target_value";
 
1192
const char* NAME_ELEMENT_TECHNIQUE = "technique";
 
1193
const char* NAME_ELEMENT_TECHNIQUE_COMMON = "technique_common";
 
1194
const char* NAME_ELEMENT_TECHNIQUE_COMMON____FORMULA_TECHNIQUE_TYPE = "technique_common____formula_technique_type";
 
1195
const char* NAME_ELEMENT_TECHNIQUE_COMMON____KINEMATICS_MODEL_TECHNIQUE_TYPE = "technique_common____kinematics_model_technique_type";
 
1196
const char* NAME_ELEMENT_TECHNIQUE_COMMON____KINEMATICS_TECHNIQUE_TYPE = "technique_common____kinematics_technique_type";
 
1197
const char* NAME_ELEMENT_TECHNIQUE_COMMON____MOTION_TECHNIQUE_TYPE = "technique_common____motion_technique_type";
 
1198
const char* NAME_ELEMENT_TECHNIQUE_HINT = "technique_hint";
 
1199
const char* NAME_ELEMENT_TECHNIQUE_OVERRIDE = "technique_override";
 
1200
const char* NAME_ELEMENT_TECHNIQUE____TECHNIQUE_TYPE = "technique____technique_type";
 
1201
const char* NAME_ELEMENT_TENDSTO = "tendsto";
 
1202
const char* NAME_ELEMENT_TEXCOMBINER = "texcombiner";
 
1203
const char* NAME_ELEMENT_TEXCOORD = NAME_ATTRIBUTE_TEXCOORD;
 
1204
const char* NAME_ELEMENT_TEXENV = "texenv";
 
1205
const char* NAME_ELEMENT_TEXTURE = "texture";
 
1206
const char* NAME_ELEMENT_TEXTURE1D = "texture1D";
 
1207
const char* NAME_ELEMENT_TEXTURE1D_ENABLE = "texture1D_enable";
 
1208
const char* NAME_ELEMENT_TEXTURE2D = "texture2D";
 
1209
const char* NAME_ELEMENT_TEXTURE2D_ENABLE = "texture2D_enable";
 
1210
const char* NAME_ELEMENT_TEXTURE3D = "texture3D";
 
1211
const char* NAME_ELEMENT_TEXTURE3D_ENABLE = "texture3D_enable";
 
1212
const char* NAME_ELEMENT_TEXTURECUBE = "textureCUBE";
 
1213
const char* NAME_ELEMENT_TEXTURECUBE_ENABLE = "textureCUBE_enable";
 
1214
const char* NAME_ELEMENT_TEXTUREDEPTH = "textureDEPTH";
 
1215
const char* NAME_ELEMENT_TEXTUREDEPTH_ENABLE = "textureDEPTH_enable";
 
1216
const char* NAME_ELEMENT_TEXTURERECT = "textureRECT";
 
1217
const char* NAME_ELEMENT_TEXTURERECT_ENABLE = "textureRECT_enable";
 
1218
const char* NAME_ELEMENT_TEXTURE_ENV_COLOR = "texture_env_color";
 
1219
const char* NAME_ELEMENT_TEXTURE_ENV_MODE = "texture_env_mode";
 
1220
const char* NAME_ELEMENT_TEXTURE_PIPELINE = "texture_pipeline";
 
1221
const char* NAME_ELEMENT_TIMES = "times";
 
1222
const char* NAME_ELEMENT_TIME_STEP = "time_step";
 
1223
const char* NAME_ELEMENT_TITLE = "title";
 
1224
const char* NAME_ELEMENT_TOKEN_ARRAY = "token_array";
 
1225
const char* NAME_ELEMENT_TORUS = "torus";
 
1226
const char* NAME_ELEMENT_TRANSLATE = "translate";
 
1227
const char* NAME_ELEMENT_TRANSPARENCY = "transparency";
 
1228
const char* NAME_ELEMENT_TRANSPARENT = "transparent";
 
1229
const char* NAME_ELEMENT_TRANSPOSE = "transpose";
 
1230
const char* NAME_ELEMENT_TRIANGLES = "triangles";
 
1231
const char* NAME_ELEMENT_TRIFANS = "trifans";
 
1232
const char* NAME_ELEMENT_TRISTRIPS = "tristrips";
 
1233
const char* NAME_ELEMENT_TRUE = "true";
 
1234
const char* NAME_ELEMENT_UNION = "union";
 
1235
const char* NAME_ELEMENT_UNIT = "unit";
 
1236
const char* NAME_ELEMENT_UNNORMALIZED = "unnormalized";
 
1237
const char* NAME_ELEMENT_UPLIMIT = "uplimit";
 
1238
const char* NAME_ELEMENT_UP_AXIS = "up_axis";
 
1239
const char* NAME_ELEMENT_USERTYPE = "usertype";
 
1240
const char* NAME_ELEMENT_USERTYPE____CG_USER_TYPE = "usertype____cg_user_type";
 
1241
const char* NAME_ELEMENT_V = "v";
 
1242
const char* NAME_ELEMENT_VALUE = NAME_ATTRIBUTE_VALUE;
 
1243
const char* NAME_ELEMENT_VALUE____COMMON_FLOAT_OR_PARAM_TYPE = "value____common_float_or_param_type";
 
1244
const char* NAME_ELEMENT_VALUE____FX_SAMPLER1D_TYPE = "value____fx_sampler1D_type";
 
1245
const char* NAME_ELEMENT_VALUE____FX_SAMPLER2D_TYPE = "value____fx_sampler2D_type";
 
1246
const char* NAME_ELEMENT_VALUE____FX_SAMPLER3D_TYPE = "value____fx_sampler3D_type";
 
1247
const char* NAME_ELEMENT_VALUE____FX_SAMPLERCUBE_TYPE = "value____fx_samplerCUBE_type";
 
1248
const char* NAME_ELEMENT_VALUE____FX_SAMPLERDEPTH_TYPE = "value____fx_samplerDEPTH_type";
 
1249
const char* NAME_ELEMENT_VALUE____FX_SAMPLERRECT_TYPE = "value____fx_samplerRECT_type";
 
1250
const char* NAME_ELEMENT_VALUE____GLES_TEXTURE_PIPELINE_TYPE = "value____gles_texture_pipeline_type";
 
1251
const char* NAME_ELEMENT_VARIANCE = "variance";
 
1252
const char* NAME_ELEMENT_VCOUNT = "vcount";
 
1253
const char* NAME_ELEMENT_VEC2 = "vec2";
 
1254
const char* NAME_ELEMENT_VEC3 = "vec3";
 
1255
const char* NAME_ELEMENT_VEC4 = "vec4";
 
1256
const char* NAME_ELEMENT_VECTOR = "vector";
 
1257
const char* NAME_ELEMENT_VECTORPRODUCT = "vectorproduct";
 
1258
const char* NAME_ELEMENT_VELOCITY = "velocity";
 
1259
const char* NAME_ELEMENT_VERTEX_WEIGHTS = "vertex_weights";
 
1260
const char* NAME_ELEMENT_VERTICES = "vertices";
 
1261
const char* NAME_ELEMENT_VISUAL_SCENE = "visual_scene";
 
1262
const char* NAME_ELEMENT_WIRES = "wires";
 
1263
const char* NAME_ELEMENT_WRAP_P = "wrap_p";
 
1264
const char* NAME_ELEMENT_WRAP_S = "wrap_s";
 
1265
const char* NAME_ELEMENT_WRAP_S____FX_SAMPLER_WRAP_ENUM = "wrap_s____fx_sampler_wrap_enum";
 
1266
const char* NAME_ELEMENT_WRAP_S____GLES_SAMPLER_WRAP_ENUM = "wrap_s____gles_sampler_wrap_enum";
 
1267
const char* NAME_ELEMENT_WRAP_T = "wrap_t";
 
1268
const char* NAME_ELEMENT_WRAP_T____FX_SAMPLER_WRAP_ENUM = "wrap_t____fx_sampler_wrap_enum";
 
1269
const char* NAME_ELEMENT_WRAP_T____GLES_SAMPLER_WRAP_ENUM = "wrap_t____gles_sampler_wrap_enum";
 
1270
const char* NAME_ELEMENT_XFOV = "xfov";
 
1271
const char* NAME_ELEMENT_XMAG = "xmag";
 
1272
const char* NAME_ELEMENT_XOR = "xor";
 
1273
const char* NAME_ELEMENT_YFOV = "yfov";
 
1274
const char* NAME_ELEMENT_YMAG = "ymag";
 
1275
const char* NAME_ELEMENT_ZFAIL = "zfail";
 
1276
const char* NAME_ELEMENT_ZFAR = "zfar";
 
1277
const char* NAME_ELEMENT_ZNEAR = "znear";
 
1278
const char* NAME_ELEMENT_ZPASS = "zpass";
 
1279
 
 
1280
 
 
1281
 
 
1282
//---------------------------------------------------------------------
 
1283
const COLLADA__AttributeData COLLADA__AttributeData::DEFAULT = {0, ENUM__version_enum__NOT_PRESENT, 0};
 
1284
 
 
1285
//---------------------------------------------------------------------
 
1286
bool ColladaParserAutoGen15Private::_data__COLLADA( const ParserChar* text, size_t textLength )
 
1287
{
 
1288
    return true;
 
1289
}
 
1290
 
 
1291
//---------------------------------------------------------------------
 
1292
bool ColladaParserAutoGen15Private::_preBegin__COLLADA( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
1293
{
 
1294
#ifdef GENERATEDSAXPARSER_VALIDATION
 
1295
    if ( mValidate )
 
1296
    {
 
1297
 
 
1298
        bool validationResult = _validateBegin__COLLADA( attributes, attributeDataPtr, validationDataPtr );
 
1299
        if ( !validationResult ) return false;
 
1300
 
 
1301
    } // validation
 
1302
#endif
 
1303
 
 
1304
COLLADA__AttributeData* attributeData = newData<COLLADA__AttributeData>(attributeDataPtr);
 
1305
 
 
1306
const ParserChar** attributeArray = attributes.attributes;
 
1307
if ( attributeArray )
 
1308
{
 
1309
    while (true)
 
1310
    {
 
1311
        const ParserChar * attribute = *attributeArray;
 
1312
        if ( !attribute )
 
1313
            break;
 
1314
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
1315
        attributeArray++;
 
1316
        if ( !attributeArray )
 
1317
            return false;
 
1318
        const ParserChar* attributeValue = *attributeArray;
 
1319
        attributeArray++;
 
1320
 
 
1321
 
 
1322
    switch ( hash )
 
1323
    {
 
1324
    case HASH_ATTRIBUTE_VERSION:
 
1325
    {
 
1326
bool failed;
 
1327
attributeData->version = Utils::toEnum<ENUM__version_enum, StringHash, ENUM__version_enum__COUNT>(attributeValue, failed, ENUM__version_enumMap, Utils::calculateStringHash);
 
1328
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
1329
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
1330
        HASH_ELEMENT_COLLADA,
 
1331
        HASH_ATTRIBUTE_VERSION,
 
1332
        attributeValue))
 
1333
{
 
1334
    return false;
 
1335
}
 
1336
 
 
1337
    break;
 
1338
    }
 
1339
    case HASH_ATTRIBUTE_BASE:
 
1340
    {
 
1341
bool failed;
 
1342
attributeData->base = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
1343
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
1344
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
1345
        HASH_ELEMENT_COLLADA,
 
1346
        HASH_ATTRIBUTE_BASE,
 
1347
        attributeValue))
 
1348
{
 
1349
    return false;
 
1350
}
 
1351
if ( !failed )
 
1352
    attributeData->present_attributes |= COLLADA__AttributeData::ATTRIBUTE_BASE_PRESENT;
 
1353
 
 
1354
    break;
 
1355
    }
 
1356
    case HASH_ATTRIBUTE_XMLNS:
 
1357
    {
 
1358
    // ignore
 
1359
 
 
1360
    break;
 
1361
    }
 
1362
    default:
 
1363
    {
 
1364
        StringHashPair hashPair = Utils::calculateStringHashWithNamespace( attribute );
 
1365
        if ( hashPair.first != HASH_ATTRIBUTE_XMLNS )
 
1366
        {
 
1367
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_COLLADA, attribute, attributeValue))
 
1368
            {return false;}        }
 
1369
        else
 
1370
        {
 
1371
            // ignore
 
1372
        }
 
1373
 
 
1374
    }
 
1375
    }
 
1376
    }
 
1377
}
 
1378
if ((attributeData->present_attributes & COLLADA__AttributeData::ATTRIBUTE_BASE_PRESENT) == 0)
 
1379
{
 
1380
    attributeData->base = COLLADABU::URI("");
 
1381
}
 
1382
if ( attributeData->version == ENUM__version_enum__NOT_PRESENT )
 
1383
{
 
1384
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_COLLADA, HASH_ATTRIBUTE_VERSION, 0 ) )
 
1385
        return false;
 
1386
}
 
1387
 
 
1388
 
 
1389
    return true;
 
1390
}
 
1391
 
 
1392
//---------------------------------------------------------------------
 
1393
bool ColladaParserAutoGen15Private::_preEnd__COLLADA()
 
1394
{
 
1395
#ifdef GENERATEDSAXPARSER_VALIDATION
 
1396
    if ( mValidate )
 
1397
    {
 
1398
 
 
1399
        bool validationResult = _validateEnd__COLLADA();
 
1400
        if ( !validationResult ) return false;
 
1401
 
 
1402
    } // validation
 
1403
#endif
 
1404
 
 
1405
    return true;
 
1406
}
 
1407
 
 
1408
//---------------------------------------------------------------------
 
1409
bool ColladaParserAutoGen15Private::_freeAttributes__COLLADA( void* attributeData )
 
1410
{
 
1411
    COLLADA__AttributeData* typedAttributeData = static_cast<COLLADA__AttributeData*>(attributeData);
 
1412
 
 
1413
    typedAttributeData->~COLLADA__AttributeData();
 
1414
 
 
1415
    return true;
 
1416
}
 
1417
 
 
1418
//---------------------------------------------------------------------
 
1419
ENUM__version_enum ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__version_enum (
 
1420
    const ParserChar* prefixedBuffer,
 
1421
    const ParserChar* prefixedBufferEnd,
 
1422
    const ParserChar** buffer,
 
1423
    const ParserChar* bufferEnd,
 
1424
    bool& failed,
 
1425
    const std::pair<StringHash, ENUM__version_enum>* enumMap,
 
1426
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
1427
)
 
1428
{
 
1429
    return toEnumDataPrefix<ENUM__version_enum, StringHash, ENUM__version_enum__COUNT, &toEnum_ENUM__version_enum>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
1430
}
 
1431
 
 
1432
//---------------------------------------------------------------------
 
1433
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__version_enum (
 
1434
    const ParserChar* text,
 
1435
    size_t textLength,
 
1436
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__version_enum*, size_t ),
 
1437
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
1438
)
 
1439
{
 
1440
    return characterData2EnumData<ENUM__version_enum, StringHash, ENUM__version_enum__COUNT>(text, textLength, dataFunction, ENUM__version_enumMap, baseConversionFunc, &toEnum_ENUM__version_enum, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__version_enum);
 
1441
}
 
1442
 
 
1443
//---------------------------------------------------------------------
 
1444
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__version_enum (
 
1445
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__version_enum*, size_t ),
 
1446
    const std::pair<StringHash, ENUM__version_enum>* enumMap,
 
1447
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
1448
    ENUM__version_enum (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__version_enum>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
1449
)
 
1450
{
 
1451
    return dataEnumEnd<ENUM__version_enum, StringHash, ENUM__version_enum__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
1452
}
 
1453
 
 
1454
//---------------------------------------------------------------------
 
1455
bool ColladaParserAutoGen15Private::_data__asset( const ParserChar* text, size_t textLength )
 
1456
{
 
1457
    return true;
 
1458
}
 
1459
 
 
1460
//---------------------------------------------------------------------
 
1461
bool ColladaParserAutoGen15Private::_preBegin__asset( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
1462
{
 
1463
#ifdef GENERATEDSAXPARSER_VALIDATION
 
1464
    if ( mValidate )
 
1465
    {
 
1466
 
 
1467
        bool validationResult = _validateBegin__asset( attributes, attributeDataPtr, validationDataPtr );
 
1468
        if ( !validationResult ) return false;
 
1469
 
 
1470
    } // validation
 
1471
#endif
 
1472
 
 
1473
    return true;
 
1474
}
 
1475
 
 
1476
//---------------------------------------------------------------------
 
1477
bool ColladaParserAutoGen15Private::_preEnd__asset()
 
1478
{
 
1479
#ifdef GENERATEDSAXPARSER_VALIDATION
 
1480
    if ( mValidate )
 
1481
    {
 
1482
 
 
1483
        bool validationResult = _validateEnd__asset();
 
1484
        if ( !validationResult ) return false;
 
1485
 
 
1486
    } // validation
 
1487
#endif
 
1488
 
 
1489
    return true;
 
1490
}
 
1491
 
 
1492
//---------------------------------------------------------------------
 
1493
bool ColladaParserAutoGen15Private::_freeAttributes__asset( void* attributeData )
 
1494
{
 
1495
    return true;
 
1496
}
 
1497
 
 
1498
//---------------------------------------------------------------------
 
1499
bool ColladaParserAutoGen15Private::_data__contributor( const ParserChar* text, size_t textLength )
 
1500
{
 
1501
    return true;
 
1502
}
 
1503
 
 
1504
//---------------------------------------------------------------------
 
1505
bool ColladaParserAutoGen15Private::_preBegin__contributor( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
1506
{
 
1507
#ifdef GENERATEDSAXPARSER_VALIDATION
 
1508
    if ( mValidate )
 
1509
    {
 
1510
 
 
1511
        bool validationResult = _validateBegin__contributor( attributes, attributeDataPtr, validationDataPtr );
 
1512
        if ( !validationResult ) return false;
 
1513
 
 
1514
    } // validation
 
1515
#endif
 
1516
 
 
1517
    return true;
 
1518
}
 
1519
 
 
1520
//---------------------------------------------------------------------
 
1521
bool ColladaParserAutoGen15Private::_preEnd__contributor()
 
1522
{
 
1523
#ifdef GENERATEDSAXPARSER_VALIDATION
 
1524
    if ( mValidate )
 
1525
    {
 
1526
 
 
1527
        bool validationResult = _validateEnd__contributor();
 
1528
        if ( !validationResult ) return false;
 
1529
 
 
1530
    } // validation
 
1531
#endif
 
1532
 
 
1533
    return true;
 
1534
}
 
1535
 
 
1536
//---------------------------------------------------------------------
 
1537
bool ColladaParserAutoGen15Private::_freeAttributes__contributor( void* attributeData )
 
1538
{
 
1539
    return true;
 
1540
}
 
1541
 
 
1542
//---------------------------------------------------------------------
 
1543
bool ColladaParserAutoGen15Private::_data__author( const ParserChar* text, size_t textLength )
 
1544
{
 
1545
 
 
1546
return mImpl->data__author(text, textLength);
 
1547
}
 
1548
 
 
1549
//---------------------------------------------------------------------
 
1550
bool ColladaParserAutoGen15Private::_preBegin__author( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
1551
{
 
1552
#ifdef GENERATEDSAXPARSER_VALIDATION
 
1553
    if ( mValidate )
 
1554
    {
 
1555
 
 
1556
        bool validationResult = _validateBegin__author( attributes, attributeDataPtr, validationDataPtr );
 
1557
        if ( !validationResult ) return false;
 
1558
 
 
1559
    } // validation
 
1560
#endif
 
1561
 
 
1562
    return true;
 
1563
}
 
1564
 
 
1565
//---------------------------------------------------------------------
 
1566
bool ColladaParserAutoGen15Private::_preEnd__author()
 
1567
{
 
1568
#ifdef GENERATEDSAXPARSER_VALIDATION
 
1569
    if ( mValidate )
 
1570
    {
 
1571
 
 
1572
        bool validationResult = _validateEnd__author();
 
1573
        if ( !validationResult ) return false;
 
1574
 
 
1575
    } // validation
 
1576
#endif
 
1577
 
 
1578
    return true;
 
1579
}
 
1580
 
 
1581
//---------------------------------------------------------------------
 
1582
bool ColladaParserAutoGen15Private::_freeAttributes__author( void* attributeData )
 
1583
{
 
1584
    return true;
 
1585
}
 
1586
 
 
1587
//---------------------------------------------------------------------
 
1588
bool ColladaParserAutoGen15Private::_data__author_email( const ParserChar* text, size_t textLength )
 
1589
{
 
1590
if (!mLastIncompleteFragmentInCharacterData)
 
1591
{
 
1592
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
1593
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
1594
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
1595
}
 
1596
else
 
1597
{
 
1598
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
1599
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
1600
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
1601
        mLastIncompleteFragmentInCharacterData = tmp;
 
1602
    }
 
1603
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
1604
    mEndOfDataInCurrentObjectOnStack += textLength;
 
1605
}
 
1606
return true;
 
1607
}
 
1608
 
 
1609
//---------------------------------------------------------------------
 
1610
bool ColladaParserAutoGen15Private::_preBegin__author_email( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
1611
{
 
1612
#ifdef GENERATEDSAXPARSER_VALIDATION
 
1613
    if ( mValidate )
 
1614
    {
 
1615
 
 
1616
        bool validationResult = _validateBegin__author_email( attributes, attributeDataPtr, validationDataPtr );
 
1617
        if ( !validationResult ) return false;
 
1618
 
 
1619
    } // validation
 
1620
#endif
 
1621
 
 
1622
    return true;
 
1623
}
 
1624
 
 
1625
//---------------------------------------------------------------------
 
1626
bool ColladaParserAutoGen15Private::_preEnd__author_email()
 
1627
{
 
1628
#ifdef GENERATEDSAXPARSER_VALIDATION
 
1629
    if ( mValidate )
 
1630
    {
 
1631
 
 
1632
        bool validationResult = _validateEnd__author_email();
 
1633
        if ( !validationResult ) return false;
 
1634
 
 
1635
    } // validation
 
1636
#endif
 
1637
 
 
1638
bool returnValue = true;
 
1639
#ifdef GENERATEDSAXPARSER_VALIDATION
 
1640
    if ( mValidate )
 
1641
    {
 
1642
ParserError::ErrorType simpleTypeValidationResult = validate__author_email(mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData);
 
1643
if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
1644
{
 
1645
    ParserChar msg[21];
 
1646
    Utils::fillErrorMsg(msg, mLastIncompleteFragmentInCharacterData, 20);
 
1647
    if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
1648
        simpleTypeValidationResult,
 
1649
        0,
 
1650
        msg) )
 
1651
    {
 
1652
        returnValue =  false;
 
1653
    }
 
1654
}
 
1655
if (!returnValue)
 
1656
{
 
1657
    mStackMemoryManager.deleteObject();
 
1658
    mLastIncompleteFragmentInCharacterData = 0;
 
1659
    mEndOfDataInCurrentObjectOnStack = 0;
 
1660
    return returnValue;
 
1661
}
 
1662
    } // validation
 
1663
#endif
 
1664
returnValue = mImpl->data__author_email(mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData);
 
1665
mStackMemoryManager.deleteObject();
 
1666
mLastIncompleteFragmentInCharacterData = 0;
 
1667
mEndOfDataInCurrentObjectOnStack = 0;
 
1668
return returnValue;
 
1669
 
 
1670
}
 
1671
 
 
1672
//---------------------------------------------------------------------
 
1673
bool ColladaParserAutoGen15Private::_freeAttributes__author_email( void* attributeData )
 
1674
{
 
1675
    return true;
 
1676
}
 
1677
 
 
1678
//---------------------------------------------------------------------
 
1679
bool ColladaParserAutoGen15Private::_data__author_website( const ParserChar* text, size_t textLength )
 
1680
{
 
1681
if (!mLastIncompleteFragmentInCharacterData)
 
1682
{
 
1683
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
1684
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
1685
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
1686
}
 
1687
else
 
1688
{
 
1689
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
1690
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
1691
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
1692
        mLastIncompleteFragmentInCharacterData = tmp;
 
1693
    }
 
1694
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
1695
    mEndOfDataInCurrentObjectOnStack += textLength;
 
1696
}
 
1697
return true;
 
1698
}
 
1699
 
 
1700
//---------------------------------------------------------------------
 
1701
bool ColladaParserAutoGen15Private::_preBegin__author_website( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
1702
{
 
1703
#ifdef GENERATEDSAXPARSER_VALIDATION
 
1704
    if ( mValidate )
 
1705
    {
 
1706
 
 
1707
        bool validationResult = _validateBegin__author_website( attributes, attributeDataPtr, validationDataPtr );
 
1708
        if ( !validationResult ) return false;
 
1709
 
 
1710
    } // validation
 
1711
#endif
 
1712
 
 
1713
    return true;
 
1714
}
 
1715
 
 
1716
//---------------------------------------------------------------------
 
1717
bool ColladaParserAutoGen15Private::_preEnd__author_website()
 
1718
{
 
1719
#ifdef GENERATEDSAXPARSER_VALIDATION
 
1720
    if ( mValidate )
 
1721
    {
 
1722
 
 
1723
        bool validationResult = _validateEnd__author_website();
 
1724
        if ( !validationResult ) return false;
 
1725
 
 
1726
    } // validation
 
1727
#endif
 
1728
 
 
1729
bool failed;
 
1730
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
1731
DISABLE_WARNING_UNUSED(ptrForErr)
 
1732
COLLADABU::URI parameter = GeneratedSaxParser::Utils::toURI((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
1733
bool returnValue;
 
1734
if (!failed)
 
1735
{
 
1736
    returnValue = mImpl->data__author_website(parameter);
 
1737
}
 
1738
else
 
1739
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_AUTHOR_WEBSITE, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
1740
if (mLastIncompleteFragmentInCharacterData)
 
1741
    mStackMemoryManager.deleteObject();
 
1742
mLastIncompleteFragmentInCharacterData = 0;
 
1743
mEndOfDataInCurrentObjectOnStack = 0;
 
1744
return returnValue;
 
1745
}
 
1746
 
 
1747
//---------------------------------------------------------------------
 
1748
bool ColladaParserAutoGen15Private::_freeAttributes__author_website( void* attributeData )
 
1749
{
 
1750
    return true;
 
1751
}
 
1752
 
 
1753
//---------------------------------------------------------------------
 
1754
bool ColladaParserAutoGen15Private::_data__authoring_tool( const ParserChar* text, size_t textLength )
 
1755
{
 
1756
 
 
1757
return mImpl->data__authoring_tool(text, textLength);
 
1758
}
 
1759
 
 
1760
//---------------------------------------------------------------------
 
1761
bool ColladaParserAutoGen15Private::_preBegin__authoring_tool( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
1762
{
 
1763
#ifdef GENERATEDSAXPARSER_VALIDATION
 
1764
    if ( mValidate )
 
1765
    {
 
1766
 
 
1767
        bool validationResult = _validateBegin__authoring_tool( attributes, attributeDataPtr, validationDataPtr );
 
1768
        if ( !validationResult ) return false;
 
1769
 
 
1770
    } // validation
 
1771
#endif
 
1772
 
 
1773
    return true;
 
1774
}
 
1775
 
 
1776
//---------------------------------------------------------------------
 
1777
bool ColladaParserAutoGen15Private::_preEnd__authoring_tool()
 
1778
{
 
1779
#ifdef GENERATEDSAXPARSER_VALIDATION
 
1780
    if ( mValidate )
 
1781
    {
 
1782
 
 
1783
        bool validationResult = _validateEnd__authoring_tool();
 
1784
        if ( !validationResult ) return false;
 
1785
 
 
1786
    } // validation
 
1787
#endif
 
1788
 
 
1789
    return true;
 
1790
}
 
1791
 
 
1792
//---------------------------------------------------------------------
 
1793
bool ColladaParserAutoGen15Private::_freeAttributes__authoring_tool( void* attributeData )
 
1794
{
 
1795
    return true;
 
1796
}
 
1797
 
 
1798
//---------------------------------------------------------------------
 
1799
bool ColladaParserAutoGen15Private::_data__comments( const ParserChar* text, size_t textLength )
 
1800
{
 
1801
 
 
1802
return mImpl->data__comments(text, textLength);
 
1803
}
 
1804
 
 
1805
//---------------------------------------------------------------------
 
1806
bool ColladaParserAutoGen15Private::_preBegin__comments( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
1807
{
 
1808
#ifdef GENERATEDSAXPARSER_VALIDATION
 
1809
    if ( mValidate )
 
1810
    {
 
1811
 
 
1812
        bool validationResult = _validateBegin__comments( attributes, attributeDataPtr, validationDataPtr );
 
1813
        if ( !validationResult ) return false;
 
1814
 
 
1815
    } // validation
 
1816
#endif
 
1817
 
 
1818
    return true;
 
1819
}
 
1820
 
 
1821
//---------------------------------------------------------------------
 
1822
bool ColladaParserAutoGen15Private::_preEnd__comments()
 
1823
{
 
1824
#ifdef GENERATEDSAXPARSER_VALIDATION
 
1825
    if ( mValidate )
 
1826
    {
 
1827
 
 
1828
        bool validationResult = _validateEnd__comments();
 
1829
        if ( !validationResult ) return false;
 
1830
 
 
1831
    } // validation
 
1832
#endif
 
1833
 
 
1834
    return true;
 
1835
}
 
1836
 
 
1837
//---------------------------------------------------------------------
 
1838
bool ColladaParserAutoGen15Private::_freeAttributes__comments( void* attributeData )
 
1839
{
 
1840
    return true;
 
1841
}
 
1842
 
 
1843
//---------------------------------------------------------------------
 
1844
bool ColladaParserAutoGen15Private::_data__copyright( const ParserChar* text, size_t textLength )
 
1845
{
 
1846
 
 
1847
return mImpl->data__copyright(text, textLength);
 
1848
}
 
1849
 
 
1850
//---------------------------------------------------------------------
 
1851
bool ColladaParserAutoGen15Private::_preBegin__copyright( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
1852
{
 
1853
#ifdef GENERATEDSAXPARSER_VALIDATION
 
1854
    if ( mValidate )
 
1855
    {
 
1856
 
 
1857
        bool validationResult = _validateBegin__copyright( attributes, attributeDataPtr, validationDataPtr );
 
1858
        if ( !validationResult ) return false;
 
1859
 
 
1860
    } // validation
 
1861
#endif
 
1862
 
 
1863
    return true;
 
1864
}
 
1865
 
 
1866
//---------------------------------------------------------------------
 
1867
bool ColladaParserAutoGen15Private::_preEnd__copyright()
 
1868
{
 
1869
#ifdef GENERATEDSAXPARSER_VALIDATION
 
1870
    if ( mValidate )
 
1871
    {
 
1872
 
 
1873
        bool validationResult = _validateEnd__copyright();
 
1874
        if ( !validationResult ) return false;
 
1875
 
 
1876
    } // validation
 
1877
#endif
 
1878
 
 
1879
    return true;
 
1880
}
 
1881
 
 
1882
//---------------------------------------------------------------------
 
1883
bool ColladaParserAutoGen15Private::_freeAttributes__copyright( void* attributeData )
 
1884
{
 
1885
    return true;
 
1886
}
 
1887
 
 
1888
//---------------------------------------------------------------------
 
1889
bool ColladaParserAutoGen15Private::_data__source_data( const ParserChar* text, size_t textLength )
 
1890
{
 
1891
if (!mLastIncompleteFragmentInCharacterData)
 
1892
{
 
1893
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
1894
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
1895
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
1896
}
 
1897
else
 
1898
{
 
1899
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
1900
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
1901
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
1902
        mLastIncompleteFragmentInCharacterData = tmp;
 
1903
    }
 
1904
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
1905
    mEndOfDataInCurrentObjectOnStack += textLength;
 
1906
}
 
1907
return true;
 
1908
}
 
1909
 
 
1910
//---------------------------------------------------------------------
 
1911
bool ColladaParserAutoGen15Private::_preBegin__source_data( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
1912
{
 
1913
#ifdef GENERATEDSAXPARSER_VALIDATION
 
1914
    if ( mValidate )
 
1915
    {
 
1916
 
 
1917
        bool validationResult = _validateBegin__source_data( attributes, attributeDataPtr, validationDataPtr );
 
1918
        if ( !validationResult ) return false;
 
1919
 
 
1920
    } // validation
 
1921
#endif
 
1922
 
 
1923
    return true;
 
1924
}
 
1925
 
 
1926
//---------------------------------------------------------------------
 
1927
bool ColladaParserAutoGen15Private::_preEnd__source_data()
 
1928
{
 
1929
#ifdef GENERATEDSAXPARSER_VALIDATION
 
1930
    if ( mValidate )
 
1931
    {
 
1932
 
 
1933
        bool validationResult = _validateEnd__source_data();
 
1934
        if ( !validationResult ) return false;
 
1935
 
 
1936
    } // validation
 
1937
#endif
 
1938
 
 
1939
bool failed;
 
1940
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
1941
DISABLE_WARNING_UNUSED(ptrForErr)
 
1942
COLLADABU::URI parameter = GeneratedSaxParser::Utils::toURI((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
1943
bool returnValue;
 
1944
if (!failed)
 
1945
{
 
1946
    returnValue = mImpl->data__source_data(parameter);
 
1947
}
 
1948
else
 
1949
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_SOURCE_DATA, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
1950
if (mLastIncompleteFragmentInCharacterData)
 
1951
    mStackMemoryManager.deleteObject();
 
1952
mLastIncompleteFragmentInCharacterData = 0;
 
1953
mEndOfDataInCurrentObjectOnStack = 0;
 
1954
return returnValue;
 
1955
}
 
1956
 
 
1957
//---------------------------------------------------------------------
 
1958
bool ColladaParserAutoGen15Private::_freeAttributes__source_data( void* attributeData )
 
1959
{
 
1960
    return true;
 
1961
}
 
1962
 
 
1963
//---------------------------------------------------------------------
 
1964
bool ColladaParserAutoGen15Private::_data__coverage( const ParserChar* text, size_t textLength )
 
1965
{
 
1966
    return true;
 
1967
}
 
1968
 
 
1969
//---------------------------------------------------------------------
 
1970
bool ColladaParserAutoGen15Private::_preBegin__coverage( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
1971
{
 
1972
#ifdef GENERATEDSAXPARSER_VALIDATION
 
1973
    if ( mValidate )
 
1974
    {
 
1975
 
 
1976
        bool validationResult = _validateBegin__coverage( attributes, attributeDataPtr, validationDataPtr );
 
1977
        if ( !validationResult ) return false;
 
1978
 
 
1979
    } // validation
 
1980
#endif
 
1981
 
 
1982
    return true;
 
1983
}
 
1984
 
 
1985
//---------------------------------------------------------------------
 
1986
bool ColladaParserAutoGen15Private::_preEnd__coverage()
 
1987
{
 
1988
#ifdef GENERATEDSAXPARSER_VALIDATION
 
1989
    if ( mValidate )
 
1990
    {
 
1991
 
 
1992
        bool validationResult = _validateEnd__coverage();
 
1993
        if ( !validationResult ) return false;
 
1994
 
 
1995
    } // validation
 
1996
#endif
 
1997
 
 
1998
    return true;
 
1999
}
 
2000
 
 
2001
//---------------------------------------------------------------------
 
2002
bool ColladaParserAutoGen15Private::_freeAttributes__coverage( void* attributeData )
 
2003
{
 
2004
    return true;
 
2005
}
 
2006
 
 
2007
//---------------------------------------------------------------------
 
2008
bool ColladaParserAutoGen15Private::_data__geographic_location( const ParserChar* text, size_t textLength )
 
2009
{
 
2010
    return true;
 
2011
}
 
2012
 
 
2013
//---------------------------------------------------------------------
 
2014
bool ColladaParserAutoGen15Private::_preBegin__geographic_location( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
2015
{
 
2016
#ifdef GENERATEDSAXPARSER_VALIDATION
 
2017
    if ( mValidate )
 
2018
    {
 
2019
 
 
2020
        bool validationResult = _validateBegin__geographic_location( attributes, attributeDataPtr, validationDataPtr );
 
2021
        if ( !validationResult ) return false;
 
2022
 
 
2023
    } // validation
 
2024
#endif
 
2025
 
 
2026
    return true;
 
2027
}
 
2028
 
 
2029
//---------------------------------------------------------------------
 
2030
bool ColladaParserAutoGen15Private::_preEnd__geographic_location()
 
2031
{
 
2032
#ifdef GENERATEDSAXPARSER_VALIDATION
 
2033
    if ( mValidate )
 
2034
    {
 
2035
 
 
2036
        bool validationResult = _validateEnd__geographic_location();
 
2037
        if ( !validationResult ) return false;
 
2038
 
 
2039
    } // validation
 
2040
#endif
 
2041
 
 
2042
    return true;
 
2043
}
 
2044
 
 
2045
//---------------------------------------------------------------------
 
2046
bool ColladaParserAutoGen15Private::_freeAttributes__geographic_location( void* attributeData )
 
2047
{
 
2048
    return true;
 
2049
}
 
2050
 
 
2051
//---------------------------------------------------------------------
 
2052
bool ColladaParserAutoGen15Private::_data__longitude( const ParserChar* text, size_t textLength )
 
2053
{
 
2054
if (!mLastIncompleteFragmentInCharacterData)
 
2055
{
 
2056
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
2057
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
2058
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
2059
}
 
2060
else
 
2061
{
 
2062
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
2063
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
2064
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
2065
        mLastIncompleteFragmentInCharacterData = tmp;
 
2066
    }
 
2067
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
2068
    mEndOfDataInCurrentObjectOnStack += textLength;
 
2069
}
 
2070
return true;
 
2071
}
 
2072
 
 
2073
//---------------------------------------------------------------------
 
2074
bool ColladaParserAutoGen15Private::_preBegin__longitude( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
2075
{
 
2076
#ifdef GENERATEDSAXPARSER_VALIDATION
 
2077
    if ( mValidate )
 
2078
    {
 
2079
 
 
2080
        bool validationResult = _validateBegin__longitude( attributes, attributeDataPtr, validationDataPtr );
 
2081
        if ( !validationResult ) return false;
 
2082
 
 
2083
    } // validation
 
2084
#endif
 
2085
 
 
2086
    return true;
 
2087
}
 
2088
 
 
2089
//---------------------------------------------------------------------
 
2090
bool ColladaParserAutoGen15Private::_preEnd__longitude()
 
2091
{
 
2092
#ifdef GENERATEDSAXPARSER_VALIDATION
 
2093
    if ( mValidate )
 
2094
    {
 
2095
 
 
2096
        bool validationResult = _validateEnd__longitude();
 
2097
        if ( !validationResult ) return false;
 
2098
 
 
2099
    } // validation
 
2100
#endif
 
2101
 
 
2102
bool failed;
 
2103
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
2104
DISABLE_WARNING_UNUSED(ptrForErr)
 
2105
float parameter = GeneratedSaxParser::Utils::toFloat((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
2106
bool returnValue;
 
2107
if (!failed)
 
2108
{
 
2109
    returnValue = mImpl->data__longitude(parameter);
 
2110
}
 
2111
else
 
2112
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_LONGITUDE, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
2113
if (mLastIncompleteFragmentInCharacterData)
 
2114
    mStackMemoryManager.deleteObject();
 
2115
mLastIncompleteFragmentInCharacterData = 0;
 
2116
mEndOfDataInCurrentObjectOnStack = 0;
 
2117
return returnValue;
 
2118
}
 
2119
 
 
2120
//---------------------------------------------------------------------
 
2121
bool ColladaParserAutoGen15Private::_freeAttributes__longitude( void* attributeData )
 
2122
{
 
2123
    return true;
 
2124
}
 
2125
 
 
2126
//---------------------------------------------------------------------
 
2127
bool ColladaParserAutoGen15Private::_data__latitude( const ParserChar* text, size_t textLength )
 
2128
{
 
2129
if (!mLastIncompleteFragmentInCharacterData)
 
2130
{
 
2131
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
2132
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
2133
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
2134
}
 
2135
else
 
2136
{
 
2137
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
2138
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
2139
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
2140
        mLastIncompleteFragmentInCharacterData = tmp;
 
2141
    }
 
2142
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
2143
    mEndOfDataInCurrentObjectOnStack += textLength;
 
2144
}
 
2145
return true;
 
2146
}
 
2147
 
 
2148
//---------------------------------------------------------------------
 
2149
bool ColladaParserAutoGen15Private::_preBegin__latitude( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
2150
{
 
2151
#ifdef GENERATEDSAXPARSER_VALIDATION
 
2152
    if ( mValidate )
 
2153
    {
 
2154
 
 
2155
        bool validationResult = _validateBegin__latitude( attributes, attributeDataPtr, validationDataPtr );
 
2156
        if ( !validationResult ) return false;
 
2157
 
 
2158
    } // validation
 
2159
#endif
 
2160
 
 
2161
    return true;
 
2162
}
 
2163
 
 
2164
//---------------------------------------------------------------------
 
2165
bool ColladaParserAutoGen15Private::_preEnd__latitude()
 
2166
{
 
2167
#ifdef GENERATEDSAXPARSER_VALIDATION
 
2168
    if ( mValidate )
 
2169
    {
 
2170
 
 
2171
        bool validationResult = _validateEnd__latitude();
 
2172
        if ( !validationResult ) return false;
 
2173
 
 
2174
    } // validation
 
2175
#endif
 
2176
 
 
2177
bool failed;
 
2178
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
2179
DISABLE_WARNING_UNUSED(ptrForErr)
 
2180
float parameter = GeneratedSaxParser::Utils::toFloat((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
2181
bool returnValue;
 
2182
if (!failed)
 
2183
{
 
2184
    returnValue = mImpl->data__latitude(parameter);
 
2185
}
 
2186
else
 
2187
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_LATITUDE, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
2188
if (mLastIncompleteFragmentInCharacterData)
 
2189
    mStackMemoryManager.deleteObject();
 
2190
mLastIncompleteFragmentInCharacterData = 0;
 
2191
mEndOfDataInCurrentObjectOnStack = 0;
 
2192
return returnValue;
 
2193
}
 
2194
 
 
2195
//---------------------------------------------------------------------
 
2196
bool ColladaParserAutoGen15Private::_freeAttributes__latitude( void* attributeData )
 
2197
{
 
2198
    return true;
 
2199
}
 
2200
 
 
2201
//---------------------------------------------------------------------
 
2202
const altitude__AttributeData altitude__AttributeData::DEFAULT = {ENUM__altitude_mode_enum__relativeToGround};
 
2203
 
 
2204
//---------------------------------------------------------------------
 
2205
bool ColladaParserAutoGen15Private::_data__altitude( const ParserChar* text, size_t textLength )
 
2206
{
 
2207
if (!mLastIncompleteFragmentInCharacterData)
 
2208
{
 
2209
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
2210
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
2211
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
2212
}
 
2213
else
 
2214
{
 
2215
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
2216
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
2217
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
2218
        mLastIncompleteFragmentInCharacterData = tmp;
 
2219
    }
 
2220
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
2221
    mEndOfDataInCurrentObjectOnStack += textLength;
 
2222
}
 
2223
return true;
 
2224
}
 
2225
 
 
2226
//---------------------------------------------------------------------
 
2227
bool ColladaParserAutoGen15Private::_preBegin__altitude( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
2228
{
 
2229
#ifdef GENERATEDSAXPARSER_VALIDATION
 
2230
    if ( mValidate )
 
2231
    {
 
2232
 
 
2233
        bool validationResult = _validateBegin__altitude( attributes, attributeDataPtr, validationDataPtr );
 
2234
        if ( !validationResult ) return false;
 
2235
 
 
2236
    } // validation
 
2237
#endif
 
2238
 
 
2239
altitude__AttributeData* attributeData = newData<altitude__AttributeData>(attributeDataPtr);
 
2240
 
 
2241
const ParserChar** attributeArray = attributes.attributes;
 
2242
if ( attributeArray )
 
2243
{
 
2244
    while (true)
 
2245
    {
 
2246
        const ParserChar * attribute = *attributeArray;
 
2247
        if ( !attribute )
 
2248
            break;
 
2249
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
2250
        attributeArray++;
 
2251
        if ( !attributeArray )
 
2252
            return false;
 
2253
        const ParserChar* attributeValue = *attributeArray;
 
2254
        attributeArray++;
 
2255
 
 
2256
 
 
2257
    switch ( hash )
 
2258
    {
 
2259
    case HASH_ATTRIBUTE_MODE:
 
2260
    {
 
2261
bool failed;
 
2262
attributeData->mode = Utils::toEnum<ENUM__altitude_mode_enum, StringHash, ENUM__altitude_mode_enum__COUNT>(attributeValue, failed, ENUM__altitude_mode_enumMap, Utils::calculateStringHash);
 
2263
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
2264
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
2265
        HASH_ELEMENT_ALTITUDE,
 
2266
        HASH_ATTRIBUTE_MODE,
 
2267
        attributeValue))
 
2268
{
 
2269
    return false;
 
2270
}
 
2271
 
 
2272
    break;
 
2273
    }
 
2274
    default:
 
2275
    {
 
2276
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_ALTITUDE, attribute, attributeValue))
 
2277
            {return false;}
 
2278
    }
 
2279
    }
 
2280
    }
 
2281
}
 
2282
 
 
2283
 
 
2284
    return true;
 
2285
}
 
2286
 
 
2287
//---------------------------------------------------------------------
 
2288
bool ColladaParserAutoGen15Private::_preEnd__altitude()
 
2289
{
 
2290
#ifdef GENERATEDSAXPARSER_VALIDATION
 
2291
    if ( mValidate )
 
2292
    {
 
2293
 
 
2294
        bool validationResult = _validateEnd__altitude();
 
2295
        if ( !validationResult ) return false;
 
2296
 
 
2297
    } // validation
 
2298
#endif
 
2299
 
 
2300
bool failed;
 
2301
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
2302
DISABLE_WARNING_UNUSED(ptrForErr)
 
2303
float parameter = GeneratedSaxParser::Utils::toFloat((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
2304
bool returnValue;
 
2305
if (!failed)
 
2306
{
 
2307
    returnValue = mImpl->data__altitude(parameter);
 
2308
}
 
2309
else
 
2310
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_ALTITUDE, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
2311
if (mLastIncompleteFragmentInCharacterData)
 
2312
    mStackMemoryManager.deleteObject();
 
2313
mLastIncompleteFragmentInCharacterData = 0;
 
2314
mEndOfDataInCurrentObjectOnStack = 0;
 
2315
return returnValue;
 
2316
}
 
2317
 
 
2318
//---------------------------------------------------------------------
 
2319
bool ColladaParserAutoGen15Private::_freeAttributes__altitude( void* attributeData )
 
2320
{
 
2321
    altitude__AttributeData* typedAttributeData = static_cast<altitude__AttributeData*>(attributeData);
 
2322
 
 
2323
    typedAttributeData->~altitude__AttributeData();
 
2324
 
 
2325
    return true;
 
2326
}
 
2327
 
 
2328
//---------------------------------------------------------------------
 
2329
ENUM__altitude_mode_enum ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__altitude_mode_enum (
 
2330
    const ParserChar* prefixedBuffer,
 
2331
    const ParserChar* prefixedBufferEnd,
 
2332
    const ParserChar** buffer,
 
2333
    const ParserChar* bufferEnd,
 
2334
    bool& failed,
 
2335
    const std::pair<StringHash, ENUM__altitude_mode_enum>* enumMap,
 
2336
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
2337
)
 
2338
{
 
2339
    return toEnumDataPrefix<ENUM__altitude_mode_enum, StringHash, ENUM__altitude_mode_enum__COUNT, &toEnum_ENUM__altitude_mode_enum>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
2340
}
 
2341
 
 
2342
//---------------------------------------------------------------------
 
2343
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__altitude_mode_enum (
 
2344
    const ParserChar* text,
 
2345
    size_t textLength,
 
2346
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__altitude_mode_enum*, size_t ),
 
2347
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
2348
)
 
2349
{
 
2350
    return characterData2EnumData<ENUM__altitude_mode_enum, StringHash, ENUM__altitude_mode_enum__COUNT>(text, textLength, dataFunction, ENUM__altitude_mode_enumMap, baseConversionFunc, &toEnum_ENUM__altitude_mode_enum, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__altitude_mode_enum);
 
2351
}
 
2352
 
 
2353
//---------------------------------------------------------------------
 
2354
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__altitude_mode_enum (
 
2355
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__altitude_mode_enum*, size_t ),
 
2356
    const std::pair<StringHash, ENUM__altitude_mode_enum>* enumMap,
 
2357
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
2358
    ENUM__altitude_mode_enum (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__altitude_mode_enum>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
2359
)
 
2360
{
 
2361
    return dataEnumEnd<ENUM__altitude_mode_enum, StringHash, ENUM__altitude_mode_enum__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
2362
}
 
2363
 
 
2364
//---------------------------------------------------------------------
 
2365
bool ColladaParserAutoGen15Private::_data__created( const ParserChar* text, size_t textLength )
 
2366
{
 
2367
 
 
2368
return mImpl->data__created(text, textLength);
 
2369
}
 
2370
 
 
2371
//---------------------------------------------------------------------
 
2372
bool ColladaParserAutoGen15Private::_preBegin__created( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
2373
{
 
2374
#ifdef GENERATEDSAXPARSER_VALIDATION
 
2375
    if ( mValidate )
 
2376
    {
 
2377
 
 
2378
        bool validationResult = _validateBegin__created( attributes, attributeDataPtr, validationDataPtr );
 
2379
        if ( !validationResult ) return false;
 
2380
 
 
2381
    } // validation
 
2382
#endif
 
2383
 
 
2384
    return true;
 
2385
}
 
2386
 
 
2387
//---------------------------------------------------------------------
 
2388
bool ColladaParserAutoGen15Private::_preEnd__created()
 
2389
{
 
2390
#ifdef GENERATEDSAXPARSER_VALIDATION
 
2391
    if ( mValidate )
 
2392
    {
 
2393
 
 
2394
        bool validationResult = _validateEnd__created();
 
2395
        if ( !validationResult ) return false;
 
2396
 
 
2397
    } // validation
 
2398
#endif
 
2399
 
 
2400
    return true;
 
2401
}
 
2402
 
 
2403
//---------------------------------------------------------------------
 
2404
bool ColladaParserAutoGen15Private::_freeAttributes__created( void* attributeData )
 
2405
{
 
2406
    return true;
 
2407
}
 
2408
 
 
2409
//---------------------------------------------------------------------
 
2410
bool ColladaParserAutoGen15Private::_data__keywords( const ParserChar* text, size_t textLength )
 
2411
{
 
2412
 
 
2413
return mImpl->data__keywords(text, textLength);
 
2414
}
 
2415
 
 
2416
//---------------------------------------------------------------------
 
2417
bool ColladaParserAutoGen15Private::_preBegin__keywords( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
2418
{
 
2419
#ifdef GENERATEDSAXPARSER_VALIDATION
 
2420
    if ( mValidate )
 
2421
    {
 
2422
 
 
2423
        bool validationResult = _validateBegin__keywords( attributes, attributeDataPtr, validationDataPtr );
 
2424
        if ( !validationResult ) return false;
 
2425
 
 
2426
    } // validation
 
2427
#endif
 
2428
 
 
2429
    return true;
 
2430
}
 
2431
 
 
2432
//---------------------------------------------------------------------
 
2433
bool ColladaParserAutoGen15Private::_preEnd__keywords()
 
2434
{
 
2435
#ifdef GENERATEDSAXPARSER_VALIDATION
 
2436
    if ( mValidate )
 
2437
    {
 
2438
 
 
2439
        bool validationResult = _validateEnd__keywords();
 
2440
        if ( !validationResult ) return false;
 
2441
 
 
2442
    } // validation
 
2443
#endif
 
2444
 
 
2445
    return true;
 
2446
}
 
2447
 
 
2448
//---------------------------------------------------------------------
 
2449
bool ColladaParserAutoGen15Private::_freeAttributes__keywords( void* attributeData )
 
2450
{
 
2451
    return true;
 
2452
}
 
2453
 
 
2454
//---------------------------------------------------------------------
 
2455
bool ColladaParserAutoGen15Private::_data__modified( const ParserChar* text, size_t textLength )
 
2456
{
 
2457
 
 
2458
return mImpl->data__modified(text, textLength);
 
2459
}
 
2460
 
 
2461
//---------------------------------------------------------------------
 
2462
bool ColladaParserAutoGen15Private::_preBegin__modified( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
2463
{
 
2464
#ifdef GENERATEDSAXPARSER_VALIDATION
 
2465
    if ( mValidate )
 
2466
    {
 
2467
 
 
2468
        bool validationResult = _validateBegin__modified( attributes, attributeDataPtr, validationDataPtr );
 
2469
        if ( !validationResult ) return false;
 
2470
 
 
2471
    } // validation
 
2472
#endif
 
2473
 
 
2474
    return true;
 
2475
}
 
2476
 
 
2477
//---------------------------------------------------------------------
 
2478
bool ColladaParserAutoGen15Private::_preEnd__modified()
 
2479
{
 
2480
#ifdef GENERATEDSAXPARSER_VALIDATION
 
2481
    if ( mValidate )
 
2482
    {
 
2483
 
 
2484
        bool validationResult = _validateEnd__modified();
 
2485
        if ( !validationResult ) return false;
 
2486
 
 
2487
    } // validation
 
2488
#endif
 
2489
 
 
2490
    return true;
 
2491
}
 
2492
 
 
2493
//---------------------------------------------------------------------
 
2494
bool ColladaParserAutoGen15Private::_freeAttributes__modified( void* attributeData )
 
2495
{
 
2496
    return true;
 
2497
}
 
2498
 
 
2499
//---------------------------------------------------------------------
 
2500
bool ColladaParserAutoGen15Private::_data__revision( const ParserChar* text, size_t textLength )
 
2501
{
 
2502
 
 
2503
return mImpl->data__revision(text, textLength);
 
2504
}
 
2505
 
 
2506
//---------------------------------------------------------------------
 
2507
bool ColladaParserAutoGen15Private::_preBegin__revision( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
2508
{
 
2509
#ifdef GENERATEDSAXPARSER_VALIDATION
 
2510
    if ( mValidate )
 
2511
    {
 
2512
 
 
2513
        bool validationResult = _validateBegin__revision( attributes, attributeDataPtr, validationDataPtr );
 
2514
        if ( !validationResult ) return false;
 
2515
 
 
2516
    } // validation
 
2517
#endif
 
2518
 
 
2519
    return true;
 
2520
}
 
2521
 
 
2522
//---------------------------------------------------------------------
 
2523
bool ColladaParserAutoGen15Private::_preEnd__revision()
 
2524
{
 
2525
#ifdef GENERATEDSAXPARSER_VALIDATION
 
2526
    if ( mValidate )
 
2527
    {
 
2528
 
 
2529
        bool validationResult = _validateEnd__revision();
 
2530
        if ( !validationResult ) return false;
 
2531
 
 
2532
    } // validation
 
2533
#endif
 
2534
 
 
2535
    return true;
 
2536
}
 
2537
 
 
2538
//---------------------------------------------------------------------
 
2539
bool ColladaParserAutoGen15Private::_freeAttributes__revision( void* attributeData )
 
2540
{
 
2541
    return true;
 
2542
}
 
2543
 
 
2544
//---------------------------------------------------------------------
 
2545
bool ColladaParserAutoGen15Private::_data__subject( const ParserChar* text, size_t textLength )
 
2546
{
 
2547
 
 
2548
return mImpl->data__subject(text, textLength);
 
2549
}
 
2550
 
 
2551
//---------------------------------------------------------------------
 
2552
bool ColladaParserAutoGen15Private::_preBegin__subject( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
2553
{
 
2554
#ifdef GENERATEDSAXPARSER_VALIDATION
 
2555
    if ( mValidate )
 
2556
    {
 
2557
 
 
2558
        bool validationResult = _validateBegin__subject( attributes, attributeDataPtr, validationDataPtr );
 
2559
        if ( !validationResult ) return false;
 
2560
 
 
2561
    } // validation
 
2562
#endif
 
2563
 
 
2564
    return true;
 
2565
}
 
2566
 
 
2567
//---------------------------------------------------------------------
 
2568
bool ColladaParserAutoGen15Private::_preEnd__subject()
 
2569
{
 
2570
#ifdef GENERATEDSAXPARSER_VALIDATION
 
2571
    if ( mValidate )
 
2572
    {
 
2573
 
 
2574
        bool validationResult = _validateEnd__subject();
 
2575
        if ( !validationResult ) return false;
 
2576
 
 
2577
    } // validation
 
2578
#endif
 
2579
 
 
2580
    return true;
 
2581
}
 
2582
 
 
2583
//---------------------------------------------------------------------
 
2584
bool ColladaParserAutoGen15Private::_freeAttributes__subject( void* attributeData )
 
2585
{
 
2586
    return true;
 
2587
}
 
2588
 
 
2589
//---------------------------------------------------------------------
 
2590
bool ColladaParserAutoGen15Private::_data__title( const ParserChar* text, size_t textLength )
 
2591
{
 
2592
 
 
2593
return mImpl->data__title(text, textLength);
 
2594
}
 
2595
 
 
2596
//---------------------------------------------------------------------
 
2597
bool ColladaParserAutoGen15Private::_preBegin__title( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
2598
{
 
2599
#ifdef GENERATEDSAXPARSER_VALIDATION
 
2600
    if ( mValidate )
 
2601
    {
 
2602
 
 
2603
        bool validationResult = _validateBegin__title( attributes, attributeDataPtr, validationDataPtr );
 
2604
        if ( !validationResult ) return false;
 
2605
 
 
2606
    } // validation
 
2607
#endif
 
2608
 
 
2609
    return true;
 
2610
}
 
2611
 
 
2612
//---------------------------------------------------------------------
 
2613
bool ColladaParserAutoGen15Private::_preEnd__title()
 
2614
{
 
2615
#ifdef GENERATEDSAXPARSER_VALIDATION
 
2616
    if ( mValidate )
 
2617
    {
 
2618
 
 
2619
        bool validationResult = _validateEnd__title();
 
2620
        if ( !validationResult ) return false;
 
2621
 
 
2622
    } // validation
 
2623
#endif
 
2624
 
 
2625
    return true;
 
2626
}
 
2627
 
 
2628
//---------------------------------------------------------------------
 
2629
bool ColladaParserAutoGen15Private::_freeAttributes__title( void* attributeData )
 
2630
{
 
2631
    return true;
 
2632
}
 
2633
 
 
2634
//---------------------------------------------------------------------
 
2635
const unit__AttributeData unit__AttributeData::DEFAULT = {1.0E0, (const ParserChar*)"meter"};
 
2636
 
 
2637
//---------------------------------------------------------------------
 
2638
bool ColladaParserAutoGen15Private::_data__unit( const ParserChar* text, size_t textLength )
 
2639
{
 
2640
    return true;
 
2641
}
 
2642
 
 
2643
//---------------------------------------------------------------------
 
2644
bool ColladaParserAutoGen15Private::_preBegin__unit( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
2645
{
 
2646
#ifdef GENERATEDSAXPARSER_VALIDATION
 
2647
    if ( mValidate )
 
2648
    {
 
2649
 
 
2650
        bool validationResult = _validateBegin__unit( attributes, attributeDataPtr, validationDataPtr );
 
2651
        if ( !validationResult ) return false;
 
2652
 
 
2653
    } // validation
 
2654
#endif
 
2655
 
 
2656
unit__AttributeData* attributeData = newData<unit__AttributeData>(attributeDataPtr);
 
2657
 
 
2658
const ParserChar** attributeArray = attributes.attributes;
 
2659
if ( attributeArray )
 
2660
{
 
2661
    while (true)
 
2662
    {
 
2663
        const ParserChar * attribute = *attributeArray;
 
2664
        if ( !attribute )
 
2665
            break;
 
2666
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
2667
        attributeArray++;
 
2668
        if ( !attributeArray )
 
2669
            return false;
 
2670
        const ParserChar* attributeValue = *attributeArray;
 
2671
        attributeArray++;
 
2672
 
 
2673
 
 
2674
    switch ( hash )
 
2675
    {
 
2676
    case HASH_ATTRIBUTE_METER:
 
2677
    {
 
2678
bool failed;
 
2679
attributeData->meter = GeneratedSaxParser::Utils::toFloat(attributeValue, failed);
 
2680
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
2681
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
2682
        HASH_ELEMENT_UNIT,
 
2683
        HASH_ATTRIBUTE_METER,
 
2684
        attributeValue))
 
2685
{
 
2686
    return false;
 
2687
}
 
2688
 
 
2689
    break;
 
2690
    }
 
2691
    case HASH_ATTRIBUTE_NAME:
 
2692
    {
 
2693
 
 
2694
attributeData->name = attributeValue;
 
2695
#ifdef GENERATEDSAXPARSER_VALIDATION
 
2696
    if ( mValidate )
 
2697
    {
 
2698
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKEN(attributeData->name, strlen(attributeData->name));
 
2699
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
2700
    {
 
2701
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
2702
            simpleTypeValidationResult,
 
2703
            HASH_ELEMENT_UNIT,
 
2704
            HASH_ATTRIBUTE_NAME,
 
2705
            attributeValue) )
 
2706
        {
 
2707
            return false;
 
2708
        }
 
2709
    }
 
2710
    } // validation
 
2711
#endif
 
2712
 
 
2713
    break;
 
2714
    }
 
2715
    default:
 
2716
    {
 
2717
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_UNIT, attribute, attributeValue))
 
2718
            {return false;}
 
2719
    }
 
2720
    }
 
2721
    }
 
2722
}
 
2723
 
 
2724
 
 
2725
    return true;
 
2726
}
 
2727
 
 
2728
//---------------------------------------------------------------------
 
2729
bool ColladaParserAutoGen15Private::_preEnd__unit()
 
2730
{
 
2731
#ifdef GENERATEDSAXPARSER_VALIDATION
 
2732
    if ( mValidate )
 
2733
    {
 
2734
 
 
2735
        bool validationResult = _validateEnd__unit();
 
2736
        if ( !validationResult ) return false;
 
2737
 
 
2738
    } // validation
 
2739
#endif
 
2740
 
 
2741
    return true;
 
2742
}
 
2743
 
 
2744
//---------------------------------------------------------------------
 
2745
bool ColladaParserAutoGen15Private::_freeAttributes__unit( void* attributeData )
 
2746
{
 
2747
    unit__AttributeData* typedAttributeData = static_cast<unit__AttributeData*>(attributeData);
 
2748
 
 
2749
    typedAttributeData->~unit__AttributeData();
 
2750
 
 
2751
    return true;
 
2752
}
 
2753
 
 
2754
//---------------------------------------------------------------------
 
2755
bool ColladaParserAutoGen15Private::_data__up_axis( const ParserChar* text, size_t textLength )
 
2756
{
 
2757
if (!mLastIncompleteFragmentInCharacterData)
 
2758
{
 
2759
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
2760
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
2761
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
2762
}
 
2763
else
 
2764
{
 
2765
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
2766
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
2767
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
2768
        mLastIncompleteFragmentInCharacterData = tmp;
 
2769
    }
 
2770
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
2771
    mEndOfDataInCurrentObjectOnStack += textLength;
 
2772
}
 
2773
return true;
 
2774
}
 
2775
 
 
2776
//---------------------------------------------------------------------
 
2777
bool ColladaParserAutoGen15Private::_preBegin__up_axis( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
2778
{
 
2779
#ifdef GENERATEDSAXPARSER_VALIDATION
 
2780
    if ( mValidate )
 
2781
    {
 
2782
 
 
2783
        bool validationResult = _validateBegin__up_axis( attributes, attributeDataPtr, validationDataPtr );
 
2784
        if ( !validationResult ) return false;
 
2785
 
 
2786
    } // validation
 
2787
#endif
 
2788
 
 
2789
    return true;
 
2790
}
 
2791
 
 
2792
//---------------------------------------------------------------------
 
2793
bool ColladaParserAutoGen15Private::_preEnd__up_axis()
 
2794
{
 
2795
#ifdef GENERATEDSAXPARSER_VALIDATION
 
2796
    if ( mValidate )
 
2797
    {
 
2798
 
 
2799
        bool validationResult = _validateEnd__up_axis();
 
2800
        if ( !validationResult ) return false;
 
2801
 
 
2802
    } // validation
 
2803
#endif
 
2804
 
 
2805
bool failed;
 
2806
ENUM__up_axis_enum parameter = Utils::toEnum<ENUM__up_axis_enum, StringHash, ENUM__up_axis_enum__COUNT>((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed, ENUM__up_axis_enumMap, Utils::calculateStringHash);
 
2807
bool returnValue;
 
2808
if (!failed)
 
2809
{
 
2810
    returnValue = mImpl->data__up_axis(parameter);
 
2811
}
 
2812
else
 
2813
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_UP_AXIS, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
2814
if (mLastIncompleteFragmentInCharacterData)
 
2815
    mStackMemoryManager.deleteObject();
 
2816
mLastIncompleteFragmentInCharacterData = 0;
 
2817
mEndOfDataInCurrentObjectOnStack = 0;
 
2818
return returnValue;
 
2819
 
 
2820
}
 
2821
 
 
2822
//---------------------------------------------------------------------
 
2823
bool ColladaParserAutoGen15Private::_freeAttributes__up_axis( void* attributeData )
 
2824
{
 
2825
    return true;
 
2826
}
 
2827
 
 
2828
//---------------------------------------------------------------------
 
2829
ENUM__up_axis_enum ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__up_axis_enum (
 
2830
    const ParserChar* prefixedBuffer,
 
2831
    const ParserChar* prefixedBufferEnd,
 
2832
    const ParserChar** buffer,
 
2833
    const ParserChar* bufferEnd,
 
2834
    bool& failed,
 
2835
    const std::pair<StringHash, ENUM__up_axis_enum>* enumMap,
 
2836
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
2837
)
 
2838
{
 
2839
    return toEnumDataPrefix<ENUM__up_axis_enum, StringHash, ENUM__up_axis_enum__COUNT, &toEnum_ENUM__up_axis_enum>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
2840
}
 
2841
 
 
2842
//---------------------------------------------------------------------
 
2843
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__up_axis_enum (
 
2844
    const ParserChar* text,
 
2845
    size_t textLength,
 
2846
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__up_axis_enum*, size_t ),
 
2847
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
2848
)
 
2849
{
 
2850
    return characterData2EnumData<ENUM__up_axis_enum, StringHash, ENUM__up_axis_enum__COUNT>(text, textLength, dataFunction, ENUM__up_axis_enumMap, baseConversionFunc, &toEnum_ENUM__up_axis_enum, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__up_axis_enum);
 
2851
}
 
2852
 
 
2853
//---------------------------------------------------------------------
 
2854
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__up_axis_enum (
 
2855
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__up_axis_enum*, size_t ),
 
2856
    const std::pair<StringHash, ENUM__up_axis_enum>* enumMap,
 
2857
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
2858
    ENUM__up_axis_enum (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__up_axis_enum>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
2859
)
 
2860
{
 
2861
    return dataEnumEnd<ENUM__up_axis_enum, StringHash, ENUM__up_axis_enum__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
2862
}
 
2863
 
 
2864
//---------------------------------------------------------------------
 
2865
const extra__AttributeData extra__AttributeData::DEFAULT = {0, 0, 0};
 
2866
 
 
2867
//---------------------------------------------------------------------
 
2868
bool ColladaParserAutoGen15Private::_data__extra( const ParserChar* text, size_t textLength )
 
2869
{
 
2870
    return true;
 
2871
}
 
2872
 
 
2873
//---------------------------------------------------------------------
 
2874
bool ColladaParserAutoGen15Private::_preBegin__extra( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
2875
{
 
2876
#ifdef GENERATEDSAXPARSER_VALIDATION
 
2877
    if ( mValidate )
 
2878
    {
 
2879
 
 
2880
        bool validationResult = _validateBegin__extra( attributes, attributeDataPtr, validationDataPtr );
 
2881
        if ( !validationResult ) return false;
 
2882
 
 
2883
    } // validation
 
2884
#endif
 
2885
 
 
2886
extra__AttributeData* attributeData = newData<extra__AttributeData>(attributeDataPtr);
 
2887
 
 
2888
const ParserChar** attributeArray = attributes.attributes;
 
2889
if ( attributeArray )
 
2890
{
 
2891
    while (true)
 
2892
    {
 
2893
        const ParserChar * attribute = *attributeArray;
 
2894
        if ( !attribute )
 
2895
            break;
 
2896
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
2897
        attributeArray++;
 
2898
        if ( !attributeArray )
 
2899
            return false;
 
2900
        const ParserChar* attributeValue = *attributeArray;
 
2901
        attributeArray++;
 
2902
 
 
2903
 
 
2904
    switch ( hash )
 
2905
    {
 
2906
    case HASH_ATTRIBUTE_ID:
 
2907
    {
 
2908
 
 
2909
attributeData->id = attributeValue;
 
2910
 
 
2911
    break;
 
2912
    }
 
2913
    case HASH_ATTRIBUTE_NAME:
 
2914
    {
 
2915
 
 
2916
attributeData->name = attributeValue;
 
2917
 
 
2918
    break;
 
2919
    }
 
2920
    case HASH_ATTRIBUTE_TYPE:
 
2921
    {
 
2922
 
 
2923
attributeData->type = attributeValue;
 
2924
#ifdef GENERATEDSAXPARSER_VALIDATION
 
2925
    if ( mValidate )
 
2926
    {
 
2927
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKEN(attributeData->type, strlen(attributeData->type));
 
2928
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
2929
    {
 
2930
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
2931
            simpleTypeValidationResult,
 
2932
            HASH_ELEMENT_EXTRA,
 
2933
            HASH_ATTRIBUTE_TYPE,
 
2934
            attributeValue) )
 
2935
        {
 
2936
            return false;
 
2937
        }
 
2938
    }
 
2939
    } // validation
 
2940
#endif
 
2941
 
 
2942
    break;
 
2943
    }
 
2944
    default:
 
2945
    {
 
2946
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_EXTRA, attribute, attributeValue))
 
2947
            {return false;}
 
2948
    }
 
2949
    }
 
2950
    }
 
2951
}
 
2952
 
 
2953
 
 
2954
    return true;
 
2955
}
 
2956
 
 
2957
//---------------------------------------------------------------------
 
2958
bool ColladaParserAutoGen15Private::_preEnd__extra()
 
2959
{
 
2960
#ifdef GENERATEDSAXPARSER_VALIDATION
 
2961
    if ( mValidate )
 
2962
    {
 
2963
 
 
2964
        bool validationResult = _validateEnd__extra();
 
2965
        if ( !validationResult ) return false;
 
2966
 
 
2967
    } // validation
 
2968
#endif
 
2969
 
 
2970
    return true;
 
2971
}
 
2972
 
 
2973
//---------------------------------------------------------------------
 
2974
bool ColladaParserAutoGen15Private::_freeAttributes__extra( void* attributeData )
 
2975
{
 
2976
    extra__AttributeData* typedAttributeData = static_cast<extra__AttributeData*>(attributeData);
 
2977
 
 
2978
    typedAttributeData->~extra__AttributeData();
 
2979
 
 
2980
    return true;
 
2981
}
 
2982
 
 
2983
//---------------------------------------------------------------------
 
2984
const technique____technique_type__AttributeData technique____technique_type__AttributeData::DEFAULT = {0};
 
2985
 
 
2986
//---------------------------------------------------------------------
 
2987
bool ColladaParserAutoGen15Private::_data__technique____technique_type( const ParserChar* text, size_t textLength )
 
2988
{
 
2989
    return true;
 
2990
}
 
2991
 
 
2992
//---------------------------------------------------------------------
 
2993
bool ColladaParserAutoGen15Private::_preBegin__technique____technique_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
2994
{
 
2995
#ifdef GENERATEDSAXPARSER_VALIDATION
 
2996
    if ( mValidate )
 
2997
    {
 
2998
 
 
2999
        bool validationResult = _validateBegin__technique____technique_type( attributes, attributeDataPtr, validationDataPtr );
 
3000
        if ( !validationResult ) return false;
 
3001
 
 
3002
    } // validation
 
3003
#endif
 
3004
 
 
3005
technique____technique_type__AttributeData* attributeData = newData<technique____technique_type__AttributeData>(attributeDataPtr);
 
3006
 
 
3007
const ParserChar** attributeArray = attributes.attributes;
 
3008
if ( attributeArray )
 
3009
{
 
3010
    while (true)
 
3011
    {
 
3012
        const ParserChar * attribute = *attributeArray;
 
3013
        if ( !attribute )
 
3014
            break;
 
3015
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
3016
        attributeArray++;
 
3017
        if ( !attributeArray )
 
3018
            return false;
 
3019
        const ParserChar* attributeValue = *attributeArray;
 
3020
        attributeArray++;
 
3021
 
 
3022
 
 
3023
    switch ( hash )
 
3024
    {
 
3025
    case HASH_ATTRIBUTE_PROFILE:
 
3026
    {
 
3027
 
 
3028
attributeData->profile = attributeValue;
 
3029
#ifdef GENERATEDSAXPARSER_VALIDATION
 
3030
    if ( mValidate )
 
3031
    {
 
3032
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKEN(attributeData->profile, strlen(attributeData->profile));
 
3033
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
3034
    {
 
3035
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
3036
            simpleTypeValidationResult,
 
3037
            HASH_ELEMENT_TECHNIQUE,
 
3038
            HASH_ATTRIBUTE_PROFILE,
 
3039
            attributeValue) )
 
3040
        {
 
3041
            return false;
 
3042
        }
 
3043
    }
 
3044
    } // validation
 
3045
#endif
 
3046
 
 
3047
    break;
 
3048
    }
 
3049
    default:
 
3050
    {
 
3051
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_TECHNIQUE, attribute, attributeValue))
 
3052
            {return false;}
 
3053
    }
 
3054
    }
 
3055
    }
 
3056
}
 
3057
if ( !attributeData->profile )
 
3058
{
 
3059
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_TECHNIQUE, HASH_ATTRIBUTE_PROFILE, 0 ) )
 
3060
        return false;
 
3061
}
 
3062
 
 
3063
 
 
3064
    return true;
 
3065
}
 
3066
 
 
3067
//---------------------------------------------------------------------
 
3068
bool ColladaParserAutoGen15Private::_preEnd__technique____technique_type()
 
3069
{
 
3070
#ifdef GENERATEDSAXPARSER_VALIDATION
 
3071
    if ( mValidate )
 
3072
    {
 
3073
 
 
3074
        bool validationResult = _validateEnd__technique____technique_type();
 
3075
        if ( !validationResult ) return false;
 
3076
 
 
3077
    } // validation
 
3078
#endif
 
3079
 
 
3080
    return true;
 
3081
}
 
3082
 
 
3083
//---------------------------------------------------------------------
 
3084
bool ColladaParserAutoGen15Private::_freeAttributes__technique____technique_type( void* attributeData )
 
3085
{
 
3086
    technique____technique_type__AttributeData* typedAttributeData = static_cast<technique____technique_type__AttributeData*>(attributeData);
 
3087
 
 
3088
    typedAttributeData->~technique____technique_type__AttributeData();
 
3089
 
 
3090
    return true;
 
3091
}
 
3092
 
 
3093
//---------------------------------------------------------------------
 
3094
const library_animations__AttributeData library_animations__AttributeData::DEFAULT = {0, 0};
 
3095
 
 
3096
//---------------------------------------------------------------------
 
3097
bool ColladaParserAutoGen15Private::_data__library_animations( const ParserChar* text, size_t textLength )
 
3098
{
 
3099
    return true;
 
3100
}
 
3101
 
 
3102
//---------------------------------------------------------------------
 
3103
bool ColladaParserAutoGen15Private::_preBegin__library_animations( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
3104
{
 
3105
#ifdef GENERATEDSAXPARSER_VALIDATION
 
3106
    if ( mValidate )
 
3107
    {
 
3108
 
 
3109
        bool validationResult = _validateBegin__library_animations( attributes, attributeDataPtr, validationDataPtr );
 
3110
        if ( !validationResult ) return false;
 
3111
 
 
3112
    } // validation
 
3113
#endif
 
3114
 
 
3115
library_animations__AttributeData* attributeData = newData<library_animations__AttributeData>(attributeDataPtr);
 
3116
 
 
3117
const ParserChar** attributeArray = attributes.attributes;
 
3118
if ( attributeArray )
 
3119
{
 
3120
    while (true)
 
3121
    {
 
3122
        const ParserChar * attribute = *attributeArray;
 
3123
        if ( !attribute )
 
3124
            break;
 
3125
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
3126
        attributeArray++;
 
3127
        if ( !attributeArray )
 
3128
            return false;
 
3129
        const ParserChar* attributeValue = *attributeArray;
 
3130
        attributeArray++;
 
3131
 
 
3132
 
 
3133
    switch ( hash )
 
3134
    {
 
3135
    case HASH_ATTRIBUTE_ID:
 
3136
    {
 
3137
 
 
3138
attributeData->id = attributeValue;
 
3139
 
 
3140
    break;
 
3141
    }
 
3142
    case HASH_ATTRIBUTE_NAME:
 
3143
    {
 
3144
 
 
3145
attributeData->name = attributeValue;
 
3146
 
 
3147
    break;
 
3148
    }
 
3149
    default:
 
3150
    {
 
3151
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIBRARY_ANIMATIONS, attribute, attributeValue))
 
3152
            {return false;}
 
3153
    }
 
3154
    }
 
3155
    }
 
3156
}
 
3157
 
 
3158
 
 
3159
    return true;
 
3160
}
 
3161
 
 
3162
//---------------------------------------------------------------------
 
3163
bool ColladaParserAutoGen15Private::_preEnd__library_animations()
 
3164
{
 
3165
#ifdef GENERATEDSAXPARSER_VALIDATION
 
3166
    if ( mValidate )
 
3167
    {
 
3168
 
 
3169
        bool validationResult = _validateEnd__library_animations();
 
3170
        if ( !validationResult ) return false;
 
3171
 
 
3172
    } // validation
 
3173
#endif
 
3174
 
 
3175
    return true;
 
3176
}
 
3177
 
 
3178
//---------------------------------------------------------------------
 
3179
bool ColladaParserAutoGen15Private::_freeAttributes__library_animations( void* attributeData )
 
3180
{
 
3181
    library_animations__AttributeData* typedAttributeData = static_cast<library_animations__AttributeData*>(attributeData);
 
3182
 
 
3183
    typedAttributeData->~library_animations__AttributeData();
 
3184
 
 
3185
    return true;
 
3186
}
 
3187
 
 
3188
//---------------------------------------------------------------------
 
3189
const animation__AttributeData animation__AttributeData::DEFAULT = {0, 0};
 
3190
 
 
3191
//---------------------------------------------------------------------
 
3192
bool ColladaParserAutoGen15Private::_data__animation( const ParserChar* text, size_t textLength )
 
3193
{
 
3194
    return true;
 
3195
}
 
3196
 
 
3197
//---------------------------------------------------------------------
 
3198
bool ColladaParserAutoGen15Private::_preBegin__animation( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
3199
{
 
3200
#ifdef GENERATEDSAXPARSER_VALIDATION
 
3201
    if ( mValidate )
 
3202
    {
 
3203
 
 
3204
        bool validationResult = _validateBegin__animation( attributes, attributeDataPtr, validationDataPtr );
 
3205
        if ( !validationResult ) return false;
 
3206
 
 
3207
    } // validation
 
3208
#endif
 
3209
 
 
3210
animation__AttributeData* attributeData = newData<animation__AttributeData>(attributeDataPtr);
 
3211
 
 
3212
const ParserChar** attributeArray = attributes.attributes;
 
3213
if ( attributeArray )
 
3214
{
 
3215
    while (true)
 
3216
    {
 
3217
        const ParserChar * attribute = *attributeArray;
 
3218
        if ( !attribute )
 
3219
            break;
 
3220
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
3221
        attributeArray++;
 
3222
        if ( !attributeArray )
 
3223
            return false;
 
3224
        const ParserChar* attributeValue = *attributeArray;
 
3225
        attributeArray++;
 
3226
 
 
3227
 
 
3228
    switch ( hash )
 
3229
    {
 
3230
    case HASH_ATTRIBUTE_ID:
 
3231
    {
 
3232
 
 
3233
attributeData->id = attributeValue;
 
3234
 
 
3235
    break;
 
3236
    }
 
3237
    case HASH_ATTRIBUTE_NAME:
 
3238
    {
 
3239
 
 
3240
attributeData->name = attributeValue;
 
3241
 
 
3242
    break;
 
3243
    }
 
3244
    default:
 
3245
    {
 
3246
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_ANIMATION, attribute, attributeValue))
 
3247
            {return false;}
 
3248
    }
 
3249
    }
 
3250
    }
 
3251
}
 
3252
 
 
3253
 
 
3254
    return true;
 
3255
}
 
3256
 
 
3257
//---------------------------------------------------------------------
 
3258
bool ColladaParserAutoGen15Private::_preEnd__animation()
 
3259
{
 
3260
#ifdef GENERATEDSAXPARSER_VALIDATION
 
3261
    if ( mValidate )
 
3262
    {
 
3263
 
 
3264
        bool validationResult = _validateEnd__animation();
 
3265
        if ( !validationResult ) return false;
 
3266
 
 
3267
    } // validation
 
3268
#endif
 
3269
 
 
3270
    return true;
 
3271
}
 
3272
 
 
3273
//---------------------------------------------------------------------
 
3274
bool ColladaParserAutoGen15Private::_freeAttributes__animation( void* attributeData )
 
3275
{
 
3276
    animation__AttributeData* typedAttributeData = static_cast<animation__AttributeData*>(attributeData);
 
3277
 
 
3278
    typedAttributeData->~animation__AttributeData();
 
3279
 
 
3280
    return true;
 
3281
}
 
3282
 
 
3283
//---------------------------------------------------------------------
 
3284
const source__AttributeData source__AttributeData::DEFAULT = {0, 0};
 
3285
 
 
3286
//---------------------------------------------------------------------
 
3287
bool ColladaParserAutoGen15Private::_data__source( const ParserChar* text, size_t textLength )
 
3288
{
 
3289
    return true;
 
3290
}
 
3291
 
 
3292
//---------------------------------------------------------------------
 
3293
bool ColladaParserAutoGen15Private::_preBegin__source( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
3294
{
 
3295
#ifdef GENERATEDSAXPARSER_VALIDATION
 
3296
    if ( mValidate )
 
3297
    {
 
3298
 
 
3299
        bool validationResult = _validateBegin__source( attributes, attributeDataPtr, validationDataPtr );
 
3300
        if ( !validationResult ) return false;
 
3301
 
 
3302
    } // validation
 
3303
#endif
 
3304
 
 
3305
source__AttributeData* attributeData = newData<source__AttributeData>(attributeDataPtr);
 
3306
 
 
3307
const ParserChar** attributeArray = attributes.attributes;
 
3308
if ( attributeArray )
 
3309
{
 
3310
    while (true)
 
3311
    {
 
3312
        const ParserChar * attribute = *attributeArray;
 
3313
        if ( !attribute )
 
3314
            break;
 
3315
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
3316
        attributeArray++;
 
3317
        if ( !attributeArray )
 
3318
            return false;
 
3319
        const ParserChar* attributeValue = *attributeArray;
 
3320
        attributeArray++;
 
3321
 
 
3322
 
 
3323
    switch ( hash )
 
3324
    {
 
3325
    case HASH_ATTRIBUTE_ID:
 
3326
    {
 
3327
 
 
3328
attributeData->id = attributeValue;
 
3329
 
 
3330
    break;
 
3331
    }
 
3332
    case HASH_ATTRIBUTE_NAME:
 
3333
    {
 
3334
 
 
3335
attributeData->name = attributeValue;
 
3336
 
 
3337
    break;
 
3338
    }
 
3339
    default:
 
3340
    {
 
3341
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SOURCE, attribute, attributeValue))
 
3342
            {return false;}
 
3343
    }
 
3344
    }
 
3345
    }
 
3346
}
 
3347
if ( !attributeData->id )
 
3348
{
 
3349
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_SOURCE, HASH_ATTRIBUTE_ID, 0 ) )
 
3350
        return false;
 
3351
}
 
3352
 
 
3353
 
 
3354
    return true;
 
3355
}
 
3356
 
 
3357
//---------------------------------------------------------------------
 
3358
bool ColladaParserAutoGen15Private::_preEnd__source()
 
3359
{
 
3360
#ifdef GENERATEDSAXPARSER_VALIDATION
 
3361
    if ( mValidate )
 
3362
    {
 
3363
 
 
3364
        bool validationResult = _validateEnd__source();
 
3365
        if ( !validationResult ) return false;
 
3366
 
 
3367
    } // validation
 
3368
#endif
 
3369
 
 
3370
    return true;
 
3371
}
 
3372
 
 
3373
//---------------------------------------------------------------------
 
3374
bool ColladaParserAutoGen15Private::_freeAttributes__source( void* attributeData )
 
3375
{
 
3376
    source__AttributeData* typedAttributeData = static_cast<source__AttributeData*>(attributeData);
 
3377
 
 
3378
    typedAttributeData->~source__AttributeData();
 
3379
 
 
3380
    return true;
 
3381
}
 
3382
 
 
3383
//---------------------------------------------------------------------
 
3384
const token_array__AttributeData token_array__AttributeData::DEFAULT = {0, 0, 0, 0};
 
3385
 
 
3386
//---------------------------------------------------------------------
 
3387
bool ColladaParserAutoGen15Private::_data__token_array( const ParserChar* text, size_t textLength )
 
3388
{
 
3389
#ifdef GENERATEDSAXPARSER_VALIDATION
 
3390
    if ( mValidate )
 
3391
    {
 
3392
return characterData2StringData(text, textLength, &ColladaParserAutoGen15::data__token_array, 0, 0, 0);
 
3393
    }
 
3394
    else
 
3395
    {
 
3396
return characterData2StringData(text, textLength, &ColladaParserAutoGen15::data__token_array);
 
3397
    }
 
3398
#else
 
3399
    {
 
3400
return characterData2StringData(text, textLength, &ColladaParserAutoGen15::data__token_array);
 
3401
    } // validation
 
3402
#endif
 
3403
 
 
3404
}
 
3405
 
 
3406
//---------------------------------------------------------------------
 
3407
bool ColladaParserAutoGen15Private::_preBegin__token_array( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
3408
{
 
3409
#ifdef GENERATEDSAXPARSER_VALIDATION
 
3410
    if ( mValidate )
 
3411
    {
 
3412
 
 
3413
        bool validationResult = _validateBegin__token_array( attributes, attributeDataPtr, validationDataPtr );
 
3414
        if ( !validationResult ) return false;
 
3415
 
 
3416
    } // validation
 
3417
#endif
 
3418
 
 
3419
token_array__AttributeData* attributeData = newData<token_array__AttributeData>(attributeDataPtr);
 
3420
 
 
3421
const ParserChar** attributeArray = attributes.attributes;
 
3422
if ( attributeArray )
 
3423
{
 
3424
    while (true)
 
3425
    {
 
3426
        const ParserChar * attribute = *attributeArray;
 
3427
        if ( !attribute )
 
3428
            break;
 
3429
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
3430
        attributeArray++;
 
3431
        if ( !attributeArray )
 
3432
            return false;
 
3433
        const ParserChar* attributeValue = *attributeArray;
 
3434
        attributeArray++;
 
3435
 
 
3436
 
 
3437
    switch ( hash )
 
3438
    {
 
3439
    case HASH_ATTRIBUTE_ID:
 
3440
    {
 
3441
 
 
3442
attributeData->id = attributeValue;
 
3443
 
 
3444
    break;
 
3445
    }
 
3446
    case HASH_ATTRIBUTE_NAME:
 
3447
    {
 
3448
 
 
3449
attributeData->name = attributeValue;
 
3450
 
 
3451
    break;
 
3452
    }
 
3453
    case HASH_ATTRIBUTE_COUNT:
 
3454
    {
 
3455
bool failed;
 
3456
attributeData->count = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
3457
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
3458
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
3459
        HASH_ELEMENT_TOKEN_ARRAY,
 
3460
        HASH_ATTRIBUTE_COUNT,
 
3461
        attributeValue))
 
3462
{
 
3463
    return false;
 
3464
}
 
3465
if ( !failed )
 
3466
    attributeData->present_attributes |= token_array__AttributeData::ATTRIBUTE_COUNT_PRESENT;
 
3467
 
 
3468
    break;
 
3469
    }
 
3470
    default:
 
3471
    {
 
3472
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_TOKEN_ARRAY, attribute, attributeValue))
 
3473
            {return false;}
 
3474
    }
 
3475
    }
 
3476
    }
 
3477
}
 
3478
if ( (attributeData->present_attributes & token_array__AttributeData::ATTRIBUTE_COUNT_PRESENT) == 0 )
 
3479
{
 
3480
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_TOKEN_ARRAY, HASH_ATTRIBUTE_COUNT, 0 ) )
 
3481
        return false;
 
3482
}
 
3483
 
 
3484
 
 
3485
    return true;
 
3486
}
 
3487
 
 
3488
//---------------------------------------------------------------------
 
3489
bool ColladaParserAutoGen15Private::_preEnd__token_array()
 
3490
{
 
3491
#ifdef GENERATEDSAXPARSER_VALIDATION
 
3492
    if ( mValidate )
 
3493
    {
 
3494
 
 
3495
        bool validationResult = _validateEnd__token_array();
 
3496
        if ( !validationResult ) return false;
 
3497
 
 
3498
    } // validation
 
3499
#endif
 
3500
 
 
3501
#ifdef GENERATEDSAXPARSER_VALIDATION
 
3502
    if ( mValidate )
 
3503
    {
 
3504
bool returnValue = stringListDataEnd( &ColladaParserAutoGen15::data__token_array, 0, 0, 0 );
 
3505
        return returnValue;
 
3506
    }
 
3507
    else
 
3508
    {
 
3509
return stringListDataEnd( &ColladaParserAutoGen15::data__token_array );
 
3510
    }
 
3511
#else
 
3512
    {
 
3513
return stringListDataEnd( &ColladaParserAutoGen15::data__token_array );
 
3514
    } // validation
 
3515
#endif
 
3516
 
 
3517
}
 
3518
 
 
3519
//---------------------------------------------------------------------
 
3520
bool ColladaParserAutoGen15Private::_freeAttributes__token_array( void* attributeData )
 
3521
{
 
3522
    token_array__AttributeData* typedAttributeData = static_cast<token_array__AttributeData*>(attributeData);
 
3523
 
 
3524
    typedAttributeData->~token_array__AttributeData();
 
3525
 
 
3526
    return true;
 
3527
}
 
3528
 
 
3529
//---------------------------------------------------------------------
 
3530
const IDREF_array__AttributeData IDREF_array__AttributeData::DEFAULT = {0, 0, 0, 0};
 
3531
 
 
3532
//---------------------------------------------------------------------
 
3533
bool ColladaParserAutoGen15Private::_data__IDREF_array( const ParserChar* text, size_t textLength )
 
3534
{
 
3535
#ifdef GENERATEDSAXPARSER_VALIDATION
 
3536
    if ( mValidate )
 
3537
    {
 
3538
        IDREF_array__ValidationData* validationData = (IDREF_array__ValidationData*)mValidationDataStack.top();
 
3539
        DISABLE_WARNING_UNUSED(validationData)
 
3540
return characterData2StringData(text, textLength, &ColladaParserAutoGen15::data__IDREF_array, &validate__IDREFS__stream, &validationData->validationWholeSize, 0);
 
3541
    }
 
3542
    else
 
3543
    {
 
3544
return characterData2StringData(text, textLength, &ColladaParserAutoGen15::data__IDREF_array);
 
3545
    }
 
3546
#else
 
3547
    {
 
3548
return characterData2StringData(text, textLength, &ColladaParserAutoGen15::data__IDREF_array);
 
3549
    } // validation
 
3550
#endif
 
3551
 
 
3552
}
 
3553
 
 
3554
//---------------------------------------------------------------------
 
3555
bool ColladaParserAutoGen15Private::_preBegin__IDREF_array( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
3556
{
 
3557
#ifdef GENERATEDSAXPARSER_VALIDATION
 
3558
    if ( mValidate )
 
3559
    {
 
3560
 
 
3561
        bool validationResult = _validateBegin__IDREF_array( attributes, attributeDataPtr, validationDataPtr );
 
3562
        if ( !validationResult ) return false;
 
3563
 
 
3564
    } // validation
 
3565
#endif
 
3566
 
 
3567
IDREF_array__AttributeData* attributeData = newData<IDREF_array__AttributeData>(attributeDataPtr);
 
3568
 
 
3569
const ParserChar** attributeArray = attributes.attributes;
 
3570
if ( attributeArray )
 
3571
{
 
3572
    while (true)
 
3573
    {
 
3574
        const ParserChar * attribute = *attributeArray;
 
3575
        if ( !attribute )
 
3576
            break;
 
3577
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
3578
        attributeArray++;
 
3579
        if ( !attributeArray )
 
3580
            return false;
 
3581
        const ParserChar* attributeValue = *attributeArray;
 
3582
        attributeArray++;
 
3583
 
 
3584
 
 
3585
    switch ( hash )
 
3586
    {
 
3587
    case HASH_ATTRIBUTE_ID:
 
3588
    {
 
3589
 
 
3590
attributeData->id = attributeValue;
 
3591
 
 
3592
    break;
 
3593
    }
 
3594
    case HASH_ATTRIBUTE_NAME:
 
3595
    {
 
3596
 
 
3597
attributeData->name = attributeValue;
 
3598
 
 
3599
    break;
 
3600
    }
 
3601
    case HASH_ATTRIBUTE_COUNT:
 
3602
    {
 
3603
bool failed;
 
3604
attributeData->count = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
3605
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
3606
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
3607
        HASH_ELEMENT_IDREF_ARRAY,
 
3608
        HASH_ATTRIBUTE_COUNT,
 
3609
        attributeValue))
 
3610
{
 
3611
    return false;
 
3612
}
 
3613
if ( !failed )
 
3614
    attributeData->present_attributes |= IDREF_array__AttributeData::ATTRIBUTE_COUNT_PRESENT;
 
3615
 
 
3616
    break;
 
3617
    }
 
3618
    default:
 
3619
    {
 
3620
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_IDREF_ARRAY, attribute, attributeValue))
 
3621
            {return false;}
 
3622
    }
 
3623
    }
 
3624
    }
 
3625
}
 
3626
if ( (attributeData->present_attributes & IDREF_array__AttributeData::ATTRIBUTE_COUNT_PRESENT) == 0 )
 
3627
{
 
3628
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_IDREF_ARRAY, HASH_ATTRIBUTE_COUNT, 0 ) )
 
3629
        return false;
 
3630
}
 
3631
 
 
3632
 
 
3633
    return true;
 
3634
}
 
3635
 
 
3636
//---------------------------------------------------------------------
 
3637
bool ColladaParserAutoGen15Private::_preEnd__IDREF_array()
 
3638
{
 
3639
#ifdef GENERATEDSAXPARSER_VALIDATION
 
3640
    if ( mValidate )
 
3641
    {
 
3642
 
 
3643
        bool validationResult = _validateEnd__IDREF_array();
 
3644
        if ( !validationResult ) return false;
 
3645
 
 
3646
    } // validation
 
3647
#endif
 
3648
 
 
3649
#ifdef GENERATEDSAXPARSER_VALIDATION
 
3650
    if ( mValidate )
 
3651
    {
 
3652
        IDREF_array__ValidationData* validationData = (IDREF_array__ValidationData*)mValidationDataStack.top();
 
3653
        DISABLE_WARNING_UNUSED(validationData)
 
3654
bool returnValue = stringListDataEnd( &ColladaParserAutoGen15::data__IDREF_array, &validate__IDREFS__streamEnd, &validationData->validationWholeSize, 0 );
 
3655
        ParserError::ErrorType simpleTypeValidationResult = validate__IDREFS(0, (*(&validationData->validationWholeSize)));
 
3656
        mValidationDataStack.deleteObject();
 
3657
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
3658
        {
 
3659
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
3660
                simpleTypeValidationResult,
 
3661
                HASH_ELEMENT_IDREF_ARRAY,
 
3662
                (ParserChar*)0, 0 ) )
 
3663
            {
 
3664
                return false;
 
3665
            }
 
3666
        }
 
3667
        return returnValue;
 
3668
    }
 
3669
    else
 
3670
    {
 
3671
return stringListDataEnd( &ColladaParserAutoGen15::data__IDREF_array );
 
3672
    }
 
3673
#else
 
3674
    {
 
3675
return stringListDataEnd( &ColladaParserAutoGen15::data__IDREF_array );
 
3676
    } // validation
 
3677
#endif
 
3678
 
 
3679
}
 
3680
 
 
3681
//---------------------------------------------------------------------
 
3682
bool ColladaParserAutoGen15Private::_freeAttributes__IDREF_array( void* attributeData )
 
3683
{
 
3684
    IDREF_array__AttributeData* typedAttributeData = static_cast<IDREF_array__AttributeData*>(attributeData);
 
3685
 
 
3686
    typedAttributeData->~IDREF_array__AttributeData();
 
3687
 
 
3688
    return true;
 
3689
}
 
3690
 
 
3691
//---------------------------------------------------------------------
 
3692
const Name_array__AttributeData Name_array__AttributeData::DEFAULT = {0, 0, 0, 0};
 
3693
 
 
3694
//---------------------------------------------------------------------
 
3695
bool ColladaParserAutoGen15Private::_data__Name_array( const ParserChar* text, size_t textLength )
 
3696
{
 
3697
#ifdef GENERATEDSAXPARSER_VALIDATION
 
3698
    if ( mValidate )
 
3699
    {
 
3700
return characterData2StringData(text, textLength, &ColladaParserAutoGen15::data__Name_array, 0, 0, &validate__Name);
 
3701
    }
 
3702
    else
 
3703
    {
 
3704
return characterData2StringData(text, textLength, &ColladaParserAutoGen15::data__Name_array);
 
3705
    }
 
3706
#else
 
3707
    {
 
3708
return characterData2StringData(text, textLength, &ColladaParserAutoGen15::data__Name_array);
 
3709
    } // validation
 
3710
#endif
 
3711
 
 
3712
}
 
3713
 
 
3714
//---------------------------------------------------------------------
 
3715
bool ColladaParserAutoGen15Private::_preBegin__Name_array( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
3716
{
 
3717
#ifdef GENERATEDSAXPARSER_VALIDATION
 
3718
    if ( mValidate )
 
3719
    {
 
3720
 
 
3721
        bool validationResult = _validateBegin__Name_array( attributes, attributeDataPtr, validationDataPtr );
 
3722
        if ( !validationResult ) return false;
 
3723
 
 
3724
    } // validation
 
3725
#endif
 
3726
 
 
3727
Name_array__AttributeData* attributeData = newData<Name_array__AttributeData>(attributeDataPtr);
 
3728
 
 
3729
const ParserChar** attributeArray = attributes.attributes;
 
3730
if ( attributeArray )
 
3731
{
 
3732
    while (true)
 
3733
    {
 
3734
        const ParserChar * attribute = *attributeArray;
 
3735
        if ( !attribute )
 
3736
            break;
 
3737
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
3738
        attributeArray++;
 
3739
        if ( !attributeArray )
 
3740
            return false;
 
3741
        const ParserChar* attributeValue = *attributeArray;
 
3742
        attributeArray++;
 
3743
 
 
3744
 
 
3745
    switch ( hash )
 
3746
    {
 
3747
    case HASH_ATTRIBUTE_ID:
 
3748
    {
 
3749
 
 
3750
attributeData->id = attributeValue;
 
3751
 
 
3752
    break;
 
3753
    }
 
3754
    case HASH_ATTRIBUTE_NAME:
 
3755
    {
 
3756
 
 
3757
attributeData->name = attributeValue;
 
3758
 
 
3759
    break;
 
3760
    }
 
3761
    case HASH_ATTRIBUTE_COUNT:
 
3762
    {
 
3763
bool failed;
 
3764
attributeData->count = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
3765
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
3766
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
3767
        HASH_ELEMENT_NAME_ARRAY,
 
3768
        HASH_ATTRIBUTE_COUNT,
 
3769
        attributeValue))
 
3770
{
 
3771
    return false;
 
3772
}
 
3773
if ( !failed )
 
3774
    attributeData->present_attributes |= Name_array__AttributeData::ATTRIBUTE_COUNT_PRESENT;
 
3775
 
 
3776
    break;
 
3777
    }
 
3778
    default:
 
3779
    {
 
3780
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_NAME_ARRAY, attribute, attributeValue))
 
3781
            {return false;}
 
3782
    }
 
3783
    }
 
3784
    }
 
3785
}
 
3786
if ( (attributeData->present_attributes & Name_array__AttributeData::ATTRIBUTE_COUNT_PRESENT) == 0 )
 
3787
{
 
3788
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_NAME_ARRAY, HASH_ATTRIBUTE_COUNT, 0 ) )
 
3789
        return false;
 
3790
}
 
3791
 
 
3792
 
 
3793
    return true;
 
3794
}
 
3795
 
 
3796
//---------------------------------------------------------------------
 
3797
bool ColladaParserAutoGen15Private::_preEnd__Name_array()
 
3798
{
 
3799
#ifdef GENERATEDSAXPARSER_VALIDATION
 
3800
    if ( mValidate )
 
3801
    {
 
3802
 
 
3803
        bool validationResult = _validateEnd__Name_array();
 
3804
        if ( !validationResult ) return false;
 
3805
 
 
3806
    } // validation
 
3807
#endif
 
3808
 
 
3809
#ifdef GENERATEDSAXPARSER_VALIDATION
 
3810
    if ( mValidate )
 
3811
    {
 
3812
bool returnValue = stringListDataEnd( &ColladaParserAutoGen15::data__Name_array, 0, 0, &validate__Name );
 
3813
        return returnValue;
 
3814
    }
 
3815
    else
 
3816
    {
 
3817
return stringListDataEnd( &ColladaParserAutoGen15::data__Name_array );
 
3818
    }
 
3819
#else
 
3820
    {
 
3821
return stringListDataEnd( &ColladaParserAutoGen15::data__Name_array );
 
3822
    } // validation
 
3823
#endif
 
3824
 
 
3825
}
 
3826
 
 
3827
//---------------------------------------------------------------------
 
3828
bool ColladaParserAutoGen15Private::_freeAttributes__Name_array( void* attributeData )
 
3829
{
 
3830
    Name_array__AttributeData* typedAttributeData = static_cast<Name_array__AttributeData*>(attributeData);
 
3831
 
 
3832
    typedAttributeData->~Name_array__AttributeData();
 
3833
 
 
3834
    return true;
 
3835
}
 
3836
 
 
3837
//---------------------------------------------------------------------
 
3838
const bool_array__AttributeData bool_array__AttributeData::DEFAULT = {0, 0, 0, 0};
 
3839
 
 
3840
//---------------------------------------------------------------------
 
3841
bool ColladaParserAutoGen15Private::_data__bool_array( const ParserChar* text, size_t textLength )
 
3842
{
 
3843
#ifdef GENERATEDSAXPARSER_VALIDATION
 
3844
    if ( mValidate )
 
3845
    {
 
3846
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool_array, 0, 0, 0);
 
3847
    }
 
3848
    else
 
3849
    {
 
3850
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool_array);
 
3851
    }
 
3852
#else
 
3853
    {
 
3854
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool_array);
 
3855
    } // validation
 
3856
#endif
 
3857
 
 
3858
}
 
3859
 
 
3860
//---------------------------------------------------------------------
 
3861
bool ColladaParserAutoGen15Private::_preBegin__bool_array( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
3862
{
 
3863
#ifdef GENERATEDSAXPARSER_VALIDATION
 
3864
    if ( mValidate )
 
3865
    {
 
3866
 
 
3867
        bool validationResult = _validateBegin__bool_array( attributes, attributeDataPtr, validationDataPtr );
 
3868
        if ( !validationResult ) return false;
 
3869
 
 
3870
    } // validation
 
3871
#endif
 
3872
 
 
3873
bool_array__AttributeData* attributeData = newData<bool_array__AttributeData>(attributeDataPtr);
 
3874
 
 
3875
const ParserChar** attributeArray = attributes.attributes;
 
3876
if ( attributeArray )
 
3877
{
 
3878
    while (true)
 
3879
    {
 
3880
        const ParserChar * attribute = *attributeArray;
 
3881
        if ( !attribute )
 
3882
            break;
 
3883
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
3884
        attributeArray++;
 
3885
        if ( !attributeArray )
 
3886
            return false;
 
3887
        const ParserChar* attributeValue = *attributeArray;
 
3888
        attributeArray++;
 
3889
 
 
3890
 
 
3891
    switch ( hash )
 
3892
    {
 
3893
    case HASH_ATTRIBUTE_ID:
 
3894
    {
 
3895
 
 
3896
attributeData->id = attributeValue;
 
3897
 
 
3898
    break;
 
3899
    }
 
3900
    case HASH_ATTRIBUTE_NAME:
 
3901
    {
 
3902
 
 
3903
attributeData->name = attributeValue;
 
3904
 
 
3905
    break;
 
3906
    }
 
3907
    case HASH_ATTRIBUTE_COUNT:
 
3908
    {
 
3909
bool failed;
 
3910
attributeData->count = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
3911
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
3912
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
3913
        HASH_ELEMENT_BOOL_ARRAY,
 
3914
        HASH_ATTRIBUTE_COUNT,
 
3915
        attributeValue))
 
3916
{
 
3917
    return false;
 
3918
}
 
3919
if ( !failed )
 
3920
    attributeData->present_attributes |= bool_array__AttributeData::ATTRIBUTE_COUNT_PRESENT;
 
3921
 
 
3922
    break;
 
3923
    }
 
3924
    default:
 
3925
    {
 
3926
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_BOOL_ARRAY, attribute, attributeValue))
 
3927
            {return false;}
 
3928
    }
 
3929
    }
 
3930
    }
 
3931
}
 
3932
if ( (attributeData->present_attributes & bool_array__AttributeData::ATTRIBUTE_COUNT_PRESENT) == 0 )
 
3933
{
 
3934
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_BOOL_ARRAY, HASH_ATTRIBUTE_COUNT, 0 ) )
 
3935
        return false;
 
3936
}
 
3937
 
 
3938
 
 
3939
    return true;
 
3940
}
 
3941
 
 
3942
//---------------------------------------------------------------------
 
3943
bool ColladaParserAutoGen15Private::_preEnd__bool_array()
 
3944
{
 
3945
#ifdef GENERATEDSAXPARSER_VALIDATION
 
3946
    if ( mValidate )
 
3947
    {
 
3948
 
 
3949
        bool validationResult = _validateEnd__bool_array();
 
3950
        if ( !validationResult ) return false;
 
3951
 
 
3952
    } // validation
 
3953
#endif
 
3954
 
 
3955
#ifdef GENERATEDSAXPARSER_VALIDATION
 
3956
    if ( mValidate )
 
3957
    {
 
3958
bool returnValue = boolDataEnd( &ColladaParserAutoGen15::data__bool_array, 0, 0, 0 );
 
3959
        return returnValue;
 
3960
    }
 
3961
    else
 
3962
    {
 
3963
return boolDataEnd( &ColladaParserAutoGen15::data__bool_array );
 
3964
    }
 
3965
#else
 
3966
    {
 
3967
return boolDataEnd( &ColladaParserAutoGen15::data__bool_array );
 
3968
    } // validation
 
3969
#endif
 
3970
 
 
3971
}
 
3972
 
 
3973
//---------------------------------------------------------------------
 
3974
bool ColladaParserAutoGen15Private::_freeAttributes__bool_array( void* attributeData )
 
3975
{
 
3976
    bool_array__AttributeData* typedAttributeData = static_cast<bool_array__AttributeData*>(attributeData);
 
3977
 
 
3978
    typedAttributeData->~bool_array__AttributeData();
 
3979
 
 
3980
    return true;
 
3981
}
 
3982
 
 
3983
//---------------------------------------------------------------------
 
3984
const float_array__AttributeData float_array__AttributeData::DEFAULT = {0, 0, 0, 0, 6, 38};
 
3985
 
 
3986
//---------------------------------------------------------------------
 
3987
bool ColladaParserAutoGen15Private::_data__float_array( const ParserChar* text, size_t textLength )
 
3988
{
 
3989
#ifdef GENERATEDSAXPARSER_VALIDATION
 
3990
    if ( mValidate )
 
3991
    {
 
3992
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float_array, 0, 0, 0);
 
3993
    }
 
3994
    else
 
3995
    {
 
3996
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float_array);
 
3997
    }
 
3998
#else
 
3999
    {
 
4000
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float_array);
 
4001
    } // validation
 
4002
#endif
 
4003
 
 
4004
}
 
4005
 
 
4006
//---------------------------------------------------------------------
 
4007
bool ColladaParserAutoGen15Private::_preBegin__float_array( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
4008
{
 
4009
#ifdef GENERATEDSAXPARSER_VALIDATION
 
4010
    if ( mValidate )
 
4011
    {
 
4012
 
 
4013
        bool validationResult = _validateBegin__float_array( attributes, attributeDataPtr, validationDataPtr );
 
4014
        if ( !validationResult ) return false;
 
4015
 
 
4016
    } // validation
 
4017
#endif
 
4018
 
 
4019
float_array__AttributeData* attributeData = newData<float_array__AttributeData>(attributeDataPtr);
 
4020
 
 
4021
const ParserChar** attributeArray = attributes.attributes;
 
4022
if ( attributeArray )
 
4023
{
 
4024
    while (true)
 
4025
    {
 
4026
        const ParserChar * attribute = *attributeArray;
 
4027
        if ( !attribute )
 
4028
            break;
 
4029
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
4030
        attributeArray++;
 
4031
        if ( !attributeArray )
 
4032
            return false;
 
4033
        const ParserChar* attributeValue = *attributeArray;
 
4034
        attributeArray++;
 
4035
 
 
4036
 
 
4037
    switch ( hash )
 
4038
    {
 
4039
    case HASH_ATTRIBUTE_ID:
 
4040
    {
 
4041
 
 
4042
attributeData->id = attributeValue;
 
4043
 
 
4044
    break;
 
4045
    }
 
4046
    case HASH_ATTRIBUTE_NAME:
 
4047
    {
 
4048
 
 
4049
attributeData->name = attributeValue;
 
4050
 
 
4051
    break;
 
4052
    }
 
4053
    case HASH_ATTRIBUTE_COUNT:
 
4054
    {
 
4055
bool failed;
 
4056
attributeData->count = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
4057
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
4058
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
4059
        HASH_ELEMENT_FLOAT_ARRAY,
 
4060
        HASH_ATTRIBUTE_COUNT,
 
4061
        attributeValue))
 
4062
{
 
4063
    return false;
 
4064
}
 
4065
if ( !failed )
 
4066
    attributeData->present_attributes |= float_array__AttributeData::ATTRIBUTE_COUNT_PRESENT;
 
4067
 
 
4068
    break;
 
4069
    }
 
4070
    case HASH_ATTRIBUTE_DIGITS:
 
4071
    {
 
4072
bool failed;
 
4073
attributeData->digits = GeneratedSaxParser::Utils::toUint8(attributeValue, failed);
 
4074
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
4075
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
4076
        HASH_ELEMENT_FLOAT_ARRAY,
 
4077
        HASH_ATTRIBUTE_DIGITS,
 
4078
        attributeValue))
 
4079
{
 
4080
    return false;
 
4081
}
 
4082
#ifdef GENERATEDSAXPARSER_VALIDATION
 
4083
    if ( mValidate )
 
4084
    {
 
4085
    ParserError::ErrorType simpleTypeValidationResult = validate__digits_type(attributeData->digits);
 
4086
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
4087
    {
 
4088
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
4089
            simpleTypeValidationResult,
 
4090
            HASH_ELEMENT_FLOAT_ARRAY,
 
4091
            HASH_ATTRIBUTE_DIGITS,
 
4092
            attributeValue) )
 
4093
        {
 
4094
            return false;
 
4095
        }
 
4096
    }
 
4097
    } // validation
 
4098
#endif
 
4099
 
 
4100
    break;
 
4101
    }
 
4102
    case HASH_ATTRIBUTE_MAGNITUDE:
 
4103
    {
 
4104
bool failed;
 
4105
attributeData->magnitude = GeneratedSaxParser::Utils::toSint16(attributeValue, failed);
 
4106
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
4107
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
4108
        HASH_ELEMENT_FLOAT_ARRAY,
 
4109
        HASH_ATTRIBUTE_MAGNITUDE,
 
4110
        attributeValue))
 
4111
{
 
4112
    return false;
 
4113
}
 
4114
#ifdef GENERATEDSAXPARSER_VALIDATION
 
4115
    if ( mValidate )
 
4116
    {
 
4117
    ParserError::ErrorType simpleTypeValidationResult = validate__magnitude_type(attributeData->magnitude);
 
4118
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
4119
    {
 
4120
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
4121
            simpleTypeValidationResult,
 
4122
            HASH_ELEMENT_FLOAT_ARRAY,
 
4123
            HASH_ATTRIBUTE_MAGNITUDE,
 
4124
            attributeValue) )
 
4125
        {
 
4126
            return false;
 
4127
        }
 
4128
    }
 
4129
    } // validation
 
4130
#endif
 
4131
 
 
4132
    break;
 
4133
    }
 
4134
    default:
 
4135
    {
 
4136
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FLOAT_ARRAY, attribute, attributeValue))
 
4137
            {return false;}
 
4138
    }
 
4139
    }
 
4140
    }
 
4141
}
 
4142
if ( (attributeData->present_attributes & float_array__AttributeData::ATTRIBUTE_COUNT_PRESENT) == 0 )
 
4143
{
 
4144
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_FLOAT_ARRAY, HASH_ATTRIBUTE_COUNT, 0 ) )
 
4145
        return false;
 
4146
}
 
4147
 
 
4148
 
 
4149
    return true;
 
4150
}
 
4151
 
 
4152
//---------------------------------------------------------------------
 
4153
bool ColladaParserAutoGen15Private::_preEnd__float_array()
 
4154
{
 
4155
#ifdef GENERATEDSAXPARSER_VALIDATION
 
4156
    if ( mValidate )
 
4157
    {
 
4158
 
 
4159
        bool validationResult = _validateEnd__float_array();
 
4160
        if ( !validationResult ) return false;
 
4161
 
 
4162
    } // validation
 
4163
#endif
 
4164
 
 
4165
#ifdef GENERATEDSAXPARSER_VALIDATION
 
4166
    if ( mValidate )
 
4167
    {
 
4168
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__float_array, 0, 0, 0 );
 
4169
        return returnValue;
 
4170
    }
 
4171
    else
 
4172
    {
 
4173
return floatDataEnd( &ColladaParserAutoGen15::data__float_array );
 
4174
    }
 
4175
#else
 
4176
    {
 
4177
return floatDataEnd( &ColladaParserAutoGen15::data__float_array );
 
4178
    } // validation
 
4179
#endif
 
4180
 
 
4181
}
 
4182
 
 
4183
//---------------------------------------------------------------------
 
4184
bool ColladaParserAutoGen15Private::_freeAttributes__float_array( void* attributeData )
 
4185
{
 
4186
    float_array__AttributeData* typedAttributeData = static_cast<float_array__AttributeData*>(attributeData);
 
4187
 
 
4188
    typedAttributeData->~float_array__AttributeData();
 
4189
 
 
4190
    return true;
 
4191
}
 
4192
 
 
4193
//---------------------------------------------------------------------
 
4194
const int_array__AttributeData int_array__AttributeData::DEFAULT = {0, 0, 0, 0, -2147483647-1, 2147483647};
 
4195
 
 
4196
//---------------------------------------------------------------------
 
4197
bool ColladaParserAutoGen15Private::_data__int_array( const ParserChar* text, size_t textLength )
 
4198
{
 
4199
#ifdef GENERATEDSAXPARSER_VALIDATION
 
4200
    if ( mValidate )
 
4201
    {
 
4202
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int_array, 0, 0, 0);
 
4203
    }
 
4204
    else
 
4205
    {
 
4206
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int_array);
 
4207
    }
 
4208
#else
 
4209
    {
 
4210
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int_array);
 
4211
    } // validation
 
4212
#endif
 
4213
 
 
4214
}
 
4215
 
 
4216
//---------------------------------------------------------------------
 
4217
bool ColladaParserAutoGen15Private::_preBegin__int_array( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
4218
{
 
4219
#ifdef GENERATEDSAXPARSER_VALIDATION
 
4220
    if ( mValidate )
 
4221
    {
 
4222
 
 
4223
        bool validationResult = _validateBegin__int_array( attributes, attributeDataPtr, validationDataPtr );
 
4224
        if ( !validationResult ) return false;
 
4225
 
 
4226
    } // validation
 
4227
#endif
 
4228
 
 
4229
int_array__AttributeData* attributeData = newData<int_array__AttributeData>(attributeDataPtr);
 
4230
 
 
4231
const ParserChar** attributeArray = attributes.attributes;
 
4232
if ( attributeArray )
 
4233
{
 
4234
    while (true)
 
4235
    {
 
4236
        const ParserChar * attribute = *attributeArray;
 
4237
        if ( !attribute )
 
4238
            break;
 
4239
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
4240
        attributeArray++;
 
4241
        if ( !attributeArray )
 
4242
            return false;
 
4243
        const ParserChar* attributeValue = *attributeArray;
 
4244
        attributeArray++;
 
4245
 
 
4246
 
 
4247
    switch ( hash )
 
4248
    {
 
4249
    case HASH_ATTRIBUTE_ID:
 
4250
    {
 
4251
 
 
4252
attributeData->id = attributeValue;
 
4253
 
 
4254
    break;
 
4255
    }
 
4256
    case HASH_ATTRIBUTE_NAME:
 
4257
    {
 
4258
 
 
4259
attributeData->name = attributeValue;
 
4260
 
 
4261
    break;
 
4262
    }
 
4263
    case HASH_ATTRIBUTE_COUNT:
 
4264
    {
 
4265
bool failed;
 
4266
attributeData->count = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
4267
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
4268
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
4269
        HASH_ELEMENT_INT_ARRAY,
 
4270
        HASH_ATTRIBUTE_COUNT,
 
4271
        attributeValue))
 
4272
{
 
4273
    return false;
 
4274
}
 
4275
if ( !failed )
 
4276
    attributeData->present_attributes |= int_array__AttributeData::ATTRIBUTE_COUNT_PRESENT;
 
4277
 
 
4278
    break;
 
4279
    }
 
4280
    case HASH_ATTRIBUTE_MININCLUSIVE:
 
4281
    {
 
4282
bool failed;
 
4283
attributeData->minInclusive = GeneratedSaxParser::Utils::toSint64(attributeValue, failed);
 
4284
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
4285
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
4286
        HASH_ELEMENT_INT_ARRAY,
 
4287
        HASH_ATTRIBUTE_MININCLUSIVE,
 
4288
        attributeValue))
 
4289
{
 
4290
    return false;
 
4291
}
 
4292
 
 
4293
    break;
 
4294
    }
 
4295
    case HASH_ATTRIBUTE_MAXINCLUSIVE:
 
4296
    {
 
4297
bool failed;
 
4298
attributeData->maxInclusive = GeneratedSaxParser::Utils::toSint64(attributeValue, failed);
 
4299
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
4300
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
4301
        HASH_ELEMENT_INT_ARRAY,
 
4302
        HASH_ATTRIBUTE_MAXINCLUSIVE,
 
4303
        attributeValue))
 
4304
{
 
4305
    return false;
 
4306
}
 
4307
 
 
4308
    break;
 
4309
    }
 
4310
    default:
 
4311
    {
 
4312
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_INT_ARRAY, attribute, attributeValue))
 
4313
            {return false;}
 
4314
    }
 
4315
    }
 
4316
    }
 
4317
}
 
4318
if ( (attributeData->present_attributes & int_array__AttributeData::ATTRIBUTE_COUNT_PRESENT) == 0 )
 
4319
{
 
4320
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_INT_ARRAY, HASH_ATTRIBUTE_COUNT, 0 ) )
 
4321
        return false;
 
4322
}
 
4323
 
 
4324
 
 
4325
    return true;
 
4326
}
 
4327
 
 
4328
//---------------------------------------------------------------------
 
4329
bool ColladaParserAutoGen15Private::_preEnd__int_array()
 
4330
{
 
4331
#ifdef GENERATEDSAXPARSER_VALIDATION
 
4332
    if ( mValidate )
 
4333
    {
 
4334
 
 
4335
        bool validationResult = _validateEnd__int_array();
 
4336
        if ( !validationResult ) return false;
 
4337
 
 
4338
    } // validation
 
4339
#endif
 
4340
 
 
4341
#ifdef GENERATEDSAXPARSER_VALIDATION
 
4342
    if ( mValidate )
 
4343
    {
 
4344
bool returnValue = sint64DataEnd( &ColladaParserAutoGen15::data__int_array, 0, 0, 0 );
 
4345
        return returnValue;
 
4346
    }
 
4347
    else
 
4348
    {
 
4349
return sint64DataEnd( &ColladaParserAutoGen15::data__int_array );
 
4350
    }
 
4351
#else
 
4352
    {
 
4353
return sint64DataEnd( &ColladaParserAutoGen15::data__int_array );
 
4354
    } // validation
 
4355
#endif
 
4356
 
 
4357
}
 
4358
 
 
4359
//---------------------------------------------------------------------
 
4360
bool ColladaParserAutoGen15Private::_freeAttributes__int_array( void* attributeData )
 
4361
{
 
4362
    int_array__AttributeData* typedAttributeData = static_cast<int_array__AttributeData*>(attributeData);
 
4363
 
 
4364
    typedAttributeData->~int_array__AttributeData();
 
4365
 
 
4366
    return true;
 
4367
}
 
4368
 
 
4369
//---------------------------------------------------------------------
 
4370
const SIDREF_array__AttributeData SIDREF_array__AttributeData::DEFAULT = {0, 0, 0, 0};
 
4371
 
 
4372
//---------------------------------------------------------------------
 
4373
bool ColladaParserAutoGen15Private::_data__SIDREF_array( const ParserChar* text, size_t textLength )
 
4374
{
 
4375
#ifdef GENERATEDSAXPARSER_VALIDATION
 
4376
    if ( mValidate )
 
4377
    {
 
4378
return characterData2StringData(text, textLength, &ColladaParserAutoGen15::data__SIDREF_array, 0, 0, &validate__sidref_type);
 
4379
    }
 
4380
    else
 
4381
    {
 
4382
return characterData2StringData(text, textLength, &ColladaParserAutoGen15::data__SIDREF_array);
 
4383
    }
 
4384
#else
 
4385
    {
 
4386
return characterData2StringData(text, textLength, &ColladaParserAutoGen15::data__SIDREF_array);
 
4387
    } // validation
 
4388
#endif
 
4389
 
 
4390
}
 
4391
 
 
4392
//---------------------------------------------------------------------
 
4393
bool ColladaParserAutoGen15Private::_preBegin__SIDREF_array( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
4394
{
 
4395
#ifdef GENERATEDSAXPARSER_VALIDATION
 
4396
    if ( mValidate )
 
4397
    {
 
4398
 
 
4399
        bool validationResult = _validateBegin__SIDREF_array( attributes, attributeDataPtr, validationDataPtr );
 
4400
        if ( !validationResult ) return false;
 
4401
 
 
4402
    } // validation
 
4403
#endif
 
4404
 
 
4405
SIDREF_array__AttributeData* attributeData = newData<SIDREF_array__AttributeData>(attributeDataPtr);
 
4406
 
 
4407
const ParserChar** attributeArray = attributes.attributes;
 
4408
if ( attributeArray )
 
4409
{
 
4410
    while (true)
 
4411
    {
 
4412
        const ParserChar * attribute = *attributeArray;
 
4413
        if ( !attribute )
 
4414
            break;
 
4415
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
4416
        attributeArray++;
 
4417
        if ( !attributeArray )
 
4418
            return false;
 
4419
        const ParserChar* attributeValue = *attributeArray;
 
4420
        attributeArray++;
 
4421
 
 
4422
 
 
4423
    switch ( hash )
 
4424
    {
 
4425
    case HASH_ATTRIBUTE_ID:
 
4426
    {
 
4427
 
 
4428
attributeData->id = attributeValue;
 
4429
 
 
4430
    break;
 
4431
    }
 
4432
    case HASH_ATTRIBUTE_NAME:
 
4433
    {
 
4434
 
 
4435
attributeData->name = attributeValue;
 
4436
 
 
4437
    break;
 
4438
    }
 
4439
    case HASH_ATTRIBUTE_COUNT:
 
4440
    {
 
4441
bool failed;
 
4442
attributeData->count = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
4443
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
4444
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
4445
        HASH_ELEMENT_SIDREF_ARRAY,
 
4446
        HASH_ATTRIBUTE_COUNT,
 
4447
        attributeValue))
 
4448
{
 
4449
    return false;
 
4450
}
 
4451
if ( !failed )
 
4452
    attributeData->present_attributes |= SIDREF_array__AttributeData::ATTRIBUTE_COUNT_PRESENT;
 
4453
 
 
4454
    break;
 
4455
    }
 
4456
    default:
 
4457
    {
 
4458
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SIDREF_ARRAY, attribute, attributeValue))
 
4459
            {return false;}
 
4460
    }
 
4461
    }
 
4462
    }
 
4463
}
 
4464
if ( (attributeData->present_attributes & SIDREF_array__AttributeData::ATTRIBUTE_COUNT_PRESENT) == 0 )
 
4465
{
 
4466
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_SIDREF_ARRAY, HASH_ATTRIBUTE_COUNT, 0 ) )
 
4467
        return false;
 
4468
}
 
4469
 
 
4470
 
 
4471
    return true;
 
4472
}
 
4473
 
 
4474
//---------------------------------------------------------------------
 
4475
bool ColladaParserAutoGen15Private::_preEnd__SIDREF_array()
 
4476
{
 
4477
#ifdef GENERATEDSAXPARSER_VALIDATION
 
4478
    if ( mValidate )
 
4479
    {
 
4480
 
 
4481
        bool validationResult = _validateEnd__SIDREF_array();
 
4482
        if ( !validationResult ) return false;
 
4483
 
 
4484
    } // validation
 
4485
#endif
 
4486
 
 
4487
#ifdef GENERATEDSAXPARSER_VALIDATION
 
4488
    if ( mValidate )
 
4489
    {
 
4490
bool returnValue = stringListDataEnd( &ColladaParserAutoGen15::data__SIDREF_array, 0, 0, &validate__sidref_type );
 
4491
        return returnValue;
 
4492
    }
 
4493
    else
 
4494
    {
 
4495
return stringListDataEnd( &ColladaParserAutoGen15::data__SIDREF_array );
 
4496
    }
 
4497
#else
 
4498
    {
 
4499
return stringListDataEnd( &ColladaParserAutoGen15::data__SIDREF_array );
 
4500
    } // validation
 
4501
#endif
 
4502
 
 
4503
}
 
4504
 
 
4505
//---------------------------------------------------------------------
 
4506
bool ColladaParserAutoGen15Private::_freeAttributes__SIDREF_array( void* attributeData )
 
4507
{
 
4508
    SIDREF_array__AttributeData* typedAttributeData = static_cast<SIDREF_array__AttributeData*>(attributeData);
 
4509
 
 
4510
    typedAttributeData->~SIDREF_array__AttributeData();
 
4511
 
 
4512
    return true;
 
4513
}
 
4514
 
 
4515
//---------------------------------------------------------------------
 
4516
bool ColladaParserAutoGen15Private::_data__source_type____technique_common( const ParserChar* text, size_t textLength )
 
4517
{
 
4518
    return true;
 
4519
}
 
4520
 
 
4521
//---------------------------------------------------------------------
 
4522
bool ColladaParserAutoGen15Private::_preBegin__source_type____technique_common( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
4523
{
 
4524
#ifdef GENERATEDSAXPARSER_VALIDATION
 
4525
    if ( mValidate )
 
4526
    {
 
4527
 
 
4528
        bool validationResult = _validateBegin__source_type____technique_common( attributes, attributeDataPtr, validationDataPtr );
 
4529
        if ( !validationResult ) return false;
 
4530
 
 
4531
    } // validation
 
4532
#endif
 
4533
 
 
4534
    return true;
 
4535
}
 
4536
 
 
4537
//---------------------------------------------------------------------
 
4538
bool ColladaParserAutoGen15Private::_preEnd__source_type____technique_common()
 
4539
{
 
4540
#ifdef GENERATEDSAXPARSER_VALIDATION
 
4541
    if ( mValidate )
 
4542
    {
 
4543
 
 
4544
        bool validationResult = _validateEnd__source_type____technique_common();
 
4545
        if ( !validationResult ) return false;
 
4546
 
 
4547
    } // validation
 
4548
#endif
 
4549
 
 
4550
    return true;
 
4551
}
 
4552
 
 
4553
//---------------------------------------------------------------------
 
4554
bool ColladaParserAutoGen15Private::_freeAttributes__source_type____technique_common( void* attributeData )
 
4555
{
 
4556
    return true;
 
4557
}
 
4558
 
 
4559
//---------------------------------------------------------------------
 
4560
const accessor__AttributeData accessor__AttributeData::DEFAULT = {0, 0, 0, 0, 1};
 
4561
 
 
4562
//---------------------------------------------------------------------
 
4563
bool ColladaParserAutoGen15Private::_data__accessor( const ParserChar* text, size_t textLength )
 
4564
{
 
4565
    return true;
 
4566
}
 
4567
 
 
4568
//---------------------------------------------------------------------
 
4569
bool ColladaParserAutoGen15Private::_preBegin__accessor( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
4570
{
 
4571
#ifdef GENERATEDSAXPARSER_VALIDATION
 
4572
    if ( mValidate )
 
4573
    {
 
4574
 
 
4575
        bool validationResult = _validateBegin__accessor( attributes, attributeDataPtr, validationDataPtr );
 
4576
        if ( !validationResult ) return false;
 
4577
 
 
4578
    } // validation
 
4579
#endif
 
4580
 
 
4581
accessor__AttributeData* attributeData = newData<accessor__AttributeData>(attributeDataPtr);
 
4582
 
 
4583
const ParserChar** attributeArray = attributes.attributes;
 
4584
if ( attributeArray )
 
4585
{
 
4586
    while (true)
 
4587
    {
 
4588
        const ParserChar * attribute = *attributeArray;
 
4589
        if ( !attribute )
 
4590
            break;
 
4591
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
4592
        attributeArray++;
 
4593
        if ( !attributeArray )
 
4594
            return false;
 
4595
        const ParserChar* attributeValue = *attributeArray;
 
4596
        attributeArray++;
 
4597
 
 
4598
 
 
4599
    switch ( hash )
 
4600
    {
 
4601
    case HASH_ATTRIBUTE_COUNT:
 
4602
    {
 
4603
bool failed;
 
4604
attributeData->count = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
4605
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
4606
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
4607
        HASH_ELEMENT_ACCESSOR,
 
4608
        HASH_ATTRIBUTE_COUNT,
 
4609
        attributeValue))
 
4610
{
 
4611
    return false;
 
4612
}
 
4613
if ( !failed )
 
4614
    attributeData->present_attributes |= accessor__AttributeData::ATTRIBUTE_COUNT_PRESENT;
 
4615
 
 
4616
    break;
 
4617
    }
 
4618
    case HASH_ATTRIBUTE_OFFSET:
 
4619
    {
 
4620
bool failed;
 
4621
attributeData->offset = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
4622
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
4623
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
4624
        HASH_ELEMENT_ACCESSOR,
 
4625
        HASH_ATTRIBUTE_OFFSET,
 
4626
        attributeValue))
 
4627
{
 
4628
    return false;
 
4629
}
 
4630
 
 
4631
    break;
 
4632
    }
 
4633
    case HASH_ATTRIBUTE_SOURCE:
 
4634
    {
 
4635
bool failed;
 
4636
attributeData->source = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
4637
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
4638
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
4639
        HASH_ELEMENT_ACCESSOR,
 
4640
        HASH_ATTRIBUTE_SOURCE,
 
4641
        attributeValue))
 
4642
{
 
4643
    return false;
 
4644
}
 
4645
if ( !failed )
 
4646
    attributeData->present_attributes |= accessor__AttributeData::ATTRIBUTE_SOURCE_PRESENT;
 
4647
 
 
4648
    break;
 
4649
    }
 
4650
    case HASH_ATTRIBUTE_STRIDE:
 
4651
    {
 
4652
bool failed;
 
4653
attributeData->stride = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
4654
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
4655
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
4656
        HASH_ELEMENT_ACCESSOR,
 
4657
        HASH_ATTRIBUTE_STRIDE,
 
4658
        attributeValue))
 
4659
{
 
4660
    return false;
 
4661
}
 
4662
 
 
4663
    break;
 
4664
    }
 
4665
    default:
 
4666
    {
 
4667
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_ACCESSOR, attribute, attributeValue))
 
4668
            {return false;}
 
4669
    }
 
4670
    }
 
4671
    }
 
4672
}
 
4673
if ((attributeData->present_attributes & accessor__AttributeData::ATTRIBUTE_SOURCE_PRESENT) == 0)
 
4674
{
 
4675
    attributeData->source = COLLADABU::URI("");
 
4676
}
 
4677
if ( (attributeData->present_attributes & accessor__AttributeData::ATTRIBUTE_COUNT_PRESENT) == 0 )
 
4678
{
 
4679
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_ACCESSOR, HASH_ATTRIBUTE_COUNT, 0 ) )
 
4680
        return false;
 
4681
}
 
4682
if ( (attributeData->present_attributes & accessor__AttributeData::ATTRIBUTE_SOURCE_PRESENT) == 0 )
 
4683
{
 
4684
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_ACCESSOR, HASH_ATTRIBUTE_SOURCE, 0 ) )
 
4685
        return false;
 
4686
}
 
4687
 
 
4688
 
 
4689
    return true;
 
4690
}
 
4691
 
 
4692
//---------------------------------------------------------------------
 
4693
bool ColladaParserAutoGen15Private::_preEnd__accessor()
 
4694
{
 
4695
#ifdef GENERATEDSAXPARSER_VALIDATION
 
4696
    if ( mValidate )
 
4697
    {
 
4698
 
 
4699
        bool validationResult = _validateEnd__accessor();
 
4700
        if ( !validationResult ) return false;
 
4701
 
 
4702
    } // validation
 
4703
#endif
 
4704
 
 
4705
    return true;
 
4706
}
 
4707
 
 
4708
//---------------------------------------------------------------------
 
4709
bool ColladaParserAutoGen15Private::_freeAttributes__accessor( void* attributeData )
 
4710
{
 
4711
    accessor__AttributeData* typedAttributeData = static_cast<accessor__AttributeData*>(attributeData);
 
4712
 
 
4713
    typedAttributeData->~accessor__AttributeData();
 
4714
 
 
4715
    return true;
 
4716
}
 
4717
 
 
4718
//---------------------------------------------------------------------
 
4719
const param____param_type__AttributeData param____param_type__AttributeData::DEFAULT = {0, 0, 0, 0};
 
4720
 
 
4721
//---------------------------------------------------------------------
 
4722
bool ColladaParserAutoGen15Private::_data__param____param_type( const ParserChar* text, size_t textLength )
 
4723
{
 
4724
 
 
4725
return mImpl->data__param____param_type(text, textLength);
 
4726
}
 
4727
 
 
4728
//---------------------------------------------------------------------
 
4729
bool ColladaParserAutoGen15Private::_preBegin__param____param_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
4730
{
 
4731
#ifdef GENERATEDSAXPARSER_VALIDATION
 
4732
    if ( mValidate )
 
4733
    {
 
4734
 
 
4735
        bool validationResult = _validateBegin__param____param_type( attributes, attributeDataPtr, validationDataPtr );
 
4736
        if ( !validationResult ) return false;
 
4737
 
 
4738
    } // validation
 
4739
#endif
 
4740
 
 
4741
param____param_type__AttributeData* attributeData = newData<param____param_type__AttributeData>(attributeDataPtr);
 
4742
 
 
4743
const ParserChar** attributeArray = attributes.attributes;
 
4744
if ( attributeArray )
 
4745
{
 
4746
    while (true)
 
4747
    {
 
4748
        const ParserChar * attribute = *attributeArray;
 
4749
        if ( !attribute )
 
4750
            break;
 
4751
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
4752
        attributeArray++;
 
4753
        if ( !attributeArray )
 
4754
            return false;
 
4755
        const ParserChar* attributeValue = *attributeArray;
 
4756
        attributeArray++;
 
4757
 
 
4758
 
 
4759
    switch ( hash )
 
4760
    {
 
4761
    case HASH_ATTRIBUTE_NAME:
 
4762
    {
 
4763
 
 
4764
attributeData->name = attributeValue;
 
4765
 
 
4766
    break;
 
4767
    }
 
4768
    case HASH_ATTRIBUTE_SID:
 
4769
    {
 
4770
 
 
4771
attributeData->sid = attributeValue;
 
4772
#ifdef GENERATEDSAXPARSER_VALIDATION
 
4773
    if ( mValidate )
 
4774
    {
 
4775
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
4776
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
4777
    {
 
4778
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
4779
            simpleTypeValidationResult,
 
4780
            HASH_ELEMENT_PARAM,
 
4781
            HASH_ATTRIBUTE_SID,
 
4782
            attributeValue) )
 
4783
        {
 
4784
            return false;
 
4785
        }
 
4786
    }
 
4787
    } // validation
 
4788
#endif
 
4789
 
 
4790
    break;
 
4791
    }
 
4792
    case HASH_ATTRIBUTE_SEMANTIC:
 
4793
    {
 
4794
 
 
4795
attributeData->semantic = attributeValue;
 
4796
#ifdef GENERATEDSAXPARSER_VALIDATION
 
4797
    if ( mValidate )
 
4798
    {
 
4799
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKEN(attributeData->semantic, strlen(attributeData->semantic));
 
4800
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
4801
    {
 
4802
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
4803
            simpleTypeValidationResult,
 
4804
            HASH_ELEMENT_PARAM,
 
4805
            HASH_ATTRIBUTE_SEMANTIC,
 
4806
            attributeValue) )
 
4807
        {
 
4808
            return false;
 
4809
        }
 
4810
    }
 
4811
    } // validation
 
4812
#endif
 
4813
 
 
4814
    break;
 
4815
    }
 
4816
    case HASH_ATTRIBUTE_TYPE:
 
4817
    {
 
4818
 
 
4819
attributeData->type = attributeValue;
 
4820
#ifdef GENERATEDSAXPARSER_VALIDATION
 
4821
    if ( mValidate )
 
4822
    {
 
4823
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKEN(attributeData->type, strlen(attributeData->type));
 
4824
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
4825
    {
 
4826
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
4827
            simpleTypeValidationResult,
 
4828
            HASH_ELEMENT_PARAM,
 
4829
            HASH_ATTRIBUTE_TYPE,
 
4830
            attributeValue) )
 
4831
        {
 
4832
            return false;
 
4833
        }
 
4834
    }
 
4835
    } // validation
 
4836
#endif
 
4837
 
 
4838
    break;
 
4839
    }
 
4840
    default:
 
4841
    {
 
4842
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_PARAM, attribute, attributeValue))
 
4843
            {return false;}
 
4844
    }
 
4845
    }
 
4846
    }
 
4847
}
 
4848
if ( !attributeData->type )
 
4849
{
 
4850
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_PARAM, HASH_ATTRIBUTE_TYPE, 0 ) )
 
4851
        return false;
 
4852
}
 
4853
 
 
4854
 
 
4855
    return true;
 
4856
}
 
4857
 
 
4858
//---------------------------------------------------------------------
 
4859
bool ColladaParserAutoGen15Private::_preEnd__param____param_type()
 
4860
{
 
4861
#ifdef GENERATEDSAXPARSER_VALIDATION
 
4862
    if ( mValidate )
 
4863
    {
 
4864
 
 
4865
        bool validationResult = _validateEnd__param____param_type();
 
4866
        if ( !validationResult ) return false;
 
4867
 
 
4868
    } // validation
 
4869
#endif
 
4870
 
 
4871
    return true;
 
4872
}
 
4873
 
 
4874
//---------------------------------------------------------------------
 
4875
bool ColladaParserAutoGen15Private::_freeAttributes__param____param_type( void* attributeData )
 
4876
{
 
4877
    param____param_type__AttributeData* typedAttributeData = static_cast<param____param_type__AttributeData*>(attributeData);
 
4878
 
 
4879
    typedAttributeData->~param____param_type__AttributeData();
 
4880
 
 
4881
    return true;
 
4882
}
 
4883
 
 
4884
//---------------------------------------------------------------------
 
4885
const sampler__AttributeData sampler__AttributeData::DEFAULT = {0, ENUM__sampler_behavior_enum__NOT_PRESENT, ENUM__sampler_behavior_enum__NOT_PRESENT};
 
4886
 
 
4887
//---------------------------------------------------------------------
 
4888
bool ColladaParserAutoGen15Private::_data__sampler( const ParserChar* text, size_t textLength )
 
4889
{
 
4890
    return true;
 
4891
}
 
4892
 
 
4893
//---------------------------------------------------------------------
 
4894
bool ColladaParserAutoGen15Private::_preBegin__sampler( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
4895
{
 
4896
#ifdef GENERATEDSAXPARSER_VALIDATION
 
4897
    if ( mValidate )
 
4898
    {
 
4899
 
 
4900
        bool validationResult = _validateBegin__sampler( attributes, attributeDataPtr, validationDataPtr );
 
4901
        if ( !validationResult ) return false;
 
4902
 
 
4903
    } // validation
 
4904
#endif
 
4905
 
 
4906
sampler__AttributeData* attributeData = newData<sampler__AttributeData>(attributeDataPtr);
 
4907
 
 
4908
const ParserChar** attributeArray = attributes.attributes;
 
4909
if ( attributeArray )
 
4910
{
 
4911
    while (true)
 
4912
    {
 
4913
        const ParserChar * attribute = *attributeArray;
 
4914
        if ( !attribute )
 
4915
            break;
 
4916
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
4917
        attributeArray++;
 
4918
        if ( !attributeArray )
 
4919
            return false;
 
4920
        const ParserChar* attributeValue = *attributeArray;
 
4921
        attributeArray++;
 
4922
 
 
4923
 
 
4924
    switch ( hash )
 
4925
    {
 
4926
    case HASH_ATTRIBUTE_ID:
 
4927
    {
 
4928
 
 
4929
attributeData->id = attributeValue;
 
4930
 
 
4931
    break;
 
4932
    }
 
4933
    case HASH_ATTRIBUTE_PRE_BEHAVIOR:
 
4934
    {
 
4935
bool failed;
 
4936
attributeData->pre_behavior = Utils::toEnum<ENUM__sampler_behavior_enum, StringHash, ENUM__sampler_behavior_enum__COUNT>(attributeValue, failed, ENUM__sampler_behavior_enumMap, Utils::calculateStringHash);
 
4937
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
4938
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
4939
        HASH_ELEMENT_SAMPLER,
 
4940
        HASH_ATTRIBUTE_PRE_BEHAVIOR,
 
4941
        attributeValue))
 
4942
{
 
4943
    return false;
 
4944
}
 
4945
 
 
4946
    break;
 
4947
    }
 
4948
    case HASH_ATTRIBUTE_POST_BEHAVIOR:
 
4949
    {
 
4950
bool failed;
 
4951
attributeData->post_behavior = Utils::toEnum<ENUM__sampler_behavior_enum, StringHash, ENUM__sampler_behavior_enum__COUNT>(attributeValue, failed, ENUM__sampler_behavior_enumMap, Utils::calculateStringHash);
 
4952
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
4953
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
4954
        HASH_ELEMENT_SAMPLER,
 
4955
        HASH_ATTRIBUTE_POST_BEHAVIOR,
 
4956
        attributeValue))
 
4957
{
 
4958
    return false;
 
4959
}
 
4960
 
 
4961
    break;
 
4962
    }
 
4963
    default:
 
4964
    {
 
4965
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SAMPLER, attribute, attributeValue))
 
4966
            {return false;}
 
4967
    }
 
4968
    }
 
4969
    }
 
4970
}
 
4971
 
 
4972
 
 
4973
    return true;
 
4974
}
 
4975
 
 
4976
//---------------------------------------------------------------------
 
4977
bool ColladaParserAutoGen15Private::_preEnd__sampler()
 
4978
{
 
4979
#ifdef GENERATEDSAXPARSER_VALIDATION
 
4980
    if ( mValidate )
 
4981
    {
 
4982
 
 
4983
        bool validationResult = _validateEnd__sampler();
 
4984
        if ( !validationResult ) return false;
 
4985
 
 
4986
    } // validation
 
4987
#endif
 
4988
 
 
4989
    return true;
 
4990
}
 
4991
 
 
4992
//---------------------------------------------------------------------
 
4993
bool ColladaParserAutoGen15Private::_freeAttributes__sampler( void* attributeData )
 
4994
{
 
4995
    sampler__AttributeData* typedAttributeData = static_cast<sampler__AttributeData*>(attributeData);
 
4996
 
 
4997
    typedAttributeData->~sampler__AttributeData();
 
4998
 
 
4999
    return true;
 
5000
}
 
5001
 
 
5002
//---------------------------------------------------------------------
 
5003
ENUM__sampler_behavior_enum ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__sampler_behavior_enum (
 
5004
    const ParserChar* prefixedBuffer,
 
5005
    const ParserChar* prefixedBufferEnd,
 
5006
    const ParserChar** buffer,
 
5007
    const ParserChar* bufferEnd,
 
5008
    bool& failed,
 
5009
    const std::pair<StringHash, ENUM__sampler_behavior_enum>* enumMap,
 
5010
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
5011
)
 
5012
{
 
5013
    return toEnumDataPrefix<ENUM__sampler_behavior_enum, StringHash, ENUM__sampler_behavior_enum__COUNT, &toEnum_ENUM__sampler_behavior_enum>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
5014
}
 
5015
 
 
5016
//---------------------------------------------------------------------
 
5017
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__sampler_behavior_enum (
 
5018
    const ParserChar* text,
 
5019
    size_t textLength,
 
5020
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__sampler_behavior_enum*, size_t ),
 
5021
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
5022
)
 
5023
{
 
5024
    return characterData2EnumData<ENUM__sampler_behavior_enum, StringHash, ENUM__sampler_behavior_enum__COUNT>(text, textLength, dataFunction, ENUM__sampler_behavior_enumMap, baseConversionFunc, &toEnum_ENUM__sampler_behavior_enum, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__sampler_behavior_enum);
 
5025
}
 
5026
 
 
5027
//---------------------------------------------------------------------
 
5028
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__sampler_behavior_enum (
 
5029
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__sampler_behavior_enum*, size_t ),
 
5030
    const std::pair<StringHash, ENUM__sampler_behavior_enum>* enumMap,
 
5031
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
5032
    ENUM__sampler_behavior_enum (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__sampler_behavior_enum>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
5033
)
 
5034
{
 
5035
    return dataEnumEnd<ENUM__sampler_behavior_enum, StringHash, ENUM__sampler_behavior_enum__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
5036
}
 
5037
 
 
5038
//---------------------------------------------------------------------
 
5039
const input____input_local_type__AttributeData input____input_local_type__AttributeData::DEFAULT = {0, 0};
 
5040
 
 
5041
//---------------------------------------------------------------------
 
5042
bool ColladaParserAutoGen15Private::_data__input____input_local_type( const ParserChar* text, size_t textLength )
 
5043
{
 
5044
    return true;
 
5045
}
 
5046
 
 
5047
//---------------------------------------------------------------------
 
5048
bool ColladaParserAutoGen15Private::_preBegin__input____input_local_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
5049
{
 
5050
#ifdef GENERATEDSAXPARSER_VALIDATION
 
5051
    if ( mValidate )
 
5052
    {
 
5053
 
 
5054
        bool validationResult = _validateBegin__input____input_local_type( attributes, attributeDataPtr, validationDataPtr );
 
5055
        if ( !validationResult ) return false;
 
5056
 
 
5057
    } // validation
 
5058
#endif
 
5059
 
 
5060
input____input_local_type__AttributeData* attributeData = newData<input____input_local_type__AttributeData>(attributeDataPtr);
 
5061
 
 
5062
const ParserChar** attributeArray = attributes.attributes;
 
5063
if ( attributeArray )
 
5064
{
 
5065
    while (true)
 
5066
    {
 
5067
        const ParserChar * attribute = *attributeArray;
 
5068
        if ( !attribute )
 
5069
            break;
 
5070
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
5071
        attributeArray++;
 
5072
        if ( !attributeArray )
 
5073
            return false;
 
5074
        const ParserChar* attributeValue = *attributeArray;
 
5075
        attributeArray++;
 
5076
 
 
5077
 
 
5078
    switch ( hash )
 
5079
    {
 
5080
    case HASH_ATTRIBUTE_SEMANTIC:
 
5081
    {
 
5082
 
 
5083
attributeData->semantic = attributeValue;
 
5084
#ifdef GENERATEDSAXPARSER_VALIDATION
 
5085
    if ( mValidate )
 
5086
    {
 
5087
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKEN(attributeData->semantic, strlen(attributeData->semantic));
 
5088
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
5089
    {
 
5090
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
5091
            simpleTypeValidationResult,
 
5092
            HASH_ELEMENT_INPUT,
 
5093
            HASH_ATTRIBUTE_SEMANTIC,
 
5094
            attributeValue) )
 
5095
        {
 
5096
            return false;
 
5097
        }
 
5098
    }
 
5099
    } // validation
 
5100
#endif
 
5101
 
 
5102
    break;
 
5103
    }
 
5104
    case HASH_ATTRIBUTE_SOURCE:
 
5105
    {
 
5106
 
 
5107
attributeData->source = attributeValue;
 
5108
#ifdef GENERATEDSAXPARSER_VALIDATION
 
5109
    if ( mValidate )
 
5110
    {
 
5111
    ParserError::ErrorType simpleTypeValidationResult = validate__urifragment_type(attributeData->source, strlen(attributeData->source));
 
5112
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
5113
    {
 
5114
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
5115
            simpleTypeValidationResult,
 
5116
            HASH_ELEMENT_INPUT,
 
5117
            HASH_ATTRIBUTE_SOURCE,
 
5118
            attributeValue) )
 
5119
        {
 
5120
            return false;
 
5121
        }
 
5122
    }
 
5123
    } // validation
 
5124
#endif
 
5125
 
 
5126
    break;
 
5127
    }
 
5128
    default:
 
5129
    {
 
5130
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_INPUT, attribute, attributeValue))
 
5131
            {return false;}
 
5132
    }
 
5133
    }
 
5134
    }
 
5135
}
 
5136
if ( !attributeData->semantic )
 
5137
{
 
5138
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_INPUT, HASH_ATTRIBUTE_SEMANTIC, 0 ) )
 
5139
        return false;
 
5140
}
 
5141
if ( !attributeData->source )
 
5142
{
 
5143
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_INPUT, HASH_ATTRIBUTE_SOURCE, 0 ) )
 
5144
        return false;
 
5145
}
 
5146
 
 
5147
 
 
5148
    return true;
 
5149
}
 
5150
 
 
5151
//---------------------------------------------------------------------
 
5152
bool ColladaParserAutoGen15Private::_preEnd__input____input_local_type()
 
5153
{
 
5154
#ifdef GENERATEDSAXPARSER_VALIDATION
 
5155
    if ( mValidate )
 
5156
    {
 
5157
 
 
5158
        bool validationResult = _validateEnd__input____input_local_type();
 
5159
        if ( !validationResult ) return false;
 
5160
 
 
5161
    } // validation
 
5162
#endif
 
5163
 
 
5164
    return true;
 
5165
}
 
5166
 
 
5167
//---------------------------------------------------------------------
 
5168
bool ColladaParserAutoGen15Private::_freeAttributes__input____input_local_type( void* attributeData )
 
5169
{
 
5170
    input____input_local_type__AttributeData* typedAttributeData = static_cast<input____input_local_type__AttributeData*>(attributeData);
 
5171
 
 
5172
    typedAttributeData->~input____input_local_type__AttributeData();
 
5173
 
 
5174
    return true;
 
5175
}
 
5176
 
 
5177
//---------------------------------------------------------------------
 
5178
const channel__AttributeData channel__AttributeData::DEFAULT = {0, 0};
 
5179
 
 
5180
//---------------------------------------------------------------------
 
5181
bool ColladaParserAutoGen15Private::_data__channel( const ParserChar* text, size_t textLength )
 
5182
{
 
5183
    return true;
 
5184
}
 
5185
 
 
5186
//---------------------------------------------------------------------
 
5187
bool ColladaParserAutoGen15Private::_preBegin__channel( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
5188
{
 
5189
#ifdef GENERATEDSAXPARSER_VALIDATION
 
5190
    if ( mValidate )
 
5191
    {
 
5192
 
 
5193
        bool validationResult = _validateBegin__channel( attributes, attributeDataPtr, validationDataPtr );
 
5194
        if ( !validationResult ) return false;
 
5195
 
 
5196
    } // validation
 
5197
#endif
 
5198
 
 
5199
channel__AttributeData* attributeData = newData<channel__AttributeData>(attributeDataPtr);
 
5200
 
 
5201
const ParserChar** attributeArray = attributes.attributes;
 
5202
if ( attributeArray )
 
5203
{
 
5204
    while (true)
 
5205
    {
 
5206
        const ParserChar * attribute = *attributeArray;
 
5207
        if ( !attribute )
 
5208
            break;
 
5209
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
5210
        attributeArray++;
 
5211
        if ( !attributeArray )
 
5212
            return false;
 
5213
        const ParserChar* attributeValue = *attributeArray;
 
5214
        attributeArray++;
 
5215
 
 
5216
 
 
5217
    switch ( hash )
 
5218
    {
 
5219
    case HASH_ATTRIBUTE_SOURCE:
 
5220
    {
 
5221
 
 
5222
attributeData->source = attributeValue;
 
5223
#ifdef GENERATEDSAXPARSER_VALIDATION
 
5224
    if ( mValidate )
 
5225
    {
 
5226
    ParserError::ErrorType simpleTypeValidationResult = validate__urifragment_type(attributeData->source, strlen(attributeData->source));
 
5227
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
5228
    {
 
5229
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
5230
            simpleTypeValidationResult,
 
5231
            HASH_ELEMENT_CHANNEL,
 
5232
            HASH_ATTRIBUTE_SOURCE,
 
5233
            attributeValue) )
 
5234
        {
 
5235
            return false;
 
5236
        }
 
5237
    }
 
5238
    } // validation
 
5239
#endif
 
5240
 
 
5241
    break;
 
5242
    }
 
5243
    case HASH_ATTRIBUTE_TARGET:
 
5244
    {
 
5245
 
 
5246
attributeData->target = attributeValue;
 
5247
 
 
5248
    break;
 
5249
    }
 
5250
    default:
 
5251
    {
 
5252
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_CHANNEL, attribute, attributeValue))
 
5253
            {return false;}
 
5254
    }
 
5255
    }
 
5256
    }
 
5257
}
 
5258
if ( !attributeData->source )
 
5259
{
 
5260
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_CHANNEL, HASH_ATTRIBUTE_SOURCE, 0 ) )
 
5261
        return false;
 
5262
}
 
5263
if ( !attributeData->target )
 
5264
{
 
5265
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_CHANNEL, HASH_ATTRIBUTE_TARGET, 0 ) )
 
5266
        return false;
 
5267
}
 
5268
 
 
5269
 
 
5270
    return true;
 
5271
}
 
5272
 
 
5273
//---------------------------------------------------------------------
 
5274
bool ColladaParserAutoGen15Private::_preEnd__channel()
 
5275
{
 
5276
#ifdef GENERATEDSAXPARSER_VALIDATION
 
5277
    if ( mValidate )
 
5278
    {
 
5279
 
 
5280
        bool validationResult = _validateEnd__channel();
 
5281
        if ( !validationResult ) return false;
 
5282
 
 
5283
    } // validation
 
5284
#endif
 
5285
 
 
5286
    return true;
 
5287
}
 
5288
 
 
5289
//---------------------------------------------------------------------
 
5290
bool ColladaParserAutoGen15Private::_freeAttributes__channel( void* attributeData )
 
5291
{
 
5292
    channel__AttributeData* typedAttributeData = static_cast<channel__AttributeData*>(attributeData);
 
5293
 
 
5294
    typedAttributeData->~channel__AttributeData();
 
5295
 
 
5296
    return true;
 
5297
}
 
5298
 
 
5299
//---------------------------------------------------------------------
 
5300
const library_animation_clips__AttributeData library_animation_clips__AttributeData::DEFAULT = {0, 0};
 
5301
 
 
5302
//---------------------------------------------------------------------
 
5303
bool ColladaParserAutoGen15Private::_data__library_animation_clips( const ParserChar* text, size_t textLength )
 
5304
{
 
5305
    return true;
 
5306
}
 
5307
 
 
5308
//---------------------------------------------------------------------
 
5309
bool ColladaParserAutoGen15Private::_preBegin__library_animation_clips( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
5310
{
 
5311
#ifdef GENERATEDSAXPARSER_VALIDATION
 
5312
    if ( mValidate )
 
5313
    {
 
5314
 
 
5315
        bool validationResult = _validateBegin__library_animation_clips( attributes, attributeDataPtr, validationDataPtr );
 
5316
        if ( !validationResult ) return false;
 
5317
 
 
5318
    } // validation
 
5319
#endif
 
5320
 
 
5321
library_animation_clips__AttributeData* attributeData = newData<library_animation_clips__AttributeData>(attributeDataPtr);
 
5322
 
 
5323
const ParserChar** attributeArray = attributes.attributes;
 
5324
if ( attributeArray )
 
5325
{
 
5326
    while (true)
 
5327
    {
 
5328
        const ParserChar * attribute = *attributeArray;
 
5329
        if ( !attribute )
 
5330
            break;
 
5331
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
5332
        attributeArray++;
 
5333
        if ( !attributeArray )
 
5334
            return false;
 
5335
        const ParserChar* attributeValue = *attributeArray;
 
5336
        attributeArray++;
 
5337
 
 
5338
 
 
5339
    switch ( hash )
 
5340
    {
 
5341
    case HASH_ATTRIBUTE_ID:
 
5342
    {
 
5343
 
 
5344
attributeData->id = attributeValue;
 
5345
 
 
5346
    break;
 
5347
    }
 
5348
    case HASH_ATTRIBUTE_NAME:
 
5349
    {
 
5350
 
 
5351
attributeData->name = attributeValue;
 
5352
 
 
5353
    break;
 
5354
    }
 
5355
    default:
 
5356
    {
 
5357
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIBRARY_ANIMATION_CLIPS, attribute, attributeValue))
 
5358
            {return false;}
 
5359
    }
 
5360
    }
 
5361
    }
 
5362
}
 
5363
 
 
5364
 
 
5365
    return true;
 
5366
}
 
5367
 
 
5368
//---------------------------------------------------------------------
 
5369
bool ColladaParserAutoGen15Private::_preEnd__library_animation_clips()
 
5370
{
 
5371
#ifdef GENERATEDSAXPARSER_VALIDATION
 
5372
    if ( mValidate )
 
5373
    {
 
5374
 
 
5375
        bool validationResult = _validateEnd__library_animation_clips();
 
5376
        if ( !validationResult ) return false;
 
5377
 
 
5378
    } // validation
 
5379
#endif
 
5380
 
 
5381
    return true;
 
5382
}
 
5383
 
 
5384
//---------------------------------------------------------------------
 
5385
bool ColladaParserAutoGen15Private::_freeAttributes__library_animation_clips( void* attributeData )
 
5386
{
 
5387
    library_animation_clips__AttributeData* typedAttributeData = static_cast<library_animation_clips__AttributeData*>(attributeData);
 
5388
 
 
5389
    typedAttributeData->~library_animation_clips__AttributeData();
 
5390
 
 
5391
    return true;
 
5392
}
 
5393
 
 
5394
//---------------------------------------------------------------------
 
5395
const animation_clip__AttributeData animation_clip__AttributeData::DEFAULT = {0, 0, 0, 0.0E1, 0};
 
5396
 
 
5397
//---------------------------------------------------------------------
 
5398
bool ColladaParserAutoGen15Private::_data__animation_clip( const ParserChar* text, size_t textLength )
 
5399
{
 
5400
    return true;
 
5401
}
 
5402
 
 
5403
//---------------------------------------------------------------------
 
5404
bool ColladaParserAutoGen15Private::_preBegin__animation_clip( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
5405
{
 
5406
#ifdef GENERATEDSAXPARSER_VALIDATION
 
5407
    if ( mValidate )
 
5408
    {
 
5409
 
 
5410
        bool validationResult = _validateBegin__animation_clip( attributes, attributeDataPtr, validationDataPtr );
 
5411
        if ( !validationResult ) return false;
 
5412
 
 
5413
    } // validation
 
5414
#endif
 
5415
 
 
5416
animation_clip__AttributeData* attributeData = newData<animation_clip__AttributeData>(attributeDataPtr);
 
5417
 
 
5418
const ParserChar** attributeArray = attributes.attributes;
 
5419
if ( attributeArray )
 
5420
{
 
5421
    while (true)
 
5422
    {
 
5423
        const ParserChar * attribute = *attributeArray;
 
5424
        if ( !attribute )
 
5425
            break;
 
5426
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
5427
        attributeArray++;
 
5428
        if ( !attributeArray )
 
5429
            return false;
 
5430
        const ParserChar* attributeValue = *attributeArray;
 
5431
        attributeArray++;
 
5432
 
 
5433
 
 
5434
    switch ( hash )
 
5435
    {
 
5436
    case HASH_ATTRIBUTE_ID:
 
5437
    {
 
5438
 
 
5439
attributeData->id = attributeValue;
 
5440
 
 
5441
    break;
 
5442
    }
 
5443
    case HASH_ATTRIBUTE_NAME:
 
5444
    {
 
5445
 
 
5446
attributeData->name = attributeValue;
 
5447
 
 
5448
    break;
 
5449
    }
 
5450
    case HASH_ATTRIBUTE_START:
 
5451
    {
 
5452
bool failed;
 
5453
attributeData->start = GeneratedSaxParser::Utils::toFloat(attributeValue, failed);
 
5454
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
5455
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
5456
        HASH_ELEMENT_ANIMATION_CLIP,
 
5457
        HASH_ATTRIBUTE_START,
 
5458
        attributeValue))
 
5459
{
 
5460
    return false;
 
5461
}
 
5462
 
 
5463
    break;
 
5464
    }
 
5465
    case HASH_ATTRIBUTE_END:
 
5466
    {
 
5467
bool failed;
 
5468
attributeData->end = GeneratedSaxParser::Utils::toFloat(attributeValue, failed);
 
5469
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
5470
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
5471
        HASH_ELEMENT_ANIMATION_CLIP,
 
5472
        HASH_ATTRIBUTE_END,
 
5473
        attributeValue))
 
5474
{
 
5475
    return false;
 
5476
}
 
5477
if ( !failed )
 
5478
    attributeData->present_attributes |= animation_clip__AttributeData::ATTRIBUTE_END_PRESENT;
 
5479
 
 
5480
    break;
 
5481
    }
 
5482
    default:
 
5483
    {
 
5484
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_ANIMATION_CLIP, attribute, attributeValue))
 
5485
            {return false;}
 
5486
    }
 
5487
    }
 
5488
    }
 
5489
}
 
5490
 
 
5491
 
 
5492
    return true;
 
5493
}
 
5494
 
 
5495
//---------------------------------------------------------------------
 
5496
bool ColladaParserAutoGen15Private::_preEnd__animation_clip()
 
5497
{
 
5498
#ifdef GENERATEDSAXPARSER_VALIDATION
 
5499
    if ( mValidate )
 
5500
    {
 
5501
 
 
5502
        bool validationResult = _validateEnd__animation_clip();
 
5503
        if ( !validationResult ) return false;
 
5504
 
 
5505
    } // validation
 
5506
#endif
 
5507
 
 
5508
    return true;
 
5509
}
 
5510
 
 
5511
//---------------------------------------------------------------------
 
5512
bool ColladaParserAutoGen15Private::_freeAttributes__animation_clip( void* attributeData )
 
5513
{
 
5514
    animation_clip__AttributeData* typedAttributeData = static_cast<animation_clip__AttributeData*>(attributeData);
 
5515
 
 
5516
    typedAttributeData->~animation_clip__AttributeData();
 
5517
 
 
5518
    return true;
 
5519
}
 
5520
 
 
5521
//---------------------------------------------------------------------
 
5522
const instance_animation__AttributeData instance_animation__AttributeData::DEFAULT = {0, 0, 0, 0};
 
5523
 
 
5524
//---------------------------------------------------------------------
 
5525
bool ColladaParserAutoGen15Private::_data__instance_animation( const ParserChar* text, size_t textLength )
 
5526
{
 
5527
    return true;
 
5528
}
 
5529
 
 
5530
//---------------------------------------------------------------------
 
5531
bool ColladaParserAutoGen15Private::_preBegin__instance_animation( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
5532
{
 
5533
#ifdef GENERATEDSAXPARSER_VALIDATION
 
5534
    if ( mValidate )
 
5535
    {
 
5536
 
 
5537
        bool validationResult = _validateBegin__instance_animation( attributes, attributeDataPtr, validationDataPtr );
 
5538
        if ( !validationResult ) return false;
 
5539
 
 
5540
    } // validation
 
5541
#endif
 
5542
 
 
5543
instance_animation__AttributeData* attributeData = newData<instance_animation__AttributeData>(attributeDataPtr);
 
5544
 
 
5545
const ParserChar** attributeArray = attributes.attributes;
 
5546
if ( attributeArray )
 
5547
{
 
5548
    while (true)
 
5549
    {
 
5550
        const ParserChar * attribute = *attributeArray;
 
5551
        if ( !attribute )
 
5552
            break;
 
5553
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
5554
        attributeArray++;
 
5555
        if ( !attributeArray )
 
5556
            return false;
 
5557
        const ParserChar* attributeValue = *attributeArray;
 
5558
        attributeArray++;
 
5559
 
 
5560
 
 
5561
    switch ( hash )
 
5562
    {
 
5563
    case HASH_ATTRIBUTE_URL:
 
5564
    {
 
5565
bool failed;
 
5566
attributeData->url = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
5567
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
5568
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
5569
        HASH_ELEMENT_INSTANCE_ANIMATION,
 
5570
        HASH_ATTRIBUTE_URL,
 
5571
        attributeValue))
 
5572
{
 
5573
    return false;
 
5574
}
 
5575
if ( !failed )
 
5576
    attributeData->present_attributes |= instance_animation__AttributeData::ATTRIBUTE_URL_PRESENT;
 
5577
 
 
5578
    break;
 
5579
    }
 
5580
    case HASH_ATTRIBUTE_SID:
 
5581
    {
 
5582
 
 
5583
attributeData->sid = attributeValue;
 
5584
#ifdef GENERATEDSAXPARSER_VALIDATION
 
5585
    if ( mValidate )
 
5586
    {
 
5587
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
5588
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
5589
    {
 
5590
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
5591
            simpleTypeValidationResult,
 
5592
            HASH_ELEMENT_INSTANCE_ANIMATION,
 
5593
            HASH_ATTRIBUTE_SID,
 
5594
            attributeValue) )
 
5595
        {
 
5596
            return false;
 
5597
        }
 
5598
    }
 
5599
    } // validation
 
5600
#endif
 
5601
 
 
5602
    break;
 
5603
    }
 
5604
    case HASH_ATTRIBUTE_NAME:
 
5605
    {
 
5606
 
 
5607
attributeData->name = attributeValue;
 
5608
 
 
5609
    break;
 
5610
    }
 
5611
    default:
 
5612
    {
 
5613
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_INSTANCE_ANIMATION, attribute, attributeValue))
 
5614
            {return false;}
 
5615
    }
 
5616
    }
 
5617
    }
 
5618
}
 
5619
if ((attributeData->present_attributes & instance_animation__AttributeData::ATTRIBUTE_URL_PRESENT) == 0)
 
5620
{
 
5621
    attributeData->url = COLLADABU::URI("");
 
5622
}
 
5623
if ( (attributeData->present_attributes & instance_animation__AttributeData::ATTRIBUTE_URL_PRESENT) == 0 )
 
5624
{
 
5625
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_INSTANCE_ANIMATION, HASH_ATTRIBUTE_URL, 0 ) )
 
5626
        return false;
 
5627
}
 
5628
 
 
5629
 
 
5630
    return true;
 
5631
}
 
5632
 
 
5633
//---------------------------------------------------------------------
 
5634
bool ColladaParserAutoGen15Private::_preEnd__instance_animation()
 
5635
{
 
5636
#ifdef GENERATEDSAXPARSER_VALIDATION
 
5637
    if ( mValidate )
 
5638
    {
 
5639
 
 
5640
        bool validationResult = _validateEnd__instance_animation();
 
5641
        if ( !validationResult ) return false;
 
5642
 
 
5643
    } // validation
 
5644
#endif
 
5645
 
 
5646
    return true;
 
5647
}
 
5648
 
 
5649
//---------------------------------------------------------------------
 
5650
bool ColladaParserAutoGen15Private::_freeAttributes__instance_animation( void* attributeData )
 
5651
{
 
5652
    instance_animation__AttributeData* typedAttributeData = static_cast<instance_animation__AttributeData*>(attributeData);
 
5653
 
 
5654
    typedAttributeData->~instance_animation__AttributeData();
 
5655
 
 
5656
    return true;
 
5657
}
 
5658
 
 
5659
//---------------------------------------------------------------------
 
5660
const instance_formula__AttributeData instance_formula__AttributeData::DEFAULT = {0, 0, 0, 0};
 
5661
 
 
5662
//---------------------------------------------------------------------
 
5663
bool ColladaParserAutoGen15Private::_data__instance_formula( const ParserChar* text, size_t textLength )
 
5664
{
 
5665
    return true;
 
5666
}
 
5667
 
 
5668
//---------------------------------------------------------------------
 
5669
bool ColladaParserAutoGen15Private::_preBegin__instance_formula( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
5670
{
 
5671
#ifdef GENERATEDSAXPARSER_VALIDATION
 
5672
    if ( mValidate )
 
5673
    {
 
5674
 
 
5675
        bool validationResult = _validateBegin__instance_formula( attributes, attributeDataPtr, validationDataPtr );
 
5676
        if ( !validationResult ) return false;
 
5677
 
 
5678
    } // validation
 
5679
#endif
 
5680
 
 
5681
instance_formula__AttributeData* attributeData = newData<instance_formula__AttributeData>(attributeDataPtr);
 
5682
 
 
5683
const ParserChar** attributeArray = attributes.attributes;
 
5684
if ( attributeArray )
 
5685
{
 
5686
    while (true)
 
5687
    {
 
5688
        const ParserChar * attribute = *attributeArray;
 
5689
        if ( !attribute )
 
5690
            break;
 
5691
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
5692
        attributeArray++;
 
5693
        if ( !attributeArray )
 
5694
            return false;
 
5695
        const ParserChar* attributeValue = *attributeArray;
 
5696
        attributeArray++;
 
5697
 
 
5698
 
 
5699
    switch ( hash )
 
5700
    {
 
5701
    case HASH_ATTRIBUTE_SID:
 
5702
    {
 
5703
 
 
5704
attributeData->sid = attributeValue;
 
5705
#ifdef GENERATEDSAXPARSER_VALIDATION
 
5706
    if ( mValidate )
 
5707
    {
 
5708
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
5709
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
5710
    {
 
5711
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
5712
            simpleTypeValidationResult,
 
5713
            HASH_ELEMENT_INSTANCE_FORMULA,
 
5714
            HASH_ATTRIBUTE_SID,
 
5715
            attributeValue) )
 
5716
        {
 
5717
            return false;
 
5718
        }
 
5719
    }
 
5720
    } // validation
 
5721
#endif
 
5722
 
 
5723
    break;
 
5724
    }
 
5725
    case HASH_ATTRIBUTE_NAME:
 
5726
    {
 
5727
 
 
5728
attributeData->name = attributeValue;
 
5729
 
 
5730
    break;
 
5731
    }
 
5732
    case HASH_ATTRIBUTE_URL:
 
5733
    {
 
5734
bool failed;
 
5735
attributeData->url = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
5736
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
5737
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
5738
        HASH_ELEMENT_INSTANCE_FORMULA,
 
5739
        HASH_ATTRIBUTE_URL,
 
5740
        attributeValue))
 
5741
{
 
5742
    return false;
 
5743
}
 
5744
if ( !failed )
 
5745
    attributeData->present_attributes |= instance_formula__AttributeData::ATTRIBUTE_URL_PRESENT;
 
5746
 
 
5747
    break;
 
5748
    }
 
5749
    default:
 
5750
    {
 
5751
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_INSTANCE_FORMULA, attribute, attributeValue))
 
5752
            {return false;}
 
5753
    }
 
5754
    }
 
5755
    }
 
5756
}
 
5757
if ((attributeData->present_attributes & instance_formula__AttributeData::ATTRIBUTE_URL_PRESENT) == 0)
 
5758
{
 
5759
    attributeData->url = COLLADABU::URI("");
 
5760
}
 
5761
 
 
5762
 
 
5763
    return true;
 
5764
}
 
5765
 
 
5766
//---------------------------------------------------------------------
 
5767
bool ColladaParserAutoGen15Private::_preEnd__instance_formula()
 
5768
{
 
5769
#ifdef GENERATEDSAXPARSER_VALIDATION
 
5770
    if ( mValidate )
 
5771
    {
 
5772
 
 
5773
        bool validationResult = _validateEnd__instance_formula();
 
5774
        if ( !validationResult ) return false;
 
5775
 
 
5776
    } // validation
 
5777
#endif
 
5778
 
 
5779
    return true;
 
5780
}
 
5781
 
 
5782
//---------------------------------------------------------------------
 
5783
bool ColladaParserAutoGen15Private::_freeAttributes__instance_formula( void* attributeData )
 
5784
{
 
5785
    instance_formula__AttributeData* typedAttributeData = static_cast<instance_formula__AttributeData*>(attributeData);
 
5786
 
 
5787
    typedAttributeData->~instance_formula__AttributeData();
 
5788
 
 
5789
    return true;
 
5790
}
 
5791
 
 
5792
//---------------------------------------------------------------------
 
5793
const setparam____formula_setparam_type__AttributeData setparam____formula_setparam_type__AttributeData::DEFAULT = {0};
 
5794
 
 
5795
//---------------------------------------------------------------------
 
5796
bool ColladaParserAutoGen15Private::_data__setparam____formula_setparam_type( const ParserChar* text, size_t textLength )
 
5797
{
 
5798
    return true;
 
5799
}
 
5800
 
 
5801
//---------------------------------------------------------------------
 
5802
bool ColladaParserAutoGen15Private::_preBegin__setparam____formula_setparam_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
5803
{
 
5804
#ifdef GENERATEDSAXPARSER_VALIDATION
 
5805
    if ( mValidate )
 
5806
    {
 
5807
 
 
5808
        bool validationResult = _validateBegin__setparam____formula_setparam_type( attributes, attributeDataPtr, validationDataPtr );
 
5809
        if ( !validationResult ) return false;
 
5810
 
 
5811
    } // validation
 
5812
#endif
 
5813
 
 
5814
setparam____formula_setparam_type__AttributeData* attributeData = newData<setparam____formula_setparam_type__AttributeData>(attributeDataPtr);
 
5815
 
 
5816
const ParserChar** attributeArray = attributes.attributes;
 
5817
if ( attributeArray )
 
5818
{
 
5819
    while (true)
 
5820
    {
 
5821
        const ParserChar * attribute = *attributeArray;
 
5822
        if ( !attribute )
 
5823
            break;
 
5824
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
5825
        attributeArray++;
 
5826
        if ( !attributeArray )
 
5827
            return false;
 
5828
        const ParserChar* attributeValue = *attributeArray;
 
5829
        attributeArray++;
 
5830
 
 
5831
 
 
5832
    switch ( hash )
 
5833
    {
 
5834
    case HASH_ATTRIBUTE_REF:
 
5835
    {
 
5836
 
 
5837
attributeData->ref = attributeValue;
 
5838
 
 
5839
    break;
 
5840
    }
 
5841
    default:
 
5842
    {
 
5843
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SETPARAM, attribute, attributeValue))
 
5844
            {return false;}
 
5845
    }
 
5846
    }
 
5847
    }
 
5848
}
 
5849
if ( !attributeData->ref )
 
5850
{
 
5851
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_SETPARAM, HASH_ATTRIBUTE_REF, 0 ) )
 
5852
        return false;
 
5853
}
 
5854
 
 
5855
 
 
5856
    return true;
 
5857
}
 
5858
 
 
5859
//---------------------------------------------------------------------
 
5860
bool ColladaParserAutoGen15Private::_preEnd__setparam____formula_setparam_type()
 
5861
{
 
5862
#ifdef GENERATEDSAXPARSER_VALIDATION
 
5863
    if ( mValidate )
 
5864
    {
 
5865
 
 
5866
        bool validationResult = _validateEnd__setparam____formula_setparam_type();
 
5867
        if ( !validationResult ) return false;
 
5868
 
 
5869
    } // validation
 
5870
#endif
 
5871
 
 
5872
    return true;
 
5873
}
 
5874
 
 
5875
//---------------------------------------------------------------------
 
5876
bool ColladaParserAutoGen15Private::_freeAttributes__setparam____formula_setparam_type( void* attributeData )
 
5877
{
 
5878
    setparam____formula_setparam_type__AttributeData* typedAttributeData = static_cast<setparam____formula_setparam_type__AttributeData*>(attributeData);
 
5879
 
 
5880
    typedAttributeData->~setparam____formula_setparam_type__AttributeData();
 
5881
 
 
5882
    return true;
 
5883
}
 
5884
 
 
5885
//---------------------------------------------------------------------
 
5886
bool ColladaParserAutoGen15Private::_data__float____float_type( const ParserChar* text, size_t textLength )
 
5887
{
 
5888
if (!mLastIncompleteFragmentInCharacterData)
 
5889
{
 
5890
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
5891
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
5892
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
5893
}
 
5894
else
 
5895
{
 
5896
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
5897
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
5898
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
5899
        mLastIncompleteFragmentInCharacterData = tmp;
 
5900
    }
 
5901
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
5902
    mEndOfDataInCurrentObjectOnStack += textLength;
 
5903
}
 
5904
return true;
 
5905
}
 
5906
 
 
5907
//---------------------------------------------------------------------
 
5908
bool ColladaParserAutoGen15Private::_preBegin__float____float_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
5909
{
 
5910
#ifdef GENERATEDSAXPARSER_VALIDATION
 
5911
    if ( mValidate )
 
5912
    {
 
5913
 
 
5914
        bool validationResult = _validateBegin__float____float_type( attributes, attributeDataPtr, validationDataPtr );
 
5915
        if ( !validationResult ) return false;
 
5916
 
 
5917
    } // validation
 
5918
#endif
 
5919
 
 
5920
    return true;
 
5921
}
 
5922
 
 
5923
//---------------------------------------------------------------------
 
5924
bool ColladaParserAutoGen15Private::_preEnd__float____float_type()
 
5925
{
 
5926
#ifdef GENERATEDSAXPARSER_VALIDATION
 
5927
    if ( mValidate )
 
5928
    {
 
5929
 
 
5930
        bool validationResult = _validateEnd__float____float_type();
 
5931
        if ( !validationResult ) return false;
 
5932
 
 
5933
    } // validation
 
5934
#endif
 
5935
 
 
5936
bool failed;
 
5937
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
5938
DISABLE_WARNING_UNUSED(ptrForErr)
 
5939
float parameter = GeneratedSaxParser::Utils::toFloat((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
5940
bool returnValue;
 
5941
if (!failed)
 
5942
{
 
5943
    returnValue = mImpl->data__float____float_type(parameter);
 
5944
}
 
5945
else
 
5946
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_FLOAT, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
5947
if (mLastIncompleteFragmentInCharacterData)
 
5948
    mStackMemoryManager.deleteObject();
 
5949
mLastIncompleteFragmentInCharacterData = 0;
 
5950
mEndOfDataInCurrentObjectOnStack = 0;
 
5951
return returnValue;
 
5952
}
 
5953
 
 
5954
//---------------------------------------------------------------------
 
5955
bool ColladaParserAutoGen15Private::_freeAttributes__float____float_type( void* attributeData )
 
5956
{
 
5957
    return true;
 
5958
}
 
5959
 
 
5960
//---------------------------------------------------------------------
 
5961
bool ColladaParserAutoGen15Private::_data__int____int_type( const ParserChar* text, size_t textLength )
 
5962
{
 
5963
if (!mLastIncompleteFragmentInCharacterData)
 
5964
{
 
5965
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
5966
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
5967
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
5968
}
 
5969
else
 
5970
{
 
5971
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
5972
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
5973
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
5974
        mLastIncompleteFragmentInCharacterData = tmp;
 
5975
    }
 
5976
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
5977
    mEndOfDataInCurrentObjectOnStack += textLength;
 
5978
}
 
5979
return true;
 
5980
}
 
5981
 
 
5982
//---------------------------------------------------------------------
 
5983
bool ColladaParserAutoGen15Private::_preBegin__int____int_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
5984
{
 
5985
#ifdef GENERATEDSAXPARSER_VALIDATION
 
5986
    if ( mValidate )
 
5987
    {
 
5988
 
 
5989
        bool validationResult = _validateBegin__int____int_type( attributes, attributeDataPtr, validationDataPtr );
 
5990
        if ( !validationResult ) return false;
 
5991
 
 
5992
    } // validation
 
5993
#endif
 
5994
 
 
5995
    return true;
 
5996
}
 
5997
 
 
5998
//---------------------------------------------------------------------
 
5999
bool ColladaParserAutoGen15Private::_preEnd__int____int_type()
 
6000
{
 
6001
#ifdef GENERATEDSAXPARSER_VALIDATION
 
6002
    if ( mValidate )
 
6003
    {
 
6004
 
 
6005
        bool validationResult = _validateEnd__int____int_type();
 
6006
        if ( !validationResult ) return false;
 
6007
 
 
6008
    } // validation
 
6009
#endif
 
6010
 
 
6011
bool failed;
 
6012
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
6013
DISABLE_WARNING_UNUSED(ptrForErr)
 
6014
sint64 parameter = GeneratedSaxParser::Utils::toSint64((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
6015
bool returnValue;
 
6016
if (!failed)
 
6017
{
 
6018
    returnValue = mImpl->data__int____int_type(parameter);
 
6019
}
 
6020
else
 
6021
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_INT, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
6022
if (mLastIncompleteFragmentInCharacterData)
 
6023
    mStackMemoryManager.deleteObject();
 
6024
mLastIncompleteFragmentInCharacterData = 0;
 
6025
mEndOfDataInCurrentObjectOnStack = 0;
 
6026
return returnValue;
 
6027
}
 
6028
 
 
6029
//---------------------------------------------------------------------
 
6030
bool ColladaParserAutoGen15Private::_freeAttributes__int____int_type( void* attributeData )
 
6031
{
 
6032
    return true;
 
6033
}
 
6034
 
 
6035
//---------------------------------------------------------------------
 
6036
bool ColladaParserAutoGen15Private::_data__SIDREF( const ParserChar* text, size_t textLength )
 
6037
{
 
6038
if (!mLastIncompleteFragmentInCharacterData)
 
6039
{
 
6040
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
6041
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
6042
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
6043
}
 
6044
else
 
6045
{
 
6046
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
6047
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
6048
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
6049
        mLastIncompleteFragmentInCharacterData = tmp;
 
6050
    }
 
6051
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
6052
    mEndOfDataInCurrentObjectOnStack += textLength;
 
6053
}
 
6054
return true;
 
6055
}
 
6056
 
 
6057
//---------------------------------------------------------------------
 
6058
bool ColladaParserAutoGen15Private::_preBegin__SIDREF( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
6059
{
 
6060
#ifdef GENERATEDSAXPARSER_VALIDATION
 
6061
    if ( mValidate )
 
6062
    {
 
6063
 
 
6064
        bool validationResult = _validateBegin__SIDREF( attributes, attributeDataPtr, validationDataPtr );
 
6065
        if ( !validationResult ) return false;
 
6066
 
 
6067
    } // validation
 
6068
#endif
 
6069
 
 
6070
    return true;
 
6071
}
 
6072
 
 
6073
//---------------------------------------------------------------------
 
6074
bool ColladaParserAutoGen15Private::_preEnd__SIDREF()
 
6075
{
 
6076
#ifdef GENERATEDSAXPARSER_VALIDATION
 
6077
    if ( mValidate )
 
6078
    {
 
6079
 
 
6080
        bool validationResult = _validateEnd__SIDREF();
 
6081
        if ( !validationResult ) return false;
 
6082
 
 
6083
    } // validation
 
6084
#endif
 
6085
 
 
6086
bool returnValue = true;
 
6087
#ifdef GENERATEDSAXPARSER_VALIDATION
 
6088
    if ( mValidate )
 
6089
    {
 
6090
ParserError::ErrorType simpleTypeValidationResult = validate__sidref_type(mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData);
 
6091
if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
6092
{
 
6093
    ParserChar msg[21];
 
6094
    Utils::fillErrorMsg(msg, mLastIncompleteFragmentInCharacterData, 20);
 
6095
    if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
6096
        simpleTypeValidationResult,
 
6097
        0,
 
6098
        msg) )
 
6099
    {
 
6100
        returnValue =  false;
 
6101
    }
 
6102
}
 
6103
if (!returnValue)
 
6104
{
 
6105
    mStackMemoryManager.deleteObject();
 
6106
    mLastIncompleteFragmentInCharacterData = 0;
 
6107
    mEndOfDataInCurrentObjectOnStack = 0;
 
6108
    return returnValue;
 
6109
}
 
6110
    } // validation
 
6111
#endif
 
6112
returnValue = mImpl->data__SIDREF(mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData);
 
6113
mStackMemoryManager.deleteObject();
 
6114
mLastIncompleteFragmentInCharacterData = 0;
 
6115
mEndOfDataInCurrentObjectOnStack = 0;
 
6116
return returnValue;
 
6117
 
 
6118
}
 
6119
 
 
6120
//---------------------------------------------------------------------
 
6121
bool ColladaParserAutoGen15Private::_freeAttributes__SIDREF( void* attributeData )
 
6122
{
 
6123
    return true;
 
6124
}
 
6125
 
 
6126
//---------------------------------------------------------------------
 
6127
bool ColladaParserAutoGen15Private::_data__bool( const ParserChar* text, size_t textLength )
 
6128
{
 
6129
if (!mLastIncompleteFragmentInCharacterData)
 
6130
{
 
6131
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
6132
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
6133
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
6134
}
 
6135
else
 
6136
{
 
6137
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
6138
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
6139
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
6140
        mLastIncompleteFragmentInCharacterData = tmp;
 
6141
    }
 
6142
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
6143
    mEndOfDataInCurrentObjectOnStack += textLength;
 
6144
}
 
6145
return true;
 
6146
}
 
6147
 
 
6148
//---------------------------------------------------------------------
 
6149
bool ColladaParserAutoGen15Private::_preBegin__bool( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
6150
{
 
6151
#ifdef GENERATEDSAXPARSER_VALIDATION
 
6152
    if ( mValidate )
 
6153
    {
 
6154
 
 
6155
        bool validationResult = _validateBegin__bool( attributes, attributeDataPtr, validationDataPtr );
 
6156
        if ( !validationResult ) return false;
 
6157
 
 
6158
    } // validation
 
6159
#endif
 
6160
 
 
6161
    return true;
 
6162
}
 
6163
 
 
6164
//---------------------------------------------------------------------
 
6165
bool ColladaParserAutoGen15Private::_preEnd__bool()
 
6166
{
 
6167
#ifdef GENERATEDSAXPARSER_VALIDATION
 
6168
    if ( mValidate )
 
6169
    {
 
6170
 
 
6171
        bool validationResult = _validateEnd__bool();
 
6172
        if ( !validationResult ) return false;
 
6173
 
 
6174
    } // validation
 
6175
#endif
 
6176
 
 
6177
bool failed;
 
6178
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
6179
DISABLE_WARNING_UNUSED(ptrForErr)
 
6180
bool parameter = GeneratedSaxParser::Utils::toBool((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
6181
bool returnValue;
 
6182
if (!failed)
 
6183
{
 
6184
    returnValue = mImpl->data__bool(parameter);
 
6185
}
 
6186
else
 
6187
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_BOOL, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
6188
if (mLastIncompleteFragmentInCharacterData)
 
6189
    mStackMemoryManager.deleteObject();
 
6190
mLastIncompleteFragmentInCharacterData = 0;
 
6191
mEndOfDataInCurrentObjectOnStack = 0;
 
6192
return returnValue;
 
6193
}
 
6194
 
 
6195
//---------------------------------------------------------------------
 
6196
bool ColladaParserAutoGen15Private::_freeAttributes__bool( void* attributeData )
 
6197
{
 
6198
    return true;
 
6199
}
 
6200
 
 
6201
//---------------------------------------------------------------------
 
6202
const connect_param__AttributeData connect_param__AttributeData::DEFAULT = {0};
 
6203
 
 
6204
//---------------------------------------------------------------------
 
6205
bool ColladaParserAutoGen15Private::_data__connect_param( const ParserChar* text, size_t textLength )
 
6206
{
 
6207
    return true;
 
6208
}
 
6209
 
 
6210
//---------------------------------------------------------------------
 
6211
bool ColladaParserAutoGen15Private::_preBegin__connect_param( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
6212
{
 
6213
#ifdef GENERATEDSAXPARSER_VALIDATION
 
6214
    if ( mValidate )
 
6215
    {
 
6216
 
 
6217
        bool validationResult = _validateBegin__connect_param( attributes, attributeDataPtr, validationDataPtr );
 
6218
        if ( !validationResult ) return false;
 
6219
 
 
6220
    } // validation
 
6221
#endif
 
6222
 
 
6223
connect_param__AttributeData* attributeData = newData<connect_param__AttributeData>(attributeDataPtr);
 
6224
 
 
6225
const ParserChar** attributeArray = attributes.attributes;
 
6226
if ( attributeArray )
 
6227
{
 
6228
    while (true)
 
6229
    {
 
6230
        const ParserChar * attribute = *attributeArray;
 
6231
        if ( !attribute )
 
6232
            break;
 
6233
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
6234
        attributeArray++;
 
6235
        if ( !attributeArray )
 
6236
            return false;
 
6237
        const ParserChar* attributeValue = *attributeArray;
 
6238
        attributeArray++;
 
6239
 
 
6240
 
 
6241
    switch ( hash )
 
6242
    {
 
6243
    case HASH_ATTRIBUTE_REF:
 
6244
    {
 
6245
 
 
6246
attributeData->ref = attributeValue;
 
6247
 
 
6248
    break;
 
6249
    }
 
6250
    default:
 
6251
    {
 
6252
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_CONNECT_PARAM, attribute, attributeValue))
 
6253
            {return false;}
 
6254
    }
 
6255
    }
 
6256
    }
 
6257
}
 
6258
if ( !attributeData->ref )
 
6259
{
 
6260
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_CONNECT_PARAM, HASH_ATTRIBUTE_REF, 0 ) )
 
6261
        return false;
 
6262
}
 
6263
 
 
6264
 
 
6265
    return true;
 
6266
}
 
6267
 
 
6268
//---------------------------------------------------------------------
 
6269
bool ColladaParserAutoGen15Private::_preEnd__connect_param()
 
6270
{
 
6271
#ifdef GENERATEDSAXPARSER_VALIDATION
 
6272
    if ( mValidate )
 
6273
    {
 
6274
 
 
6275
        bool validationResult = _validateEnd__connect_param();
 
6276
        if ( !validationResult ) return false;
 
6277
 
 
6278
    } // validation
 
6279
#endif
 
6280
 
 
6281
    return true;
 
6282
}
 
6283
 
 
6284
//---------------------------------------------------------------------
 
6285
bool ColladaParserAutoGen15Private::_freeAttributes__connect_param( void* attributeData )
 
6286
{
 
6287
    connect_param__AttributeData* typedAttributeData = static_cast<connect_param__AttributeData*>(attributeData);
 
6288
 
 
6289
    typedAttributeData->~connect_param__AttributeData();
 
6290
 
 
6291
    return true;
 
6292
}
 
6293
 
 
6294
//---------------------------------------------------------------------
 
6295
const library_cameras__AttributeData library_cameras__AttributeData::DEFAULT = {0, 0};
 
6296
 
 
6297
//---------------------------------------------------------------------
 
6298
bool ColladaParserAutoGen15Private::_data__library_cameras( const ParserChar* text, size_t textLength )
 
6299
{
 
6300
    return true;
 
6301
}
 
6302
 
 
6303
//---------------------------------------------------------------------
 
6304
bool ColladaParserAutoGen15Private::_preBegin__library_cameras( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
6305
{
 
6306
#ifdef GENERATEDSAXPARSER_VALIDATION
 
6307
    if ( mValidate )
 
6308
    {
 
6309
 
 
6310
        bool validationResult = _validateBegin__library_cameras( attributes, attributeDataPtr, validationDataPtr );
 
6311
        if ( !validationResult ) return false;
 
6312
 
 
6313
    } // validation
 
6314
#endif
 
6315
 
 
6316
library_cameras__AttributeData* attributeData = newData<library_cameras__AttributeData>(attributeDataPtr);
 
6317
 
 
6318
const ParserChar** attributeArray = attributes.attributes;
 
6319
if ( attributeArray )
 
6320
{
 
6321
    while (true)
 
6322
    {
 
6323
        const ParserChar * attribute = *attributeArray;
 
6324
        if ( !attribute )
 
6325
            break;
 
6326
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
6327
        attributeArray++;
 
6328
        if ( !attributeArray )
 
6329
            return false;
 
6330
        const ParserChar* attributeValue = *attributeArray;
 
6331
        attributeArray++;
 
6332
 
 
6333
 
 
6334
    switch ( hash )
 
6335
    {
 
6336
    case HASH_ATTRIBUTE_ID:
 
6337
    {
 
6338
 
 
6339
attributeData->id = attributeValue;
 
6340
 
 
6341
    break;
 
6342
    }
 
6343
    case HASH_ATTRIBUTE_NAME:
 
6344
    {
 
6345
 
 
6346
attributeData->name = attributeValue;
 
6347
 
 
6348
    break;
 
6349
    }
 
6350
    default:
 
6351
    {
 
6352
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIBRARY_CAMERAS, attribute, attributeValue))
 
6353
            {return false;}
 
6354
    }
 
6355
    }
 
6356
    }
 
6357
}
 
6358
 
 
6359
 
 
6360
    return true;
 
6361
}
 
6362
 
 
6363
//---------------------------------------------------------------------
 
6364
bool ColladaParserAutoGen15Private::_preEnd__library_cameras()
 
6365
{
 
6366
#ifdef GENERATEDSAXPARSER_VALIDATION
 
6367
    if ( mValidate )
 
6368
    {
 
6369
 
 
6370
        bool validationResult = _validateEnd__library_cameras();
 
6371
        if ( !validationResult ) return false;
 
6372
 
 
6373
    } // validation
 
6374
#endif
 
6375
 
 
6376
    return true;
 
6377
}
 
6378
 
 
6379
//---------------------------------------------------------------------
 
6380
bool ColladaParserAutoGen15Private::_freeAttributes__library_cameras( void* attributeData )
 
6381
{
 
6382
    library_cameras__AttributeData* typedAttributeData = static_cast<library_cameras__AttributeData*>(attributeData);
 
6383
 
 
6384
    typedAttributeData->~library_cameras__AttributeData();
 
6385
 
 
6386
    return true;
 
6387
}
 
6388
 
 
6389
//---------------------------------------------------------------------
 
6390
const camera__AttributeData camera__AttributeData::DEFAULT = {0, 0};
 
6391
 
 
6392
//---------------------------------------------------------------------
 
6393
bool ColladaParserAutoGen15Private::_data__camera( const ParserChar* text, size_t textLength )
 
6394
{
 
6395
    return true;
 
6396
}
 
6397
 
 
6398
//---------------------------------------------------------------------
 
6399
bool ColladaParserAutoGen15Private::_preBegin__camera( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
6400
{
 
6401
#ifdef GENERATEDSAXPARSER_VALIDATION
 
6402
    if ( mValidate )
 
6403
    {
 
6404
 
 
6405
        bool validationResult = _validateBegin__camera( attributes, attributeDataPtr, validationDataPtr );
 
6406
        if ( !validationResult ) return false;
 
6407
 
 
6408
    } // validation
 
6409
#endif
 
6410
 
 
6411
camera__AttributeData* attributeData = newData<camera__AttributeData>(attributeDataPtr);
 
6412
 
 
6413
const ParserChar** attributeArray = attributes.attributes;
 
6414
if ( attributeArray )
 
6415
{
 
6416
    while (true)
 
6417
    {
 
6418
        const ParserChar * attribute = *attributeArray;
 
6419
        if ( !attribute )
 
6420
            break;
 
6421
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
6422
        attributeArray++;
 
6423
        if ( !attributeArray )
 
6424
            return false;
 
6425
        const ParserChar* attributeValue = *attributeArray;
 
6426
        attributeArray++;
 
6427
 
 
6428
 
 
6429
    switch ( hash )
 
6430
    {
 
6431
    case HASH_ATTRIBUTE_ID:
 
6432
    {
 
6433
 
 
6434
attributeData->id = attributeValue;
 
6435
 
 
6436
    break;
 
6437
    }
 
6438
    case HASH_ATTRIBUTE_NAME:
 
6439
    {
 
6440
 
 
6441
attributeData->name = attributeValue;
 
6442
 
 
6443
    break;
 
6444
    }
 
6445
    default:
 
6446
    {
 
6447
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_CAMERA, attribute, attributeValue))
 
6448
            {return false;}
 
6449
    }
 
6450
    }
 
6451
    }
 
6452
}
 
6453
 
 
6454
 
 
6455
    return true;
 
6456
}
 
6457
 
 
6458
//---------------------------------------------------------------------
 
6459
bool ColladaParserAutoGen15Private::_preEnd__camera()
 
6460
{
 
6461
#ifdef GENERATEDSAXPARSER_VALIDATION
 
6462
    if ( mValidate )
 
6463
    {
 
6464
 
 
6465
        bool validationResult = _validateEnd__camera();
 
6466
        if ( !validationResult ) return false;
 
6467
 
 
6468
    } // validation
 
6469
#endif
 
6470
 
 
6471
    return true;
 
6472
}
 
6473
 
 
6474
//---------------------------------------------------------------------
 
6475
bool ColladaParserAutoGen15Private::_freeAttributes__camera( void* attributeData )
 
6476
{
 
6477
    camera__AttributeData* typedAttributeData = static_cast<camera__AttributeData*>(attributeData);
 
6478
 
 
6479
    typedAttributeData->~camera__AttributeData();
 
6480
 
 
6481
    return true;
 
6482
}
 
6483
 
 
6484
//---------------------------------------------------------------------
 
6485
bool ColladaParserAutoGen15Private::_data__optics( const ParserChar* text, size_t textLength )
 
6486
{
 
6487
    return true;
 
6488
}
 
6489
 
 
6490
//---------------------------------------------------------------------
 
6491
bool ColladaParserAutoGen15Private::_preBegin__optics( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
6492
{
 
6493
#ifdef GENERATEDSAXPARSER_VALIDATION
 
6494
    if ( mValidate )
 
6495
    {
 
6496
 
 
6497
        bool validationResult = _validateBegin__optics( attributes, attributeDataPtr, validationDataPtr );
 
6498
        if ( !validationResult ) return false;
 
6499
 
 
6500
    } // validation
 
6501
#endif
 
6502
 
 
6503
    return true;
 
6504
}
 
6505
 
 
6506
//---------------------------------------------------------------------
 
6507
bool ColladaParserAutoGen15Private::_preEnd__optics()
 
6508
{
 
6509
#ifdef GENERATEDSAXPARSER_VALIDATION
 
6510
    if ( mValidate )
 
6511
    {
 
6512
 
 
6513
        bool validationResult = _validateEnd__optics();
 
6514
        if ( !validationResult ) return false;
 
6515
 
 
6516
    } // validation
 
6517
#endif
 
6518
 
 
6519
    return true;
 
6520
}
 
6521
 
 
6522
//---------------------------------------------------------------------
 
6523
bool ColladaParserAutoGen15Private::_freeAttributes__optics( void* attributeData )
 
6524
{
 
6525
    return true;
 
6526
}
 
6527
 
 
6528
//---------------------------------------------------------------------
 
6529
bool ColladaParserAutoGen15Private::_data__optics__technique_common( const ParserChar* text, size_t textLength )
 
6530
{
 
6531
    return true;
 
6532
}
 
6533
 
 
6534
//---------------------------------------------------------------------
 
6535
bool ColladaParserAutoGen15Private::_preBegin__optics__technique_common( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
6536
{
 
6537
#ifdef GENERATEDSAXPARSER_VALIDATION
 
6538
    if ( mValidate )
 
6539
    {
 
6540
 
 
6541
        bool validationResult = _validateBegin__optics__technique_common( attributes, attributeDataPtr, validationDataPtr );
 
6542
        if ( !validationResult ) return false;
 
6543
 
 
6544
    } // validation
 
6545
#endif
 
6546
 
 
6547
    return true;
 
6548
}
 
6549
 
 
6550
//---------------------------------------------------------------------
 
6551
bool ColladaParserAutoGen15Private::_preEnd__optics__technique_common()
 
6552
{
 
6553
#ifdef GENERATEDSAXPARSER_VALIDATION
 
6554
    if ( mValidate )
 
6555
    {
 
6556
 
 
6557
        bool validationResult = _validateEnd__optics__technique_common();
 
6558
        if ( !validationResult ) return false;
 
6559
 
 
6560
    } // validation
 
6561
#endif
 
6562
 
 
6563
    return true;
 
6564
}
 
6565
 
 
6566
//---------------------------------------------------------------------
 
6567
bool ColladaParserAutoGen15Private::_freeAttributes__optics__technique_common( void* attributeData )
 
6568
{
 
6569
    return true;
 
6570
}
 
6571
 
 
6572
//---------------------------------------------------------------------
 
6573
bool ColladaParserAutoGen15Private::_data__orthographic( const ParserChar* text, size_t textLength )
 
6574
{
 
6575
    return true;
 
6576
}
 
6577
 
 
6578
//---------------------------------------------------------------------
 
6579
bool ColladaParserAutoGen15Private::_preBegin__orthographic( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
6580
{
 
6581
#ifdef GENERATEDSAXPARSER_VALIDATION
 
6582
    if ( mValidate )
 
6583
    {
 
6584
 
 
6585
        bool validationResult = _validateBegin__orthographic( attributes, attributeDataPtr, validationDataPtr );
 
6586
        if ( !validationResult ) return false;
 
6587
 
 
6588
    } // validation
 
6589
#endif
 
6590
 
 
6591
    return true;
 
6592
}
 
6593
 
 
6594
//---------------------------------------------------------------------
 
6595
bool ColladaParserAutoGen15Private::_preEnd__orthographic()
 
6596
{
 
6597
#ifdef GENERATEDSAXPARSER_VALIDATION
 
6598
    if ( mValidate )
 
6599
    {
 
6600
 
 
6601
        bool validationResult = _validateEnd__orthographic();
 
6602
        if ( !validationResult ) return false;
 
6603
 
 
6604
    } // validation
 
6605
#endif
 
6606
 
 
6607
    return true;
 
6608
}
 
6609
 
 
6610
//---------------------------------------------------------------------
 
6611
bool ColladaParserAutoGen15Private::_freeAttributes__orthographic( void* attributeData )
 
6612
{
 
6613
    return true;
 
6614
}
 
6615
 
 
6616
//---------------------------------------------------------------------
 
6617
const xmag__AttributeData xmag__AttributeData::DEFAULT = {0};
 
6618
 
 
6619
//---------------------------------------------------------------------
 
6620
bool ColladaParserAutoGen15Private::_data__xmag( const ParserChar* text, size_t textLength )
 
6621
{
 
6622
if (!mLastIncompleteFragmentInCharacterData)
 
6623
{
 
6624
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
6625
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
6626
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
6627
}
 
6628
else
 
6629
{
 
6630
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
6631
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
6632
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
6633
        mLastIncompleteFragmentInCharacterData = tmp;
 
6634
    }
 
6635
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
6636
    mEndOfDataInCurrentObjectOnStack += textLength;
 
6637
}
 
6638
return true;
 
6639
}
 
6640
 
 
6641
//---------------------------------------------------------------------
 
6642
bool ColladaParserAutoGen15Private::_preBegin__xmag( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
6643
{
 
6644
#ifdef GENERATEDSAXPARSER_VALIDATION
 
6645
    if ( mValidate )
 
6646
    {
 
6647
 
 
6648
        bool validationResult = _validateBegin__xmag( attributes, attributeDataPtr, validationDataPtr );
 
6649
        if ( !validationResult ) return false;
 
6650
 
 
6651
    } // validation
 
6652
#endif
 
6653
 
 
6654
xmag__AttributeData* attributeData = newData<xmag__AttributeData>(attributeDataPtr);
 
6655
 
 
6656
const ParserChar** attributeArray = attributes.attributes;
 
6657
if ( attributeArray )
 
6658
{
 
6659
    while (true)
 
6660
    {
 
6661
        const ParserChar * attribute = *attributeArray;
 
6662
        if ( !attribute )
 
6663
            break;
 
6664
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
6665
        attributeArray++;
 
6666
        if ( !attributeArray )
 
6667
            return false;
 
6668
        const ParserChar* attributeValue = *attributeArray;
 
6669
        attributeArray++;
 
6670
 
 
6671
 
 
6672
    switch ( hash )
 
6673
    {
 
6674
    case HASH_ATTRIBUTE_SID:
 
6675
    {
 
6676
 
 
6677
attributeData->sid = attributeValue;
 
6678
#ifdef GENERATEDSAXPARSER_VALIDATION
 
6679
    if ( mValidate )
 
6680
    {
 
6681
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
6682
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
6683
    {
 
6684
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
6685
            simpleTypeValidationResult,
 
6686
            HASH_ELEMENT_XMAG,
 
6687
            HASH_ATTRIBUTE_SID,
 
6688
            attributeValue) )
 
6689
        {
 
6690
            return false;
 
6691
        }
 
6692
    }
 
6693
    } // validation
 
6694
#endif
 
6695
 
 
6696
    break;
 
6697
    }
 
6698
    default:
 
6699
    {
 
6700
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_XMAG, attribute, attributeValue))
 
6701
            {return false;}
 
6702
    }
 
6703
    }
 
6704
    }
 
6705
}
 
6706
 
 
6707
 
 
6708
    return true;
 
6709
}
 
6710
 
 
6711
//---------------------------------------------------------------------
 
6712
bool ColladaParserAutoGen15Private::_preEnd__xmag()
 
6713
{
 
6714
#ifdef GENERATEDSAXPARSER_VALIDATION
 
6715
    if ( mValidate )
 
6716
    {
 
6717
 
 
6718
        bool validationResult = _validateEnd__xmag();
 
6719
        if ( !validationResult ) return false;
 
6720
 
 
6721
    } // validation
 
6722
#endif
 
6723
 
 
6724
bool failed;
 
6725
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
6726
DISABLE_WARNING_UNUSED(ptrForErr)
 
6727
float parameter = GeneratedSaxParser::Utils::toFloat((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
6728
bool returnValue;
 
6729
if (!failed)
 
6730
{
 
6731
    returnValue = mImpl->data__xmag(parameter);
 
6732
}
 
6733
else
 
6734
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_XMAG, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
6735
if (mLastIncompleteFragmentInCharacterData)
 
6736
    mStackMemoryManager.deleteObject();
 
6737
mLastIncompleteFragmentInCharacterData = 0;
 
6738
mEndOfDataInCurrentObjectOnStack = 0;
 
6739
return returnValue;
 
6740
}
 
6741
 
 
6742
//---------------------------------------------------------------------
 
6743
bool ColladaParserAutoGen15Private::_freeAttributes__xmag( void* attributeData )
 
6744
{
 
6745
    xmag__AttributeData* typedAttributeData = static_cast<xmag__AttributeData*>(attributeData);
 
6746
 
 
6747
    typedAttributeData->~xmag__AttributeData();
 
6748
 
 
6749
    return true;
 
6750
}
 
6751
 
 
6752
//---------------------------------------------------------------------
 
6753
const ymag__AttributeData ymag__AttributeData::DEFAULT = {0};
 
6754
 
 
6755
//---------------------------------------------------------------------
 
6756
bool ColladaParserAutoGen15Private::_data__ymag( const ParserChar* text, size_t textLength )
 
6757
{
 
6758
if (!mLastIncompleteFragmentInCharacterData)
 
6759
{
 
6760
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
6761
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
6762
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
6763
}
 
6764
else
 
6765
{
 
6766
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
6767
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
6768
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
6769
        mLastIncompleteFragmentInCharacterData = tmp;
 
6770
    }
 
6771
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
6772
    mEndOfDataInCurrentObjectOnStack += textLength;
 
6773
}
 
6774
return true;
 
6775
}
 
6776
 
 
6777
//---------------------------------------------------------------------
 
6778
bool ColladaParserAutoGen15Private::_preBegin__ymag( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
6779
{
 
6780
#ifdef GENERATEDSAXPARSER_VALIDATION
 
6781
    if ( mValidate )
 
6782
    {
 
6783
 
 
6784
        bool validationResult = _validateBegin__ymag( attributes, attributeDataPtr, validationDataPtr );
 
6785
        if ( !validationResult ) return false;
 
6786
 
 
6787
    } // validation
 
6788
#endif
 
6789
 
 
6790
ymag__AttributeData* attributeData = newData<ymag__AttributeData>(attributeDataPtr);
 
6791
 
 
6792
const ParserChar** attributeArray = attributes.attributes;
 
6793
if ( attributeArray )
 
6794
{
 
6795
    while (true)
 
6796
    {
 
6797
        const ParserChar * attribute = *attributeArray;
 
6798
        if ( !attribute )
 
6799
            break;
 
6800
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
6801
        attributeArray++;
 
6802
        if ( !attributeArray )
 
6803
            return false;
 
6804
        const ParserChar* attributeValue = *attributeArray;
 
6805
        attributeArray++;
 
6806
 
 
6807
 
 
6808
    switch ( hash )
 
6809
    {
 
6810
    case HASH_ATTRIBUTE_SID:
 
6811
    {
 
6812
 
 
6813
attributeData->sid = attributeValue;
 
6814
#ifdef GENERATEDSAXPARSER_VALIDATION
 
6815
    if ( mValidate )
 
6816
    {
 
6817
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
6818
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
6819
    {
 
6820
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
6821
            simpleTypeValidationResult,
 
6822
            HASH_ELEMENT_YMAG,
 
6823
            HASH_ATTRIBUTE_SID,
 
6824
            attributeValue) )
 
6825
        {
 
6826
            return false;
 
6827
        }
 
6828
    }
 
6829
    } // validation
 
6830
#endif
 
6831
 
 
6832
    break;
 
6833
    }
 
6834
    default:
 
6835
    {
 
6836
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_YMAG, attribute, attributeValue))
 
6837
            {return false;}
 
6838
    }
 
6839
    }
 
6840
    }
 
6841
}
 
6842
 
 
6843
 
 
6844
    return true;
 
6845
}
 
6846
 
 
6847
//---------------------------------------------------------------------
 
6848
bool ColladaParserAutoGen15Private::_preEnd__ymag()
 
6849
{
 
6850
#ifdef GENERATEDSAXPARSER_VALIDATION
 
6851
    if ( mValidate )
 
6852
    {
 
6853
 
 
6854
        bool validationResult = _validateEnd__ymag();
 
6855
        if ( !validationResult ) return false;
 
6856
 
 
6857
    } // validation
 
6858
#endif
 
6859
 
 
6860
bool failed;
 
6861
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
6862
DISABLE_WARNING_UNUSED(ptrForErr)
 
6863
float parameter = GeneratedSaxParser::Utils::toFloat((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
6864
bool returnValue;
 
6865
if (!failed)
 
6866
{
 
6867
    returnValue = mImpl->data__ymag(parameter);
 
6868
}
 
6869
else
 
6870
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_YMAG, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
6871
if (mLastIncompleteFragmentInCharacterData)
 
6872
    mStackMemoryManager.deleteObject();
 
6873
mLastIncompleteFragmentInCharacterData = 0;
 
6874
mEndOfDataInCurrentObjectOnStack = 0;
 
6875
return returnValue;
 
6876
}
 
6877
 
 
6878
//---------------------------------------------------------------------
 
6879
bool ColladaParserAutoGen15Private::_freeAttributes__ymag( void* attributeData )
 
6880
{
 
6881
    ymag__AttributeData* typedAttributeData = static_cast<ymag__AttributeData*>(attributeData);
 
6882
 
 
6883
    typedAttributeData->~ymag__AttributeData();
 
6884
 
 
6885
    return true;
 
6886
}
 
6887
 
 
6888
//---------------------------------------------------------------------
 
6889
const aspect_ratio__AttributeData aspect_ratio__AttributeData::DEFAULT = {0};
 
6890
 
 
6891
//---------------------------------------------------------------------
 
6892
bool ColladaParserAutoGen15Private::_data__aspect_ratio( const ParserChar* text, size_t textLength )
 
6893
{
 
6894
if (!mLastIncompleteFragmentInCharacterData)
 
6895
{
 
6896
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
6897
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
6898
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
6899
}
 
6900
else
 
6901
{
 
6902
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
6903
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
6904
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
6905
        mLastIncompleteFragmentInCharacterData = tmp;
 
6906
    }
 
6907
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
6908
    mEndOfDataInCurrentObjectOnStack += textLength;
 
6909
}
 
6910
return true;
 
6911
}
 
6912
 
 
6913
//---------------------------------------------------------------------
 
6914
bool ColladaParserAutoGen15Private::_preBegin__aspect_ratio( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
6915
{
 
6916
#ifdef GENERATEDSAXPARSER_VALIDATION
 
6917
    if ( mValidate )
 
6918
    {
 
6919
 
 
6920
        bool validationResult = _validateBegin__aspect_ratio( attributes, attributeDataPtr, validationDataPtr );
 
6921
        if ( !validationResult ) return false;
 
6922
 
 
6923
    } // validation
 
6924
#endif
 
6925
 
 
6926
aspect_ratio__AttributeData* attributeData = newData<aspect_ratio__AttributeData>(attributeDataPtr);
 
6927
 
 
6928
const ParserChar** attributeArray = attributes.attributes;
 
6929
if ( attributeArray )
 
6930
{
 
6931
    while (true)
 
6932
    {
 
6933
        const ParserChar * attribute = *attributeArray;
 
6934
        if ( !attribute )
 
6935
            break;
 
6936
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
6937
        attributeArray++;
 
6938
        if ( !attributeArray )
 
6939
            return false;
 
6940
        const ParserChar* attributeValue = *attributeArray;
 
6941
        attributeArray++;
 
6942
 
 
6943
 
 
6944
    switch ( hash )
 
6945
    {
 
6946
    case HASH_ATTRIBUTE_SID:
 
6947
    {
 
6948
 
 
6949
attributeData->sid = attributeValue;
 
6950
#ifdef GENERATEDSAXPARSER_VALIDATION
 
6951
    if ( mValidate )
 
6952
    {
 
6953
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
6954
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
6955
    {
 
6956
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
6957
            simpleTypeValidationResult,
 
6958
            HASH_ELEMENT_ASPECT_RATIO,
 
6959
            HASH_ATTRIBUTE_SID,
 
6960
            attributeValue) )
 
6961
        {
 
6962
            return false;
 
6963
        }
 
6964
    }
 
6965
    } // validation
 
6966
#endif
 
6967
 
 
6968
    break;
 
6969
    }
 
6970
    default:
 
6971
    {
 
6972
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_ASPECT_RATIO, attribute, attributeValue))
 
6973
            {return false;}
 
6974
    }
 
6975
    }
 
6976
    }
 
6977
}
 
6978
 
 
6979
 
 
6980
    return true;
 
6981
}
 
6982
 
 
6983
//---------------------------------------------------------------------
 
6984
bool ColladaParserAutoGen15Private::_preEnd__aspect_ratio()
 
6985
{
 
6986
#ifdef GENERATEDSAXPARSER_VALIDATION
 
6987
    if ( mValidate )
 
6988
    {
 
6989
 
 
6990
        bool validationResult = _validateEnd__aspect_ratio();
 
6991
        if ( !validationResult ) return false;
 
6992
 
 
6993
    } // validation
 
6994
#endif
 
6995
 
 
6996
bool failed;
 
6997
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
6998
DISABLE_WARNING_UNUSED(ptrForErr)
 
6999
float parameter = GeneratedSaxParser::Utils::toFloat((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
7000
bool returnValue;
 
7001
if (!failed)
 
7002
{
 
7003
    returnValue = mImpl->data__aspect_ratio(parameter);
 
7004
}
 
7005
else
 
7006
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_ASPECT_RATIO, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
7007
if (mLastIncompleteFragmentInCharacterData)
 
7008
    mStackMemoryManager.deleteObject();
 
7009
mLastIncompleteFragmentInCharacterData = 0;
 
7010
mEndOfDataInCurrentObjectOnStack = 0;
 
7011
return returnValue;
 
7012
}
 
7013
 
 
7014
//---------------------------------------------------------------------
 
7015
bool ColladaParserAutoGen15Private::_freeAttributes__aspect_ratio( void* attributeData )
 
7016
{
 
7017
    aspect_ratio__AttributeData* typedAttributeData = static_cast<aspect_ratio__AttributeData*>(attributeData);
 
7018
 
 
7019
    typedAttributeData->~aspect_ratio__AttributeData();
 
7020
 
 
7021
    return true;
 
7022
}
 
7023
 
 
7024
//---------------------------------------------------------------------
 
7025
const znear__AttributeData znear__AttributeData::DEFAULT = {0};
 
7026
 
 
7027
//---------------------------------------------------------------------
 
7028
bool ColladaParserAutoGen15Private::_data__znear( const ParserChar* text, size_t textLength )
 
7029
{
 
7030
if (!mLastIncompleteFragmentInCharacterData)
 
7031
{
 
7032
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
7033
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
7034
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
7035
}
 
7036
else
 
7037
{
 
7038
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
7039
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
7040
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
7041
        mLastIncompleteFragmentInCharacterData = tmp;
 
7042
    }
 
7043
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
7044
    mEndOfDataInCurrentObjectOnStack += textLength;
 
7045
}
 
7046
return true;
 
7047
}
 
7048
 
 
7049
//---------------------------------------------------------------------
 
7050
bool ColladaParserAutoGen15Private::_preBegin__znear( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
7051
{
 
7052
#ifdef GENERATEDSAXPARSER_VALIDATION
 
7053
    if ( mValidate )
 
7054
    {
 
7055
 
 
7056
        bool validationResult = _validateBegin__znear( attributes, attributeDataPtr, validationDataPtr );
 
7057
        if ( !validationResult ) return false;
 
7058
 
 
7059
    } // validation
 
7060
#endif
 
7061
 
 
7062
znear__AttributeData* attributeData = newData<znear__AttributeData>(attributeDataPtr);
 
7063
 
 
7064
const ParserChar** attributeArray = attributes.attributes;
 
7065
if ( attributeArray )
 
7066
{
 
7067
    while (true)
 
7068
    {
 
7069
        const ParserChar * attribute = *attributeArray;
 
7070
        if ( !attribute )
 
7071
            break;
 
7072
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
7073
        attributeArray++;
 
7074
        if ( !attributeArray )
 
7075
            return false;
 
7076
        const ParserChar* attributeValue = *attributeArray;
 
7077
        attributeArray++;
 
7078
 
 
7079
 
 
7080
    switch ( hash )
 
7081
    {
 
7082
    case HASH_ATTRIBUTE_SID:
 
7083
    {
 
7084
 
 
7085
attributeData->sid = attributeValue;
 
7086
#ifdef GENERATEDSAXPARSER_VALIDATION
 
7087
    if ( mValidate )
 
7088
    {
 
7089
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
7090
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
7091
    {
 
7092
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
7093
            simpleTypeValidationResult,
 
7094
            HASH_ELEMENT_ZNEAR,
 
7095
            HASH_ATTRIBUTE_SID,
 
7096
            attributeValue) )
 
7097
        {
 
7098
            return false;
 
7099
        }
 
7100
    }
 
7101
    } // validation
 
7102
#endif
 
7103
 
 
7104
    break;
 
7105
    }
 
7106
    default:
 
7107
    {
 
7108
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_ZNEAR, attribute, attributeValue))
 
7109
            {return false;}
 
7110
    }
 
7111
    }
 
7112
    }
 
7113
}
 
7114
 
 
7115
 
 
7116
    return true;
 
7117
}
 
7118
 
 
7119
//---------------------------------------------------------------------
 
7120
bool ColladaParserAutoGen15Private::_preEnd__znear()
 
7121
{
 
7122
#ifdef GENERATEDSAXPARSER_VALIDATION
 
7123
    if ( mValidate )
 
7124
    {
 
7125
 
 
7126
        bool validationResult = _validateEnd__znear();
 
7127
        if ( !validationResult ) return false;
 
7128
 
 
7129
    } // validation
 
7130
#endif
 
7131
 
 
7132
bool failed;
 
7133
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
7134
DISABLE_WARNING_UNUSED(ptrForErr)
 
7135
float parameter = GeneratedSaxParser::Utils::toFloat((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
7136
bool returnValue;
 
7137
if (!failed)
 
7138
{
 
7139
    returnValue = mImpl->data__znear(parameter);
 
7140
}
 
7141
else
 
7142
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_ZNEAR, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
7143
if (mLastIncompleteFragmentInCharacterData)
 
7144
    mStackMemoryManager.deleteObject();
 
7145
mLastIncompleteFragmentInCharacterData = 0;
 
7146
mEndOfDataInCurrentObjectOnStack = 0;
 
7147
return returnValue;
 
7148
}
 
7149
 
 
7150
//---------------------------------------------------------------------
 
7151
bool ColladaParserAutoGen15Private::_freeAttributes__znear( void* attributeData )
 
7152
{
 
7153
    znear__AttributeData* typedAttributeData = static_cast<znear__AttributeData*>(attributeData);
 
7154
 
 
7155
    typedAttributeData->~znear__AttributeData();
 
7156
 
 
7157
    return true;
 
7158
}
 
7159
 
 
7160
//---------------------------------------------------------------------
 
7161
const zfar__AttributeData zfar__AttributeData::DEFAULT = {0};
 
7162
 
 
7163
//---------------------------------------------------------------------
 
7164
bool ColladaParserAutoGen15Private::_data__zfar( const ParserChar* text, size_t textLength )
 
7165
{
 
7166
if (!mLastIncompleteFragmentInCharacterData)
 
7167
{
 
7168
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
7169
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
7170
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
7171
}
 
7172
else
 
7173
{
 
7174
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
7175
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
7176
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
7177
        mLastIncompleteFragmentInCharacterData = tmp;
 
7178
    }
 
7179
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
7180
    mEndOfDataInCurrentObjectOnStack += textLength;
 
7181
}
 
7182
return true;
 
7183
}
 
7184
 
 
7185
//---------------------------------------------------------------------
 
7186
bool ColladaParserAutoGen15Private::_preBegin__zfar( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
7187
{
 
7188
#ifdef GENERATEDSAXPARSER_VALIDATION
 
7189
    if ( mValidate )
 
7190
    {
 
7191
 
 
7192
        bool validationResult = _validateBegin__zfar( attributes, attributeDataPtr, validationDataPtr );
 
7193
        if ( !validationResult ) return false;
 
7194
 
 
7195
    } // validation
 
7196
#endif
 
7197
 
 
7198
zfar__AttributeData* attributeData = newData<zfar__AttributeData>(attributeDataPtr);
 
7199
 
 
7200
const ParserChar** attributeArray = attributes.attributes;
 
7201
if ( attributeArray )
 
7202
{
 
7203
    while (true)
 
7204
    {
 
7205
        const ParserChar * attribute = *attributeArray;
 
7206
        if ( !attribute )
 
7207
            break;
 
7208
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
7209
        attributeArray++;
 
7210
        if ( !attributeArray )
 
7211
            return false;
 
7212
        const ParserChar* attributeValue = *attributeArray;
 
7213
        attributeArray++;
 
7214
 
 
7215
 
 
7216
    switch ( hash )
 
7217
    {
 
7218
    case HASH_ATTRIBUTE_SID:
 
7219
    {
 
7220
 
 
7221
attributeData->sid = attributeValue;
 
7222
#ifdef GENERATEDSAXPARSER_VALIDATION
 
7223
    if ( mValidate )
 
7224
    {
 
7225
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
7226
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
7227
    {
 
7228
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
7229
            simpleTypeValidationResult,
 
7230
            HASH_ELEMENT_ZFAR,
 
7231
            HASH_ATTRIBUTE_SID,
 
7232
            attributeValue) )
 
7233
        {
 
7234
            return false;
 
7235
        }
 
7236
    }
 
7237
    } // validation
 
7238
#endif
 
7239
 
 
7240
    break;
 
7241
    }
 
7242
    default:
 
7243
    {
 
7244
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_ZFAR, attribute, attributeValue))
 
7245
            {return false;}
 
7246
    }
 
7247
    }
 
7248
    }
 
7249
}
 
7250
 
 
7251
 
 
7252
    return true;
 
7253
}
 
7254
 
 
7255
//---------------------------------------------------------------------
 
7256
bool ColladaParserAutoGen15Private::_preEnd__zfar()
 
7257
{
 
7258
#ifdef GENERATEDSAXPARSER_VALIDATION
 
7259
    if ( mValidate )
 
7260
    {
 
7261
 
 
7262
        bool validationResult = _validateEnd__zfar();
 
7263
        if ( !validationResult ) return false;
 
7264
 
 
7265
    } // validation
 
7266
#endif
 
7267
 
 
7268
bool failed;
 
7269
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
7270
DISABLE_WARNING_UNUSED(ptrForErr)
 
7271
float parameter = GeneratedSaxParser::Utils::toFloat((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
7272
bool returnValue;
 
7273
if (!failed)
 
7274
{
 
7275
    returnValue = mImpl->data__zfar(parameter);
 
7276
}
 
7277
else
 
7278
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_ZFAR, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
7279
if (mLastIncompleteFragmentInCharacterData)
 
7280
    mStackMemoryManager.deleteObject();
 
7281
mLastIncompleteFragmentInCharacterData = 0;
 
7282
mEndOfDataInCurrentObjectOnStack = 0;
 
7283
return returnValue;
 
7284
}
 
7285
 
 
7286
//---------------------------------------------------------------------
 
7287
bool ColladaParserAutoGen15Private::_freeAttributes__zfar( void* attributeData )
 
7288
{
 
7289
    zfar__AttributeData* typedAttributeData = static_cast<zfar__AttributeData*>(attributeData);
 
7290
 
 
7291
    typedAttributeData->~zfar__AttributeData();
 
7292
 
 
7293
    return true;
 
7294
}
 
7295
 
 
7296
//---------------------------------------------------------------------
 
7297
bool ColladaParserAutoGen15Private::_data__perspective( const ParserChar* text, size_t textLength )
 
7298
{
 
7299
    return true;
 
7300
}
 
7301
 
 
7302
//---------------------------------------------------------------------
 
7303
bool ColladaParserAutoGen15Private::_preBegin__perspective( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
7304
{
 
7305
#ifdef GENERATEDSAXPARSER_VALIDATION
 
7306
    if ( mValidate )
 
7307
    {
 
7308
 
 
7309
        bool validationResult = _validateBegin__perspective( attributes, attributeDataPtr, validationDataPtr );
 
7310
        if ( !validationResult ) return false;
 
7311
 
 
7312
    } // validation
 
7313
#endif
 
7314
 
 
7315
    return true;
 
7316
}
 
7317
 
 
7318
//---------------------------------------------------------------------
 
7319
bool ColladaParserAutoGen15Private::_preEnd__perspective()
 
7320
{
 
7321
#ifdef GENERATEDSAXPARSER_VALIDATION
 
7322
    if ( mValidate )
 
7323
    {
 
7324
 
 
7325
        bool validationResult = _validateEnd__perspective();
 
7326
        if ( !validationResult ) return false;
 
7327
 
 
7328
    } // validation
 
7329
#endif
 
7330
 
 
7331
    return true;
 
7332
}
 
7333
 
 
7334
//---------------------------------------------------------------------
 
7335
bool ColladaParserAutoGen15Private::_freeAttributes__perspective( void* attributeData )
 
7336
{
 
7337
    return true;
 
7338
}
 
7339
 
 
7340
//---------------------------------------------------------------------
 
7341
const xfov__AttributeData xfov__AttributeData::DEFAULT = {0};
 
7342
 
 
7343
//---------------------------------------------------------------------
 
7344
bool ColladaParserAutoGen15Private::_data__xfov( const ParserChar* text, size_t textLength )
 
7345
{
 
7346
if (!mLastIncompleteFragmentInCharacterData)
 
7347
{
 
7348
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
7349
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
7350
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
7351
}
 
7352
else
 
7353
{
 
7354
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
7355
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
7356
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
7357
        mLastIncompleteFragmentInCharacterData = tmp;
 
7358
    }
 
7359
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
7360
    mEndOfDataInCurrentObjectOnStack += textLength;
 
7361
}
 
7362
return true;
 
7363
}
 
7364
 
 
7365
//---------------------------------------------------------------------
 
7366
bool ColladaParserAutoGen15Private::_preBegin__xfov( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
7367
{
 
7368
#ifdef GENERATEDSAXPARSER_VALIDATION
 
7369
    if ( mValidate )
 
7370
    {
 
7371
 
 
7372
        bool validationResult = _validateBegin__xfov( attributes, attributeDataPtr, validationDataPtr );
 
7373
        if ( !validationResult ) return false;
 
7374
 
 
7375
    } // validation
 
7376
#endif
 
7377
 
 
7378
xfov__AttributeData* attributeData = newData<xfov__AttributeData>(attributeDataPtr);
 
7379
 
 
7380
const ParserChar** attributeArray = attributes.attributes;
 
7381
if ( attributeArray )
 
7382
{
 
7383
    while (true)
 
7384
    {
 
7385
        const ParserChar * attribute = *attributeArray;
 
7386
        if ( !attribute )
 
7387
            break;
 
7388
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
7389
        attributeArray++;
 
7390
        if ( !attributeArray )
 
7391
            return false;
 
7392
        const ParserChar* attributeValue = *attributeArray;
 
7393
        attributeArray++;
 
7394
 
 
7395
 
 
7396
    switch ( hash )
 
7397
    {
 
7398
    case HASH_ATTRIBUTE_SID:
 
7399
    {
 
7400
 
 
7401
attributeData->sid = attributeValue;
 
7402
#ifdef GENERATEDSAXPARSER_VALIDATION
 
7403
    if ( mValidate )
 
7404
    {
 
7405
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
7406
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
7407
    {
 
7408
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
7409
            simpleTypeValidationResult,
 
7410
            HASH_ELEMENT_XFOV,
 
7411
            HASH_ATTRIBUTE_SID,
 
7412
            attributeValue) )
 
7413
        {
 
7414
            return false;
 
7415
        }
 
7416
    }
 
7417
    } // validation
 
7418
#endif
 
7419
 
 
7420
    break;
 
7421
    }
 
7422
    default:
 
7423
    {
 
7424
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_XFOV, attribute, attributeValue))
 
7425
            {return false;}
 
7426
    }
 
7427
    }
 
7428
    }
 
7429
}
 
7430
 
 
7431
 
 
7432
    return true;
 
7433
}
 
7434
 
 
7435
//---------------------------------------------------------------------
 
7436
bool ColladaParserAutoGen15Private::_preEnd__xfov()
 
7437
{
 
7438
#ifdef GENERATEDSAXPARSER_VALIDATION
 
7439
    if ( mValidate )
 
7440
    {
 
7441
 
 
7442
        bool validationResult = _validateEnd__xfov();
 
7443
        if ( !validationResult ) return false;
 
7444
 
 
7445
    } // validation
 
7446
#endif
 
7447
 
 
7448
bool failed;
 
7449
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
7450
DISABLE_WARNING_UNUSED(ptrForErr)
 
7451
float parameter = GeneratedSaxParser::Utils::toFloat((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
7452
bool returnValue;
 
7453
if (!failed)
 
7454
{
 
7455
    returnValue = mImpl->data__xfov(parameter);
 
7456
}
 
7457
else
 
7458
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_XFOV, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
7459
if (mLastIncompleteFragmentInCharacterData)
 
7460
    mStackMemoryManager.deleteObject();
 
7461
mLastIncompleteFragmentInCharacterData = 0;
 
7462
mEndOfDataInCurrentObjectOnStack = 0;
 
7463
return returnValue;
 
7464
}
 
7465
 
 
7466
//---------------------------------------------------------------------
 
7467
bool ColladaParserAutoGen15Private::_freeAttributes__xfov( void* attributeData )
 
7468
{
 
7469
    xfov__AttributeData* typedAttributeData = static_cast<xfov__AttributeData*>(attributeData);
 
7470
 
 
7471
    typedAttributeData->~xfov__AttributeData();
 
7472
 
 
7473
    return true;
 
7474
}
 
7475
 
 
7476
//---------------------------------------------------------------------
 
7477
const yfov__AttributeData yfov__AttributeData::DEFAULT = {0};
 
7478
 
 
7479
//---------------------------------------------------------------------
 
7480
bool ColladaParserAutoGen15Private::_data__yfov( const ParserChar* text, size_t textLength )
 
7481
{
 
7482
if (!mLastIncompleteFragmentInCharacterData)
 
7483
{
 
7484
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
7485
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
7486
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
7487
}
 
7488
else
 
7489
{
 
7490
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
7491
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
7492
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
7493
        mLastIncompleteFragmentInCharacterData = tmp;
 
7494
    }
 
7495
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
7496
    mEndOfDataInCurrentObjectOnStack += textLength;
 
7497
}
 
7498
return true;
 
7499
}
 
7500
 
 
7501
//---------------------------------------------------------------------
 
7502
bool ColladaParserAutoGen15Private::_preBegin__yfov( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
7503
{
 
7504
#ifdef GENERATEDSAXPARSER_VALIDATION
 
7505
    if ( mValidate )
 
7506
    {
 
7507
 
 
7508
        bool validationResult = _validateBegin__yfov( attributes, attributeDataPtr, validationDataPtr );
 
7509
        if ( !validationResult ) return false;
 
7510
 
 
7511
    } // validation
 
7512
#endif
 
7513
 
 
7514
yfov__AttributeData* attributeData = newData<yfov__AttributeData>(attributeDataPtr);
 
7515
 
 
7516
const ParserChar** attributeArray = attributes.attributes;
 
7517
if ( attributeArray )
 
7518
{
 
7519
    while (true)
 
7520
    {
 
7521
        const ParserChar * attribute = *attributeArray;
 
7522
        if ( !attribute )
 
7523
            break;
 
7524
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
7525
        attributeArray++;
 
7526
        if ( !attributeArray )
 
7527
            return false;
 
7528
        const ParserChar* attributeValue = *attributeArray;
 
7529
        attributeArray++;
 
7530
 
 
7531
 
 
7532
    switch ( hash )
 
7533
    {
 
7534
    case HASH_ATTRIBUTE_SID:
 
7535
    {
 
7536
 
 
7537
attributeData->sid = attributeValue;
 
7538
#ifdef GENERATEDSAXPARSER_VALIDATION
 
7539
    if ( mValidate )
 
7540
    {
 
7541
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
7542
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
7543
    {
 
7544
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
7545
            simpleTypeValidationResult,
 
7546
            HASH_ELEMENT_YFOV,
 
7547
            HASH_ATTRIBUTE_SID,
 
7548
            attributeValue) )
 
7549
        {
 
7550
            return false;
 
7551
        }
 
7552
    }
 
7553
    } // validation
 
7554
#endif
 
7555
 
 
7556
    break;
 
7557
    }
 
7558
    default:
 
7559
    {
 
7560
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_YFOV, attribute, attributeValue))
 
7561
            {return false;}
 
7562
    }
 
7563
    }
 
7564
    }
 
7565
}
 
7566
 
 
7567
 
 
7568
    return true;
 
7569
}
 
7570
 
 
7571
//---------------------------------------------------------------------
 
7572
bool ColladaParserAutoGen15Private::_preEnd__yfov()
 
7573
{
 
7574
#ifdef GENERATEDSAXPARSER_VALIDATION
 
7575
    if ( mValidate )
 
7576
    {
 
7577
 
 
7578
        bool validationResult = _validateEnd__yfov();
 
7579
        if ( !validationResult ) return false;
 
7580
 
 
7581
    } // validation
 
7582
#endif
 
7583
 
 
7584
bool failed;
 
7585
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
7586
DISABLE_WARNING_UNUSED(ptrForErr)
 
7587
float parameter = GeneratedSaxParser::Utils::toFloat((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
7588
bool returnValue;
 
7589
if (!failed)
 
7590
{
 
7591
    returnValue = mImpl->data__yfov(parameter);
 
7592
}
 
7593
else
 
7594
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_YFOV, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
7595
if (mLastIncompleteFragmentInCharacterData)
 
7596
    mStackMemoryManager.deleteObject();
 
7597
mLastIncompleteFragmentInCharacterData = 0;
 
7598
mEndOfDataInCurrentObjectOnStack = 0;
 
7599
return returnValue;
 
7600
}
 
7601
 
 
7602
//---------------------------------------------------------------------
 
7603
bool ColladaParserAutoGen15Private::_freeAttributes__yfov( void* attributeData )
 
7604
{
 
7605
    yfov__AttributeData* typedAttributeData = static_cast<yfov__AttributeData*>(attributeData);
 
7606
 
 
7607
    typedAttributeData->~yfov__AttributeData();
 
7608
 
 
7609
    return true;
 
7610
}
 
7611
 
 
7612
//---------------------------------------------------------------------
 
7613
bool ColladaParserAutoGen15Private::_data__imager( const ParserChar* text, size_t textLength )
 
7614
{
 
7615
    return true;
 
7616
}
 
7617
 
 
7618
//---------------------------------------------------------------------
 
7619
bool ColladaParserAutoGen15Private::_preBegin__imager( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
7620
{
 
7621
#ifdef GENERATEDSAXPARSER_VALIDATION
 
7622
    if ( mValidate )
 
7623
    {
 
7624
 
 
7625
        bool validationResult = _validateBegin__imager( attributes, attributeDataPtr, validationDataPtr );
 
7626
        if ( !validationResult ) return false;
 
7627
 
 
7628
    } // validation
 
7629
#endif
 
7630
 
 
7631
    return true;
 
7632
}
 
7633
 
 
7634
//---------------------------------------------------------------------
 
7635
bool ColladaParserAutoGen15Private::_preEnd__imager()
 
7636
{
 
7637
#ifdef GENERATEDSAXPARSER_VALIDATION
 
7638
    if ( mValidate )
 
7639
    {
 
7640
 
 
7641
        bool validationResult = _validateEnd__imager();
 
7642
        if ( !validationResult ) return false;
 
7643
 
 
7644
    } // validation
 
7645
#endif
 
7646
 
 
7647
    return true;
 
7648
}
 
7649
 
 
7650
//---------------------------------------------------------------------
 
7651
bool ColladaParserAutoGen15Private::_freeAttributes__imager( void* attributeData )
 
7652
{
 
7653
    return true;
 
7654
}
 
7655
 
 
7656
//---------------------------------------------------------------------
 
7657
const library_controllers__AttributeData library_controllers__AttributeData::DEFAULT = {0, 0};
 
7658
 
 
7659
//---------------------------------------------------------------------
 
7660
bool ColladaParserAutoGen15Private::_data__library_controllers( const ParserChar* text, size_t textLength )
 
7661
{
 
7662
    return true;
 
7663
}
 
7664
 
 
7665
//---------------------------------------------------------------------
 
7666
bool ColladaParserAutoGen15Private::_preBegin__library_controllers( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
7667
{
 
7668
#ifdef GENERATEDSAXPARSER_VALIDATION
 
7669
    if ( mValidate )
 
7670
    {
 
7671
 
 
7672
        bool validationResult = _validateBegin__library_controllers( attributes, attributeDataPtr, validationDataPtr );
 
7673
        if ( !validationResult ) return false;
 
7674
 
 
7675
    } // validation
 
7676
#endif
 
7677
 
 
7678
library_controllers__AttributeData* attributeData = newData<library_controllers__AttributeData>(attributeDataPtr);
 
7679
 
 
7680
const ParserChar** attributeArray = attributes.attributes;
 
7681
if ( attributeArray )
 
7682
{
 
7683
    while (true)
 
7684
    {
 
7685
        const ParserChar * attribute = *attributeArray;
 
7686
        if ( !attribute )
 
7687
            break;
 
7688
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
7689
        attributeArray++;
 
7690
        if ( !attributeArray )
 
7691
            return false;
 
7692
        const ParserChar* attributeValue = *attributeArray;
 
7693
        attributeArray++;
 
7694
 
 
7695
 
 
7696
    switch ( hash )
 
7697
    {
 
7698
    case HASH_ATTRIBUTE_ID:
 
7699
    {
 
7700
 
 
7701
attributeData->id = attributeValue;
 
7702
 
 
7703
    break;
 
7704
    }
 
7705
    case HASH_ATTRIBUTE_NAME:
 
7706
    {
 
7707
 
 
7708
attributeData->name = attributeValue;
 
7709
 
 
7710
    break;
 
7711
    }
 
7712
    default:
 
7713
    {
 
7714
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIBRARY_CONTROLLERS, attribute, attributeValue))
 
7715
            {return false;}
 
7716
    }
 
7717
    }
 
7718
    }
 
7719
}
 
7720
 
 
7721
 
 
7722
    return true;
 
7723
}
 
7724
 
 
7725
//---------------------------------------------------------------------
 
7726
bool ColladaParserAutoGen15Private::_preEnd__library_controllers()
 
7727
{
 
7728
#ifdef GENERATEDSAXPARSER_VALIDATION
 
7729
    if ( mValidate )
 
7730
    {
 
7731
 
 
7732
        bool validationResult = _validateEnd__library_controllers();
 
7733
        if ( !validationResult ) return false;
 
7734
 
 
7735
    } // validation
 
7736
#endif
 
7737
 
 
7738
    return true;
 
7739
}
 
7740
 
 
7741
//---------------------------------------------------------------------
 
7742
bool ColladaParserAutoGen15Private::_freeAttributes__library_controllers( void* attributeData )
 
7743
{
 
7744
    library_controllers__AttributeData* typedAttributeData = static_cast<library_controllers__AttributeData*>(attributeData);
 
7745
 
 
7746
    typedAttributeData->~library_controllers__AttributeData();
 
7747
 
 
7748
    return true;
 
7749
}
 
7750
 
 
7751
//---------------------------------------------------------------------
 
7752
const controller__AttributeData controller__AttributeData::DEFAULT = {0, 0};
 
7753
 
 
7754
//---------------------------------------------------------------------
 
7755
bool ColladaParserAutoGen15Private::_data__controller( const ParserChar* text, size_t textLength )
 
7756
{
 
7757
    return true;
 
7758
}
 
7759
 
 
7760
//---------------------------------------------------------------------
 
7761
bool ColladaParserAutoGen15Private::_preBegin__controller( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
7762
{
 
7763
#ifdef GENERATEDSAXPARSER_VALIDATION
 
7764
    if ( mValidate )
 
7765
    {
 
7766
 
 
7767
        bool validationResult = _validateBegin__controller( attributes, attributeDataPtr, validationDataPtr );
 
7768
        if ( !validationResult ) return false;
 
7769
 
 
7770
    } // validation
 
7771
#endif
 
7772
 
 
7773
controller__AttributeData* attributeData = newData<controller__AttributeData>(attributeDataPtr);
 
7774
 
 
7775
const ParserChar** attributeArray = attributes.attributes;
 
7776
if ( attributeArray )
 
7777
{
 
7778
    while (true)
 
7779
    {
 
7780
        const ParserChar * attribute = *attributeArray;
 
7781
        if ( !attribute )
 
7782
            break;
 
7783
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
7784
        attributeArray++;
 
7785
        if ( !attributeArray )
 
7786
            return false;
 
7787
        const ParserChar* attributeValue = *attributeArray;
 
7788
        attributeArray++;
 
7789
 
 
7790
 
 
7791
    switch ( hash )
 
7792
    {
 
7793
    case HASH_ATTRIBUTE_ID:
 
7794
    {
 
7795
 
 
7796
attributeData->id = attributeValue;
 
7797
 
 
7798
    break;
 
7799
    }
 
7800
    case HASH_ATTRIBUTE_NAME:
 
7801
    {
 
7802
 
 
7803
attributeData->name = attributeValue;
 
7804
 
 
7805
    break;
 
7806
    }
 
7807
    default:
 
7808
    {
 
7809
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_CONTROLLER, attribute, attributeValue))
 
7810
            {return false;}
 
7811
    }
 
7812
    }
 
7813
    }
 
7814
}
 
7815
 
 
7816
 
 
7817
    return true;
 
7818
}
 
7819
 
 
7820
//---------------------------------------------------------------------
 
7821
bool ColladaParserAutoGen15Private::_preEnd__controller()
 
7822
{
 
7823
#ifdef GENERATEDSAXPARSER_VALIDATION
 
7824
    if ( mValidate )
 
7825
    {
 
7826
 
 
7827
        bool validationResult = _validateEnd__controller();
 
7828
        if ( !validationResult ) return false;
 
7829
 
 
7830
    } // validation
 
7831
#endif
 
7832
 
 
7833
    return true;
 
7834
}
 
7835
 
 
7836
//---------------------------------------------------------------------
 
7837
bool ColladaParserAutoGen15Private::_freeAttributes__controller( void* attributeData )
 
7838
{
 
7839
    controller__AttributeData* typedAttributeData = static_cast<controller__AttributeData*>(attributeData);
 
7840
 
 
7841
    typedAttributeData->~controller__AttributeData();
 
7842
 
 
7843
    return true;
 
7844
}
 
7845
 
 
7846
//---------------------------------------------------------------------
 
7847
const skin__AttributeData skin__AttributeData::DEFAULT = {0, 0};
 
7848
 
 
7849
//---------------------------------------------------------------------
 
7850
bool ColladaParserAutoGen15Private::_data__skin( const ParserChar* text, size_t textLength )
 
7851
{
 
7852
    return true;
 
7853
}
 
7854
 
 
7855
//---------------------------------------------------------------------
 
7856
bool ColladaParserAutoGen15Private::_preBegin__skin( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
7857
{
 
7858
#ifdef GENERATEDSAXPARSER_VALIDATION
 
7859
    if ( mValidate )
 
7860
    {
 
7861
 
 
7862
        bool validationResult = _validateBegin__skin( attributes, attributeDataPtr, validationDataPtr );
 
7863
        if ( !validationResult ) return false;
 
7864
 
 
7865
    } // validation
 
7866
#endif
 
7867
 
 
7868
skin__AttributeData* attributeData = newData<skin__AttributeData>(attributeDataPtr);
 
7869
 
 
7870
const ParserChar** attributeArray = attributes.attributes;
 
7871
if ( attributeArray )
 
7872
{
 
7873
    while (true)
 
7874
    {
 
7875
        const ParserChar * attribute = *attributeArray;
 
7876
        if ( !attribute )
 
7877
            break;
 
7878
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
7879
        attributeArray++;
 
7880
        if ( !attributeArray )
 
7881
            return false;
 
7882
        const ParserChar* attributeValue = *attributeArray;
 
7883
        attributeArray++;
 
7884
 
 
7885
 
 
7886
    switch ( hash )
 
7887
    {
 
7888
    case HASH_ATTRIBUTE_SOURCE:
 
7889
    {
 
7890
bool failed;
 
7891
attributeData->source = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
7892
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
7893
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
7894
        HASH_ELEMENT_SKIN,
 
7895
        HASH_ATTRIBUTE_SOURCE,
 
7896
        attributeValue))
 
7897
{
 
7898
    return false;
 
7899
}
 
7900
if ( !failed )
 
7901
    attributeData->present_attributes |= skin__AttributeData::ATTRIBUTE_SOURCE_PRESENT;
 
7902
 
 
7903
    break;
 
7904
    }
 
7905
    default:
 
7906
    {
 
7907
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SKIN, attribute, attributeValue))
 
7908
            {return false;}
 
7909
    }
 
7910
    }
 
7911
    }
 
7912
}
 
7913
if ((attributeData->present_attributes & skin__AttributeData::ATTRIBUTE_SOURCE_PRESENT) == 0)
 
7914
{
 
7915
    attributeData->source = COLLADABU::URI("");
 
7916
}
 
7917
if ( (attributeData->present_attributes & skin__AttributeData::ATTRIBUTE_SOURCE_PRESENT) == 0 )
 
7918
{
 
7919
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_SKIN, HASH_ATTRIBUTE_SOURCE, 0 ) )
 
7920
        return false;
 
7921
}
 
7922
 
 
7923
 
 
7924
    return true;
 
7925
}
 
7926
 
 
7927
//---------------------------------------------------------------------
 
7928
bool ColladaParserAutoGen15Private::_preEnd__skin()
 
7929
{
 
7930
#ifdef GENERATEDSAXPARSER_VALIDATION
 
7931
    if ( mValidate )
 
7932
    {
 
7933
 
 
7934
        bool validationResult = _validateEnd__skin();
 
7935
        if ( !validationResult ) return false;
 
7936
 
 
7937
    } // validation
 
7938
#endif
 
7939
 
 
7940
    return true;
 
7941
}
 
7942
 
 
7943
//---------------------------------------------------------------------
 
7944
bool ColladaParserAutoGen15Private::_freeAttributes__skin( void* attributeData )
 
7945
{
 
7946
    skin__AttributeData* typedAttributeData = static_cast<skin__AttributeData*>(attributeData);
 
7947
 
 
7948
    typedAttributeData->~skin__AttributeData();
 
7949
 
 
7950
    return true;
 
7951
}
 
7952
 
 
7953
//---------------------------------------------------------------------
 
7954
bool ColladaParserAutoGen15Private::_data__bind_shape_matrix( const ParserChar* text, size_t textLength )
 
7955
{
 
7956
#ifdef GENERATEDSAXPARSER_VALIDATION
 
7957
    if ( mValidate )
 
7958
    {
 
7959
        bind_shape_matrix__ValidationData* validationData = (bind_shape_matrix__ValidationData*)mValidationDataStack.top();
 
7960
        DISABLE_WARNING_UNUSED(validationData)
 
7961
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__bind_shape_matrix, &validate__float4x4_type__stream, &validationData->validationWholeSize, 0);
 
7962
    }
 
7963
    else
 
7964
    {
 
7965
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__bind_shape_matrix);
 
7966
    }
 
7967
#else
 
7968
    {
 
7969
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__bind_shape_matrix);
 
7970
    } // validation
 
7971
#endif
 
7972
 
 
7973
}
 
7974
 
 
7975
//---------------------------------------------------------------------
 
7976
bool ColladaParserAutoGen15Private::_preBegin__bind_shape_matrix( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
7977
{
 
7978
#ifdef GENERATEDSAXPARSER_VALIDATION
 
7979
    if ( mValidate )
 
7980
    {
 
7981
 
 
7982
        bool validationResult = _validateBegin__bind_shape_matrix( attributes, attributeDataPtr, validationDataPtr );
 
7983
        if ( !validationResult ) return false;
 
7984
 
 
7985
    } // validation
 
7986
#endif
 
7987
 
 
7988
    return true;
 
7989
}
 
7990
 
 
7991
//---------------------------------------------------------------------
 
7992
bool ColladaParserAutoGen15Private::_preEnd__bind_shape_matrix()
 
7993
{
 
7994
#ifdef GENERATEDSAXPARSER_VALIDATION
 
7995
    if ( mValidate )
 
7996
    {
 
7997
 
 
7998
        bool validationResult = _validateEnd__bind_shape_matrix();
 
7999
        if ( !validationResult ) return false;
 
8000
 
 
8001
    } // validation
 
8002
#endif
 
8003
 
 
8004
#ifdef GENERATEDSAXPARSER_VALIDATION
 
8005
    if ( mValidate )
 
8006
    {
 
8007
        bind_shape_matrix__ValidationData* validationData = (bind_shape_matrix__ValidationData*)mValidationDataStack.top();
 
8008
        DISABLE_WARNING_UNUSED(validationData)
 
8009
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__bind_shape_matrix, &validate__float4x4_type__streamEnd, &validationData->validationWholeSize, 0 );
 
8010
        ParserError::ErrorType simpleTypeValidationResult = validate__float4x4_type(0, (*(&validationData->validationWholeSize)));
 
8011
        mValidationDataStack.deleteObject();
 
8012
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
8013
        {
 
8014
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
8015
                simpleTypeValidationResult,
 
8016
                HASH_ELEMENT_BIND_SHAPE_MATRIX,
 
8017
                (ParserChar*)0, 0 ) )
 
8018
            {
 
8019
                return false;
 
8020
            }
 
8021
        }
 
8022
        return returnValue;
 
8023
    }
 
8024
    else
 
8025
    {
 
8026
return floatDataEnd( &ColladaParserAutoGen15::data__bind_shape_matrix );
 
8027
    }
 
8028
#else
 
8029
    {
 
8030
return floatDataEnd( &ColladaParserAutoGen15::data__bind_shape_matrix );
 
8031
    } // validation
 
8032
#endif
 
8033
 
 
8034
}
 
8035
 
 
8036
//---------------------------------------------------------------------
 
8037
bool ColladaParserAutoGen15Private::_freeAttributes__bind_shape_matrix( void* attributeData )
 
8038
{
 
8039
    return true;
 
8040
}
 
8041
 
 
8042
//---------------------------------------------------------------------
 
8043
bool ColladaParserAutoGen15Private::_data__joints( const ParserChar* text, size_t textLength )
 
8044
{
 
8045
    return true;
 
8046
}
 
8047
 
 
8048
//---------------------------------------------------------------------
 
8049
bool ColladaParserAutoGen15Private::_preBegin__joints( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
8050
{
 
8051
#ifdef GENERATEDSAXPARSER_VALIDATION
 
8052
    if ( mValidate )
 
8053
    {
 
8054
 
 
8055
        bool validationResult = _validateBegin__joints( attributes, attributeDataPtr, validationDataPtr );
 
8056
        if ( !validationResult ) return false;
 
8057
 
 
8058
    } // validation
 
8059
#endif
 
8060
 
 
8061
    return true;
 
8062
}
 
8063
 
 
8064
//---------------------------------------------------------------------
 
8065
bool ColladaParserAutoGen15Private::_preEnd__joints()
 
8066
{
 
8067
#ifdef GENERATEDSAXPARSER_VALIDATION
 
8068
    if ( mValidate )
 
8069
    {
 
8070
 
 
8071
        bool validationResult = _validateEnd__joints();
 
8072
        if ( !validationResult ) return false;
 
8073
 
 
8074
    } // validation
 
8075
#endif
 
8076
 
 
8077
    return true;
 
8078
}
 
8079
 
 
8080
//---------------------------------------------------------------------
 
8081
bool ColladaParserAutoGen15Private::_freeAttributes__joints( void* attributeData )
 
8082
{
 
8083
    return true;
 
8084
}
 
8085
 
 
8086
//---------------------------------------------------------------------
 
8087
const vertex_weights__AttributeData vertex_weights__AttributeData::DEFAULT = {0, 0};
 
8088
 
 
8089
//---------------------------------------------------------------------
 
8090
bool ColladaParserAutoGen15Private::_data__vertex_weights( const ParserChar* text, size_t textLength )
 
8091
{
 
8092
    return true;
 
8093
}
 
8094
 
 
8095
//---------------------------------------------------------------------
 
8096
bool ColladaParserAutoGen15Private::_preBegin__vertex_weights( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
8097
{
 
8098
#ifdef GENERATEDSAXPARSER_VALIDATION
 
8099
    if ( mValidate )
 
8100
    {
 
8101
 
 
8102
        bool validationResult = _validateBegin__vertex_weights( attributes, attributeDataPtr, validationDataPtr );
 
8103
        if ( !validationResult ) return false;
 
8104
 
 
8105
    } // validation
 
8106
#endif
 
8107
 
 
8108
vertex_weights__AttributeData* attributeData = newData<vertex_weights__AttributeData>(attributeDataPtr);
 
8109
 
 
8110
const ParserChar** attributeArray = attributes.attributes;
 
8111
if ( attributeArray )
 
8112
{
 
8113
    while (true)
 
8114
    {
 
8115
        const ParserChar * attribute = *attributeArray;
 
8116
        if ( !attribute )
 
8117
            break;
 
8118
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
8119
        attributeArray++;
 
8120
        if ( !attributeArray )
 
8121
            return false;
 
8122
        const ParserChar* attributeValue = *attributeArray;
 
8123
        attributeArray++;
 
8124
 
 
8125
 
 
8126
    switch ( hash )
 
8127
    {
 
8128
    case HASH_ATTRIBUTE_COUNT:
 
8129
    {
 
8130
bool failed;
 
8131
attributeData->count = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
8132
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
8133
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
8134
        HASH_ELEMENT_VERTEX_WEIGHTS,
 
8135
        HASH_ATTRIBUTE_COUNT,
 
8136
        attributeValue))
 
8137
{
 
8138
    return false;
 
8139
}
 
8140
if ( !failed )
 
8141
    attributeData->present_attributes |= vertex_weights__AttributeData::ATTRIBUTE_COUNT_PRESENT;
 
8142
 
 
8143
    break;
 
8144
    }
 
8145
    default:
 
8146
    {
 
8147
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_VERTEX_WEIGHTS, attribute, attributeValue))
 
8148
            {return false;}
 
8149
    }
 
8150
    }
 
8151
    }
 
8152
}
 
8153
if ( (attributeData->present_attributes & vertex_weights__AttributeData::ATTRIBUTE_COUNT_PRESENT) == 0 )
 
8154
{
 
8155
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_VERTEX_WEIGHTS, HASH_ATTRIBUTE_COUNT, 0 ) )
 
8156
        return false;
 
8157
}
 
8158
 
 
8159
 
 
8160
    return true;
 
8161
}
 
8162
 
 
8163
//---------------------------------------------------------------------
 
8164
bool ColladaParserAutoGen15Private::_preEnd__vertex_weights()
 
8165
{
 
8166
#ifdef GENERATEDSAXPARSER_VALIDATION
 
8167
    if ( mValidate )
 
8168
    {
 
8169
 
 
8170
        bool validationResult = _validateEnd__vertex_weights();
 
8171
        if ( !validationResult ) return false;
 
8172
 
 
8173
    } // validation
 
8174
#endif
 
8175
 
 
8176
    return true;
 
8177
}
 
8178
 
 
8179
//---------------------------------------------------------------------
 
8180
bool ColladaParserAutoGen15Private::_freeAttributes__vertex_weights( void* attributeData )
 
8181
{
 
8182
    vertex_weights__AttributeData* typedAttributeData = static_cast<vertex_weights__AttributeData*>(attributeData);
 
8183
 
 
8184
    typedAttributeData->~vertex_weights__AttributeData();
 
8185
 
 
8186
    return true;
 
8187
}
 
8188
 
 
8189
//---------------------------------------------------------------------
 
8190
const input____input_local_offset_type__AttributeData input____input_local_offset_type__AttributeData::DEFAULT = {0, 0, 0, 0, 0};
 
8191
 
 
8192
//---------------------------------------------------------------------
 
8193
bool ColladaParserAutoGen15Private::_data__input____input_local_offset_type( const ParserChar* text, size_t textLength )
 
8194
{
 
8195
    return true;
 
8196
}
 
8197
 
 
8198
//---------------------------------------------------------------------
 
8199
bool ColladaParserAutoGen15Private::_preBegin__input____input_local_offset_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
8200
{
 
8201
#ifdef GENERATEDSAXPARSER_VALIDATION
 
8202
    if ( mValidate )
 
8203
    {
 
8204
 
 
8205
        bool validationResult = _validateBegin__input____input_local_offset_type( attributes, attributeDataPtr, validationDataPtr );
 
8206
        if ( !validationResult ) return false;
 
8207
 
 
8208
    } // validation
 
8209
#endif
 
8210
 
 
8211
input____input_local_offset_type__AttributeData* attributeData = newData<input____input_local_offset_type__AttributeData>(attributeDataPtr);
 
8212
 
 
8213
const ParserChar** attributeArray = attributes.attributes;
 
8214
if ( attributeArray )
 
8215
{
 
8216
    while (true)
 
8217
    {
 
8218
        const ParserChar * attribute = *attributeArray;
 
8219
        if ( !attribute )
 
8220
            break;
 
8221
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
8222
        attributeArray++;
 
8223
        if ( !attributeArray )
 
8224
            return false;
 
8225
        const ParserChar* attributeValue = *attributeArray;
 
8226
        attributeArray++;
 
8227
 
 
8228
 
 
8229
    switch ( hash )
 
8230
    {
 
8231
    case HASH_ATTRIBUTE_OFFSET:
 
8232
    {
 
8233
bool failed;
 
8234
attributeData->offset = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
8235
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
8236
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
8237
        HASH_ELEMENT_INPUT,
 
8238
        HASH_ATTRIBUTE_OFFSET,
 
8239
        attributeValue))
 
8240
{
 
8241
    return false;
 
8242
}
 
8243
if ( !failed )
 
8244
    attributeData->present_attributes |= input____input_local_offset_type__AttributeData::ATTRIBUTE_OFFSET_PRESENT;
 
8245
 
 
8246
    break;
 
8247
    }
 
8248
    case HASH_ATTRIBUTE_SEMANTIC:
 
8249
    {
 
8250
 
 
8251
attributeData->semantic = attributeValue;
 
8252
#ifdef GENERATEDSAXPARSER_VALIDATION
 
8253
    if ( mValidate )
 
8254
    {
 
8255
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKEN(attributeData->semantic, strlen(attributeData->semantic));
 
8256
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
8257
    {
 
8258
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
8259
            simpleTypeValidationResult,
 
8260
            HASH_ELEMENT_INPUT,
 
8261
            HASH_ATTRIBUTE_SEMANTIC,
 
8262
            attributeValue) )
 
8263
        {
 
8264
            return false;
 
8265
        }
 
8266
    }
 
8267
    } // validation
 
8268
#endif
 
8269
 
 
8270
    break;
 
8271
    }
 
8272
    case HASH_ATTRIBUTE_SOURCE:
 
8273
    {
 
8274
 
 
8275
attributeData->source = attributeValue;
 
8276
#ifdef GENERATEDSAXPARSER_VALIDATION
 
8277
    if ( mValidate )
 
8278
    {
 
8279
    ParserError::ErrorType simpleTypeValidationResult = validate__urifragment_type(attributeData->source, strlen(attributeData->source));
 
8280
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
8281
    {
 
8282
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
8283
            simpleTypeValidationResult,
 
8284
            HASH_ELEMENT_INPUT,
 
8285
            HASH_ATTRIBUTE_SOURCE,
 
8286
            attributeValue) )
 
8287
        {
 
8288
            return false;
 
8289
        }
 
8290
    }
 
8291
    } // validation
 
8292
#endif
 
8293
 
 
8294
    break;
 
8295
    }
 
8296
    case HASH_ATTRIBUTE_SET:
 
8297
    {
 
8298
bool failed;
 
8299
attributeData->set = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
8300
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
8301
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
8302
        HASH_ELEMENT_INPUT,
 
8303
        HASH_ATTRIBUTE_SET,
 
8304
        attributeValue))
 
8305
{
 
8306
    return false;
 
8307
}
 
8308
if ( !failed )
 
8309
    attributeData->present_attributes |= input____input_local_offset_type__AttributeData::ATTRIBUTE_SET_PRESENT;
 
8310
 
 
8311
    break;
 
8312
    }
 
8313
    default:
 
8314
    {
 
8315
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_INPUT, attribute, attributeValue))
 
8316
            {return false;}
 
8317
    }
 
8318
    }
 
8319
    }
 
8320
}
 
8321
if ( (attributeData->present_attributes & input____input_local_offset_type__AttributeData::ATTRIBUTE_OFFSET_PRESENT) == 0 )
 
8322
{
 
8323
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_INPUT, HASH_ATTRIBUTE_OFFSET, 0 ) )
 
8324
        return false;
 
8325
}
 
8326
if ( !attributeData->semantic )
 
8327
{
 
8328
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_INPUT, HASH_ATTRIBUTE_SEMANTIC, 0 ) )
 
8329
        return false;
 
8330
}
 
8331
if ( !attributeData->source )
 
8332
{
 
8333
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_INPUT, HASH_ATTRIBUTE_SOURCE, 0 ) )
 
8334
        return false;
 
8335
}
 
8336
 
 
8337
 
 
8338
    return true;
 
8339
}
 
8340
 
 
8341
//---------------------------------------------------------------------
 
8342
bool ColladaParserAutoGen15Private::_preEnd__input____input_local_offset_type()
 
8343
{
 
8344
#ifdef GENERATEDSAXPARSER_VALIDATION
 
8345
    if ( mValidate )
 
8346
    {
 
8347
 
 
8348
        bool validationResult = _validateEnd__input____input_local_offset_type();
 
8349
        if ( !validationResult ) return false;
 
8350
 
 
8351
    } // validation
 
8352
#endif
 
8353
 
 
8354
    return true;
 
8355
}
 
8356
 
 
8357
//---------------------------------------------------------------------
 
8358
bool ColladaParserAutoGen15Private::_freeAttributes__input____input_local_offset_type( void* attributeData )
 
8359
{
 
8360
    input____input_local_offset_type__AttributeData* typedAttributeData = static_cast<input____input_local_offset_type__AttributeData*>(attributeData);
 
8361
 
 
8362
    typedAttributeData->~input____input_local_offset_type__AttributeData();
 
8363
 
 
8364
    return true;
 
8365
}
 
8366
 
 
8367
//---------------------------------------------------------------------
 
8368
bool ColladaParserAutoGen15Private::_data__vcount( const ParserChar* text, size_t textLength )
 
8369
{
 
8370
#ifdef GENERATEDSAXPARSER_VALIDATION
 
8371
    if ( mValidate )
 
8372
    {
 
8373
return characterData2Uint64Data(text, textLength, &ColladaParserAutoGen15::data__vcount, 0, 0, 0);
 
8374
    }
 
8375
    else
 
8376
    {
 
8377
return characterData2Uint64Data(text, textLength, &ColladaParserAutoGen15::data__vcount);
 
8378
    }
 
8379
#else
 
8380
    {
 
8381
return characterData2Uint64Data(text, textLength, &ColladaParserAutoGen15::data__vcount);
 
8382
    } // validation
 
8383
#endif
 
8384
 
 
8385
}
 
8386
 
 
8387
//---------------------------------------------------------------------
 
8388
bool ColladaParserAutoGen15Private::_preBegin__vcount( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
8389
{
 
8390
#ifdef GENERATEDSAXPARSER_VALIDATION
 
8391
    if ( mValidate )
 
8392
    {
 
8393
 
 
8394
        bool validationResult = _validateBegin__vcount( attributes, attributeDataPtr, validationDataPtr );
 
8395
        if ( !validationResult ) return false;
 
8396
 
 
8397
    } // validation
 
8398
#endif
 
8399
 
 
8400
    return true;
 
8401
}
 
8402
 
 
8403
//---------------------------------------------------------------------
 
8404
bool ColladaParserAutoGen15Private::_preEnd__vcount()
 
8405
{
 
8406
#ifdef GENERATEDSAXPARSER_VALIDATION
 
8407
    if ( mValidate )
 
8408
    {
 
8409
 
 
8410
        bool validationResult = _validateEnd__vcount();
 
8411
        if ( !validationResult ) return false;
 
8412
 
 
8413
    } // validation
 
8414
#endif
 
8415
 
 
8416
#ifdef GENERATEDSAXPARSER_VALIDATION
 
8417
    if ( mValidate )
 
8418
    {
 
8419
bool returnValue = uint64DataEnd( &ColladaParserAutoGen15::data__vcount, 0, 0, 0 );
 
8420
        return returnValue;
 
8421
    }
 
8422
    else
 
8423
    {
 
8424
return uint64DataEnd( &ColladaParserAutoGen15::data__vcount );
 
8425
    }
 
8426
#else
 
8427
    {
 
8428
return uint64DataEnd( &ColladaParserAutoGen15::data__vcount );
 
8429
    } // validation
 
8430
#endif
 
8431
 
 
8432
}
 
8433
 
 
8434
//---------------------------------------------------------------------
 
8435
bool ColladaParserAutoGen15Private::_freeAttributes__vcount( void* attributeData )
 
8436
{
 
8437
    return true;
 
8438
}
 
8439
 
 
8440
//---------------------------------------------------------------------
 
8441
bool ColladaParserAutoGen15Private::_data__v( const ParserChar* text, size_t textLength )
 
8442
{
 
8443
#ifdef GENERATEDSAXPARSER_VALIDATION
 
8444
    if ( mValidate )
 
8445
    {
 
8446
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__v, 0, 0, 0);
 
8447
    }
 
8448
    else
 
8449
    {
 
8450
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__v);
 
8451
    }
 
8452
#else
 
8453
    {
 
8454
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__v);
 
8455
    } // validation
 
8456
#endif
 
8457
 
 
8458
}
 
8459
 
 
8460
//---------------------------------------------------------------------
 
8461
bool ColladaParserAutoGen15Private::_preBegin__v( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
8462
{
 
8463
#ifdef GENERATEDSAXPARSER_VALIDATION
 
8464
    if ( mValidate )
 
8465
    {
 
8466
 
 
8467
        bool validationResult = _validateBegin__v( attributes, attributeDataPtr, validationDataPtr );
 
8468
        if ( !validationResult ) return false;
 
8469
 
 
8470
    } // validation
 
8471
#endif
 
8472
 
 
8473
    return true;
 
8474
}
 
8475
 
 
8476
//---------------------------------------------------------------------
 
8477
bool ColladaParserAutoGen15Private::_preEnd__v()
 
8478
{
 
8479
#ifdef GENERATEDSAXPARSER_VALIDATION
 
8480
    if ( mValidate )
 
8481
    {
 
8482
 
 
8483
        bool validationResult = _validateEnd__v();
 
8484
        if ( !validationResult ) return false;
 
8485
 
 
8486
    } // validation
 
8487
#endif
 
8488
 
 
8489
#ifdef GENERATEDSAXPARSER_VALIDATION
 
8490
    if ( mValidate )
 
8491
    {
 
8492
bool returnValue = sint64DataEnd( &ColladaParserAutoGen15::data__v, 0, 0, 0 );
 
8493
        return returnValue;
 
8494
    }
 
8495
    else
 
8496
    {
 
8497
return sint64DataEnd( &ColladaParserAutoGen15::data__v );
 
8498
    }
 
8499
#else
 
8500
    {
 
8501
return sint64DataEnd( &ColladaParserAutoGen15::data__v );
 
8502
    } // validation
 
8503
#endif
 
8504
 
 
8505
}
 
8506
 
 
8507
//---------------------------------------------------------------------
 
8508
bool ColladaParserAutoGen15Private::_freeAttributes__v( void* attributeData )
 
8509
{
 
8510
    return true;
 
8511
}
 
8512
 
 
8513
//---------------------------------------------------------------------
 
8514
const morph__AttributeData morph__AttributeData::DEFAULT = {0, ENUM__morph_method_enum__NORMALIZED, 0};
 
8515
 
 
8516
//---------------------------------------------------------------------
 
8517
bool ColladaParserAutoGen15Private::_data__morph( const ParserChar* text, size_t textLength )
 
8518
{
 
8519
    return true;
 
8520
}
 
8521
 
 
8522
//---------------------------------------------------------------------
 
8523
bool ColladaParserAutoGen15Private::_preBegin__morph( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
8524
{
 
8525
#ifdef GENERATEDSAXPARSER_VALIDATION
 
8526
    if ( mValidate )
 
8527
    {
 
8528
 
 
8529
        bool validationResult = _validateBegin__morph( attributes, attributeDataPtr, validationDataPtr );
 
8530
        if ( !validationResult ) return false;
 
8531
 
 
8532
    } // validation
 
8533
#endif
 
8534
 
 
8535
morph__AttributeData* attributeData = newData<morph__AttributeData>(attributeDataPtr);
 
8536
 
 
8537
const ParserChar** attributeArray = attributes.attributes;
 
8538
if ( attributeArray )
 
8539
{
 
8540
    while (true)
 
8541
    {
 
8542
        const ParserChar * attribute = *attributeArray;
 
8543
        if ( !attribute )
 
8544
            break;
 
8545
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
8546
        attributeArray++;
 
8547
        if ( !attributeArray )
 
8548
            return false;
 
8549
        const ParserChar* attributeValue = *attributeArray;
 
8550
        attributeArray++;
 
8551
 
 
8552
 
 
8553
    switch ( hash )
 
8554
    {
 
8555
    case HASH_ATTRIBUTE_METHOD:
 
8556
    {
 
8557
bool failed;
 
8558
attributeData->method = Utils::toEnum<ENUM__morph_method_enum, StringHash, ENUM__morph_method_enum__COUNT>(attributeValue, failed, ENUM__morph_method_enumMap, Utils::calculateStringHash);
 
8559
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
8560
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
8561
        HASH_ELEMENT_MORPH,
 
8562
        HASH_ATTRIBUTE_METHOD,
 
8563
        attributeValue))
 
8564
{
 
8565
    return false;
 
8566
}
 
8567
 
 
8568
    break;
 
8569
    }
 
8570
    case HASH_ATTRIBUTE_SOURCE:
 
8571
    {
 
8572
bool failed;
 
8573
attributeData->source = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
8574
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
8575
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
8576
        HASH_ELEMENT_MORPH,
 
8577
        HASH_ATTRIBUTE_SOURCE,
 
8578
        attributeValue))
 
8579
{
 
8580
    return false;
 
8581
}
 
8582
if ( !failed )
 
8583
    attributeData->present_attributes |= morph__AttributeData::ATTRIBUTE_SOURCE_PRESENT;
 
8584
 
 
8585
    break;
 
8586
    }
 
8587
    default:
 
8588
    {
 
8589
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_MORPH, attribute, attributeValue))
 
8590
            {return false;}
 
8591
    }
 
8592
    }
 
8593
    }
 
8594
}
 
8595
if ((attributeData->present_attributes & morph__AttributeData::ATTRIBUTE_SOURCE_PRESENT) == 0)
 
8596
{
 
8597
    attributeData->source = COLLADABU::URI("");
 
8598
}
 
8599
if ( (attributeData->present_attributes & morph__AttributeData::ATTRIBUTE_SOURCE_PRESENT) == 0 )
 
8600
{
 
8601
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_MORPH, HASH_ATTRIBUTE_SOURCE, 0 ) )
 
8602
        return false;
 
8603
}
 
8604
 
 
8605
 
 
8606
    return true;
 
8607
}
 
8608
 
 
8609
//---------------------------------------------------------------------
 
8610
bool ColladaParserAutoGen15Private::_preEnd__morph()
 
8611
{
 
8612
#ifdef GENERATEDSAXPARSER_VALIDATION
 
8613
    if ( mValidate )
 
8614
    {
 
8615
 
 
8616
        bool validationResult = _validateEnd__morph();
 
8617
        if ( !validationResult ) return false;
 
8618
 
 
8619
    } // validation
 
8620
#endif
 
8621
 
 
8622
    return true;
 
8623
}
 
8624
 
 
8625
//---------------------------------------------------------------------
 
8626
bool ColladaParserAutoGen15Private::_freeAttributes__morph( void* attributeData )
 
8627
{
 
8628
    morph__AttributeData* typedAttributeData = static_cast<morph__AttributeData*>(attributeData);
 
8629
 
 
8630
    typedAttributeData->~morph__AttributeData();
 
8631
 
 
8632
    return true;
 
8633
}
 
8634
 
 
8635
//---------------------------------------------------------------------
 
8636
ENUM__morph_method_enum ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__morph_method_enum (
 
8637
    const ParserChar* prefixedBuffer,
 
8638
    const ParserChar* prefixedBufferEnd,
 
8639
    const ParserChar** buffer,
 
8640
    const ParserChar* bufferEnd,
 
8641
    bool& failed,
 
8642
    const std::pair<StringHash, ENUM__morph_method_enum>* enumMap,
 
8643
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
8644
)
 
8645
{
 
8646
    return toEnumDataPrefix<ENUM__morph_method_enum, StringHash, ENUM__morph_method_enum__COUNT, &toEnum_ENUM__morph_method_enum>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
8647
}
 
8648
 
 
8649
//---------------------------------------------------------------------
 
8650
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__morph_method_enum (
 
8651
    const ParserChar* text,
 
8652
    size_t textLength,
 
8653
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__morph_method_enum*, size_t ),
 
8654
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
8655
)
 
8656
{
 
8657
    return characterData2EnumData<ENUM__morph_method_enum, StringHash, ENUM__morph_method_enum__COUNT>(text, textLength, dataFunction, ENUM__morph_method_enumMap, baseConversionFunc, &toEnum_ENUM__morph_method_enum, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__morph_method_enum);
 
8658
}
 
8659
 
 
8660
//---------------------------------------------------------------------
 
8661
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__morph_method_enum (
 
8662
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__morph_method_enum*, size_t ),
 
8663
    const std::pair<StringHash, ENUM__morph_method_enum>* enumMap,
 
8664
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
8665
    ENUM__morph_method_enum (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__morph_method_enum>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
8666
)
 
8667
{
 
8668
    return dataEnumEnd<ENUM__morph_method_enum, StringHash, ENUM__morph_method_enum__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
8669
}
 
8670
 
 
8671
//---------------------------------------------------------------------
 
8672
bool ColladaParserAutoGen15Private::_data__targets( const ParserChar* text, size_t textLength )
 
8673
{
 
8674
    return true;
 
8675
}
 
8676
 
 
8677
//---------------------------------------------------------------------
 
8678
bool ColladaParserAutoGen15Private::_preBegin__targets( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
8679
{
 
8680
#ifdef GENERATEDSAXPARSER_VALIDATION
 
8681
    if ( mValidate )
 
8682
    {
 
8683
 
 
8684
        bool validationResult = _validateBegin__targets( attributes, attributeDataPtr, validationDataPtr );
 
8685
        if ( !validationResult ) return false;
 
8686
 
 
8687
    } // validation
 
8688
#endif
 
8689
 
 
8690
    return true;
 
8691
}
 
8692
 
 
8693
//---------------------------------------------------------------------
 
8694
bool ColladaParserAutoGen15Private::_preEnd__targets()
 
8695
{
 
8696
#ifdef GENERATEDSAXPARSER_VALIDATION
 
8697
    if ( mValidate )
 
8698
    {
 
8699
 
 
8700
        bool validationResult = _validateEnd__targets();
 
8701
        if ( !validationResult ) return false;
 
8702
 
 
8703
    } // validation
 
8704
#endif
 
8705
 
 
8706
    return true;
 
8707
}
 
8708
 
 
8709
//---------------------------------------------------------------------
 
8710
bool ColladaParserAutoGen15Private::_freeAttributes__targets( void* attributeData )
 
8711
{
 
8712
    return true;
 
8713
}
 
8714
 
 
8715
//---------------------------------------------------------------------
 
8716
const library_geometries__AttributeData library_geometries__AttributeData::DEFAULT = {0, 0};
 
8717
 
 
8718
//---------------------------------------------------------------------
 
8719
bool ColladaParserAutoGen15Private::_data__library_geometries( const ParserChar* text, size_t textLength )
 
8720
{
 
8721
    return true;
 
8722
}
 
8723
 
 
8724
//---------------------------------------------------------------------
 
8725
bool ColladaParserAutoGen15Private::_preBegin__library_geometries( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
8726
{
 
8727
#ifdef GENERATEDSAXPARSER_VALIDATION
 
8728
    if ( mValidate )
 
8729
    {
 
8730
 
 
8731
        bool validationResult = _validateBegin__library_geometries( attributes, attributeDataPtr, validationDataPtr );
 
8732
        if ( !validationResult ) return false;
 
8733
 
 
8734
    } // validation
 
8735
#endif
 
8736
 
 
8737
library_geometries__AttributeData* attributeData = newData<library_geometries__AttributeData>(attributeDataPtr);
 
8738
 
 
8739
const ParserChar** attributeArray = attributes.attributes;
 
8740
if ( attributeArray )
 
8741
{
 
8742
    while (true)
 
8743
    {
 
8744
        const ParserChar * attribute = *attributeArray;
 
8745
        if ( !attribute )
 
8746
            break;
 
8747
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
8748
        attributeArray++;
 
8749
        if ( !attributeArray )
 
8750
            return false;
 
8751
        const ParserChar* attributeValue = *attributeArray;
 
8752
        attributeArray++;
 
8753
 
 
8754
 
 
8755
    switch ( hash )
 
8756
    {
 
8757
    case HASH_ATTRIBUTE_ID:
 
8758
    {
 
8759
 
 
8760
attributeData->id = attributeValue;
 
8761
 
 
8762
    break;
 
8763
    }
 
8764
    case HASH_ATTRIBUTE_NAME:
 
8765
    {
 
8766
 
 
8767
attributeData->name = attributeValue;
 
8768
 
 
8769
    break;
 
8770
    }
 
8771
    default:
 
8772
    {
 
8773
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIBRARY_GEOMETRIES, attribute, attributeValue))
 
8774
            {return false;}
 
8775
    }
 
8776
    }
 
8777
    }
 
8778
}
 
8779
 
 
8780
 
 
8781
    return true;
 
8782
}
 
8783
 
 
8784
//---------------------------------------------------------------------
 
8785
bool ColladaParserAutoGen15Private::_preEnd__library_geometries()
 
8786
{
 
8787
#ifdef GENERATEDSAXPARSER_VALIDATION
 
8788
    if ( mValidate )
 
8789
    {
 
8790
 
 
8791
        bool validationResult = _validateEnd__library_geometries();
 
8792
        if ( !validationResult ) return false;
 
8793
 
 
8794
    } // validation
 
8795
#endif
 
8796
 
 
8797
    return true;
 
8798
}
 
8799
 
 
8800
//---------------------------------------------------------------------
 
8801
bool ColladaParserAutoGen15Private::_freeAttributes__library_geometries( void* attributeData )
 
8802
{
 
8803
    library_geometries__AttributeData* typedAttributeData = static_cast<library_geometries__AttributeData*>(attributeData);
 
8804
 
 
8805
    typedAttributeData->~library_geometries__AttributeData();
 
8806
 
 
8807
    return true;
 
8808
}
 
8809
 
 
8810
//---------------------------------------------------------------------
 
8811
const geometry__AttributeData geometry__AttributeData::DEFAULT = {0, 0};
 
8812
 
 
8813
//---------------------------------------------------------------------
 
8814
bool ColladaParserAutoGen15Private::_data__geometry( const ParserChar* text, size_t textLength )
 
8815
{
 
8816
    return true;
 
8817
}
 
8818
 
 
8819
//---------------------------------------------------------------------
 
8820
bool ColladaParserAutoGen15Private::_preBegin__geometry( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
8821
{
 
8822
#ifdef GENERATEDSAXPARSER_VALIDATION
 
8823
    if ( mValidate )
 
8824
    {
 
8825
 
 
8826
        bool validationResult = _validateBegin__geometry( attributes, attributeDataPtr, validationDataPtr );
 
8827
        if ( !validationResult ) return false;
 
8828
 
 
8829
    } // validation
 
8830
#endif
 
8831
 
 
8832
geometry__AttributeData* attributeData = newData<geometry__AttributeData>(attributeDataPtr);
 
8833
 
 
8834
const ParserChar** attributeArray = attributes.attributes;
 
8835
if ( attributeArray )
 
8836
{
 
8837
    while (true)
 
8838
    {
 
8839
        const ParserChar * attribute = *attributeArray;
 
8840
        if ( !attribute )
 
8841
            break;
 
8842
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
8843
        attributeArray++;
 
8844
        if ( !attributeArray )
 
8845
            return false;
 
8846
        const ParserChar* attributeValue = *attributeArray;
 
8847
        attributeArray++;
 
8848
 
 
8849
 
 
8850
    switch ( hash )
 
8851
    {
 
8852
    case HASH_ATTRIBUTE_ID:
 
8853
    {
 
8854
 
 
8855
attributeData->id = attributeValue;
 
8856
 
 
8857
    break;
 
8858
    }
 
8859
    case HASH_ATTRIBUTE_NAME:
 
8860
    {
 
8861
 
 
8862
attributeData->name = attributeValue;
 
8863
 
 
8864
    break;
 
8865
    }
 
8866
    default:
 
8867
    {
 
8868
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_GEOMETRY, attribute, attributeValue))
 
8869
            {return false;}
 
8870
    }
 
8871
    }
 
8872
    }
 
8873
}
 
8874
 
 
8875
 
 
8876
    return true;
 
8877
}
 
8878
 
 
8879
//---------------------------------------------------------------------
 
8880
bool ColladaParserAutoGen15Private::_preEnd__geometry()
 
8881
{
 
8882
#ifdef GENERATEDSAXPARSER_VALIDATION
 
8883
    if ( mValidate )
 
8884
    {
 
8885
 
 
8886
        bool validationResult = _validateEnd__geometry();
 
8887
        if ( !validationResult ) return false;
 
8888
 
 
8889
    } // validation
 
8890
#endif
 
8891
 
 
8892
    return true;
 
8893
}
 
8894
 
 
8895
//---------------------------------------------------------------------
 
8896
bool ColladaParserAutoGen15Private::_freeAttributes__geometry( void* attributeData )
 
8897
{
 
8898
    geometry__AttributeData* typedAttributeData = static_cast<geometry__AttributeData*>(attributeData);
 
8899
 
 
8900
    typedAttributeData->~geometry__AttributeData();
 
8901
 
 
8902
    return true;
 
8903
}
 
8904
 
 
8905
//---------------------------------------------------------------------
 
8906
const convex_mesh__AttributeData convex_mesh__AttributeData::DEFAULT = {0, 0};
 
8907
 
 
8908
//---------------------------------------------------------------------
 
8909
bool ColladaParserAutoGen15Private::_data__convex_mesh( const ParserChar* text, size_t textLength )
 
8910
{
 
8911
    return true;
 
8912
}
 
8913
 
 
8914
//---------------------------------------------------------------------
 
8915
bool ColladaParserAutoGen15Private::_preBegin__convex_mesh( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
8916
{
 
8917
#ifdef GENERATEDSAXPARSER_VALIDATION
 
8918
    if ( mValidate )
 
8919
    {
 
8920
 
 
8921
        bool validationResult = _validateBegin__convex_mesh( attributes, attributeDataPtr, validationDataPtr );
 
8922
        if ( !validationResult ) return false;
 
8923
 
 
8924
    } // validation
 
8925
#endif
 
8926
 
 
8927
convex_mesh__AttributeData* attributeData = newData<convex_mesh__AttributeData>(attributeDataPtr);
 
8928
 
 
8929
const ParserChar** attributeArray = attributes.attributes;
 
8930
if ( attributeArray )
 
8931
{
 
8932
    while (true)
 
8933
    {
 
8934
        const ParserChar * attribute = *attributeArray;
 
8935
        if ( !attribute )
 
8936
            break;
 
8937
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
8938
        attributeArray++;
 
8939
        if ( !attributeArray )
 
8940
            return false;
 
8941
        const ParserChar* attributeValue = *attributeArray;
 
8942
        attributeArray++;
 
8943
 
 
8944
 
 
8945
    switch ( hash )
 
8946
    {
 
8947
    case HASH_ATTRIBUTE_CONVEX_HULL_OF:
 
8948
    {
 
8949
bool failed;
 
8950
attributeData->convex_hull_of = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
8951
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
8952
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
8953
        HASH_ELEMENT_CONVEX_MESH,
 
8954
        HASH_ATTRIBUTE_CONVEX_HULL_OF,
 
8955
        attributeValue))
 
8956
{
 
8957
    return false;
 
8958
}
 
8959
if ( !failed )
 
8960
    attributeData->present_attributes |= convex_mesh__AttributeData::ATTRIBUTE_CONVEX_HULL_OF_PRESENT;
 
8961
 
 
8962
    break;
 
8963
    }
 
8964
    default:
 
8965
    {
 
8966
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_CONVEX_MESH, attribute, attributeValue))
 
8967
            {return false;}
 
8968
    }
 
8969
    }
 
8970
    }
 
8971
}
 
8972
if ((attributeData->present_attributes & convex_mesh__AttributeData::ATTRIBUTE_CONVEX_HULL_OF_PRESENT) == 0)
 
8973
{
 
8974
    attributeData->convex_hull_of = COLLADABU::URI("");
 
8975
}
 
8976
 
 
8977
 
 
8978
    return true;
 
8979
}
 
8980
 
 
8981
//---------------------------------------------------------------------
 
8982
bool ColladaParserAutoGen15Private::_preEnd__convex_mesh()
 
8983
{
 
8984
#ifdef GENERATEDSAXPARSER_VALIDATION
 
8985
    if ( mValidate )
 
8986
    {
 
8987
 
 
8988
        bool validationResult = _validateEnd__convex_mesh();
 
8989
        if ( !validationResult ) return false;
 
8990
 
 
8991
    } // validation
 
8992
#endif
 
8993
 
 
8994
    return true;
 
8995
}
 
8996
 
 
8997
//---------------------------------------------------------------------
 
8998
bool ColladaParserAutoGen15Private::_freeAttributes__convex_mesh( void* attributeData )
 
8999
{
 
9000
    convex_mesh__AttributeData* typedAttributeData = static_cast<convex_mesh__AttributeData*>(attributeData);
 
9001
 
 
9002
    typedAttributeData->~convex_mesh__AttributeData();
 
9003
 
 
9004
    return true;
 
9005
}
 
9006
 
 
9007
//---------------------------------------------------------------------
 
9008
const vertices__AttributeData vertices__AttributeData::DEFAULT = {0, 0};
 
9009
 
 
9010
//---------------------------------------------------------------------
 
9011
bool ColladaParserAutoGen15Private::_data__vertices( const ParserChar* text, size_t textLength )
 
9012
{
 
9013
    return true;
 
9014
}
 
9015
 
 
9016
//---------------------------------------------------------------------
 
9017
bool ColladaParserAutoGen15Private::_preBegin__vertices( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
9018
{
 
9019
#ifdef GENERATEDSAXPARSER_VALIDATION
 
9020
    if ( mValidate )
 
9021
    {
 
9022
 
 
9023
        bool validationResult = _validateBegin__vertices( attributes, attributeDataPtr, validationDataPtr );
 
9024
        if ( !validationResult ) return false;
 
9025
 
 
9026
    } // validation
 
9027
#endif
 
9028
 
 
9029
vertices__AttributeData* attributeData = newData<vertices__AttributeData>(attributeDataPtr);
 
9030
 
 
9031
const ParserChar** attributeArray = attributes.attributes;
 
9032
if ( attributeArray )
 
9033
{
 
9034
    while (true)
 
9035
    {
 
9036
        const ParserChar * attribute = *attributeArray;
 
9037
        if ( !attribute )
 
9038
            break;
 
9039
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
9040
        attributeArray++;
 
9041
        if ( !attributeArray )
 
9042
            return false;
 
9043
        const ParserChar* attributeValue = *attributeArray;
 
9044
        attributeArray++;
 
9045
 
 
9046
 
 
9047
    switch ( hash )
 
9048
    {
 
9049
    case HASH_ATTRIBUTE_ID:
 
9050
    {
 
9051
 
 
9052
attributeData->id = attributeValue;
 
9053
 
 
9054
    break;
 
9055
    }
 
9056
    case HASH_ATTRIBUTE_NAME:
 
9057
    {
 
9058
 
 
9059
attributeData->name = attributeValue;
 
9060
 
 
9061
    break;
 
9062
    }
 
9063
    default:
 
9064
    {
 
9065
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_VERTICES, attribute, attributeValue))
 
9066
            {return false;}
 
9067
    }
 
9068
    }
 
9069
    }
 
9070
}
 
9071
if ( !attributeData->id )
 
9072
{
 
9073
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_VERTICES, HASH_ATTRIBUTE_ID, 0 ) )
 
9074
        return false;
 
9075
}
 
9076
 
 
9077
 
 
9078
    return true;
 
9079
}
 
9080
 
 
9081
//---------------------------------------------------------------------
 
9082
bool ColladaParserAutoGen15Private::_preEnd__vertices()
 
9083
{
 
9084
#ifdef GENERATEDSAXPARSER_VALIDATION
 
9085
    if ( mValidate )
 
9086
    {
 
9087
 
 
9088
        bool validationResult = _validateEnd__vertices();
 
9089
        if ( !validationResult ) return false;
 
9090
 
 
9091
    } // validation
 
9092
#endif
 
9093
 
 
9094
    return true;
 
9095
}
 
9096
 
 
9097
//---------------------------------------------------------------------
 
9098
bool ColladaParserAutoGen15Private::_freeAttributes__vertices( void* attributeData )
 
9099
{
 
9100
    vertices__AttributeData* typedAttributeData = static_cast<vertices__AttributeData*>(attributeData);
 
9101
 
 
9102
    typedAttributeData->~vertices__AttributeData();
 
9103
 
 
9104
    return true;
 
9105
}
 
9106
 
 
9107
//---------------------------------------------------------------------
 
9108
const lines__AttributeData lines__AttributeData::DEFAULT = {0, 0, 0, 0};
 
9109
 
 
9110
//---------------------------------------------------------------------
 
9111
bool ColladaParserAutoGen15Private::_data__lines( const ParserChar* text, size_t textLength )
 
9112
{
 
9113
    return true;
 
9114
}
 
9115
 
 
9116
//---------------------------------------------------------------------
 
9117
bool ColladaParserAutoGen15Private::_preBegin__lines( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
9118
{
 
9119
#ifdef GENERATEDSAXPARSER_VALIDATION
 
9120
    if ( mValidate )
 
9121
    {
 
9122
 
 
9123
        bool validationResult = _validateBegin__lines( attributes, attributeDataPtr, validationDataPtr );
 
9124
        if ( !validationResult ) return false;
 
9125
 
 
9126
    } // validation
 
9127
#endif
 
9128
 
 
9129
lines__AttributeData* attributeData = newData<lines__AttributeData>(attributeDataPtr);
 
9130
 
 
9131
const ParserChar** attributeArray = attributes.attributes;
 
9132
if ( attributeArray )
 
9133
{
 
9134
    while (true)
 
9135
    {
 
9136
        const ParserChar * attribute = *attributeArray;
 
9137
        if ( !attribute )
 
9138
            break;
 
9139
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
9140
        attributeArray++;
 
9141
        if ( !attributeArray )
 
9142
            return false;
 
9143
        const ParserChar* attributeValue = *attributeArray;
 
9144
        attributeArray++;
 
9145
 
 
9146
 
 
9147
    switch ( hash )
 
9148
    {
 
9149
    case HASH_ATTRIBUTE_NAME:
 
9150
    {
 
9151
 
 
9152
attributeData->name = attributeValue;
 
9153
 
 
9154
    break;
 
9155
    }
 
9156
    case HASH_ATTRIBUTE_COUNT:
 
9157
    {
 
9158
bool failed;
 
9159
attributeData->count = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
9160
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
9161
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
9162
        HASH_ELEMENT_LINES,
 
9163
        HASH_ATTRIBUTE_COUNT,
 
9164
        attributeValue))
 
9165
{
 
9166
    return false;
 
9167
}
 
9168
if ( !failed )
 
9169
    attributeData->present_attributes |= lines__AttributeData::ATTRIBUTE_COUNT_PRESENT;
 
9170
 
 
9171
    break;
 
9172
    }
 
9173
    case HASH_ATTRIBUTE_MATERIAL:
 
9174
    {
 
9175
 
 
9176
attributeData->material = attributeValue;
 
9177
#ifdef GENERATEDSAXPARSER_VALIDATION
 
9178
    if ( mValidate )
 
9179
    {
 
9180
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->material, strlen(attributeData->material));
 
9181
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
9182
    {
 
9183
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
9184
            simpleTypeValidationResult,
 
9185
            HASH_ELEMENT_LINES,
 
9186
            HASH_ATTRIBUTE_MATERIAL,
 
9187
            attributeValue) )
 
9188
        {
 
9189
            return false;
 
9190
        }
 
9191
    }
 
9192
    } // validation
 
9193
#endif
 
9194
 
 
9195
    break;
 
9196
    }
 
9197
    default:
 
9198
    {
 
9199
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LINES, attribute, attributeValue))
 
9200
            {return false;}
 
9201
    }
 
9202
    }
 
9203
    }
 
9204
}
 
9205
if ( (attributeData->present_attributes & lines__AttributeData::ATTRIBUTE_COUNT_PRESENT) == 0 )
 
9206
{
 
9207
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_LINES, HASH_ATTRIBUTE_COUNT, 0 ) )
 
9208
        return false;
 
9209
}
 
9210
 
 
9211
 
 
9212
    return true;
 
9213
}
 
9214
 
 
9215
//---------------------------------------------------------------------
 
9216
bool ColladaParserAutoGen15Private::_preEnd__lines()
 
9217
{
 
9218
#ifdef GENERATEDSAXPARSER_VALIDATION
 
9219
    if ( mValidate )
 
9220
    {
 
9221
 
 
9222
        bool validationResult = _validateEnd__lines();
 
9223
        if ( !validationResult ) return false;
 
9224
 
 
9225
    } // validation
 
9226
#endif
 
9227
 
 
9228
    return true;
 
9229
}
 
9230
 
 
9231
//---------------------------------------------------------------------
 
9232
bool ColladaParserAutoGen15Private::_freeAttributes__lines( void* attributeData )
 
9233
{
 
9234
    lines__AttributeData* typedAttributeData = static_cast<lines__AttributeData*>(attributeData);
 
9235
 
 
9236
    typedAttributeData->~lines__AttributeData();
 
9237
 
 
9238
    return true;
 
9239
}
 
9240
 
 
9241
//---------------------------------------------------------------------
 
9242
bool ColladaParserAutoGen15Private::_data__p( const ParserChar* text, size_t textLength )
 
9243
{
 
9244
#ifdef GENERATEDSAXPARSER_VALIDATION
 
9245
    if ( mValidate )
 
9246
    {
 
9247
return characterData2Uint64Data(text, textLength, &ColladaParserAutoGen15::data__p, 0, 0, 0);
 
9248
    }
 
9249
    else
 
9250
    {
 
9251
return characterData2Uint64Data(text, textLength, &ColladaParserAutoGen15::data__p);
 
9252
    }
 
9253
#else
 
9254
    {
 
9255
return characterData2Uint64Data(text, textLength, &ColladaParserAutoGen15::data__p);
 
9256
    } // validation
 
9257
#endif
 
9258
 
 
9259
}
 
9260
 
 
9261
//---------------------------------------------------------------------
 
9262
bool ColladaParserAutoGen15Private::_preBegin__p( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
9263
{
 
9264
#ifdef GENERATEDSAXPARSER_VALIDATION
 
9265
    if ( mValidate )
 
9266
    {
 
9267
 
 
9268
        bool validationResult = _validateBegin__p( attributes, attributeDataPtr, validationDataPtr );
 
9269
        if ( !validationResult ) return false;
 
9270
 
 
9271
    } // validation
 
9272
#endif
 
9273
 
 
9274
    return true;
 
9275
}
 
9276
 
 
9277
//---------------------------------------------------------------------
 
9278
bool ColladaParserAutoGen15Private::_preEnd__p()
 
9279
{
 
9280
#ifdef GENERATEDSAXPARSER_VALIDATION
 
9281
    if ( mValidate )
 
9282
    {
 
9283
 
 
9284
        bool validationResult = _validateEnd__p();
 
9285
        if ( !validationResult ) return false;
 
9286
 
 
9287
    } // validation
 
9288
#endif
 
9289
 
 
9290
#ifdef GENERATEDSAXPARSER_VALIDATION
 
9291
    if ( mValidate )
 
9292
    {
 
9293
bool returnValue = uint64DataEnd( &ColladaParserAutoGen15::data__p, 0, 0, 0 );
 
9294
        return returnValue;
 
9295
    }
 
9296
    else
 
9297
    {
 
9298
return uint64DataEnd( &ColladaParserAutoGen15::data__p );
 
9299
    }
 
9300
#else
 
9301
    {
 
9302
return uint64DataEnd( &ColladaParserAutoGen15::data__p );
 
9303
    } // validation
 
9304
#endif
 
9305
 
 
9306
}
 
9307
 
 
9308
//---------------------------------------------------------------------
 
9309
bool ColladaParserAutoGen15Private::_freeAttributes__p( void* attributeData )
 
9310
{
 
9311
    return true;
 
9312
}
 
9313
 
 
9314
//---------------------------------------------------------------------
 
9315
const linestrips__AttributeData linestrips__AttributeData::DEFAULT = {0, 0, 0, 0};
 
9316
 
 
9317
//---------------------------------------------------------------------
 
9318
bool ColladaParserAutoGen15Private::_data__linestrips( const ParserChar* text, size_t textLength )
 
9319
{
 
9320
    return true;
 
9321
}
 
9322
 
 
9323
//---------------------------------------------------------------------
 
9324
bool ColladaParserAutoGen15Private::_preBegin__linestrips( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
9325
{
 
9326
#ifdef GENERATEDSAXPARSER_VALIDATION
 
9327
    if ( mValidate )
 
9328
    {
 
9329
 
 
9330
        bool validationResult = _validateBegin__linestrips( attributes, attributeDataPtr, validationDataPtr );
 
9331
        if ( !validationResult ) return false;
 
9332
 
 
9333
    } // validation
 
9334
#endif
 
9335
 
 
9336
linestrips__AttributeData* attributeData = newData<linestrips__AttributeData>(attributeDataPtr);
 
9337
 
 
9338
const ParserChar** attributeArray = attributes.attributes;
 
9339
if ( attributeArray )
 
9340
{
 
9341
    while (true)
 
9342
    {
 
9343
        const ParserChar * attribute = *attributeArray;
 
9344
        if ( !attribute )
 
9345
            break;
 
9346
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
9347
        attributeArray++;
 
9348
        if ( !attributeArray )
 
9349
            return false;
 
9350
        const ParserChar* attributeValue = *attributeArray;
 
9351
        attributeArray++;
 
9352
 
 
9353
 
 
9354
    switch ( hash )
 
9355
    {
 
9356
    case HASH_ATTRIBUTE_NAME:
 
9357
    {
 
9358
 
 
9359
attributeData->name = attributeValue;
 
9360
 
 
9361
    break;
 
9362
    }
 
9363
    case HASH_ATTRIBUTE_COUNT:
 
9364
    {
 
9365
bool failed;
 
9366
attributeData->count = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
9367
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
9368
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
9369
        HASH_ELEMENT_LINESTRIPS,
 
9370
        HASH_ATTRIBUTE_COUNT,
 
9371
        attributeValue))
 
9372
{
 
9373
    return false;
 
9374
}
 
9375
if ( !failed )
 
9376
    attributeData->present_attributes |= linestrips__AttributeData::ATTRIBUTE_COUNT_PRESENT;
 
9377
 
 
9378
    break;
 
9379
    }
 
9380
    case HASH_ATTRIBUTE_MATERIAL:
 
9381
    {
 
9382
 
 
9383
attributeData->material = attributeValue;
 
9384
#ifdef GENERATEDSAXPARSER_VALIDATION
 
9385
    if ( mValidate )
 
9386
    {
 
9387
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->material, strlen(attributeData->material));
 
9388
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
9389
    {
 
9390
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
9391
            simpleTypeValidationResult,
 
9392
            HASH_ELEMENT_LINESTRIPS,
 
9393
            HASH_ATTRIBUTE_MATERIAL,
 
9394
            attributeValue) )
 
9395
        {
 
9396
            return false;
 
9397
        }
 
9398
    }
 
9399
    } // validation
 
9400
#endif
 
9401
 
 
9402
    break;
 
9403
    }
 
9404
    default:
 
9405
    {
 
9406
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LINESTRIPS, attribute, attributeValue))
 
9407
            {return false;}
 
9408
    }
 
9409
    }
 
9410
    }
 
9411
}
 
9412
if ( (attributeData->present_attributes & linestrips__AttributeData::ATTRIBUTE_COUNT_PRESENT) == 0 )
 
9413
{
 
9414
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_LINESTRIPS, HASH_ATTRIBUTE_COUNT, 0 ) )
 
9415
        return false;
 
9416
}
 
9417
 
 
9418
 
 
9419
    return true;
 
9420
}
 
9421
 
 
9422
//---------------------------------------------------------------------
 
9423
bool ColladaParserAutoGen15Private::_preEnd__linestrips()
 
9424
{
 
9425
#ifdef GENERATEDSAXPARSER_VALIDATION
 
9426
    if ( mValidate )
 
9427
    {
 
9428
 
 
9429
        bool validationResult = _validateEnd__linestrips();
 
9430
        if ( !validationResult ) return false;
 
9431
 
 
9432
    } // validation
 
9433
#endif
 
9434
 
 
9435
    return true;
 
9436
}
 
9437
 
 
9438
//---------------------------------------------------------------------
 
9439
bool ColladaParserAutoGen15Private::_freeAttributes__linestrips( void* attributeData )
 
9440
{
 
9441
    linestrips__AttributeData* typedAttributeData = static_cast<linestrips__AttributeData*>(attributeData);
 
9442
 
 
9443
    typedAttributeData->~linestrips__AttributeData();
 
9444
 
 
9445
    return true;
 
9446
}
 
9447
 
 
9448
//---------------------------------------------------------------------
 
9449
const polygons__AttributeData polygons__AttributeData::DEFAULT = {0, 0, 0, 0};
 
9450
 
 
9451
//---------------------------------------------------------------------
 
9452
bool ColladaParserAutoGen15Private::_data__polygons( const ParserChar* text, size_t textLength )
 
9453
{
 
9454
    return true;
 
9455
}
 
9456
 
 
9457
//---------------------------------------------------------------------
 
9458
bool ColladaParserAutoGen15Private::_preBegin__polygons( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
9459
{
 
9460
#ifdef GENERATEDSAXPARSER_VALIDATION
 
9461
    if ( mValidate )
 
9462
    {
 
9463
 
 
9464
        bool validationResult = _validateBegin__polygons( attributes, attributeDataPtr, validationDataPtr );
 
9465
        if ( !validationResult ) return false;
 
9466
 
 
9467
    } // validation
 
9468
#endif
 
9469
 
 
9470
polygons__AttributeData* attributeData = newData<polygons__AttributeData>(attributeDataPtr);
 
9471
 
 
9472
const ParserChar** attributeArray = attributes.attributes;
 
9473
if ( attributeArray )
 
9474
{
 
9475
    while (true)
 
9476
    {
 
9477
        const ParserChar * attribute = *attributeArray;
 
9478
        if ( !attribute )
 
9479
            break;
 
9480
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
9481
        attributeArray++;
 
9482
        if ( !attributeArray )
 
9483
            return false;
 
9484
        const ParserChar* attributeValue = *attributeArray;
 
9485
        attributeArray++;
 
9486
 
 
9487
 
 
9488
    switch ( hash )
 
9489
    {
 
9490
    case HASH_ATTRIBUTE_NAME:
 
9491
    {
 
9492
 
 
9493
attributeData->name = attributeValue;
 
9494
 
 
9495
    break;
 
9496
    }
 
9497
    case HASH_ATTRIBUTE_COUNT:
 
9498
    {
 
9499
bool failed;
 
9500
attributeData->count = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
9501
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
9502
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
9503
        HASH_ELEMENT_POLYGONS,
 
9504
        HASH_ATTRIBUTE_COUNT,
 
9505
        attributeValue))
 
9506
{
 
9507
    return false;
 
9508
}
 
9509
if ( !failed )
 
9510
    attributeData->present_attributes |= polygons__AttributeData::ATTRIBUTE_COUNT_PRESENT;
 
9511
 
 
9512
    break;
 
9513
    }
 
9514
    case HASH_ATTRIBUTE_MATERIAL:
 
9515
    {
 
9516
 
 
9517
attributeData->material = attributeValue;
 
9518
#ifdef GENERATEDSAXPARSER_VALIDATION
 
9519
    if ( mValidate )
 
9520
    {
 
9521
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->material, strlen(attributeData->material));
 
9522
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
9523
    {
 
9524
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
9525
            simpleTypeValidationResult,
 
9526
            HASH_ELEMENT_POLYGONS,
 
9527
            HASH_ATTRIBUTE_MATERIAL,
 
9528
            attributeValue) )
 
9529
        {
 
9530
            return false;
 
9531
        }
 
9532
    }
 
9533
    } // validation
 
9534
#endif
 
9535
 
 
9536
    break;
 
9537
    }
 
9538
    default:
 
9539
    {
 
9540
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_POLYGONS, attribute, attributeValue))
 
9541
            {return false;}
 
9542
    }
 
9543
    }
 
9544
    }
 
9545
}
 
9546
if ( (attributeData->present_attributes & polygons__AttributeData::ATTRIBUTE_COUNT_PRESENT) == 0 )
 
9547
{
 
9548
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_POLYGONS, HASH_ATTRIBUTE_COUNT, 0 ) )
 
9549
        return false;
 
9550
}
 
9551
 
 
9552
 
 
9553
    return true;
 
9554
}
 
9555
 
 
9556
//---------------------------------------------------------------------
 
9557
bool ColladaParserAutoGen15Private::_preEnd__polygons()
 
9558
{
 
9559
#ifdef GENERATEDSAXPARSER_VALIDATION
 
9560
    if ( mValidate )
 
9561
    {
 
9562
 
 
9563
        bool validationResult = _validateEnd__polygons();
 
9564
        if ( !validationResult ) return false;
 
9565
 
 
9566
    } // validation
 
9567
#endif
 
9568
 
 
9569
    return true;
 
9570
}
 
9571
 
 
9572
//---------------------------------------------------------------------
 
9573
bool ColladaParserAutoGen15Private::_freeAttributes__polygons( void* attributeData )
 
9574
{
 
9575
    polygons__AttributeData* typedAttributeData = static_cast<polygons__AttributeData*>(attributeData);
 
9576
 
 
9577
    typedAttributeData->~polygons__AttributeData();
 
9578
 
 
9579
    return true;
 
9580
}
 
9581
 
 
9582
//---------------------------------------------------------------------
 
9583
bool ColladaParserAutoGen15Private::_data__ph( const ParserChar* text, size_t textLength )
 
9584
{
 
9585
    return true;
 
9586
}
 
9587
 
 
9588
//---------------------------------------------------------------------
 
9589
bool ColladaParserAutoGen15Private::_preBegin__ph( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
9590
{
 
9591
#ifdef GENERATEDSAXPARSER_VALIDATION
 
9592
    if ( mValidate )
 
9593
    {
 
9594
 
 
9595
        bool validationResult = _validateBegin__ph( attributes, attributeDataPtr, validationDataPtr );
 
9596
        if ( !validationResult ) return false;
 
9597
 
 
9598
    } // validation
 
9599
#endif
 
9600
 
 
9601
    return true;
 
9602
}
 
9603
 
 
9604
//---------------------------------------------------------------------
 
9605
bool ColladaParserAutoGen15Private::_preEnd__ph()
 
9606
{
 
9607
#ifdef GENERATEDSAXPARSER_VALIDATION
 
9608
    if ( mValidate )
 
9609
    {
 
9610
 
 
9611
        bool validationResult = _validateEnd__ph();
 
9612
        if ( !validationResult ) return false;
 
9613
 
 
9614
    } // validation
 
9615
#endif
 
9616
 
 
9617
    return true;
 
9618
}
 
9619
 
 
9620
//---------------------------------------------------------------------
 
9621
bool ColladaParserAutoGen15Private::_freeAttributes__ph( void* attributeData )
 
9622
{
 
9623
    return true;
 
9624
}
 
9625
 
 
9626
//---------------------------------------------------------------------
 
9627
bool ColladaParserAutoGen15Private::_data__h( const ParserChar* text, size_t textLength )
 
9628
{
 
9629
#ifdef GENERATEDSAXPARSER_VALIDATION
 
9630
    if ( mValidate )
 
9631
    {
 
9632
return characterData2Uint64Data(text, textLength, &ColladaParserAutoGen15::data__h, 0, 0, 0);
 
9633
    }
 
9634
    else
 
9635
    {
 
9636
return characterData2Uint64Data(text, textLength, &ColladaParserAutoGen15::data__h);
 
9637
    }
 
9638
#else
 
9639
    {
 
9640
return characterData2Uint64Data(text, textLength, &ColladaParserAutoGen15::data__h);
 
9641
    } // validation
 
9642
#endif
 
9643
 
 
9644
}
 
9645
 
 
9646
//---------------------------------------------------------------------
 
9647
bool ColladaParserAutoGen15Private::_preBegin__h( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
9648
{
 
9649
#ifdef GENERATEDSAXPARSER_VALIDATION
 
9650
    if ( mValidate )
 
9651
    {
 
9652
 
 
9653
        bool validationResult = _validateBegin__h( attributes, attributeDataPtr, validationDataPtr );
 
9654
        if ( !validationResult ) return false;
 
9655
 
 
9656
    } // validation
 
9657
#endif
 
9658
 
 
9659
    return true;
 
9660
}
 
9661
 
 
9662
//---------------------------------------------------------------------
 
9663
bool ColladaParserAutoGen15Private::_preEnd__h()
 
9664
{
 
9665
#ifdef GENERATEDSAXPARSER_VALIDATION
 
9666
    if ( mValidate )
 
9667
    {
 
9668
 
 
9669
        bool validationResult = _validateEnd__h();
 
9670
        if ( !validationResult ) return false;
 
9671
 
 
9672
    } // validation
 
9673
#endif
 
9674
 
 
9675
#ifdef GENERATEDSAXPARSER_VALIDATION
 
9676
    if ( mValidate )
 
9677
    {
 
9678
bool returnValue = uint64DataEnd( &ColladaParserAutoGen15::data__h, 0, 0, 0 );
 
9679
        return returnValue;
 
9680
    }
 
9681
    else
 
9682
    {
 
9683
return uint64DataEnd( &ColladaParserAutoGen15::data__h );
 
9684
    }
 
9685
#else
 
9686
    {
 
9687
return uint64DataEnd( &ColladaParserAutoGen15::data__h );
 
9688
    } // validation
 
9689
#endif
 
9690
 
 
9691
}
 
9692
 
 
9693
//---------------------------------------------------------------------
 
9694
bool ColladaParserAutoGen15Private::_freeAttributes__h( void* attributeData )
 
9695
{
 
9696
    return true;
 
9697
}
 
9698
 
 
9699
//---------------------------------------------------------------------
 
9700
const polylist__AttributeData polylist__AttributeData::DEFAULT = {0, 0, 0, 0};
 
9701
 
 
9702
//---------------------------------------------------------------------
 
9703
bool ColladaParserAutoGen15Private::_data__polylist( const ParserChar* text, size_t textLength )
 
9704
{
 
9705
    return true;
 
9706
}
 
9707
 
 
9708
//---------------------------------------------------------------------
 
9709
bool ColladaParserAutoGen15Private::_preBegin__polylist( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
9710
{
 
9711
#ifdef GENERATEDSAXPARSER_VALIDATION
 
9712
    if ( mValidate )
 
9713
    {
 
9714
 
 
9715
        bool validationResult = _validateBegin__polylist( attributes, attributeDataPtr, validationDataPtr );
 
9716
        if ( !validationResult ) return false;
 
9717
 
 
9718
    } // validation
 
9719
#endif
 
9720
 
 
9721
polylist__AttributeData* attributeData = newData<polylist__AttributeData>(attributeDataPtr);
 
9722
 
 
9723
const ParserChar** attributeArray = attributes.attributes;
 
9724
if ( attributeArray )
 
9725
{
 
9726
    while (true)
 
9727
    {
 
9728
        const ParserChar * attribute = *attributeArray;
 
9729
        if ( !attribute )
 
9730
            break;
 
9731
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
9732
        attributeArray++;
 
9733
        if ( !attributeArray )
 
9734
            return false;
 
9735
        const ParserChar* attributeValue = *attributeArray;
 
9736
        attributeArray++;
 
9737
 
 
9738
 
 
9739
    switch ( hash )
 
9740
    {
 
9741
    case HASH_ATTRIBUTE_NAME:
 
9742
    {
 
9743
 
 
9744
attributeData->name = attributeValue;
 
9745
 
 
9746
    break;
 
9747
    }
 
9748
    case HASH_ATTRIBUTE_COUNT:
 
9749
    {
 
9750
bool failed;
 
9751
attributeData->count = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
9752
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
9753
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
9754
        HASH_ELEMENT_POLYLIST,
 
9755
        HASH_ATTRIBUTE_COUNT,
 
9756
        attributeValue))
 
9757
{
 
9758
    return false;
 
9759
}
 
9760
if ( !failed )
 
9761
    attributeData->present_attributes |= polylist__AttributeData::ATTRIBUTE_COUNT_PRESENT;
 
9762
 
 
9763
    break;
 
9764
    }
 
9765
    case HASH_ATTRIBUTE_MATERIAL:
 
9766
    {
 
9767
 
 
9768
attributeData->material = attributeValue;
 
9769
#ifdef GENERATEDSAXPARSER_VALIDATION
 
9770
    if ( mValidate )
 
9771
    {
 
9772
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->material, strlen(attributeData->material));
 
9773
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
9774
    {
 
9775
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
9776
            simpleTypeValidationResult,
 
9777
            HASH_ELEMENT_POLYLIST,
 
9778
            HASH_ATTRIBUTE_MATERIAL,
 
9779
            attributeValue) )
 
9780
        {
 
9781
            return false;
 
9782
        }
 
9783
    }
 
9784
    } // validation
 
9785
#endif
 
9786
 
 
9787
    break;
 
9788
    }
 
9789
    default:
 
9790
    {
 
9791
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_POLYLIST, attribute, attributeValue))
 
9792
            {return false;}
 
9793
    }
 
9794
    }
 
9795
    }
 
9796
}
 
9797
if ( (attributeData->present_attributes & polylist__AttributeData::ATTRIBUTE_COUNT_PRESENT) == 0 )
 
9798
{
 
9799
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_POLYLIST, HASH_ATTRIBUTE_COUNT, 0 ) )
 
9800
        return false;
 
9801
}
 
9802
 
 
9803
 
 
9804
    return true;
 
9805
}
 
9806
 
 
9807
//---------------------------------------------------------------------
 
9808
bool ColladaParserAutoGen15Private::_preEnd__polylist()
 
9809
{
 
9810
#ifdef GENERATEDSAXPARSER_VALIDATION
 
9811
    if ( mValidate )
 
9812
    {
 
9813
 
 
9814
        bool validationResult = _validateEnd__polylist();
 
9815
        if ( !validationResult ) return false;
 
9816
 
 
9817
    } // validation
 
9818
#endif
 
9819
 
 
9820
    return true;
 
9821
}
 
9822
 
 
9823
//---------------------------------------------------------------------
 
9824
bool ColladaParserAutoGen15Private::_freeAttributes__polylist( void* attributeData )
 
9825
{
 
9826
    polylist__AttributeData* typedAttributeData = static_cast<polylist__AttributeData*>(attributeData);
 
9827
 
 
9828
    typedAttributeData->~polylist__AttributeData();
 
9829
 
 
9830
    return true;
 
9831
}
 
9832
 
 
9833
//---------------------------------------------------------------------
 
9834
const triangles__AttributeData triangles__AttributeData::DEFAULT = {0, 0, 0, 0};
 
9835
 
 
9836
//---------------------------------------------------------------------
 
9837
bool ColladaParserAutoGen15Private::_data__triangles( const ParserChar* text, size_t textLength )
 
9838
{
 
9839
    return true;
 
9840
}
 
9841
 
 
9842
//---------------------------------------------------------------------
 
9843
bool ColladaParserAutoGen15Private::_preBegin__triangles( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
9844
{
 
9845
#ifdef GENERATEDSAXPARSER_VALIDATION
 
9846
    if ( mValidate )
 
9847
    {
 
9848
 
 
9849
        bool validationResult = _validateBegin__triangles( attributes, attributeDataPtr, validationDataPtr );
 
9850
        if ( !validationResult ) return false;
 
9851
 
 
9852
    } // validation
 
9853
#endif
 
9854
 
 
9855
triangles__AttributeData* attributeData = newData<triangles__AttributeData>(attributeDataPtr);
 
9856
 
 
9857
const ParserChar** attributeArray = attributes.attributes;
 
9858
if ( attributeArray )
 
9859
{
 
9860
    while (true)
 
9861
    {
 
9862
        const ParserChar * attribute = *attributeArray;
 
9863
        if ( !attribute )
 
9864
            break;
 
9865
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
9866
        attributeArray++;
 
9867
        if ( !attributeArray )
 
9868
            return false;
 
9869
        const ParserChar* attributeValue = *attributeArray;
 
9870
        attributeArray++;
 
9871
 
 
9872
 
 
9873
    switch ( hash )
 
9874
    {
 
9875
    case HASH_ATTRIBUTE_NAME:
 
9876
    {
 
9877
 
 
9878
attributeData->name = attributeValue;
 
9879
 
 
9880
    break;
 
9881
    }
 
9882
    case HASH_ATTRIBUTE_COUNT:
 
9883
    {
 
9884
bool failed;
 
9885
attributeData->count = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
9886
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
9887
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
9888
        HASH_ELEMENT_TRIANGLES,
 
9889
        HASH_ATTRIBUTE_COUNT,
 
9890
        attributeValue))
 
9891
{
 
9892
    return false;
 
9893
}
 
9894
if ( !failed )
 
9895
    attributeData->present_attributes |= triangles__AttributeData::ATTRIBUTE_COUNT_PRESENT;
 
9896
 
 
9897
    break;
 
9898
    }
 
9899
    case HASH_ATTRIBUTE_MATERIAL:
 
9900
    {
 
9901
 
 
9902
attributeData->material = attributeValue;
 
9903
#ifdef GENERATEDSAXPARSER_VALIDATION
 
9904
    if ( mValidate )
 
9905
    {
 
9906
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->material, strlen(attributeData->material));
 
9907
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
9908
    {
 
9909
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
9910
            simpleTypeValidationResult,
 
9911
            HASH_ELEMENT_TRIANGLES,
 
9912
            HASH_ATTRIBUTE_MATERIAL,
 
9913
            attributeValue) )
 
9914
        {
 
9915
            return false;
 
9916
        }
 
9917
    }
 
9918
    } // validation
 
9919
#endif
 
9920
 
 
9921
    break;
 
9922
    }
 
9923
    default:
 
9924
    {
 
9925
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_TRIANGLES, attribute, attributeValue))
 
9926
            {return false;}
 
9927
    }
 
9928
    }
 
9929
    }
 
9930
}
 
9931
if ( (attributeData->present_attributes & triangles__AttributeData::ATTRIBUTE_COUNT_PRESENT) == 0 )
 
9932
{
 
9933
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_TRIANGLES, HASH_ATTRIBUTE_COUNT, 0 ) )
 
9934
        return false;
 
9935
}
 
9936
 
 
9937
 
 
9938
    return true;
 
9939
}
 
9940
 
 
9941
//---------------------------------------------------------------------
 
9942
bool ColladaParserAutoGen15Private::_preEnd__triangles()
 
9943
{
 
9944
#ifdef GENERATEDSAXPARSER_VALIDATION
 
9945
    if ( mValidate )
 
9946
    {
 
9947
 
 
9948
        bool validationResult = _validateEnd__triangles();
 
9949
        if ( !validationResult ) return false;
 
9950
 
 
9951
    } // validation
 
9952
#endif
 
9953
 
 
9954
    return true;
 
9955
}
 
9956
 
 
9957
//---------------------------------------------------------------------
 
9958
bool ColladaParserAutoGen15Private::_freeAttributes__triangles( void* attributeData )
 
9959
{
 
9960
    triangles__AttributeData* typedAttributeData = static_cast<triangles__AttributeData*>(attributeData);
 
9961
 
 
9962
    typedAttributeData->~triangles__AttributeData();
 
9963
 
 
9964
    return true;
 
9965
}
 
9966
 
 
9967
//---------------------------------------------------------------------
 
9968
const trifans__AttributeData trifans__AttributeData::DEFAULT = {0, 0, 0, 0};
 
9969
 
 
9970
//---------------------------------------------------------------------
 
9971
bool ColladaParserAutoGen15Private::_data__trifans( const ParserChar* text, size_t textLength )
 
9972
{
 
9973
    return true;
 
9974
}
 
9975
 
 
9976
//---------------------------------------------------------------------
 
9977
bool ColladaParserAutoGen15Private::_preBegin__trifans( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
9978
{
 
9979
#ifdef GENERATEDSAXPARSER_VALIDATION
 
9980
    if ( mValidate )
 
9981
    {
 
9982
 
 
9983
        bool validationResult = _validateBegin__trifans( attributes, attributeDataPtr, validationDataPtr );
 
9984
        if ( !validationResult ) return false;
 
9985
 
 
9986
    } // validation
 
9987
#endif
 
9988
 
 
9989
trifans__AttributeData* attributeData = newData<trifans__AttributeData>(attributeDataPtr);
 
9990
 
 
9991
const ParserChar** attributeArray = attributes.attributes;
 
9992
if ( attributeArray )
 
9993
{
 
9994
    while (true)
 
9995
    {
 
9996
        const ParserChar * attribute = *attributeArray;
 
9997
        if ( !attribute )
 
9998
            break;
 
9999
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
10000
        attributeArray++;
 
10001
        if ( !attributeArray )
 
10002
            return false;
 
10003
        const ParserChar* attributeValue = *attributeArray;
 
10004
        attributeArray++;
 
10005
 
 
10006
 
 
10007
    switch ( hash )
 
10008
    {
 
10009
    case HASH_ATTRIBUTE_NAME:
 
10010
    {
 
10011
 
 
10012
attributeData->name = attributeValue;
 
10013
 
 
10014
    break;
 
10015
    }
 
10016
    case HASH_ATTRIBUTE_COUNT:
 
10017
    {
 
10018
bool failed;
 
10019
attributeData->count = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
10020
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
10021
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
10022
        HASH_ELEMENT_TRIFANS,
 
10023
        HASH_ATTRIBUTE_COUNT,
 
10024
        attributeValue))
 
10025
{
 
10026
    return false;
 
10027
}
 
10028
if ( !failed )
 
10029
    attributeData->present_attributes |= trifans__AttributeData::ATTRIBUTE_COUNT_PRESENT;
 
10030
 
 
10031
    break;
 
10032
    }
 
10033
    case HASH_ATTRIBUTE_MATERIAL:
 
10034
    {
 
10035
 
 
10036
attributeData->material = attributeValue;
 
10037
#ifdef GENERATEDSAXPARSER_VALIDATION
 
10038
    if ( mValidate )
 
10039
    {
 
10040
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->material, strlen(attributeData->material));
 
10041
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
10042
    {
 
10043
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
10044
            simpleTypeValidationResult,
 
10045
            HASH_ELEMENT_TRIFANS,
 
10046
            HASH_ATTRIBUTE_MATERIAL,
 
10047
            attributeValue) )
 
10048
        {
 
10049
            return false;
 
10050
        }
 
10051
    }
 
10052
    } // validation
 
10053
#endif
 
10054
 
 
10055
    break;
 
10056
    }
 
10057
    default:
 
10058
    {
 
10059
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_TRIFANS, attribute, attributeValue))
 
10060
            {return false;}
 
10061
    }
 
10062
    }
 
10063
    }
 
10064
}
 
10065
if ( (attributeData->present_attributes & trifans__AttributeData::ATTRIBUTE_COUNT_PRESENT) == 0 )
 
10066
{
 
10067
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_TRIFANS, HASH_ATTRIBUTE_COUNT, 0 ) )
 
10068
        return false;
 
10069
}
 
10070
 
 
10071
 
 
10072
    return true;
 
10073
}
 
10074
 
 
10075
//---------------------------------------------------------------------
 
10076
bool ColladaParserAutoGen15Private::_preEnd__trifans()
 
10077
{
 
10078
#ifdef GENERATEDSAXPARSER_VALIDATION
 
10079
    if ( mValidate )
 
10080
    {
 
10081
 
 
10082
        bool validationResult = _validateEnd__trifans();
 
10083
        if ( !validationResult ) return false;
 
10084
 
 
10085
    } // validation
 
10086
#endif
 
10087
 
 
10088
    return true;
 
10089
}
 
10090
 
 
10091
//---------------------------------------------------------------------
 
10092
bool ColladaParserAutoGen15Private::_freeAttributes__trifans( void* attributeData )
 
10093
{
 
10094
    trifans__AttributeData* typedAttributeData = static_cast<trifans__AttributeData*>(attributeData);
 
10095
 
 
10096
    typedAttributeData->~trifans__AttributeData();
 
10097
 
 
10098
    return true;
 
10099
}
 
10100
 
 
10101
//---------------------------------------------------------------------
 
10102
const tristrips__AttributeData tristrips__AttributeData::DEFAULT = {0, 0, 0, 0};
 
10103
 
 
10104
//---------------------------------------------------------------------
 
10105
bool ColladaParserAutoGen15Private::_data__tristrips( const ParserChar* text, size_t textLength )
 
10106
{
 
10107
    return true;
 
10108
}
 
10109
 
 
10110
//---------------------------------------------------------------------
 
10111
bool ColladaParserAutoGen15Private::_preBegin__tristrips( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
10112
{
 
10113
#ifdef GENERATEDSAXPARSER_VALIDATION
 
10114
    if ( mValidate )
 
10115
    {
 
10116
 
 
10117
        bool validationResult = _validateBegin__tristrips( attributes, attributeDataPtr, validationDataPtr );
 
10118
        if ( !validationResult ) return false;
 
10119
 
 
10120
    } // validation
 
10121
#endif
 
10122
 
 
10123
tristrips__AttributeData* attributeData = newData<tristrips__AttributeData>(attributeDataPtr);
 
10124
 
 
10125
const ParserChar** attributeArray = attributes.attributes;
 
10126
if ( attributeArray )
 
10127
{
 
10128
    while (true)
 
10129
    {
 
10130
        const ParserChar * attribute = *attributeArray;
 
10131
        if ( !attribute )
 
10132
            break;
 
10133
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
10134
        attributeArray++;
 
10135
        if ( !attributeArray )
 
10136
            return false;
 
10137
        const ParserChar* attributeValue = *attributeArray;
 
10138
        attributeArray++;
 
10139
 
 
10140
 
 
10141
    switch ( hash )
 
10142
    {
 
10143
    case HASH_ATTRIBUTE_NAME:
 
10144
    {
 
10145
 
 
10146
attributeData->name = attributeValue;
 
10147
 
 
10148
    break;
 
10149
    }
 
10150
    case HASH_ATTRIBUTE_COUNT:
 
10151
    {
 
10152
bool failed;
 
10153
attributeData->count = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
10154
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
10155
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
10156
        HASH_ELEMENT_TRISTRIPS,
 
10157
        HASH_ATTRIBUTE_COUNT,
 
10158
        attributeValue))
 
10159
{
 
10160
    return false;
 
10161
}
 
10162
if ( !failed )
 
10163
    attributeData->present_attributes |= tristrips__AttributeData::ATTRIBUTE_COUNT_PRESENT;
 
10164
 
 
10165
    break;
 
10166
    }
 
10167
    case HASH_ATTRIBUTE_MATERIAL:
 
10168
    {
 
10169
 
 
10170
attributeData->material = attributeValue;
 
10171
#ifdef GENERATEDSAXPARSER_VALIDATION
 
10172
    if ( mValidate )
 
10173
    {
 
10174
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->material, strlen(attributeData->material));
 
10175
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
10176
    {
 
10177
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
10178
            simpleTypeValidationResult,
 
10179
            HASH_ELEMENT_TRISTRIPS,
 
10180
            HASH_ATTRIBUTE_MATERIAL,
 
10181
            attributeValue) )
 
10182
        {
 
10183
            return false;
 
10184
        }
 
10185
    }
 
10186
    } // validation
 
10187
#endif
 
10188
 
 
10189
    break;
 
10190
    }
 
10191
    default:
 
10192
    {
 
10193
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_TRISTRIPS, attribute, attributeValue))
 
10194
            {return false;}
 
10195
    }
 
10196
    }
 
10197
    }
 
10198
}
 
10199
if ( (attributeData->present_attributes & tristrips__AttributeData::ATTRIBUTE_COUNT_PRESENT) == 0 )
 
10200
{
 
10201
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_TRISTRIPS, HASH_ATTRIBUTE_COUNT, 0 ) )
 
10202
        return false;
 
10203
}
 
10204
 
 
10205
 
 
10206
    return true;
 
10207
}
 
10208
 
 
10209
//---------------------------------------------------------------------
 
10210
bool ColladaParserAutoGen15Private::_preEnd__tristrips()
 
10211
{
 
10212
#ifdef GENERATEDSAXPARSER_VALIDATION
 
10213
    if ( mValidate )
 
10214
    {
 
10215
 
 
10216
        bool validationResult = _validateEnd__tristrips();
 
10217
        if ( !validationResult ) return false;
 
10218
 
 
10219
    } // validation
 
10220
#endif
 
10221
 
 
10222
    return true;
 
10223
}
 
10224
 
 
10225
//---------------------------------------------------------------------
 
10226
bool ColladaParserAutoGen15Private::_freeAttributes__tristrips( void* attributeData )
 
10227
{
 
10228
    tristrips__AttributeData* typedAttributeData = static_cast<tristrips__AttributeData*>(attributeData);
 
10229
 
 
10230
    typedAttributeData->~tristrips__AttributeData();
 
10231
 
 
10232
    return true;
 
10233
}
 
10234
 
 
10235
//---------------------------------------------------------------------
 
10236
bool ColladaParserAutoGen15Private::_data__mesh( const ParserChar* text, size_t textLength )
 
10237
{
 
10238
    return true;
 
10239
}
 
10240
 
 
10241
//---------------------------------------------------------------------
 
10242
bool ColladaParserAutoGen15Private::_preBegin__mesh( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
10243
{
 
10244
#ifdef GENERATEDSAXPARSER_VALIDATION
 
10245
    if ( mValidate )
 
10246
    {
 
10247
 
 
10248
        bool validationResult = _validateBegin__mesh( attributes, attributeDataPtr, validationDataPtr );
 
10249
        if ( !validationResult ) return false;
 
10250
 
 
10251
    } // validation
 
10252
#endif
 
10253
 
 
10254
    return true;
 
10255
}
 
10256
 
 
10257
//---------------------------------------------------------------------
 
10258
bool ColladaParserAutoGen15Private::_preEnd__mesh()
 
10259
{
 
10260
#ifdef GENERATEDSAXPARSER_VALIDATION
 
10261
    if ( mValidate )
 
10262
    {
 
10263
 
 
10264
        bool validationResult = _validateEnd__mesh();
 
10265
        if ( !validationResult ) return false;
 
10266
 
 
10267
    } // validation
 
10268
#endif
 
10269
 
 
10270
    return true;
 
10271
}
 
10272
 
 
10273
//---------------------------------------------------------------------
 
10274
bool ColladaParserAutoGen15Private::_freeAttributes__mesh( void* attributeData )
 
10275
{
 
10276
    return true;
 
10277
}
 
10278
 
 
10279
//---------------------------------------------------------------------
 
10280
const spline__AttributeData spline__AttributeData::DEFAULT = {false};
 
10281
 
 
10282
//---------------------------------------------------------------------
 
10283
bool ColladaParserAutoGen15Private::_data__spline( const ParserChar* text, size_t textLength )
 
10284
{
 
10285
    return true;
 
10286
}
 
10287
 
 
10288
//---------------------------------------------------------------------
 
10289
bool ColladaParserAutoGen15Private::_preBegin__spline( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
10290
{
 
10291
#ifdef GENERATEDSAXPARSER_VALIDATION
 
10292
    if ( mValidate )
 
10293
    {
 
10294
 
 
10295
        bool validationResult = _validateBegin__spline( attributes, attributeDataPtr, validationDataPtr );
 
10296
        if ( !validationResult ) return false;
 
10297
 
 
10298
    } // validation
 
10299
#endif
 
10300
 
 
10301
spline__AttributeData* attributeData = newData<spline__AttributeData>(attributeDataPtr);
 
10302
 
 
10303
const ParserChar** attributeArray = attributes.attributes;
 
10304
if ( attributeArray )
 
10305
{
 
10306
    while (true)
 
10307
    {
 
10308
        const ParserChar * attribute = *attributeArray;
 
10309
        if ( !attribute )
 
10310
            break;
 
10311
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
10312
        attributeArray++;
 
10313
        if ( !attributeArray )
 
10314
            return false;
 
10315
        const ParserChar* attributeValue = *attributeArray;
 
10316
        attributeArray++;
 
10317
 
 
10318
 
 
10319
    switch ( hash )
 
10320
    {
 
10321
    case HASH_ATTRIBUTE_CLOSED:
 
10322
    {
 
10323
bool failed;
 
10324
attributeData->closed = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
10325
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
10326
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
10327
        HASH_ELEMENT_SPLINE,
 
10328
        HASH_ATTRIBUTE_CLOSED,
 
10329
        attributeValue))
 
10330
{
 
10331
    return false;
 
10332
}
 
10333
 
 
10334
    break;
 
10335
    }
 
10336
    default:
 
10337
    {
 
10338
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SPLINE, attribute, attributeValue))
 
10339
            {return false;}
 
10340
    }
 
10341
    }
 
10342
    }
 
10343
}
 
10344
 
 
10345
 
 
10346
    return true;
 
10347
}
 
10348
 
 
10349
//---------------------------------------------------------------------
 
10350
bool ColladaParserAutoGen15Private::_preEnd__spline()
 
10351
{
 
10352
#ifdef GENERATEDSAXPARSER_VALIDATION
 
10353
    if ( mValidate )
 
10354
    {
 
10355
 
 
10356
        bool validationResult = _validateEnd__spline();
 
10357
        if ( !validationResult ) return false;
 
10358
 
 
10359
    } // validation
 
10360
#endif
 
10361
 
 
10362
    return true;
 
10363
}
 
10364
 
 
10365
//---------------------------------------------------------------------
 
10366
bool ColladaParserAutoGen15Private::_freeAttributes__spline( void* attributeData )
 
10367
{
 
10368
    spline__AttributeData* typedAttributeData = static_cast<spline__AttributeData*>(attributeData);
 
10369
 
 
10370
    typedAttributeData->~spline__AttributeData();
 
10371
 
 
10372
    return true;
 
10373
}
 
10374
 
 
10375
//---------------------------------------------------------------------
 
10376
bool ColladaParserAutoGen15Private::_data__spline_type____control_vertices( const ParserChar* text, size_t textLength )
 
10377
{
 
10378
    return true;
 
10379
}
 
10380
 
 
10381
//---------------------------------------------------------------------
 
10382
bool ColladaParserAutoGen15Private::_preBegin__spline_type____control_vertices( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
10383
{
 
10384
#ifdef GENERATEDSAXPARSER_VALIDATION
 
10385
    if ( mValidate )
 
10386
    {
 
10387
 
 
10388
        bool validationResult = _validateBegin__spline_type____control_vertices( attributes, attributeDataPtr, validationDataPtr );
 
10389
        if ( !validationResult ) return false;
 
10390
 
 
10391
    } // validation
 
10392
#endif
 
10393
 
 
10394
    return true;
 
10395
}
 
10396
 
 
10397
//---------------------------------------------------------------------
 
10398
bool ColladaParserAutoGen15Private::_preEnd__spline_type____control_vertices()
 
10399
{
 
10400
#ifdef GENERATEDSAXPARSER_VALIDATION
 
10401
    if ( mValidate )
 
10402
    {
 
10403
 
 
10404
        bool validationResult = _validateEnd__spline_type____control_vertices();
 
10405
        if ( !validationResult ) return false;
 
10406
 
 
10407
    } // validation
 
10408
#endif
 
10409
 
 
10410
    return true;
 
10411
}
 
10412
 
 
10413
//---------------------------------------------------------------------
 
10414
bool ColladaParserAutoGen15Private::_freeAttributes__spline_type____control_vertices( void* attributeData )
 
10415
{
 
10416
    return true;
 
10417
}
 
10418
 
 
10419
//---------------------------------------------------------------------
 
10420
bool ColladaParserAutoGen15Private::_data__brep( const ParserChar* text, size_t textLength )
 
10421
{
 
10422
    return true;
 
10423
}
 
10424
 
 
10425
//---------------------------------------------------------------------
 
10426
bool ColladaParserAutoGen15Private::_preBegin__brep( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
10427
{
 
10428
#ifdef GENERATEDSAXPARSER_VALIDATION
 
10429
    if ( mValidate )
 
10430
    {
 
10431
 
 
10432
        bool validationResult = _validateBegin__brep( attributes, attributeDataPtr, validationDataPtr );
 
10433
        if ( !validationResult ) return false;
 
10434
 
 
10435
    } // validation
 
10436
#endif
 
10437
 
 
10438
    return true;
 
10439
}
 
10440
 
 
10441
//---------------------------------------------------------------------
 
10442
bool ColladaParserAutoGen15Private::_preEnd__brep()
 
10443
{
 
10444
#ifdef GENERATEDSAXPARSER_VALIDATION
 
10445
    if ( mValidate )
 
10446
    {
 
10447
 
 
10448
        bool validationResult = _validateEnd__brep();
 
10449
        if ( !validationResult ) return false;
 
10450
 
 
10451
    } // validation
 
10452
#endif
 
10453
 
 
10454
    return true;
 
10455
}
 
10456
 
 
10457
//---------------------------------------------------------------------
 
10458
bool ColladaParserAutoGen15Private::_freeAttributes__brep( void* attributeData )
 
10459
{
 
10460
    return true;
 
10461
}
 
10462
 
 
10463
//---------------------------------------------------------------------
 
10464
bool ColladaParserAutoGen15Private::_data__curves( const ParserChar* text, size_t textLength )
 
10465
{
 
10466
    return true;
 
10467
}
 
10468
 
 
10469
//---------------------------------------------------------------------
 
10470
bool ColladaParserAutoGen15Private::_preBegin__curves( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
10471
{
 
10472
#ifdef GENERATEDSAXPARSER_VALIDATION
 
10473
    if ( mValidate )
 
10474
    {
 
10475
 
 
10476
        bool validationResult = _validateBegin__curves( attributes, attributeDataPtr, validationDataPtr );
 
10477
        if ( !validationResult ) return false;
 
10478
 
 
10479
    } // validation
 
10480
#endif
 
10481
 
 
10482
    return true;
 
10483
}
 
10484
 
 
10485
//---------------------------------------------------------------------
 
10486
bool ColladaParserAutoGen15Private::_preEnd__curves()
 
10487
{
 
10488
#ifdef GENERATEDSAXPARSER_VALIDATION
 
10489
    if ( mValidate )
 
10490
    {
 
10491
 
 
10492
        bool validationResult = _validateEnd__curves();
 
10493
        if ( !validationResult ) return false;
 
10494
 
 
10495
    } // validation
 
10496
#endif
 
10497
 
 
10498
    return true;
 
10499
}
 
10500
 
 
10501
//---------------------------------------------------------------------
 
10502
bool ColladaParserAutoGen15Private::_freeAttributes__curves( void* attributeData )
 
10503
{
 
10504
    return true;
 
10505
}
 
10506
 
 
10507
//---------------------------------------------------------------------
 
10508
const curve__AttributeData curve__AttributeData::DEFAULT = {0, 0};
 
10509
 
 
10510
//---------------------------------------------------------------------
 
10511
bool ColladaParserAutoGen15Private::_data__curve( const ParserChar* text, size_t textLength )
 
10512
{
 
10513
    return true;
 
10514
}
 
10515
 
 
10516
//---------------------------------------------------------------------
 
10517
bool ColladaParserAutoGen15Private::_preBegin__curve( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
10518
{
 
10519
#ifdef GENERATEDSAXPARSER_VALIDATION
 
10520
    if ( mValidate )
 
10521
    {
 
10522
 
 
10523
        bool validationResult = _validateBegin__curve( attributes, attributeDataPtr, validationDataPtr );
 
10524
        if ( !validationResult ) return false;
 
10525
 
 
10526
    } // validation
 
10527
#endif
 
10528
 
 
10529
curve__AttributeData* attributeData = newData<curve__AttributeData>(attributeDataPtr);
 
10530
 
 
10531
const ParserChar** attributeArray = attributes.attributes;
 
10532
if ( attributeArray )
 
10533
{
 
10534
    while (true)
 
10535
    {
 
10536
        const ParserChar * attribute = *attributeArray;
 
10537
        if ( !attribute )
 
10538
            break;
 
10539
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
10540
        attributeArray++;
 
10541
        if ( !attributeArray )
 
10542
            return false;
 
10543
        const ParserChar* attributeValue = *attributeArray;
 
10544
        attributeArray++;
 
10545
 
 
10546
 
 
10547
    switch ( hash )
 
10548
    {
 
10549
    case HASH_ATTRIBUTE_SID:
 
10550
    {
 
10551
 
 
10552
attributeData->sid = attributeValue;
 
10553
#ifdef GENERATEDSAXPARSER_VALIDATION
 
10554
    if ( mValidate )
 
10555
    {
 
10556
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
10557
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
10558
    {
 
10559
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
10560
            simpleTypeValidationResult,
 
10561
            HASH_ELEMENT_CURVE,
 
10562
            HASH_ATTRIBUTE_SID,
 
10563
            attributeValue) )
 
10564
        {
 
10565
            return false;
 
10566
        }
 
10567
    }
 
10568
    } // validation
 
10569
#endif
 
10570
 
 
10571
    break;
 
10572
    }
 
10573
    case HASH_ATTRIBUTE_NAME:
 
10574
    {
 
10575
 
 
10576
attributeData->name = attributeValue;
 
10577
 
 
10578
    break;
 
10579
    }
 
10580
    default:
 
10581
    {
 
10582
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_CURVE, attribute, attributeValue))
 
10583
            {return false;}
 
10584
    }
 
10585
    }
 
10586
    }
 
10587
}
 
10588
 
 
10589
 
 
10590
    return true;
 
10591
}
 
10592
 
 
10593
//---------------------------------------------------------------------
 
10594
bool ColladaParserAutoGen15Private::_preEnd__curve()
 
10595
{
 
10596
#ifdef GENERATEDSAXPARSER_VALIDATION
 
10597
    if ( mValidate )
 
10598
    {
 
10599
 
 
10600
        bool validationResult = _validateEnd__curve();
 
10601
        if ( !validationResult ) return false;
 
10602
 
 
10603
    } // validation
 
10604
#endif
 
10605
 
 
10606
    return true;
 
10607
}
 
10608
 
 
10609
//---------------------------------------------------------------------
 
10610
bool ColladaParserAutoGen15Private::_freeAttributes__curve( void* attributeData )
 
10611
{
 
10612
    curve__AttributeData* typedAttributeData = static_cast<curve__AttributeData*>(attributeData);
 
10613
 
 
10614
    typedAttributeData->~curve__AttributeData();
 
10615
 
 
10616
    return true;
 
10617
}
 
10618
 
 
10619
//---------------------------------------------------------------------
 
10620
bool ColladaParserAutoGen15Private::_data__line( const ParserChar* text, size_t textLength )
 
10621
{
 
10622
    return true;
 
10623
}
 
10624
 
 
10625
//---------------------------------------------------------------------
 
10626
bool ColladaParserAutoGen15Private::_preBegin__line( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
10627
{
 
10628
#ifdef GENERATEDSAXPARSER_VALIDATION
 
10629
    if ( mValidate )
 
10630
    {
 
10631
 
 
10632
        bool validationResult = _validateBegin__line( attributes, attributeDataPtr, validationDataPtr );
 
10633
        if ( !validationResult ) return false;
 
10634
 
 
10635
    } // validation
 
10636
#endif
 
10637
 
 
10638
    return true;
 
10639
}
 
10640
 
 
10641
//---------------------------------------------------------------------
 
10642
bool ColladaParserAutoGen15Private::_preEnd__line()
 
10643
{
 
10644
#ifdef GENERATEDSAXPARSER_VALIDATION
 
10645
    if ( mValidate )
 
10646
    {
 
10647
 
 
10648
        bool validationResult = _validateEnd__line();
 
10649
        if ( !validationResult ) return false;
 
10650
 
 
10651
    } // validation
 
10652
#endif
 
10653
 
 
10654
    return true;
 
10655
}
 
10656
 
 
10657
//---------------------------------------------------------------------
 
10658
bool ColladaParserAutoGen15Private::_freeAttributes__line( void* attributeData )
 
10659
{
 
10660
    return true;
 
10661
}
 
10662
 
 
10663
//---------------------------------------------------------------------
 
10664
bool ColladaParserAutoGen15Private::_data__origin____float3_type( const ParserChar* text, size_t textLength )
 
10665
{
 
10666
#ifdef GENERATEDSAXPARSER_VALIDATION
 
10667
    if ( mValidate )
 
10668
    {
 
10669
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
10670
        DISABLE_WARNING_UNUSED(validationData)
 
10671
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__origin____float3_type, &validate__float3_type__stream, &validationData->validationWholeSize, 0);
 
10672
    }
 
10673
    else
 
10674
    {
 
10675
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__origin____float3_type);
 
10676
    }
 
10677
#else
 
10678
    {
 
10679
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__origin____float3_type);
 
10680
    } // validation
 
10681
#endif
 
10682
 
 
10683
}
 
10684
 
 
10685
//---------------------------------------------------------------------
 
10686
bool ColladaParserAutoGen15Private::_preBegin__origin____float3_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
10687
{
 
10688
#ifdef GENERATEDSAXPARSER_VALIDATION
 
10689
    if ( mValidate )
 
10690
    {
 
10691
 
 
10692
        bool validationResult = _validateBegin__origin____float3_type( attributes, attributeDataPtr, validationDataPtr );
 
10693
        if ( !validationResult ) return false;
 
10694
 
 
10695
    } // validation
 
10696
#endif
 
10697
 
 
10698
    return true;
 
10699
}
 
10700
 
 
10701
//---------------------------------------------------------------------
 
10702
bool ColladaParserAutoGen15Private::_preEnd__origin____float3_type()
 
10703
{
 
10704
#ifdef GENERATEDSAXPARSER_VALIDATION
 
10705
    if ( mValidate )
 
10706
    {
 
10707
 
 
10708
        bool validationResult = _validateEnd__origin____float3_type();
 
10709
        if ( !validationResult ) return false;
 
10710
 
 
10711
    } // validation
 
10712
#endif
 
10713
 
 
10714
#ifdef GENERATEDSAXPARSER_VALIDATION
 
10715
    if ( mValidate )
 
10716
    {
 
10717
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
10718
        DISABLE_WARNING_UNUSED(validationData)
 
10719
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__origin____float3_type, &validate__float3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
10720
        ParserError::ErrorType simpleTypeValidationResult = validate__float3_type(0, (*(&validationData->validationWholeSize)));
 
10721
        mValidationDataStack.deleteObject();
 
10722
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
10723
        {
 
10724
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
10725
                simpleTypeValidationResult,
 
10726
                HASH_ELEMENT_ORIGIN,
 
10727
                (ParserChar*)0, 0 ) )
 
10728
            {
 
10729
                return false;
 
10730
            }
 
10731
        }
 
10732
        return returnValue;
 
10733
    }
 
10734
    else
 
10735
    {
 
10736
return floatDataEnd( &ColladaParserAutoGen15::data__origin____float3_type );
 
10737
    }
 
10738
#else
 
10739
    {
 
10740
return floatDataEnd( &ColladaParserAutoGen15::data__origin____float3_type );
 
10741
    } // validation
 
10742
#endif
 
10743
 
 
10744
}
 
10745
 
 
10746
//---------------------------------------------------------------------
 
10747
bool ColladaParserAutoGen15Private::_freeAttributes__origin____float3_type( void* attributeData )
 
10748
{
 
10749
    return true;
 
10750
}
 
10751
 
 
10752
//---------------------------------------------------------------------
 
10753
bool ColladaParserAutoGen15Private::_data__direction( const ParserChar* text, size_t textLength )
 
10754
{
 
10755
#ifdef GENERATEDSAXPARSER_VALIDATION
 
10756
    if ( mValidate )
 
10757
    {
 
10758
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
10759
        DISABLE_WARNING_UNUSED(validationData)
 
10760
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__direction, &validate__float3_type__stream, &validationData->validationWholeSize, 0);
 
10761
    }
 
10762
    else
 
10763
    {
 
10764
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__direction);
 
10765
    }
 
10766
#else
 
10767
    {
 
10768
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__direction);
 
10769
    } // validation
 
10770
#endif
 
10771
 
 
10772
}
 
10773
 
 
10774
//---------------------------------------------------------------------
 
10775
bool ColladaParserAutoGen15Private::_preBegin__direction( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
10776
{
 
10777
#ifdef GENERATEDSAXPARSER_VALIDATION
 
10778
    if ( mValidate )
 
10779
    {
 
10780
 
 
10781
        bool validationResult = _validateBegin__direction( attributes, attributeDataPtr, validationDataPtr );
 
10782
        if ( !validationResult ) return false;
 
10783
 
 
10784
    } // validation
 
10785
#endif
 
10786
 
 
10787
    return true;
 
10788
}
 
10789
 
 
10790
//---------------------------------------------------------------------
 
10791
bool ColladaParserAutoGen15Private::_preEnd__direction()
 
10792
{
 
10793
#ifdef GENERATEDSAXPARSER_VALIDATION
 
10794
    if ( mValidate )
 
10795
    {
 
10796
 
 
10797
        bool validationResult = _validateEnd__direction();
 
10798
        if ( !validationResult ) return false;
 
10799
 
 
10800
    } // validation
 
10801
#endif
 
10802
 
 
10803
#ifdef GENERATEDSAXPARSER_VALIDATION
 
10804
    if ( mValidate )
 
10805
    {
 
10806
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
10807
        DISABLE_WARNING_UNUSED(validationData)
 
10808
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__direction, &validate__float3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
10809
        ParserError::ErrorType simpleTypeValidationResult = validate__float3_type(0, (*(&validationData->validationWholeSize)));
 
10810
        mValidationDataStack.deleteObject();
 
10811
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
10812
        {
 
10813
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
10814
                simpleTypeValidationResult,
 
10815
                HASH_ELEMENT_DIRECTION,
 
10816
                (ParserChar*)0, 0 ) )
 
10817
            {
 
10818
                return false;
 
10819
            }
 
10820
        }
 
10821
        return returnValue;
 
10822
    }
 
10823
    else
 
10824
    {
 
10825
return floatDataEnd( &ColladaParserAutoGen15::data__direction );
 
10826
    }
 
10827
#else
 
10828
    {
 
10829
return floatDataEnd( &ColladaParserAutoGen15::data__direction );
 
10830
    } // validation
 
10831
#endif
 
10832
 
 
10833
}
 
10834
 
 
10835
//---------------------------------------------------------------------
 
10836
bool ColladaParserAutoGen15Private::_freeAttributes__direction( void* attributeData )
 
10837
{
 
10838
    return true;
 
10839
}
 
10840
 
 
10841
//---------------------------------------------------------------------
 
10842
bool ColladaParserAutoGen15Private::_data__circle( const ParserChar* text, size_t textLength )
 
10843
{
 
10844
    return true;
 
10845
}
 
10846
 
 
10847
//---------------------------------------------------------------------
 
10848
bool ColladaParserAutoGen15Private::_preBegin__circle( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
10849
{
 
10850
#ifdef GENERATEDSAXPARSER_VALIDATION
 
10851
    if ( mValidate )
 
10852
    {
 
10853
 
 
10854
        bool validationResult = _validateBegin__circle( attributes, attributeDataPtr, validationDataPtr );
 
10855
        if ( !validationResult ) return false;
 
10856
 
 
10857
    } // validation
 
10858
#endif
 
10859
 
 
10860
    return true;
 
10861
}
 
10862
 
 
10863
//---------------------------------------------------------------------
 
10864
bool ColladaParserAutoGen15Private::_preEnd__circle()
 
10865
{
 
10866
#ifdef GENERATEDSAXPARSER_VALIDATION
 
10867
    if ( mValidate )
 
10868
    {
 
10869
 
 
10870
        bool validationResult = _validateEnd__circle();
 
10871
        if ( !validationResult ) return false;
 
10872
 
 
10873
    } // validation
 
10874
#endif
 
10875
 
 
10876
    return true;
 
10877
}
 
10878
 
 
10879
//---------------------------------------------------------------------
 
10880
bool ColladaParserAutoGen15Private::_freeAttributes__circle( void* attributeData )
 
10881
{
 
10882
    return true;
 
10883
}
 
10884
 
 
10885
//---------------------------------------------------------------------
 
10886
bool ColladaParserAutoGen15Private::_data__radius____float_type( const ParserChar* text, size_t textLength )
 
10887
{
 
10888
if (!mLastIncompleteFragmentInCharacterData)
 
10889
{
 
10890
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
10891
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
10892
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
10893
}
 
10894
else
 
10895
{
 
10896
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
10897
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
10898
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
10899
        mLastIncompleteFragmentInCharacterData = tmp;
 
10900
    }
 
10901
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
10902
    mEndOfDataInCurrentObjectOnStack += textLength;
 
10903
}
 
10904
return true;
 
10905
}
 
10906
 
 
10907
//---------------------------------------------------------------------
 
10908
bool ColladaParserAutoGen15Private::_preBegin__radius____float_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
10909
{
 
10910
#ifdef GENERATEDSAXPARSER_VALIDATION
 
10911
    if ( mValidate )
 
10912
    {
 
10913
 
 
10914
        bool validationResult = _validateBegin__radius____float_type( attributes, attributeDataPtr, validationDataPtr );
 
10915
        if ( !validationResult ) return false;
 
10916
 
 
10917
    } // validation
 
10918
#endif
 
10919
 
 
10920
    return true;
 
10921
}
 
10922
 
 
10923
//---------------------------------------------------------------------
 
10924
bool ColladaParserAutoGen15Private::_preEnd__radius____float_type()
 
10925
{
 
10926
#ifdef GENERATEDSAXPARSER_VALIDATION
 
10927
    if ( mValidate )
 
10928
    {
 
10929
 
 
10930
        bool validationResult = _validateEnd__radius____float_type();
 
10931
        if ( !validationResult ) return false;
 
10932
 
 
10933
    } // validation
 
10934
#endif
 
10935
 
 
10936
bool failed;
 
10937
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
10938
DISABLE_WARNING_UNUSED(ptrForErr)
 
10939
float parameter = GeneratedSaxParser::Utils::toFloat((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
10940
bool returnValue;
 
10941
if (!failed)
 
10942
{
 
10943
    returnValue = mImpl->data__radius____float_type(parameter);
 
10944
}
 
10945
else
 
10946
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_RADIUS, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
10947
if (mLastIncompleteFragmentInCharacterData)
 
10948
    mStackMemoryManager.deleteObject();
 
10949
mLastIncompleteFragmentInCharacterData = 0;
 
10950
mEndOfDataInCurrentObjectOnStack = 0;
 
10951
return returnValue;
 
10952
}
 
10953
 
 
10954
//---------------------------------------------------------------------
 
10955
bool ColladaParserAutoGen15Private::_freeAttributes__radius____float_type( void* attributeData )
 
10956
{
 
10957
    return true;
 
10958
}
 
10959
 
 
10960
//---------------------------------------------------------------------
 
10961
bool ColladaParserAutoGen15Private::_data__ellipse( const ParserChar* text, size_t textLength )
 
10962
{
 
10963
    return true;
 
10964
}
 
10965
 
 
10966
//---------------------------------------------------------------------
 
10967
bool ColladaParserAutoGen15Private::_preBegin__ellipse( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
10968
{
 
10969
#ifdef GENERATEDSAXPARSER_VALIDATION
 
10970
    if ( mValidate )
 
10971
    {
 
10972
 
 
10973
        bool validationResult = _validateBegin__ellipse( attributes, attributeDataPtr, validationDataPtr );
 
10974
        if ( !validationResult ) return false;
 
10975
 
 
10976
    } // validation
 
10977
#endif
 
10978
 
 
10979
    return true;
 
10980
}
 
10981
 
 
10982
//---------------------------------------------------------------------
 
10983
bool ColladaParserAutoGen15Private::_preEnd__ellipse()
 
10984
{
 
10985
#ifdef GENERATEDSAXPARSER_VALIDATION
 
10986
    if ( mValidate )
 
10987
    {
 
10988
 
 
10989
        bool validationResult = _validateEnd__ellipse();
 
10990
        if ( !validationResult ) return false;
 
10991
 
 
10992
    } // validation
 
10993
#endif
 
10994
 
 
10995
    return true;
 
10996
}
 
10997
 
 
10998
//---------------------------------------------------------------------
 
10999
bool ColladaParserAutoGen15Private::_freeAttributes__ellipse( void* attributeData )
 
11000
{
 
11001
    return true;
 
11002
}
 
11003
 
 
11004
//---------------------------------------------------------------------
 
11005
bool ColladaParserAutoGen15Private::_data__radius____float2_type( const ParserChar* text, size_t textLength )
 
11006
{
 
11007
#ifdef GENERATEDSAXPARSER_VALIDATION
 
11008
    if ( mValidate )
 
11009
    {
 
11010
        radius____float2_type__ValidationData* validationData = (radius____float2_type__ValidationData*)mValidationDataStack.top();
 
11011
        DISABLE_WARNING_UNUSED(validationData)
 
11012
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__radius____float2_type, &validate__float2_type__stream, &validationData->validationWholeSize, 0);
 
11013
    }
 
11014
    else
 
11015
    {
 
11016
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__radius____float2_type);
 
11017
    }
 
11018
#else
 
11019
    {
 
11020
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__radius____float2_type);
 
11021
    } // validation
 
11022
#endif
 
11023
 
 
11024
}
 
11025
 
 
11026
//---------------------------------------------------------------------
 
11027
bool ColladaParserAutoGen15Private::_preBegin__radius____float2_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
11028
{
 
11029
#ifdef GENERATEDSAXPARSER_VALIDATION
 
11030
    if ( mValidate )
 
11031
    {
 
11032
 
 
11033
        bool validationResult = _validateBegin__radius____float2_type( attributes, attributeDataPtr, validationDataPtr );
 
11034
        if ( !validationResult ) return false;
 
11035
 
 
11036
    } // validation
 
11037
#endif
 
11038
 
 
11039
    return true;
 
11040
}
 
11041
 
 
11042
//---------------------------------------------------------------------
 
11043
bool ColladaParserAutoGen15Private::_preEnd__radius____float2_type()
 
11044
{
 
11045
#ifdef GENERATEDSAXPARSER_VALIDATION
 
11046
    if ( mValidate )
 
11047
    {
 
11048
 
 
11049
        bool validationResult = _validateEnd__radius____float2_type();
 
11050
        if ( !validationResult ) return false;
 
11051
 
 
11052
    } // validation
 
11053
#endif
 
11054
 
 
11055
#ifdef GENERATEDSAXPARSER_VALIDATION
 
11056
    if ( mValidate )
 
11057
    {
 
11058
        radius____float2_type__ValidationData* validationData = (radius____float2_type__ValidationData*)mValidationDataStack.top();
 
11059
        DISABLE_WARNING_UNUSED(validationData)
 
11060
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__radius____float2_type, &validate__float2_type__streamEnd, &validationData->validationWholeSize, 0 );
 
11061
        ParserError::ErrorType simpleTypeValidationResult = validate__float2_type(0, (*(&validationData->validationWholeSize)));
 
11062
        mValidationDataStack.deleteObject();
 
11063
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
11064
        {
 
11065
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
11066
                simpleTypeValidationResult,
 
11067
                HASH_ELEMENT_RADIUS,
 
11068
                (ParserChar*)0, 0 ) )
 
11069
            {
 
11070
                return false;
 
11071
            }
 
11072
        }
 
11073
        return returnValue;
 
11074
    }
 
11075
    else
 
11076
    {
 
11077
return floatDataEnd( &ColladaParserAutoGen15::data__radius____float2_type );
 
11078
    }
 
11079
#else
 
11080
    {
 
11081
return floatDataEnd( &ColladaParserAutoGen15::data__radius____float2_type );
 
11082
    } // validation
 
11083
#endif
 
11084
 
 
11085
}
 
11086
 
 
11087
//---------------------------------------------------------------------
 
11088
bool ColladaParserAutoGen15Private::_freeAttributes__radius____float2_type( void* attributeData )
 
11089
{
 
11090
    return true;
 
11091
}
 
11092
 
 
11093
//---------------------------------------------------------------------
 
11094
bool ColladaParserAutoGen15Private::_data__parabola( const ParserChar* text, size_t textLength )
 
11095
{
 
11096
    return true;
 
11097
}
 
11098
 
 
11099
//---------------------------------------------------------------------
 
11100
bool ColladaParserAutoGen15Private::_preBegin__parabola( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
11101
{
 
11102
#ifdef GENERATEDSAXPARSER_VALIDATION
 
11103
    if ( mValidate )
 
11104
    {
 
11105
 
 
11106
        bool validationResult = _validateBegin__parabola( attributes, attributeDataPtr, validationDataPtr );
 
11107
        if ( !validationResult ) return false;
 
11108
 
 
11109
    } // validation
 
11110
#endif
 
11111
 
 
11112
    return true;
 
11113
}
 
11114
 
 
11115
//---------------------------------------------------------------------
 
11116
bool ColladaParserAutoGen15Private::_preEnd__parabola()
 
11117
{
 
11118
#ifdef GENERATEDSAXPARSER_VALIDATION
 
11119
    if ( mValidate )
 
11120
    {
 
11121
 
 
11122
        bool validationResult = _validateEnd__parabola();
 
11123
        if ( !validationResult ) return false;
 
11124
 
 
11125
    } // validation
 
11126
#endif
 
11127
 
 
11128
    return true;
 
11129
}
 
11130
 
 
11131
//---------------------------------------------------------------------
 
11132
bool ColladaParserAutoGen15Private::_freeAttributes__parabola( void* attributeData )
 
11133
{
 
11134
    return true;
 
11135
}
 
11136
 
 
11137
//---------------------------------------------------------------------
 
11138
bool ColladaParserAutoGen15Private::_data__focal( const ParserChar* text, size_t textLength )
 
11139
{
 
11140
if (!mLastIncompleteFragmentInCharacterData)
 
11141
{
 
11142
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
11143
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
11144
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
11145
}
 
11146
else
 
11147
{
 
11148
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
11149
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
11150
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
11151
        mLastIncompleteFragmentInCharacterData = tmp;
 
11152
    }
 
11153
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
11154
    mEndOfDataInCurrentObjectOnStack += textLength;
 
11155
}
 
11156
return true;
 
11157
}
 
11158
 
 
11159
//---------------------------------------------------------------------
 
11160
bool ColladaParserAutoGen15Private::_preBegin__focal( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
11161
{
 
11162
#ifdef GENERATEDSAXPARSER_VALIDATION
 
11163
    if ( mValidate )
 
11164
    {
 
11165
 
 
11166
        bool validationResult = _validateBegin__focal( attributes, attributeDataPtr, validationDataPtr );
 
11167
        if ( !validationResult ) return false;
 
11168
 
 
11169
    } // validation
 
11170
#endif
 
11171
 
 
11172
    return true;
 
11173
}
 
11174
 
 
11175
//---------------------------------------------------------------------
 
11176
bool ColladaParserAutoGen15Private::_preEnd__focal()
 
11177
{
 
11178
#ifdef GENERATEDSAXPARSER_VALIDATION
 
11179
    if ( mValidate )
 
11180
    {
 
11181
 
 
11182
        bool validationResult = _validateEnd__focal();
 
11183
        if ( !validationResult ) return false;
 
11184
 
 
11185
    } // validation
 
11186
#endif
 
11187
 
 
11188
bool failed;
 
11189
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
11190
DISABLE_WARNING_UNUSED(ptrForErr)
 
11191
float parameter = GeneratedSaxParser::Utils::toFloat((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
11192
bool returnValue;
 
11193
if (!failed)
 
11194
{
 
11195
    returnValue = mImpl->data__focal(parameter);
 
11196
}
 
11197
else
 
11198
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_FOCAL, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
11199
if (mLastIncompleteFragmentInCharacterData)
 
11200
    mStackMemoryManager.deleteObject();
 
11201
mLastIncompleteFragmentInCharacterData = 0;
 
11202
mEndOfDataInCurrentObjectOnStack = 0;
 
11203
return returnValue;
 
11204
}
 
11205
 
 
11206
//---------------------------------------------------------------------
 
11207
bool ColladaParserAutoGen15Private::_freeAttributes__focal( void* attributeData )
 
11208
{
 
11209
    return true;
 
11210
}
 
11211
 
 
11212
//---------------------------------------------------------------------
 
11213
bool ColladaParserAutoGen15Private::_data__hyperbola( const ParserChar* text, size_t textLength )
 
11214
{
 
11215
    return true;
 
11216
}
 
11217
 
 
11218
//---------------------------------------------------------------------
 
11219
bool ColladaParserAutoGen15Private::_preBegin__hyperbola( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
11220
{
 
11221
#ifdef GENERATEDSAXPARSER_VALIDATION
 
11222
    if ( mValidate )
 
11223
    {
 
11224
 
 
11225
        bool validationResult = _validateBegin__hyperbola( attributes, attributeDataPtr, validationDataPtr );
 
11226
        if ( !validationResult ) return false;
 
11227
 
 
11228
    } // validation
 
11229
#endif
 
11230
 
 
11231
    return true;
 
11232
}
 
11233
 
 
11234
//---------------------------------------------------------------------
 
11235
bool ColladaParserAutoGen15Private::_preEnd__hyperbola()
 
11236
{
 
11237
#ifdef GENERATEDSAXPARSER_VALIDATION
 
11238
    if ( mValidate )
 
11239
    {
 
11240
 
 
11241
        bool validationResult = _validateEnd__hyperbola();
 
11242
        if ( !validationResult ) return false;
 
11243
 
 
11244
    } // validation
 
11245
#endif
 
11246
 
 
11247
    return true;
 
11248
}
 
11249
 
 
11250
//---------------------------------------------------------------------
 
11251
bool ColladaParserAutoGen15Private::_freeAttributes__hyperbola( void* attributeData )
 
11252
{
 
11253
    return true;
 
11254
}
 
11255
 
 
11256
//---------------------------------------------------------------------
 
11257
const nurbs__AttributeData nurbs__AttributeData::DEFAULT = {0, 0, false};
 
11258
 
 
11259
//---------------------------------------------------------------------
 
11260
bool ColladaParserAutoGen15Private::_data__nurbs( const ParserChar* text, size_t textLength )
 
11261
{
 
11262
    return true;
 
11263
}
 
11264
 
 
11265
//---------------------------------------------------------------------
 
11266
bool ColladaParserAutoGen15Private::_preBegin__nurbs( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
11267
{
 
11268
#ifdef GENERATEDSAXPARSER_VALIDATION
 
11269
    if ( mValidate )
 
11270
    {
 
11271
 
 
11272
        bool validationResult = _validateBegin__nurbs( attributes, attributeDataPtr, validationDataPtr );
 
11273
        if ( !validationResult ) return false;
 
11274
 
 
11275
    } // validation
 
11276
#endif
 
11277
 
 
11278
nurbs__AttributeData* attributeData = newData<nurbs__AttributeData>(attributeDataPtr);
 
11279
 
 
11280
const ParserChar** attributeArray = attributes.attributes;
 
11281
if ( attributeArray )
 
11282
{
 
11283
    while (true)
 
11284
    {
 
11285
        const ParserChar * attribute = *attributeArray;
 
11286
        if ( !attribute )
 
11287
            break;
 
11288
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
11289
        attributeArray++;
 
11290
        if ( !attributeArray )
 
11291
            return false;
 
11292
        const ParserChar* attributeValue = *attributeArray;
 
11293
        attributeArray++;
 
11294
 
 
11295
 
 
11296
    switch ( hash )
 
11297
    {
 
11298
    case HASH_ATTRIBUTE_DEGREE:
 
11299
    {
 
11300
bool failed;
 
11301
attributeData->degree = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
11302
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
11303
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
11304
        HASH_ELEMENT_NURBS,
 
11305
        HASH_ATTRIBUTE_DEGREE,
 
11306
        attributeValue))
 
11307
{
 
11308
    return false;
 
11309
}
 
11310
if ( !failed )
 
11311
    attributeData->present_attributes |= nurbs__AttributeData::ATTRIBUTE_DEGREE_PRESENT;
 
11312
 
 
11313
    break;
 
11314
    }
 
11315
    case HASH_ATTRIBUTE_CLOSED:
 
11316
    {
 
11317
bool failed;
 
11318
attributeData->closed = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
11319
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
11320
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
11321
        HASH_ELEMENT_NURBS,
 
11322
        HASH_ATTRIBUTE_CLOSED,
 
11323
        attributeValue))
 
11324
{
 
11325
    return false;
 
11326
}
 
11327
 
 
11328
    break;
 
11329
    }
 
11330
    default:
 
11331
    {
 
11332
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_NURBS, attribute, attributeValue))
 
11333
            {return false;}
 
11334
    }
 
11335
    }
 
11336
    }
 
11337
}
 
11338
if ( (attributeData->present_attributes & nurbs__AttributeData::ATTRIBUTE_DEGREE_PRESENT) == 0 )
 
11339
{
 
11340
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_NURBS, HASH_ATTRIBUTE_DEGREE, 0 ) )
 
11341
        return false;
 
11342
}
 
11343
 
 
11344
 
 
11345
    return true;
 
11346
}
 
11347
 
 
11348
//---------------------------------------------------------------------
 
11349
bool ColladaParserAutoGen15Private::_preEnd__nurbs()
 
11350
{
 
11351
#ifdef GENERATEDSAXPARSER_VALIDATION
 
11352
    if ( mValidate )
 
11353
    {
 
11354
 
 
11355
        bool validationResult = _validateEnd__nurbs();
 
11356
        if ( !validationResult ) return false;
 
11357
 
 
11358
    } // validation
 
11359
#endif
 
11360
 
 
11361
    return true;
 
11362
}
 
11363
 
 
11364
//---------------------------------------------------------------------
 
11365
bool ColladaParserAutoGen15Private::_freeAttributes__nurbs( void* attributeData )
 
11366
{
 
11367
    nurbs__AttributeData* typedAttributeData = static_cast<nurbs__AttributeData*>(attributeData);
 
11368
 
 
11369
    typedAttributeData->~nurbs__AttributeData();
 
11370
 
 
11371
    return true;
 
11372
}
 
11373
 
 
11374
//---------------------------------------------------------------------
 
11375
bool ColladaParserAutoGen15Private::_data__nurbs_type____control_vertices( const ParserChar* text, size_t textLength )
 
11376
{
 
11377
    return true;
 
11378
}
 
11379
 
 
11380
//---------------------------------------------------------------------
 
11381
bool ColladaParserAutoGen15Private::_preBegin__nurbs_type____control_vertices( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
11382
{
 
11383
#ifdef GENERATEDSAXPARSER_VALIDATION
 
11384
    if ( mValidate )
 
11385
    {
 
11386
 
 
11387
        bool validationResult = _validateBegin__nurbs_type____control_vertices( attributes, attributeDataPtr, validationDataPtr );
 
11388
        if ( !validationResult ) return false;
 
11389
 
 
11390
    } // validation
 
11391
#endif
 
11392
 
 
11393
    return true;
 
11394
}
 
11395
 
 
11396
//---------------------------------------------------------------------
 
11397
bool ColladaParserAutoGen15Private::_preEnd__nurbs_type____control_vertices()
 
11398
{
 
11399
#ifdef GENERATEDSAXPARSER_VALIDATION
 
11400
    if ( mValidate )
 
11401
    {
 
11402
 
 
11403
        bool validationResult = _validateEnd__nurbs_type____control_vertices();
 
11404
        if ( !validationResult ) return false;
 
11405
 
 
11406
    } // validation
 
11407
#endif
 
11408
 
 
11409
    return true;
 
11410
}
 
11411
 
 
11412
//---------------------------------------------------------------------
 
11413
bool ColladaParserAutoGen15Private::_freeAttributes__nurbs_type____control_vertices( void* attributeData )
 
11414
{
 
11415
    return true;
 
11416
}
 
11417
 
 
11418
//---------------------------------------------------------------------
 
11419
bool ColladaParserAutoGen15Private::_data__orient( const ParserChar* text, size_t textLength )
 
11420
{
 
11421
#ifdef GENERATEDSAXPARSER_VALIDATION
 
11422
    if ( mValidate )
 
11423
    {
 
11424
        orient__ValidationData* validationData = (orient__ValidationData*)mValidationDataStack.top();
 
11425
        DISABLE_WARNING_UNUSED(validationData)
 
11426
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__orient, &validate__float4_type__stream, &validationData->validationWholeSize, 0);
 
11427
    }
 
11428
    else
 
11429
    {
 
11430
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__orient);
 
11431
    }
 
11432
#else
 
11433
    {
 
11434
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__orient);
 
11435
    } // validation
 
11436
#endif
 
11437
 
 
11438
}
 
11439
 
 
11440
//---------------------------------------------------------------------
 
11441
bool ColladaParserAutoGen15Private::_preBegin__orient( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
11442
{
 
11443
#ifdef GENERATEDSAXPARSER_VALIDATION
 
11444
    if ( mValidate )
 
11445
    {
 
11446
 
 
11447
        bool validationResult = _validateBegin__orient( attributes, attributeDataPtr, validationDataPtr );
 
11448
        if ( !validationResult ) return false;
 
11449
 
 
11450
    } // validation
 
11451
#endif
 
11452
 
 
11453
    return true;
 
11454
}
 
11455
 
 
11456
//---------------------------------------------------------------------
 
11457
bool ColladaParserAutoGen15Private::_preEnd__orient()
 
11458
{
 
11459
#ifdef GENERATEDSAXPARSER_VALIDATION
 
11460
    if ( mValidate )
 
11461
    {
 
11462
 
 
11463
        bool validationResult = _validateEnd__orient();
 
11464
        if ( !validationResult ) return false;
 
11465
 
 
11466
    } // validation
 
11467
#endif
 
11468
 
 
11469
#ifdef GENERATEDSAXPARSER_VALIDATION
 
11470
    if ( mValidate )
 
11471
    {
 
11472
        orient__ValidationData* validationData = (orient__ValidationData*)mValidationDataStack.top();
 
11473
        DISABLE_WARNING_UNUSED(validationData)
 
11474
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__orient, &validate__float4_type__streamEnd, &validationData->validationWholeSize, 0 );
 
11475
        ParserError::ErrorType simpleTypeValidationResult = validate__float4_type(0, (*(&validationData->validationWholeSize)));
 
11476
        mValidationDataStack.deleteObject();
 
11477
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
11478
        {
 
11479
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
11480
                simpleTypeValidationResult,
 
11481
                HASH_ELEMENT_ORIENT,
 
11482
                (ParserChar*)0, 0 ) )
 
11483
            {
 
11484
                return false;
 
11485
            }
 
11486
        }
 
11487
        return returnValue;
 
11488
    }
 
11489
    else
 
11490
    {
 
11491
return floatDataEnd( &ColladaParserAutoGen15::data__orient );
 
11492
    }
 
11493
#else
 
11494
    {
 
11495
return floatDataEnd( &ColladaParserAutoGen15::data__orient );
 
11496
    } // validation
 
11497
#endif
 
11498
 
 
11499
}
 
11500
 
 
11501
//---------------------------------------------------------------------
 
11502
bool ColladaParserAutoGen15Private::_freeAttributes__orient( void* attributeData )
 
11503
{
 
11504
    return true;
 
11505
}
 
11506
 
 
11507
//---------------------------------------------------------------------
 
11508
bool ColladaParserAutoGen15Private::_data__origin____origin_type( const ParserChar* text, size_t textLength )
 
11509
{
 
11510
#ifdef GENERATEDSAXPARSER_VALIDATION
 
11511
    if ( mValidate )
 
11512
    {
 
11513
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
11514
        DISABLE_WARNING_UNUSED(validationData)
 
11515
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__origin____origin_type, &validate__float3_type__stream, &validationData->validationWholeSize, 0);
 
11516
    }
 
11517
    else
 
11518
    {
 
11519
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__origin____origin_type);
 
11520
    }
 
11521
#else
 
11522
    {
 
11523
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__origin____origin_type);
 
11524
    } // validation
 
11525
#endif
 
11526
 
 
11527
}
 
11528
 
 
11529
//---------------------------------------------------------------------
 
11530
bool ColladaParserAutoGen15Private::_preBegin__origin____origin_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
11531
{
 
11532
#ifdef GENERATEDSAXPARSER_VALIDATION
 
11533
    if ( mValidate )
 
11534
    {
 
11535
 
 
11536
        bool validationResult = _validateBegin__origin____origin_type( attributes, attributeDataPtr, validationDataPtr );
 
11537
        if ( !validationResult ) return false;
 
11538
 
 
11539
    } // validation
 
11540
#endif
 
11541
 
 
11542
    return true;
 
11543
}
 
11544
 
 
11545
//---------------------------------------------------------------------
 
11546
bool ColladaParserAutoGen15Private::_preEnd__origin____origin_type()
 
11547
{
 
11548
#ifdef GENERATEDSAXPARSER_VALIDATION
 
11549
    if ( mValidate )
 
11550
    {
 
11551
 
 
11552
        bool validationResult = _validateEnd__origin____origin_type();
 
11553
        if ( !validationResult ) return false;
 
11554
 
 
11555
    } // validation
 
11556
#endif
 
11557
 
 
11558
#ifdef GENERATEDSAXPARSER_VALIDATION
 
11559
    if ( mValidate )
 
11560
    {
 
11561
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
11562
        DISABLE_WARNING_UNUSED(validationData)
 
11563
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__origin____origin_type, &validate__float3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
11564
        ParserError::ErrorType simpleTypeValidationResult = validate__float3_type(0, (*(&validationData->validationWholeSize)));
 
11565
        mValidationDataStack.deleteObject();
 
11566
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
11567
        {
 
11568
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
11569
                simpleTypeValidationResult,
 
11570
                HASH_ELEMENT_ORIGIN,
 
11571
                (ParserChar*)0, 0 ) )
 
11572
            {
 
11573
                return false;
 
11574
            }
 
11575
        }
 
11576
        return returnValue;
 
11577
    }
 
11578
    else
 
11579
    {
 
11580
return floatDataEnd( &ColladaParserAutoGen15::data__origin____origin_type );
 
11581
    }
 
11582
#else
 
11583
    {
 
11584
return floatDataEnd( &ColladaParserAutoGen15::data__origin____origin_type );
 
11585
    } // validation
 
11586
#endif
 
11587
 
 
11588
}
 
11589
 
 
11590
//---------------------------------------------------------------------
 
11591
bool ColladaParserAutoGen15Private::_freeAttributes__origin____origin_type( void* attributeData )
 
11592
{
 
11593
    return true;
 
11594
}
 
11595
 
 
11596
//---------------------------------------------------------------------
 
11597
bool ColladaParserAutoGen15Private::_data__surface_curves( const ParserChar* text, size_t textLength )
 
11598
{
 
11599
    return true;
 
11600
}
 
11601
 
 
11602
//---------------------------------------------------------------------
 
11603
bool ColladaParserAutoGen15Private::_preBegin__surface_curves( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
11604
{
 
11605
#ifdef GENERATEDSAXPARSER_VALIDATION
 
11606
    if ( mValidate )
 
11607
    {
 
11608
 
 
11609
        bool validationResult = _validateBegin__surface_curves( attributes, attributeDataPtr, validationDataPtr );
 
11610
        if ( !validationResult ) return false;
 
11611
 
 
11612
    } // validation
 
11613
#endif
 
11614
 
 
11615
    return true;
 
11616
}
 
11617
 
 
11618
//---------------------------------------------------------------------
 
11619
bool ColladaParserAutoGen15Private::_preEnd__surface_curves()
 
11620
{
 
11621
#ifdef GENERATEDSAXPARSER_VALIDATION
 
11622
    if ( mValidate )
 
11623
    {
 
11624
 
 
11625
        bool validationResult = _validateEnd__surface_curves();
 
11626
        if ( !validationResult ) return false;
 
11627
 
 
11628
    } // validation
 
11629
#endif
 
11630
 
 
11631
    return true;
 
11632
}
 
11633
 
 
11634
//---------------------------------------------------------------------
 
11635
bool ColladaParserAutoGen15Private::_freeAttributes__surface_curves( void* attributeData )
 
11636
{
 
11637
    return true;
 
11638
}
 
11639
 
 
11640
//---------------------------------------------------------------------
 
11641
bool ColladaParserAutoGen15Private::_data__surfaces( const ParserChar* text, size_t textLength )
 
11642
{
 
11643
    return true;
 
11644
}
 
11645
 
 
11646
//---------------------------------------------------------------------
 
11647
bool ColladaParserAutoGen15Private::_preBegin__surfaces( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
11648
{
 
11649
#ifdef GENERATEDSAXPARSER_VALIDATION
 
11650
    if ( mValidate )
 
11651
    {
 
11652
 
 
11653
        bool validationResult = _validateBegin__surfaces( attributes, attributeDataPtr, validationDataPtr );
 
11654
        if ( !validationResult ) return false;
 
11655
 
 
11656
    } // validation
 
11657
#endif
 
11658
 
 
11659
    return true;
 
11660
}
 
11661
 
 
11662
//---------------------------------------------------------------------
 
11663
bool ColladaParserAutoGen15Private::_preEnd__surfaces()
 
11664
{
 
11665
#ifdef GENERATEDSAXPARSER_VALIDATION
 
11666
    if ( mValidate )
 
11667
    {
 
11668
 
 
11669
        bool validationResult = _validateEnd__surfaces();
 
11670
        if ( !validationResult ) return false;
 
11671
 
 
11672
    } // validation
 
11673
#endif
 
11674
 
 
11675
    return true;
 
11676
}
 
11677
 
 
11678
//---------------------------------------------------------------------
 
11679
bool ColladaParserAutoGen15Private::_freeAttributes__surfaces( void* attributeData )
 
11680
{
 
11681
    return true;
 
11682
}
 
11683
 
 
11684
//---------------------------------------------------------------------
 
11685
const surface__AttributeData surface__AttributeData::DEFAULT = {0, 0};
 
11686
 
 
11687
//---------------------------------------------------------------------
 
11688
bool ColladaParserAutoGen15Private::_data__surface( const ParserChar* text, size_t textLength )
 
11689
{
 
11690
    return true;
 
11691
}
 
11692
 
 
11693
//---------------------------------------------------------------------
 
11694
bool ColladaParserAutoGen15Private::_preBegin__surface( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
11695
{
 
11696
#ifdef GENERATEDSAXPARSER_VALIDATION
 
11697
    if ( mValidate )
 
11698
    {
 
11699
 
 
11700
        bool validationResult = _validateBegin__surface( attributes, attributeDataPtr, validationDataPtr );
 
11701
        if ( !validationResult ) return false;
 
11702
 
 
11703
    } // validation
 
11704
#endif
 
11705
 
 
11706
surface__AttributeData* attributeData = newData<surface__AttributeData>(attributeDataPtr);
 
11707
 
 
11708
const ParserChar** attributeArray = attributes.attributes;
 
11709
if ( attributeArray )
 
11710
{
 
11711
    while (true)
 
11712
    {
 
11713
        const ParserChar * attribute = *attributeArray;
 
11714
        if ( !attribute )
 
11715
            break;
 
11716
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
11717
        attributeArray++;
 
11718
        if ( !attributeArray )
 
11719
            return false;
 
11720
        const ParserChar* attributeValue = *attributeArray;
 
11721
        attributeArray++;
 
11722
 
 
11723
 
 
11724
    switch ( hash )
 
11725
    {
 
11726
    case HASH_ATTRIBUTE_SID:
 
11727
    {
 
11728
 
 
11729
attributeData->sid = attributeValue;
 
11730
#ifdef GENERATEDSAXPARSER_VALIDATION
 
11731
    if ( mValidate )
 
11732
    {
 
11733
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
11734
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
11735
    {
 
11736
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
11737
            simpleTypeValidationResult,
 
11738
            HASH_ELEMENT_SURFACE,
 
11739
            HASH_ATTRIBUTE_SID,
 
11740
            attributeValue) )
 
11741
        {
 
11742
            return false;
 
11743
        }
 
11744
    }
 
11745
    } // validation
 
11746
#endif
 
11747
 
 
11748
    break;
 
11749
    }
 
11750
    case HASH_ATTRIBUTE_NAME:
 
11751
    {
 
11752
 
 
11753
attributeData->name = attributeValue;
 
11754
 
 
11755
    break;
 
11756
    }
 
11757
    default:
 
11758
    {
 
11759
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SURFACE, attribute, attributeValue))
 
11760
            {return false;}
 
11761
    }
 
11762
    }
 
11763
    }
 
11764
}
 
11765
 
 
11766
 
 
11767
    return true;
 
11768
}
 
11769
 
 
11770
//---------------------------------------------------------------------
 
11771
bool ColladaParserAutoGen15Private::_preEnd__surface()
 
11772
{
 
11773
#ifdef GENERATEDSAXPARSER_VALIDATION
 
11774
    if ( mValidate )
 
11775
    {
 
11776
 
 
11777
        bool validationResult = _validateEnd__surface();
 
11778
        if ( !validationResult ) return false;
 
11779
 
 
11780
    } // validation
 
11781
#endif
 
11782
 
 
11783
    return true;
 
11784
}
 
11785
 
 
11786
//---------------------------------------------------------------------
 
11787
bool ColladaParserAutoGen15Private::_freeAttributes__surface( void* attributeData )
 
11788
{
 
11789
    surface__AttributeData* typedAttributeData = static_cast<surface__AttributeData*>(attributeData);
 
11790
 
 
11791
    typedAttributeData->~surface__AttributeData();
 
11792
 
 
11793
    return true;
 
11794
}
 
11795
 
 
11796
//---------------------------------------------------------------------
 
11797
bool ColladaParserAutoGen15Private::_data__plane( const ParserChar* text, size_t textLength )
 
11798
{
 
11799
    return true;
 
11800
}
 
11801
 
 
11802
//---------------------------------------------------------------------
 
11803
bool ColladaParserAutoGen15Private::_preBegin__plane( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
11804
{
 
11805
#ifdef GENERATEDSAXPARSER_VALIDATION
 
11806
    if ( mValidate )
 
11807
    {
 
11808
 
 
11809
        bool validationResult = _validateBegin__plane( attributes, attributeDataPtr, validationDataPtr );
 
11810
        if ( !validationResult ) return false;
 
11811
 
 
11812
    } // validation
 
11813
#endif
 
11814
 
 
11815
    return true;
 
11816
}
 
11817
 
 
11818
//---------------------------------------------------------------------
 
11819
bool ColladaParserAutoGen15Private::_preEnd__plane()
 
11820
{
 
11821
#ifdef GENERATEDSAXPARSER_VALIDATION
 
11822
    if ( mValidate )
 
11823
    {
 
11824
 
 
11825
        bool validationResult = _validateEnd__plane();
 
11826
        if ( !validationResult ) return false;
 
11827
 
 
11828
    } // validation
 
11829
#endif
 
11830
 
 
11831
    return true;
 
11832
}
 
11833
 
 
11834
//---------------------------------------------------------------------
 
11835
bool ColladaParserAutoGen15Private::_freeAttributes__plane( void* attributeData )
 
11836
{
 
11837
    return true;
 
11838
}
 
11839
 
 
11840
//---------------------------------------------------------------------
 
11841
bool ColladaParserAutoGen15Private::_data__equation( const ParserChar* text, size_t textLength )
 
11842
{
 
11843
#ifdef GENERATEDSAXPARSER_VALIDATION
 
11844
    if ( mValidate )
 
11845
    {
 
11846
        orient__ValidationData* validationData = (orient__ValidationData*)mValidationDataStack.top();
 
11847
        DISABLE_WARNING_UNUSED(validationData)
 
11848
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__equation, &validate__float4_type__stream, &validationData->validationWholeSize, 0);
 
11849
    }
 
11850
    else
 
11851
    {
 
11852
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__equation);
 
11853
    }
 
11854
#else
 
11855
    {
 
11856
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__equation);
 
11857
    } // validation
 
11858
#endif
 
11859
 
 
11860
}
 
11861
 
 
11862
//---------------------------------------------------------------------
 
11863
bool ColladaParserAutoGen15Private::_preBegin__equation( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
11864
{
 
11865
#ifdef GENERATEDSAXPARSER_VALIDATION
 
11866
    if ( mValidate )
 
11867
    {
 
11868
 
 
11869
        bool validationResult = _validateBegin__equation( attributes, attributeDataPtr, validationDataPtr );
 
11870
        if ( !validationResult ) return false;
 
11871
 
 
11872
    } // validation
 
11873
#endif
 
11874
 
 
11875
    return true;
 
11876
}
 
11877
 
 
11878
//---------------------------------------------------------------------
 
11879
bool ColladaParserAutoGen15Private::_preEnd__equation()
 
11880
{
 
11881
#ifdef GENERATEDSAXPARSER_VALIDATION
 
11882
    if ( mValidate )
 
11883
    {
 
11884
 
 
11885
        bool validationResult = _validateEnd__equation();
 
11886
        if ( !validationResult ) return false;
 
11887
 
 
11888
    } // validation
 
11889
#endif
 
11890
 
 
11891
#ifdef GENERATEDSAXPARSER_VALIDATION
 
11892
    if ( mValidate )
 
11893
    {
 
11894
        orient__ValidationData* validationData = (orient__ValidationData*)mValidationDataStack.top();
 
11895
        DISABLE_WARNING_UNUSED(validationData)
 
11896
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__equation, &validate__float4_type__streamEnd, &validationData->validationWholeSize, 0 );
 
11897
        ParserError::ErrorType simpleTypeValidationResult = validate__float4_type(0, (*(&validationData->validationWholeSize)));
 
11898
        mValidationDataStack.deleteObject();
 
11899
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
11900
        {
 
11901
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
11902
                simpleTypeValidationResult,
 
11903
                HASH_ELEMENT_EQUATION,
 
11904
                (ParserChar*)0, 0 ) )
 
11905
            {
 
11906
                return false;
 
11907
            }
 
11908
        }
 
11909
        return returnValue;
 
11910
    }
 
11911
    else
 
11912
    {
 
11913
return floatDataEnd( &ColladaParserAutoGen15::data__equation );
 
11914
    }
 
11915
#else
 
11916
    {
 
11917
return floatDataEnd( &ColladaParserAutoGen15::data__equation );
 
11918
    } // validation
 
11919
#endif
 
11920
 
 
11921
}
 
11922
 
 
11923
//---------------------------------------------------------------------
 
11924
bool ColladaParserAutoGen15Private::_freeAttributes__equation( void* attributeData )
 
11925
{
 
11926
    return true;
 
11927
}
 
11928
 
 
11929
//---------------------------------------------------------------------
 
11930
bool ColladaParserAutoGen15Private::_data__sphere( const ParserChar* text, size_t textLength )
 
11931
{
 
11932
    return true;
 
11933
}
 
11934
 
 
11935
//---------------------------------------------------------------------
 
11936
bool ColladaParserAutoGen15Private::_preBegin__sphere( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
11937
{
 
11938
#ifdef GENERATEDSAXPARSER_VALIDATION
 
11939
    if ( mValidate )
 
11940
    {
 
11941
 
 
11942
        bool validationResult = _validateBegin__sphere( attributes, attributeDataPtr, validationDataPtr );
 
11943
        if ( !validationResult ) return false;
 
11944
 
 
11945
    } // validation
 
11946
#endif
 
11947
 
 
11948
    return true;
 
11949
}
 
11950
 
 
11951
//---------------------------------------------------------------------
 
11952
bool ColladaParserAutoGen15Private::_preEnd__sphere()
 
11953
{
 
11954
#ifdef GENERATEDSAXPARSER_VALIDATION
 
11955
    if ( mValidate )
 
11956
    {
 
11957
 
 
11958
        bool validationResult = _validateEnd__sphere();
 
11959
        if ( !validationResult ) return false;
 
11960
 
 
11961
    } // validation
 
11962
#endif
 
11963
 
 
11964
    return true;
 
11965
}
 
11966
 
 
11967
//---------------------------------------------------------------------
 
11968
bool ColladaParserAutoGen15Private::_freeAttributes__sphere( void* attributeData )
 
11969
{
 
11970
    return true;
 
11971
}
 
11972
 
 
11973
//---------------------------------------------------------------------
 
11974
bool ColladaParserAutoGen15Private::_data__torus( const ParserChar* text, size_t textLength )
 
11975
{
 
11976
    return true;
 
11977
}
 
11978
 
 
11979
//---------------------------------------------------------------------
 
11980
bool ColladaParserAutoGen15Private::_preBegin__torus( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
11981
{
 
11982
#ifdef GENERATEDSAXPARSER_VALIDATION
 
11983
    if ( mValidate )
 
11984
    {
 
11985
 
 
11986
        bool validationResult = _validateBegin__torus( attributes, attributeDataPtr, validationDataPtr );
 
11987
        if ( !validationResult ) return false;
 
11988
 
 
11989
    } // validation
 
11990
#endif
 
11991
 
 
11992
    return true;
 
11993
}
 
11994
 
 
11995
//---------------------------------------------------------------------
 
11996
bool ColladaParserAutoGen15Private::_preEnd__torus()
 
11997
{
 
11998
#ifdef GENERATEDSAXPARSER_VALIDATION
 
11999
    if ( mValidate )
 
12000
    {
 
12001
 
 
12002
        bool validationResult = _validateEnd__torus();
 
12003
        if ( !validationResult ) return false;
 
12004
 
 
12005
    } // validation
 
12006
#endif
 
12007
 
 
12008
    return true;
 
12009
}
 
12010
 
 
12011
//---------------------------------------------------------------------
 
12012
bool ColladaParserAutoGen15Private::_freeAttributes__torus( void* attributeData )
 
12013
{
 
12014
    return true;
 
12015
}
 
12016
 
 
12017
//---------------------------------------------------------------------
 
12018
bool ColladaParserAutoGen15Private::_data__swept_surface( const ParserChar* text, size_t textLength )
 
12019
{
 
12020
    return true;
 
12021
}
 
12022
 
 
12023
//---------------------------------------------------------------------
 
12024
bool ColladaParserAutoGen15Private::_preBegin__swept_surface( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
12025
{
 
12026
#ifdef GENERATEDSAXPARSER_VALIDATION
 
12027
    if ( mValidate )
 
12028
    {
 
12029
 
 
12030
        bool validationResult = _validateBegin__swept_surface( attributes, attributeDataPtr, validationDataPtr );
 
12031
        if ( !validationResult ) return false;
 
12032
 
 
12033
    } // validation
 
12034
#endif
 
12035
 
 
12036
    return true;
 
12037
}
 
12038
 
 
12039
//---------------------------------------------------------------------
 
12040
bool ColladaParserAutoGen15Private::_preEnd__swept_surface()
 
12041
{
 
12042
#ifdef GENERATEDSAXPARSER_VALIDATION
 
12043
    if ( mValidate )
 
12044
    {
 
12045
 
 
12046
        bool validationResult = _validateEnd__swept_surface();
 
12047
        if ( !validationResult ) return false;
 
12048
 
 
12049
    } // validation
 
12050
#endif
 
12051
 
 
12052
    return true;
 
12053
}
 
12054
 
 
12055
//---------------------------------------------------------------------
 
12056
bool ColladaParserAutoGen15Private::_freeAttributes__swept_surface( void* attributeData )
 
12057
{
 
12058
    return true;
 
12059
}
 
12060
 
 
12061
//---------------------------------------------------------------------
 
12062
bool ColladaParserAutoGen15Private::_data__axis____float3_type( const ParserChar* text, size_t textLength )
 
12063
{
 
12064
#ifdef GENERATEDSAXPARSER_VALIDATION
 
12065
    if ( mValidate )
 
12066
    {
 
12067
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
12068
        DISABLE_WARNING_UNUSED(validationData)
 
12069
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__axis____float3_type, &validate__float3_type__stream, &validationData->validationWholeSize, 0);
 
12070
    }
 
12071
    else
 
12072
    {
 
12073
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__axis____float3_type);
 
12074
    }
 
12075
#else
 
12076
    {
 
12077
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__axis____float3_type);
 
12078
    } // validation
 
12079
#endif
 
12080
 
 
12081
}
 
12082
 
 
12083
//---------------------------------------------------------------------
 
12084
bool ColladaParserAutoGen15Private::_preBegin__axis____float3_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
12085
{
 
12086
#ifdef GENERATEDSAXPARSER_VALIDATION
 
12087
    if ( mValidate )
 
12088
    {
 
12089
 
 
12090
        bool validationResult = _validateBegin__axis____float3_type( attributes, attributeDataPtr, validationDataPtr );
 
12091
        if ( !validationResult ) return false;
 
12092
 
 
12093
    } // validation
 
12094
#endif
 
12095
 
 
12096
    return true;
 
12097
}
 
12098
 
 
12099
//---------------------------------------------------------------------
 
12100
bool ColladaParserAutoGen15Private::_preEnd__axis____float3_type()
 
12101
{
 
12102
#ifdef GENERATEDSAXPARSER_VALIDATION
 
12103
    if ( mValidate )
 
12104
    {
 
12105
 
 
12106
        bool validationResult = _validateEnd__axis____float3_type();
 
12107
        if ( !validationResult ) return false;
 
12108
 
 
12109
    } // validation
 
12110
#endif
 
12111
 
 
12112
#ifdef GENERATEDSAXPARSER_VALIDATION
 
12113
    if ( mValidate )
 
12114
    {
 
12115
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
12116
        DISABLE_WARNING_UNUSED(validationData)
 
12117
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__axis____float3_type, &validate__float3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
12118
        ParserError::ErrorType simpleTypeValidationResult = validate__float3_type(0, (*(&validationData->validationWholeSize)));
 
12119
        mValidationDataStack.deleteObject();
 
12120
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
12121
        {
 
12122
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
12123
                simpleTypeValidationResult,
 
12124
                HASH_ELEMENT_AXIS,
 
12125
                (ParserChar*)0, 0 ) )
 
12126
            {
 
12127
                return false;
 
12128
            }
 
12129
        }
 
12130
        return returnValue;
 
12131
    }
 
12132
    else
 
12133
    {
 
12134
return floatDataEnd( &ColladaParserAutoGen15::data__axis____float3_type );
 
12135
    }
 
12136
#else
 
12137
    {
 
12138
return floatDataEnd( &ColladaParserAutoGen15::data__axis____float3_type );
 
12139
    } // validation
 
12140
#endif
 
12141
 
 
12142
}
 
12143
 
 
12144
//---------------------------------------------------------------------
 
12145
bool ColladaParserAutoGen15Private::_freeAttributes__axis____float3_type( void* attributeData )
 
12146
{
 
12147
    return true;
 
12148
}
 
12149
 
 
12150
//---------------------------------------------------------------------
 
12151
const nurbs_surface__AttributeData nurbs_surface__AttributeData::DEFAULT = {0, 0, false, 0, false};
 
12152
 
 
12153
//---------------------------------------------------------------------
 
12154
bool ColladaParserAutoGen15Private::_data__nurbs_surface( const ParserChar* text, size_t textLength )
 
12155
{
 
12156
    return true;
 
12157
}
 
12158
 
 
12159
//---------------------------------------------------------------------
 
12160
bool ColladaParserAutoGen15Private::_preBegin__nurbs_surface( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
12161
{
 
12162
#ifdef GENERATEDSAXPARSER_VALIDATION
 
12163
    if ( mValidate )
 
12164
    {
 
12165
 
 
12166
        bool validationResult = _validateBegin__nurbs_surface( attributes, attributeDataPtr, validationDataPtr );
 
12167
        if ( !validationResult ) return false;
 
12168
 
 
12169
    } // validation
 
12170
#endif
 
12171
 
 
12172
nurbs_surface__AttributeData* attributeData = newData<nurbs_surface__AttributeData>(attributeDataPtr);
 
12173
 
 
12174
const ParserChar** attributeArray = attributes.attributes;
 
12175
if ( attributeArray )
 
12176
{
 
12177
    while (true)
 
12178
    {
 
12179
        const ParserChar * attribute = *attributeArray;
 
12180
        if ( !attribute )
 
12181
            break;
 
12182
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
12183
        attributeArray++;
 
12184
        if ( !attributeArray )
 
12185
            return false;
 
12186
        const ParserChar* attributeValue = *attributeArray;
 
12187
        attributeArray++;
 
12188
 
 
12189
 
 
12190
    switch ( hash )
 
12191
    {
 
12192
    case HASH_ATTRIBUTE_DEGREE_U:
 
12193
    {
 
12194
bool failed;
 
12195
attributeData->degree_u = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
12196
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
12197
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
12198
        HASH_ELEMENT_NURBS_SURFACE,
 
12199
        HASH_ATTRIBUTE_DEGREE_U,
 
12200
        attributeValue))
 
12201
{
 
12202
    return false;
 
12203
}
 
12204
if ( !failed )
 
12205
    attributeData->present_attributes |= nurbs_surface__AttributeData::ATTRIBUTE_DEGREE_U_PRESENT;
 
12206
 
 
12207
    break;
 
12208
    }
 
12209
    case HASH_ATTRIBUTE_CLOSED_U:
 
12210
    {
 
12211
bool failed;
 
12212
attributeData->closed_u = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
12213
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
12214
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
12215
        HASH_ELEMENT_NURBS_SURFACE,
 
12216
        HASH_ATTRIBUTE_CLOSED_U,
 
12217
        attributeValue))
 
12218
{
 
12219
    return false;
 
12220
}
 
12221
 
 
12222
    break;
 
12223
    }
 
12224
    case HASH_ATTRIBUTE_DEGREE_V:
 
12225
    {
 
12226
bool failed;
 
12227
attributeData->degree_v = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
12228
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
12229
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
12230
        HASH_ELEMENT_NURBS_SURFACE,
 
12231
        HASH_ATTRIBUTE_DEGREE_V,
 
12232
        attributeValue))
 
12233
{
 
12234
    return false;
 
12235
}
 
12236
if ( !failed )
 
12237
    attributeData->present_attributes |= nurbs_surface__AttributeData::ATTRIBUTE_DEGREE_V_PRESENT;
 
12238
 
 
12239
    break;
 
12240
    }
 
12241
    case HASH_ATTRIBUTE_CLOSED_V:
 
12242
    {
 
12243
bool failed;
 
12244
attributeData->closed_v = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
12245
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
12246
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
12247
        HASH_ELEMENT_NURBS_SURFACE,
 
12248
        HASH_ATTRIBUTE_CLOSED_V,
 
12249
        attributeValue))
 
12250
{
 
12251
    return false;
 
12252
}
 
12253
 
 
12254
    break;
 
12255
    }
 
12256
    default:
 
12257
    {
 
12258
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_NURBS_SURFACE, attribute, attributeValue))
 
12259
            {return false;}
 
12260
    }
 
12261
    }
 
12262
    }
 
12263
}
 
12264
if ( (attributeData->present_attributes & nurbs_surface__AttributeData::ATTRIBUTE_DEGREE_U_PRESENT) == 0 )
 
12265
{
 
12266
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_NURBS_SURFACE, HASH_ATTRIBUTE_DEGREE_U, 0 ) )
 
12267
        return false;
 
12268
}
 
12269
if ( (attributeData->present_attributes & nurbs_surface__AttributeData::ATTRIBUTE_DEGREE_V_PRESENT) == 0 )
 
12270
{
 
12271
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_NURBS_SURFACE, HASH_ATTRIBUTE_DEGREE_V, 0 ) )
 
12272
        return false;
 
12273
}
 
12274
 
 
12275
 
 
12276
    return true;
 
12277
}
 
12278
 
 
12279
//---------------------------------------------------------------------
 
12280
bool ColladaParserAutoGen15Private::_preEnd__nurbs_surface()
 
12281
{
 
12282
#ifdef GENERATEDSAXPARSER_VALIDATION
 
12283
    if ( mValidate )
 
12284
    {
 
12285
 
 
12286
        bool validationResult = _validateEnd__nurbs_surface();
 
12287
        if ( !validationResult ) return false;
 
12288
 
 
12289
    } // validation
 
12290
#endif
 
12291
 
 
12292
    return true;
 
12293
}
 
12294
 
 
12295
//---------------------------------------------------------------------
 
12296
bool ColladaParserAutoGen15Private::_freeAttributes__nurbs_surface( void* attributeData )
 
12297
{
 
12298
    nurbs_surface__AttributeData* typedAttributeData = static_cast<nurbs_surface__AttributeData*>(attributeData);
 
12299
 
 
12300
    typedAttributeData->~nurbs_surface__AttributeData();
 
12301
 
 
12302
    return true;
 
12303
}
 
12304
 
 
12305
//---------------------------------------------------------------------
 
12306
bool ColladaParserAutoGen15Private::_data__nurbs_surface_type____control_vertices( const ParserChar* text, size_t textLength )
 
12307
{
 
12308
    return true;
 
12309
}
 
12310
 
 
12311
//---------------------------------------------------------------------
 
12312
bool ColladaParserAutoGen15Private::_preBegin__nurbs_surface_type____control_vertices( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
12313
{
 
12314
#ifdef GENERATEDSAXPARSER_VALIDATION
 
12315
    if ( mValidate )
 
12316
    {
 
12317
 
 
12318
        bool validationResult = _validateBegin__nurbs_surface_type____control_vertices( attributes, attributeDataPtr, validationDataPtr );
 
12319
        if ( !validationResult ) return false;
 
12320
 
 
12321
    } // validation
 
12322
#endif
 
12323
 
 
12324
    return true;
 
12325
}
 
12326
 
 
12327
//---------------------------------------------------------------------
 
12328
bool ColladaParserAutoGen15Private::_preEnd__nurbs_surface_type____control_vertices()
 
12329
{
 
12330
#ifdef GENERATEDSAXPARSER_VALIDATION
 
12331
    if ( mValidate )
 
12332
    {
 
12333
 
 
12334
        bool validationResult = _validateEnd__nurbs_surface_type____control_vertices();
 
12335
        if ( !validationResult ) return false;
 
12336
 
 
12337
    } // validation
 
12338
#endif
 
12339
 
 
12340
    return true;
 
12341
}
 
12342
 
 
12343
//---------------------------------------------------------------------
 
12344
bool ColladaParserAutoGen15Private::_freeAttributes__nurbs_surface_type____control_vertices( void* attributeData )
 
12345
{
 
12346
    return true;
 
12347
}
 
12348
 
 
12349
//---------------------------------------------------------------------
 
12350
bool ColladaParserAutoGen15Private::_data__cone( const ParserChar* text, size_t textLength )
 
12351
{
 
12352
    return true;
 
12353
}
 
12354
 
 
12355
//---------------------------------------------------------------------
 
12356
bool ColladaParserAutoGen15Private::_preBegin__cone( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
12357
{
 
12358
#ifdef GENERATEDSAXPARSER_VALIDATION
 
12359
    if ( mValidate )
 
12360
    {
 
12361
 
 
12362
        bool validationResult = _validateBegin__cone( attributes, attributeDataPtr, validationDataPtr );
 
12363
        if ( !validationResult ) return false;
 
12364
 
 
12365
    } // validation
 
12366
#endif
 
12367
 
 
12368
    return true;
 
12369
}
 
12370
 
 
12371
//---------------------------------------------------------------------
 
12372
bool ColladaParserAutoGen15Private::_preEnd__cone()
 
12373
{
 
12374
#ifdef GENERATEDSAXPARSER_VALIDATION
 
12375
    if ( mValidate )
 
12376
    {
 
12377
 
 
12378
        bool validationResult = _validateEnd__cone();
 
12379
        if ( !validationResult ) return false;
 
12380
 
 
12381
    } // validation
 
12382
#endif
 
12383
 
 
12384
    return true;
 
12385
}
 
12386
 
 
12387
//---------------------------------------------------------------------
 
12388
bool ColladaParserAutoGen15Private::_freeAttributes__cone( void* attributeData )
 
12389
{
 
12390
    return true;
 
12391
}
 
12392
 
 
12393
//---------------------------------------------------------------------
 
12394
bool ColladaParserAutoGen15Private::_data__angle( const ParserChar* text, size_t textLength )
 
12395
{
 
12396
if (!mLastIncompleteFragmentInCharacterData)
 
12397
{
 
12398
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
12399
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
12400
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
12401
}
 
12402
else
 
12403
{
 
12404
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
12405
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
12406
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
12407
        mLastIncompleteFragmentInCharacterData = tmp;
 
12408
    }
 
12409
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
12410
    mEndOfDataInCurrentObjectOnStack += textLength;
 
12411
}
 
12412
return true;
 
12413
}
 
12414
 
 
12415
//---------------------------------------------------------------------
 
12416
bool ColladaParserAutoGen15Private::_preBegin__angle( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
12417
{
 
12418
#ifdef GENERATEDSAXPARSER_VALIDATION
 
12419
    if ( mValidate )
 
12420
    {
 
12421
 
 
12422
        bool validationResult = _validateBegin__angle( attributes, attributeDataPtr, validationDataPtr );
 
12423
        if ( !validationResult ) return false;
 
12424
 
 
12425
    } // validation
 
12426
#endif
 
12427
 
 
12428
    return true;
 
12429
}
 
12430
 
 
12431
//---------------------------------------------------------------------
 
12432
bool ColladaParserAutoGen15Private::_preEnd__angle()
 
12433
{
 
12434
#ifdef GENERATEDSAXPARSER_VALIDATION
 
12435
    if ( mValidate )
 
12436
    {
 
12437
 
 
12438
        bool validationResult = _validateEnd__angle();
 
12439
        if ( !validationResult ) return false;
 
12440
 
 
12441
    } // validation
 
12442
#endif
 
12443
 
 
12444
bool failed;
 
12445
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
12446
DISABLE_WARNING_UNUSED(ptrForErr)
 
12447
float parameter = GeneratedSaxParser::Utils::toFloat((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
12448
bool returnValue;
 
12449
if (!failed)
 
12450
{
 
12451
    returnValue = mImpl->data__angle(parameter);
 
12452
}
 
12453
else
 
12454
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_ANGLE, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
12455
if (mLastIncompleteFragmentInCharacterData)
 
12456
    mStackMemoryManager.deleteObject();
 
12457
mLastIncompleteFragmentInCharacterData = 0;
 
12458
mEndOfDataInCurrentObjectOnStack = 0;
 
12459
return returnValue;
 
12460
}
 
12461
 
 
12462
//---------------------------------------------------------------------
 
12463
bool ColladaParserAutoGen15Private::_freeAttributes__angle( void* attributeData )
 
12464
{
 
12465
    return true;
 
12466
}
 
12467
 
 
12468
//---------------------------------------------------------------------
 
12469
bool ColladaParserAutoGen15Private::_data__surface_type____cylinder( const ParserChar* text, size_t textLength )
 
12470
{
 
12471
    return true;
 
12472
}
 
12473
 
 
12474
//---------------------------------------------------------------------
 
12475
bool ColladaParserAutoGen15Private::_preBegin__surface_type____cylinder( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
12476
{
 
12477
#ifdef GENERATEDSAXPARSER_VALIDATION
 
12478
    if ( mValidate )
 
12479
    {
 
12480
 
 
12481
        bool validationResult = _validateBegin__surface_type____cylinder( attributes, attributeDataPtr, validationDataPtr );
 
12482
        if ( !validationResult ) return false;
 
12483
 
 
12484
    } // validation
 
12485
#endif
 
12486
 
 
12487
    return true;
 
12488
}
 
12489
 
 
12490
//---------------------------------------------------------------------
 
12491
bool ColladaParserAutoGen15Private::_preEnd__surface_type____cylinder()
 
12492
{
 
12493
#ifdef GENERATEDSAXPARSER_VALIDATION
 
12494
    if ( mValidate )
 
12495
    {
 
12496
 
 
12497
        bool validationResult = _validateEnd__surface_type____cylinder();
 
12498
        if ( !validationResult ) return false;
 
12499
 
 
12500
    } // validation
 
12501
#endif
 
12502
 
 
12503
    return true;
 
12504
}
 
12505
 
 
12506
//---------------------------------------------------------------------
 
12507
bool ColladaParserAutoGen15Private::_freeAttributes__surface_type____cylinder( void* attributeData )
 
12508
{
 
12509
    return true;
 
12510
}
 
12511
 
 
12512
//---------------------------------------------------------------------
 
12513
const edges__AttributeData edges__AttributeData::DEFAULT = {0, 0, 0, 0};
 
12514
 
 
12515
//---------------------------------------------------------------------
 
12516
bool ColladaParserAutoGen15Private::_data__edges( const ParserChar* text, size_t textLength )
 
12517
{
 
12518
    return true;
 
12519
}
 
12520
 
 
12521
//---------------------------------------------------------------------
 
12522
bool ColladaParserAutoGen15Private::_preBegin__edges( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
12523
{
 
12524
#ifdef GENERATEDSAXPARSER_VALIDATION
 
12525
    if ( mValidate )
 
12526
    {
 
12527
 
 
12528
        bool validationResult = _validateBegin__edges( attributes, attributeDataPtr, validationDataPtr );
 
12529
        if ( !validationResult ) return false;
 
12530
 
 
12531
    } // validation
 
12532
#endif
 
12533
 
 
12534
edges__AttributeData* attributeData = newData<edges__AttributeData>(attributeDataPtr);
 
12535
 
 
12536
const ParserChar** attributeArray = attributes.attributes;
 
12537
if ( attributeArray )
 
12538
{
 
12539
    while (true)
 
12540
    {
 
12541
        const ParserChar * attribute = *attributeArray;
 
12542
        if ( !attribute )
 
12543
            break;
 
12544
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
12545
        attributeArray++;
 
12546
        if ( !attributeArray )
 
12547
            return false;
 
12548
        const ParserChar* attributeValue = *attributeArray;
 
12549
        attributeArray++;
 
12550
 
 
12551
 
 
12552
    switch ( hash )
 
12553
    {
 
12554
    case HASH_ATTRIBUTE_ID:
 
12555
    {
 
12556
 
 
12557
attributeData->id = attributeValue;
 
12558
 
 
12559
    break;
 
12560
    }
 
12561
    case HASH_ATTRIBUTE_NAME:
 
12562
    {
 
12563
 
 
12564
attributeData->name = attributeValue;
 
12565
 
 
12566
    break;
 
12567
    }
 
12568
    case HASH_ATTRIBUTE_COUNT:
 
12569
    {
 
12570
bool failed;
 
12571
attributeData->count = GeneratedSaxParser::Utils::toSint32(attributeValue, failed);
 
12572
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
12573
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
12574
        HASH_ELEMENT_EDGES,
 
12575
        HASH_ATTRIBUTE_COUNT,
 
12576
        attributeValue))
 
12577
{
 
12578
    return false;
 
12579
}
 
12580
if ( !failed )
 
12581
    attributeData->present_attributes |= edges__AttributeData::ATTRIBUTE_COUNT_PRESENT;
 
12582
 
 
12583
    break;
 
12584
    }
 
12585
    default:
 
12586
    {
 
12587
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_EDGES, attribute, attributeValue))
 
12588
            {return false;}
 
12589
    }
 
12590
    }
 
12591
    }
 
12592
}
 
12593
if ( !attributeData->id )
 
12594
{
 
12595
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_EDGES, HASH_ATTRIBUTE_ID, 0 ) )
 
12596
        return false;
 
12597
}
 
12598
if ( (attributeData->present_attributes & edges__AttributeData::ATTRIBUTE_COUNT_PRESENT) == 0 )
 
12599
{
 
12600
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_EDGES, HASH_ATTRIBUTE_COUNT, 0 ) )
 
12601
        return false;
 
12602
}
 
12603
 
 
12604
 
 
12605
    return true;
 
12606
}
 
12607
 
 
12608
//---------------------------------------------------------------------
 
12609
bool ColladaParserAutoGen15Private::_preEnd__edges()
 
12610
{
 
12611
#ifdef GENERATEDSAXPARSER_VALIDATION
 
12612
    if ( mValidate )
 
12613
    {
 
12614
 
 
12615
        bool validationResult = _validateEnd__edges();
 
12616
        if ( !validationResult ) return false;
 
12617
 
 
12618
    } // validation
 
12619
#endif
 
12620
 
 
12621
    return true;
 
12622
}
 
12623
 
 
12624
//---------------------------------------------------------------------
 
12625
bool ColladaParserAutoGen15Private::_freeAttributes__edges( void* attributeData )
 
12626
{
 
12627
    edges__AttributeData* typedAttributeData = static_cast<edges__AttributeData*>(attributeData);
 
12628
 
 
12629
    typedAttributeData->~edges__AttributeData();
 
12630
 
 
12631
    return true;
 
12632
}
 
12633
 
 
12634
//---------------------------------------------------------------------
 
12635
const wires__AttributeData wires__AttributeData::DEFAULT = {0, 0, 0, 0};
 
12636
 
 
12637
//---------------------------------------------------------------------
 
12638
bool ColladaParserAutoGen15Private::_data__wires( const ParserChar* text, size_t textLength )
 
12639
{
 
12640
    return true;
 
12641
}
 
12642
 
 
12643
//---------------------------------------------------------------------
 
12644
bool ColladaParserAutoGen15Private::_preBegin__wires( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
12645
{
 
12646
#ifdef GENERATEDSAXPARSER_VALIDATION
 
12647
    if ( mValidate )
 
12648
    {
 
12649
 
 
12650
        bool validationResult = _validateBegin__wires( attributes, attributeDataPtr, validationDataPtr );
 
12651
        if ( !validationResult ) return false;
 
12652
 
 
12653
    } // validation
 
12654
#endif
 
12655
 
 
12656
wires__AttributeData* attributeData = newData<wires__AttributeData>(attributeDataPtr);
 
12657
 
 
12658
const ParserChar** attributeArray = attributes.attributes;
 
12659
if ( attributeArray )
 
12660
{
 
12661
    while (true)
 
12662
    {
 
12663
        const ParserChar * attribute = *attributeArray;
 
12664
        if ( !attribute )
 
12665
            break;
 
12666
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
12667
        attributeArray++;
 
12668
        if ( !attributeArray )
 
12669
            return false;
 
12670
        const ParserChar* attributeValue = *attributeArray;
 
12671
        attributeArray++;
 
12672
 
 
12673
 
 
12674
    switch ( hash )
 
12675
    {
 
12676
    case HASH_ATTRIBUTE_ID:
 
12677
    {
 
12678
 
 
12679
attributeData->id = attributeValue;
 
12680
 
 
12681
    break;
 
12682
    }
 
12683
    case HASH_ATTRIBUTE_NAME:
 
12684
    {
 
12685
 
 
12686
attributeData->name = attributeValue;
 
12687
 
 
12688
    break;
 
12689
    }
 
12690
    case HASH_ATTRIBUTE_COUNT:
 
12691
    {
 
12692
bool failed;
 
12693
attributeData->count = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
12694
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
12695
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
12696
        HASH_ELEMENT_WIRES,
 
12697
        HASH_ATTRIBUTE_COUNT,
 
12698
        attributeValue))
 
12699
{
 
12700
    return false;
 
12701
}
 
12702
if ( !failed )
 
12703
    attributeData->present_attributes |= wires__AttributeData::ATTRIBUTE_COUNT_PRESENT;
 
12704
 
 
12705
    break;
 
12706
    }
 
12707
    default:
 
12708
    {
 
12709
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_WIRES, attribute, attributeValue))
 
12710
            {return false;}
 
12711
    }
 
12712
    }
 
12713
    }
 
12714
}
 
12715
if ( !attributeData->id )
 
12716
{
 
12717
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_WIRES, HASH_ATTRIBUTE_ID, 0 ) )
 
12718
        return false;
 
12719
}
 
12720
if ( (attributeData->present_attributes & wires__AttributeData::ATTRIBUTE_COUNT_PRESENT) == 0 )
 
12721
{
 
12722
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_WIRES, HASH_ATTRIBUTE_COUNT, 0 ) )
 
12723
        return false;
 
12724
}
 
12725
 
 
12726
 
 
12727
    return true;
 
12728
}
 
12729
 
 
12730
//---------------------------------------------------------------------
 
12731
bool ColladaParserAutoGen15Private::_preEnd__wires()
 
12732
{
 
12733
#ifdef GENERATEDSAXPARSER_VALIDATION
 
12734
    if ( mValidate )
 
12735
    {
 
12736
 
 
12737
        bool validationResult = _validateEnd__wires();
 
12738
        if ( !validationResult ) return false;
 
12739
 
 
12740
    } // validation
 
12741
#endif
 
12742
 
 
12743
    return true;
 
12744
}
 
12745
 
 
12746
//---------------------------------------------------------------------
 
12747
bool ColladaParserAutoGen15Private::_freeAttributes__wires( void* attributeData )
 
12748
{
 
12749
    wires__AttributeData* typedAttributeData = static_cast<wires__AttributeData*>(attributeData);
 
12750
 
 
12751
    typedAttributeData->~wires__AttributeData();
 
12752
 
 
12753
    return true;
 
12754
}
 
12755
 
 
12756
//---------------------------------------------------------------------
 
12757
const faces__AttributeData faces__AttributeData::DEFAULT = {0, 0, 0, 0};
 
12758
 
 
12759
//---------------------------------------------------------------------
 
12760
bool ColladaParserAutoGen15Private::_data__faces( const ParserChar* text, size_t textLength )
 
12761
{
 
12762
    return true;
 
12763
}
 
12764
 
 
12765
//---------------------------------------------------------------------
 
12766
bool ColladaParserAutoGen15Private::_preBegin__faces( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
12767
{
 
12768
#ifdef GENERATEDSAXPARSER_VALIDATION
 
12769
    if ( mValidate )
 
12770
    {
 
12771
 
 
12772
        bool validationResult = _validateBegin__faces( attributes, attributeDataPtr, validationDataPtr );
 
12773
        if ( !validationResult ) return false;
 
12774
 
 
12775
    } // validation
 
12776
#endif
 
12777
 
 
12778
faces__AttributeData* attributeData = newData<faces__AttributeData>(attributeDataPtr);
 
12779
 
 
12780
const ParserChar** attributeArray = attributes.attributes;
 
12781
if ( attributeArray )
 
12782
{
 
12783
    while (true)
 
12784
    {
 
12785
        const ParserChar * attribute = *attributeArray;
 
12786
        if ( !attribute )
 
12787
            break;
 
12788
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
12789
        attributeArray++;
 
12790
        if ( !attributeArray )
 
12791
            return false;
 
12792
        const ParserChar* attributeValue = *attributeArray;
 
12793
        attributeArray++;
 
12794
 
 
12795
 
 
12796
    switch ( hash )
 
12797
    {
 
12798
    case HASH_ATTRIBUTE_ID:
 
12799
    {
 
12800
 
 
12801
attributeData->id = attributeValue;
 
12802
 
 
12803
    break;
 
12804
    }
 
12805
    case HASH_ATTRIBUTE_NAME:
 
12806
    {
 
12807
 
 
12808
attributeData->name = attributeValue;
 
12809
 
 
12810
    break;
 
12811
    }
 
12812
    case HASH_ATTRIBUTE_COUNT:
 
12813
    {
 
12814
bool failed;
 
12815
attributeData->count = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
12816
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
12817
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
12818
        HASH_ELEMENT_FACES,
 
12819
        HASH_ATTRIBUTE_COUNT,
 
12820
        attributeValue))
 
12821
{
 
12822
    return false;
 
12823
}
 
12824
if ( !failed )
 
12825
    attributeData->present_attributes |= faces__AttributeData::ATTRIBUTE_COUNT_PRESENT;
 
12826
 
 
12827
    break;
 
12828
    }
 
12829
    default:
 
12830
    {
 
12831
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FACES, attribute, attributeValue))
 
12832
            {return false;}
 
12833
    }
 
12834
    }
 
12835
    }
 
12836
}
 
12837
if ( !attributeData->id )
 
12838
{
 
12839
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_FACES, HASH_ATTRIBUTE_ID, 0 ) )
 
12840
        return false;
 
12841
}
 
12842
if ( (attributeData->present_attributes & faces__AttributeData::ATTRIBUTE_COUNT_PRESENT) == 0 )
 
12843
{
 
12844
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_FACES, HASH_ATTRIBUTE_COUNT, 0 ) )
 
12845
        return false;
 
12846
}
 
12847
 
 
12848
 
 
12849
    return true;
 
12850
}
 
12851
 
 
12852
//---------------------------------------------------------------------
 
12853
bool ColladaParserAutoGen15Private::_preEnd__faces()
 
12854
{
 
12855
#ifdef GENERATEDSAXPARSER_VALIDATION
 
12856
    if ( mValidate )
 
12857
    {
 
12858
 
 
12859
        bool validationResult = _validateEnd__faces();
 
12860
        if ( !validationResult ) return false;
 
12861
 
 
12862
    } // validation
 
12863
#endif
 
12864
 
 
12865
    return true;
 
12866
}
 
12867
 
 
12868
//---------------------------------------------------------------------
 
12869
bool ColladaParserAutoGen15Private::_freeAttributes__faces( void* attributeData )
 
12870
{
 
12871
    faces__AttributeData* typedAttributeData = static_cast<faces__AttributeData*>(attributeData);
 
12872
 
 
12873
    typedAttributeData->~faces__AttributeData();
 
12874
 
 
12875
    return true;
 
12876
}
 
12877
 
 
12878
//---------------------------------------------------------------------
 
12879
const pcurves__AttributeData pcurves__AttributeData::DEFAULT = {0, 0, 0, 0};
 
12880
 
 
12881
//---------------------------------------------------------------------
 
12882
bool ColladaParserAutoGen15Private::_data__pcurves( const ParserChar* text, size_t textLength )
 
12883
{
 
12884
    return true;
 
12885
}
 
12886
 
 
12887
//---------------------------------------------------------------------
 
12888
bool ColladaParserAutoGen15Private::_preBegin__pcurves( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
12889
{
 
12890
#ifdef GENERATEDSAXPARSER_VALIDATION
 
12891
    if ( mValidate )
 
12892
    {
 
12893
 
 
12894
        bool validationResult = _validateBegin__pcurves( attributes, attributeDataPtr, validationDataPtr );
 
12895
        if ( !validationResult ) return false;
 
12896
 
 
12897
    } // validation
 
12898
#endif
 
12899
 
 
12900
pcurves__AttributeData* attributeData = newData<pcurves__AttributeData>(attributeDataPtr);
 
12901
 
 
12902
const ParserChar** attributeArray = attributes.attributes;
 
12903
if ( attributeArray )
 
12904
{
 
12905
    while (true)
 
12906
    {
 
12907
        const ParserChar * attribute = *attributeArray;
 
12908
        if ( !attribute )
 
12909
            break;
 
12910
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
12911
        attributeArray++;
 
12912
        if ( !attributeArray )
 
12913
            return false;
 
12914
        const ParserChar* attributeValue = *attributeArray;
 
12915
        attributeArray++;
 
12916
 
 
12917
 
 
12918
    switch ( hash )
 
12919
    {
 
12920
    case HASH_ATTRIBUTE_ID:
 
12921
    {
 
12922
 
 
12923
attributeData->id = attributeValue;
 
12924
 
 
12925
    break;
 
12926
    }
 
12927
    case HASH_ATTRIBUTE_NAME:
 
12928
    {
 
12929
 
 
12930
attributeData->name = attributeValue;
 
12931
 
 
12932
    break;
 
12933
    }
 
12934
    case HASH_ATTRIBUTE_COUNT:
 
12935
    {
 
12936
bool failed;
 
12937
attributeData->count = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
12938
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
12939
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
12940
        HASH_ELEMENT_PCURVES,
 
12941
        HASH_ATTRIBUTE_COUNT,
 
12942
        attributeValue))
 
12943
{
 
12944
    return false;
 
12945
}
 
12946
if ( !failed )
 
12947
    attributeData->present_attributes |= pcurves__AttributeData::ATTRIBUTE_COUNT_PRESENT;
 
12948
 
 
12949
    break;
 
12950
    }
 
12951
    default:
 
12952
    {
 
12953
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_PCURVES, attribute, attributeValue))
 
12954
            {return false;}
 
12955
    }
 
12956
    }
 
12957
    }
 
12958
}
 
12959
if ( !attributeData->id )
 
12960
{
 
12961
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_PCURVES, HASH_ATTRIBUTE_ID, 0 ) )
 
12962
        return false;
 
12963
}
 
12964
if ( (attributeData->present_attributes & pcurves__AttributeData::ATTRIBUTE_COUNT_PRESENT) == 0 )
 
12965
{
 
12966
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_PCURVES, HASH_ATTRIBUTE_COUNT, 0 ) )
 
12967
        return false;
 
12968
}
 
12969
 
 
12970
 
 
12971
    return true;
 
12972
}
 
12973
 
 
12974
//---------------------------------------------------------------------
 
12975
bool ColladaParserAutoGen15Private::_preEnd__pcurves()
 
12976
{
 
12977
#ifdef GENERATEDSAXPARSER_VALIDATION
 
12978
    if ( mValidate )
 
12979
    {
 
12980
 
 
12981
        bool validationResult = _validateEnd__pcurves();
 
12982
        if ( !validationResult ) return false;
 
12983
 
 
12984
    } // validation
 
12985
#endif
 
12986
 
 
12987
    return true;
 
12988
}
 
12989
 
 
12990
//---------------------------------------------------------------------
 
12991
bool ColladaParserAutoGen15Private::_freeAttributes__pcurves( void* attributeData )
 
12992
{
 
12993
    pcurves__AttributeData* typedAttributeData = static_cast<pcurves__AttributeData*>(attributeData);
 
12994
 
 
12995
    typedAttributeData->~pcurves__AttributeData();
 
12996
 
 
12997
    return true;
 
12998
}
 
12999
 
 
13000
//---------------------------------------------------------------------
 
13001
const shells__AttributeData shells__AttributeData::DEFAULT = {0, 0, 0, 0};
 
13002
 
 
13003
//---------------------------------------------------------------------
 
13004
bool ColladaParserAutoGen15Private::_data__shells( const ParserChar* text, size_t textLength )
 
13005
{
 
13006
    return true;
 
13007
}
 
13008
 
 
13009
//---------------------------------------------------------------------
 
13010
bool ColladaParserAutoGen15Private::_preBegin__shells( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
13011
{
 
13012
#ifdef GENERATEDSAXPARSER_VALIDATION
 
13013
    if ( mValidate )
 
13014
    {
 
13015
 
 
13016
        bool validationResult = _validateBegin__shells( attributes, attributeDataPtr, validationDataPtr );
 
13017
        if ( !validationResult ) return false;
 
13018
 
 
13019
    } // validation
 
13020
#endif
 
13021
 
 
13022
shells__AttributeData* attributeData = newData<shells__AttributeData>(attributeDataPtr);
 
13023
 
 
13024
const ParserChar** attributeArray = attributes.attributes;
 
13025
if ( attributeArray )
 
13026
{
 
13027
    while (true)
 
13028
    {
 
13029
        const ParserChar * attribute = *attributeArray;
 
13030
        if ( !attribute )
 
13031
            break;
 
13032
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
13033
        attributeArray++;
 
13034
        if ( !attributeArray )
 
13035
            return false;
 
13036
        const ParserChar* attributeValue = *attributeArray;
 
13037
        attributeArray++;
 
13038
 
 
13039
 
 
13040
    switch ( hash )
 
13041
    {
 
13042
    case HASH_ATTRIBUTE_ID:
 
13043
    {
 
13044
 
 
13045
attributeData->id = attributeValue;
 
13046
 
 
13047
    break;
 
13048
    }
 
13049
    case HASH_ATTRIBUTE_NAME:
 
13050
    {
 
13051
 
 
13052
attributeData->name = attributeValue;
 
13053
 
 
13054
    break;
 
13055
    }
 
13056
    case HASH_ATTRIBUTE_COUNT:
 
13057
    {
 
13058
bool failed;
 
13059
attributeData->count = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
13060
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
13061
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
13062
        HASH_ELEMENT_SHELLS,
 
13063
        HASH_ATTRIBUTE_COUNT,
 
13064
        attributeValue))
 
13065
{
 
13066
    return false;
 
13067
}
 
13068
if ( !failed )
 
13069
    attributeData->present_attributes |= shells__AttributeData::ATTRIBUTE_COUNT_PRESENT;
 
13070
 
 
13071
    break;
 
13072
    }
 
13073
    default:
 
13074
    {
 
13075
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SHELLS, attribute, attributeValue))
 
13076
            {return false;}
 
13077
    }
 
13078
    }
 
13079
    }
 
13080
}
 
13081
if ( !attributeData->id )
 
13082
{
 
13083
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_SHELLS, HASH_ATTRIBUTE_ID, 0 ) )
 
13084
        return false;
 
13085
}
 
13086
if ( (attributeData->present_attributes & shells__AttributeData::ATTRIBUTE_COUNT_PRESENT) == 0 )
 
13087
{
 
13088
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_SHELLS, HASH_ATTRIBUTE_COUNT, 0 ) )
 
13089
        return false;
 
13090
}
 
13091
 
 
13092
 
 
13093
    return true;
 
13094
}
 
13095
 
 
13096
//---------------------------------------------------------------------
 
13097
bool ColladaParserAutoGen15Private::_preEnd__shells()
 
13098
{
 
13099
#ifdef GENERATEDSAXPARSER_VALIDATION
 
13100
    if ( mValidate )
 
13101
    {
 
13102
 
 
13103
        bool validationResult = _validateEnd__shells();
 
13104
        if ( !validationResult ) return false;
 
13105
 
 
13106
    } // validation
 
13107
#endif
 
13108
 
 
13109
    return true;
 
13110
}
 
13111
 
 
13112
//---------------------------------------------------------------------
 
13113
bool ColladaParserAutoGen15Private::_freeAttributes__shells( void* attributeData )
 
13114
{
 
13115
    shells__AttributeData* typedAttributeData = static_cast<shells__AttributeData*>(attributeData);
 
13116
 
 
13117
    typedAttributeData->~shells__AttributeData();
 
13118
 
 
13119
    return true;
 
13120
}
 
13121
 
 
13122
//---------------------------------------------------------------------
 
13123
const solids__AttributeData solids__AttributeData::DEFAULT = {0, 0, 0, 0};
 
13124
 
 
13125
//---------------------------------------------------------------------
 
13126
bool ColladaParserAutoGen15Private::_data__solids( const ParserChar* text, size_t textLength )
 
13127
{
 
13128
    return true;
 
13129
}
 
13130
 
 
13131
//---------------------------------------------------------------------
 
13132
bool ColladaParserAutoGen15Private::_preBegin__solids( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
13133
{
 
13134
#ifdef GENERATEDSAXPARSER_VALIDATION
 
13135
    if ( mValidate )
 
13136
    {
 
13137
 
 
13138
        bool validationResult = _validateBegin__solids( attributes, attributeDataPtr, validationDataPtr );
 
13139
        if ( !validationResult ) return false;
 
13140
 
 
13141
    } // validation
 
13142
#endif
 
13143
 
 
13144
solids__AttributeData* attributeData = newData<solids__AttributeData>(attributeDataPtr);
 
13145
 
 
13146
const ParserChar** attributeArray = attributes.attributes;
 
13147
if ( attributeArray )
 
13148
{
 
13149
    while (true)
 
13150
    {
 
13151
        const ParserChar * attribute = *attributeArray;
 
13152
        if ( !attribute )
 
13153
            break;
 
13154
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
13155
        attributeArray++;
 
13156
        if ( !attributeArray )
 
13157
            return false;
 
13158
        const ParserChar* attributeValue = *attributeArray;
 
13159
        attributeArray++;
 
13160
 
 
13161
 
 
13162
    switch ( hash )
 
13163
    {
 
13164
    case HASH_ATTRIBUTE_ID:
 
13165
    {
 
13166
 
 
13167
attributeData->id = attributeValue;
 
13168
 
 
13169
    break;
 
13170
    }
 
13171
    case HASH_ATTRIBUTE_NAME:
 
13172
    {
 
13173
 
 
13174
attributeData->name = attributeValue;
 
13175
 
 
13176
    break;
 
13177
    }
 
13178
    case HASH_ATTRIBUTE_COUNT:
 
13179
    {
 
13180
bool failed;
 
13181
attributeData->count = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
13182
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
13183
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
13184
        HASH_ELEMENT_SOLIDS,
 
13185
        HASH_ATTRIBUTE_COUNT,
 
13186
        attributeValue))
 
13187
{
 
13188
    return false;
 
13189
}
 
13190
if ( !failed )
 
13191
    attributeData->present_attributes |= solids__AttributeData::ATTRIBUTE_COUNT_PRESENT;
 
13192
 
 
13193
    break;
 
13194
    }
 
13195
    default:
 
13196
    {
 
13197
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SOLIDS, attribute, attributeValue))
 
13198
            {return false;}
 
13199
    }
 
13200
    }
 
13201
    }
 
13202
}
 
13203
if ( !attributeData->id )
 
13204
{
 
13205
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_SOLIDS, HASH_ATTRIBUTE_ID, 0 ) )
 
13206
        return false;
 
13207
}
 
13208
if ( (attributeData->present_attributes & solids__AttributeData::ATTRIBUTE_COUNT_PRESENT) == 0 )
 
13209
{
 
13210
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_SOLIDS, HASH_ATTRIBUTE_COUNT, 0 ) )
 
13211
        return false;
 
13212
}
 
13213
 
 
13214
 
 
13215
    return true;
 
13216
}
 
13217
 
 
13218
//---------------------------------------------------------------------
 
13219
bool ColladaParserAutoGen15Private::_preEnd__solids()
 
13220
{
 
13221
#ifdef GENERATEDSAXPARSER_VALIDATION
 
13222
    if ( mValidate )
 
13223
    {
 
13224
 
 
13225
        bool validationResult = _validateEnd__solids();
 
13226
        if ( !validationResult ) return false;
 
13227
 
 
13228
    } // validation
 
13229
#endif
 
13230
 
 
13231
    return true;
 
13232
}
 
13233
 
 
13234
//---------------------------------------------------------------------
 
13235
bool ColladaParserAutoGen15Private::_freeAttributes__solids( void* attributeData )
 
13236
{
 
13237
    solids__AttributeData* typedAttributeData = static_cast<solids__AttributeData*>(attributeData);
 
13238
 
 
13239
    typedAttributeData->~solids__AttributeData();
 
13240
 
 
13241
    return true;
 
13242
}
 
13243
 
 
13244
//---------------------------------------------------------------------
 
13245
const library_effects__AttributeData library_effects__AttributeData::DEFAULT = {0, 0};
 
13246
 
 
13247
//---------------------------------------------------------------------
 
13248
bool ColladaParserAutoGen15Private::_data__library_effects( const ParserChar* text, size_t textLength )
 
13249
{
 
13250
    return true;
 
13251
}
 
13252
 
 
13253
//---------------------------------------------------------------------
 
13254
bool ColladaParserAutoGen15Private::_preBegin__library_effects( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
13255
{
 
13256
#ifdef GENERATEDSAXPARSER_VALIDATION
 
13257
    if ( mValidate )
 
13258
    {
 
13259
 
 
13260
        bool validationResult = _validateBegin__library_effects( attributes, attributeDataPtr, validationDataPtr );
 
13261
        if ( !validationResult ) return false;
 
13262
 
 
13263
    } // validation
 
13264
#endif
 
13265
 
 
13266
library_effects__AttributeData* attributeData = newData<library_effects__AttributeData>(attributeDataPtr);
 
13267
 
 
13268
const ParserChar** attributeArray = attributes.attributes;
 
13269
if ( attributeArray )
 
13270
{
 
13271
    while (true)
 
13272
    {
 
13273
        const ParserChar * attribute = *attributeArray;
 
13274
        if ( !attribute )
 
13275
            break;
 
13276
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
13277
        attributeArray++;
 
13278
        if ( !attributeArray )
 
13279
            return false;
 
13280
        const ParserChar* attributeValue = *attributeArray;
 
13281
        attributeArray++;
 
13282
 
 
13283
 
 
13284
    switch ( hash )
 
13285
    {
 
13286
    case HASH_ATTRIBUTE_ID:
 
13287
    {
 
13288
 
 
13289
attributeData->id = attributeValue;
 
13290
 
 
13291
    break;
 
13292
    }
 
13293
    case HASH_ATTRIBUTE_NAME:
 
13294
    {
 
13295
 
 
13296
attributeData->name = attributeValue;
 
13297
 
 
13298
    break;
 
13299
    }
 
13300
    default:
 
13301
    {
 
13302
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIBRARY_EFFECTS, attribute, attributeValue))
 
13303
            {return false;}
 
13304
    }
 
13305
    }
 
13306
    }
 
13307
}
 
13308
 
 
13309
 
 
13310
    return true;
 
13311
}
 
13312
 
 
13313
//---------------------------------------------------------------------
 
13314
bool ColladaParserAutoGen15Private::_preEnd__library_effects()
 
13315
{
 
13316
#ifdef GENERATEDSAXPARSER_VALIDATION
 
13317
    if ( mValidate )
 
13318
    {
 
13319
 
 
13320
        bool validationResult = _validateEnd__library_effects();
 
13321
        if ( !validationResult ) return false;
 
13322
 
 
13323
    } // validation
 
13324
#endif
 
13325
 
 
13326
    return true;
 
13327
}
 
13328
 
 
13329
//---------------------------------------------------------------------
 
13330
bool ColladaParserAutoGen15Private::_freeAttributes__library_effects( void* attributeData )
 
13331
{
 
13332
    library_effects__AttributeData* typedAttributeData = static_cast<library_effects__AttributeData*>(attributeData);
 
13333
 
 
13334
    typedAttributeData->~library_effects__AttributeData();
 
13335
 
 
13336
    return true;
 
13337
}
 
13338
 
 
13339
//---------------------------------------------------------------------
 
13340
const effect__AttributeData effect__AttributeData::DEFAULT = {0, 0};
 
13341
 
 
13342
//---------------------------------------------------------------------
 
13343
bool ColladaParserAutoGen15Private::_data__effect( const ParserChar* text, size_t textLength )
 
13344
{
 
13345
    return true;
 
13346
}
 
13347
 
 
13348
//---------------------------------------------------------------------
 
13349
bool ColladaParserAutoGen15Private::_preBegin__effect( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
13350
{
 
13351
#ifdef GENERATEDSAXPARSER_VALIDATION
 
13352
    if ( mValidate )
 
13353
    {
 
13354
 
 
13355
        bool validationResult = _validateBegin__effect( attributes, attributeDataPtr, validationDataPtr );
 
13356
        if ( !validationResult ) return false;
 
13357
 
 
13358
    } // validation
 
13359
#endif
 
13360
 
 
13361
effect__AttributeData* attributeData = newData<effect__AttributeData>(attributeDataPtr);
 
13362
 
 
13363
const ParserChar** attributeArray = attributes.attributes;
 
13364
if ( attributeArray )
 
13365
{
 
13366
    while (true)
 
13367
    {
 
13368
        const ParserChar * attribute = *attributeArray;
 
13369
        if ( !attribute )
 
13370
            break;
 
13371
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
13372
        attributeArray++;
 
13373
        if ( !attributeArray )
 
13374
            return false;
 
13375
        const ParserChar* attributeValue = *attributeArray;
 
13376
        attributeArray++;
 
13377
 
 
13378
 
 
13379
    switch ( hash )
 
13380
    {
 
13381
    case HASH_ATTRIBUTE_ID:
 
13382
    {
 
13383
 
 
13384
attributeData->id = attributeValue;
 
13385
 
 
13386
    break;
 
13387
    }
 
13388
    case HASH_ATTRIBUTE_NAME:
 
13389
    {
 
13390
 
 
13391
attributeData->name = attributeValue;
 
13392
 
 
13393
    break;
 
13394
    }
 
13395
    default:
 
13396
    {
 
13397
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_EFFECT, attribute, attributeValue))
 
13398
            {return false;}
 
13399
    }
 
13400
    }
 
13401
    }
 
13402
}
 
13403
if ( !attributeData->id )
 
13404
{
 
13405
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_EFFECT, HASH_ATTRIBUTE_ID, 0 ) )
 
13406
        return false;
 
13407
}
 
13408
 
 
13409
 
 
13410
    return true;
 
13411
}
 
13412
 
 
13413
//---------------------------------------------------------------------
 
13414
bool ColladaParserAutoGen15Private::_preEnd__effect()
 
13415
{
 
13416
#ifdef GENERATEDSAXPARSER_VALIDATION
 
13417
    if ( mValidate )
 
13418
    {
 
13419
 
 
13420
        bool validationResult = _validateEnd__effect();
 
13421
        if ( !validationResult ) return false;
 
13422
 
 
13423
    } // validation
 
13424
#endif
 
13425
 
 
13426
    return true;
 
13427
}
 
13428
 
 
13429
//---------------------------------------------------------------------
 
13430
bool ColladaParserAutoGen15Private::_freeAttributes__effect( void* attributeData )
 
13431
{
 
13432
    effect__AttributeData* typedAttributeData = static_cast<effect__AttributeData*>(attributeData);
 
13433
 
 
13434
    typedAttributeData->~effect__AttributeData();
 
13435
 
 
13436
    return true;
 
13437
}
 
13438
 
 
13439
//---------------------------------------------------------------------
 
13440
const annotate__AttributeData annotate__AttributeData::DEFAULT = {0};
 
13441
 
 
13442
//---------------------------------------------------------------------
 
13443
bool ColladaParserAutoGen15Private::_data__annotate( const ParserChar* text, size_t textLength )
 
13444
{
 
13445
    return true;
 
13446
}
 
13447
 
 
13448
//---------------------------------------------------------------------
 
13449
bool ColladaParserAutoGen15Private::_preBegin__annotate( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
13450
{
 
13451
#ifdef GENERATEDSAXPARSER_VALIDATION
 
13452
    if ( mValidate )
 
13453
    {
 
13454
 
 
13455
        bool validationResult = _validateBegin__annotate( attributes, attributeDataPtr, validationDataPtr );
 
13456
        if ( !validationResult ) return false;
 
13457
 
 
13458
    } // validation
 
13459
#endif
 
13460
 
 
13461
annotate__AttributeData* attributeData = newData<annotate__AttributeData>(attributeDataPtr);
 
13462
 
 
13463
const ParserChar** attributeArray = attributes.attributes;
 
13464
if ( attributeArray )
 
13465
{
 
13466
    while (true)
 
13467
    {
 
13468
        const ParserChar * attribute = *attributeArray;
 
13469
        if ( !attribute )
 
13470
            break;
 
13471
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
13472
        attributeArray++;
 
13473
        if ( !attributeArray )
 
13474
            return false;
 
13475
        const ParserChar* attributeValue = *attributeArray;
 
13476
        attributeArray++;
 
13477
 
 
13478
 
 
13479
    switch ( hash )
 
13480
    {
 
13481
    case HASH_ATTRIBUTE_NAME:
 
13482
    {
 
13483
 
 
13484
attributeData->name = attributeValue;
 
13485
 
 
13486
    break;
 
13487
    }
 
13488
    default:
 
13489
    {
 
13490
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_ANNOTATE, attribute, attributeValue))
 
13491
            {return false;}
 
13492
    }
 
13493
    }
 
13494
    }
 
13495
}
 
13496
if ( !attributeData->name )
 
13497
{
 
13498
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_ANNOTATE, HASH_ATTRIBUTE_NAME, 0 ) )
 
13499
        return false;
 
13500
}
 
13501
 
 
13502
 
 
13503
    return true;
 
13504
}
 
13505
 
 
13506
//---------------------------------------------------------------------
 
13507
bool ColladaParserAutoGen15Private::_preEnd__annotate()
 
13508
{
 
13509
#ifdef GENERATEDSAXPARSER_VALIDATION
 
13510
    if ( mValidate )
 
13511
    {
 
13512
 
 
13513
        bool validationResult = _validateEnd__annotate();
 
13514
        if ( !validationResult ) return false;
 
13515
 
 
13516
    } // validation
 
13517
#endif
 
13518
 
 
13519
    return true;
 
13520
}
 
13521
 
 
13522
//---------------------------------------------------------------------
 
13523
bool ColladaParserAutoGen15Private::_freeAttributes__annotate( void* attributeData )
 
13524
{
 
13525
    annotate__AttributeData* typedAttributeData = static_cast<annotate__AttributeData*>(attributeData);
 
13526
 
 
13527
    typedAttributeData->~annotate__AttributeData();
 
13528
 
 
13529
    return true;
 
13530
}
 
13531
 
 
13532
//---------------------------------------------------------------------
 
13533
bool ColladaParserAutoGen15Private::_data__bool2( const ParserChar* text, size_t textLength )
 
13534
{
 
13535
#ifdef GENERATEDSAXPARSER_VALIDATION
 
13536
    if ( mValidate )
 
13537
    {
 
13538
        bool2__ValidationData* validationData = (bool2__ValidationData*)mValidationDataStack.top();
 
13539
        DISABLE_WARNING_UNUSED(validationData)
 
13540
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool2, &validate__bool2_type__stream, &validationData->validationWholeSize, 0);
 
13541
    }
 
13542
    else
 
13543
    {
 
13544
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool2);
 
13545
    }
 
13546
#else
 
13547
    {
 
13548
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool2);
 
13549
    } // validation
 
13550
#endif
 
13551
 
 
13552
}
 
13553
 
 
13554
//---------------------------------------------------------------------
 
13555
bool ColladaParserAutoGen15Private::_preBegin__bool2( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
13556
{
 
13557
#ifdef GENERATEDSAXPARSER_VALIDATION
 
13558
    if ( mValidate )
 
13559
    {
 
13560
 
 
13561
        bool validationResult = _validateBegin__bool2( attributes, attributeDataPtr, validationDataPtr );
 
13562
        if ( !validationResult ) return false;
 
13563
 
 
13564
    } // validation
 
13565
#endif
 
13566
 
 
13567
    return true;
 
13568
}
 
13569
 
 
13570
//---------------------------------------------------------------------
 
13571
bool ColladaParserAutoGen15Private::_preEnd__bool2()
 
13572
{
 
13573
#ifdef GENERATEDSAXPARSER_VALIDATION
 
13574
    if ( mValidate )
 
13575
    {
 
13576
 
 
13577
        bool validationResult = _validateEnd__bool2();
 
13578
        if ( !validationResult ) return false;
 
13579
 
 
13580
    } // validation
 
13581
#endif
 
13582
 
 
13583
#ifdef GENERATEDSAXPARSER_VALIDATION
 
13584
    if ( mValidate )
 
13585
    {
 
13586
        bool2__ValidationData* validationData = (bool2__ValidationData*)mValidationDataStack.top();
 
13587
        DISABLE_WARNING_UNUSED(validationData)
 
13588
bool returnValue = boolDataEnd( &ColladaParserAutoGen15::data__bool2, &validate__bool2_type__streamEnd, &validationData->validationWholeSize, 0 );
 
13589
        ParserError::ErrorType simpleTypeValidationResult = validate__bool2_type(0, (*(&validationData->validationWholeSize)));
 
13590
        mValidationDataStack.deleteObject();
 
13591
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
13592
        {
 
13593
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
13594
                simpleTypeValidationResult,
 
13595
                HASH_ELEMENT_BOOL2,
 
13596
                (ParserChar*)0, 0 ) )
 
13597
            {
 
13598
                return false;
 
13599
            }
 
13600
        }
 
13601
        return returnValue;
 
13602
    }
 
13603
    else
 
13604
    {
 
13605
return boolDataEnd( &ColladaParserAutoGen15::data__bool2 );
 
13606
    }
 
13607
#else
 
13608
    {
 
13609
return boolDataEnd( &ColladaParserAutoGen15::data__bool2 );
 
13610
    } // validation
 
13611
#endif
 
13612
 
 
13613
}
 
13614
 
 
13615
//---------------------------------------------------------------------
 
13616
bool ColladaParserAutoGen15Private::_freeAttributes__bool2( void* attributeData )
 
13617
{
 
13618
    return true;
 
13619
}
 
13620
 
 
13621
//---------------------------------------------------------------------
 
13622
bool ColladaParserAutoGen15Private::_data__bool3( const ParserChar* text, size_t textLength )
 
13623
{
 
13624
#ifdef GENERATEDSAXPARSER_VALIDATION
 
13625
    if ( mValidate )
 
13626
    {
 
13627
        bool3__ValidationData* validationData = (bool3__ValidationData*)mValidationDataStack.top();
 
13628
        DISABLE_WARNING_UNUSED(validationData)
 
13629
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool3, &validate__bool3_type__stream, &validationData->validationWholeSize, 0);
 
13630
    }
 
13631
    else
 
13632
    {
 
13633
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool3);
 
13634
    }
 
13635
#else
 
13636
    {
 
13637
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool3);
 
13638
    } // validation
 
13639
#endif
 
13640
 
 
13641
}
 
13642
 
 
13643
//---------------------------------------------------------------------
 
13644
bool ColladaParserAutoGen15Private::_preBegin__bool3( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
13645
{
 
13646
#ifdef GENERATEDSAXPARSER_VALIDATION
 
13647
    if ( mValidate )
 
13648
    {
 
13649
 
 
13650
        bool validationResult = _validateBegin__bool3( attributes, attributeDataPtr, validationDataPtr );
 
13651
        if ( !validationResult ) return false;
 
13652
 
 
13653
    } // validation
 
13654
#endif
 
13655
 
 
13656
    return true;
 
13657
}
 
13658
 
 
13659
//---------------------------------------------------------------------
 
13660
bool ColladaParserAutoGen15Private::_preEnd__bool3()
 
13661
{
 
13662
#ifdef GENERATEDSAXPARSER_VALIDATION
 
13663
    if ( mValidate )
 
13664
    {
 
13665
 
 
13666
        bool validationResult = _validateEnd__bool3();
 
13667
        if ( !validationResult ) return false;
 
13668
 
 
13669
    } // validation
 
13670
#endif
 
13671
 
 
13672
#ifdef GENERATEDSAXPARSER_VALIDATION
 
13673
    if ( mValidate )
 
13674
    {
 
13675
        bool3__ValidationData* validationData = (bool3__ValidationData*)mValidationDataStack.top();
 
13676
        DISABLE_WARNING_UNUSED(validationData)
 
13677
bool returnValue = boolDataEnd( &ColladaParserAutoGen15::data__bool3, &validate__bool3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
13678
        ParserError::ErrorType simpleTypeValidationResult = validate__bool3_type(0, (*(&validationData->validationWholeSize)));
 
13679
        mValidationDataStack.deleteObject();
 
13680
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
13681
        {
 
13682
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
13683
                simpleTypeValidationResult,
 
13684
                HASH_ELEMENT_BOOL3,
 
13685
                (ParserChar*)0, 0 ) )
 
13686
            {
 
13687
                return false;
 
13688
            }
 
13689
        }
 
13690
        return returnValue;
 
13691
    }
 
13692
    else
 
13693
    {
 
13694
return boolDataEnd( &ColladaParserAutoGen15::data__bool3 );
 
13695
    }
 
13696
#else
 
13697
    {
 
13698
return boolDataEnd( &ColladaParserAutoGen15::data__bool3 );
 
13699
    } // validation
 
13700
#endif
 
13701
 
 
13702
}
 
13703
 
 
13704
//---------------------------------------------------------------------
 
13705
bool ColladaParserAutoGen15Private::_freeAttributes__bool3( void* attributeData )
 
13706
{
 
13707
    return true;
 
13708
}
 
13709
 
 
13710
//---------------------------------------------------------------------
 
13711
bool ColladaParserAutoGen15Private::_data__bool4( const ParserChar* text, size_t textLength )
 
13712
{
 
13713
#ifdef GENERATEDSAXPARSER_VALIDATION
 
13714
    if ( mValidate )
 
13715
    {
 
13716
        bool4__ValidationData* validationData = (bool4__ValidationData*)mValidationDataStack.top();
 
13717
        DISABLE_WARNING_UNUSED(validationData)
 
13718
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool4, &validate__bool4_type__stream, &validationData->validationWholeSize, 0);
 
13719
    }
 
13720
    else
 
13721
    {
 
13722
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool4);
 
13723
    }
 
13724
#else
 
13725
    {
 
13726
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool4);
 
13727
    } // validation
 
13728
#endif
 
13729
 
 
13730
}
 
13731
 
 
13732
//---------------------------------------------------------------------
 
13733
bool ColladaParserAutoGen15Private::_preBegin__bool4( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
13734
{
 
13735
#ifdef GENERATEDSAXPARSER_VALIDATION
 
13736
    if ( mValidate )
 
13737
    {
 
13738
 
 
13739
        bool validationResult = _validateBegin__bool4( attributes, attributeDataPtr, validationDataPtr );
 
13740
        if ( !validationResult ) return false;
 
13741
 
 
13742
    } // validation
 
13743
#endif
 
13744
 
 
13745
    return true;
 
13746
}
 
13747
 
 
13748
//---------------------------------------------------------------------
 
13749
bool ColladaParserAutoGen15Private::_preEnd__bool4()
 
13750
{
 
13751
#ifdef GENERATEDSAXPARSER_VALIDATION
 
13752
    if ( mValidate )
 
13753
    {
 
13754
 
 
13755
        bool validationResult = _validateEnd__bool4();
 
13756
        if ( !validationResult ) return false;
 
13757
 
 
13758
    } // validation
 
13759
#endif
 
13760
 
 
13761
#ifdef GENERATEDSAXPARSER_VALIDATION
 
13762
    if ( mValidate )
 
13763
    {
 
13764
        bool4__ValidationData* validationData = (bool4__ValidationData*)mValidationDataStack.top();
 
13765
        DISABLE_WARNING_UNUSED(validationData)
 
13766
bool returnValue = boolDataEnd( &ColladaParserAutoGen15::data__bool4, &validate__bool4_type__streamEnd, &validationData->validationWholeSize, 0 );
 
13767
        ParserError::ErrorType simpleTypeValidationResult = validate__bool4_type(0, (*(&validationData->validationWholeSize)));
 
13768
        mValidationDataStack.deleteObject();
 
13769
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
13770
        {
 
13771
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
13772
                simpleTypeValidationResult,
 
13773
                HASH_ELEMENT_BOOL4,
 
13774
                (ParserChar*)0, 0 ) )
 
13775
            {
 
13776
                return false;
 
13777
            }
 
13778
        }
 
13779
        return returnValue;
 
13780
    }
 
13781
    else
 
13782
    {
 
13783
return boolDataEnd( &ColladaParserAutoGen15::data__bool4 );
 
13784
    }
 
13785
#else
 
13786
    {
 
13787
return boolDataEnd( &ColladaParserAutoGen15::data__bool4 );
 
13788
    } // validation
 
13789
#endif
 
13790
 
 
13791
}
 
13792
 
 
13793
//---------------------------------------------------------------------
 
13794
bool ColladaParserAutoGen15Private::_freeAttributes__bool4( void* attributeData )
 
13795
{
 
13796
    return true;
 
13797
}
 
13798
 
 
13799
//---------------------------------------------------------------------
 
13800
bool ColladaParserAutoGen15Private::_data__int2( const ParserChar* text, size_t textLength )
 
13801
{
 
13802
#ifdef GENERATEDSAXPARSER_VALIDATION
 
13803
    if ( mValidate )
 
13804
    {
 
13805
        int2__ValidationData* validationData = (int2__ValidationData*)mValidationDataStack.top();
 
13806
        DISABLE_WARNING_UNUSED(validationData)
 
13807
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int2, &validate__int2_type__stream, &validationData->validationWholeSize, 0);
 
13808
    }
 
13809
    else
 
13810
    {
 
13811
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int2);
 
13812
    }
 
13813
#else
 
13814
    {
 
13815
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int2);
 
13816
    } // validation
 
13817
#endif
 
13818
 
 
13819
}
 
13820
 
 
13821
//---------------------------------------------------------------------
 
13822
bool ColladaParserAutoGen15Private::_preBegin__int2( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
13823
{
 
13824
#ifdef GENERATEDSAXPARSER_VALIDATION
 
13825
    if ( mValidate )
 
13826
    {
 
13827
 
 
13828
        bool validationResult = _validateBegin__int2( attributes, attributeDataPtr, validationDataPtr );
 
13829
        if ( !validationResult ) return false;
 
13830
 
 
13831
    } // validation
 
13832
#endif
 
13833
 
 
13834
    return true;
 
13835
}
 
13836
 
 
13837
//---------------------------------------------------------------------
 
13838
bool ColladaParserAutoGen15Private::_preEnd__int2()
 
13839
{
 
13840
#ifdef GENERATEDSAXPARSER_VALIDATION
 
13841
    if ( mValidate )
 
13842
    {
 
13843
 
 
13844
        bool validationResult = _validateEnd__int2();
 
13845
        if ( !validationResult ) return false;
 
13846
 
 
13847
    } // validation
 
13848
#endif
 
13849
 
 
13850
#ifdef GENERATEDSAXPARSER_VALIDATION
 
13851
    if ( mValidate )
 
13852
    {
 
13853
        int2__ValidationData* validationData = (int2__ValidationData*)mValidationDataStack.top();
 
13854
        DISABLE_WARNING_UNUSED(validationData)
 
13855
bool returnValue = sint64DataEnd( &ColladaParserAutoGen15::data__int2, &validate__int2_type__streamEnd, &validationData->validationWholeSize, 0 );
 
13856
        ParserError::ErrorType simpleTypeValidationResult = validate__int2_type(0, (*(&validationData->validationWholeSize)));
 
13857
        mValidationDataStack.deleteObject();
 
13858
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
13859
        {
 
13860
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
13861
                simpleTypeValidationResult,
 
13862
                HASH_ELEMENT_INT2,
 
13863
                (ParserChar*)0, 0 ) )
 
13864
            {
 
13865
                return false;
 
13866
            }
 
13867
        }
 
13868
        return returnValue;
 
13869
    }
 
13870
    else
 
13871
    {
 
13872
return sint64DataEnd( &ColladaParserAutoGen15::data__int2 );
 
13873
    }
 
13874
#else
 
13875
    {
 
13876
return sint64DataEnd( &ColladaParserAutoGen15::data__int2 );
 
13877
    } // validation
 
13878
#endif
 
13879
 
 
13880
}
 
13881
 
 
13882
//---------------------------------------------------------------------
 
13883
bool ColladaParserAutoGen15Private::_freeAttributes__int2( void* attributeData )
 
13884
{
 
13885
    return true;
 
13886
}
 
13887
 
 
13888
//---------------------------------------------------------------------
 
13889
bool ColladaParserAutoGen15Private::_data__int3( const ParserChar* text, size_t textLength )
 
13890
{
 
13891
#ifdef GENERATEDSAXPARSER_VALIDATION
 
13892
    if ( mValidate )
 
13893
    {
 
13894
        int3__ValidationData* validationData = (int3__ValidationData*)mValidationDataStack.top();
 
13895
        DISABLE_WARNING_UNUSED(validationData)
 
13896
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int3, &validate__int3_type__stream, &validationData->validationWholeSize, 0);
 
13897
    }
 
13898
    else
 
13899
    {
 
13900
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int3);
 
13901
    }
 
13902
#else
 
13903
    {
 
13904
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int3);
 
13905
    } // validation
 
13906
#endif
 
13907
 
 
13908
}
 
13909
 
 
13910
//---------------------------------------------------------------------
 
13911
bool ColladaParserAutoGen15Private::_preBegin__int3( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
13912
{
 
13913
#ifdef GENERATEDSAXPARSER_VALIDATION
 
13914
    if ( mValidate )
 
13915
    {
 
13916
 
 
13917
        bool validationResult = _validateBegin__int3( attributes, attributeDataPtr, validationDataPtr );
 
13918
        if ( !validationResult ) return false;
 
13919
 
 
13920
    } // validation
 
13921
#endif
 
13922
 
 
13923
    return true;
 
13924
}
 
13925
 
 
13926
//---------------------------------------------------------------------
 
13927
bool ColladaParserAutoGen15Private::_preEnd__int3()
 
13928
{
 
13929
#ifdef GENERATEDSAXPARSER_VALIDATION
 
13930
    if ( mValidate )
 
13931
    {
 
13932
 
 
13933
        bool validationResult = _validateEnd__int3();
 
13934
        if ( !validationResult ) return false;
 
13935
 
 
13936
    } // validation
 
13937
#endif
 
13938
 
 
13939
#ifdef GENERATEDSAXPARSER_VALIDATION
 
13940
    if ( mValidate )
 
13941
    {
 
13942
        int3__ValidationData* validationData = (int3__ValidationData*)mValidationDataStack.top();
 
13943
        DISABLE_WARNING_UNUSED(validationData)
 
13944
bool returnValue = sint64DataEnd( &ColladaParserAutoGen15::data__int3, &validate__int3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
13945
        ParserError::ErrorType simpleTypeValidationResult = validate__int3_type(0, (*(&validationData->validationWholeSize)));
 
13946
        mValidationDataStack.deleteObject();
 
13947
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
13948
        {
 
13949
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
13950
                simpleTypeValidationResult,
 
13951
                HASH_ELEMENT_INT3,
 
13952
                (ParserChar*)0, 0 ) )
 
13953
            {
 
13954
                return false;
 
13955
            }
 
13956
        }
 
13957
        return returnValue;
 
13958
    }
 
13959
    else
 
13960
    {
 
13961
return sint64DataEnd( &ColladaParserAutoGen15::data__int3 );
 
13962
    }
 
13963
#else
 
13964
    {
 
13965
return sint64DataEnd( &ColladaParserAutoGen15::data__int3 );
 
13966
    } // validation
 
13967
#endif
 
13968
 
 
13969
}
 
13970
 
 
13971
//---------------------------------------------------------------------
 
13972
bool ColladaParserAutoGen15Private::_freeAttributes__int3( void* attributeData )
 
13973
{
 
13974
    return true;
 
13975
}
 
13976
 
 
13977
//---------------------------------------------------------------------
 
13978
bool ColladaParserAutoGen15Private::_data__int4( const ParserChar* text, size_t textLength )
 
13979
{
 
13980
#ifdef GENERATEDSAXPARSER_VALIDATION
 
13981
    if ( mValidate )
 
13982
    {
 
13983
        int4__ValidationData* validationData = (int4__ValidationData*)mValidationDataStack.top();
 
13984
        DISABLE_WARNING_UNUSED(validationData)
 
13985
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int4, &validate__int4_type__stream, &validationData->validationWholeSize, 0);
 
13986
    }
 
13987
    else
 
13988
    {
 
13989
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int4);
 
13990
    }
 
13991
#else
 
13992
    {
 
13993
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int4);
 
13994
    } // validation
 
13995
#endif
 
13996
 
 
13997
}
 
13998
 
 
13999
//---------------------------------------------------------------------
 
14000
bool ColladaParserAutoGen15Private::_preBegin__int4( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
14001
{
 
14002
#ifdef GENERATEDSAXPARSER_VALIDATION
 
14003
    if ( mValidate )
 
14004
    {
 
14005
 
 
14006
        bool validationResult = _validateBegin__int4( attributes, attributeDataPtr, validationDataPtr );
 
14007
        if ( !validationResult ) return false;
 
14008
 
 
14009
    } // validation
 
14010
#endif
 
14011
 
 
14012
    return true;
 
14013
}
 
14014
 
 
14015
//---------------------------------------------------------------------
 
14016
bool ColladaParserAutoGen15Private::_preEnd__int4()
 
14017
{
 
14018
#ifdef GENERATEDSAXPARSER_VALIDATION
 
14019
    if ( mValidate )
 
14020
    {
 
14021
 
 
14022
        bool validationResult = _validateEnd__int4();
 
14023
        if ( !validationResult ) return false;
 
14024
 
 
14025
    } // validation
 
14026
#endif
 
14027
 
 
14028
#ifdef GENERATEDSAXPARSER_VALIDATION
 
14029
    if ( mValidate )
 
14030
    {
 
14031
        int4__ValidationData* validationData = (int4__ValidationData*)mValidationDataStack.top();
 
14032
        DISABLE_WARNING_UNUSED(validationData)
 
14033
bool returnValue = sint64DataEnd( &ColladaParserAutoGen15::data__int4, &validate__int4_type__streamEnd, &validationData->validationWholeSize, 0 );
 
14034
        ParserError::ErrorType simpleTypeValidationResult = validate__int4_type(0, (*(&validationData->validationWholeSize)));
 
14035
        mValidationDataStack.deleteObject();
 
14036
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
14037
        {
 
14038
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
14039
                simpleTypeValidationResult,
 
14040
                HASH_ELEMENT_INT4,
 
14041
                (ParserChar*)0, 0 ) )
 
14042
            {
 
14043
                return false;
 
14044
            }
 
14045
        }
 
14046
        return returnValue;
 
14047
    }
 
14048
    else
 
14049
    {
 
14050
return sint64DataEnd( &ColladaParserAutoGen15::data__int4 );
 
14051
    }
 
14052
#else
 
14053
    {
 
14054
return sint64DataEnd( &ColladaParserAutoGen15::data__int4 );
 
14055
    } // validation
 
14056
#endif
 
14057
 
 
14058
}
 
14059
 
 
14060
//---------------------------------------------------------------------
 
14061
bool ColladaParserAutoGen15Private::_freeAttributes__int4( void* attributeData )
 
14062
{
 
14063
    return true;
 
14064
}
 
14065
 
 
14066
//---------------------------------------------------------------------
 
14067
bool ColladaParserAutoGen15Private::_data__float2( const ParserChar* text, size_t textLength )
 
14068
{
 
14069
#ifdef GENERATEDSAXPARSER_VALIDATION
 
14070
    if ( mValidate )
 
14071
    {
 
14072
        radius____float2_type__ValidationData* validationData = (radius____float2_type__ValidationData*)mValidationDataStack.top();
 
14073
        DISABLE_WARNING_UNUSED(validationData)
 
14074
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float2, &validate__float2_type__stream, &validationData->validationWholeSize, 0);
 
14075
    }
 
14076
    else
 
14077
    {
 
14078
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float2);
 
14079
    }
 
14080
#else
 
14081
    {
 
14082
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float2);
 
14083
    } // validation
 
14084
#endif
 
14085
 
 
14086
}
 
14087
 
 
14088
//---------------------------------------------------------------------
 
14089
bool ColladaParserAutoGen15Private::_preBegin__float2( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
14090
{
 
14091
#ifdef GENERATEDSAXPARSER_VALIDATION
 
14092
    if ( mValidate )
 
14093
    {
 
14094
 
 
14095
        bool validationResult = _validateBegin__float2( attributes, attributeDataPtr, validationDataPtr );
 
14096
        if ( !validationResult ) return false;
 
14097
 
 
14098
    } // validation
 
14099
#endif
 
14100
 
 
14101
    return true;
 
14102
}
 
14103
 
 
14104
//---------------------------------------------------------------------
 
14105
bool ColladaParserAutoGen15Private::_preEnd__float2()
 
14106
{
 
14107
#ifdef GENERATEDSAXPARSER_VALIDATION
 
14108
    if ( mValidate )
 
14109
    {
 
14110
 
 
14111
        bool validationResult = _validateEnd__float2();
 
14112
        if ( !validationResult ) return false;
 
14113
 
 
14114
    } // validation
 
14115
#endif
 
14116
 
 
14117
#ifdef GENERATEDSAXPARSER_VALIDATION
 
14118
    if ( mValidate )
 
14119
    {
 
14120
        radius____float2_type__ValidationData* validationData = (radius____float2_type__ValidationData*)mValidationDataStack.top();
 
14121
        DISABLE_WARNING_UNUSED(validationData)
 
14122
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__float2, &validate__float2_type__streamEnd, &validationData->validationWholeSize, 0 );
 
14123
        ParserError::ErrorType simpleTypeValidationResult = validate__float2_type(0, (*(&validationData->validationWholeSize)));
 
14124
        mValidationDataStack.deleteObject();
 
14125
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
14126
        {
 
14127
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
14128
                simpleTypeValidationResult,
 
14129
                HASH_ELEMENT_FLOAT2,
 
14130
                (ParserChar*)0, 0 ) )
 
14131
            {
 
14132
                return false;
 
14133
            }
 
14134
        }
 
14135
        return returnValue;
 
14136
    }
 
14137
    else
 
14138
    {
 
14139
return floatDataEnd( &ColladaParserAutoGen15::data__float2 );
 
14140
    }
 
14141
#else
 
14142
    {
 
14143
return floatDataEnd( &ColladaParserAutoGen15::data__float2 );
 
14144
    } // validation
 
14145
#endif
 
14146
 
 
14147
}
 
14148
 
 
14149
//---------------------------------------------------------------------
 
14150
bool ColladaParserAutoGen15Private::_freeAttributes__float2( void* attributeData )
 
14151
{
 
14152
    return true;
 
14153
}
 
14154
 
 
14155
//---------------------------------------------------------------------
 
14156
bool ColladaParserAutoGen15Private::_data__float3( const ParserChar* text, size_t textLength )
 
14157
{
 
14158
#ifdef GENERATEDSAXPARSER_VALIDATION
 
14159
    if ( mValidate )
 
14160
    {
 
14161
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
14162
        DISABLE_WARNING_UNUSED(validationData)
 
14163
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float3, &validate__float3_type__stream, &validationData->validationWholeSize, 0);
 
14164
    }
 
14165
    else
 
14166
    {
 
14167
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float3);
 
14168
    }
 
14169
#else
 
14170
    {
 
14171
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float3);
 
14172
    } // validation
 
14173
#endif
 
14174
 
 
14175
}
 
14176
 
 
14177
//---------------------------------------------------------------------
 
14178
bool ColladaParserAutoGen15Private::_preBegin__float3( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
14179
{
 
14180
#ifdef GENERATEDSAXPARSER_VALIDATION
 
14181
    if ( mValidate )
 
14182
    {
 
14183
 
 
14184
        bool validationResult = _validateBegin__float3( attributes, attributeDataPtr, validationDataPtr );
 
14185
        if ( !validationResult ) return false;
 
14186
 
 
14187
    } // validation
 
14188
#endif
 
14189
 
 
14190
    return true;
 
14191
}
 
14192
 
 
14193
//---------------------------------------------------------------------
 
14194
bool ColladaParserAutoGen15Private::_preEnd__float3()
 
14195
{
 
14196
#ifdef GENERATEDSAXPARSER_VALIDATION
 
14197
    if ( mValidate )
 
14198
    {
 
14199
 
 
14200
        bool validationResult = _validateEnd__float3();
 
14201
        if ( !validationResult ) return false;
 
14202
 
 
14203
    } // validation
 
14204
#endif
 
14205
 
 
14206
#ifdef GENERATEDSAXPARSER_VALIDATION
 
14207
    if ( mValidate )
 
14208
    {
 
14209
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
14210
        DISABLE_WARNING_UNUSED(validationData)
 
14211
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__float3, &validate__float3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
14212
        ParserError::ErrorType simpleTypeValidationResult = validate__float3_type(0, (*(&validationData->validationWholeSize)));
 
14213
        mValidationDataStack.deleteObject();
 
14214
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
14215
        {
 
14216
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
14217
                simpleTypeValidationResult,
 
14218
                HASH_ELEMENT_FLOAT3,
 
14219
                (ParserChar*)0, 0 ) )
 
14220
            {
 
14221
                return false;
 
14222
            }
 
14223
        }
 
14224
        return returnValue;
 
14225
    }
 
14226
    else
 
14227
    {
 
14228
return floatDataEnd( &ColladaParserAutoGen15::data__float3 );
 
14229
    }
 
14230
#else
 
14231
    {
 
14232
return floatDataEnd( &ColladaParserAutoGen15::data__float3 );
 
14233
    } // validation
 
14234
#endif
 
14235
 
 
14236
}
 
14237
 
 
14238
//---------------------------------------------------------------------
 
14239
bool ColladaParserAutoGen15Private::_freeAttributes__float3( void* attributeData )
 
14240
{
 
14241
    return true;
 
14242
}
 
14243
 
 
14244
//---------------------------------------------------------------------
 
14245
bool ColladaParserAutoGen15Private::_data__float4( const ParserChar* text, size_t textLength )
 
14246
{
 
14247
#ifdef GENERATEDSAXPARSER_VALIDATION
 
14248
    if ( mValidate )
 
14249
    {
 
14250
        orient__ValidationData* validationData = (orient__ValidationData*)mValidationDataStack.top();
 
14251
        DISABLE_WARNING_UNUSED(validationData)
 
14252
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float4, &validate__float4_type__stream, &validationData->validationWholeSize, 0);
 
14253
    }
 
14254
    else
 
14255
    {
 
14256
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float4);
 
14257
    }
 
14258
#else
 
14259
    {
 
14260
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float4);
 
14261
    } // validation
 
14262
#endif
 
14263
 
 
14264
}
 
14265
 
 
14266
//---------------------------------------------------------------------
 
14267
bool ColladaParserAutoGen15Private::_preBegin__float4( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
14268
{
 
14269
#ifdef GENERATEDSAXPARSER_VALIDATION
 
14270
    if ( mValidate )
 
14271
    {
 
14272
 
 
14273
        bool validationResult = _validateBegin__float4( attributes, attributeDataPtr, validationDataPtr );
 
14274
        if ( !validationResult ) return false;
 
14275
 
 
14276
    } // validation
 
14277
#endif
 
14278
 
 
14279
    return true;
 
14280
}
 
14281
 
 
14282
//---------------------------------------------------------------------
 
14283
bool ColladaParserAutoGen15Private::_preEnd__float4()
 
14284
{
 
14285
#ifdef GENERATEDSAXPARSER_VALIDATION
 
14286
    if ( mValidate )
 
14287
    {
 
14288
 
 
14289
        bool validationResult = _validateEnd__float4();
 
14290
        if ( !validationResult ) return false;
 
14291
 
 
14292
    } // validation
 
14293
#endif
 
14294
 
 
14295
#ifdef GENERATEDSAXPARSER_VALIDATION
 
14296
    if ( mValidate )
 
14297
    {
 
14298
        orient__ValidationData* validationData = (orient__ValidationData*)mValidationDataStack.top();
 
14299
        DISABLE_WARNING_UNUSED(validationData)
 
14300
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__float4, &validate__float4_type__streamEnd, &validationData->validationWholeSize, 0 );
 
14301
        ParserError::ErrorType simpleTypeValidationResult = validate__float4_type(0, (*(&validationData->validationWholeSize)));
 
14302
        mValidationDataStack.deleteObject();
 
14303
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
14304
        {
 
14305
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
14306
                simpleTypeValidationResult,
 
14307
                HASH_ELEMENT_FLOAT4,
 
14308
                (ParserChar*)0, 0 ) )
 
14309
            {
 
14310
                return false;
 
14311
            }
 
14312
        }
 
14313
        return returnValue;
 
14314
    }
 
14315
    else
 
14316
    {
 
14317
return floatDataEnd( &ColladaParserAutoGen15::data__float4 );
 
14318
    }
 
14319
#else
 
14320
    {
 
14321
return floatDataEnd( &ColladaParserAutoGen15::data__float4 );
 
14322
    } // validation
 
14323
#endif
 
14324
 
 
14325
}
 
14326
 
 
14327
//---------------------------------------------------------------------
 
14328
bool ColladaParserAutoGen15Private::_freeAttributes__float4( void* attributeData )
 
14329
{
 
14330
    return true;
 
14331
}
 
14332
 
 
14333
//---------------------------------------------------------------------
 
14334
bool ColladaParserAutoGen15Private::_data__float2x2( const ParserChar* text, size_t textLength )
 
14335
{
 
14336
#ifdef GENERATEDSAXPARSER_VALIDATION
 
14337
    if ( mValidate )
 
14338
    {
 
14339
        float2x2__ValidationData* validationData = (float2x2__ValidationData*)mValidationDataStack.top();
 
14340
        DISABLE_WARNING_UNUSED(validationData)
 
14341
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float2x2, &validate__float2x2_type__stream, &validationData->validationWholeSize, 0);
 
14342
    }
 
14343
    else
 
14344
    {
 
14345
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float2x2);
 
14346
    }
 
14347
#else
 
14348
    {
 
14349
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float2x2);
 
14350
    } // validation
 
14351
#endif
 
14352
 
 
14353
}
 
14354
 
 
14355
//---------------------------------------------------------------------
 
14356
bool ColladaParserAutoGen15Private::_preBegin__float2x2( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
14357
{
 
14358
#ifdef GENERATEDSAXPARSER_VALIDATION
 
14359
    if ( mValidate )
 
14360
    {
 
14361
 
 
14362
        bool validationResult = _validateBegin__float2x2( attributes, attributeDataPtr, validationDataPtr );
 
14363
        if ( !validationResult ) return false;
 
14364
 
 
14365
    } // validation
 
14366
#endif
 
14367
 
 
14368
    return true;
 
14369
}
 
14370
 
 
14371
//---------------------------------------------------------------------
 
14372
bool ColladaParserAutoGen15Private::_preEnd__float2x2()
 
14373
{
 
14374
#ifdef GENERATEDSAXPARSER_VALIDATION
 
14375
    if ( mValidate )
 
14376
    {
 
14377
 
 
14378
        bool validationResult = _validateEnd__float2x2();
 
14379
        if ( !validationResult ) return false;
 
14380
 
 
14381
    } // validation
 
14382
#endif
 
14383
 
 
14384
#ifdef GENERATEDSAXPARSER_VALIDATION
 
14385
    if ( mValidate )
 
14386
    {
 
14387
        float2x2__ValidationData* validationData = (float2x2__ValidationData*)mValidationDataStack.top();
 
14388
        DISABLE_WARNING_UNUSED(validationData)
 
14389
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__float2x2, &validate__float2x2_type__streamEnd, &validationData->validationWholeSize, 0 );
 
14390
        ParserError::ErrorType simpleTypeValidationResult = validate__float2x2_type(0, (*(&validationData->validationWholeSize)));
 
14391
        mValidationDataStack.deleteObject();
 
14392
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
14393
        {
 
14394
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
14395
                simpleTypeValidationResult,
 
14396
                HASH_ELEMENT_FLOAT2X2,
 
14397
                (ParserChar*)0, 0 ) )
 
14398
            {
 
14399
                return false;
 
14400
            }
 
14401
        }
 
14402
        return returnValue;
 
14403
    }
 
14404
    else
 
14405
    {
 
14406
return floatDataEnd( &ColladaParserAutoGen15::data__float2x2 );
 
14407
    }
 
14408
#else
 
14409
    {
 
14410
return floatDataEnd( &ColladaParserAutoGen15::data__float2x2 );
 
14411
    } // validation
 
14412
#endif
 
14413
 
 
14414
}
 
14415
 
 
14416
//---------------------------------------------------------------------
 
14417
bool ColladaParserAutoGen15Private::_freeAttributes__float2x2( void* attributeData )
 
14418
{
 
14419
    return true;
 
14420
}
 
14421
 
 
14422
//---------------------------------------------------------------------
 
14423
bool ColladaParserAutoGen15Private::_data__float3x3( const ParserChar* text, size_t textLength )
 
14424
{
 
14425
#ifdef GENERATEDSAXPARSER_VALIDATION
 
14426
    if ( mValidate )
 
14427
    {
 
14428
        float3x3__ValidationData* validationData = (float3x3__ValidationData*)mValidationDataStack.top();
 
14429
        DISABLE_WARNING_UNUSED(validationData)
 
14430
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float3x3, &validate__float3x3_type__stream, &validationData->validationWholeSize, 0);
 
14431
    }
 
14432
    else
 
14433
    {
 
14434
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float3x3);
 
14435
    }
 
14436
#else
 
14437
    {
 
14438
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float3x3);
 
14439
    } // validation
 
14440
#endif
 
14441
 
 
14442
}
 
14443
 
 
14444
//---------------------------------------------------------------------
 
14445
bool ColladaParserAutoGen15Private::_preBegin__float3x3( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
14446
{
 
14447
#ifdef GENERATEDSAXPARSER_VALIDATION
 
14448
    if ( mValidate )
 
14449
    {
 
14450
 
 
14451
        bool validationResult = _validateBegin__float3x3( attributes, attributeDataPtr, validationDataPtr );
 
14452
        if ( !validationResult ) return false;
 
14453
 
 
14454
    } // validation
 
14455
#endif
 
14456
 
 
14457
    return true;
 
14458
}
 
14459
 
 
14460
//---------------------------------------------------------------------
 
14461
bool ColladaParserAutoGen15Private::_preEnd__float3x3()
 
14462
{
 
14463
#ifdef GENERATEDSAXPARSER_VALIDATION
 
14464
    if ( mValidate )
 
14465
    {
 
14466
 
 
14467
        bool validationResult = _validateEnd__float3x3();
 
14468
        if ( !validationResult ) return false;
 
14469
 
 
14470
    } // validation
 
14471
#endif
 
14472
 
 
14473
#ifdef GENERATEDSAXPARSER_VALIDATION
 
14474
    if ( mValidate )
 
14475
    {
 
14476
        float3x3__ValidationData* validationData = (float3x3__ValidationData*)mValidationDataStack.top();
 
14477
        DISABLE_WARNING_UNUSED(validationData)
 
14478
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__float3x3, &validate__float3x3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
14479
        ParserError::ErrorType simpleTypeValidationResult = validate__float3x3_type(0, (*(&validationData->validationWholeSize)));
 
14480
        mValidationDataStack.deleteObject();
 
14481
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
14482
        {
 
14483
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
14484
                simpleTypeValidationResult,
 
14485
                HASH_ELEMENT_FLOAT3X3,
 
14486
                (ParserChar*)0, 0 ) )
 
14487
            {
 
14488
                return false;
 
14489
            }
 
14490
        }
 
14491
        return returnValue;
 
14492
    }
 
14493
    else
 
14494
    {
 
14495
return floatDataEnd( &ColladaParserAutoGen15::data__float3x3 );
 
14496
    }
 
14497
#else
 
14498
    {
 
14499
return floatDataEnd( &ColladaParserAutoGen15::data__float3x3 );
 
14500
    } // validation
 
14501
#endif
 
14502
 
 
14503
}
 
14504
 
 
14505
//---------------------------------------------------------------------
 
14506
bool ColladaParserAutoGen15Private::_freeAttributes__float3x3( void* attributeData )
 
14507
{
 
14508
    return true;
 
14509
}
 
14510
 
 
14511
//---------------------------------------------------------------------
 
14512
bool ColladaParserAutoGen15Private::_data__float4x4( const ParserChar* text, size_t textLength )
 
14513
{
 
14514
#ifdef GENERATEDSAXPARSER_VALIDATION
 
14515
    if ( mValidate )
 
14516
    {
 
14517
        bind_shape_matrix__ValidationData* validationData = (bind_shape_matrix__ValidationData*)mValidationDataStack.top();
 
14518
        DISABLE_WARNING_UNUSED(validationData)
 
14519
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float4x4, &validate__float4x4_type__stream, &validationData->validationWholeSize, 0);
 
14520
    }
 
14521
    else
 
14522
    {
 
14523
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float4x4);
 
14524
    }
 
14525
#else
 
14526
    {
 
14527
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float4x4);
 
14528
    } // validation
 
14529
#endif
 
14530
 
 
14531
}
 
14532
 
 
14533
//---------------------------------------------------------------------
 
14534
bool ColladaParserAutoGen15Private::_preBegin__float4x4( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
14535
{
 
14536
#ifdef GENERATEDSAXPARSER_VALIDATION
 
14537
    if ( mValidate )
 
14538
    {
 
14539
 
 
14540
        bool validationResult = _validateBegin__float4x4( attributes, attributeDataPtr, validationDataPtr );
 
14541
        if ( !validationResult ) return false;
 
14542
 
 
14543
    } // validation
 
14544
#endif
 
14545
 
 
14546
    return true;
 
14547
}
 
14548
 
 
14549
//---------------------------------------------------------------------
 
14550
bool ColladaParserAutoGen15Private::_preEnd__float4x4()
 
14551
{
 
14552
#ifdef GENERATEDSAXPARSER_VALIDATION
 
14553
    if ( mValidate )
 
14554
    {
 
14555
 
 
14556
        bool validationResult = _validateEnd__float4x4();
 
14557
        if ( !validationResult ) return false;
 
14558
 
 
14559
    } // validation
 
14560
#endif
 
14561
 
 
14562
#ifdef GENERATEDSAXPARSER_VALIDATION
 
14563
    if ( mValidate )
 
14564
    {
 
14565
        bind_shape_matrix__ValidationData* validationData = (bind_shape_matrix__ValidationData*)mValidationDataStack.top();
 
14566
        DISABLE_WARNING_UNUSED(validationData)
 
14567
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__float4x4, &validate__float4x4_type__streamEnd, &validationData->validationWholeSize, 0 );
 
14568
        ParserError::ErrorType simpleTypeValidationResult = validate__float4x4_type(0, (*(&validationData->validationWholeSize)));
 
14569
        mValidationDataStack.deleteObject();
 
14570
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
14571
        {
 
14572
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
14573
                simpleTypeValidationResult,
 
14574
                HASH_ELEMENT_FLOAT4X4,
 
14575
                (ParserChar*)0, 0 ) )
 
14576
            {
 
14577
                return false;
 
14578
            }
 
14579
        }
 
14580
        return returnValue;
 
14581
    }
 
14582
    else
 
14583
    {
 
14584
return floatDataEnd( &ColladaParserAutoGen15::data__float4x4 );
 
14585
    }
 
14586
#else
 
14587
    {
 
14588
return floatDataEnd( &ColladaParserAutoGen15::data__float4x4 );
 
14589
    } // validation
 
14590
#endif
 
14591
 
 
14592
}
 
14593
 
 
14594
//---------------------------------------------------------------------
 
14595
bool ColladaParserAutoGen15Private::_freeAttributes__float4x4( void* attributeData )
 
14596
{
 
14597
    return true;
 
14598
}
 
14599
 
 
14600
//---------------------------------------------------------------------
 
14601
bool ColladaParserAutoGen15Private::_data__string( const ParserChar* text, size_t textLength )
 
14602
{
 
14603
 
 
14604
return mImpl->data__string(text, textLength);
 
14605
}
 
14606
 
 
14607
//---------------------------------------------------------------------
 
14608
bool ColladaParserAutoGen15Private::_preBegin__string( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
14609
{
 
14610
#ifdef GENERATEDSAXPARSER_VALIDATION
 
14611
    if ( mValidate )
 
14612
    {
 
14613
 
 
14614
        bool validationResult = _validateBegin__string( attributes, attributeDataPtr, validationDataPtr );
 
14615
        if ( !validationResult ) return false;
 
14616
 
 
14617
    } // validation
 
14618
#endif
 
14619
 
 
14620
    return true;
 
14621
}
 
14622
 
 
14623
//---------------------------------------------------------------------
 
14624
bool ColladaParserAutoGen15Private::_preEnd__string()
 
14625
{
 
14626
#ifdef GENERATEDSAXPARSER_VALIDATION
 
14627
    if ( mValidate )
 
14628
    {
 
14629
 
 
14630
        bool validationResult = _validateEnd__string();
 
14631
        if ( !validationResult ) return false;
 
14632
 
 
14633
    } // validation
 
14634
#endif
 
14635
 
 
14636
    return true;
 
14637
}
 
14638
 
 
14639
//---------------------------------------------------------------------
 
14640
bool ColladaParserAutoGen15Private::_freeAttributes__string( void* attributeData )
 
14641
{
 
14642
    return true;
 
14643
}
 
14644
 
 
14645
//---------------------------------------------------------------------
 
14646
const newparam____fx_newparam_type__AttributeData newparam____fx_newparam_type__AttributeData::DEFAULT = {0};
 
14647
 
 
14648
//---------------------------------------------------------------------
 
14649
bool ColladaParserAutoGen15Private::_data__newparam____fx_newparam_type( const ParserChar* text, size_t textLength )
 
14650
{
 
14651
    return true;
 
14652
}
 
14653
 
 
14654
//---------------------------------------------------------------------
 
14655
bool ColladaParserAutoGen15Private::_preBegin__newparam____fx_newparam_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
14656
{
 
14657
#ifdef GENERATEDSAXPARSER_VALIDATION
 
14658
    if ( mValidate )
 
14659
    {
 
14660
 
 
14661
        bool validationResult = _validateBegin__newparam____fx_newparam_type( attributes, attributeDataPtr, validationDataPtr );
 
14662
        if ( !validationResult ) return false;
 
14663
 
 
14664
    } // validation
 
14665
#endif
 
14666
 
 
14667
newparam____fx_newparam_type__AttributeData* attributeData = newData<newparam____fx_newparam_type__AttributeData>(attributeDataPtr);
 
14668
 
 
14669
const ParserChar** attributeArray = attributes.attributes;
 
14670
if ( attributeArray )
 
14671
{
 
14672
    while (true)
 
14673
    {
 
14674
        const ParserChar * attribute = *attributeArray;
 
14675
        if ( !attribute )
 
14676
            break;
 
14677
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
14678
        attributeArray++;
 
14679
        if ( !attributeArray )
 
14680
            return false;
 
14681
        const ParserChar* attributeValue = *attributeArray;
 
14682
        attributeArray++;
 
14683
 
 
14684
 
 
14685
    switch ( hash )
 
14686
    {
 
14687
    case HASH_ATTRIBUTE_SID:
 
14688
    {
 
14689
 
 
14690
attributeData->sid = attributeValue;
 
14691
#ifdef GENERATEDSAXPARSER_VALIDATION
 
14692
    if ( mValidate )
 
14693
    {
 
14694
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
14695
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
14696
    {
 
14697
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
14698
            simpleTypeValidationResult,
 
14699
            HASH_ELEMENT_NEWPARAM,
 
14700
            HASH_ATTRIBUTE_SID,
 
14701
            attributeValue) )
 
14702
        {
 
14703
            return false;
 
14704
        }
 
14705
    }
 
14706
    } // validation
 
14707
#endif
 
14708
 
 
14709
    break;
 
14710
    }
 
14711
    default:
 
14712
    {
 
14713
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_NEWPARAM, attribute, attributeValue))
 
14714
            {return false;}
 
14715
    }
 
14716
    }
 
14717
    }
 
14718
}
 
14719
if ( !attributeData->sid )
 
14720
{
 
14721
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_NEWPARAM, HASH_ATTRIBUTE_SID, 0 ) )
 
14722
        return false;
 
14723
}
 
14724
 
 
14725
 
 
14726
    return true;
 
14727
}
 
14728
 
 
14729
//---------------------------------------------------------------------
 
14730
bool ColladaParserAutoGen15Private::_preEnd__newparam____fx_newparam_type()
 
14731
{
 
14732
#ifdef GENERATEDSAXPARSER_VALIDATION
 
14733
    if ( mValidate )
 
14734
    {
 
14735
 
 
14736
        bool validationResult = _validateEnd__newparam____fx_newparam_type();
 
14737
        if ( !validationResult ) return false;
 
14738
 
 
14739
    } // validation
 
14740
#endif
 
14741
 
 
14742
    return true;
 
14743
}
 
14744
 
 
14745
//---------------------------------------------------------------------
 
14746
bool ColladaParserAutoGen15Private::_freeAttributes__newparam____fx_newparam_type( void* attributeData )
 
14747
{
 
14748
    newparam____fx_newparam_type__AttributeData* typedAttributeData = static_cast<newparam____fx_newparam_type__AttributeData*>(attributeData);
 
14749
 
 
14750
    typedAttributeData->~newparam____fx_newparam_type__AttributeData();
 
14751
 
 
14752
    return true;
 
14753
}
 
14754
 
 
14755
//---------------------------------------------------------------------
 
14756
bool ColladaParserAutoGen15Private::_data__semantic____NCName( const ParserChar* text, size_t textLength )
 
14757
{
 
14758
if (!mLastIncompleteFragmentInCharacterData)
 
14759
{
 
14760
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
14761
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
14762
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
14763
}
 
14764
else
 
14765
{
 
14766
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
14767
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
14768
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
14769
        mLastIncompleteFragmentInCharacterData = tmp;
 
14770
    }
 
14771
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
14772
    mEndOfDataInCurrentObjectOnStack += textLength;
 
14773
}
 
14774
return true;
 
14775
}
 
14776
 
 
14777
//---------------------------------------------------------------------
 
14778
bool ColladaParserAutoGen15Private::_preBegin__semantic____NCName( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
14779
{
 
14780
#ifdef GENERATEDSAXPARSER_VALIDATION
 
14781
    if ( mValidate )
 
14782
    {
 
14783
 
 
14784
        bool validationResult = _validateBegin__semantic____NCName( attributes, attributeDataPtr, validationDataPtr );
 
14785
        if ( !validationResult ) return false;
 
14786
 
 
14787
    } // validation
 
14788
#endif
 
14789
 
 
14790
    return true;
 
14791
}
 
14792
 
 
14793
//---------------------------------------------------------------------
 
14794
bool ColladaParserAutoGen15Private::_preEnd__semantic____NCName()
 
14795
{
 
14796
#ifdef GENERATEDSAXPARSER_VALIDATION
 
14797
    if ( mValidate )
 
14798
    {
 
14799
 
 
14800
        bool validationResult = _validateEnd__semantic____NCName();
 
14801
        if ( !validationResult ) return false;
 
14802
 
 
14803
    } // validation
 
14804
#endif
 
14805
 
 
14806
bool returnValue = true;
 
14807
#ifdef GENERATEDSAXPARSER_VALIDATION
 
14808
    if ( mValidate )
 
14809
    {
 
14810
ParserError::ErrorType simpleTypeValidationResult = validate__NCName(mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData);
 
14811
if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
14812
{
 
14813
    ParserChar msg[21];
 
14814
    Utils::fillErrorMsg(msg, mLastIncompleteFragmentInCharacterData, 20);
 
14815
    if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
14816
        simpleTypeValidationResult,
 
14817
        0,
 
14818
        msg) )
 
14819
    {
 
14820
        returnValue =  false;
 
14821
    }
 
14822
}
 
14823
if (!returnValue)
 
14824
{
 
14825
    mStackMemoryManager.deleteObject();
 
14826
    mLastIncompleteFragmentInCharacterData = 0;
 
14827
    mEndOfDataInCurrentObjectOnStack = 0;
 
14828
    return returnValue;
 
14829
}
 
14830
    } // validation
 
14831
#endif
 
14832
returnValue = mImpl->data__semantic____NCName(mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData);
 
14833
mStackMemoryManager.deleteObject();
 
14834
mLastIncompleteFragmentInCharacterData = 0;
 
14835
mEndOfDataInCurrentObjectOnStack = 0;
 
14836
return returnValue;
 
14837
 
 
14838
}
 
14839
 
 
14840
//---------------------------------------------------------------------
 
14841
bool ColladaParserAutoGen15Private::_freeAttributes__semantic____NCName( void* attributeData )
 
14842
{
 
14843
    return true;
 
14844
}
 
14845
 
 
14846
//---------------------------------------------------------------------
 
14847
bool ColladaParserAutoGen15Private::_data__modifier( const ParserChar* text, size_t textLength )
 
14848
{
 
14849
if (!mLastIncompleteFragmentInCharacterData)
 
14850
{
 
14851
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
14852
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
14853
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
14854
}
 
14855
else
 
14856
{
 
14857
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
14858
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
14859
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
14860
        mLastIncompleteFragmentInCharacterData = tmp;
 
14861
    }
 
14862
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
14863
    mEndOfDataInCurrentObjectOnStack += textLength;
 
14864
}
 
14865
return true;
 
14866
}
 
14867
 
 
14868
//---------------------------------------------------------------------
 
14869
bool ColladaParserAutoGen15Private::_preBegin__modifier( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
14870
{
 
14871
#ifdef GENERATEDSAXPARSER_VALIDATION
 
14872
    if ( mValidate )
 
14873
    {
 
14874
 
 
14875
        bool validationResult = _validateBegin__modifier( attributes, attributeDataPtr, validationDataPtr );
 
14876
        if ( !validationResult ) return false;
 
14877
 
 
14878
    } // validation
 
14879
#endif
 
14880
 
 
14881
    return true;
 
14882
}
 
14883
 
 
14884
//---------------------------------------------------------------------
 
14885
bool ColladaParserAutoGen15Private::_preEnd__modifier()
 
14886
{
 
14887
#ifdef GENERATEDSAXPARSER_VALIDATION
 
14888
    if ( mValidate )
 
14889
    {
 
14890
 
 
14891
        bool validationResult = _validateEnd__modifier();
 
14892
        if ( !validationResult ) return false;
 
14893
 
 
14894
    } // validation
 
14895
#endif
 
14896
 
 
14897
bool failed;
 
14898
ENUM__fx_modifier_enum parameter = Utils::toEnum<ENUM__fx_modifier_enum, StringHash, ENUM__fx_modifier_enum__COUNT>((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed, ENUM__fx_modifier_enumMap, Utils::calculateStringHash);
 
14899
bool returnValue;
 
14900
if (!failed)
 
14901
{
 
14902
    returnValue = mImpl->data__modifier(parameter);
 
14903
}
 
14904
else
 
14905
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_MODIFIER, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
14906
if (mLastIncompleteFragmentInCharacterData)
 
14907
    mStackMemoryManager.deleteObject();
 
14908
mLastIncompleteFragmentInCharacterData = 0;
 
14909
mEndOfDataInCurrentObjectOnStack = 0;
 
14910
return returnValue;
 
14911
 
 
14912
}
 
14913
 
 
14914
//---------------------------------------------------------------------
 
14915
bool ColladaParserAutoGen15Private::_freeAttributes__modifier( void* attributeData )
 
14916
{
 
14917
    return true;
 
14918
}
 
14919
 
 
14920
//---------------------------------------------------------------------
 
14921
ENUM__fx_modifier_enum ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__fx_modifier_enum (
 
14922
    const ParserChar* prefixedBuffer,
 
14923
    const ParserChar* prefixedBufferEnd,
 
14924
    const ParserChar** buffer,
 
14925
    const ParserChar* bufferEnd,
 
14926
    bool& failed,
 
14927
    const std::pair<StringHash, ENUM__fx_modifier_enum>* enumMap,
 
14928
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
14929
)
 
14930
{
 
14931
    return toEnumDataPrefix<ENUM__fx_modifier_enum, StringHash, ENUM__fx_modifier_enum__COUNT, &toEnum_ENUM__fx_modifier_enum>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
14932
}
 
14933
 
 
14934
//---------------------------------------------------------------------
 
14935
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__fx_modifier_enum (
 
14936
    const ParserChar* text,
 
14937
    size_t textLength,
 
14938
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__fx_modifier_enum*, size_t ),
 
14939
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
14940
)
 
14941
{
 
14942
    return characterData2EnumData<ENUM__fx_modifier_enum, StringHash, ENUM__fx_modifier_enum__COUNT>(text, textLength, dataFunction, ENUM__fx_modifier_enumMap, baseConversionFunc, &toEnum_ENUM__fx_modifier_enum, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__fx_modifier_enum);
 
14943
}
 
14944
 
 
14945
//---------------------------------------------------------------------
 
14946
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__fx_modifier_enum (
 
14947
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__fx_modifier_enum*, size_t ),
 
14948
    const std::pair<StringHash, ENUM__fx_modifier_enum>* enumMap,
 
14949
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
14950
    ENUM__fx_modifier_enum (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__fx_modifier_enum>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
14951
)
 
14952
{
 
14953
    return dataEnumEnd<ENUM__fx_modifier_enum, StringHash, ENUM__fx_modifier_enum__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
14954
}
 
14955
 
 
14956
//---------------------------------------------------------------------
 
14957
bool ColladaParserAutoGen15Private::_data__float2x1( const ParserChar* text, size_t textLength )
 
14958
{
 
14959
#ifdef GENERATEDSAXPARSER_VALIDATION
 
14960
    if ( mValidate )
 
14961
    {
 
14962
        radius____float2_type__ValidationData* validationData = (radius____float2_type__ValidationData*)mValidationDataStack.top();
 
14963
        DISABLE_WARNING_UNUSED(validationData)
 
14964
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float2x1, &validate__float2_type__stream, &validationData->validationWholeSize, 0);
 
14965
    }
 
14966
    else
 
14967
    {
 
14968
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float2x1);
 
14969
    }
 
14970
#else
 
14971
    {
 
14972
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float2x1);
 
14973
    } // validation
 
14974
#endif
 
14975
 
 
14976
}
 
14977
 
 
14978
//---------------------------------------------------------------------
 
14979
bool ColladaParserAutoGen15Private::_preBegin__float2x1( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
14980
{
 
14981
#ifdef GENERATEDSAXPARSER_VALIDATION
 
14982
    if ( mValidate )
 
14983
    {
 
14984
 
 
14985
        bool validationResult = _validateBegin__float2x1( attributes, attributeDataPtr, validationDataPtr );
 
14986
        if ( !validationResult ) return false;
 
14987
 
 
14988
    } // validation
 
14989
#endif
 
14990
 
 
14991
    return true;
 
14992
}
 
14993
 
 
14994
//---------------------------------------------------------------------
 
14995
bool ColladaParserAutoGen15Private::_preEnd__float2x1()
 
14996
{
 
14997
#ifdef GENERATEDSAXPARSER_VALIDATION
 
14998
    if ( mValidate )
 
14999
    {
 
15000
 
 
15001
        bool validationResult = _validateEnd__float2x1();
 
15002
        if ( !validationResult ) return false;
 
15003
 
 
15004
    } // validation
 
15005
#endif
 
15006
 
 
15007
#ifdef GENERATEDSAXPARSER_VALIDATION
 
15008
    if ( mValidate )
 
15009
    {
 
15010
        radius____float2_type__ValidationData* validationData = (radius____float2_type__ValidationData*)mValidationDataStack.top();
 
15011
        DISABLE_WARNING_UNUSED(validationData)
 
15012
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__float2x1, &validate__float2_type__streamEnd, &validationData->validationWholeSize, 0 );
 
15013
        ParserError::ErrorType simpleTypeValidationResult = validate__float2_type(0, (*(&validationData->validationWholeSize)));
 
15014
        mValidationDataStack.deleteObject();
 
15015
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
15016
        {
 
15017
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
15018
                simpleTypeValidationResult,
 
15019
                HASH_ELEMENT_FLOAT2X1,
 
15020
                (ParserChar*)0, 0 ) )
 
15021
            {
 
15022
                return false;
 
15023
            }
 
15024
        }
 
15025
        return returnValue;
 
15026
    }
 
15027
    else
 
15028
    {
 
15029
return floatDataEnd( &ColladaParserAutoGen15::data__float2x1 );
 
15030
    }
 
15031
#else
 
15032
    {
 
15033
return floatDataEnd( &ColladaParserAutoGen15::data__float2x1 );
 
15034
    } // validation
 
15035
#endif
 
15036
 
 
15037
}
 
15038
 
 
15039
//---------------------------------------------------------------------
 
15040
bool ColladaParserAutoGen15Private::_freeAttributes__float2x1( void* attributeData )
 
15041
{
 
15042
    return true;
 
15043
}
 
15044
 
 
15045
//---------------------------------------------------------------------
 
15046
bool ColladaParserAutoGen15Private::_data__float2x3( const ParserChar* text, size_t textLength )
 
15047
{
 
15048
#ifdef GENERATEDSAXPARSER_VALIDATION
 
15049
    if ( mValidate )
 
15050
    {
 
15051
        float2x3__ValidationData* validationData = (float2x3__ValidationData*)mValidationDataStack.top();
 
15052
        DISABLE_WARNING_UNUSED(validationData)
 
15053
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float2x3, &validate__float2x3_type__stream, &validationData->validationWholeSize, 0);
 
15054
    }
 
15055
    else
 
15056
    {
 
15057
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float2x3);
 
15058
    }
 
15059
#else
 
15060
    {
 
15061
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float2x3);
 
15062
    } // validation
 
15063
#endif
 
15064
 
 
15065
}
 
15066
 
 
15067
//---------------------------------------------------------------------
 
15068
bool ColladaParserAutoGen15Private::_preBegin__float2x3( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
15069
{
 
15070
#ifdef GENERATEDSAXPARSER_VALIDATION
 
15071
    if ( mValidate )
 
15072
    {
 
15073
 
 
15074
        bool validationResult = _validateBegin__float2x3( attributes, attributeDataPtr, validationDataPtr );
 
15075
        if ( !validationResult ) return false;
 
15076
 
 
15077
    } // validation
 
15078
#endif
 
15079
 
 
15080
    return true;
 
15081
}
 
15082
 
 
15083
//---------------------------------------------------------------------
 
15084
bool ColladaParserAutoGen15Private::_preEnd__float2x3()
 
15085
{
 
15086
#ifdef GENERATEDSAXPARSER_VALIDATION
 
15087
    if ( mValidate )
 
15088
    {
 
15089
 
 
15090
        bool validationResult = _validateEnd__float2x3();
 
15091
        if ( !validationResult ) return false;
 
15092
 
 
15093
    } // validation
 
15094
#endif
 
15095
 
 
15096
#ifdef GENERATEDSAXPARSER_VALIDATION
 
15097
    if ( mValidate )
 
15098
    {
 
15099
        float2x3__ValidationData* validationData = (float2x3__ValidationData*)mValidationDataStack.top();
 
15100
        DISABLE_WARNING_UNUSED(validationData)
 
15101
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__float2x3, &validate__float2x3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
15102
        ParserError::ErrorType simpleTypeValidationResult = validate__float2x3_type(0, (*(&validationData->validationWholeSize)));
 
15103
        mValidationDataStack.deleteObject();
 
15104
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
15105
        {
 
15106
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
15107
                simpleTypeValidationResult,
 
15108
                HASH_ELEMENT_FLOAT2X3,
 
15109
                (ParserChar*)0, 0 ) )
 
15110
            {
 
15111
                return false;
 
15112
            }
 
15113
        }
 
15114
        return returnValue;
 
15115
    }
 
15116
    else
 
15117
    {
 
15118
return floatDataEnd( &ColladaParserAutoGen15::data__float2x3 );
 
15119
    }
 
15120
#else
 
15121
    {
 
15122
return floatDataEnd( &ColladaParserAutoGen15::data__float2x3 );
 
15123
    } // validation
 
15124
#endif
 
15125
 
 
15126
}
 
15127
 
 
15128
//---------------------------------------------------------------------
 
15129
bool ColladaParserAutoGen15Private::_freeAttributes__float2x3( void* attributeData )
 
15130
{
 
15131
    return true;
 
15132
}
 
15133
 
 
15134
//---------------------------------------------------------------------
 
15135
bool ColladaParserAutoGen15Private::_data__float2x4( const ParserChar* text, size_t textLength )
 
15136
{
 
15137
#ifdef GENERATEDSAXPARSER_VALIDATION
 
15138
    if ( mValidate )
 
15139
    {
 
15140
        float2x4__ValidationData* validationData = (float2x4__ValidationData*)mValidationDataStack.top();
 
15141
        DISABLE_WARNING_UNUSED(validationData)
 
15142
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float2x4, &validate__float2x4_type__stream, &validationData->validationWholeSize, 0);
 
15143
    }
 
15144
    else
 
15145
    {
 
15146
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float2x4);
 
15147
    }
 
15148
#else
 
15149
    {
 
15150
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float2x4);
 
15151
    } // validation
 
15152
#endif
 
15153
 
 
15154
}
 
15155
 
 
15156
//---------------------------------------------------------------------
 
15157
bool ColladaParserAutoGen15Private::_preBegin__float2x4( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
15158
{
 
15159
#ifdef GENERATEDSAXPARSER_VALIDATION
 
15160
    if ( mValidate )
 
15161
    {
 
15162
 
 
15163
        bool validationResult = _validateBegin__float2x4( attributes, attributeDataPtr, validationDataPtr );
 
15164
        if ( !validationResult ) return false;
 
15165
 
 
15166
    } // validation
 
15167
#endif
 
15168
 
 
15169
    return true;
 
15170
}
 
15171
 
 
15172
//---------------------------------------------------------------------
 
15173
bool ColladaParserAutoGen15Private::_preEnd__float2x4()
 
15174
{
 
15175
#ifdef GENERATEDSAXPARSER_VALIDATION
 
15176
    if ( mValidate )
 
15177
    {
 
15178
 
 
15179
        bool validationResult = _validateEnd__float2x4();
 
15180
        if ( !validationResult ) return false;
 
15181
 
 
15182
    } // validation
 
15183
#endif
 
15184
 
 
15185
#ifdef GENERATEDSAXPARSER_VALIDATION
 
15186
    if ( mValidate )
 
15187
    {
 
15188
        float2x4__ValidationData* validationData = (float2x4__ValidationData*)mValidationDataStack.top();
 
15189
        DISABLE_WARNING_UNUSED(validationData)
 
15190
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__float2x4, &validate__float2x4_type__streamEnd, &validationData->validationWholeSize, 0 );
 
15191
        ParserError::ErrorType simpleTypeValidationResult = validate__float2x4_type(0, (*(&validationData->validationWholeSize)));
 
15192
        mValidationDataStack.deleteObject();
 
15193
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
15194
        {
 
15195
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
15196
                simpleTypeValidationResult,
 
15197
                HASH_ELEMENT_FLOAT2X4,
 
15198
                (ParserChar*)0, 0 ) )
 
15199
            {
 
15200
                return false;
 
15201
            }
 
15202
        }
 
15203
        return returnValue;
 
15204
    }
 
15205
    else
 
15206
    {
 
15207
return floatDataEnd( &ColladaParserAutoGen15::data__float2x4 );
 
15208
    }
 
15209
#else
 
15210
    {
 
15211
return floatDataEnd( &ColladaParserAutoGen15::data__float2x4 );
 
15212
    } // validation
 
15213
#endif
 
15214
 
 
15215
}
 
15216
 
 
15217
//---------------------------------------------------------------------
 
15218
bool ColladaParserAutoGen15Private::_freeAttributes__float2x4( void* attributeData )
 
15219
{
 
15220
    return true;
 
15221
}
 
15222
 
 
15223
//---------------------------------------------------------------------
 
15224
bool ColladaParserAutoGen15Private::_data__float3x1( const ParserChar* text, size_t textLength )
 
15225
{
 
15226
#ifdef GENERATEDSAXPARSER_VALIDATION
 
15227
    if ( mValidate )
 
15228
    {
 
15229
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
15230
        DISABLE_WARNING_UNUSED(validationData)
 
15231
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float3x1, &validate__float3_type__stream, &validationData->validationWholeSize, 0);
 
15232
    }
 
15233
    else
 
15234
    {
 
15235
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float3x1);
 
15236
    }
 
15237
#else
 
15238
    {
 
15239
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float3x1);
 
15240
    } // validation
 
15241
#endif
 
15242
 
 
15243
}
 
15244
 
 
15245
//---------------------------------------------------------------------
 
15246
bool ColladaParserAutoGen15Private::_preBegin__float3x1( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
15247
{
 
15248
#ifdef GENERATEDSAXPARSER_VALIDATION
 
15249
    if ( mValidate )
 
15250
    {
 
15251
 
 
15252
        bool validationResult = _validateBegin__float3x1( attributes, attributeDataPtr, validationDataPtr );
 
15253
        if ( !validationResult ) return false;
 
15254
 
 
15255
    } // validation
 
15256
#endif
 
15257
 
 
15258
    return true;
 
15259
}
 
15260
 
 
15261
//---------------------------------------------------------------------
 
15262
bool ColladaParserAutoGen15Private::_preEnd__float3x1()
 
15263
{
 
15264
#ifdef GENERATEDSAXPARSER_VALIDATION
 
15265
    if ( mValidate )
 
15266
    {
 
15267
 
 
15268
        bool validationResult = _validateEnd__float3x1();
 
15269
        if ( !validationResult ) return false;
 
15270
 
 
15271
    } // validation
 
15272
#endif
 
15273
 
 
15274
#ifdef GENERATEDSAXPARSER_VALIDATION
 
15275
    if ( mValidate )
 
15276
    {
 
15277
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
15278
        DISABLE_WARNING_UNUSED(validationData)
 
15279
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__float3x1, &validate__float3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
15280
        ParserError::ErrorType simpleTypeValidationResult = validate__float3_type(0, (*(&validationData->validationWholeSize)));
 
15281
        mValidationDataStack.deleteObject();
 
15282
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
15283
        {
 
15284
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
15285
                simpleTypeValidationResult,
 
15286
                HASH_ELEMENT_FLOAT3X1,
 
15287
                (ParserChar*)0, 0 ) )
 
15288
            {
 
15289
                return false;
 
15290
            }
 
15291
        }
 
15292
        return returnValue;
 
15293
    }
 
15294
    else
 
15295
    {
 
15296
return floatDataEnd( &ColladaParserAutoGen15::data__float3x1 );
 
15297
    }
 
15298
#else
 
15299
    {
 
15300
return floatDataEnd( &ColladaParserAutoGen15::data__float3x1 );
 
15301
    } // validation
 
15302
#endif
 
15303
 
 
15304
}
 
15305
 
 
15306
//---------------------------------------------------------------------
 
15307
bool ColladaParserAutoGen15Private::_freeAttributes__float3x1( void* attributeData )
 
15308
{
 
15309
    return true;
 
15310
}
 
15311
 
 
15312
//---------------------------------------------------------------------
 
15313
bool ColladaParserAutoGen15Private::_data__float3x2( const ParserChar* text, size_t textLength )
 
15314
{
 
15315
#ifdef GENERATEDSAXPARSER_VALIDATION
 
15316
    if ( mValidate )
 
15317
    {
 
15318
        float3x2__ValidationData* validationData = (float3x2__ValidationData*)mValidationDataStack.top();
 
15319
        DISABLE_WARNING_UNUSED(validationData)
 
15320
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float3x2, &validate__float3x2_type__stream, &validationData->validationWholeSize, 0);
 
15321
    }
 
15322
    else
 
15323
    {
 
15324
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float3x2);
 
15325
    }
 
15326
#else
 
15327
    {
 
15328
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float3x2);
 
15329
    } // validation
 
15330
#endif
 
15331
 
 
15332
}
 
15333
 
 
15334
//---------------------------------------------------------------------
 
15335
bool ColladaParserAutoGen15Private::_preBegin__float3x2( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
15336
{
 
15337
#ifdef GENERATEDSAXPARSER_VALIDATION
 
15338
    if ( mValidate )
 
15339
    {
 
15340
 
 
15341
        bool validationResult = _validateBegin__float3x2( attributes, attributeDataPtr, validationDataPtr );
 
15342
        if ( !validationResult ) return false;
 
15343
 
 
15344
    } // validation
 
15345
#endif
 
15346
 
 
15347
    return true;
 
15348
}
 
15349
 
 
15350
//---------------------------------------------------------------------
 
15351
bool ColladaParserAutoGen15Private::_preEnd__float3x2()
 
15352
{
 
15353
#ifdef GENERATEDSAXPARSER_VALIDATION
 
15354
    if ( mValidate )
 
15355
    {
 
15356
 
 
15357
        bool validationResult = _validateEnd__float3x2();
 
15358
        if ( !validationResult ) return false;
 
15359
 
 
15360
    } // validation
 
15361
#endif
 
15362
 
 
15363
#ifdef GENERATEDSAXPARSER_VALIDATION
 
15364
    if ( mValidate )
 
15365
    {
 
15366
        float3x2__ValidationData* validationData = (float3x2__ValidationData*)mValidationDataStack.top();
 
15367
        DISABLE_WARNING_UNUSED(validationData)
 
15368
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__float3x2, &validate__float3x2_type__streamEnd, &validationData->validationWholeSize, 0 );
 
15369
        ParserError::ErrorType simpleTypeValidationResult = validate__float3x2_type(0, (*(&validationData->validationWholeSize)));
 
15370
        mValidationDataStack.deleteObject();
 
15371
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
15372
        {
 
15373
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
15374
                simpleTypeValidationResult,
 
15375
                HASH_ELEMENT_FLOAT3X2,
 
15376
                (ParserChar*)0, 0 ) )
 
15377
            {
 
15378
                return false;
 
15379
            }
 
15380
        }
 
15381
        return returnValue;
 
15382
    }
 
15383
    else
 
15384
    {
 
15385
return floatDataEnd( &ColladaParserAutoGen15::data__float3x2 );
 
15386
    }
 
15387
#else
 
15388
    {
 
15389
return floatDataEnd( &ColladaParserAutoGen15::data__float3x2 );
 
15390
    } // validation
 
15391
#endif
 
15392
 
 
15393
}
 
15394
 
 
15395
//---------------------------------------------------------------------
 
15396
bool ColladaParserAutoGen15Private::_freeAttributes__float3x2( void* attributeData )
 
15397
{
 
15398
    return true;
 
15399
}
 
15400
 
 
15401
//---------------------------------------------------------------------
 
15402
bool ColladaParserAutoGen15Private::_data__float3x4( const ParserChar* text, size_t textLength )
 
15403
{
 
15404
#ifdef GENERATEDSAXPARSER_VALIDATION
 
15405
    if ( mValidate )
 
15406
    {
 
15407
        float3x4__ValidationData* validationData = (float3x4__ValidationData*)mValidationDataStack.top();
 
15408
        DISABLE_WARNING_UNUSED(validationData)
 
15409
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float3x4, &validate__float3x4_type__stream, &validationData->validationWholeSize, 0);
 
15410
    }
 
15411
    else
 
15412
    {
 
15413
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float3x4);
 
15414
    }
 
15415
#else
 
15416
    {
 
15417
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float3x4);
 
15418
    } // validation
 
15419
#endif
 
15420
 
 
15421
}
 
15422
 
 
15423
//---------------------------------------------------------------------
 
15424
bool ColladaParserAutoGen15Private::_preBegin__float3x4( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
15425
{
 
15426
#ifdef GENERATEDSAXPARSER_VALIDATION
 
15427
    if ( mValidate )
 
15428
    {
 
15429
 
 
15430
        bool validationResult = _validateBegin__float3x4( attributes, attributeDataPtr, validationDataPtr );
 
15431
        if ( !validationResult ) return false;
 
15432
 
 
15433
    } // validation
 
15434
#endif
 
15435
 
 
15436
    return true;
 
15437
}
 
15438
 
 
15439
//---------------------------------------------------------------------
 
15440
bool ColladaParserAutoGen15Private::_preEnd__float3x4()
 
15441
{
 
15442
#ifdef GENERATEDSAXPARSER_VALIDATION
 
15443
    if ( mValidate )
 
15444
    {
 
15445
 
 
15446
        bool validationResult = _validateEnd__float3x4();
 
15447
        if ( !validationResult ) return false;
 
15448
 
 
15449
    } // validation
 
15450
#endif
 
15451
 
 
15452
#ifdef GENERATEDSAXPARSER_VALIDATION
 
15453
    if ( mValidate )
 
15454
    {
 
15455
        float3x4__ValidationData* validationData = (float3x4__ValidationData*)mValidationDataStack.top();
 
15456
        DISABLE_WARNING_UNUSED(validationData)
 
15457
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__float3x4, &validate__float3x4_type__streamEnd, &validationData->validationWholeSize, 0 );
 
15458
        ParserError::ErrorType simpleTypeValidationResult = validate__float3x4_type(0, (*(&validationData->validationWholeSize)));
 
15459
        mValidationDataStack.deleteObject();
 
15460
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
15461
        {
 
15462
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
15463
                simpleTypeValidationResult,
 
15464
                HASH_ELEMENT_FLOAT3X4,
 
15465
                (ParserChar*)0, 0 ) )
 
15466
            {
 
15467
                return false;
 
15468
            }
 
15469
        }
 
15470
        return returnValue;
 
15471
    }
 
15472
    else
 
15473
    {
 
15474
return floatDataEnd( &ColladaParserAutoGen15::data__float3x4 );
 
15475
    }
 
15476
#else
 
15477
    {
 
15478
return floatDataEnd( &ColladaParserAutoGen15::data__float3x4 );
 
15479
    } // validation
 
15480
#endif
 
15481
 
 
15482
}
 
15483
 
 
15484
//---------------------------------------------------------------------
 
15485
bool ColladaParserAutoGen15Private::_freeAttributes__float3x4( void* attributeData )
 
15486
{
 
15487
    return true;
 
15488
}
 
15489
 
 
15490
//---------------------------------------------------------------------
 
15491
bool ColladaParserAutoGen15Private::_data__float4x1( const ParserChar* text, size_t textLength )
 
15492
{
 
15493
#ifdef GENERATEDSAXPARSER_VALIDATION
 
15494
    if ( mValidate )
 
15495
    {
 
15496
        orient__ValidationData* validationData = (orient__ValidationData*)mValidationDataStack.top();
 
15497
        DISABLE_WARNING_UNUSED(validationData)
 
15498
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float4x1, &validate__float4_type__stream, &validationData->validationWholeSize, 0);
 
15499
    }
 
15500
    else
 
15501
    {
 
15502
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float4x1);
 
15503
    }
 
15504
#else
 
15505
    {
 
15506
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float4x1);
 
15507
    } // validation
 
15508
#endif
 
15509
 
 
15510
}
 
15511
 
 
15512
//---------------------------------------------------------------------
 
15513
bool ColladaParserAutoGen15Private::_preBegin__float4x1( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
15514
{
 
15515
#ifdef GENERATEDSAXPARSER_VALIDATION
 
15516
    if ( mValidate )
 
15517
    {
 
15518
 
 
15519
        bool validationResult = _validateBegin__float4x1( attributes, attributeDataPtr, validationDataPtr );
 
15520
        if ( !validationResult ) return false;
 
15521
 
 
15522
    } // validation
 
15523
#endif
 
15524
 
 
15525
    return true;
 
15526
}
 
15527
 
 
15528
//---------------------------------------------------------------------
 
15529
bool ColladaParserAutoGen15Private::_preEnd__float4x1()
 
15530
{
 
15531
#ifdef GENERATEDSAXPARSER_VALIDATION
 
15532
    if ( mValidate )
 
15533
    {
 
15534
 
 
15535
        bool validationResult = _validateEnd__float4x1();
 
15536
        if ( !validationResult ) return false;
 
15537
 
 
15538
    } // validation
 
15539
#endif
 
15540
 
 
15541
#ifdef GENERATEDSAXPARSER_VALIDATION
 
15542
    if ( mValidate )
 
15543
    {
 
15544
        orient__ValidationData* validationData = (orient__ValidationData*)mValidationDataStack.top();
 
15545
        DISABLE_WARNING_UNUSED(validationData)
 
15546
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__float4x1, &validate__float4_type__streamEnd, &validationData->validationWholeSize, 0 );
 
15547
        ParserError::ErrorType simpleTypeValidationResult = validate__float4_type(0, (*(&validationData->validationWholeSize)));
 
15548
        mValidationDataStack.deleteObject();
 
15549
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
15550
        {
 
15551
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
15552
                simpleTypeValidationResult,
 
15553
                HASH_ELEMENT_FLOAT4X1,
 
15554
                (ParserChar*)0, 0 ) )
 
15555
            {
 
15556
                return false;
 
15557
            }
 
15558
        }
 
15559
        return returnValue;
 
15560
    }
 
15561
    else
 
15562
    {
 
15563
return floatDataEnd( &ColladaParserAutoGen15::data__float4x1 );
 
15564
    }
 
15565
#else
 
15566
    {
 
15567
return floatDataEnd( &ColladaParserAutoGen15::data__float4x1 );
 
15568
    } // validation
 
15569
#endif
 
15570
 
 
15571
}
 
15572
 
 
15573
//---------------------------------------------------------------------
 
15574
bool ColladaParserAutoGen15Private::_freeAttributes__float4x1( void* attributeData )
 
15575
{
 
15576
    return true;
 
15577
}
 
15578
 
 
15579
//---------------------------------------------------------------------
 
15580
bool ColladaParserAutoGen15Private::_data__float4x2( const ParserChar* text, size_t textLength )
 
15581
{
 
15582
#ifdef GENERATEDSAXPARSER_VALIDATION
 
15583
    if ( mValidate )
 
15584
    {
 
15585
        float4x2__ValidationData* validationData = (float4x2__ValidationData*)mValidationDataStack.top();
 
15586
        DISABLE_WARNING_UNUSED(validationData)
 
15587
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float4x2, &validate__float4x2_type__stream, &validationData->validationWholeSize, 0);
 
15588
    }
 
15589
    else
 
15590
    {
 
15591
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float4x2);
 
15592
    }
 
15593
#else
 
15594
    {
 
15595
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float4x2);
 
15596
    } // validation
 
15597
#endif
 
15598
 
 
15599
}
 
15600
 
 
15601
//---------------------------------------------------------------------
 
15602
bool ColladaParserAutoGen15Private::_preBegin__float4x2( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
15603
{
 
15604
#ifdef GENERATEDSAXPARSER_VALIDATION
 
15605
    if ( mValidate )
 
15606
    {
 
15607
 
 
15608
        bool validationResult = _validateBegin__float4x2( attributes, attributeDataPtr, validationDataPtr );
 
15609
        if ( !validationResult ) return false;
 
15610
 
 
15611
    } // validation
 
15612
#endif
 
15613
 
 
15614
    return true;
 
15615
}
 
15616
 
 
15617
//---------------------------------------------------------------------
 
15618
bool ColladaParserAutoGen15Private::_preEnd__float4x2()
 
15619
{
 
15620
#ifdef GENERATEDSAXPARSER_VALIDATION
 
15621
    if ( mValidate )
 
15622
    {
 
15623
 
 
15624
        bool validationResult = _validateEnd__float4x2();
 
15625
        if ( !validationResult ) return false;
 
15626
 
 
15627
    } // validation
 
15628
#endif
 
15629
 
 
15630
#ifdef GENERATEDSAXPARSER_VALIDATION
 
15631
    if ( mValidate )
 
15632
    {
 
15633
        float4x2__ValidationData* validationData = (float4x2__ValidationData*)mValidationDataStack.top();
 
15634
        DISABLE_WARNING_UNUSED(validationData)
 
15635
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__float4x2, &validate__float4x2_type__streamEnd, &validationData->validationWholeSize, 0 );
 
15636
        ParserError::ErrorType simpleTypeValidationResult = validate__float4x2_type(0, (*(&validationData->validationWholeSize)));
 
15637
        mValidationDataStack.deleteObject();
 
15638
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
15639
        {
 
15640
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
15641
                simpleTypeValidationResult,
 
15642
                HASH_ELEMENT_FLOAT4X2,
 
15643
                (ParserChar*)0, 0 ) )
 
15644
            {
 
15645
                return false;
 
15646
            }
 
15647
        }
 
15648
        return returnValue;
 
15649
    }
 
15650
    else
 
15651
    {
 
15652
return floatDataEnd( &ColladaParserAutoGen15::data__float4x2 );
 
15653
    }
 
15654
#else
 
15655
    {
 
15656
return floatDataEnd( &ColladaParserAutoGen15::data__float4x2 );
 
15657
    } // validation
 
15658
#endif
 
15659
 
 
15660
}
 
15661
 
 
15662
//---------------------------------------------------------------------
 
15663
bool ColladaParserAutoGen15Private::_freeAttributes__float4x2( void* attributeData )
 
15664
{
 
15665
    return true;
 
15666
}
 
15667
 
 
15668
//---------------------------------------------------------------------
 
15669
bool ColladaParserAutoGen15Private::_data__float4x3( const ParserChar* text, size_t textLength )
 
15670
{
 
15671
#ifdef GENERATEDSAXPARSER_VALIDATION
 
15672
    if ( mValidate )
 
15673
    {
 
15674
        float4x3__ValidationData* validationData = (float4x3__ValidationData*)mValidationDataStack.top();
 
15675
        DISABLE_WARNING_UNUSED(validationData)
 
15676
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float4x3, &validate__float4x3_type__stream, &validationData->validationWholeSize, 0);
 
15677
    }
 
15678
    else
 
15679
    {
 
15680
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float4x3);
 
15681
    }
 
15682
#else
 
15683
    {
 
15684
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float4x3);
 
15685
    } // validation
 
15686
#endif
 
15687
 
 
15688
}
 
15689
 
 
15690
//---------------------------------------------------------------------
 
15691
bool ColladaParserAutoGen15Private::_preBegin__float4x3( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
15692
{
 
15693
#ifdef GENERATEDSAXPARSER_VALIDATION
 
15694
    if ( mValidate )
 
15695
    {
 
15696
 
 
15697
        bool validationResult = _validateBegin__float4x3( attributes, attributeDataPtr, validationDataPtr );
 
15698
        if ( !validationResult ) return false;
 
15699
 
 
15700
    } // validation
 
15701
#endif
 
15702
 
 
15703
    return true;
 
15704
}
 
15705
 
 
15706
//---------------------------------------------------------------------
 
15707
bool ColladaParserAutoGen15Private::_preEnd__float4x3()
 
15708
{
 
15709
#ifdef GENERATEDSAXPARSER_VALIDATION
 
15710
    if ( mValidate )
 
15711
    {
 
15712
 
 
15713
        bool validationResult = _validateEnd__float4x3();
 
15714
        if ( !validationResult ) return false;
 
15715
 
 
15716
    } // validation
 
15717
#endif
 
15718
 
 
15719
#ifdef GENERATEDSAXPARSER_VALIDATION
 
15720
    if ( mValidate )
 
15721
    {
 
15722
        float4x3__ValidationData* validationData = (float4x3__ValidationData*)mValidationDataStack.top();
 
15723
        DISABLE_WARNING_UNUSED(validationData)
 
15724
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__float4x3, &validate__float4x3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
15725
        ParserError::ErrorType simpleTypeValidationResult = validate__float4x3_type(0, (*(&validationData->validationWholeSize)));
 
15726
        mValidationDataStack.deleteObject();
 
15727
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
15728
        {
 
15729
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
15730
                simpleTypeValidationResult,
 
15731
                HASH_ELEMENT_FLOAT4X3,
 
15732
                (ParserChar*)0, 0 ) )
 
15733
            {
 
15734
                return false;
 
15735
            }
 
15736
        }
 
15737
        return returnValue;
 
15738
    }
 
15739
    else
 
15740
    {
 
15741
return floatDataEnd( &ColladaParserAutoGen15::data__float4x3 );
 
15742
    }
 
15743
#else
 
15744
    {
 
15745
return floatDataEnd( &ColladaParserAutoGen15::data__float4x3 );
 
15746
    } // validation
 
15747
#endif
 
15748
 
 
15749
}
 
15750
 
 
15751
//---------------------------------------------------------------------
 
15752
bool ColladaParserAutoGen15Private::_freeAttributes__float4x3( void* attributeData )
 
15753
{
 
15754
    return true;
 
15755
}
 
15756
 
 
15757
//---------------------------------------------------------------------
 
15758
bool ColladaParserAutoGen15Private::_data__sampler1D( const ParserChar* text, size_t textLength )
 
15759
{
 
15760
    return true;
 
15761
}
 
15762
 
 
15763
//---------------------------------------------------------------------
 
15764
bool ColladaParserAutoGen15Private::_preBegin__sampler1D( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
15765
{
 
15766
#ifdef GENERATEDSAXPARSER_VALIDATION
 
15767
    if ( mValidate )
 
15768
    {
 
15769
 
 
15770
        bool validationResult = _validateBegin__sampler1D( attributes, attributeDataPtr, validationDataPtr );
 
15771
        if ( !validationResult ) return false;
 
15772
 
 
15773
    } // validation
 
15774
#endif
 
15775
 
 
15776
    return true;
 
15777
}
 
15778
 
 
15779
//---------------------------------------------------------------------
 
15780
bool ColladaParserAutoGen15Private::_preEnd__sampler1D()
 
15781
{
 
15782
#ifdef GENERATEDSAXPARSER_VALIDATION
 
15783
    if ( mValidate )
 
15784
    {
 
15785
 
 
15786
        bool validationResult = _validateEnd__sampler1D();
 
15787
        if ( !validationResult ) return false;
 
15788
 
 
15789
    } // validation
 
15790
#endif
 
15791
 
 
15792
    return true;
 
15793
}
 
15794
 
 
15795
//---------------------------------------------------------------------
 
15796
bool ColladaParserAutoGen15Private::_freeAttributes__sampler1D( void* attributeData )
 
15797
{
 
15798
    return true;
 
15799
}
 
15800
 
 
15801
//---------------------------------------------------------------------
 
15802
const instance_image__AttributeData instance_image__AttributeData::DEFAULT = {0, 0, 0, 0};
 
15803
 
 
15804
//---------------------------------------------------------------------
 
15805
bool ColladaParserAutoGen15Private::_data__instance_image( const ParserChar* text, size_t textLength )
 
15806
{
 
15807
    return true;
 
15808
}
 
15809
 
 
15810
//---------------------------------------------------------------------
 
15811
bool ColladaParserAutoGen15Private::_preBegin__instance_image( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
15812
{
 
15813
#ifdef GENERATEDSAXPARSER_VALIDATION
 
15814
    if ( mValidate )
 
15815
    {
 
15816
 
 
15817
        bool validationResult = _validateBegin__instance_image( attributes, attributeDataPtr, validationDataPtr );
 
15818
        if ( !validationResult ) return false;
 
15819
 
 
15820
    } // validation
 
15821
#endif
 
15822
 
 
15823
instance_image__AttributeData* attributeData = newData<instance_image__AttributeData>(attributeDataPtr);
 
15824
 
 
15825
const ParserChar** attributeArray = attributes.attributes;
 
15826
if ( attributeArray )
 
15827
{
 
15828
    while (true)
 
15829
    {
 
15830
        const ParserChar * attribute = *attributeArray;
 
15831
        if ( !attribute )
 
15832
            break;
 
15833
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
15834
        attributeArray++;
 
15835
        if ( !attributeArray )
 
15836
            return false;
 
15837
        const ParserChar* attributeValue = *attributeArray;
 
15838
        attributeArray++;
 
15839
 
 
15840
 
 
15841
    switch ( hash )
 
15842
    {
 
15843
    case HASH_ATTRIBUTE_URL:
 
15844
    {
 
15845
bool failed;
 
15846
attributeData->url = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
15847
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
15848
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
15849
        HASH_ELEMENT_INSTANCE_IMAGE,
 
15850
        HASH_ATTRIBUTE_URL,
 
15851
        attributeValue))
 
15852
{
 
15853
    return false;
 
15854
}
 
15855
if ( !failed )
 
15856
    attributeData->present_attributes |= instance_image__AttributeData::ATTRIBUTE_URL_PRESENT;
 
15857
 
 
15858
    break;
 
15859
    }
 
15860
    case HASH_ATTRIBUTE_SID:
 
15861
    {
 
15862
 
 
15863
attributeData->sid = attributeValue;
 
15864
#ifdef GENERATEDSAXPARSER_VALIDATION
 
15865
    if ( mValidate )
 
15866
    {
 
15867
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
15868
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
15869
    {
 
15870
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
15871
            simpleTypeValidationResult,
 
15872
            HASH_ELEMENT_INSTANCE_IMAGE,
 
15873
            HASH_ATTRIBUTE_SID,
 
15874
            attributeValue) )
 
15875
        {
 
15876
            return false;
 
15877
        }
 
15878
    }
 
15879
    } // validation
 
15880
#endif
 
15881
 
 
15882
    break;
 
15883
    }
 
15884
    case HASH_ATTRIBUTE_NAME:
 
15885
    {
 
15886
 
 
15887
attributeData->name = attributeValue;
 
15888
 
 
15889
    break;
 
15890
    }
 
15891
    default:
 
15892
    {
 
15893
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_INSTANCE_IMAGE, attribute, attributeValue))
 
15894
            {return false;}
 
15895
    }
 
15896
    }
 
15897
    }
 
15898
}
 
15899
if ((attributeData->present_attributes & instance_image__AttributeData::ATTRIBUTE_URL_PRESENT) == 0)
 
15900
{
 
15901
    attributeData->url = COLLADABU::URI("");
 
15902
}
 
15903
if ( (attributeData->present_attributes & instance_image__AttributeData::ATTRIBUTE_URL_PRESENT) == 0 )
 
15904
{
 
15905
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_INSTANCE_IMAGE, HASH_ATTRIBUTE_URL, 0 ) )
 
15906
        return false;
 
15907
}
 
15908
 
 
15909
 
 
15910
    return true;
 
15911
}
 
15912
 
 
15913
//---------------------------------------------------------------------
 
15914
bool ColladaParserAutoGen15Private::_preEnd__instance_image()
 
15915
{
 
15916
#ifdef GENERATEDSAXPARSER_VALIDATION
 
15917
    if ( mValidate )
 
15918
    {
 
15919
 
 
15920
        bool validationResult = _validateEnd__instance_image();
 
15921
        if ( !validationResult ) return false;
 
15922
 
 
15923
    } // validation
 
15924
#endif
 
15925
 
 
15926
    return true;
 
15927
}
 
15928
 
 
15929
//---------------------------------------------------------------------
 
15930
bool ColladaParserAutoGen15Private::_freeAttributes__instance_image( void* attributeData )
 
15931
{
 
15932
    instance_image__AttributeData* typedAttributeData = static_cast<instance_image__AttributeData*>(attributeData);
 
15933
 
 
15934
    typedAttributeData->~instance_image__AttributeData();
 
15935
 
 
15936
    return true;
 
15937
}
 
15938
 
 
15939
//---------------------------------------------------------------------
 
15940
bool ColladaParserAutoGen15Private::_data__wrap_s____fx_sampler_wrap_enum( const ParserChar* text, size_t textLength )
 
15941
{
 
15942
if (!mLastIncompleteFragmentInCharacterData)
 
15943
{
 
15944
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
15945
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
15946
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
15947
}
 
15948
else
 
15949
{
 
15950
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
15951
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
15952
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
15953
        mLastIncompleteFragmentInCharacterData = tmp;
 
15954
    }
 
15955
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
15956
    mEndOfDataInCurrentObjectOnStack += textLength;
 
15957
}
 
15958
return true;
 
15959
}
 
15960
 
 
15961
//---------------------------------------------------------------------
 
15962
bool ColladaParserAutoGen15Private::_preBegin__wrap_s____fx_sampler_wrap_enum( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
15963
{
 
15964
#ifdef GENERATEDSAXPARSER_VALIDATION
 
15965
    if ( mValidate )
 
15966
    {
 
15967
 
 
15968
        bool validationResult = _validateBegin__wrap_s____fx_sampler_wrap_enum( attributes, attributeDataPtr, validationDataPtr );
 
15969
        if ( !validationResult ) return false;
 
15970
 
 
15971
    } // validation
 
15972
#endif
 
15973
 
 
15974
    return true;
 
15975
}
 
15976
 
 
15977
//---------------------------------------------------------------------
 
15978
bool ColladaParserAutoGen15Private::_preEnd__wrap_s____fx_sampler_wrap_enum()
 
15979
{
 
15980
#ifdef GENERATEDSAXPARSER_VALIDATION
 
15981
    if ( mValidate )
 
15982
    {
 
15983
 
 
15984
        bool validationResult = _validateEnd__wrap_s____fx_sampler_wrap_enum();
 
15985
        if ( !validationResult ) return false;
 
15986
 
 
15987
    } // validation
 
15988
#endif
 
15989
 
 
15990
bool failed;
 
15991
ENUM__fx_sampler_wrap_enum parameter = Utils::toEnum<ENUM__fx_sampler_wrap_enum, StringHash, ENUM__fx_sampler_wrap_enum__COUNT>((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed, ENUM__fx_sampler_wrap_enumMap, Utils::calculateStringHash);
 
15992
bool returnValue;
 
15993
if (!failed)
 
15994
{
 
15995
    returnValue = mImpl->data__wrap_s____fx_sampler_wrap_enum(parameter);
 
15996
}
 
15997
else
 
15998
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_WRAP_S, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
15999
if (mLastIncompleteFragmentInCharacterData)
 
16000
    mStackMemoryManager.deleteObject();
 
16001
mLastIncompleteFragmentInCharacterData = 0;
 
16002
mEndOfDataInCurrentObjectOnStack = 0;
 
16003
return returnValue;
 
16004
 
 
16005
}
 
16006
 
 
16007
//---------------------------------------------------------------------
 
16008
bool ColladaParserAutoGen15Private::_freeAttributes__wrap_s____fx_sampler_wrap_enum( void* attributeData )
 
16009
{
 
16010
    return true;
 
16011
}
 
16012
 
 
16013
//---------------------------------------------------------------------
 
16014
ENUM__fx_sampler_wrap_enum ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__fx_sampler_wrap_enum (
 
16015
    const ParserChar* prefixedBuffer,
 
16016
    const ParserChar* prefixedBufferEnd,
 
16017
    const ParserChar** buffer,
 
16018
    const ParserChar* bufferEnd,
 
16019
    bool& failed,
 
16020
    const std::pair<StringHash, ENUM__fx_sampler_wrap_enum>* enumMap,
 
16021
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
16022
)
 
16023
{
 
16024
    return toEnumDataPrefix<ENUM__fx_sampler_wrap_enum, StringHash, ENUM__fx_sampler_wrap_enum__COUNT, &toEnum_ENUM__fx_sampler_wrap_enum>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
16025
}
 
16026
 
 
16027
//---------------------------------------------------------------------
 
16028
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__fx_sampler_wrap_enum (
 
16029
    const ParserChar* text,
 
16030
    size_t textLength,
 
16031
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__fx_sampler_wrap_enum*, size_t ),
 
16032
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
16033
)
 
16034
{
 
16035
    return characterData2EnumData<ENUM__fx_sampler_wrap_enum, StringHash, ENUM__fx_sampler_wrap_enum__COUNT>(text, textLength, dataFunction, ENUM__fx_sampler_wrap_enumMap, baseConversionFunc, &toEnum_ENUM__fx_sampler_wrap_enum, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__fx_sampler_wrap_enum);
 
16036
}
 
16037
 
 
16038
//---------------------------------------------------------------------
 
16039
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__fx_sampler_wrap_enum (
 
16040
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__fx_sampler_wrap_enum*, size_t ),
 
16041
    const std::pair<StringHash, ENUM__fx_sampler_wrap_enum>* enumMap,
 
16042
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
16043
    ENUM__fx_sampler_wrap_enum (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__fx_sampler_wrap_enum>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
16044
)
 
16045
{
 
16046
    return dataEnumEnd<ENUM__fx_sampler_wrap_enum, StringHash, ENUM__fx_sampler_wrap_enum__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
16047
}
 
16048
 
 
16049
//---------------------------------------------------------------------
 
16050
bool ColladaParserAutoGen15Private::_data__wrap_t____fx_sampler_wrap_enum( const ParserChar* text, size_t textLength )
 
16051
{
 
16052
if (!mLastIncompleteFragmentInCharacterData)
 
16053
{
 
16054
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
16055
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
16056
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
16057
}
 
16058
else
 
16059
{
 
16060
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
16061
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
16062
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
16063
        mLastIncompleteFragmentInCharacterData = tmp;
 
16064
    }
 
16065
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
16066
    mEndOfDataInCurrentObjectOnStack += textLength;
 
16067
}
 
16068
return true;
 
16069
}
 
16070
 
 
16071
//---------------------------------------------------------------------
 
16072
bool ColladaParserAutoGen15Private::_preBegin__wrap_t____fx_sampler_wrap_enum( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
16073
{
 
16074
#ifdef GENERATEDSAXPARSER_VALIDATION
 
16075
    if ( mValidate )
 
16076
    {
 
16077
 
 
16078
        bool validationResult = _validateBegin__wrap_t____fx_sampler_wrap_enum( attributes, attributeDataPtr, validationDataPtr );
 
16079
        if ( !validationResult ) return false;
 
16080
 
 
16081
    } // validation
 
16082
#endif
 
16083
 
 
16084
    return true;
 
16085
}
 
16086
 
 
16087
//---------------------------------------------------------------------
 
16088
bool ColladaParserAutoGen15Private::_preEnd__wrap_t____fx_sampler_wrap_enum()
 
16089
{
 
16090
#ifdef GENERATEDSAXPARSER_VALIDATION
 
16091
    if ( mValidate )
 
16092
    {
 
16093
 
 
16094
        bool validationResult = _validateEnd__wrap_t____fx_sampler_wrap_enum();
 
16095
        if ( !validationResult ) return false;
 
16096
 
 
16097
    } // validation
 
16098
#endif
 
16099
 
 
16100
bool failed;
 
16101
ENUM__fx_sampler_wrap_enum parameter = Utils::toEnum<ENUM__fx_sampler_wrap_enum, StringHash, ENUM__fx_sampler_wrap_enum__COUNT>((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed, ENUM__fx_sampler_wrap_enumMap, Utils::calculateStringHash);
 
16102
bool returnValue;
 
16103
if (!failed)
 
16104
{
 
16105
    returnValue = mImpl->data__wrap_t____fx_sampler_wrap_enum(parameter);
 
16106
}
 
16107
else
 
16108
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_WRAP_T, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
16109
if (mLastIncompleteFragmentInCharacterData)
 
16110
    mStackMemoryManager.deleteObject();
 
16111
mLastIncompleteFragmentInCharacterData = 0;
 
16112
mEndOfDataInCurrentObjectOnStack = 0;
 
16113
return returnValue;
 
16114
 
 
16115
}
 
16116
 
 
16117
//---------------------------------------------------------------------
 
16118
bool ColladaParserAutoGen15Private::_freeAttributes__wrap_t____fx_sampler_wrap_enum( void* attributeData )
 
16119
{
 
16120
    return true;
 
16121
}
 
16122
 
 
16123
//---------------------------------------------------------------------
 
16124
bool ColladaParserAutoGen15Private::_data__wrap_p( const ParserChar* text, size_t textLength )
 
16125
{
 
16126
if (!mLastIncompleteFragmentInCharacterData)
 
16127
{
 
16128
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
16129
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
16130
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
16131
}
 
16132
else
 
16133
{
 
16134
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
16135
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
16136
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
16137
        mLastIncompleteFragmentInCharacterData = tmp;
 
16138
    }
 
16139
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
16140
    mEndOfDataInCurrentObjectOnStack += textLength;
 
16141
}
 
16142
return true;
 
16143
}
 
16144
 
 
16145
//---------------------------------------------------------------------
 
16146
bool ColladaParserAutoGen15Private::_preBegin__wrap_p( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
16147
{
 
16148
#ifdef GENERATEDSAXPARSER_VALIDATION
 
16149
    if ( mValidate )
 
16150
    {
 
16151
 
 
16152
        bool validationResult = _validateBegin__wrap_p( attributes, attributeDataPtr, validationDataPtr );
 
16153
        if ( !validationResult ) return false;
 
16154
 
 
16155
    } // validation
 
16156
#endif
 
16157
 
 
16158
    return true;
 
16159
}
 
16160
 
 
16161
//---------------------------------------------------------------------
 
16162
bool ColladaParserAutoGen15Private::_preEnd__wrap_p()
 
16163
{
 
16164
#ifdef GENERATEDSAXPARSER_VALIDATION
 
16165
    if ( mValidate )
 
16166
    {
 
16167
 
 
16168
        bool validationResult = _validateEnd__wrap_p();
 
16169
        if ( !validationResult ) return false;
 
16170
 
 
16171
    } // validation
 
16172
#endif
 
16173
 
 
16174
bool failed;
 
16175
ENUM__fx_sampler_wrap_enum parameter = Utils::toEnum<ENUM__fx_sampler_wrap_enum, StringHash, ENUM__fx_sampler_wrap_enum__COUNT>((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed, ENUM__fx_sampler_wrap_enumMap, Utils::calculateStringHash);
 
16176
bool returnValue;
 
16177
if (!failed)
 
16178
{
 
16179
    returnValue = mImpl->data__wrap_p(parameter);
 
16180
}
 
16181
else
 
16182
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_WRAP_P, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
16183
if (mLastIncompleteFragmentInCharacterData)
 
16184
    mStackMemoryManager.deleteObject();
 
16185
mLastIncompleteFragmentInCharacterData = 0;
 
16186
mEndOfDataInCurrentObjectOnStack = 0;
 
16187
return returnValue;
 
16188
 
 
16189
}
 
16190
 
 
16191
//---------------------------------------------------------------------
 
16192
bool ColladaParserAutoGen15Private::_freeAttributes__wrap_p( void* attributeData )
 
16193
{
 
16194
    return true;
 
16195
}
 
16196
 
 
16197
//---------------------------------------------------------------------
 
16198
bool ColladaParserAutoGen15Private::_data__minfilter( const ParserChar* text, size_t textLength )
 
16199
{
 
16200
if (!mLastIncompleteFragmentInCharacterData)
 
16201
{
 
16202
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
16203
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
16204
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
16205
}
 
16206
else
 
16207
{
 
16208
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
16209
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
16210
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
16211
        mLastIncompleteFragmentInCharacterData = tmp;
 
16212
    }
 
16213
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
16214
    mEndOfDataInCurrentObjectOnStack += textLength;
 
16215
}
 
16216
return true;
 
16217
}
 
16218
 
 
16219
//---------------------------------------------------------------------
 
16220
bool ColladaParserAutoGen15Private::_preBegin__minfilter( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
16221
{
 
16222
#ifdef GENERATEDSAXPARSER_VALIDATION
 
16223
    if ( mValidate )
 
16224
    {
 
16225
 
 
16226
        bool validationResult = _validateBegin__minfilter( attributes, attributeDataPtr, validationDataPtr );
 
16227
        if ( !validationResult ) return false;
 
16228
 
 
16229
    } // validation
 
16230
#endif
 
16231
 
 
16232
    return true;
 
16233
}
 
16234
 
 
16235
//---------------------------------------------------------------------
 
16236
bool ColladaParserAutoGen15Private::_preEnd__minfilter()
 
16237
{
 
16238
#ifdef GENERATEDSAXPARSER_VALIDATION
 
16239
    if ( mValidate )
 
16240
    {
 
16241
 
 
16242
        bool validationResult = _validateEnd__minfilter();
 
16243
        if ( !validationResult ) return false;
 
16244
 
 
16245
    } // validation
 
16246
#endif
 
16247
 
 
16248
bool failed;
 
16249
ENUM__fx_sampler_min_filter_enum parameter = Utils::toEnum<ENUM__fx_sampler_min_filter_enum, StringHash, ENUM__fx_sampler_min_filter_enum__COUNT>((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed, ENUM__fx_sampler_min_filter_enumMap, Utils::calculateStringHash);
 
16250
bool returnValue;
 
16251
if (!failed)
 
16252
{
 
16253
    returnValue = mImpl->data__minfilter(parameter);
 
16254
}
 
16255
else
 
16256
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_MINFILTER, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
16257
if (mLastIncompleteFragmentInCharacterData)
 
16258
    mStackMemoryManager.deleteObject();
 
16259
mLastIncompleteFragmentInCharacterData = 0;
 
16260
mEndOfDataInCurrentObjectOnStack = 0;
 
16261
return returnValue;
 
16262
 
 
16263
}
 
16264
 
 
16265
//---------------------------------------------------------------------
 
16266
bool ColladaParserAutoGen15Private::_freeAttributes__minfilter( void* attributeData )
 
16267
{
 
16268
    return true;
 
16269
}
 
16270
 
 
16271
//---------------------------------------------------------------------
 
16272
ENUM__fx_sampler_min_filter_enum ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__fx_sampler_min_filter_enum (
 
16273
    const ParserChar* prefixedBuffer,
 
16274
    const ParserChar* prefixedBufferEnd,
 
16275
    const ParserChar** buffer,
 
16276
    const ParserChar* bufferEnd,
 
16277
    bool& failed,
 
16278
    const std::pair<StringHash, ENUM__fx_sampler_min_filter_enum>* enumMap,
 
16279
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
16280
)
 
16281
{
 
16282
    return toEnumDataPrefix<ENUM__fx_sampler_min_filter_enum, StringHash, ENUM__fx_sampler_min_filter_enum__COUNT, &toEnum_ENUM__fx_sampler_min_filter_enum>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
16283
}
 
16284
 
 
16285
//---------------------------------------------------------------------
 
16286
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__fx_sampler_min_filter_enum (
 
16287
    const ParserChar* text,
 
16288
    size_t textLength,
 
16289
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__fx_sampler_min_filter_enum*, size_t ),
 
16290
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
16291
)
 
16292
{
 
16293
    return characterData2EnumData<ENUM__fx_sampler_min_filter_enum, StringHash, ENUM__fx_sampler_min_filter_enum__COUNT>(text, textLength, dataFunction, ENUM__fx_sampler_min_filter_enumMap, baseConversionFunc, &toEnum_ENUM__fx_sampler_min_filter_enum, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__fx_sampler_min_filter_enum);
 
16294
}
 
16295
 
 
16296
//---------------------------------------------------------------------
 
16297
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__fx_sampler_min_filter_enum (
 
16298
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__fx_sampler_min_filter_enum*, size_t ),
 
16299
    const std::pair<StringHash, ENUM__fx_sampler_min_filter_enum>* enumMap,
 
16300
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
16301
    ENUM__fx_sampler_min_filter_enum (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__fx_sampler_min_filter_enum>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
16302
)
 
16303
{
 
16304
    return dataEnumEnd<ENUM__fx_sampler_min_filter_enum, StringHash, ENUM__fx_sampler_min_filter_enum__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
16305
}
 
16306
 
 
16307
//---------------------------------------------------------------------
 
16308
bool ColladaParserAutoGen15Private::_data__magfilter( const ParserChar* text, size_t textLength )
 
16309
{
 
16310
if (!mLastIncompleteFragmentInCharacterData)
 
16311
{
 
16312
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
16313
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
16314
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
16315
}
 
16316
else
 
16317
{
 
16318
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
16319
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
16320
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
16321
        mLastIncompleteFragmentInCharacterData = tmp;
 
16322
    }
 
16323
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
16324
    mEndOfDataInCurrentObjectOnStack += textLength;
 
16325
}
 
16326
return true;
 
16327
}
 
16328
 
 
16329
//---------------------------------------------------------------------
 
16330
bool ColladaParserAutoGen15Private::_preBegin__magfilter( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
16331
{
 
16332
#ifdef GENERATEDSAXPARSER_VALIDATION
 
16333
    if ( mValidate )
 
16334
    {
 
16335
 
 
16336
        bool validationResult = _validateBegin__magfilter( attributes, attributeDataPtr, validationDataPtr );
 
16337
        if ( !validationResult ) return false;
 
16338
 
 
16339
    } // validation
 
16340
#endif
 
16341
 
 
16342
    return true;
 
16343
}
 
16344
 
 
16345
//---------------------------------------------------------------------
 
16346
bool ColladaParserAutoGen15Private::_preEnd__magfilter()
 
16347
{
 
16348
#ifdef GENERATEDSAXPARSER_VALIDATION
 
16349
    if ( mValidate )
 
16350
    {
 
16351
 
 
16352
        bool validationResult = _validateEnd__magfilter();
 
16353
        if ( !validationResult ) return false;
 
16354
 
 
16355
    } // validation
 
16356
#endif
 
16357
 
 
16358
bool failed;
 
16359
ENUM__fx_sampler_mag_filter_enum parameter = Utils::toEnum<ENUM__fx_sampler_mag_filter_enum, StringHash, ENUM__fx_sampler_mag_filter_enum__COUNT>((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed, ENUM__fx_sampler_mag_filter_enumMap, Utils::calculateStringHash);
 
16360
bool returnValue;
 
16361
if (!failed)
 
16362
{
 
16363
    returnValue = mImpl->data__magfilter(parameter);
 
16364
}
 
16365
else
 
16366
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_MAGFILTER, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
16367
if (mLastIncompleteFragmentInCharacterData)
 
16368
    mStackMemoryManager.deleteObject();
 
16369
mLastIncompleteFragmentInCharacterData = 0;
 
16370
mEndOfDataInCurrentObjectOnStack = 0;
 
16371
return returnValue;
 
16372
 
 
16373
}
 
16374
 
 
16375
//---------------------------------------------------------------------
 
16376
bool ColladaParserAutoGen15Private::_freeAttributes__magfilter( void* attributeData )
 
16377
{
 
16378
    return true;
 
16379
}
 
16380
 
 
16381
//---------------------------------------------------------------------
 
16382
ENUM__fx_sampler_mag_filter_enum ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__fx_sampler_mag_filter_enum (
 
16383
    const ParserChar* prefixedBuffer,
 
16384
    const ParserChar* prefixedBufferEnd,
 
16385
    const ParserChar** buffer,
 
16386
    const ParserChar* bufferEnd,
 
16387
    bool& failed,
 
16388
    const std::pair<StringHash, ENUM__fx_sampler_mag_filter_enum>* enumMap,
 
16389
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
16390
)
 
16391
{
 
16392
    return toEnumDataPrefix<ENUM__fx_sampler_mag_filter_enum, StringHash, ENUM__fx_sampler_mag_filter_enum__COUNT, &toEnum_ENUM__fx_sampler_mag_filter_enum>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
16393
}
 
16394
 
 
16395
//---------------------------------------------------------------------
 
16396
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__fx_sampler_mag_filter_enum (
 
16397
    const ParserChar* text,
 
16398
    size_t textLength,
 
16399
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__fx_sampler_mag_filter_enum*, size_t ),
 
16400
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
16401
)
 
16402
{
 
16403
    return characterData2EnumData<ENUM__fx_sampler_mag_filter_enum, StringHash, ENUM__fx_sampler_mag_filter_enum__COUNT>(text, textLength, dataFunction, ENUM__fx_sampler_mag_filter_enumMap, baseConversionFunc, &toEnum_ENUM__fx_sampler_mag_filter_enum, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__fx_sampler_mag_filter_enum);
 
16404
}
 
16405
 
 
16406
//---------------------------------------------------------------------
 
16407
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__fx_sampler_mag_filter_enum (
 
16408
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__fx_sampler_mag_filter_enum*, size_t ),
 
16409
    const std::pair<StringHash, ENUM__fx_sampler_mag_filter_enum>* enumMap,
 
16410
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
16411
    ENUM__fx_sampler_mag_filter_enum (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__fx_sampler_mag_filter_enum>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
16412
)
 
16413
{
 
16414
    return dataEnumEnd<ENUM__fx_sampler_mag_filter_enum, StringHash, ENUM__fx_sampler_mag_filter_enum__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
16415
}
 
16416
 
 
16417
//---------------------------------------------------------------------
 
16418
bool ColladaParserAutoGen15Private::_data__mipfilter( const ParserChar* text, size_t textLength )
 
16419
{
 
16420
if (!mLastIncompleteFragmentInCharacterData)
 
16421
{
 
16422
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
16423
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
16424
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
16425
}
 
16426
else
 
16427
{
 
16428
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
16429
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
16430
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
16431
        mLastIncompleteFragmentInCharacterData = tmp;
 
16432
    }
 
16433
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
16434
    mEndOfDataInCurrentObjectOnStack += textLength;
 
16435
}
 
16436
return true;
 
16437
}
 
16438
 
 
16439
//---------------------------------------------------------------------
 
16440
bool ColladaParserAutoGen15Private::_preBegin__mipfilter( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
16441
{
 
16442
#ifdef GENERATEDSAXPARSER_VALIDATION
 
16443
    if ( mValidate )
 
16444
    {
 
16445
 
 
16446
        bool validationResult = _validateBegin__mipfilter( attributes, attributeDataPtr, validationDataPtr );
 
16447
        if ( !validationResult ) return false;
 
16448
 
 
16449
    } // validation
 
16450
#endif
 
16451
 
 
16452
    return true;
 
16453
}
 
16454
 
 
16455
//---------------------------------------------------------------------
 
16456
bool ColladaParserAutoGen15Private::_preEnd__mipfilter()
 
16457
{
 
16458
#ifdef GENERATEDSAXPARSER_VALIDATION
 
16459
    if ( mValidate )
 
16460
    {
 
16461
 
 
16462
        bool validationResult = _validateEnd__mipfilter();
 
16463
        if ( !validationResult ) return false;
 
16464
 
 
16465
    } // validation
 
16466
#endif
 
16467
 
 
16468
bool failed;
 
16469
ENUM__fx_sampler_mip_filter_enum parameter = Utils::toEnum<ENUM__fx_sampler_mip_filter_enum, StringHash, ENUM__fx_sampler_mip_filter_enum__COUNT>((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed, ENUM__fx_sampler_mip_filter_enumMap, Utils::calculateStringHash);
 
16470
bool returnValue;
 
16471
if (!failed)
 
16472
{
 
16473
    returnValue = mImpl->data__mipfilter(parameter);
 
16474
}
 
16475
else
 
16476
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_MIPFILTER, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
16477
if (mLastIncompleteFragmentInCharacterData)
 
16478
    mStackMemoryManager.deleteObject();
 
16479
mLastIncompleteFragmentInCharacterData = 0;
 
16480
mEndOfDataInCurrentObjectOnStack = 0;
 
16481
return returnValue;
 
16482
 
 
16483
}
 
16484
 
 
16485
//---------------------------------------------------------------------
 
16486
bool ColladaParserAutoGen15Private::_freeAttributes__mipfilter( void* attributeData )
 
16487
{
 
16488
    return true;
 
16489
}
 
16490
 
 
16491
//---------------------------------------------------------------------
 
16492
ENUM__fx_sampler_mip_filter_enum ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__fx_sampler_mip_filter_enum (
 
16493
    const ParserChar* prefixedBuffer,
 
16494
    const ParserChar* prefixedBufferEnd,
 
16495
    const ParserChar** buffer,
 
16496
    const ParserChar* bufferEnd,
 
16497
    bool& failed,
 
16498
    const std::pair<StringHash, ENUM__fx_sampler_mip_filter_enum>* enumMap,
 
16499
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
16500
)
 
16501
{
 
16502
    return toEnumDataPrefix<ENUM__fx_sampler_mip_filter_enum, StringHash, ENUM__fx_sampler_mip_filter_enum__COUNT, &toEnum_ENUM__fx_sampler_mip_filter_enum>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
16503
}
 
16504
 
 
16505
//---------------------------------------------------------------------
 
16506
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__fx_sampler_mip_filter_enum (
 
16507
    const ParserChar* text,
 
16508
    size_t textLength,
 
16509
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__fx_sampler_mip_filter_enum*, size_t ),
 
16510
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
16511
)
 
16512
{
 
16513
    return characterData2EnumData<ENUM__fx_sampler_mip_filter_enum, StringHash, ENUM__fx_sampler_mip_filter_enum__COUNT>(text, textLength, dataFunction, ENUM__fx_sampler_mip_filter_enumMap, baseConversionFunc, &toEnum_ENUM__fx_sampler_mip_filter_enum, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__fx_sampler_mip_filter_enum);
 
16514
}
 
16515
 
 
16516
//---------------------------------------------------------------------
 
16517
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__fx_sampler_mip_filter_enum (
 
16518
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__fx_sampler_mip_filter_enum*, size_t ),
 
16519
    const std::pair<StringHash, ENUM__fx_sampler_mip_filter_enum>* enumMap,
 
16520
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
16521
    ENUM__fx_sampler_mip_filter_enum (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__fx_sampler_mip_filter_enum>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
16522
)
 
16523
{
 
16524
    return dataEnumEnd<ENUM__fx_sampler_mip_filter_enum, StringHash, ENUM__fx_sampler_mip_filter_enum__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
16525
}
 
16526
 
 
16527
//---------------------------------------------------------------------
 
16528
bool ColladaParserAutoGen15Private::_data__border_color( const ParserChar* text, size_t textLength )
 
16529
{
 
16530
#ifdef GENERATEDSAXPARSER_VALIDATION
 
16531
    if ( mValidate )
 
16532
    {
 
16533
        border_color__ValidationData* validationData = (border_color__ValidationData*)mValidationDataStack.top();
 
16534
        DISABLE_WARNING_UNUSED(validationData)
 
16535
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__border_color, &validate__fx_color_type__stream, &validationData->validationWholeSize, 0);
 
16536
    }
 
16537
    else
 
16538
    {
 
16539
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__border_color);
 
16540
    }
 
16541
#else
 
16542
    {
 
16543
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__border_color);
 
16544
    } // validation
 
16545
#endif
 
16546
 
 
16547
}
 
16548
 
 
16549
//---------------------------------------------------------------------
 
16550
bool ColladaParserAutoGen15Private::_preBegin__border_color( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
16551
{
 
16552
#ifdef GENERATEDSAXPARSER_VALIDATION
 
16553
    if ( mValidate )
 
16554
    {
 
16555
 
 
16556
        bool validationResult = _validateBegin__border_color( attributes, attributeDataPtr, validationDataPtr );
 
16557
        if ( !validationResult ) return false;
 
16558
 
 
16559
    } // validation
 
16560
#endif
 
16561
 
 
16562
    return true;
 
16563
}
 
16564
 
 
16565
//---------------------------------------------------------------------
 
16566
bool ColladaParserAutoGen15Private::_preEnd__border_color()
 
16567
{
 
16568
#ifdef GENERATEDSAXPARSER_VALIDATION
 
16569
    if ( mValidate )
 
16570
    {
 
16571
 
 
16572
        bool validationResult = _validateEnd__border_color();
 
16573
        if ( !validationResult ) return false;
 
16574
 
 
16575
    } // validation
 
16576
#endif
 
16577
 
 
16578
#ifdef GENERATEDSAXPARSER_VALIDATION
 
16579
    if ( mValidate )
 
16580
    {
 
16581
        border_color__ValidationData* validationData = (border_color__ValidationData*)mValidationDataStack.top();
 
16582
        DISABLE_WARNING_UNUSED(validationData)
 
16583
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__border_color, &validate__fx_color_type__streamEnd, &validationData->validationWholeSize, 0 );
 
16584
        ParserError::ErrorType simpleTypeValidationResult = validate__fx_color_type(0, (*(&validationData->validationWholeSize)));
 
16585
        mValidationDataStack.deleteObject();
 
16586
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
16587
        {
 
16588
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
16589
                simpleTypeValidationResult,
 
16590
                HASH_ELEMENT_BORDER_COLOR,
 
16591
                (ParserChar*)0, 0 ) )
 
16592
            {
 
16593
                return false;
 
16594
            }
 
16595
        }
 
16596
        return returnValue;
 
16597
    }
 
16598
    else
 
16599
    {
 
16600
return floatDataEnd( &ColladaParserAutoGen15::data__border_color );
 
16601
    }
 
16602
#else
 
16603
    {
 
16604
return floatDataEnd( &ColladaParserAutoGen15::data__border_color );
 
16605
    } // validation
 
16606
#endif
 
16607
 
 
16608
}
 
16609
 
 
16610
//---------------------------------------------------------------------
 
16611
bool ColladaParserAutoGen15Private::_freeAttributes__border_color( void* attributeData )
 
16612
{
 
16613
    return true;
 
16614
}
 
16615
 
 
16616
//---------------------------------------------------------------------
 
16617
bool ColladaParserAutoGen15Private::_data__mip_max_level( const ParserChar* text, size_t textLength )
 
16618
{
 
16619
if (!mLastIncompleteFragmentInCharacterData)
 
16620
{
 
16621
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
16622
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
16623
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
16624
}
 
16625
else
 
16626
{
 
16627
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
16628
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
16629
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
16630
        mLastIncompleteFragmentInCharacterData = tmp;
 
16631
    }
 
16632
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
16633
    mEndOfDataInCurrentObjectOnStack += textLength;
 
16634
}
 
16635
return true;
 
16636
}
 
16637
 
 
16638
//---------------------------------------------------------------------
 
16639
bool ColladaParserAutoGen15Private::_preBegin__mip_max_level( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
16640
{
 
16641
#ifdef GENERATEDSAXPARSER_VALIDATION
 
16642
    if ( mValidate )
 
16643
    {
 
16644
 
 
16645
        bool validationResult = _validateBegin__mip_max_level( attributes, attributeDataPtr, validationDataPtr );
 
16646
        if ( !validationResult ) return false;
 
16647
 
 
16648
    } // validation
 
16649
#endif
 
16650
 
 
16651
    return true;
 
16652
}
 
16653
 
 
16654
//---------------------------------------------------------------------
 
16655
bool ColladaParserAutoGen15Private::_preEnd__mip_max_level()
 
16656
{
 
16657
#ifdef GENERATEDSAXPARSER_VALIDATION
 
16658
    if ( mValidate )
 
16659
    {
 
16660
 
 
16661
        bool validationResult = _validateEnd__mip_max_level();
 
16662
        if ( !validationResult ) return false;
 
16663
 
 
16664
    } // validation
 
16665
#endif
 
16666
 
 
16667
bool failed;
 
16668
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
16669
DISABLE_WARNING_UNUSED(ptrForErr)
 
16670
uint8 parameter = GeneratedSaxParser::Utils::toUint8((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
16671
bool returnValue;
 
16672
if (!failed)
 
16673
{
 
16674
    returnValue = mImpl->data__mip_max_level(parameter);
 
16675
}
 
16676
else
 
16677
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_MIP_MAX_LEVEL, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
16678
if (mLastIncompleteFragmentInCharacterData)
 
16679
    mStackMemoryManager.deleteObject();
 
16680
mLastIncompleteFragmentInCharacterData = 0;
 
16681
mEndOfDataInCurrentObjectOnStack = 0;
 
16682
return returnValue;
 
16683
}
 
16684
 
 
16685
//---------------------------------------------------------------------
 
16686
bool ColladaParserAutoGen15Private::_freeAttributes__mip_max_level( void* attributeData )
 
16687
{
 
16688
    return true;
 
16689
}
 
16690
 
 
16691
//---------------------------------------------------------------------
 
16692
bool ColladaParserAutoGen15Private::_data__mip_min_level( const ParserChar* text, size_t textLength )
 
16693
{
 
16694
if (!mLastIncompleteFragmentInCharacterData)
 
16695
{
 
16696
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
16697
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
16698
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
16699
}
 
16700
else
 
16701
{
 
16702
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
16703
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
16704
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
16705
        mLastIncompleteFragmentInCharacterData = tmp;
 
16706
    }
 
16707
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
16708
    mEndOfDataInCurrentObjectOnStack += textLength;
 
16709
}
 
16710
return true;
 
16711
}
 
16712
 
 
16713
//---------------------------------------------------------------------
 
16714
bool ColladaParserAutoGen15Private::_preBegin__mip_min_level( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
16715
{
 
16716
#ifdef GENERATEDSAXPARSER_VALIDATION
 
16717
    if ( mValidate )
 
16718
    {
 
16719
 
 
16720
        bool validationResult = _validateBegin__mip_min_level( attributes, attributeDataPtr, validationDataPtr );
 
16721
        if ( !validationResult ) return false;
 
16722
 
 
16723
    } // validation
 
16724
#endif
 
16725
 
 
16726
    return true;
 
16727
}
 
16728
 
 
16729
//---------------------------------------------------------------------
 
16730
bool ColladaParserAutoGen15Private::_preEnd__mip_min_level()
 
16731
{
 
16732
#ifdef GENERATEDSAXPARSER_VALIDATION
 
16733
    if ( mValidate )
 
16734
    {
 
16735
 
 
16736
        bool validationResult = _validateEnd__mip_min_level();
 
16737
        if ( !validationResult ) return false;
 
16738
 
 
16739
    } // validation
 
16740
#endif
 
16741
 
 
16742
bool failed;
 
16743
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
16744
DISABLE_WARNING_UNUSED(ptrForErr)
 
16745
uint8 parameter = GeneratedSaxParser::Utils::toUint8((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
16746
bool returnValue;
 
16747
if (!failed)
 
16748
{
 
16749
    returnValue = mImpl->data__mip_min_level(parameter);
 
16750
}
 
16751
else
 
16752
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_MIP_MIN_LEVEL, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
16753
if (mLastIncompleteFragmentInCharacterData)
 
16754
    mStackMemoryManager.deleteObject();
 
16755
mLastIncompleteFragmentInCharacterData = 0;
 
16756
mEndOfDataInCurrentObjectOnStack = 0;
 
16757
return returnValue;
 
16758
}
 
16759
 
 
16760
//---------------------------------------------------------------------
 
16761
bool ColladaParserAutoGen15Private::_freeAttributes__mip_min_level( void* attributeData )
 
16762
{
 
16763
    return true;
 
16764
}
 
16765
 
 
16766
//---------------------------------------------------------------------
 
16767
bool ColladaParserAutoGen15Private::_data__mip_bias( const ParserChar* text, size_t textLength )
 
16768
{
 
16769
if (!mLastIncompleteFragmentInCharacterData)
 
16770
{
 
16771
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
16772
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
16773
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
16774
}
 
16775
else
 
16776
{
 
16777
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
16778
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
16779
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
16780
        mLastIncompleteFragmentInCharacterData = tmp;
 
16781
    }
 
16782
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
16783
    mEndOfDataInCurrentObjectOnStack += textLength;
 
16784
}
 
16785
return true;
 
16786
}
 
16787
 
 
16788
//---------------------------------------------------------------------
 
16789
bool ColladaParserAutoGen15Private::_preBegin__mip_bias( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
16790
{
 
16791
#ifdef GENERATEDSAXPARSER_VALIDATION
 
16792
    if ( mValidate )
 
16793
    {
 
16794
 
 
16795
        bool validationResult = _validateBegin__mip_bias( attributes, attributeDataPtr, validationDataPtr );
 
16796
        if ( !validationResult ) return false;
 
16797
 
 
16798
    } // validation
 
16799
#endif
 
16800
 
 
16801
    return true;
 
16802
}
 
16803
 
 
16804
//---------------------------------------------------------------------
 
16805
bool ColladaParserAutoGen15Private::_preEnd__mip_bias()
 
16806
{
 
16807
#ifdef GENERATEDSAXPARSER_VALIDATION
 
16808
    if ( mValidate )
 
16809
    {
 
16810
 
 
16811
        bool validationResult = _validateEnd__mip_bias();
 
16812
        if ( !validationResult ) return false;
 
16813
 
 
16814
    } // validation
 
16815
#endif
 
16816
 
 
16817
bool failed;
 
16818
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
16819
DISABLE_WARNING_UNUSED(ptrForErr)
 
16820
float parameter = GeneratedSaxParser::Utils::toFloat((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
16821
bool returnValue;
 
16822
if (!failed)
 
16823
{
 
16824
    returnValue = mImpl->data__mip_bias(parameter);
 
16825
}
 
16826
else
 
16827
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_MIP_BIAS, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
16828
if (mLastIncompleteFragmentInCharacterData)
 
16829
    mStackMemoryManager.deleteObject();
 
16830
mLastIncompleteFragmentInCharacterData = 0;
 
16831
mEndOfDataInCurrentObjectOnStack = 0;
 
16832
return returnValue;
 
16833
}
 
16834
 
 
16835
//---------------------------------------------------------------------
 
16836
bool ColladaParserAutoGen15Private::_freeAttributes__mip_bias( void* attributeData )
 
16837
{
 
16838
    return true;
 
16839
}
 
16840
 
 
16841
//---------------------------------------------------------------------
 
16842
bool ColladaParserAutoGen15Private::_data__max_anisotropy( const ParserChar* text, size_t textLength )
 
16843
{
 
16844
if (!mLastIncompleteFragmentInCharacterData)
 
16845
{
 
16846
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
16847
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
16848
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
16849
}
 
16850
else
 
16851
{
 
16852
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
16853
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
16854
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
16855
        mLastIncompleteFragmentInCharacterData = tmp;
 
16856
    }
 
16857
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
16858
    mEndOfDataInCurrentObjectOnStack += textLength;
 
16859
}
 
16860
return true;
 
16861
}
 
16862
 
 
16863
//---------------------------------------------------------------------
 
16864
bool ColladaParserAutoGen15Private::_preBegin__max_anisotropy( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
16865
{
 
16866
#ifdef GENERATEDSAXPARSER_VALIDATION
 
16867
    if ( mValidate )
 
16868
    {
 
16869
 
 
16870
        bool validationResult = _validateBegin__max_anisotropy( attributes, attributeDataPtr, validationDataPtr );
 
16871
        if ( !validationResult ) return false;
 
16872
 
 
16873
    } // validation
 
16874
#endif
 
16875
 
 
16876
    return true;
 
16877
}
 
16878
 
 
16879
//---------------------------------------------------------------------
 
16880
bool ColladaParserAutoGen15Private::_preEnd__max_anisotropy()
 
16881
{
 
16882
#ifdef GENERATEDSAXPARSER_VALIDATION
 
16883
    if ( mValidate )
 
16884
    {
 
16885
 
 
16886
        bool validationResult = _validateEnd__max_anisotropy();
 
16887
        if ( !validationResult ) return false;
 
16888
 
 
16889
    } // validation
 
16890
#endif
 
16891
 
 
16892
bool failed;
 
16893
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
16894
DISABLE_WARNING_UNUSED(ptrForErr)
 
16895
uint32 parameter = GeneratedSaxParser::Utils::toUint32((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
16896
bool returnValue;
 
16897
if (!failed)
 
16898
{
 
16899
    returnValue = mImpl->data__max_anisotropy(parameter);
 
16900
}
 
16901
else
 
16902
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_MAX_ANISOTROPY, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
16903
if (mLastIncompleteFragmentInCharacterData)
 
16904
    mStackMemoryManager.deleteObject();
 
16905
mLastIncompleteFragmentInCharacterData = 0;
 
16906
mEndOfDataInCurrentObjectOnStack = 0;
 
16907
return returnValue;
 
16908
}
 
16909
 
 
16910
//---------------------------------------------------------------------
 
16911
bool ColladaParserAutoGen15Private::_freeAttributes__max_anisotropy( void* attributeData )
 
16912
{
 
16913
    return true;
 
16914
}
 
16915
 
 
16916
//---------------------------------------------------------------------
 
16917
bool ColladaParserAutoGen15Private::_data__sampler2D____fx_sampler2D_type( const ParserChar* text, size_t textLength )
 
16918
{
 
16919
    return true;
 
16920
}
 
16921
 
 
16922
//---------------------------------------------------------------------
 
16923
bool ColladaParserAutoGen15Private::_preBegin__sampler2D____fx_sampler2D_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
16924
{
 
16925
#ifdef GENERATEDSAXPARSER_VALIDATION
 
16926
    if ( mValidate )
 
16927
    {
 
16928
 
 
16929
        bool validationResult = _validateBegin__sampler2D____fx_sampler2D_type( attributes, attributeDataPtr, validationDataPtr );
 
16930
        if ( !validationResult ) return false;
 
16931
 
 
16932
    } // validation
 
16933
#endif
 
16934
 
 
16935
    return true;
 
16936
}
 
16937
 
 
16938
//---------------------------------------------------------------------
 
16939
bool ColladaParserAutoGen15Private::_preEnd__sampler2D____fx_sampler2D_type()
 
16940
{
 
16941
#ifdef GENERATEDSAXPARSER_VALIDATION
 
16942
    if ( mValidate )
 
16943
    {
 
16944
 
 
16945
        bool validationResult = _validateEnd__sampler2D____fx_sampler2D_type();
 
16946
        if ( !validationResult ) return false;
 
16947
 
 
16948
    } // validation
 
16949
#endif
 
16950
 
 
16951
    return true;
 
16952
}
 
16953
 
 
16954
//---------------------------------------------------------------------
 
16955
bool ColladaParserAutoGen15Private::_freeAttributes__sampler2D____fx_sampler2D_type( void* attributeData )
 
16956
{
 
16957
    return true;
 
16958
}
 
16959
 
 
16960
//---------------------------------------------------------------------
 
16961
bool ColladaParserAutoGen15Private::_data__sampler3D( const ParserChar* text, size_t textLength )
 
16962
{
 
16963
    return true;
 
16964
}
 
16965
 
 
16966
//---------------------------------------------------------------------
 
16967
bool ColladaParserAutoGen15Private::_preBegin__sampler3D( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
16968
{
 
16969
#ifdef GENERATEDSAXPARSER_VALIDATION
 
16970
    if ( mValidate )
 
16971
    {
 
16972
 
 
16973
        bool validationResult = _validateBegin__sampler3D( attributes, attributeDataPtr, validationDataPtr );
 
16974
        if ( !validationResult ) return false;
 
16975
 
 
16976
    } // validation
 
16977
#endif
 
16978
 
 
16979
    return true;
 
16980
}
 
16981
 
 
16982
//---------------------------------------------------------------------
 
16983
bool ColladaParserAutoGen15Private::_preEnd__sampler3D()
 
16984
{
 
16985
#ifdef GENERATEDSAXPARSER_VALIDATION
 
16986
    if ( mValidate )
 
16987
    {
 
16988
 
 
16989
        bool validationResult = _validateEnd__sampler3D();
 
16990
        if ( !validationResult ) return false;
 
16991
 
 
16992
    } // validation
 
16993
#endif
 
16994
 
 
16995
    return true;
 
16996
}
 
16997
 
 
16998
//---------------------------------------------------------------------
 
16999
bool ColladaParserAutoGen15Private::_freeAttributes__sampler3D( void* attributeData )
 
17000
{
 
17001
    return true;
 
17002
}
 
17003
 
 
17004
//---------------------------------------------------------------------
 
17005
bool ColladaParserAutoGen15Private::_data__samplerCUBE( const ParserChar* text, size_t textLength )
 
17006
{
 
17007
    return true;
 
17008
}
 
17009
 
 
17010
//---------------------------------------------------------------------
 
17011
bool ColladaParserAutoGen15Private::_preBegin__samplerCUBE( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
17012
{
 
17013
#ifdef GENERATEDSAXPARSER_VALIDATION
 
17014
    if ( mValidate )
 
17015
    {
 
17016
 
 
17017
        bool validationResult = _validateBegin__samplerCUBE( attributes, attributeDataPtr, validationDataPtr );
 
17018
        if ( !validationResult ) return false;
 
17019
 
 
17020
    } // validation
 
17021
#endif
 
17022
 
 
17023
    return true;
 
17024
}
 
17025
 
 
17026
//---------------------------------------------------------------------
 
17027
bool ColladaParserAutoGen15Private::_preEnd__samplerCUBE()
 
17028
{
 
17029
#ifdef GENERATEDSAXPARSER_VALIDATION
 
17030
    if ( mValidate )
 
17031
    {
 
17032
 
 
17033
        bool validationResult = _validateEnd__samplerCUBE();
 
17034
        if ( !validationResult ) return false;
 
17035
 
 
17036
    } // validation
 
17037
#endif
 
17038
 
 
17039
    return true;
 
17040
}
 
17041
 
 
17042
//---------------------------------------------------------------------
 
17043
bool ColladaParserAutoGen15Private::_freeAttributes__samplerCUBE( void* attributeData )
 
17044
{
 
17045
    return true;
 
17046
}
 
17047
 
 
17048
//---------------------------------------------------------------------
 
17049
bool ColladaParserAutoGen15Private::_data__samplerRECT( const ParserChar* text, size_t textLength )
 
17050
{
 
17051
    return true;
 
17052
}
 
17053
 
 
17054
//---------------------------------------------------------------------
 
17055
bool ColladaParserAutoGen15Private::_preBegin__samplerRECT( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
17056
{
 
17057
#ifdef GENERATEDSAXPARSER_VALIDATION
 
17058
    if ( mValidate )
 
17059
    {
 
17060
 
 
17061
        bool validationResult = _validateBegin__samplerRECT( attributes, attributeDataPtr, validationDataPtr );
 
17062
        if ( !validationResult ) return false;
 
17063
 
 
17064
    } // validation
 
17065
#endif
 
17066
 
 
17067
    return true;
 
17068
}
 
17069
 
 
17070
//---------------------------------------------------------------------
 
17071
bool ColladaParserAutoGen15Private::_preEnd__samplerRECT()
 
17072
{
 
17073
#ifdef GENERATEDSAXPARSER_VALIDATION
 
17074
    if ( mValidate )
 
17075
    {
 
17076
 
 
17077
        bool validationResult = _validateEnd__samplerRECT();
 
17078
        if ( !validationResult ) return false;
 
17079
 
 
17080
    } // validation
 
17081
#endif
 
17082
 
 
17083
    return true;
 
17084
}
 
17085
 
 
17086
//---------------------------------------------------------------------
 
17087
bool ColladaParserAutoGen15Private::_freeAttributes__samplerRECT( void* attributeData )
 
17088
{
 
17089
    return true;
 
17090
}
 
17091
 
 
17092
//---------------------------------------------------------------------
 
17093
bool ColladaParserAutoGen15Private::_data__samplerDEPTH( const ParserChar* text, size_t textLength )
 
17094
{
 
17095
    return true;
 
17096
}
 
17097
 
 
17098
//---------------------------------------------------------------------
 
17099
bool ColladaParserAutoGen15Private::_preBegin__samplerDEPTH( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
17100
{
 
17101
#ifdef GENERATEDSAXPARSER_VALIDATION
 
17102
    if ( mValidate )
 
17103
    {
 
17104
 
 
17105
        bool validationResult = _validateBegin__samplerDEPTH( attributes, attributeDataPtr, validationDataPtr );
 
17106
        if ( !validationResult ) return false;
 
17107
 
 
17108
    } // validation
 
17109
#endif
 
17110
 
 
17111
    return true;
 
17112
}
 
17113
 
 
17114
//---------------------------------------------------------------------
 
17115
bool ColladaParserAutoGen15Private::_preEnd__samplerDEPTH()
 
17116
{
 
17117
#ifdef GENERATEDSAXPARSER_VALIDATION
 
17118
    if ( mValidate )
 
17119
    {
 
17120
 
 
17121
        bool validationResult = _validateEnd__samplerDEPTH();
 
17122
        if ( !validationResult ) return false;
 
17123
 
 
17124
    } // validation
 
17125
#endif
 
17126
 
 
17127
    return true;
 
17128
}
 
17129
 
 
17130
//---------------------------------------------------------------------
 
17131
bool ColladaParserAutoGen15Private::_freeAttributes__samplerDEPTH( void* attributeData )
 
17132
{
 
17133
    return true;
 
17134
}
 
17135
 
 
17136
//---------------------------------------------------------------------
 
17137
bool ColladaParserAutoGen15Private::_data__enum____string( const ParserChar* text, size_t textLength )
 
17138
{
 
17139
 
 
17140
return mImpl->data__enum____string(text, textLength);
 
17141
}
 
17142
 
 
17143
//---------------------------------------------------------------------
 
17144
bool ColladaParserAutoGen15Private::_preBegin__enum____string( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
17145
{
 
17146
#ifdef GENERATEDSAXPARSER_VALIDATION
 
17147
    if ( mValidate )
 
17148
    {
 
17149
 
 
17150
        bool validationResult = _validateBegin__enum____string( attributes, attributeDataPtr, validationDataPtr );
 
17151
        if ( !validationResult ) return false;
 
17152
 
 
17153
    } // validation
 
17154
#endif
 
17155
 
 
17156
    return true;
 
17157
}
 
17158
 
 
17159
//---------------------------------------------------------------------
 
17160
bool ColladaParserAutoGen15Private::_preEnd__enum____string()
 
17161
{
 
17162
#ifdef GENERATEDSAXPARSER_VALIDATION
 
17163
    if ( mValidate )
 
17164
    {
 
17165
 
 
17166
        bool validationResult = _validateEnd__enum____string();
 
17167
        if ( !validationResult ) return false;
 
17168
 
 
17169
    } // validation
 
17170
#endif
 
17171
 
 
17172
    return true;
 
17173
}
 
17174
 
 
17175
//---------------------------------------------------------------------
 
17176
bool ColladaParserAutoGen15Private::_freeAttributes__enum____string( void* attributeData )
 
17177
{
 
17178
    return true;
 
17179
}
 
17180
 
 
17181
//---------------------------------------------------------------------
 
17182
const profile_COMMON__AttributeData profile_COMMON__AttributeData::DEFAULT = {0};
 
17183
 
 
17184
//---------------------------------------------------------------------
 
17185
bool ColladaParserAutoGen15Private::_data__profile_COMMON( const ParserChar* text, size_t textLength )
 
17186
{
 
17187
    return true;
 
17188
}
 
17189
 
 
17190
//---------------------------------------------------------------------
 
17191
bool ColladaParserAutoGen15Private::_preBegin__profile_COMMON( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
17192
{
 
17193
#ifdef GENERATEDSAXPARSER_VALIDATION
 
17194
    if ( mValidate )
 
17195
    {
 
17196
 
 
17197
        bool validationResult = _validateBegin__profile_COMMON( attributes, attributeDataPtr, validationDataPtr );
 
17198
        if ( !validationResult ) return false;
 
17199
 
 
17200
    } // validation
 
17201
#endif
 
17202
 
 
17203
profile_COMMON__AttributeData* attributeData = newData<profile_COMMON__AttributeData>(attributeDataPtr);
 
17204
 
 
17205
const ParserChar** attributeArray = attributes.attributes;
 
17206
if ( attributeArray )
 
17207
{
 
17208
    while (true)
 
17209
    {
 
17210
        const ParserChar * attribute = *attributeArray;
 
17211
        if ( !attribute )
 
17212
            break;
 
17213
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
17214
        attributeArray++;
 
17215
        if ( !attributeArray )
 
17216
            return false;
 
17217
        const ParserChar* attributeValue = *attributeArray;
 
17218
        attributeArray++;
 
17219
 
 
17220
 
 
17221
    switch ( hash )
 
17222
    {
 
17223
    case HASH_ATTRIBUTE_ID:
 
17224
    {
 
17225
 
 
17226
attributeData->id = attributeValue;
 
17227
 
 
17228
    break;
 
17229
    }
 
17230
    default:
 
17231
    {
 
17232
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_PROFILE_COMMON, attribute, attributeValue))
 
17233
            {return false;}
 
17234
    }
 
17235
    }
 
17236
    }
 
17237
}
 
17238
 
 
17239
 
 
17240
    return true;
 
17241
}
 
17242
 
 
17243
//---------------------------------------------------------------------
 
17244
bool ColladaParserAutoGen15Private::_preEnd__profile_COMMON()
 
17245
{
 
17246
#ifdef GENERATEDSAXPARSER_VALIDATION
 
17247
    if ( mValidate )
 
17248
    {
 
17249
 
 
17250
        bool validationResult = _validateEnd__profile_COMMON();
 
17251
        if ( !validationResult ) return false;
 
17252
 
 
17253
    } // validation
 
17254
#endif
 
17255
 
 
17256
    return true;
 
17257
}
 
17258
 
 
17259
//---------------------------------------------------------------------
 
17260
bool ColladaParserAutoGen15Private::_freeAttributes__profile_COMMON( void* attributeData )
 
17261
{
 
17262
    profile_COMMON__AttributeData* typedAttributeData = static_cast<profile_COMMON__AttributeData*>(attributeData);
 
17263
 
 
17264
    typedAttributeData->~profile_COMMON__AttributeData();
 
17265
 
 
17266
    return true;
 
17267
}
 
17268
 
 
17269
//---------------------------------------------------------------------
 
17270
const newparam____fx_common_newparam_type__AttributeData newparam____fx_common_newparam_type__AttributeData::DEFAULT = {0};
 
17271
 
 
17272
//---------------------------------------------------------------------
 
17273
bool ColladaParserAutoGen15Private::_data__newparam____fx_common_newparam_type( const ParserChar* text, size_t textLength )
 
17274
{
 
17275
    return true;
 
17276
}
 
17277
 
 
17278
//---------------------------------------------------------------------
 
17279
bool ColladaParserAutoGen15Private::_preBegin__newparam____fx_common_newparam_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
17280
{
 
17281
#ifdef GENERATEDSAXPARSER_VALIDATION
 
17282
    if ( mValidate )
 
17283
    {
 
17284
 
 
17285
        bool validationResult = _validateBegin__newparam____fx_common_newparam_type( attributes, attributeDataPtr, validationDataPtr );
 
17286
        if ( !validationResult ) return false;
 
17287
 
 
17288
    } // validation
 
17289
#endif
 
17290
 
 
17291
newparam____fx_common_newparam_type__AttributeData* attributeData = newData<newparam____fx_common_newparam_type__AttributeData>(attributeDataPtr);
 
17292
 
 
17293
const ParserChar** attributeArray = attributes.attributes;
 
17294
if ( attributeArray )
 
17295
{
 
17296
    while (true)
 
17297
    {
 
17298
        const ParserChar * attribute = *attributeArray;
 
17299
        if ( !attribute )
 
17300
            break;
 
17301
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
17302
        attributeArray++;
 
17303
        if ( !attributeArray )
 
17304
            return false;
 
17305
        const ParserChar* attributeValue = *attributeArray;
 
17306
        attributeArray++;
 
17307
 
 
17308
 
 
17309
    switch ( hash )
 
17310
    {
 
17311
    case HASH_ATTRIBUTE_SID:
 
17312
    {
 
17313
 
 
17314
attributeData->sid = attributeValue;
 
17315
#ifdef GENERATEDSAXPARSER_VALIDATION
 
17316
    if ( mValidate )
 
17317
    {
 
17318
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
17319
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
17320
    {
 
17321
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
17322
            simpleTypeValidationResult,
 
17323
            HASH_ELEMENT_NEWPARAM,
 
17324
            HASH_ATTRIBUTE_SID,
 
17325
            attributeValue) )
 
17326
        {
 
17327
            return false;
 
17328
        }
 
17329
    }
 
17330
    } // validation
 
17331
#endif
 
17332
 
 
17333
    break;
 
17334
    }
 
17335
    default:
 
17336
    {
 
17337
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_NEWPARAM, attribute, attributeValue))
 
17338
            {return false;}
 
17339
    }
 
17340
    }
 
17341
    }
 
17342
}
 
17343
if ( !attributeData->sid )
 
17344
{
 
17345
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_NEWPARAM, HASH_ATTRIBUTE_SID, 0 ) )
 
17346
        return false;
 
17347
}
 
17348
 
 
17349
 
 
17350
    return true;
 
17351
}
 
17352
 
 
17353
//---------------------------------------------------------------------
 
17354
bool ColladaParserAutoGen15Private::_preEnd__newparam____fx_common_newparam_type()
 
17355
{
 
17356
#ifdef GENERATEDSAXPARSER_VALIDATION
 
17357
    if ( mValidate )
 
17358
    {
 
17359
 
 
17360
        bool validationResult = _validateEnd__newparam____fx_common_newparam_type();
 
17361
        if ( !validationResult ) return false;
 
17362
 
 
17363
    } // validation
 
17364
#endif
 
17365
 
 
17366
    return true;
 
17367
}
 
17368
 
 
17369
//---------------------------------------------------------------------
 
17370
bool ColladaParserAutoGen15Private::_freeAttributes__newparam____fx_common_newparam_type( void* attributeData )
 
17371
{
 
17372
    newparam____fx_common_newparam_type__AttributeData* typedAttributeData = static_cast<newparam____fx_common_newparam_type__AttributeData*>(attributeData);
 
17373
 
 
17374
    typedAttributeData->~newparam____fx_common_newparam_type__AttributeData();
 
17375
 
 
17376
    return true;
 
17377
}
 
17378
 
 
17379
//---------------------------------------------------------------------
 
17380
const profile_common_type____technique__AttributeData profile_common_type____technique__AttributeData::DEFAULT = {0, 0};
 
17381
 
 
17382
//---------------------------------------------------------------------
 
17383
bool ColladaParserAutoGen15Private::_data__profile_common_type____technique( const ParserChar* text, size_t textLength )
 
17384
{
 
17385
    return true;
 
17386
}
 
17387
 
 
17388
//---------------------------------------------------------------------
 
17389
bool ColladaParserAutoGen15Private::_preBegin__profile_common_type____technique( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
17390
{
 
17391
#ifdef GENERATEDSAXPARSER_VALIDATION
 
17392
    if ( mValidate )
 
17393
    {
 
17394
 
 
17395
        bool validationResult = _validateBegin__profile_common_type____technique( attributes, attributeDataPtr, validationDataPtr );
 
17396
        if ( !validationResult ) return false;
 
17397
 
 
17398
    } // validation
 
17399
#endif
 
17400
 
 
17401
profile_common_type____technique__AttributeData* attributeData = newData<profile_common_type____technique__AttributeData>(attributeDataPtr);
 
17402
 
 
17403
const ParserChar** attributeArray = attributes.attributes;
 
17404
if ( attributeArray )
 
17405
{
 
17406
    while (true)
 
17407
    {
 
17408
        const ParserChar * attribute = *attributeArray;
 
17409
        if ( !attribute )
 
17410
            break;
 
17411
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
17412
        attributeArray++;
 
17413
        if ( !attributeArray )
 
17414
            return false;
 
17415
        const ParserChar* attributeValue = *attributeArray;
 
17416
        attributeArray++;
 
17417
 
 
17418
 
 
17419
    switch ( hash )
 
17420
    {
 
17421
    case HASH_ATTRIBUTE_ID:
 
17422
    {
 
17423
 
 
17424
attributeData->id = attributeValue;
 
17425
 
 
17426
    break;
 
17427
    }
 
17428
    case HASH_ATTRIBUTE_SID:
 
17429
    {
 
17430
 
 
17431
attributeData->sid = attributeValue;
 
17432
#ifdef GENERATEDSAXPARSER_VALIDATION
 
17433
    if ( mValidate )
 
17434
    {
 
17435
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
17436
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
17437
    {
 
17438
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
17439
            simpleTypeValidationResult,
 
17440
            HASH_ELEMENT_TECHNIQUE,
 
17441
            HASH_ATTRIBUTE_SID,
 
17442
            attributeValue) )
 
17443
        {
 
17444
            return false;
 
17445
        }
 
17446
    }
 
17447
    } // validation
 
17448
#endif
 
17449
 
 
17450
    break;
 
17451
    }
 
17452
    default:
 
17453
    {
 
17454
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_TECHNIQUE, attribute, attributeValue))
 
17455
            {return false;}
 
17456
    }
 
17457
    }
 
17458
    }
 
17459
}
 
17460
if ( !attributeData->sid )
 
17461
{
 
17462
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_TECHNIQUE, HASH_ATTRIBUTE_SID, 0 ) )
 
17463
        return false;
 
17464
}
 
17465
 
 
17466
 
 
17467
    return true;
 
17468
}
 
17469
 
 
17470
//---------------------------------------------------------------------
 
17471
bool ColladaParserAutoGen15Private::_preEnd__profile_common_type____technique()
 
17472
{
 
17473
#ifdef GENERATEDSAXPARSER_VALIDATION
 
17474
    if ( mValidate )
 
17475
    {
 
17476
 
 
17477
        bool validationResult = _validateEnd__profile_common_type____technique();
 
17478
        if ( !validationResult ) return false;
 
17479
 
 
17480
    } // validation
 
17481
#endif
 
17482
 
 
17483
    return true;
 
17484
}
 
17485
 
 
17486
//---------------------------------------------------------------------
 
17487
bool ColladaParserAutoGen15Private::_freeAttributes__profile_common_type____technique( void* attributeData )
 
17488
{
 
17489
    profile_common_type____technique__AttributeData* typedAttributeData = static_cast<profile_common_type____technique__AttributeData*>(attributeData);
 
17490
 
 
17491
    typedAttributeData->~profile_common_type____technique__AttributeData();
 
17492
 
 
17493
    return true;
 
17494
}
 
17495
 
 
17496
//---------------------------------------------------------------------
 
17497
bool ColladaParserAutoGen15Private::_data__profile_COMMON__technique__constant( const ParserChar* text, size_t textLength )
 
17498
{
 
17499
    return true;
 
17500
}
 
17501
 
 
17502
//---------------------------------------------------------------------
 
17503
bool ColladaParserAutoGen15Private::_preBegin__profile_COMMON__technique__constant( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
17504
{
 
17505
#ifdef GENERATEDSAXPARSER_VALIDATION
 
17506
    if ( mValidate )
 
17507
    {
 
17508
 
 
17509
        bool validationResult = _validateBegin__profile_COMMON__technique__constant( attributes, attributeDataPtr, validationDataPtr );
 
17510
        if ( !validationResult ) return false;
 
17511
 
 
17512
    } // validation
 
17513
#endif
 
17514
 
 
17515
    return true;
 
17516
}
 
17517
 
 
17518
//---------------------------------------------------------------------
 
17519
bool ColladaParserAutoGen15Private::_preEnd__profile_COMMON__technique__constant()
 
17520
{
 
17521
#ifdef GENERATEDSAXPARSER_VALIDATION
 
17522
    if ( mValidate )
 
17523
    {
 
17524
 
 
17525
        bool validationResult = _validateEnd__profile_COMMON__technique__constant();
 
17526
        if ( !validationResult ) return false;
 
17527
 
 
17528
    } // validation
 
17529
#endif
 
17530
 
 
17531
    return true;
 
17532
}
 
17533
 
 
17534
//---------------------------------------------------------------------
 
17535
bool ColladaParserAutoGen15Private::_freeAttributes__profile_COMMON__technique__constant( void* attributeData )
 
17536
{
 
17537
    return true;
 
17538
}
 
17539
 
 
17540
//---------------------------------------------------------------------
 
17541
bool ColladaParserAutoGen15Private::_data__emission( const ParserChar* text, size_t textLength )
 
17542
{
 
17543
    return true;
 
17544
}
 
17545
 
 
17546
//---------------------------------------------------------------------
 
17547
bool ColladaParserAutoGen15Private::_preBegin__emission( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
17548
{
 
17549
#ifdef GENERATEDSAXPARSER_VALIDATION
 
17550
    if ( mValidate )
 
17551
    {
 
17552
 
 
17553
        bool validationResult = _validateBegin__emission( attributes, attributeDataPtr, validationDataPtr );
 
17554
        if ( !validationResult ) return false;
 
17555
 
 
17556
    } // validation
 
17557
#endif
 
17558
 
 
17559
    return true;
 
17560
}
 
17561
 
 
17562
//---------------------------------------------------------------------
 
17563
bool ColladaParserAutoGen15Private::_preEnd__emission()
 
17564
{
 
17565
#ifdef GENERATEDSAXPARSER_VALIDATION
 
17566
    if ( mValidate )
 
17567
    {
 
17568
 
 
17569
        bool validationResult = _validateEnd__emission();
 
17570
        if ( !validationResult ) return false;
 
17571
 
 
17572
    } // validation
 
17573
#endif
 
17574
 
 
17575
    return true;
 
17576
}
 
17577
 
 
17578
//---------------------------------------------------------------------
 
17579
bool ColladaParserAutoGen15Private::_freeAttributes__emission( void* attributeData )
 
17580
{
 
17581
    return true;
 
17582
}
 
17583
 
 
17584
//---------------------------------------------------------------------
 
17585
const fx_common_color_or_texture_type____color__AttributeData fx_common_color_or_texture_type____color__AttributeData::DEFAULT = {0};
 
17586
 
 
17587
//---------------------------------------------------------------------
 
17588
bool ColladaParserAutoGen15Private::_data__fx_common_color_or_texture_type____color( const ParserChar* text, size_t textLength )
 
17589
{
 
17590
#ifdef GENERATEDSAXPARSER_VALIDATION
 
17591
    if ( mValidate )
 
17592
    {
 
17593
        border_color__ValidationData* validationData = (border_color__ValidationData*)mValidationDataStack.top();
 
17594
        DISABLE_WARNING_UNUSED(validationData)
 
17595
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fx_common_color_or_texture_type____color, &validate__fx_color_type__stream, &validationData->validationWholeSize, 0);
 
17596
    }
 
17597
    else
 
17598
    {
 
17599
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fx_common_color_or_texture_type____color);
 
17600
    }
 
17601
#else
 
17602
    {
 
17603
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fx_common_color_or_texture_type____color);
 
17604
    } // validation
 
17605
#endif
 
17606
 
 
17607
}
 
17608
 
 
17609
//---------------------------------------------------------------------
 
17610
bool ColladaParserAutoGen15Private::_preBegin__fx_common_color_or_texture_type____color( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
17611
{
 
17612
#ifdef GENERATEDSAXPARSER_VALIDATION
 
17613
    if ( mValidate )
 
17614
    {
 
17615
 
 
17616
        bool validationResult = _validateBegin__fx_common_color_or_texture_type____color( attributes, attributeDataPtr, validationDataPtr );
 
17617
        if ( !validationResult ) return false;
 
17618
 
 
17619
    } // validation
 
17620
#endif
 
17621
 
 
17622
fx_common_color_or_texture_type____color__AttributeData* attributeData = newData<fx_common_color_or_texture_type____color__AttributeData>(attributeDataPtr);
 
17623
 
 
17624
const ParserChar** attributeArray = attributes.attributes;
 
17625
if ( attributeArray )
 
17626
{
 
17627
    while (true)
 
17628
    {
 
17629
        const ParserChar * attribute = *attributeArray;
 
17630
        if ( !attribute )
 
17631
            break;
 
17632
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
17633
        attributeArray++;
 
17634
        if ( !attributeArray )
 
17635
            return false;
 
17636
        const ParserChar* attributeValue = *attributeArray;
 
17637
        attributeArray++;
 
17638
 
 
17639
 
 
17640
    switch ( hash )
 
17641
    {
 
17642
    case HASH_ATTRIBUTE_SID:
 
17643
    {
 
17644
 
 
17645
attributeData->sid = attributeValue;
 
17646
#ifdef GENERATEDSAXPARSER_VALIDATION
 
17647
    if ( mValidate )
 
17648
    {
 
17649
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
17650
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
17651
    {
 
17652
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
17653
            simpleTypeValidationResult,
 
17654
            HASH_ELEMENT_COLOR,
 
17655
            HASH_ATTRIBUTE_SID,
 
17656
            attributeValue) )
 
17657
        {
 
17658
            return false;
 
17659
        }
 
17660
    }
 
17661
    } // validation
 
17662
#endif
 
17663
 
 
17664
    break;
 
17665
    }
 
17666
    default:
 
17667
    {
 
17668
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_COLOR, attribute, attributeValue))
 
17669
            {return false;}
 
17670
    }
 
17671
    }
 
17672
    }
 
17673
}
 
17674
 
 
17675
 
 
17676
    return true;
 
17677
}
 
17678
 
 
17679
//---------------------------------------------------------------------
 
17680
bool ColladaParserAutoGen15Private::_preEnd__fx_common_color_or_texture_type____color()
 
17681
{
 
17682
#ifdef GENERATEDSAXPARSER_VALIDATION
 
17683
    if ( mValidate )
 
17684
    {
 
17685
 
 
17686
        bool validationResult = _validateEnd__fx_common_color_or_texture_type____color();
 
17687
        if ( !validationResult ) return false;
 
17688
 
 
17689
    } // validation
 
17690
#endif
 
17691
 
 
17692
#ifdef GENERATEDSAXPARSER_VALIDATION
 
17693
    if ( mValidate )
 
17694
    {
 
17695
        border_color__ValidationData* validationData = (border_color__ValidationData*)mValidationDataStack.top();
 
17696
        DISABLE_WARNING_UNUSED(validationData)
 
17697
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__fx_common_color_or_texture_type____color, &validate__fx_color_type__streamEnd, &validationData->validationWholeSize, 0 );
 
17698
        ParserError::ErrorType simpleTypeValidationResult = validate__fx_color_type(0, (*(&validationData->validationWholeSize)));
 
17699
        mValidationDataStack.deleteObject();
 
17700
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
17701
        {
 
17702
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
17703
                simpleTypeValidationResult,
 
17704
                HASH_ELEMENT_COLOR,
 
17705
                (ParserChar*)0, 0 ) )
 
17706
            {
 
17707
                return false;
 
17708
            }
 
17709
        }
 
17710
        return returnValue;
 
17711
    }
 
17712
    else
 
17713
    {
 
17714
return floatDataEnd( &ColladaParserAutoGen15::data__fx_common_color_or_texture_type____color );
 
17715
    }
 
17716
#else
 
17717
    {
 
17718
return floatDataEnd( &ColladaParserAutoGen15::data__fx_common_color_or_texture_type____color );
 
17719
    } // validation
 
17720
#endif
 
17721
 
 
17722
}
 
17723
 
 
17724
//---------------------------------------------------------------------
 
17725
bool ColladaParserAutoGen15Private::_freeAttributes__fx_common_color_or_texture_type____color( void* attributeData )
 
17726
{
 
17727
    fx_common_color_or_texture_type____color__AttributeData* typedAttributeData = static_cast<fx_common_color_or_texture_type____color__AttributeData*>(attributeData);
 
17728
 
 
17729
    typedAttributeData->~fx_common_color_or_texture_type____color__AttributeData();
 
17730
 
 
17731
    return true;
 
17732
}
 
17733
 
 
17734
//---------------------------------------------------------------------
 
17735
const fx_common_color_or_texture_type____param__AttributeData fx_common_color_or_texture_type____param__AttributeData::DEFAULT = {0};
 
17736
 
 
17737
//---------------------------------------------------------------------
 
17738
bool ColladaParserAutoGen15Private::_data__fx_common_color_or_texture_type____param( const ParserChar* text, size_t textLength )
 
17739
{
 
17740
    return true;
 
17741
}
 
17742
 
 
17743
//---------------------------------------------------------------------
 
17744
bool ColladaParserAutoGen15Private::_preBegin__fx_common_color_or_texture_type____param( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
17745
{
 
17746
#ifdef GENERATEDSAXPARSER_VALIDATION
 
17747
    if ( mValidate )
 
17748
    {
 
17749
 
 
17750
        bool validationResult = _validateBegin__fx_common_color_or_texture_type____param( attributes, attributeDataPtr, validationDataPtr );
 
17751
        if ( !validationResult ) return false;
 
17752
 
 
17753
    } // validation
 
17754
#endif
 
17755
 
 
17756
fx_common_color_or_texture_type____param__AttributeData* attributeData = newData<fx_common_color_or_texture_type____param__AttributeData>(attributeDataPtr);
 
17757
 
 
17758
const ParserChar** attributeArray = attributes.attributes;
 
17759
if ( attributeArray )
 
17760
{
 
17761
    while (true)
 
17762
    {
 
17763
        const ParserChar * attribute = *attributeArray;
 
17764
        if ( !attribute )
 
17765
            break;
 
17766
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
17767
        attributeArray++;
 
17768
        if ( !attributeArray )
 
17769
            return false;
 
17770
        const ParserChar* attributeValue = *attributeArray;
 
17771
        attributeArray++;
 
17772
 
 
17773
 
 
17774
    switch ( hash )
 
17775
    {
 
17776
    case HASH_ATTRIBUTE_REF:
 
17777
    {
 
17778
 
 
17779
attributeData->ref = attributeValue;
 
17780
#ifdef GENERATEDSAXPARSER_VALIDATION
 
17781
    if ( mValidate )
 
17782
    {
 
17783
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->ref, strlen(attributeData->ref));
 
17784
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
17785
    {
 
17786
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
17787
            simpleTypeValidationResult,
 
17788
            HASH_ELEMENT_PARAM,
 
17789
            HASH_ATTRIBUTE_REF,
 
17790
            attributeValue) )
 
17791
        {
 
17792
            return false;
 
17793
        }
 
17794
    }
 
17795
    } // validation
 
17796
#endif
 
17797
 
 
17798
    break;
 
17799
    }
 
17800
    default:
 
17801
    {
 
17802
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_PARAM, attribute, attributeValue))
 
17803
            {return false;}
 
17804
    }
 
17805
    }
 
17806
    }
 
17807
}
 
17808
if ( !attributeData->ref )
 
17809
{
 
17810
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_PARAM, HASH_ATTRIBUTE_REF, 0 ) )
 
17811
        return false;
 
17812
}
 
17813
 
 
17814
 
 
17815
    return true;
 
17816
}
 
17817
 
 
17818
//---------------------------------------------------------------------
 
17819
bool ColladaParserAutoGen15Private::_preEnd__fx_common_color_or_texture_type____param()
 
17820
{
 
17821
#ifdef GENERATEDSAXPARSER_VALIDATION
 
17822
    if ( mValidate )
 
17823
    {
 
17824
 
 
17825
        bool validationResult = _validateEnd__fx_common_color_or_texture_type____param();
 
17826
        if ( !validationResult ) return false;
 
17827
 
 
17828
    } // validation
 
17829
#endif
 
17830
 
 
17831
    return true;
 
17832
}
 
17833
 
 
17834
//---------------------------------------------------------------------
 
17835
bool ColladaParserAutoGen15Private::_freeAttributes__fx_common_color_or_texture_type____param( void* attributeData )
 
17836
{
 
17837
    fx_common_color_or_texture_type____param__AttributeData* typedAttributeData = static_cast<fx_common_color_or_texture_type____param__AttributeData*>(attributeData);
 
17838
 
 
17839
    typedAttributeData->~fx_common_color_or_texture_type____param__AttributeData();
 
17840
 
 
17841
    return true;
 
17842
}
 
17843
 
 
17844
//---------------------------------------------------------------------
 
17845
const texture__AttributeData texture__AttributeData::DEFAULT = {0, 0};
 
17846
 
 
17847
//---------------------------------------------------------------------
 
17848
bool ColladaParserAutoGen15Private::_data__texture( const ParserChar* text, size_t textLength )
 
17849
{
 
17850
    return true;
 
17851
}
 
17852
 
 
17853
//---------------------------------------------------------------------
 
17854
bool ColladaParserAutoGen15Private::_preBegin__texture( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
17855
{
 
17856
#ifdef GENERATEDSAXPARSER_VALIDATION
 
17857
    if ( mValidate )
 
17858
    {
 
17859
 
 
17860
        bool validationResult = _validateBegin__texture( attributes, attributeDataPtr, validationDataPtr );
 
17861
        if ( !validationResult ) return false;
 
17862
 
 
17863
    } // validation
 
17864
#endif
 
17865
 
 
17866
texture__AttributeData* attributeData = newData<texture__AttributeData>(attributeDataPtr);
 
17867
 
 
17868
const ParserChar** attributeArray = attributes.attributes;
 
17869
if ( attributeArray )
 
17870
{
 
17871
    while (true)
 
17872
    {
 
17873
        const ParserChar * attribute = *attributeArray;
 
17874
        if ( !attribute )
 
17875
            break;
 
17876
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
17877
        attributeArray++;
 
17878
        if ( !attributeArray )
 
17879
            return false;
 
17880
        const ParserChar* attributeValue = *attributeArray;
 
17881
        attributeArray++;
 
17882
 
 
17883
 
 
17884
    switch ( hash )
 
17885
    {
 
17886
    case HASH_ATTRIBUTE_TEXTURE:
 
17887
    {
 
17888
 
 
17889
attributeData->texture = attributeValue;
 
17890
#ifdef GENERATEDSAXPARSER_VALIDATION
 
17891
    if ( mValidate )
 
17892
    {
 
17893
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->texture, strlen(attributeData->texture));
 
17894
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
17895
    {
 
17896
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
17897
            simpleTypeValidationResult,
 
17898
            HASH_ELEMENT_TEXTURE,
 
17899
            HASH_ATTRIBUTE_TEXTURE,
 
17900
            attributeValue) )
 
17901
        {
 
17902
            return false;
 
17903
        }
 
17904
    }
 
17905
    } // validation
 
17906
#endif
 
17907
 
 
17908
    break;
 
17909
    }
 
17910
    case HASH_ATTRIBUTE_TEXCOORD:
 
17911
    {
 
17912
 
 
17913
attributeData->texcoord = attributeValue;
 
17914
#ifdef GENERATEDSAXPARSER_VALIDATION
 
17915
    if ( mValidate )
 
17916
    {
 
17917
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->texcoord, strlen(attributeData->texcoord));
 
17918
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
17919
    {
 
17920
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
17921
            simpleTypeValidationResult,
 
17922
            HASH_ELEMENT_TEXTURE,
 
17923
            HASH_ATTRIBUTE_TEXCOORD,
 
17924
            attributeValue) )
 
17925
        {
 
17926
            return false;
 
17927
        }
 
17928
    }
 
17929
    } // validation
 
17930
#endif
 
17931
 
 
17932
    break;
 
17933
    }
 
17934
    default:
 
17935
    {
 
17936
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_TEXTURE, attribute, attributeValue))
 
17937
            {return false;}
 
17938
    }
 
17939
    }
 
17940
    }
 
17941
}
 
17942
if ( !attributeData->texture )
 
17943
{
 
17944
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_TEXTURE, HASH_ATTRIBUTE_TEXTURE, 0 ) )
 
17945
        return false;
 
17946
}
 
17947
if ( !attributeData->texcoord )
 
17948
{
 
17949
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_TEXTURE, HASH_ATTRIBUTE_TEXCOORD, 0 ) )
 
17950
        return false;
 
17951
}
 
17952
 
 
17953
 
 
17954
    return true;
 
17955
}
 
17956
 
 
17957
//---------------------------------------------------------------------
 
17958
bool ColladaParserAutoGen15Private::_preEnd__texture()
 
17959
{
 
17960
#ifdef GENERATEDSAXPARSER_VALIDATION
 
17961
    if ( mValidate )
 
17962
    {
 
17963
 
 
17964
        bool validationResult = _validateEnd__texture();
 
17965
        if ( !validationResult ) return false;
 
17966
 
 
17967
    } // validation
 
17968
#endif
 
17969
 
 
17970
    return true;
 
17971
}
 
17972
 
 
17973
//---------------------------------------------------------------------
 
17974
bool ColladaParserAutoGen15Private::_freeAttributes__texture( void* attributeData )
 
17975
{
 
17976
    texture__AttributeData* typedAttributeData = static_cast<texture__AttributeData*>(attributeData);
 
17977
 
 
17978
    typedAttributeData->~texture__AttributeData();
 
17979
 
 
17980
    return true;
 
17981
}
 
17982
 
 
17983
//---------------------------------------------------------------------
 
17984
bool ColladaParserAutoGen15Private::_data__reflective( const ParserChar* text, size_t textLength )
 
17985
{
 
17986
    return true;
 
17987
}
 
17988
 
 
17989
//---------------------------------------------------------------------
 
17990
bool ColladaParserAutoGen15Private::_preBegin__reflective( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
17991
{
 
17992
#ifdef GENERATEDSAXPARSER_VALIDATION
 
17993
    if ( mValidate )
 
17994
    {
 
17995
 
 
17996
        bool validationResult = _validateBegin__reflective( attributes, attributeDataPtr, validationDataPtr );
 
17997
        if ( !validationResult ) return false;
 
17998
 
 
17999
    } // validation
 
18000
#endif
 
18001
 
 
18002
    return true;
 
18003
}
 
18004
 
 
18005
//---------------------------------------------------------------------
 
18006
bool ColladaParserAutoGen15Private::_preEnd__reflective()
 
18007
{
 
18008
#ifdef GENERATEDSAXPARSER_VALIDATION
 
18009
    if ( mValidate )
 
18010
    {
 
18011
 
 
18012
        bool validationResult = _validateEnd__reflective();
 
18013
        if ( !validationResult ) return false;
 
18014
 
 
18015
    } // validation
 
18016
#endif
 
18017
 
 
18018
    return true;
 
18019
}
 
18020
 
 
18021
//---------------------------------------------------------------------
 
18022
bool ColladaParserAutoGen15Private::_freeAttributes__reflective( void* attributeData )
 
18023
{
 
18024
    return true;
 
18025
}
 
18026
 
 
18027
//---------------------------------------------------------------------
 
18028
bool ColladaParserAutoGen15Private::_data__reflectivity( const ParserChar* text, size_t textLength )
 
18029
{
 
18030
    return true;
 
18031
}
 
18032
 
 
18033
//---------------------------------------------------------------------
 
18034
bool ColladaParserAutoGen15Private::_preBegin__reflectivity( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
18035
{
 
18036
#ifdef GENERATEDSAXPARSER_VALIDATION
 
18037
    if ( mValidate )
 
18038
    {
 
18039
 
 
18040
        bool validationResult = _validateBegin__reflectivity( attributes, attributeDataPtr, validationDataPtr );
 
18041
        if ( !validationResult ) return false;
 
18042
 
 
18043
    } // validation
 
18044
#endif
 
18045
 
 
18046
    return true;
 
18047
}
 
18048
 
 
18049
//---------------------------------------------------------------------
 
18050
bool ColladaParserAutoGen15Private::_preEnd__reflectivity()
 
18051
{
 
18052
#ifdef GENERATEDSAXPARSER_VALIDATION
 
18053
    if ( mValidate )
 
18054
    {
 
18055
 
 
18056
        bool validationResult = _validateEnd__reflectivity();
 
18057
        if ( !validationResult ) return false;
 
18058
 
 
18059
    } // validation
 
18060
#endif
 
18061
 
 
18062
    return true;
 
18063
}
 
18064
 
 
18065
//---------------------------------------------------------------------
 
18066
bool ColladaParserAutoGen15Private::_freeAttributes__reflectivity( void* attributeData )
 
18067
{
 
18068
    return true;
 
18069
}
 
18070
 
 
18071
//---------------------------------------------------------------------
 
18072
const fx_common_float_or_param_type____float__AttributeData fx_common_float_or_param_type____float__AttributeData::DEFAULT = {0};
 
18073
 
 
18074
//---------------------------------------------------------------------
 
18075
bool ColladaParserAutoGen15Private::_data__fx_common_float_or_param_type____float( const ParserChar* text, size_t textLength )
 
18076
{
 
18077
if (!mLastIncompleteFragmentInCharacterData)
 
18078
{
 
18079
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
18080
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
18081
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
18082
}
 
18083
else
 
18084
{
 
18085
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
18086
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
18087
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
18088
        mLastIncompleteFragmentInCharacterData = tmp;
 
18089
    }
 
18090
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
18091
    mEndOfDataInCurrentObjectOnStack += textLength;
 
18092
}
 
18093
return true;
 
18094
}
 
18095
 
 
18096
//---------------------------------------------------------------------
 
18097
bool ColladaParserAutoGen15Private::_preBegin__fx_common_float_or_param_type____float( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
18098
{
 
18099
#ifdef GENERATEDSAXPARSER_VALIDATION
 
18100
    if ( mValidate )
 
18101
    {
 
18102
 
 
18103
        bool validationResult = _validateBegin__fx_common_float_or_param_type____float( attributes, attributeDataPtr, validationDataPtr );
 
18104
        if ( !validationResult ) return false;
 
18105
 
 
18106
    } // validation
 
18107
#endif
 
18108
 
 
18109
fx_common_float_or_param_type____float__AttributeData* attributeData = newData<fx_common_float_or_param_type____float__AttributeData>(attributeDataPtr);
 
18110
 
 
18111
const ParserChar** attributeArray = attributes.attributes;
 
18112
if ( attributeArray )
 
18113
{
 
18114
    while (true)
 
18115
    {
 
18116
        const ParserChar * attribute = *attributeArray;
 
18117
        if ( !attribute )
 
18118
            break;
 
18119
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
18120
        attributeArray++;
 
18121
        if ( !attributeArray )
 
18122
            return false;
 
18123
        const ParserChar* attributeValue = *attributeArray;
 
18124
        attributeArray++;
 
18125
 
 
18126
 
 
18127
    switch ( hash )
 
18128
    {
 
18129
    case HASH_ATTRIBUTE_SID:
 
18130
    {
 
18131
 
 
18132
attributeData->sid = attributeValue;
 
18133
#ifdef GENERATEDSAXPARSER_VALIDATION
 
18134
    if ( mValidate )
 
18135
    {
 
18136
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
18137
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
18138
    {
 
18139
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
18140
            simpleTypeValidationResult,
 
18141
            HASH_ELEMENT_FLOAT,
 
18142
            HASH_ATTRIBUTE_SID,
 
18143
            attributeValue) )
 
18144
        {
 
18145
            return false;
 
18146
        }
 
18147
    }
 
18148
    } // validation
 
18149
#endif
 
18150
 
 
18151
    break;
 
18152
    }
 
18153
    default:
 
18154
    {
 
18155
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FLOAT, attribute, attributeValue))
 
18156
            {return false;}
 
18157
    }
 
18158
    }
 
18159
    }
 
18160
}
 
18161
 
 
18162
 
 
18163
    return true;
 
18164
}
 
18165
 
 
18166
//---------------------------------------------------------------------
 
18167
bool ColladaParserAutoGen15Private::_preEnd__fx_common_float_or_param_type____float()
 
18168
{
 
18169
#ifdef GENERATEDSAXPARSER_VALIDATION
 
18170
    if ( mValidate )
 
18171
    {
 
18172
 
 
18173
        bool validationResult = _validateEnd__fx_common_float_or_param_type____float();
 
18174
        if ( !validationResult ) return false;
 
18175
 
 
18176
    } // validation
 
18177
#endif
 
18178
 
 
18179
bool failed;
 
18180
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
18181
DISABLE_WARNING_UNUSED(ptrForErr)
 
18182
float parameter = GeneratedSaxParser::Utils::toFloat((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
18183
bool returnValue;
 
18184
if (!failed)
 
18185
{
 
18186
    returnValue = mImpl->data__fx_common_float_or_param_type____float(parameter);
 
18187
}
 
18188
else
 
18189
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_FLOAT, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
18190
if (mLastIncompleteFragmentInCharacterData)
 
18191
    mStackMemoryManager.deleteObject();
 
18192
mLastIncompleteFragmentInCharacterData = 0;
 
18193
mEndOfDataInCurrentObjectOnStack = 0;
 
18194
return returnValue;
 
18195
}
 
18196
 
 
18197
//---------------------------------------------------------------------
 
18198
bool ColladaParserAutoGen15Private::_freeAttributes__fx_common_float_or_param_type____float( void* attributeData )
 
18199
{
 
18200
    fx_common_float_or_param_type____float__AttributeData* typedAttributeData = static_cast<fx_common_float_or_param_type____float__AttributeData*>(attributeData);
 
18201
 
 
18202
    typedAttributeData->~fx_common_float_or_param_type____float__AttributeData();
 
18203
 
 
18204
    return true;
 
18205
}
 
18206
 
 
18207
//---------------------------------------------------------------------
 
18208
const fx_common_float_or_param_type____param__AttributeData fx_common_float_or_param_type____param__AttributeData::DEFAULT = {0};
 
18209
 
 
18210
//---------------------------------------------------------------------
 
18211
bool ColladaParserAutoGen15Private::_data__fx_common_float_or_param_type____param( const ParserChar* text, size_t textLength )
 
18212
{
 
18213
    return true;
 
18214
}
 
18215
 
 
18216
//---------------------------------------------------------------------
 
18217
bool ColladaParserAutoGen15Private::_preBegin__fx_common_float_or_param_type____param( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
18218
{
 
18219
#ifdef GENERATEDSAXPARSER_VALIDATION
 
18220
    if ( mValidate )
 
18221
    {
 
18222
 
 
18223
        bool validationResult = _validateBegin__fx_common_float_or_param_type____param( attributes, attributeDataPtr, validationDataPtr );
 
18224
        if ( !validationResult ) return false;
 
18225
 
 
18226
    } // validation
 
18227
#endif
 
18228
 
 
18229
fx_common_float_or_param_type____param__AttributeData* attributeData = newData<fx_common_float_or_param_type____param__AttributeData>(attributeDataPtr);
 
18230
 
 
18231
const ParserChar** attributeArray = attributes.attributes;
 
18232
if ( attributeArray )
 
18233
{
 
18234
    while (true)
 
18235
    {
 
18236
        const ParserChar * attribute = *attributeArray;
 
18237
        if ( !attribute )
 
18238
            break;
 
18239
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
18240
        attributeArray++;
 
18241
        if ( !attributeArray )
 
18242
            return false;
 
18243
        const ParserChar* attributeValue = *attributeArray;
 
18244
        attributeArray++;
 
18245
 
 
18246
 
 
18247
    switch ( hash )
 
18248
    {
 
18249
    case HASH_ATTRIBUTE_REF:
 
18250
    {
 
18251
 
 
18252
attributeData->ref = attributeValue;
 
18253
#ifdef GENERATEDSAXPARSER_VALIDATION
 
18254
    if ( mValidate )
 
18255
    {
 
18256
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->ref, strlen(attributeData->ref));
 
18257
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
18258
    {
 
18259
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
18260
            simpleTypeValidationResult,
 
18261
            HASH_ELEMENT_PARAM,
 
18262
            HASH_ATTRIBUTE_REF,
 
18263
            attributeValue) )
 
18264
        {
 
18265
            return false;
 
18266
        }
 
18267
    }
 
18268
    } // validation
 
18269
#endif
 
18270
 
 
18271
    break;
 
18272
    }
 
18273
    default:
 
18274
    {
 
18275
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_PARAM, attribute, attributeValue))
 
18276
            {return false;}
 
18277
    }
 
18278
    }
 
18279
    }
 
18280
}
 
18281
if ( !attributeData->ref )
 
18282
{
 
18283
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_PARAM, HASH_ATTRIBUTE_REF, 0 ) )
 
18284
        return false;
 
18285
}
 
18286
 
 
18287
 
 
18288
    return true;
 
18289
}
 
18290
 
 
18291
//---------------------------------------------------------------------
 
18292
bool ColladaParserAutoGen15Private::_preEnd__fx_common_float_or_param_type____param()
 
18293
{
 
18294
#ifdef GENERATEDSAXPARSER_VALIDATION
 
18295
    if ( mValidate )
 
18296
    {
 
18297
 
 
18298
        bool validationResult = _validateEnd__fx_common_float_or_param_type____param();
 
18299
        if ( !validationResult ) return false;
 
18300
 
 
18301
    } // validation
 
18302
#endif
 
18303
 
 
18304
    return true;
 
18305
}
 
18306
 
 
18307
//---------------------------------------------------------------------
 
18308
bool ColladaParserAutoGen15Private::_freeAttributes__fx_common_float_or_param_type____param( void* attributeData )
 
18309
{
 
18310
    fx_common_float_or_param_type____param__AttributeData* typedAttributeData = static_cast<fx_common_float_or_param_type____param__AttributeData*>(attributeData);
 
18311
 
 
18312
    typedAttributeData->~fx_common_float_or_param_type____param__AttributeData();
 
18313
 
 
18314
    return true;
 
18315
}
 
18316
 
 
18317
//---------------------------------------------------------------------
 
18318
const transparent__AttributeData transparent__AttributeData::DEFAULT = {ENUM__fx_opaque_enum__A_ONE};
 
18319
 
 
18320
//---------------------------------------------------------------------
 
18321
bool ColladaParserAutoGen15Private::_data__transparent( const ParserChar* text, size_t textLength )
 
18322
{
 
18323
    return true;
 
18324
}
 
18325
 
 
18326
//---------------------------------------------------------------------
 
18327
bool ColladaParserAutoGen15Private::_preBegin__transparent( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
18328
{
 
18329
#ifdef GENERATEDSAXPARSER_VALIDATION
 
18330
    if ( mValidate )
 
18331
    {
 
18332
 
 
18333
        bool validationResult = _validateBegin__transparent( attributes, attributeDataPtr, validationDataPtr );
 
18334
        if ( !validationResult ) return false;
 
18335
 
 
18336
    } // validation
 
18337
#endif
 
18338
 
 
18339
transparent__AttributeData* attributeData = newData<transparent__AttributeData>(attributeDataPtr);
 
18340
 
 
18341
const ParserChar** attributeArray = attributes.attributes;
 
18342
if ( attributeArray )
 
18343
{
 
18344
    while (true)
 
18345
    {
 
18346
        const ParserChar * attribute = *attributeArray;
 
18347
        if ( !attribute )
 
18348
            break;
 
18349
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
18350
        attributeArray++;
 
18351
        if ( !attributeArray )
 
18352
            return false;
 
18353
        const ParserChar* attributeValue = *attributeArray;
 
18354
        attributeArray++;
 
18355
 
 
18356
 
 
18357
    switch ( hash )
 
18358
    {
 
18359
    case HASH_ATTRIBUTE_OPAQUE:
 
18360
    {
 
18361
bool failed;
 
18362
attributeData->opaque = Utils::toEnum<ENUM__fx_opaque_enum, StringHash, ENUM__fx_opaque_enum__COUNT>(attributeValue, failed, ENUM__fx_opaque_enumMap, Utils::calculateStringHash);
 
18363
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
18364
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
18365
        HASH_ELEMENT_TRANSPARENT,
 
18366
        HASH_ATTRIBUTE_OPAQUE,
 
18367
        attributeValue))
 
18368
{
 
18369
    return false;
 
18370
}
 
18371
 
 
18372
    break;
 
18373
    }
 
18374
    default:
 
18375
    {
 
18376
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_TRANSPARENT, attribute, attributeValue))
 
18377
            {return false;}
 
18378
    }
 
18379
    }
 
18380
    }
 
18381
}
 
18382
 
 
18383
 
 
18384
    return true;
 
18385
}
 
18386
 
 
18387
//---------------------------------------------------------------------
 
18388
bool ColladaParserAutoGen15Private::_preEnd__transparent()
 
18389
{
 
18390
#ifdef GENERATEDSAXPARSER_VALIDATION
 
18391
    if ( mValidate )
 
18392
    {
 
18393
 
 
18394
        bool validationResult = _validateEnd__transparent();
 
18395
        if ( !validationResult ) return false;
 
18396
 
 
18397
    } // validation
 
18398
#endif
 
18399
 
 
18400
    return true;
 
18401
}
 
18402
 
 
18403
//---------------------------------------------------------------------
 
18404
bool ColladaParserAutoGen15Private::_freeAttributes__transparent( void* attributeData )
 
18405
{
 
18406
    transparent__AttributeData* typedAttributeData = static_cast<transparent__AttributeData*>(attributeData);
 
18407
 
 
18408
    typedAttributeData->~transparent__AttributeData();
 
18409
 
 
18410
    return true;
 
18411
}
 
18412
 
 
18413
//---------------------------------------------------------------------
 
18414
ENUM__fx_opaque_enum ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__fx_opaque_enum (
 
18415
    const ParserChar* prefixedBuffer,
 
18416
    const ParserChar* prefixedBufferEnd,
 
18417
    const ParserChar** buffer,
 
18418
    const ParserChar* bufferEnd,
 
18419
    bool& failed,
 
18420
    const std::pair<StringHash, ENUM__fx_opaque_enum>* enumMap,
 
18421
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
18422
)
 
18423
{
 
18424
    return toEnumDataPrefix<ENUM__fx_opaque_enum, StringHash, ENUM__fx_opaque_enum__COUNT, &toEnum_ENUM__fx_opaque_enum>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
18425
}
 
18426
 
 
18427
//---------------------------------------------------------------------
 
18428
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__fx_opaque_enum (
 
18429
    const ParserChar* text,
 
18430
    size_t textLength,
 
18431
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__fx_opaque_enum*, size_t ),
 
18432
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
18433
)
 
18434
{
 
18435
    return characterData2EnumData<ENUM__fx_opaque_enum, StringHash, ENUM__fx_opaque_enum__COUNT>(text, textLength, dataFunction, ENUM__fx_opaque_enumMap, baseConversionFunc, &toEnum_ENUM__fx_opaque_enum, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__fx_opaque_enum);
 
18436
}
 
18437
 
 
18438
//---------------------------------------------------------------------
 
18439
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__fx_opaque_enum (
 
18440
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__fx_opaque_enum*, size_t ),
 
18441
    const std::pair<StringHash, ENUM__fx_opaque_enum>* enumMap,
 
18442
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
18443
    ENUM__fx_opaque_enum (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__fx_opaque_enum>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
18444
)
 
18445
{
 
18446
    return dataEnumEnd<ENUM__fx_opaque_enum, StringHash, ENUM__fx_opaque_enum__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
18447
}
 
18448
 
 
18449
//---------------------------------------------------------------------
 
18450
bool ColladaParserAutoGen15Private::_data__transparency( const ParserChar* text, size_t textLength )
 
18451
{
 
18452
    return true;
 
18453
}
 
18454
 
 
18455
//---------------------------------------------------------------------
 
18456
bool ColladaParserAutoGen15Private::_preBegin__transparency( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
18457
{
 
18458
#ifdef GENERATEDSAXPARSER_VALIDATION
 
18459
    if ( mValidate )
 
18460
    {
 
18461
 
 
18462
        bool validationResult = _validateBegin__transparency( attributes, attributeDataPtr, validationDataPtr );
 
18463
        if ( !validationResult ) return false;
 
18464
 
 
18465
    } // validation
 
18466
#endif
 
18467
 
 
18468
    return true;
 
18469
}
 
18470
 
 
18471
//---------------------------------------------------------------------
 
18472
bool ColladaParserAutoGen15Private::_preEnd__transparency()
 
18473
{
 
18474
#ifdef GENERATEDSAXPARSER_VALIDATION
 
18475
    if ( mValidate )
 
18476
    {
 
18477
 
 
18478
        bool validationResult = _validateEnd__transparency();
 
18479
        if ( !validationResult ) return false;
 
18480
 
 
18481
    } // validation
 
18482
#endif
 
18483
 
 
18484
    return true;
 
18485
}
 
18486
 
 
18487
//---------------------------------------------------------------------
 
18488
bool ColladaParserAutoGen15Private::_freeAttributes__transparency( void* attributeData )
 
18489
{
 
18490
    return true;
 
18491
}
 
18492
 
 
18493
//---------------------------------------------------------------------
 
18494
bool ColladaParserAutoGen15Private::_data__index_of_refraction( const ParserChar* text, size_t textLength )
 
18495
{
 
18496
    return true;
 
18497
}
 
18498
 
 
18499
//---------------------------------------------------------------------
 
18500
bool ColladaParserAutoGen15Private::_preBegin__index_of_refraction( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
18501
{
 
18502
#ifdef GENERATEDSAXPARSER_VALIDATION
 
18503
    if ( mValidate )
 
18504
    {
 
18505
 
 
18506
        bool validationResult = _validateBegin__index_of_refraction( attributes, attributeDataPtr, validationDataPtr );
 
18507
        if ( !validationResult ) return false;
 
18508
 
 
18509
    } // validation
 
18510
#endif
 
18511
 
 
18512
    return true;
 
18513
}
 
18514
 
 
18515
//---------------------------------------------------------------------
 
18516
bool ColladaParserAutoGen15Private::_preEnd__index_of_refraction()
 
18517
{
 
18518
#ifdef GENERATEDSAXPARSER_VALIDATION
 
18519
    if ( mValidate )
 
18520
    {
 
18521
 
 
18522
        bool validationResult = _validateEnd__index_of_refraction();
 
18523
        if ( !validationResult ) return false;
 
18524
 
 
18525
    } // validation
 
18526
#endif
 
18527
 
 
18528
    return true;
 
18529
}
 
18530
 
 
18531
//---------------------------------------------------------------------
 
18532
bool ColladaParserAutoGen15Private::_freeAttributes__index_of_refraction( void* attributeData )
 
18533
{
 
18534
    return true;
 
18535
}
 
18536
 
 
18537
//---------------------------------------------------------------------
 
18538
bool ColladaParserAutoGen15Private::_data__lambert( const ParserChar* text, size_t textLength )
 
18539
{
 
18540
    return true;
 
18541
}
 
18542
 
 
18543
//---------------------------------------------------------------------
 
18544
bool ColladaParserAutoGen15Private::_preBegin__lambert( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
18545
{
 
18546
#ifdef GENERATEDSAXPARSER_VALIDATION
 
18547
    if ( mValidate )
 
18548
    {
 
18549
 
 
18550
        bool validationResult = _validateBegin__lambert( attributes, attributeDataPtr, validationDataPtr );
 
18551
        if ( !validationResult ) return false;
 
18552
 
 
18553
    } // validation
 
18554
#endif
 
18555
 
 
18556
    return true;
 
18557
}
 
18558
 
 
18559
//---------------------------------------------------------------------
 
18560
bool ColladaParserAutoGen15Private::_preEnd__lambert()
 
18561
{
 
18562
#ifdef GENERATEDSAXPARSER_VALIDATION
 
18563
    if ( mValidate )
 
18564
    {
 
18565
 
 
18566
        bool validationResult = _validateEnd__lambert();
 
18567
        if ( !validationResult ) return false;
 
18568
 
 
18569
    } // validation
 
18570
#endif
 
18571
 
 
18572
    return true;
 
18573
}
 
18574
 
 
18575
//---------------------------------------------------------------------
 
18576
bool ColladaParserAutoGen15Private::_freeAttributes__lambert( void* attributeData )
 
18577
{
 
18578
    return true;
 
18579
}
 
18580
 
 
18581
//---------------------------------------------------------------------
 
18582
bool ColladaParserAutoGen15Private::_data__ambient____fx_common_color_or_texture_type( const ParserChar* text, size_t textLength )
 
18583
{
 
18584
    return true;
 
18585
}
 
18586
 
 
18587
//---------------------------------------------------------------------
 
18588
bool ColladaParserAutoGen15Private::_preBegin__ambient____fx_common_color_or_texture_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
18589
{
 
18590
#ifdef GENERATEDSAXPARSER_VALIDATION
 
18591
    if ( mValidate )
 
18592
    {
 
18593
 
 
18594
        bool validationResult = _validateBegin__ambient____fx_common_color_or_texture_type( attributes, attributeDataPtr, validationDataPtr );
 
18595
        if ( !validationResult ) return false;
 
18596
 
 
18597
    } // validation
 
18598
#endif
 
18599
 
 
18600
    return true;
 
18601
}
 
18602
 
 
18603
//---------------------------------------------------------------------
 
18604
bool ColladaParserAutoGen15Private::_preEnd__ambient____fx_common_color_or_texture_type()
 
18605
{
 
18606
#ifdef GENERATEDSAXPARSER_VALIDATION
 
18607
    if ( mValidate )
 
18608
    {
 
18609
 
 
18610
        bool validationResult = _validateEnd__ambient____fx_common_color_or_texture_type();
 
18611
        if ( !validationResult ) return false;
 
18612
 
 
18613
    } // validation
 
18614
#endif
 
18615
 
 
18616
    return true;
 
18617
}
 
18618
 
 
18619
//---------------------------------------------------------------------
 
18620
bool ColladaParserAutoGen15Private::_freeAttributes__ambient____fx_common_color_or_texture_type( void* attributeData )
 
18621
{
 
18622
    return true;
 
18623
}
 
18624
 
 
18625
//---------------------------------------------------------------------
 
18626
bool ColladaParserAutoGen15Private::_data__diffuse( const ParserChar* text, size_t textLength )
 
18627
{
 
18628
    return true;
 
18629
}
 
18630
 
 
18631
//---------------------------------------------------------------------
 
18632
bool ColladaParserAutoGen15Private::_preBegin__diffuse( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
18633
{
 
18634
#ifdef GENERATEDSAXPARSER_VALIDATION
 
18635
    if ( mValidate )
 
18636
    {
 
18637
 
 
18638
        bool validationResult = _validateBegin__diffuse( attributes, attributeDataPtr, validationDataPtr );
 
18639
        if ( !validationResult ) return false;
 
18640
 
 
18641
    } // validation
 
18642
#endif
 
18643
 
 
18644
    return true;
 
18645
}
 
18646
 
 
18647
//---------------------------------------------------------------------
 
18648
bool ColladaParserAutoGen15Private::_preEnd__diffuse()
 
18649
{
 
18650
#ifdef GENERATEDSAXPARSER_VALIDATION
 
18651
    if ( mValidate )
 
18652
    {
 
18653
 
 
18654
        bool validationResult = _validateEnd__diffuse();
 
18655
        if ( !validationResult ) return false;
 
18656
 
 
18657
    } // validation
 
18658
#endif
 
18659
 
 
18660
    return true;
 
18661
}
 
18662
 
 
18663
//---------------------------------------------------------------------
 
18664
bool ColladaParserAutoGen15Private::_freeAttributes__diffuse( void* attributeData )
 
18665
{
 
18666
    return true;
 
18667
}
 
18668
 
 
18669
//---------------------------------------------------------------------
 
18670
bool ColladaParserAutoGen15Private::_data__phong( const ParserChar* text, size_t textLength )
 
18671
{
 
18672
    return true;
 
18673
}
 
18674
 
 
18675
//---------------------------------------------------------------------
 
18676
bool ColladaParserAutoGen15Private::_preBegin__phong( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
18677
{
 
18678
#ifdef GENERATEDSAXPARSER_VALIDATION
 
18679
    if ( mValidate )
 
18680
    {
 
18681
 
 
18682
        bool validationResult = _validateBegin__phong( attributes, attributeDataPtr, validationDataPtr );
 
18683
        if ( !validationResult ) return false;
 
18684
 
 
18685
    } // validation
 
18686
#endif
 
18687
 
 
18688
    return true;
 
18689
}
 
18690
 
 
18691
//---------------------------------------------------------------------
 
18692
bool ColladaParserAutoGen15Private::_preEnd__phong()
 
18693
{
 
18694
#ifdef GENERATEDSAXPARSER_VALIDATION
 
18695
    if ( mValidate )
 
18696
    {
 
18697
 
 
18698
        bool validationResult = _validateEnd__phong();
 
18699
        if ( !validationResult ) return false;
 
18700
 
 
18701
    } // validation
 
18702
#endif
 
18703
 
 
18704
    return true;
 
18705
}
 
18706
 
 
18707
//---------------------------------------------------------------------
 
18708
bool ColladaParserAutoGen15Private::_freeAttributes__phong( void* attributeData )
 
18709
{
 
18710
    return true;
 
18711
}
 
18712
 
 
18713
//---------------------------------------------------------------------
 
18714
bool ColladaParserAutoGen15Private::_data__specular( const ParserChar* text, size_t textLength )
 
18715
{
 
18716
    return true;
 
18717
}
 
18718
 
 
18719
//---------------------------------------------------------------------
 
18720
bool ColladaParserAutoGen15Private::_preBegin__specular( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
18721
{
 
18722
#ifdef GENERATEDSAXPARSER_VALIDATION
 
18723
    if ( mValidate )
 
18724
    {
 
18725
 
 
18726
        bool validationResult = _validateBegin__specular( attributes, attributeDataPtr, validationDataPtr );
 
18727
        if ( !validationResult ) return false;
 
18728
 
 
18729
    } // validation
 
18730
#endif
 
18731
 
 
18732
    return true;
 
18733
}
 
18734
 
 
18735
//---------------------------------------------------------------------
 
18736
bool ColladaParserAutoGen15Private::_preEnd__specular()
 
18737
{
 
18738
#ifdef GENERATEDSAXPARSER_VALIDATION
 
18739
    if ( mValidate )
 
18740
    {
 
18741
 
 
18742
        bool validationResult = _validateEnd__specular();
 
18743
        if ( !validationResult ) return false;
 
18744
 
 
18745
    } // validation
 
18746
#endif
 
18747
 
 
18748
    return true;
 
18749
}
 
18750
 
 
18751
//---------------------------------------------------------------------
 
18752
bool ColladaParserAutoGen15Private::_freeAttributes__specular( void* attributeData )
 
18753
{
 
18754
    return true;
 
18755
}
 
18756
 
 
18757
//---------------------------------------------------------------------
 
18758
bool ColladaParserAutoGen15Private::_data__shininess( const ParserChar* text, size_t textLength )
 
18759
{
 
18760
    return true;
 
18761
}
 
18762
 
 
18763
//---------------------------------------------------------------------
 
18764
bool ColladaParserAutoGen15Private::_preBegin__shininess( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
18765
{
 
18766
#ifdef GENERATEDSAXPARSER_VALIDATION
 
18767
    if ( mValidate )
 
18768
    {
 
18769
 
 
18770
        bool validationResult = _validateBegin__shininess( attributes, attributeDataPtr, validationDataPtr );
 
18771
        if ( !validationResult ) return false;
 
18772
 
 
18773
    } // validation
 
18774
#endif
 
18775
 
 
18776
    return true;
 
18777
}
 
18778
 
 
18779
//---------------------------------------------------------------------
 
18780
bool ColladaParserAutoGen15Private::_preEnd__shininess()
 
18781
{
 
18782
#ifdef GENERATEDSAXPARSER_VALIDATION
 
18783
    if ( mValidate )
 
18784
    {
 
18785
 
 
18786
        bool validationResult = _validateEnd__shininess();
 
18787
        if ( !validationResult ) return false;
 
18788
 
 
18789
    } // validation
 
18790
#endif
 
18791
 
 
18792
    return true;
 
18793
}
 
18794
 
 
18795
//---------------------------------------------------------------------
 
18796
bool ColladaParserAutoGen15Private::_freeAttributes__shininess( void* attributeData )
 
18797
{
 
18798
    return true;
 
18799
}
 
18800
 
 
18801
//---------------------------------------------------------------------
 
18802
bool ColladaParserAutoGen15Private::_data__blinn( const ParserChar* text, size_t textLength )
 
18803
{
 
18804
    return true;
 
18805
}
 
18806
 
 
18807
//---------------------------------------------------------------------
 
18808
bool ColladaParserAutoGen15Private::_preBegin__blinn( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
18809
{
 
18810
#ifdef GENERATEDSAXPARSER_VALIDATION
 
18811
    if ( mValidate )
 
18812
    {
 
18813
 
 
18814
        bool validationResult = _validateBegin__blinn( attributes, attributeDataPtr, validationDataPtr );
 
18815
        if ( !validationResult ) return false;
 
18816
 
 
18817
    } // validation
 
18818
#endif
 
18819
 
 
18820
    return true;
 
18821
}
 
18822
 
 
18823
//---------------------------------------------------------------------
 
18824
bool ColladaParserAutoGen15Private::_preEnd__blinn()
 
18825
{
 
18826
#ifdef GENERATEDSAXPARSER_VALIDATION
 
18827
    if ( mValidate )
 
18828
    {
 
18829
 
 
18830
        bool validationResult = _validateEnd__blinn();
 
18831
        if ( !validationResult ) return false;
 
18832
 
 
18833
    } // validation
 
18834
#endif
 
18835
 
 
18836
    return true;
 
18837
}
 
18838
 
 
18839
//---------------------------------------------------------------------
 
18840
bool ColladaParserAutoGen15Private::_freeAttributes__blinn( void* attributeData )
 
18841
{
 
18842
    return true;
 
18843
}
 
18844
 
 
18845
//---------------------------------------------------------------------
 
18846
const profile_BRIDGE__AttributeData profile_BRIDGE__AttributeData::DEFAULT = {0, 0, 0, 0};
 
18847
 
 
18848
//---------------------------------------------------------------------
 
18849
bool ColladaParserAutoGen15Private::_data__profile_BRIDGE( const ParserChar* text, size_t textLength )
 
18850
{
 
18851
    return true;
 
18852
}
 
18853
 
 
18854
//---------------------------------------------------------------------
 
18855
bool ColladaParserAutoGen15Private::_preBegin__profile_BRIDGE( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
18856
{
 
18857
#ifdef GENERATEDSAXPARSER_VALIDATION
 
18858
    if ( mValidate )
 
18859
    {
 
18860
 
 
18861
        bool validationResult = _validateBegin__profile_BRIDGE( attributes, attributeDataPtr, validationDataPtr );
 
18862
        if ( !validationResult ) return false;
 
18863
 
 
18864
    } // validation
 
18865
#endif
 
18866
 
 
18867
profile_BRIDGE__AttributeData* attributeData = newData<profile_BRIDGE__AttributeData>(attributeDataPtr);
 
18868
 
 
18869
const ParserChar** attributeArray = attributes.attributes;
 
18870
if ( attributeArray )
 
18871
{
 
18872
    while (true)
 
18873
    {
 
18874
        const ParserChar * attribute = *attributeArray;
 
18875
        if ( !attribute )
 
18876
            break;
 
18877
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
18878
        attributeArray++;
 
18879
        if ( !attributeArray )
 
18880
            return false;
 
18881
        const ParserChar* attributeValue = *attributeArray;
 
18882
        attributeArray++;
 
18883
 
 
18884
 
 
18885
    switch ( hash )
 
18886
    {
 
18887
    case HASH_ATTRIBUTE_ID:
 
18888
    {
 
18889
 
 
18890
attributeData->id = attributeValue;
 
18891
 
 
18892
    break;
 
18893
    }
 
18894
    case HASH_ATTRIBUTE_PLATFORM:
 
18895
    {
 
18896
 
 
18897
attributeData->platform = attributeValue;
 
18898
#ifdef GENERATEDSAXPARSER_VALIDATION
 
18899
    if ( mValidate )
 
18900
    {
 
18901
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->platform, strlen(attributeData->platform));
 
18902
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
18903
    {
 
18904
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
18905
            simpleTypeValidationResult,
 
18906
            HASH_ELEMENT_PROFILE_BRIDGE,
 
18907
            HASH_ATTRIBUTE_PLATFORM,
 
18908
            attributeValue) )
 
18909
        {
 
18910
            return false;
 
18911
        }
 
18912
    }
 
18913
    } // validation
 
18914
#endif
 
18915
 
 
18916
    break;
 
18917
    }
 
18918
    case HASH_ATTRIBUTE_URL:
 
18919
    {
 
18920
bool failed;
 
18921
attributeData->url = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
18922
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
18923
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
18924
        HASH_ELEMENT_PROFILE_BRIDGE,
 
18925
        HASH_ATTRIBUTE_URL,
 
18926
        attributeValue))
 
18927
{
 
18928
    return false;
 
18929
}
 
18930
if ( !failed )
 
18931
    attributeData->present_attributes |= profile_BRIDGE__AttributeData::ATTRIBUTE_URL_PRESENT;
 
18932
 
 
18933
    break;
 
18934
    }
 
18935
    default:
 
18936
    {
 
18937
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_PROFILE_BRIDGE, attribute, attributeValue))
 
18938
            {return false;}
 
18939
    }
 
18940
    }
 
18941
    }
 
18942
}
 
18943
if ((attributeData->present_attributes & profile_BRIDGE__AttributeData::ATTRIBUTE_URL_PRESENT) == 0)
 
18944
{
 
18945
    attributeData->url = COLLADABU::URI("");
 
18946
}
 
18947
if ( (attributeData->present_attributes & profile_BRIDGE__AttributeData::ATTRIBUTE_URL_PRESENT) == 0 )
 
18948
{
 
18949
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_PROFILE_BRIDGE, HASH_ATTRIBUTE_URL, 0 ) )
 
18950
        return false;
 
18951
}
 
18952
 
 
18953
 
 
18954
    return true;
 
18955
}
 
18956
 
 
18957
//---------------------------------------------------------------------
 
18958
bool ColladaParserAutoGen15Private::_preEnd__profile_BRIDGE()
 
18959
{
 
18960
#ifdef GENERATEDSAXPARSER_VALIDATION
 
18961
    if ( mValidate )
 
18962
    {
 
18963
 
 
18964
        bool validationResult = _validateEnd__profile_BRIDGE();
 
18965
        if ( !validationResult ) return false;
 
18966
 
 
18967
    } // validation
 
18968
#endif
 
18969
 
 
18970
    return true;
 
18971
}
 
18972
 
 
18973
//---------------------------------------------------------------------
 
18974
bool ColladaParserAutoGen15Private::_freeAttributes__profile_BRIDGE( void* attributeData )
 
18975
{
 
18976
    profile_BRIDGE__AttributeData* typedAttributeData = static_cast<profile_BRIDGE__AttributeData*>(attributeData);
 
18977
 
 
18978
    typedAttributeData->~profile_BRIDGE__AttributeData();
 
18979
 
 
18980
    return true;
 
18981
}
 
18982
 
 
18983
//---------------------------------------------------------------------
 
18984
const profile_GLES2__AttributeData profile_GLES2__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>()};
 
18985
 
 
18986
//---------------------------------------------------------------------
 
18987
bool ColladaParserAutoGen15Private::_data__profile_GLES2( const ParserChar* text, size_t textLength )
 
18988
{
 
18989
    return true;
 
18990
}
 
18991
 
 
18992
//---------------------------------------------------------------------
 
18993
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
18994
{
 
18995
#ifdef GENERATEDSAXPARSER_VALIDATION
 
18996
    if ( mValidate )
 
18997
    {
 
18998
 
 
18999
        bool validationResult = _validateBegin__profile_GLES2( attributes, attributeDataPtr, validationDataPtr );
 
19000
        if ( !validationResult ) return false;
 
19001
 
 
19002
    } // validation
 
19003
#endif
 
19004
 
 
19005
profile_GLES2__AttributeData* attributeData = newData<profile_GLES2__AttributeData>(attributeDataPtr);
 
19006
 
 
19007
const ParserChar** attributeArray = attributes.attributes;
 
19008
if ( attributeArray )
 
19009
{
 
19010
    while (true)
 
19011
    {
 
19012
        const ParserChar * attribute = *attributeArray;
 
19013
        if ( !attribute )
 
19014
            break;
 
19015
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
19016
        attributeArray++;
 
19017
        if ( !attributeArray )
 
19018
            return false;
 
19019
        const ParserChar* attributeValue = *attributeArray;
 
19020
        attributeArray++;
 
19021
 
 
19022
 
 
19023
    switch ( hash )
 
19024
    {
 
19025
    case HASH_ATTRIBUTE_ID:
 
19026
    {
 
19027
 
 
19028
attributeData->id = attributeValue;
 
19029
 
 
19030
    break;
 
19031
    }
 
19032
    case HASH_ATTRIBUTE_LANGUAGE:
 
19033
    {
 
19034
 
 
19035
attributeData->language = attributeValue;
 
19036
#ifdef GENERATEDSAXPARSER_VALIDATION
 
19037
    if ( mValidate )
 
19038
    {
 
19039
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->language, strlen(attributeData->language));
 
19040
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
19041
    {
 
19042
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
19043
            simpleTypeValidationResult,
 
19044
            HASH_ELEMENT_PROFILE_GLES2,
 
19045
            HASH_ATTRIBUTE_LANGUAGE,
 
19046
            attributeValue) )
 
19047
        {
 
19048
            return false;
 
19049
        }
 
19050
    }
 
19051
    } // validation
 
19052
#endif
 
19053
 
 
19054
    break;
 
19055
    }
 
19056
    case HASH_ATTRIBUTE_PLATFORMS:
 
19057
    {
 
19058
bool failed;
 
19059
#ifdef GENERATEDSAXPARSER_VALIDATION
 
19060
    if ( mValidate )
 
19061
    {
 
19062
failed = !characterData2StringList(attributeValue, attributeData->platforms, &validate__Name, HASH_ELEMENT_PROFILE_GLES2, HASH_ATTRIBUTE_PLATFORMS);
 
19063
    }
 
19064
    else
 
19065
    {
 
19066
failed = !characterData2StringList(attributeValue, attributeData->platforms);
 
19067
    }
 
19068
#else
 
19069
    {
 
19070
failed = !characterData2StringList(attributeValue, attributeData->platforms);
 
19071
    } // validation
 
19072
#endif
 
19073
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
19074
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
19075
        HASH_ELEMENT_PROFILE_GLES2,
 
19076
        HASH_ATTRIBUTE_PLATFORMS,
 
19077
        attributeValue))
 
19078
{
 
19079
    return false;
 
19080
}
 
19081
 
 
19082
if ( !failed )
 
19083
    attributeData->present_attributes |= profile_GLES2__AttributeData::ATTRIBUTE_PLATFORMS_PRESENT;
 
19084
 
 
19085
    break;
 
19086
    }
 
19087
    default:
 
19088
    {
 
19089
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_PROFILE_GLES2, attribute, attributeValue))
 
19090
            {return false;}
 
19091
    }
 
19092
    }
 
19093
    }
 
19094
}
 
19095
if ((attributeData->present_attributes & profile_GLES2__AttributeData::ATTRIBUTE_PLATFORMS_PRESENT) == 0)
 
19096
{
 
19097
    attributeData->platforms = GeneratedSaxParser::XSList<ParserString>();
 
19098
}
 
19099
if ( !attributeData->language )
 
19100
{
 
19101
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_PROFILE_GLES2, HASH_ATTRIBUTE_LANGUAGE, 0 ) )
 
19102
        return false;
 
19103
}
 
19104
 
 
19105
 
 
19106
    return true;
 
19107
}
 
19108
 
 
19109
//---------------------------------------------------------------------
 
19110
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2()
 
19111
{
 
19112
#ifdef GENERATEDSAXPARSER_VALIDATION
 
19113
    if ( mValidate )
 
19114
    {
 
19115
 
 
19116
        bool validationResult = _validateEnd__profile_GLES2();
 
19117
        if ( !validationResult ) return false;
 
19118
 
 
19119
    } // validation
 
19120
#endif
 
19121
 
 
19122
    return true;
 
19123
}
 
19124
 
 
19125
//---------------------------------------------------------------------
 
19126
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2( void* attributeData )
 
19127
{
 
19128
    profile_GLES2__AttributeData* typedAttributeData = static_cast<profile_GLES2__AttributeData*>(attributeData);
 
19129
    if (typedAttributeData->platforms.data)
 
19130
    {
 
19131
        mStackMemoryManager.deleteObject();
 
19132
    }
 
19133
 
 
19134
 
 
19135
    typedAttributeData->~profile_GLES2__AttributeData();
 
19136
 
 
19137
    return true;
 
19138
}
 
19139
 
 
19140
//---------------------------------------------------------------------
 
19141
const include__AttributeData include__AttributeData::DEFAULT = {0, 0, 0};
 
19142
 
 
19143
//---------------------------------------------------------------------
 
19144
bool ColladaParserAutoGen15Private::_data__include( const ParserChar* text, size_t textLength )
 
19145
{
 
19146
    return true;
 
19147
}
 
19148
 
 
19149
//---------------------------------------------------------------------
 
19150
bool ColladaParserAutoGen15Private::_preBegin__include( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
19151
{
 
19152
#ifdef GENERATEDSAXPARSER_VALIDATION
 
19153
    if ( mValidate )
 
19154
    {
 
19155
 
 
19156
        bool validationResult = _validateBegin__include( attributes, attributeDataPtr, validationDataPtr );
 
19157
        if ( !validationResult ) return false;
 
19158
 
 
19159
    } // validation
 
19160
#endif
 
19161
 
 
19162
include__AttributeData* attributeData = newData<include__AttributeData>(attributeDataPtr);
 
19163
 
 
19164
const ParserChar** attributeArray = attributes.attributes;
 
19165
if ( attributeArray )
 
19166
{
 
19167
    while (true)
 
19168
    {
 
19169
        const ParserChar * attribute = *attributeArray;
 
19170
        if ( !attribute )
 
19171
            break;
 
19172
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
19173
        attributeArray++;
 
19174
        if ( !attributeArray )
 
19175
            return false;
 
19176
        const ParserChar* attributeValue = *attributeArray;
 
19177
        attributeArray++;
 
19178
 
 
19179
 
 
19180
    switch ( hash )
 
19181
    {
 
19182
    case HASH_ATTRIBUTE_SID:
 
19183
    {
 
19184
 
 
19185
attributeData->sid = attributeValue;
 
19186
#ifdef GENERATEDSAXPARSER_VALIDATION
 
19187
    if ( mValidate )
 
19188
    {
 
19189
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
19190
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
19191
    {
 
19192
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
19193
            simpleTypeValidationResult,
 
19194
            HASH_ELEMENT_INCLUDE,
 
19195
            HASH_ATTRIBUTE_SID,
 
19196
            attributeValue) )
 
19197
        {
 
19198
            return false;
 
19199
        }
 
19200
    }
 
19201
    } // validation
 
19202
#endif
 
19203
 
 
19204
    break;
 
19205
    }
 
19206
    case HASH_ATTRIBUTE_URL:
 
19207
    {
 
19208
bool failed;
 
19209
attributeData->url = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
19210
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
19211
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
19212
        HASH_ELEMENT_INCLUDE,
 
19213
        HASH_ATTRIBUTE_URL,
 
19214
        attributeValue))
 
19215
{
 
19216
    return false;
 
19217
}
 
19218
if ( !failed )
 
19219
    attributeData->present_attributes |= include__AttributeData::ATTRIBUTE_URL_PRESENT;
 
19220
 
 
19221
    break;
 
19222
    }
 
19223
    default:
 
19224
    {
 
19225
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_INCLUDE, attribute, attributeValue))
 
19226
            {return false;}
 
19227
    }
 
19228
    }
 
19229
    }
 
19230
}
 
19231
if ((attributeData->present_attributes & include__AttributeData::ATTRIBUTE_URL_PRESENT) == 0)
 
19232
{
 
19233
    attributeData->url = COLLADABU::URI("");
 
19234
}
 
19235
if ( !attributeData->sid )
 
19236
{
 
19237
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_INCLUDE, HASH_ATTRIBUTE_SID, 0 ) )
 
19238
        return false;
 
19239
}
 
19240
if ( (attributeData->present_attributes & include__AttributeData::ATTRIBUTE_URL_PRESENT) == 0 )
 
19241
{
 
19242
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_INCLUDE, HASH_ATTRIBUTE_URL, 0 ) )
 
19243
        return false;
 
19244
}
 
19245
 
 
19246
 
 
19247
    return true;
 
19248
}
 
19249
 
 
19250
//---------------------------------------------------------------------
 
19251
bool ColladaParserAutoGen15Private::_preEnd__include()
 
19252
{
 
19253
#ifdef GENERATEDSAXPARSER_VALIDATION
 
19254
    if ( mValidate )
 
19255
    {
 
19256
 
 
19257
        bool validationResult = _validateEnd__include();
 
19258
        if ( !validationResult ) return false;
 
19259
 
 
19260
    } // validation
 
19261
#endif
 
19262
 
 
19263
    return true;
 
19264
}
 
19265
 
 
19266
//---------------------------------------------------------------------
 
19267
bool ColladaParserAutoGen15Private::_freeAttributes__include( void* attributeData )
 
19268
{
 
19269
    include__AttributeData* typedAttributeData = static_cast<include__AttributeData*>(attributeData);
 
19270
 
 
19271
    typedAttributeData->~include__AttributeData();
 
19272
 
 
19273
    return true;
 
19274
}
 
19275
 
 
19276
//---------------------------------------------------------------------
 
19277
const code__AttributeData code__AttributeData::DEFAULT = {0};
 
19278
 
 
19279
//---------------------------------------------------------------------
 
19280
bool ColladaParserAutoGen15Private::_data__code( const ParserChar* text, size_t textLength )
 
19281
{
 
19282
 
 
19283
return mImpl->data__code(text, textLength);
 
19284
}
 
19285
 
 
19286
//---------------------------------------------------------------------
 
19287
bool ColladaParserAutoGen15Private::_preBegin__code( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
19288
{
 
19289
#ifdef GENERATEDSAXPARSER_VALIDATION
 
19290
    if ( mValidate )
 
19291
    {
 
19292
 
 
19293
        bool validationResult = _validateBegin__code( attributes, attributeDataPtr, validationDataPtr );
 
19294
        if ( !validationResult ) return false;
 
19295
 
 
19296
    } // validation
 
19297
#endif
 
19298
 
 
19299
code__AttributeData* attributeData = newData<code__AttributeData>(attributeDataPtr);
 
19300
 
 
19301
const ParserChar** attributeArray = attributes.attributes;
 
19302
if ( attributeArray )
 
19303
{
 
19304
    while (true)
 
19305
    {
 
19306
        const ParserChar * attribute = *attributeArray;
 
19307
        if ( !attribute )
 
19308
            break;
 
19309
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
19310
        attributeArray++;
 
19311
        if ( !attributeArray )
 
19312
            return false;
 
19313
        const ParserChar* attributeValue = *attributeArray;
 
19314
        attributeArray++;
 
19315
 
 
19316
 
 
19317
    switch ( hash )
 
19318
    {
 
19319
    case HASH_ATTRIBUTE_SID:
 
19320
    {
 
19321
 
 
19322
attributeData->sid = attributeValue;
 
19323
#ifdef GENERATEDSAXPARSER_VALIDATION
 
19324
    if ( mValidate )
 
19325
    {
 
19326
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
19327
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
19328
    {
 
19329
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
19330
            simpleTypeValidationResult,
 
19331
            HASH_ELEMENT_CODE,
 
19332
            HASH_ATTRIBUTE_SID,
 
19333
            attributeValue) )
 
19334
        {
 
19335
            return false;
 
19336
        }
 
19337
    }
 
19338
    } // validation
 
19339
#endif
 
19340
 
 
19341
    break;
 
19342
    }
 
19343
    default:
 
19344
    {
 
19345
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_CODE, attribute, attributeValue))
 
19346
            {return false;}
 
19347
    }
 
19348
    }
 
19349
    }
 
19350
}
 
19351
 
 
19352
 
 
19353
    return true;
 
19354
}
 
19355
 
 
19356
//---------------------------------------------------------------------
 
19357
bool ColladaParserAutoGen15Private::_preEnd__code()
 
19358
{
 
19359
#ifdef GENERATEDSAXPARSER_VALIDATION
 
19360
    if ( mValidate )
 
19361
    {
 
19362
 
 
19363
        bool validationResult = _validateEnd__code();
 
19364
        if ( !validationResult ) return false;
 
19365
 
 
19366
    } // validation
 
19367
#endif
 
19368
 
 
19369
    return true;
 
19370
}
 
19371
 
 
19372
//---------------------------------------------------------------------
 
19373
bool ColladaParserAutoGen15Private::_freeAttributes__code( void* attributeData )
 
19374
{
 
19375
    code__AttributeData* typedAttributeData = static_cast<code__AttributeData*>(attributeData);
 
19376
 
 
19377
    typedAttributeData->~code__AttributeData();
 
19378
 
 
19379
    return true;
 
19380
}
 
19381
 
 
19382
//---------------------------------------------------------------------
 
19383
const profile_gles2_type____newparam__AttributeData profile_gles2_type____newparam__AttributeData::DEFAULT = {0};
 
19384
 
 
19385
//---------------------------------------------------------------------
 
19386
bool ColladaParserAutoGen15Private::_data__profile_gles2_type____newparam( const ParserChar* text, size_t textLength )
 
19387
{
 
19388
    return true;
 
19389
}
 
19390
 
 
19391
//---------------------------------------------------------------------
 
19392
bool ColladaParserAutoGen15Private::_preBegin__profile_gles2_type____newparam( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
19393
{
 
19394
#ifdef GENERATEDSAXPARSER_VALIDATION
 
19395
    if ( mValidate )
 
19396
    {
 
19397
 
 
19398
        bool validationResult = _validateBegin__profile_gles2_type____newparam( attributes, attributeDataPtr, validationDataPtr );
 
19399
        if ( !validationResult ) return false;
 
19400
 
 
19401
    } // validation
 
19402
#endif
 
19403
 
 
19404
profile_gles2_type____newparam__AttributeData* attributeData = newData<profile_gles2_type____newparam__AttributeData>(attributeDataPtr);
 
19405
 
 
19406
const ParserChar** attributeArray = attributes.attributes;
 
19407
if ( attributeArray )
 
19408
{
 
19409
    while (true)
 
19410
    {
 
19411
        const ParserChar * attribute = *attributeArray;
 
19412
        if ( !attribute )
 
19413
            break;
 
19414
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
19415
        attributeArray++;
 
19416
        if ( !attributeArray )
 
19417
            return false;
 
19418
        const ParserChar* attributeValue = *attributeArray;
 
19419
        attributeArray++;
 
19420
 
 
19421
 
 
19422
    switch ( hash )
 
19423
    {
 
19424
    case HASH_ATTRIBUTE_SID:
 
19425
    {
 
19426
 
 
19427
attributeData->sid = attributeValue;
 
19428
#ifdef GENERATEDSAXPARSER_VALIDATION
 
19429
    if ( mValidate )
 
19430
    {
 
19431
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
19432
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
19433
    {
 
19434
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
19435
            simpleTypeValidationResult,
 
19436
            HASH_ELEMENT_NEWPARAM,
 
19437
            HASH_ATTRIBUTE_SID,
 
19438
            attributeValue) )
 
19439
        {
 
19440
            return false;
 
19441
        }
 
19442
    }
 
19443
    } // validation
 
19444
#endif
 
19445
 
 
19446
    break;
 
19447
    }
 
19448
    default:
 
19449
    {
 
19450
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_NEWPARAM, attribute, attributeValue))
 
19451
            {return false;}
 
19452
    }
 
19453
    }
 
19454
    }
 
19455
}
 
19456
if ( !attributeData->sid )
 
19457
{
 
19458
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_NEWPARAM, HASH_ATTRIBUTE_SID, 0 ) )
 
19459
        return false;
 
19460
}
 
19461
 
 
19462
 
 
19463
    return true;
 
19464
}
 
19465
 
 
19466
//---------------------------------------------------------------------
 
19467
bool ColladaParserAutoGen15Private::_preEnd__profile_gles2_type____newparam()
 
19468
{
 
19469
#ifdef GENERATEDSAXPARSER_VALIDATION
 
19470
    if ( mValidate )
 
19471
    {
 
19472
 
 
19473
        bool validationResult = _validateEnd__profile_gles2_type____newparam();
 
19474
        if ( !validationResult ) return false;
 
19475
 
 
19476
    } // validation
 
19477
#endif
 
19478
 
 
19479
    return true;
 
19480
}
 
19481
 
 
19482
//---------------------------------------------------------------------
 
19483
bool ColladaParserAutoGen15Private::_freeAttributes__profile_gles2_type____newparam( void* attributeData )
 
19484
{
 
19485
    profile_gles2_type____newparam__AttributeData* typedAttributeData = static_cast<profile_gles2_type____newparam__AttributeData*>(attributeData);
 
19486
 
 
19487
    typedAttributeData->~profile_gles2_type____newparam__AttributeData();
 
19488
 
 
19489
    return true;
 
19490
}
 
19491
 
 
19492
//---------------------------------------------------------------------
 
19493
bool ColladaParserAutoGen15Private::_data__bvec2( const ParserChar* text, size_t textLength )
 
19494
{
 
19495
#ifdef GENERATEDSAXPARSER_VALIDATION
 
19496
    if ( mValidate )
 
19497
    {
 
19498
        bool2__ValidationData* validationData = (bool2__ValidationData*)mValidationDataStack.top();
 
19499
        DISABLE_WARNING_UNUSED(validationData)
 
19500
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bvec2, &validate__bool2_type__stream, &validationData->validationWholeSize, 0);
 
19501
    }
 
19502
    else
 
19503
    {
 
19504
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bvec2);
 
19505
    }
 
19506
#else
 
19507
    {
 
19508
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bvec2);
 
19509
    } // validation
 
19510
#endif
 
19511
 
 
19512
}
 
19513
 
 
19514
//---------------------------------------------------------------------
 
19515
bool ColladaParserAutoGen15Private::_preBegin__bvec2( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
19516
{
 
19517
#ifdef GENERATEDSAXPARSER_VALIDATION
 
19518
    if ( mValidate )
 
19519
    {
 
19520
 
 
19521
        bool validationResult = _validateBegin__bvec2( attributes, attributeDataPtr, validationDataPtr );
 
19522
        if ( !validationResult ) return false;
 
19523
 
 
19524
    } // validation
 
19525
#endif
 
19526
 
 
19527
    return true;
 
19528
}
 
19529
 
 
19530
//---------------------------------------------------------------------
 
19531
bool ColladaParserAutoGen15Private::_preEnd__bvec2()
 
19532
{
 
19533
#ifdef GENERATEDSAXPARSER_VALIDATION
 
19534
    if ( mValidate )
 
19535
    {
 
19536
 
 
19537
        bool validationResult = _validateEnd__bvec2();
 
19538
        if ( !validationResult ) return false;
 
19539
 
 
19540
    } // validation
 
19541
#endif
 
19542
 
 
19543
#ifdef GENERATEDSAXPARSER_VALIDATION
 
19544
    if ( mValidate )
 
19545
    {
 
19546
        bool2__ValidationData* validationData = (bool2__ValidationData*)mValidationDataStack.top();
 
19547
        DISABLE_WARNING_UNUSED(validationData)
 
19548
bool returnValue = boolDataEnd( &ColladaParserAutoGen15::data__bvec2, &validate__bool2_type__streamEnd, &validationData->validationWholeSize, 0 );
 
19549
        ParserError::ErrorType simpleTypeValidationResult = validate__bool2_type(0, (*(&validationData->validationWholeSize)));
 
19550
        mValidationDataStack.deleteObject();
 
19551
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
19552
        {
 
19553
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
19554
                simpleTypeValidationResult,
 
19555
                HASH_ELEMENT_BVEC2,
 
19556
                (ParserChar*)0, 0 ) )
 
19557
            {
 
19558
                return false;
 
19559
            }
 
19560
        }
 
19561
        return returnValue;
 
19562
    }
 
19563
    else
 
19564
    {
 
19565
return boolDataEnd( &ColladaParserAutoGen15::data__bvec2 );
 
19566
    }
 
19567
#else
 
19568
    {
 
19569
return boolDataEnd( &ColladaParserAutoGen15::data__bvec2 );
 
19570
    } // validation
 
19571
#endif
 
19572
 
 
19573
}
 
19574
 
 
19575
//---------------------------------------------------------------------
 
19576
bool ColladaParserAutoGen15Private::_freeAttributes__bvec2( void* attributeData )
 
19577
{
 
19578
    return true;
 
19579
}
 
19580
 
 
19581
//---------------------------------------------------------------------
 
19582
bool ColladaParserAutoGen15Private::_data__bvec3( const ParserChar* text, size_t textLength )
 
19583
{
 
19584
#ifdef GENERATEDSAXPARSER_VALIDATION
 
19585
    if ( mValidate )
 
19586
    {
 
19587
        bool3__ValidationData* validationData = (bool3__ValidationData*)mValidationDataStack.top();
 
19588
        DISABLE_WARNING_UNUSED(validationData)
 
19589
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bvec3, &validate__bool3_type__stream, &validationData->validationWholeSize, 0);
 
19590
    }
 
19591
    else
 
19592
    {
 
19593
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bvec3);
 
19594
    }
 
19595
#else
 
19596
    {
 
19597
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bvec3);
 
19598
    } // validation
 
19599
#endif
 
19600
 
 
19601
}
 
19602
 
 
19603
//---------------------------------------------------------------------
 
19604
bool ColladaParserAutoGen15Private::_preBegin__bvec3( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
19605
{
 
19606
#ifdef GENERATEDSAXPARSER_VALIDATION
 
19607
    if ( mValidate )
 
19608
    {
 
19609
 
 
19610
        bool validationResult = _validateBegin__bvec3( attributes, attributeDataPtr, validationDataPtr );
 
19611
        if ( !validationResult ) return false;
 
19612
 
 
19613
    } // validation
 
19614
#endif
 
19615
 
 
19616
    return true;
 
19617
}
 
19618
 
 
19619
//---------------------------------------------------------------------
 
19620
bool ColladaParserAutoGen15Private::_preEnd__bvec3()
 
19621
{
 
19622
#ifdef GENERATEDSAXPARSER_VALIDATION
 
19623
    if ( mValidate )
 
19624
    {
 
19625
 
 
19626
        bool validationResult = _validateEnd__bvec3();
 
19627
        if ( !validationResult ) return false;
 
19628
 
 
19629
    } // validation
 
19630
#endif
 
19631
 
 
19632
#ifdef GENERATEDSAXPARSER_VALIDATION
 
19633
    if ( mValidate )
 
19634
    {
 
19635
        bool3__ValidationData* validationData = (bool3__ValidationData*)mValidationDataStack.top();
 
19636
        DISABLE_WARNING_UNUSED(validationData)
 
19637
bool returnValue = boolDataEnd( &ColladaParserAutoGen15::data__bvec3, &validate__bool3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
19638
        ParserError::ErrorType simpleTypeValidationResult = validate__bool3_type(0, (*(&validationData->validationWholeSize)));
 
19639
        mValidationDataStack.deleteObject();
 
19640
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
19641
        {
 
19642
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
19643
                simpleTypeValidationResult,
 
19644
                HASH_ELEMENT_BVEC3,
 
19645
                (ParserChar*)0, 0 ) )
 
19646
            {
 
19647
                return false;
 
19648
            }
 
19649
        }
 
19650
        return returnValue;
 
19651
    }
 
19652
    else
 
19653
    {
 
19654
return boolDataEnd( &ColladaParserAutoGen15::data__bvec3 );
 
19655
    }
 
19656
#else
 
19657
    {
 
19658
return boolDataEnd( &ColladaParserAutoGen15::data__bvec3 );
 
19659
    } // validation
 
19660
#endif
 
19661
 
 
19662
}
 
19663
 
 
19664
//---------------------------------------------------------------------
 
19665
bool ColladaParserAutoGen15Private::_freeAttributes__bvec3( void* attributeData )
 
19666
{
 
19667
    return true;
 
19668
}
 
19669
 
 
19670
//---------------------------------------------------------------------
 
19671
bool ColladaParserAutoGen15Private::_data__bvec4( const ParserChar* text, size_t textLength )
 
19672
{
 
19673
#ifdef GENERATEDSAXPARSER_VALIDATION
 
19674
    if ( mValidate )
 
19675
    {
 
19676
        bool4__ValidationData* validationData = (bool4__ValidationData*)mValidationDataStack.top();
 
19677
        DISABLE_WARNING_UNUSED(validationData)
 
19678
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bvec4, &validate__bool4_type__stream, &validationData->validationWholeSize, 0);
 
19679
    }
 
19680
    else
 
19681
    {
 
19682
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bvec4);
 
19683
    }
 
19684
#else
 
19685
    {
 
19686
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bvec4);
 
19687
    } // validation
 
19688
#endif
 
19689
 
 
19690
}
 
19691
 
 
19692
//---------------------------------------------------------------------
 
19693
bool ColladaParserAutoGen15Private::_preBegin__bvec4( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
19694
{
 
19695
#ifdef GENERATEDSAXPARSER_VALIDATION
 
19696
    if ( mValidate )
 
19697
    {
 
19698
 
 
19699
        bool validationResult = _validateBegin__bvec4( attributes, attributeDataPtr, validationDataPtr );
 
19700
        if ( !validationResult ) return false;
 
19701
 
 
19702
    } // validation
 
19703
#endif
 
19704
 
 
19705
    return true;
 
19706
}
 
19707
 
 
19708
//---------------------------------------------------------------------
 
19709
bool ColladaParserAutoGen15Private::_preEnd__bvec4()
 
19710
{
 
19711
#ifdef GENERATEDSAXPARSER_VALIDATION
 
19712
    if ( mValidate )
 
19713
    {
 
19714
 
 
19715
        bool validationResult = _validateEnd__bvec4();
 
19716
        if ( !validationResult ) return false;
 
19717
 
 
19718
    } // validation
 
19719
#endif
 
19720
 
 
19721
#ifdef GENERATEDSAXPARSER_VALIDATION
 
19722
    if ( mValidate )
 
19723
    {
 
19724
        bool4__ValidationData* validationData = (bool4__ValidationData*)mValidationDataStack.top();
 
19725
        DISABLE_WARNING_UNUSED(validationData)
 
19726
bool returnValue = boolDataEnd( &ColladaParserAutoGen15::data__bvec4, &validate__bool4_type__streamEnd, &validationData->validationWholeSize, 0 );
 
19727
        ParserError::ErrorType simpleTypeValidationResult = validate__bool4_type(0, (*(&validationData->validationWholeSize)));
 
19728
        mValidationDataStack.deleteObject();
 
19729
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
19730
        {
 
19731
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
19732
                simpleTypeValidationResult,
 
19733
                HASH_ELEMENT_BVEC4,
 
19734
                (ParserChar*)0, 0 ) )
 
19735
            {
 
19736
                return false;
 
19737
            }
 
19738
        }
 
19739
        return returnValue;
 
19740
    }
 
19741
    else
 
19742
    {
 
19743
return boolDataEnd( &ColladaParserAutoGen15::data__bvec4 );
 
19744
    }
 
19745
#else
 
19746
    {
 
19747
return boolDataEnd( &ColladaParserAutoGen15::data__bvec4 );
 
19748
    } // validation
 
19749
#endif
 
19750
 
 
19751
}
 
19752
 
 
19753
//---------------------------------------------------------------------
 
19754
bool ColladaParserAutoGen15Private::_freeAttributes__bvec4( void* attributeData )
 
19755
{
 
19756
    return true;
 
19757
}
 
19758
 
 
19759
//---------------------------------------------------------------------
 
19760
bool ColladaParserAutoGen15Private::_data__vec2( const ParserChar* text, size_t textLength )
 
19761
{
 
19762
#ifdef GENERATEDSAXPARSER_VALIDATION
 
19763
    if ( mValidate )
 
19764
    {
 
19765
        radius____float2_type__ValidationData* validationData = (radius____float2_type__ValidationData*)mValidationDataStack.top();
 
19766
        DISABLE_WARNING_UNUSED(validationData)
 
19767
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__vec2, &validate__float2_type__stream, &validationData->validationWholeSize, 0);
 
19768
    }
 
19769
    else
 
19770
    {
 
19771
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__vec2);
 
19772
    }
 
19773
#else
 
19774
    {
 
19775
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__vec2);
 
19776
    } // validation
 
19777
#endif
 
19778
 
 
19779
}
 
19780
 
 
19781
//---------------------------------------------------------------------
 
19782
bool ColladaParserAutoGen15Private::_preBegin__vec2( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
19783
{
 
19784
#ifdef GENERATEDSAXPARSER_VALIDATION
 
19785
    if ( mValidate )
 
19786
    {
 
19787
 
 
19788
        bool validationResult = _validateBegin__vec2( attributes, attributeDataPtr, validationDataPtr );
 
19789
        if ( !validationResult ) return false;
 
19790
 
 
19791
    } // validation
 
19792
#endif
 
19793
 
 
19794
    return true;
 
19795
}
 
19796
 
 
19797
//---------------------------------------------------------------------
 
19798
bool ColladaParserAutoGen15Private::_preEnd__vec2()
 
19799
{
 
19800
#ifdef GENERATEDSAXPARSER_VALIDATION
 
19801
    if ( mValidate )
 
19802
    {
 
19803
 
 
19804
        bool validationResult = _validateEnd__vec2();
 
19805
        if ( !validationResult ) return false;
 
19806
 
 
19807
    } // validation
 
19808
#endif
 
19809
 
 
19810
#ifdef GENERATEDSAXPARSER_VALIDATION
 
19811
    if ( mValidate )
 
19812
    {
 
19813
        radius____float2_type__ValidationData* validationData = (radius____float2_type__ValidationData*)mValidationDataStack.top();
 
19814
        DISABLE_WARNING_UNUSED(validationData)
 
19815
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__vec2, &validate__float2_type__streamEnd, &validationData->validationWholeSize, 0 );
 
19816
        ParserError::ErrorType simpleTypeValidationResult = validate__float2_type(0, (*(&validationData->validationWholeSize)));
 
19817
        mValidationDataStack.deleteObject();
 
19818
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
19819
        {
 
19820
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
19821
                simpleTypeValidationResult,
 
19822
                HASH_ELEMENT_VEC2,
 
19823
                (ParserChar*)0, 0 ) )
 
19824
            {
 
19825
                return false;
 
19826
            }
 
19827
        }
 
19828
        return returnValue;
 
19829
    }
 
19830
    else
 
19831
    {
 
19832
return floatDataEnd( &ColladaParserAutoGen15::data__vec2 );
 
19833
    }
 
19834
#else
 
19835
    {
 
19836
return floatDataEnd( &ColladaParserAutoGen15::data__vec2 );
 
19837
    } // validation
 
19838
#endif
 
19839
 
 
19840
}
 
19841
 
 
19842
//---------------------------------------------------------------------
 
19843
bool ColladaParserAutoGen15Private::_freeAttributes__vec2( void* attributeData )
 
19844
{
 
19845
    return true;
 
19846
}
 
19847
 
 
19848
//---------------------------------------------------------------------
 
19849
bool ColladaParserAutoGen15Private::_data__vec3( const ParserChar* text, size_t textLength )
 
19850
{
 
19851
#ifdef GENERATEDSAXPARSER_VALIDATION
 
19852
    if ( mValidate )
 
19853
    {
 
19854
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
19855
        DISABLE_WARNING_UNUSED(validationData)
 
19856
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__vec3, &validate__float3_type__stream, &validationData->validationWholeSize, 0);
 
19857
    }
 
19858
    else
 
19859
    {
 
19860
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__vec3);
 
19861
    }
 
19862
#else
 
19863
    {
 
19864
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__vec3);
 
19865
    } // validation
 
19866
#endif
 
19867
 
 
19868
}
 
19869
 
 
19870
//---------------------------------------------------------------------
 
19871
bool ColladaParserAutoGen15Private::_preBegin__vec3( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
19872
{
 
19873
#ifdef GENERATEDSAXPARSER_VALIDATION
 
19874
    if ( mValidate )
 
19875
    {
 
19876
 
 
19877
        bool validationResult = _validateBegin__vec3( attributes, attributeDataPtr, validationDataPtr );
 
19878
        if ( !validationResult ) return false;
 
19879
 
 
19880
    } // validation
 
19881
#endif
 
19882
 
 
19883
    return true;
 
19884
}
 
19885
 
 
19886
//---------------------------------------------------------------------
 
19887
bool ColladaParserAutoGen15Private::_preEnd__vec3()
 
19888
{
 
19889
#ifdef GENERATEDSAXPARSER_VALIDATION
 
19890
    if ( mValidate )
 
19891
    {
 
19892
 
 
19893
        bool validationResult = _validateEnd__vec3();
 
19894
        if ( !validationResult ) return false;
 
19895
 
 
19896
    } // validation
 
19897
#endif
 
19898
 
 
19899
#ifdef GENERATEDSAXPARSER_VALIDATION
 
19900
    if ( mValidate )
 
19901
    {
 
19902
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
19903
        DISABLE_WARNING_UNUSED(validationData)
 
19904
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__vec3, &validate__float3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
19905
        ParserError::ErrorType simpleTypeValidationResult = validate__float3_type(0, (*(&validationData->validationWholeSize)));
 
19906
        mValidationDataStack.deleteObject();
 
19907
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
19908
        {
 
19909
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
19910
                simpleTypeValidationResult,
 
19911
                HASH_ELEMENT_VEC3,
 
19912
                (ParserChar*)0, 0 ) )
 
19913
            {
 
19914
                return false;
 
19915
            }
 
19916
        }
 
19917
        return returnValue;
 
19918
    }
 
19919
    else
 
19920
    {
 
19921
return floatDataEnd( &ColladaParserAutoGen15::data__vec3 );
 
19922
    }
 
19923
#else
 
19924
    {
 
19925
return floatDataEnd( &ColladaParserAutoGen15::data__vec3 );
 
19926
    } // validation
 
19927
#endif
 
19928
 
 
19929
}
 
19930
 
 
19931
//---------------------------------------------------------------------
 
19932
bool ColladaParserAutoGen15Private::_freeAttributes__vec3( void* attributeData )
 
19933
{
 
19934
    return true;
 
19935
}
 
19936
 
 
19937
//---------------------------------------------------------------------
 
19938
bool ColladaParserAutoGen15Private::_data__vec4( const ParserChar* text, size_t textLength )
 
19939
{
 
19940
#ifdef GENERATEDSAXPARSER_VALIDATION
 
19941
    if ( mValidate )
 
19942
    {
 
19943
        orient__ValidationData* validationData = (orient__ValidationData*)mValidationDataStack.top();
 
19944
        DISABLE_WARNING_UNUSED(validationData)
 
19945
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__vec4, &validate__float4_type__stream, &validationData->validationWholeSize, 0);
 
19946
    }
 
19947
    else
 
19948
    {
 
19949
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__vec4);
 
19950
    }
 
19951
#else
 
19952
    {
 
19953
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__vec4);
 
19954
    } // validation
 
19955
#endif
 
19956
 
 
19957
}
 
19958
 
 
19959
//---------------------------------------------------------------------
 
19960
bool ColladaParserAutoGen15Private::_preBegin__vec4( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
19961
{
 
19962
#ifdef GENERATEDSAXPARSER_VALIDATION
 
19963
    if ( mValidate )
 
19964
    {
 
19965
 
 
19966
        bool validationResult = _validateBegin__vec4( attributes, attributeDataPtr, validationDataPtr );
 
19967
        if ( !validationResult ) return false;
 
19968
 
 
19969
    } // validation
 
19970
#endif
 
19971
 
 
19972
    return true;
 
19973
}
 
19974
 
 
19975
//---------------------------------------------------------------------
 
19976
bool ColladaParserAutoGen15Private::_preEnd__vec4()
 
19977
{
 
19978
#ifdef GENERATEDSAXPARSER_VALIDATION
 
19979
    if ( mValidate )
 
19980
    {
 
19981
 
 
19982
        bool validationResult = _validateEnd__vec4();
 
19983
        if ( !validationResult ) return false;
 
19984
 
 
19985
    } // validation
 
19986
#endif
 
19987
 
 
19988
#ifdef GENERATEDSAXPARSER_VALIDATION
 
19989
    if ( mValidate )
 
19990
    {
 
19991
        orient__ValidationData* validationData = (orient__ValidationData*)mValidationDataStack.top();
 
19992
        DISABLE_WARNING_UNUSED(validationData)
 
19993
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__vec4, &validate__float4_type__streamEnd, &validationData->validationWholeSize, 0 );
 
19994
        ParserError::ErrorType simpleTypeValidationResult = validate__float4_type(0, (*(&validationData->validationWholeSize)));
 
19995
        mValidationDataStack.deleteObject();
 
19996
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
19997
        {
 
19998
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
19999
                simpleTypeValidationResult,
 
20000
                HASH_ELEMENT_VEC4,
 
20001
                (ParserChar*)0, 0 ) )
 
20002
            {
 
20003
                return false;
 
20004
            }
 
20005
        }
 
20006
        return returnValue;
 
20007
    }
 
20008
    else
 
20009
    {
 
20010
return floatDataEnd( &ColladaParserAutoGen15::data__vec4 );
 
20011
    }
 
20012
#else
 
20013
    {
 
20014
return floatDataEnd( &ColladaParserAutoGen15::data__vec4 );
 
20015
    } // validation
 
20016
#endif
 
20017
 
 
20018
}
 
20019
 
 
20020
//---------------------------------------------------------------------
 
20021
bool ColladaParserAutoGen15Private::_freeAttributes__vec4( void* attributeData )
 
20022
{
 
20023
    return true;
 
20024
}
 
20025
 
 
20026
//---------------------------------------------------------------------
 
20027
bool ColladaParserAutoGen15Private::_data__mat2( const ParserChar* text, size_t textLength )
 
20028
{
 
20029
#ifdef GENERATEDSAXPARSER_VALIDATION
 
20030
    if ( mValidate )
 
20031
    {
 
20032
        float2x2__ValidationData* validationData = (float2x2__ValidationData*)mValidationDataStack.top();
 
20033
        DISABLE_WARNING_UNUSED(validationData)
 
20034
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__mat2, &validate__float2x2_type__stream, &validationData->validationWholeSize, 0);
 
20035
    }
 
20036
    else
 
20037
    {
 
20038
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__mat2);
 
20039
    }
 
20040
#else
 
20041
    {
 
20042
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__mat2);
 
20043
    } // validation
 
20044
#endif
 
20045
 
 
20046
}
 
20047
 
 
20048
//---------------------------------------------------------------------
 
20049
bool ColladaParserAutoGen15Private::_preBegin__mat2( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
20050
{
 
20051
#ifdef GENERATEDSAXPARSER_VALIDATION
 
20052
    if ( mValidate )
 
20053
    {
 
20054
 
 
20055
        bool validationResult = _validateBegin__mat2( attributes, attributeDataPtr, validationDataPtr );
 
20056
        if ( !validationResult ) return false;
 
20057
 
 
20058
    } // validation
 
20059
#endif
 
20060
 
 
20061
    return true;
 
20062
}
 
20063
 
 
20064
//---------------------------------------------------------------------
 
20065
bool ColladaParserAutoGen15Private::_preEnd__mat2()
 
20066
{
 
20067
#ifdef GENERATEDSAXPARSER_VALIDATION
 
20068
    if ( mValidate )
 
20069
    {
 
20070
 
 
20071
        bool validationResult = _validateEnd__mat2();
 
20072
        if ( !validationResult ) return false;
 
20073
 
 
20074
    } // validation
 
20075
#endif
 
20076
 
 
20077
#ifdef GENERATEDSAXPARSER_VALIDATION
 
20078
    if ( mValidate )
 
20079
    {
 
20080
        float2x2__ValidationData* validationData = (float2x2__ValidationData*)mValidationDataStack.top();
 
20081
        DISABLE_WARNING_UNUSED(validationData)
 
20082
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__mat2, &validate__float2x2_type__streamEnd, &validationData->validationWholeSize, 0 );
 
20083
        ParserError::ErrorType simpleTypeValidationResult = validate__float2x2_type(0, (*(&validationData->validationWholeSize)));
 
20084
        mValidationDataStack.deleteObject();
 
20085
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
20086
        {
 
20087
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
20088
                simpleTypeValidationResult,
 
20089
                HASH_ELEMENT_MAT2,
 
20090
                (ParserChar*)0, 0 ) )
 
20091
            {
 
20092
                return false;
 
20093
            }
 
20094
        }
 
20095
        return returnValue;
 
20096
    }
 
20097
    else
 
20098
    {
 
20099
return floatDataEnd( &ColladaParserAutoGen15::data__mat2 );
 
20100
    }
 
20101
#else
 
20102
    {
 
20103
return floatDataEnd( &ColladaParserAutoGen15::data__mat2 );
 
20104
    } // validation
 
20105
#endif
 
20106
 
 
20107
}
 
20108
 
 
20109
//---------------------------------------------------------------------
 
20110
bool ColladaParserAutoGen15Private::_freeAttributes__mat2( void* attributeData )
 
20111
{
 
20112
    return true;
 
20113
}
 
20114
 
 
20115
//---------------------------------------------------------------------
 
20116
bool ColladaParserAutoGen15Private::_data__mat3( const ParserChar* text, size_t textLength )
 
20117
{
 
20118
#ifdef GENERATEDSAXPARSER_VALIDATION
 
20119
    if ( mValidate )
 
20120
    {
 
20121
        float3x3__ValidationData* validationData = (float3x3__ValidationData*)mValidationDataStack.top();
 
20122
        DISABLE_WARNING_UNUSED(validationData)
 
20123
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__mat3, &validate__float3x3_type__stream, &validationData->validationWholeSize, 0);
 
20124
    }
 
20125
    else
 
20126
    {
 
20127
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__mat3);
 
20128
    }
 
20129
#else
 
20130
    {
 
20131
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__mat3);
 
20132
    } // validation
 
20133
#endif
 
20134
 
 
20135
}
 
20136
 
 
20137
//---------------------------------------------------------------------
 
20138
bool ColladaParserAutoGen15Private::_preBegin__mat3( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
20139
{
 
20140
#ifdef GENERATEDSAXPARSER_VALIDATION
 
20141
    if ( mValidate )
 
20142
    {
 
20143
 
 
20144
        bool validationResult = _validateBegin__mat3( attributes, attributeDataPtr, validationDataPtr );
 
20145
        if ( !validationResult ) return false;
 
20146
 
 
20147
    } // validation
 
20148
#endif
 
20149
 
 
20150
    return true;
 
20151
}
 
20152
 
 
20153
//---------------------------------------------------------------------
 
20154
bool ColladaParserAutoGen15Private::_preEnd__mat3()
 
20155
{
 
20156
#ifdef GENERATEDSAXPARSER_VALIDATION
 
20157
    if ( mValidate )
 
20158
    {
 
20159
 
 
20160
        bool validationResult = _validateEnd__mat3();
 
20161
        if ( !validationResult ) return false;
 
20162
 
 
20163
    } // validation
 
20164
#endif
 
20165
 
 
20166
#ifdef GENERATEDSAXPARSER_VALIDATION
 
20167
    if ( mValidate )
 
20168
    {
 
20169
        float3x3__ValidationData* validationData = (float3x3__ValidationData*)mValidationDataStack.top();
 
20170
        DISABLE_WARNING_UNUSED(validationData)
 
20171
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__mat3, &validate__float3x3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
20172
        ParserError::ErrorType simpleTypeValidationResult = validate__float3x3_type(0, (*(&validationData->validationWholeSize)));
 
20173
        mValidationDataStack.deleteObject();
 
20174
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
20175
        {
 
20176
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
20177
                simpleTypeValidationResult,
 
20178
                HASH_ELEMENT_MAT3,
 
20179
                (ParserChar*)0, 0 ) )
 
20180
            {
 
20181
                return false;
 
20182
            }
 
20183
        }
 
20184
        return returnValue;
 
20185
    }
 
20186
    else
 
20187
    {
 
20188
return floatDataEnd( &ColladaParserAutoGen15::data__mat3 );
 
20189
    }
 
20190
#else
 
20191
    {
 
20192
return floatDataEnd( &ColladaParserAutoGen15::data__mat3 );
 
20193
    } // validation
 
20194
#endif
 
20195
 
 
20196
}
 
20197
 
 
20198
//---------------------------------------------------------------------
 
20199
bool ColladaParserAutoGen15Private::_freeAttributes__mat3( void* attributeData )
 
20200
{
 
20201
    return true;
 
20202
}
 
20203
 
 
20204
//---------------------------------------------------------------------
 
20205
bool ColladaParserAutoGen15Private::_data__mat4( const ParserChar* text, size_t textLength )
 
20206
{
 
20207
#ifdef GENERATEDSAXPARSER_VALIDATION
 
20208
    if ( mValidate )
 
20209
    {
 
20210
        bind_shape_matrix__ValidationData* validationData = (bind_shape_matrix__ValidationData*)mValidationDataStack.top();
 
20211
        DISABLE_WARNING_UNUSED(validationData)
 
20212
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__mat4, &validate__float4x4_type__stream, &validationData->validationWholeSize, 0);
 
20213
    }
 
20214
    else
 
20215
    {
 
20216
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__mat4);
 
20217
    }
 
20218
#else
 
20219
    {
 
20220
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__mat4);
 
20221
    } // validation
 
20222
#endif
 
20223
 
 
20224
}
 
20225
 
 
20226
//---------------------------------------------------------------------
 
20227
bool ColladaParserAutoGen15Private::_preBegin__mat4( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
20228
{
 
20229
#ifdef GENERATEDSAXPARSER_VALIDATION
 
20230
    if ( mValidate )
 
20231
    {
 
20232
 
 
20233
        bool validationResult = _validateBegin__mat4( attributes, attributeDataPtr, validationDataPtr );
 
20234
        if ( !validationResult ) return false;
 
20235
 
 
20236
    } // validation
 
20237
#endif
 
20238
 
 
20239
    return true;
 
20240
}
 
20241
 
 
20242
//---------------------------------------------------------------------
 
20243
bool ColladaParserAutoGen15Private::_preEnd__mat4()
 
20244
{
 
20245
#ifdef GENERATEDSAXPARSER_VALIDATION
 
20246
    if ( mValidate )
 
20247
    {
 
20248
 
 
20249
        bool validationResult = _validateEnd__mat4();
 
20250
        if ( !validationResult ) return false;
 
20251
 
 
20252
    } // validation
 
20253
#endif
 
20254
 
 
20255
#ifdef GENERATEDSAXPARSER_VALIDATION
 
20256
    if ( mValidate )
 
20257
    {
 
20258
        bind_shape_matrix__ValidationData* validationData = (bind_shape_matrix__ValidationData*)mValidationDataStack.top();
 
20259
        DISABLE_WARNING_UNUSED(validationData)
 
20260
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__mat4, &validate__float4x4_type__streamEnd, &validationData->validationWholeSize, 0 );
 
20261
        ParserError::ErrorType simpleTypeValidationResult = validate__float4x4_type(0, (*(&validationData->validationWholeSize)));
 
20262
        mValidationDataStack.deleteObject();
 
20263
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
20264
        {
 
20265
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
20266
                simpleTypeValidationResult,
 
20267
                HASH_ELEMENT_MAT4,
 
20268
                (ParserChar*)0, 0 ) )
 
20269
            {
 
20270
                return false;
 
20271
            }
 
20272
        }
 
20273
        return returnValue;
 
20274
    }
 
20275
    else
 
20276
    {
 
20277
return floatDataEnd( &ColladaParserAutoGen15::data__mat4 );
 
20278
    }
 
20279
#else
 
20280
    {
 
20281
return floatDataEnd( &ColladaParserAutoGen15::data__mat4 );
 
20282
    } // validation
 
20283
#endif
 
20284
 
 
20285
}
 
20286
 
 
20287
//---------------------------------------------------------------------
 
20288
bool ColladaParserAutoGen15Private::_freeAttributes__mat4( void* attributeData )
 
20289
{
 
20290
    return true;
 
20291
}
 
20292
 
 
20293
//---------------------------------------------------------------------
 
20294
bool ColladaParserAutoGen15Private::_data__ivec2( const ParserChar* text, size_t textLength )
 
20295
{
 
20296
#ifdef GENERATEDSAXPARSER_VALIDATION
 
20297
    if ( mValidate )
 
20298
    {
 
20299
        int2__ValidationData* validationData = (int2__ValidationData*)mValidationDataStack.top();
 
20300
        DISABLE_WARNING_UNUSED(validationData)
 
20301
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__ivec2, &validate__int2_type__stream, &validationData->validationWholeSize, 0);
 
20302
    }
 
20303
    else
 
20304
    {
 
20305
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__ivec2);
 
20306
    }
 
20307
#else
 
20308
    {
 
20309
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__ivec2);
 
20310
    } // validation
 
20311
#endif
 
20312
 
 
20313
}
 
20314
 
 
20315
//---------------------------------------------------------------------
 
20316
bool ColladaParserAutoGen15Private::_preBegin__ivec2( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
20317
{
 
20318
#ifdef GENERATEDSAXPARSER_VALIDATION
 
20319
    if ( mValidate )
 
20320
    {
 
20321
 
 
20322
        bool validationResult = _validateBegin__ivec2( attributes, attributeDataPtr, validationDataPtr );
 
20323
        if ( !validationResult ) return false;
 
20324
 
 
20325
    } // validation
 
20326
#endif
 
20327
 
 
20328
    return true;
 
20329
}
 
20330
 
 
20331
//---------------------------------------------------------------------
 
20332
bool ColladaParserAutoGen15Private::_preEnd__ivec2()
 
20333
{
 
20334
#ifdef GENERATEDSAXPARSER_VALIDATION
 
20335
    if ( mValidate )
 
20336
    {
 
20337
 
 
20338
        bool validationResult = _validateEnd__ivec2();
 
20339
        if ( !validationResult ) return false;
 
20340
 
 
20341
    } // validation
 
20342
#endif
 
20343
 
 
20344
#ifdef GENERATEDSAXPARSER_VALIDATION
 
20345
    if ( mValidate )
 
20346
    {
 
20347
        int2__ValidationData* validationData = (int2__ValidationData*)mValidationDataStack.top();
 
20348
        DISABLE_WARNING_UNUSED(validationData)
 
20349
bool returnValue = sint64DataEnd( &ColladaParserAutoGen15::data__ivec2, &validate__int2_type__streamEnd, &validationData->validationWholeSize, 0 );
 
20350
        ParserError::ErrorType simpleTypeValidationResult = validate__int2_type(0, (*(&validationData->validationWholeSize)));
 
20351
        mValidationDataStack.deleteObject();
 
20352
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
20353
        {
 
20354
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
20355
                simpleTypeValidationResult,
 
20356
                HASH_ELEMENT_IVEC2,
 
20357
                (ParserChar*)0, 0 ) )
 
20358
            {
 
20359
                return false;
 
20360
            }
 
20361
        }
 
20362
        return returnValue;
 
20363
    }
 
20364
    else
 
20365
    {
 
20366
return sint64DataEnd( &ColladaParserAutoGen15::data__ivec2 );
 
20367
    }
 
20368
#else
 
20369
    {
 
20370
return sint64DataEnd( &ColladaParserAutoGen15::data__ivec2 );
 
20371
    } // validation
 
20372
#endif
 
20373
 
 
20374
}
 
20375
 
 
20376
//---------------------------------------------------------------------
 
20377
bool ColladaParserAutoGen15Private::_freeAttributes__ivec2( void* attributeData )
 
20378
{
 
20379
    return true;
 
20380
}
 
20381
 
 
20382
//---------------------------------------------------------------------
 
20383
bool ColladaParserAutoGen15Private::_data__ivec3( const ParserChar* text, size_t textLength )
 
20384
{
 
20385
#ifdef GENERATEDSAXPARSER_VALIDATION
 
20386
    if ( mValidate )
 
20387
    {
 
20388
        int3__ValidationData* validationData = (int3__ValidationData*)mValidationDataStack.top();
 
20389
        DISABLE_WARNING_UNUSED(validationData)
 
20390
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__ivec3, &validate__int3_type__stream, &validationData->validationWholeSize, 0);
 
20391
    }
 
20392
    else
 
20393
    {
 
20394
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__ivec3);
 
20395
    }
 
20396
#else
 
20397
    {
 
20398
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__ivec3);
 
20399
    } // validation
 
20400
#endif
 
20401
 
 
20402
}
 
20403
 
 
20404
//---------------------------------------------------------------------
 
20405
bool ColladaParserAutoGen15Private::_preBegin__ivec3( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
20406
{
 
20407
#ifdef GENERATEDSAXPARSER_VALIDATION
 
20408
    if ( mValidate )
 
20409
    {
 
20410
 
 
20411
        bool validationResult = _validateBegin__ivec3( attributes, attributeDataPtr, validationDataPtr );
 
20412
        if ( !validationResult ) return false;
 
20413
 
 
20414
    } // validation
 
20415
#endif
 
20416
 
 
20417
    return true;
 
20418
}
 
20419
 
 
20420
//---------------------------------------------------------------------
 
20421
bool ColladaParserAutoGen15Private::_preEnd__ivec3()
 
20422
{
 
20423
#ifdef GENERATEDSAXPARSER_VALIDATION
 
20424
    if ( mValidate )
 
20425
    {
 
20426
 
 
20427
        bool validationResult = _validateEnd__ivec3();
 
20428
        if ( !validationResult ) return false;
 
20429
 
 
20430
    } // validation
 
20431
#endif
 
20432
 
 
20433
#ifdef GENERATEDSAXPARSER_VALIDATION
 
20434
    if ( mValidate )
 
20435
    {
 
20436
        int3__ValidationData* validationData = (int3__ValidationData*)mValidationDataStack.top();
 
20437
        DISABLE_WARNING_UNUSED(validationData)
 
20438
bool returnValue = sint64DataEnd( &ColladaParserAutoGen15::data__ivec3, &validate__int3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
20439
        ParserError::ErrorType simpleTypeValidationResult = validate__int3_type(0, (*(&validationData->validationWholeSize)));
 
20440
        mValidationDataStack.deleteObject();
 
20441
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
20442
        {
 
20443
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
20444
                simpleTypeValidationResult,
 
20445
                HASH_ELEMENT_IVEC3,
 
20446
                (ParserChar*)0, 0 ) )
 
20447
            {
 
20448
                return false;
 
20449
            }
 
20450
        }
 
20451
        return returnValue;
 
20452
    }
 
20453
    else
 
20454
    {
 
20455
return sint64DataEnd( &ColladaParserAutoGen15::data__ivec3 );
 
20456
    }
 
20457
#else
 
20458
    {
 
20459
return sint64DataEnd( &ColladaParserAutoGen15::data__ivec3 );
 
20460
    } // validation
 
20461
#endif
 
20462
 
 
20463
}
 
20464
 
 
20465
//---------------------------------------------------------------------
 
20466
bool ColladaParserAutoGen15Private::_freeAttributes__ivec3( void* attributeData )
 
20467
{
 
20468
    return true;
 
20469
}
 
20470
 
 
20471
//---------------------------------------------------------------------
 
20472
bool ColladaParserAutoGen15Private::_data__ivec4( const ParserChar* text, size_t textLength )
 
20473
{
 
20474
#ifdef GENERATEDSAXPARSER_VALIDATION
 
20475
    if ( mValidate )
 
20476
    {
 
20477
        int4__ValidationData* validationData = (int4__ValidationData*)mValidationDataStack.top();
 
20478
        DISABLE_WARNING_UNUSED(validationData)
 
20479
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__ivec4, &validate__int4_type__stream, &validationData->validationWholeSize, 0);
 
20480
    }
 
20481
    else
 
20482
    {
 
20483
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__ivec4);
 
20484
    }
 
20485
#else
 
20486
    {
 
20487
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__ivec4);
 
20488
    } // validation
 
20489
#endif
 
20490
 
 
20491
}
 
20492
 
 
20493
//---------------------------------------------------------------------
 
20494
bool ColladaParserAutoGen15Private::_preBegin__ivec4( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
20495
{
 
20496
#ifdef GENERATEDSAXPARSER_VALIDATION
 
20497
    if ( mValidate )
 
20498
    {
 
20499
 
 
20500
        bool validationResult = _validateBegin__ivec4( attributes, attributeDataPtr, validationDataPtr );
 
20501
        if ( !validationResult ) return false;
 
20502
 
 
20503
    } // validation
 
20504
#endif
 
20505
 
 
20506
    return true;
 
20507
}
 
20508
 
 
20509
//---------------------------------------------------------------------
 
20510
bool ColladaParserAutoGen15Private::_preEnd__ivec4()
 
20511
{
 
20512
#ifdef GENERATEDSAXPARSER_VALIDATION
 
20513
    if ( mValidate )
 
20514
    {
 
20515
 
 
20516
        bool validationResult = _validateEnd__ivec4();
 
20517
        if ( !validationResult ) return false;
 
20518
 
 
20519
    } // validation
 
20520
#endif
 
20521
 
 
20522
#ifdef GENERATEDSAXPARSER_VALIDATION
 
20523
    if ( mValidate )
 
20524
    {
 
20525
        int4__ValidationData* validationData = (int4__ValidationData*)mValidationDataStack.top();
 
20526
        DISABLE_WARNING_UNUSED(validationData)
 
20527
bool returnValue = sint64DataEnd( &ColladaParserAutoGen15::data__ivec4, &validate__int4_type__streamEnd, &validationData->validationWholeSize, 0 );
 
20528
        ParserError::ErrorType simpleTypeValidationResult = validate__int4_type(0, (*(&validationData->validationWholeSize)));
 
20529
        mValidationDataStack.deleteObject();
 
20530
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
20531
        {
 
20532
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
20533
                simpleTypeValidationResult,
 
20534
                HASH_ELEMENT_IVEC4,
 
20535
                (ParserChar*)0, 0 ) )
 
20536
            {
 
20537
                return false;
 
20538
            }
 
20539
        }
 
20540
        return returnValue;
 
20541
    }
 
20542
    else
 
20543
    {
 
20544
return sint64DataEnd( &ColladaParserAutoGen15::data__ivec4 );
 
20545
    }
 
20546
#else
 
20547
    {
 
20548
return sint64DataEnd( &ColladaParserAutoGen15::data__ivec4 );
 
20549
    } // validation
 
20550
#endif
 
20551
 
 
20552
}
 
20553
 
 
20554
//---------------------------------------------------------------------
 
20555
bool ColladaParserAutoGen15Private::_freeAttributes__ivec4( void* attributeData )
 
20556
{
 
20557
    return true;
 
20558
}
 
20559
 
 
20560
//---------------------------------------------------------------------
 
20561
bool ColladaParserAutoGen15Private::_data__enum____gl_enumeration_type( const ParserChar* text, size_t textLength )
 
20562
{
 
20563
if (!mLastIncompleteFragmentInCharacterData)
 
20564
{
 
20565
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
20566
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
20567
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
20568
}
 
20569
else
 
20570
{
 
20571
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
20572
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
20573
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
20574
        mLastIncompleteFragmentInCharacterData = tmp;
 
20575
    }
 
20576
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
20577
    mEndOfDataInCurrentObjectOnStack += textLength;
 
20578
}
 
20579
return true;
 
20580
}
 
20581
 
 
20582
//---------------------------------------------------------------------
 
20583
bool ColladaParserAutoGen15Private::_preBegin__enum____gl_enumeration_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
20584
{
 
20585
#ifdef GENERATEDSAXPARSER_VALIDATION
 
20586
    if ( mValidate )
 
20587
    {
 
20588
 
 
20589
        bool validationResult = _validateBegin__enum____gl_enumeration_type( attributes, attributeDataPtr, validationDataPtr );
 
20590
        if ( !validationResult ) return false;
 
20591
 
 
20592
    } // validation
 
20593
#endif
 
20594
 
 
20595
    return true;
 
20596
}
 
20597
 
 
20598
//---------------------------------------------------------------------
 
20599
bool ColladaParserAutoGen15Private::_preEnd__enum____gl_enumeration_type()
 
20600
{
 
20601
#ifdef GENERATEDSAXPARSER_VALIDATION
 
20602
    if ( mValidate )
 
20603
    {
 
20604
 
 
20605
        bool validationResult = _validateEnd__enum____gl_enumeration_type();
 
20606
        if ( !validationResult ) return false;
 
20607
 
 
20608
    } // validation
 
20609
#endif
 
20610
 
 
20611
bool failed;
 
20612
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
20613
DISABLE_WARNING_UNUSED(ptrForErr)
 
20614
UNION__gl_enumeration_type parameter = toUnion_UNION__gl_enumeration_type( mLastIncompleteFragmentInCharacterData, (size_t)(mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData), failed );
 
20615
bool returnValue;
 
20616
if (!failed)
 
20617
{
 
20618
    returnValue = mImpl->data__enum____gl_enumeration_type(parameter);
 
20619
}
 
20620
else
 
20621
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_ENUM, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
20622
if (mLastIncompleteFragmentInCharacterData)
 
20623
    mStackMemoryManager.deleteObject();
 
20624
mLastIncompleteFragmentInCharacterData = 0;
 
20625
mEndOfDataInCurrentObjectOnStack = 0;
 
20626
return returnValue;
 
20627
 
 
20628
}
 
20629
 
 
20630
//---------------------------------------------------------------------
 
20631
bool ColladaParserAutoGen15Private::_freeAttributes__enum____gl_enumeration_type( void* attributeData )
 
20632
{
 
20633
    return true;
 
20634
}
 
20635
 
 
20636
//---------------------------------------------------------------------
 
20637
ENUM__gl_blend_enum ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gl_blend_enum (
 
20638
    const ParserChar* prefixedBuffer,
 
20639
    const ParserChar* prefixedBufferEnd,
 
20640
    const ParserChar** buffer,
 
20641
    const ParserChar* bufferEnd,
 
20642
    bool& failed,
 
20643
    const std::pair<StringHash, ENUM__gl_blend_enum>* enumMap,
 
20644
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
20645
)
 
20646
{
 
20647
    return toEnumDataPrefix<ENUM__gl_blend_enum, StringHash, ENUM__gl_blend_enum__COUNT, &toEnum_ENUM__gl_blend_enum>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
20648
}
 
20649
 
 
20650
//---------------------------------------------------------------------
 
20651
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__gl_blend_enum (
 
20652
    const ParserChar* text,
 
20653
    size_t textLength,
 
20654
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gl_blend_enum*, size_t ),
 
20655
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
20656
)
 
20657
{
 
20658
    return characterData2EnumData<ENUM__gl_blend_enum, StringHash, ENUM__gl_blend_enum__COUNT>(text, textLength, dataFunction, ENUM__gl_blend_enumMap, baseConversionFunc, &toEnum_ENUM__gl_blend_enum, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gl_blend_enum);
 
20659
}
 
20660
 
 
20661
//---------------------------------------------------------------------
 
20662
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__gl_blend_enum (
 
20663
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gl_blend_enum*, size_t ),
 
20664
    const std::pair<StringHash, ENUM__gl_blend_enum>* enumMap,
 
20665
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
20666
    ENUM__gl_blend_enum (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__gl_blend_enum>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
20667
)
 
20668
{
 
20669
    return dataEnumEnd<ENUM__gl_blend_enum, StringHash, ENUM__gl_blend_enum__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
20670
}
 
20671
 
 
20672
//---------------------------------------------------------------------
 
20673
ENUM__gl_face_enum ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gl_face_enum (
 
20674
    const ParserChar* prefixedBuffer,
 
20675
    const ParserChar* prefixedBufferEnd,
 
20676
    const ParserChar** buffer,
 
20677
    const ParserChar* bufferEnd,
 
20678
    bool& failed,
 
20679
    const std::pair<StringHash, ENUM__gl_face_enum>* enumMap,
 
20680
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
20681
)
 
20682
{
 
20683
    return toEnumDataPrefix<ENUM__gl_face_enum, StringHash, ENUM__gl_face_enum__COUNT, &toEnum_ENUM__gl_face_enum>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
20684
}
 
20685
 
 
20686
//---------------------------------------------------------------------
 
20687
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__gl_face_enum (
 
20688
    const ParserChar* text,
 
20689
    size_t textLength,
 
20690
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gl_face_enum*, size_t ),
 
20691
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
20692
)
 
20693
{
 
20694
    return characterData2EnumData<ENUM__gl_face_enum, StringHash, ENUM__gl_face_enum__COUNT>(text, textLength, dataFunction, ENUM__gl_face_enumMap, baseConversionFunc, &toEnum_ENUM__gl_face_enum, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gl_face_enum);
 
20695
}
 
20696
 
 
20697
//---------------------------------------------------------------------
 
20698
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__gl_face_enum (
 
20699
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gl_face_enum*, size_t ),
 
20700
    const std::pair<StringHash, ENUM__gl_face_enum>* enumMap,
 
20701
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
20702
    ENUM__gl_face_enum (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__gl_face_enum>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
20703
)
 
20704
{
 
20705
    return dataEnumEnd<ENUM__gl_face_enum, StringHash, ENUM__gl_face_enum__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
20706
}
 
20707
 
 
20708
//---------------------------------------------------------------------
 
20709
ENUM__gl_blend_equation_enum ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gl_blend_equation_enum (
 
20710
    const ParserChar* prefixedBuffer,
 
20711
    const ParserChar* prefixedBufferEnd,
 
20712
    const ParserChar** buffer,
 
20713
    const ParserChar* bufferEnd,
 
20714
    bool& failed,
 
20715
    const std::pair<StringHash, ENUM__gl_blend_equation_enum>* enumMap,
 
20716
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
20717
)
 
20718
{
 
20719
    return toEnumDataPrefix<ENUM__gl_blend_equation_enum, StringHash, ENUM__gl_blend_equation_enum__COUNT, &toEnum_ENUM__gl_blend_equation_enum>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
20720
}
 
20721
 
 
20722
//---------------------------------------------------------------------
 
20723
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__gl_blend_equation_enum (
 
20724
    const ParserChar* text,
 
20725
    size_t textLength,
 
20726
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gl_blend_equation_enum*, size_t ),
 
20727
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
20728
)
 
20729
{
 
20730
    return characterData2EnumData<ENUM__gl_blend_equation_enum, StringHash, ENUM__gl_blend_equation_enum__COUNT>(text, textLength, dataFunction, ENUM__gl_blend_equation_enumMap, baseConversionFunc, &toEnum_ENUM__gl_blend_equation_enum, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gl_blend_equation_enum);
 
20731
}
 
20732
 
 
20733
//---------------------------------------------------------------------
 
20734
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__gl_blend_equation_enum (
 
20735
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gl_blend_equation_enum*, size_t ),
 
20736
    const std::pair<StringHash, ENUM__gl_blend_equation_enum>* enumMap,
 
20737
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
20738
    ENUM__gl_blend_equation_enum (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__gl_blend_equation_enum>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
20739
)
 
20740
{
 
20741
    return dataEnumEnd<ENUM__gl_blend_equation_enum, StringHash, ENUM__gl_blend_equation_enum__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
20742
}
 
20743
 
 
20744
//---------------------------------------------------------------------
 
20745
ENUM__gl_func_enum ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gl_func_enum (
 
20746
    const ParserChar* prefixedBuffer,
 
20747
    const ParserChar* prefixedBufferEnd,
 
20748
    const ParserChar** buffer,
 
20749
    const ParserChar* bufferEnd,
 
20750
    bool& failed,
 
20751
    const std::pair<StringHash, ENUM__gl_func_enum>* enumMap,
 
20752
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
20753
)
 
20754
{
 
20755
    return toEnumDataPrefix<ENUM__gl_func_enum, StringHash, ENUM__gl_func_enum__COUNT, &toEnum_ENUM__gl_func_enum>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
20756
}
 
20757
 
 
20758
//---------------------------------------------------------------------
 
20759
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__gl_func_enum (
 
20760
    const ParserChar* text,
 
20761
    size_t textLength,
 
20762
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gl_func_enum*, size_t ),
 
20763
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
20764
)
 
20765
{
 
20766
    return characterData2EnumData<ENUM__gl_func_enum, StringHash, ENUM__gl_func_enum__COUNT>(text, textLength, dataFunction, ENUM__gl_func_enumMap, baseConversionFunc, &toEnum_ENUM__gl_func_enum, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gl_func_enum);
 
20767
}
 
20768
 
 
20769
//---------------------------------------------------------------------
 
20770
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__gl_func_enum (
 
20771
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gl_func_enum*, size_t ),
 
20772
    const std::pair<StringHash, ENUM__gl_func_enum>* enumMap,
 
20773
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
20774
    ENUM__gl_func_enum (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__gl_func_enum>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
20775
)
 
20776
{
 
20777
    return dataEnumEnd<ENUM__gl_func_enum, StringHash, ENUM__gl_func_enum__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
20778
}
 
20779
 
 
20780
//---------------------------------------------------------------------
 
20781
ENUM__gl_stencil_op_enum ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gl_stencil_op_enum (
 
20782
    const ParserChar* prefixedBuffer,
 
20783
    const ParserChar* prefixedBufferEnd,
 
20784
    const ParserChar** buffer,
 
20785
    const ParserChar* bufferEnd,
 
20786
    bool& failed,
 
20787
    const std::pair<StringHash, ENUM__gl_stencil_op_enum>* enumMap,
 
20788
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
20789
)
 
20790
{
 
20791
    return toEnumDataPrefix<ENUM__gl_stencil_op_enum, StringHash, ENUM__gl_stencil_op_enum__COUNT, &toEnum_ENUM__gl_stencil_op_enum>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
20792
}
 
20793
 
 
20794
//---------------------------------------------------------------------
 
20795
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__gl_stencil_op_enum (
 
20796
    const ParserChar* text,
 
20797
    size_t textLength,
 
20798
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gl_stencil_op_enum*, size_t ),
 
20799
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
20800
)
 
20801
{
 
20802
    return characterData2EnumData<ENUM__gl_stencil_op_enum, StringHash, ENUM__gl_stencil_op_enum__COUNT>(text, textLength, dataFunction, ENUM__gl_stencil_op_enumMap, baseConversionFunc, &toEnum_ENUM__gl_stencil_op_enum, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gl_stencil_op_enum);
 
20803
}
 
20804
 
 
20805
//---------------------------------------------------------------------
 
20806
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__gl_stencil_op_enum (
 
20807
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gl_stencil_op_enum*, size_t ),
 
20808
    const std::pair<StringHash, ENUM__gl_stencil_op_enum>* enumMap,
 
20809
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
20810
    ENUM__gl_stencil_op_enum (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__gl_stencil_op_enum>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
20811
)
 
20812
{
 
20813
    return dataEnumEnd<ENUM__gl_stencil_op_enum, StringHash, ENUM__gl_stencil_op_enum__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
20814
}
 
20815
 
 
20816
//---------------------------------------------------------------------
 
20817
ENUM__gl_material_enum ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gl_material_enum (
 
20818
    const ParserChar* prefixedBuffer,
 
20819
    const ParserChar* prefixedBufferEnd,
 
20820
    const ParserChar** buffer,
 
20821
    const ParserChar* bufferEnd,
 
20822
    bool& failed,
 
20823
    const std::pair<StringHash, ENUM__gl_material_enum>* enumMap,
 
20824
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
20825
)
 
20826
{
 
20827
    return toEnumDataPrefix<ENUM__gl_material_enum, StringHash, ENUM__gl_material_enum__COUNT, &toEnum_ENUM__gl_material_enum>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
20828
}
 
20829
 
 
20830
//---------------------------------------------------------------------
 
20831
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__gl_material_enum (
 
20832
    const ParserChar* text,
 
20833
    size_t textLength,
 
20834
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gl_material_enum*, size_t ),
 
20835
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
20836
)
 
20837
{
 
20838
    return characterData2EnumData<ENUM__gl_material_enum, StringHash, ENUM__gl_material_enum__COUNT>(text, textLength, dataFunction, ENUM__gl_material_enumMap, baseConversionFunc, &toEnum_ENUM__gl_material_enum, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gl_material_enum);
 
20839
}
 
20840
 
 
20841
//---------------------------------------------------------------------
 
20842
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__gl_material_enum (
 
20843
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gl_material_enum*, size_t ),
 
20844
    const std::pair<StringHash, ENUM__gl_material_enum>* enumMap,
 
20845
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
20846
    ENUM__gl_material_enum (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__gl_material_enum>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
20847
)
 
20848
{
 
20849
    return dataEnumEnd<ENUM__gl_material_enum, StringHash, ENUM__gl_material_enum__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
20850
}
 
20851
 
 
20852
//---------------------------------------------------------------------
 
20853
ENUM__gl_fog_enum ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gl_fog_enum (
 
20854
    const ParserChar* prefixedBuffer,
 
20855
    const ParserChar* prefixedBufferEnd,
 
20856
    const ParserChar** buffer,
 
20857
    const ParserChar* bufferEnd,
 
20858
    bool& failed,
 
20859
    const std::pair<StringHash, ENUM__gl_fog_enum>* enumMap,
 
20860
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
20861
)
 
20862
{
 
20863
    return toEnumDataPrefix<ENUM__gl_fog_enum, StringHash, ENUM__gl_fog_enum__COUNT, &toEnum_ENUM__gl_fog_enum>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
20864
}
 
20865
 
 
20866
//---------------------------------------------------------------------
 
20867
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__gl_fog_enum (
 
20868
    const ParserChar* text,
 
20869
    size_t textLength,
 
20870
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gl_fog_enum*, size_t ),
 
20871
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
20872
)
 
20873
{
 
20874
    return characterData2EnumData<ENUM__gl_fog_enum, StringHash, ENUM__gl_fog_enum__COUNT>(text, textLength, dataFunction, ENUM__gl_fog_enumMap, baseConversionFunc, &toEnum_ENUM__gl_fog_enum, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gl_fog_enum);
 
20875
}
 
20876
 
 
20877
//---------------------------------------------------------------------
 
20878
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__gl_fog_enum (
 
20879
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gl_fog_enum*, size_t ),
 
20880
    const std::pair<StringHash, ENUM__gl_fog_enum>* enumMap,
 
20881
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
20882
    ENUM__gl_fog_enum (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__gl_fog_enum>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
20883
)
 
20884
{
 
20885
    return dataEnumEnd<ENUM__gl_fog_enum, StringHash, ENUM__gl_fog_enum__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
20886
}
 
20887
 
 
20888
//---------------------------------------------------------------------
 
20889
ENUM__gl_fog_coord_src_enum ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gl_fog_coord_src_enum (
 
20890
    const ParserChar* prefixedBuffer,
 
20891
    const ParserChar* prefixedBufferEnd,
 
20892
    const ParserChar** buffer,
 
20893
    const ParserChar* bufferEnd,
 
20894
    bool& failed,
 
20895
    const std::pair<StringHash, ENUM__gl_fog_coord_src_enum>* enumMap,
 
20896
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
20897
)
 
20898
{
 
20899
    return toEnumDataPrefix<ENUM__gl_fog_coord_src_enum, StringHash, ENUM__gl_fog_coord_src_enum__COUNT, &toEnum_ENUM__gl_fog_coord_src_enum>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
20900
}
 
20901
 
 
20902
//---------------------------------------------------------------------
 
20903
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__gl_fog_coord_src_enum (
 
20904
    const ParserChar* text,
 
20905
    size_t textLength,
 
20906
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gl_fog_coord_src_enum*, size_t ),
 
20907
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
20908
)
 
20909
{
 
20910
    return characterData2EnumData<ENUM__gl_fog_coord_src_enum, StringHash, ENUM__gl_fog_coord_src_enum__COUNT>(text, textLength, dataFunction, ENUM__gl_fog_coord_src_enumMap, baseConversionFunc, &toEnum_ENUM__gl_fog_coord_src_enum, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gl_fog_coord_src_enum);
 
20911
}
 
20912
 
 
20913
//---------------------------------------------------------------------
 
20914
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__gl_fog_coord_src_enum (
 
20915
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gl_fog_coord_src_enum*, size_t ),
 
20916
    const std::pair<StringHash, ENUM__gl_fog_coord_src_enum>* enumMap,
 
20917
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
20918
    ENUM__gl_fog_coord_src_enum (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__gl_fog_coord_src_enum>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
20919
)
 
20920
{
 
20921
    return dataEnumEnd<ENUM__gl_fog_coord_src_enum, StringHash, ENUM__gl_fog_coord_src_enum__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
20922
}
 
20923
 
 
20924
//---------------------------------------------------------------------
 
20925
ENUM__gl_front_face_enum ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gl_front_face_enum (
 
20926
    const ParserChar* prefixedBuffer,
 
20927
    const ParserChar* prefixedBufferEnd,
 
20928
    const ParserChar** buffer,
 
20929
    const ParserChar* bufferEnd,
 
20930
    bool& failed,
 
20931
    const std::pair<StringHash, ENUM__gl_front_face_enum>* enumMap,
 
20932
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
20933
)
 
20934
{
 
20935
    return toEnumDataPrefix<ENUM__gl_front_face_enum, StringHash, ENUM__gl_front_face_enum__COUNT, &toEnum_ENUM__gl_front_face_enum>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
20936
}
 
20937
 
 
20938
//---------------------------------------------------------------------
 
20939
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__gl_front_face_enum (
 
20940
    const ParserChar* text,
 
20941
    size_t textLength,
 
20942
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gl_front_face_enum*, size_t ),
 
20943
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
20944
)
 
20945
{
 
20946
    return characterData2EnumData<ENUM__gl_front_face_enum, StringHash, ENUM__gl_front_face_enum__COUNT>(text, textLength, dataFunction, ENUM__gl_front_face_enumMap, baseConversionFunc, &toEnum_ENUM__gl_front_face_enum, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gl_front_face_enum);
 
20947
}
 
20948
 
 
20949
//---------------------------------------------------------------------
 
20950
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__gl_front_face_enum (
 
20951
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gl_front_face_enum*, size_t ),
 
20952
    const std::pair<StringHash, ENUM__gl_front_face_enum>* enumMap,
 
20953
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
20954
    ENUM__gl_front_face_enum (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__gl_front_face_enum>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
20955
)
 
20956
{
 
20957
    return dataEnumEnd<ENUM__gl_front_face_enum, StringHash, ENUM__gl_front_face_enum__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
20958
}
 
20959
 
 
20960
//---------------------------------------------------------------------
 
20961
ENUM__gl_light_model_color_control_enum ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gl_light_model_color_control_enum (
 
20962
    const ParserChar* prefixedBuffer,
 
20963
    const ParserChar* prefixedBufferEnd,
 
20964
    const ParserChar** buffer,
 
20965
    const ParserChar* bufferEnd,
 
20966
    bool& failed,
 
20967
    const std::pair<StringHash, ENUM__gl_light_model_color_control_enum>* enumMap,
 
20968
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
20969
)
 
20970
{
 
20971
    return toEnumDataPrefix<ENUM__gl_light_model_color_control_enum, StringHash, ENUM__gl_light_model_color_control_enum__COUNT, &toEnum_ENUM__gl_light_model_color_control_enum>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
20972
}
 
20973
 
 
20974
//---------------------------------------------------------------------
 
20975
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__gl_light_model_color_control_enum (
 
20976
    const ParserChar* text,
 
20977
    size_t textLength,
 
20978
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gl_light_model_color_control_enum*, size_t ),
 
20979
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
20980
)
 
20981
{
 
20982
    return characterData2EnumData<ENUM__gl_light_model_color_control_enum, StringHash, ENUM__gl_light_model_color_control_enum__COUNT>(text, textLength, dataFunction, ENUM__gl_light_model_color_control_enumMap, baseConversionFunc, &toEnum_ENUM__gl_light_model_color_control_enum, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gl_light_model_color_control_enum);
 
20983
}
 
20984
 
 
20985
//---------------------------------------------------------------------
 
20986
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__gl_light_model_color_control_enum (
 
20987
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gl_light_model_color_control_enum*, size_t ),
 
20988
    const std::pair<StringHash, ENUM__gl_light_model_color_control_enum>* enumMap,
 
20989
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
20990
    ENUM__gl_light_model_color_control_enum (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__gl_light_model_color_control_enum>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
20991
)
 
20992
{
 
20993
    return dataEnumEnd<ENUM__gl_light_model_color_control_enum, StringHash, ENUM__gl_light_model_color_control_enum__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
20994
}
 
20995
 
 
20996
//---------------------------------------------------------------------
 
20997
ENUM__gl_logic_op_enum ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gl_logic_op_enum (
 
20998
    const ParserChar* prefixedBuffer,
 
20999
    const ParserChar* prefixedBufferEnd,
 
21000
    const ParserChar** buffer,
 
21001
    const ParserChar* bufferEnd,
 
21002
    bool& failed,
 
21003
    const std::pair<StringHash, ENUM__gl_logic_op_enum>* enumMap,
 
21004
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
21005
)
 
21006
{
 
21007
    return toEnumDataPrefix<ENUM__gl_logic_op_enum, StringHash, ENUM__gl_logic_op_enum__COUNT, &toEnum_ENUM__gl_logic_op_enum>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
21008
}
 
21009
 
 
21010
//---------------------------------------------------------------------
 
21011
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__gl_logic_op_enum (
 
21012
    const ParserChar* text,
 
21013
    size_t textLength,
 
21014
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gl_logic_op_enum*, size_t ),
 
21015
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
21016
)
 
21017
{
 
21018
    return characterData2EnumData<ENUM__gl_logic_op_enum, StringHash, ENUM__gl_logic_op_enum__COUNT>(text, textLength, dataFunction, ENUM__gl_logic_op_enumMap, baseConversionFunc, &toEnum_ENUM__gl_logic_op_enum, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gl_logic_op_enum);
 
21019
}
 
21020
 
 
21021
//---------------------------------------------------------------------
 
21022
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__gl_logic_op_enum (
 
21023
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gl_logic_op_enum*, size_t ),
 
21024
    const std::pair<StringHash, ENUM__gl_logic_op_enum>* enumMap,
 
21025
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
21026
    ENUM__gl_logic_op_enum (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__gl_logic_op_enum>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
21027
)
 
21028
{
 
21029
    return dataEnumEnd<ENUM__gl_logic_op_enum, StringHash, ENUM__gl_logic_op_enum__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
21030
}
 
21031
 
 
21032
//---------------------------------------------------------------------
 
21033
ENUM__gl_polygon_mode_enum ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gl_polygon_mode_enum (
 
21034
    const ParserChar* prefixedBuffer,
 
21035
    const ParserChar* prefixedBufferEnd,
 
21036
    const ParserChar** buffer,
 
21037
    const ParserChar* bufferEnd,
 
21038
    bool& failed,
 
21039
    const std::pair<StringHash, ENUM__gl_polygon_mode_enum>* enumMap,
 
21040
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
21041
)
 
21042
{
 
21043
    return toEnumDataPrefix<ENUM__gl_polygon_mode_enum, StringHash, ENUM__gl_polygon_mode_enum__COUNT, &toEnum_ENUM__gl_polygon_mode_enum>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
21044
}
 
21045
 
 
21046
//---------------------------------------------------------------------
 
21047
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__gl_polygon_mode_enum (
 
21048
    const ParserChar* text,
 
21049
    size_t textLength,
 
21050
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gl_polygon_mode_enum*, size_t ),
 
21051
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
21052
)
 
21053
{
 
21054
    return characterData2EnumData<ENUM__gl_polygon_mode_enum, StringHash, ENUM__gl_polygon_mode_enum__COUNT>(text, textLength, dataFunction, ENUM__gl_polygon_mode_enumMap, baseConversionFunc, &toEnum_ENUM__gl_polygon_mode_enum, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gl_polygon_mode_enum);
 
21055
}
 
21056
 
 
21057
//---------------------------------------------------------------------
 
21058
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__gl_polygon_mode_enum (
 
21059
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gl_polygon_mode_enum*, size_t ),
 
21060
    const std::pair<StringHash, ENUM__gl_polygon_mode_enum>* enumMap,
 
21061
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
21062
    ENUM__gl_polygon_mode_enum (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__gl_polygon_mode_enum>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
21063
)
 
21064
{
 
21065
    return dataEnumEnd<ENUM__gl_polygon_mode_enum, StringHash, ENUM__gl_polygon_mode_enum__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
21066
}
 
21067
 
 
21068
//---------------------------------------------------------------------
 
21069
ENUM__gl_shade_model_enum ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gl_shade_model_enum (
 
21070
    const ParserChar* prefixedBuffer,
 
21071
    const ParserChar* prefixedBufferEnd,
 
21072
    const ParserChar** buffer,
 
21073
    const ParserChar* bufferEnd,
 
21074
    bool& failed,
 
21075
    const std::pair<StringHash, ENUM__gl_shade_model_enum>* enumMap,
 
21076
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
21077
)
 
21078
{
 
21079
    return toEnumDataPrefix<ENUM__gl_shade_model_enum, StringHash, ENUM__gl_shade_model_enum__COUNT, &toEnum_ENUM__gl_shade_model_enum>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
21080
}
 
21081
 
 
21082
//---------------------------------------------------------------------
 
21083
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__gl_shade_model_enum (
 
21084
    const ParserChar* text,
 
21085
    size_t textLength,
 
21086
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gl_shade_model_enum*, size_t ),
 
21087
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
21088
)
 
21089
{
 
21090
    return characterData2EnumData<ENUM__gl_shade_model_enum, StringHash, ENUM__gl_shade_model_enum__COUNT>(text, textLength, dataFunction, ENUM__gl_shade_model_enumMap, baseConversionFunc, &toEnum_ENUM__gl_shade_model_enum, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gl_shade_model_enum);
 
21091
}
 
21092
 
 
21093
//---------------------------------------------------------------------
 
21094
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__gl_shade_model_enum (
 
21095
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gl_shade_model_enum*, size_t ),
 
21096
    const std::pair<StringHash, ENUM__gl_shade_model_enum>* enumMap,
 
21097
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
21098
    ENUM__gl_shade_model_enum (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__gl_shade_model_enum>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
21099
)
 
21100
{
 
21101
    return dataEnumEnd<ENUM__gl_shade_model_enum, StringHash, ENUM__gl_shade_model_enum__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
21102
}
 
21103
 
 
21104
//---------------------------------------------------------------------
 
21105
UNION__gl_enumeration_type ColladaParserAutoGen15Private::toUnionPrefix_UNION__gl_enumeration_type (
 
21106
    const ParserChar* prefixedBuffer,
 
21107
    const ParserChar* prefixedBufferEnd,
 
21108
    const ParserChar** buffer,
 
21109
    const ParserChar* bufferEnd,
 
21110
    bool& failed
 
21111
)
 
21112
{
 
21113
    return toDataPrefix<UNION__gl_enumeration_type>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, toUnion_UNION__gl_enumeration_type);
 
21114
}
 
21115
 
 
21116
//---------------------------------------------------------------------
 
21117
const profile_GLES2__newparam__usertype__AttributeData profile_GLES2__newparam__usertype__AttributeData::DEFAULT = {0};
 
21118
 
 
21119
//---------------------------------------------------------------------
 
21120
bool ColladaParserAutoGen15Private::_data__profile_GLES2__newparam__usertype( const ParserChar* text, size_t textLength )
 
21121
{
 
21122
    return true;
 
21123
}
 
21124
 
 
21125
//---------------------------------------------------------------------
 
21126
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__newparam__usertype( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
21127
{
 
21128
#ifdef GENERATEDSAXPARSER_VALIDATION
 
21129
    if ( mValidate )
 
21130
    {
 
21131
 
 
21132
        bool validationResult = _validateBegin__profile_GLES2__newparam__usertype( attributes, attributeDataPtr, validationDataPtr );
 
21133
        if ( !validationResult ) return false;
 
21134
 
 
21135
    } // validation
 
21136
#endif
 
21137
 
 
21138
profile_GLES2__newparam__usertype__AttributeData* attributeData = newData<profile_GLES2__newparam__usertype__AttributeData>(attributeDataPtr);
 
21139
 
 
21140
const ParserChar** attributeArray = attributes.attributes;
 
21141
if ( attributeArray )
 
21142
{
 
21143
    while (true)
 
21144
    {
 
21145
        const ParserChar * attribute = *attributeArray;
 
21146
        if ( !attribute )
 
21147
            break;
 
21148
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
21149
        attributeArray++;
 
21150
        if ( !attributeArray )
 
21151
            return false;
 
21152
        const ParserChar* attributeValue = *attributeArray;
 
21153
        attributeArray++;
 
21154
 
 
21155
 
 
21156
    switch ( hash )
 
21157
    {
 
21158
    case HASH_ATTRIBUTE_TYPENAME:
 
21159
    {
 
21160
 
 
21161
attributeData->_typename = attributeValue;
 
21162
 
 
21163
    break;
 
21164
    }
 
21165
    default:
 
21166
    {
 
21167
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_USERTYPE, attribute, attributeValue))
 
21168
            {return false;}
 
21169
    }
 
21170
    }
 
21171
    }
 
21172
}
 
21173
if ( !attributeData->_typename )
 
21174
{
 
21175
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_USERTYPE, HASH_ATTRIBUTE_TYPENAME, 0 ) )
 
21176
        return false;
 
21177
}
 
21178
 
 
21179
 
 
21180
    return true;
 
21181
}
 
21182
 
 
21183
//---------------------------------------------------------------------
 
21184
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__newparam__usertype()
 
21185
{
 
21186
#ifdef GENERATEDSAXPARSER_VALIDATION
 
21187
    if ( mValidate )
 
21188
    {
 
21189
 
 
21190
        bool validationResult = _validateEnd__profile_GLES2__newparam__usertype();
 
21191
        if ( !validationResult ) return false;
 
21192
 
 
21193
    } // validation
 
21194
#endif
 
21195
 
 
21196
    return true;
 
21197
}
 
21198
 
 
21199
//---------------------------------------------------------------------
 
21200
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__newparam__usertype( void* attributeData )
 
21201
{
 
21202
    profile_GLES2__newparam__usertype__AttributeData* typedAttributeData = static_cast<profile_GLES2__newparam__usertype__AttributeData*>(attributeData);
 
21203
 
 
21204
    typedAttributeData->~profile_GLES2__newparam__usertype__AttributeData();
 
21205
 
 
21206
    return true;
 
21207
}
 
21208
 
 
21209
//---------------------------------------------------------------------
 
21210
const profile_GLES2__newparam__usertype__setparam__AttributeData profile_GLES2__newparam__usertype__setparam__AttributeData::DEFAULT = {0};
 
21211
 
 
21212
//---------------------------------------------------------------------
 
21213
bool ColladaParserAutoGen15Private::_data__profile_GLES2__newparam__usertype__setparam( const ParserChar* text, size_t textLength )
 
21214
{
 
21215
    return true;
 
21216
}
 
21217
 
 
21218
//---------------------------------------------------------------------
 
21219
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__newparam__usertype__setparam( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
21220
{
 
21221
#ifdef GENERATEDSAXPARSER_VALIDATION
 
21222
    if ( mValidate )
 
21223
    {
 
21224
 
 
21225
        bool validationResult = _validateBegin__profile_GLES2__newparam__usertype__setparam( attributes, attributeDataPtr, validationDataPtr );
 
21226
        if ( !validationResult ) return false;
 
21227
 
 
21228
    } // validation
 
21229
#endif
 
21230
 
 
21231
profile_GLES2__newparam__usertype__setparam__AttributeData* attributeData = newData<profile_GLES2__newparam__usertype__setparam__AttributeData>(attributeDataPtr);
 
21232
 
 
21233
const ParserChar** attributeArray = attributes.attributes;
 
21234
if ( attributeArray )
 
21235
{
 
21236
    while (true)
 
21237
    {
 
21238
        const ParserChar * attribute = *attributeArray;
 
21239
        if ( !attribute )
 
21240
            break;
 
21241
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
21242
        attributeArray++;
 
21243
        if ( !attributeArray )
 
21244
            return false;
 
21245
        const ParserChar* attributeValue = *attributeArray;
 
21246
        attributeArray++;
 
21247
 
 
21248
 
 
21249
    switch ( hash )
 
21250
    {
 
21251
    case HASH_ATTRIBUTE_REF:
 
21252
    {
 
21253
 
 
21254
attributeData->ref = attributeValue;
 
21255
 
 
21256
    break;
 
21257
    }
 
21258
    default:
 
21259
    {
 
21260
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SETPARAM, attribute, attributeValue))
 
21261
            {return false;}
 
21262
    }
 
21263
    }
 
21264
    }
 
21265
}
 
21266
if ( !attributeData->ref )
 
21267
{
 
21268
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_SETPARAM, HASH_ATTRIBUTE_REF, 0 ) )
 
21269
        return false;
 
21270
}
 
21271
 
 
21272
 
 
21273
    return true;
 
21274
}
 
21275
 
 
21276
//---------------------------------------------------------------------
 
21277
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__newparam__usertype__setparam()
 
21278
{
 
21279
#ifdef GENERATEDSAXPARSER_VALIDATION
 
21280
    if ( mValidate )
 
21281
    {
 
21282
 
 
21283
        bool validationResult = _validateEnd__profile_GLES2__newparam__usertype__setparam();
 
21284
        if ( !validationResult ) return false;
 
21285
 
 
21286
    } // validation
 
21287
#endif
 
21288
 
 
21289
    return true;
 
21290
}
 
21291
 
 
21292
//---------------------------------------------------------------------
 
21293
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__newparam__usertype__setparam( void* attributeData )
 
21294
{
 
21295
    profile_GLES2__newparam__usertype__setparam__AttributeData* typedAttributeData = static_cast<profile_GLES2__newparam__usertype__setparam__AttributeData*>(attributeData);
 
21296
 
 
21297
    typedAttributeData->~profile_GLES2__newparam__usertype__setparam__AttributeData();
 
21298
 
 
21299
    return true;
 
21300
}
 
21301
 
 
21302
//---------------------------------------------------------------------
 
21303
const profile_GLES2__newparam__usertype__setparam__array__AttributeData profile_GLES2__newparam__usertype__setparam__array__AttributeData::DEFAULT = {0, 0};
 
21304
 
 
21305
//---------------------------------------------------------------------
 
21306
bool ColladaParserAutoGen15Private::_data__profile_GLES2__newparam__usertype__setparam__array( const ParserChar* text, size_t textLength )
 
21307
{
 
21308
    return true;
 
21309
}
 
21310
 
 
21311
//---------------------------------------------------------------------
 
21312
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__newparam__usertype__setparam__array( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
21313
{
 
21314
#ifdef GENERATEDSAXPARSER_VALIDATION
 
21315
    if ( mValidate )
 
21316
    {
 
21317
 
 
21318
        bool validationResult = _validateBegin__profile_GLES2__newparam__usertype__setparam__array( attributes, attributeDataPtr, validationDataPtr );
 
21319
        if ( !validationResult ) return false;
 
21320
 
 
21321
    } // validation
 
21322
#endif
 
21323
 
 
21324
profile_GLES2__newparam__usertype__setparam__array__AttributeData* attributeData = newData<profile_GLES2__newparam__usertype__setparam__array__AttributeData>(attributeDataPtr);
 
21325
 
 
21326
const ParserChar** attributeArray = attributes.attributes;
 
21327
if ( attributeArray )
 
21328
{
 
21329
    while (true)
 
21330
    {
 
21331
        const ParserChar * attribute = *attributeArray;
 
21332
        if ( !attribute )
 
21333
            break;
 
21334
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
21335
        attributeArray++;
 
21336
        if ( !attributeArray )
 
21337
            return false;
 
21338
        const ParserChar* attributeValue = *attributeArray;
 
21339
        attributeArray++;
 
21340
 
 
21341
 
 
21342
    switch ( hash )
 
21343
    {
 
21344
    case HASH_ATTRIBUTE_LENGTH:
 
21345
    {
 
21346
bool failed;
 
21347
attributeData->length = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
21348
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
21349
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
21350
        HASH_ELEMENT_ARRAY,
 
21351
        HASH_ATTRIBUTE_LENGTH,
 
21352
        attributeValue))
 
21353
{
 
21354
    return false;
 
21355
}
 
21356
#ifdef GENERATEDSAXPARSER_VALIDATION
 
21357
    if ( mValidate )
 
21358
    {
 
21359
    ParserError::ErrorType simpleTypeValidationResult = validate__positiveInteger(attributeData->length);
 
21360
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
21361
    {
 
21362
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
21363
            simpleTypeValidationResult,
 
21364
            HASH_ELEMENT_ARRAY,
 
21365
            HASH_ATTRIBUTE_LENGTH,
 
21366
            attributeValue) )
 
21367
        {
 
21368
            return false;
 
21369
        }
 
21370
    }
 
21371
    } // validation
 
21372
#endif
 
21373
if ( !failed )
 
21374
    attributeData->present_attributes |= profile_GLES2__newparam__usertype__setparam__array__AttributeData::ATTRIBUTE_LENGTH_PRESENT;
 
21375
 
 
21376
    break;
 
21377
    }
 
21378
    default:
 
21379
    {
 
21380
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_ARRAY, attribute, attributeValue))
 
21381
            {return false;}
 
21382
    }
 
21383
    }
 
21384
    }
 
21385
}
 
21386
if ( (attributeData->present_attributes & profile_GLES2__newparam__usertype__setparam__array__AttributeData::ATTRIBUTE_LENGTH_PRESENT) == 0 )
 
21387
{
 
21388
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_ARRAY, HASH_ATTRIBUTE_LENGTH, 0 ) )
 
21389
        return false;
 
21390
}
 
21391
 
 
21392
 
 
21393
    return true;
 
21394
}
 
21395
 
 
21396
//---------------------------------------------------------------------
 
21397
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__newparam__usertype__setparam__array()
 
21398
{
 
21399
#ifdef GENERATEDSAXPARSER_VALIDATION
 
21400
    if ( mValidate )
 
21401
    {
 
21402
 
 
21403
        bool validationResult = _validateEnd__profile_GLES2__newparam__usertype__setparam__array();
 
21404
        if ( !validationResult ) return false;
 
21405
 
 
21406
    } // validation
 
21407
#endif
 
21408
 
 
21409
    return true;
 
21410
}
 
21411
 
 
21412
//---------------------------------------------------------------------
 
21413
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__newparam__usertype__setparam__array( void* attributeData )
 
21414
{
 
21415
    profile_GLES2__newparam__usertype__setparam__array__AttributeData* typedAttributeData = static_cast<profile_GLES2__newparam__usertype__setparam__array__AttributeData*>(attributeData);
 
21416
 
 
21417
    typedAttributeData->~profile_GLES2__newparam__usertype__setparam__array__AttributeData();
 
21418
 
 
21419
    return true;
 
21420
}
 
21421
 
 
21422
//---------------------------------------------------------------------
 
21423
const profile_gles2_type____technique__AttributeData profile_gles2_type____technique__AttributeData::DEFAULT = {0, 0};
 
21424
 
 
21425
//---------------------------------------------------------------------
 
21426
bool ColladaParserAutoGen15Private::_data__profile_gles2_type____technique( const ParserChar* text, size_t textLength )
 
21427
{
 
21428
    return true;
 
21429
}
 
21430
 
 
21431
//---------------------------------------------------------------------
 
21432
bool ColladaParserAutoGen15Private::_preBegin__profile_gles2_type____technique( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
21433
{
 
21434
#ifdef GENERATEDSAXPARSER_VALIDATION
 
21435
    if ( mValidate )
 
21436
    {
 
21437
 
 
21438
        bool validationResult = _validateBegin__profile_gles2_type____technique( attributes, attributeDataPtr, validationDataPtr );
 
21439
        if ( !validationResult ) return false;
 
21440
 
 
21441
    } // validation
 
21442
#endif
 
21443
 
 
21444
profile_gles2_type____technique__AttributeData* attributeData = newData<profile_gles2_type____technique__AttributeData>(attributeDataPtr);
 
21445
 
 
21446
const ParserChar** attributeArray = attributes.attributes;
 
21447
if ( attributeArray )
 
21448
{
 
21449
    while (true)
 
21450
    {
 
21451
        const ParserChar * attribute = *attributeArray;
 
21452
        if ( !attribute )
 
21453
            break;
 
21454
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
21455
        attributeArray++;
 
21456
        if ( !attributeArray )
 
21457
            return false;
 
21458
        const ParserChar* attributeValue = *attributeArray;
 
21459
        attributeArray++;
 
21460
 
 
21461
 
 
21462
    switch ( hash )
 
21463
    {
 
21464
    case HASH_ATTRIBUTE_ID:
 
21465
    {
 
21466
 
 
21467
attributeData->id = attributeValue;
 
21468
 
 
21469
    break;
 
21470
    }
 
21471
    case HASH_ATTRIBUTE_SID:
 
21472
    {
 
21473
 
 
21474
attributeData->sid = attributeValue;
 
21475
#ifdef GENERATEDSAXPARSER_VALIDATION
 
21476
    if ( mValidate )
 
21477
    {
 
21478
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
21479
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
21480
    {
 
21481
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
21482
            simpleTypeValidationResult,
 
21483
            HASH_ELEMENT_TECHNIQUE,
 
21484
            HASH_ATTRIBUTE_SID,
 
21485
            attributeValue) )
 
21486
        {
 
21487
            return false;
 
21488
        }
 
21489
    }
 
21490
    } // validation
 
21491
#endif
 
21492
 
 
21493
    break;
 
21494
    }
 
21495
    default:
 
21496
    {
 
21497
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_TECHNIQUE, attribute, attributeValue))
 
21498
            {return false;}
 
21499
    }
 
21500
    }
 
21501
    }
 
21502
}
 
21503
if ( !attributeData->sid )
 
21504
{
 
21505
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_TECHNIQUE, HASH_ATTRIBUTE_SID, 0 ) )
 
21506
        return false;
 
21507
}
 
21508
 
 
21509
 
 
21510
    return true;
 
21511
}
 
21512
 
 
21513
//---------------------------------------------------------------------
 
21514
bool ColladaParserAutoGen15Private::_preEnd__profile_gles2_type____technique()
 
21515
{
 
21516
#ifdef GENERATEDSAXPARSER_VALIDATION
 
21517
    if ( mValidate )
 
21518
    {
 
21519
 
 
21520
        bool validationResult = _validateEnd__profile_gles2_type____technique();
 
21521
        if ( !validationResult ) return false;
 
21522
 
 
21523
    } // validation
 
21524
#endif
 
21525
 
 
21526
    return true;
 
21527
}
 
21528
 
 
21529
//---------------------------------------------------------------------
 
21530
bool ColladaParserAutoGen15Private::_freeAttributes__profile_gles2_type____technique( void* attributeData )
 
21531
{
 
21532
    profile_gles2_type____technique__AttributeData* typedAttributeData = static_cast<profile_gles2_type____technique__AttributeData*>(attributeData);
 
21533
 
 
21534
    typedAttributeData->~profile_gles2_type____technique__AttributeData();
 
21535
 
 
21536
    return true;
 
21537
}
 
21538
 
 
21539
//---------------------------------------------------------------------
 
21540
const pass____gles2_pass_type__AttributeData pass____gles2_pass_type__AttributeData::DEFAULT = {0};
 
21541
 
 
21542
//---------------------------------------------------------------------
 
21543
bool ColladaParserAutoGen15Private::_data__pass____gles2_pass_type( const ParserChar* text, size_t textLength )
 
21544
{
 
21545
    return true;
 
21546
}
 
21547
 
 
21548
//---------------------------------------------------------------------
 
21549
bool ColladaParserAutoGen15Private::_preBegin__pass____gles2_pass_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
21550
{
 
21551
#ifdef GENERATEDSAXPARSER_VALIDATION
 
21552
    if ( mValidate )
 
21553
    {
 
21554
 
 
21555
        bool validationResult = _validateBegin__pass____gles2_pass_type( attributes, attributeDataPtr, validationDataPtr );
 
21556
        if ( !validationResult ) return false;
 
21557
 
 
21558
    } // validation
 
21559
#endif
 
21560
 
 
21561
pass____gles2_pass_type__AttributeData* attributeData = newData<pass____gles2_pass_type__AttributeData>(attributeDataPtr);
 
21562
 
 
21563
const ParserChar** attributeArray = attributes.attributes;
 
21564
if ( attributeArray )
 
21565
{
 
21566
    while (true)
 
21567
    {
 
21568
        const ParserChar * attribute = *attributeArray;
 
21569
        if ( !attribute )
 
21570
            break;
 
21571
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
21572
        attributeArray++;
 
21573
        if ( !attributeArray )
 
21574
            return false;
 
21575
        const ParserChar* attributeValue = *attributeArray;
 
21576
        attributeArray++;
 
21577
 
 
21578
 
 
21579
    switch ( hash )
 
21580
    {
 
21581
    case HASH_ATTRIBUTE_SID:
 
21582
    {
 
21583
 
 
21584
attributeData->sid = attributeValue;
 
21585
#ifdef GENERATEDSAXPARSER_VALIDATION
 
21586
    if ( mValidate )
 
21587
    {
 
21588
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
21589
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
21590
    {
 
21591
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
21592
            simpleTypeValidationResult,
 
21593
            HASH_ELEMENT_PASS,
 
21594
            HASH_ATTRIBUTE_SID,
 
21595
            attributeValue) )
 
21596
        {
 
21597
            return false;
 
21598
        }
 
21599
    }
 
21600
    } // validation
 
21601
#endif
 
21602
 
 
21603
    break;
 
21604
    }
 
21605
    default:
 
21606
    {
 
21607
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_PASS, attribute, attributeValue))
 
21608
            {return false;}
 
21609
    }
 
21610
    }
 
21611
    }
 
21612
}
 
21613
 
 
21614
 
 
21615
    return true;
 
21616
}
 
21617
 
 
21618
//---------------------------------------------------------------------
 
21619
bool ColladaParserAutoGen15Private::_preEnd__pass____gles2_pass_type()
 
21620
{
 
21621
#ifdef GENERATEDSAXPARSER_VALIDATION
 
21622
    if ( mValidate )
 
21623
    {
 
21624
 
 
21625
        bool validationResult = _validateEnd__pass____gles2_pass_type();
 
21626
        if ( !validationResult ) return false;
 
21627
 
 
21628
    } // validation
 
21629
#endif
 
21630
 
 
21631
    return true;
 
21632
}
 
21633
 
 
21634
//---------------------------------------------------------------------
 
21635
bool ColladaParserAutoGen15Private::_freeAttributes__pass____gles2_pass_type( void* attributeData )
 
21636
{
 
21637
    pass____gles2_pass_type__AttributeData* typedAttributeData = static_cast<pass____gles2_pass_type__AttributeData*>(attributeData);
 
21638
 
 
21639
    typedAttributeData->~pass____gles2_pass_type__AttributeData();
 
21640
 
 
21641
    return true;
 
21642
}
 
21643
 
 
21644
//---------------------------------------------------------------------
 
21645
bool ColladaParserAutoGen15Private::_data__gles2_pass_type____states( const ParserChar* text, size_t textLength )
 
21646
{
 
21647
    return true;
 
21648
}
 
21649
 
 
21650
//---------------------------------------------------------------------
 
21651
bool ColladaParserAutoGen15Private::_preBegin__gles2_pass_type____states( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
21652
{
 
21653
#ifdef GENERATEDSAXPARSER_VALIDATION
 
21654
    if ( mValidate )
 
21655
    {
 
21656
 
 
21657
        bool validationResult = _validateBegin__gles2_pass_type____states( attributes, attributeDataPtr, validationDataPtr );
 
21658
        if ( !validationResult ) return false;
 
21659
 
 
21660
    } // validation
 
21661
#endif
 
21662
 
 
21663
    return true;
 
21664
}
 
21665
 
 
21666
//---------------------------------------------------------------------
 
21667
bool ColladaParserAutoGen15Private::_preEnd__gles2_pass_type____states()
 
21668
{
 
21669
#ifdef GENERATEDSAXPARSER_VALIDATION
 
21670
    if ( mValidate )
 
21671
    {
 
21672
 
 
21673
        bool validationResult = _validateEnd__gles2_pass_type____states();
 
21674
        if ( !validationResult ) return false;
 
21675
 
 
21676
    } // validation
 
21677
#endif
 
21678
 
 
21679
    return true;
 
21680
}
 
21681
 
 
21682
//---------------------------------------------------------------------
 
21683
bool ColladaParserAutoGen15Private::_freeAttributes__gles2_pass_type____states( void* attributeData )
 
21684
{
 
21685
    return true;
 
21686
}
 
21687
 
 
21688
//---------------------------------------------------------------------
 
21689
const profile_GLES2__technique__pass__states__blend_color__AttributeData profile_GLES2__technique__pass__states__blend_color__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<float>(), 0};
 
21690
 
 
21691
//---------------------------------------------------------------------
 
21692
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__blend_color( const ParserChar* text, size_t textLength )
 
21693
{
 
21694
    return true;
 
21695
}
 
21696
 
 
21697
//---------------------------------------------------------------------
 
21698
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__blend_color( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
21699
{
 
21700
#ifdef GENERATEDSAXPARSER_VALIDATION
 
21701
    if ( mValidate )
 
21702
    {
 
21703
 
 
21704
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__blend_color( attributes, attributeDataPtr, validationDataPtr );
 
21705
        if ( !validationResult ) return false;
 
21706
 
 
21707
    } // validation
 
21708
#endif
 
21709
 
 
21710
profile_GLES2__technique__pass__states__blend_color__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__blend_color__AttributeData>(attributeDataPtr);
 
21711
 
 
21712
const ParserChar** attributeArray = attributes.attributes;
 
21713
if ( attributeArray )
 
21714
{
 
21715
    while (true)
 
21716
    {
 
21717
        const ParserChar * attribute = *attributeArray;
 
21718
        if ( !attribute )
 
21719
            break;
 
21720
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
21721
        attributeArray++;
 
21722
        if ( !attributeArray )
 
21723
            return false;
 
21724
        const ParserChar* attributeValue = *attributeArray;
 
21725
        attributeArray++;
 
21726
 
 
21727
 
 
21728
    switch ( hash )
 
21729
    {
 
21730
    case HASH_ATTRIBUTE_VALUE:
 
21731
    {
 
21732
bool failed;
 
21733
#ifdef GENERATEDSAXPARSER_VALIDATION
 
21734
    if ( mValidate )
 
21735
    {
 
21736
failed = !characterData2FloatList(attributeValue, attributeData->value, 0, HASH_ELEMENT_BLEND_COLOR, HASH_ATTRIBUTE_VALUE);
 
21737
    }
 
21738
    else
 
21739
    {
 
21740
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
21741
    }
 
21742
#else
 
21743
    {
 
21744
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
21745
    } // validation
 
21746
#endif
 
21747
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
21748
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
21749
        HASH_ELEMENT_BLEND_COLOR,
 
21750
        HASH_ATTRIBUTE_VALUE,
 
21751
        attributeValue))
 
21752
{
 
21753
    return false;
 
21754
}
 
21755
#ifdef GENERATEDSAXPARSER_VALIDATION
 
21756
    if ( mValidate )
 
21757
    {
 
21758
    ParserError::ErrorType simpleTypeValidationResult = validate__float4_type(attributeData->value.data, attributeData->value.size);
 
21759
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
21760
    {
 
21761
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
21762
            simpleTypeValidationResult,
 
21763
            HASH_ELEMENT_BLEND_COLOR,
 
21764
            HASH_ATTRIBUTE_VALUE,
 
21765
            attributeValue) )
 
21766
        {
 
21767
            return false;
 
21768
        }
 
21769
    }
 
21770
    } // validation
 
21771
#endif
 
21772
 
 
21773
if ( !failed )
 
21774
    attributeData->present_attributes |= profile_GLES2__technique__pass__states__blend_color__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
21775
 
 
21776
    break;
 
21777
    }
 
21778
    case HASH_ATTRIBUTE_PARAM:
 
21779
    {
 
21780
 
 
21781
attributeData->param = attributeValue;
 
21782
 
 
21783
    break;
 
21784
    }
 
21785
    default:
 
21786
    {
 
21787
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_BLEND_COLOR, attribute, attributeValue))
 
21788
            {return false;}
 
21789
    }
 
21790
    }
 
21791
    }
 
21792
}
 
21793
if ((attributeData->present_attributes & profile_GLES2__technique__pass__states__blend_color__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
21794
{
 
21795
    bool failed;
 
21796
    failed = !characterData2FloatList("0.0E1 0.0E1 0.0E1 0.0E1", attributeData->value);
 
21797
    if ( !failed )
 
21798
    attributeData->present_attributes |= profile_GLES2__technique__pass__states__blend_color__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
21799
}
 
21800
 
 
21801
 
 
21802
    return true;
 
21803
}
 
21804
 
 
21805
//---------------------------------------------------------------------
 
21806
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__blend_color()
 
21807
{
 
21808
#ifdef GENERATEDSAXPARSER_VALIDATION
 
21809
    if ( mValidate )
 
21810
    {
 
21811
 
 
21812
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__blend_color();
 
21813
        if ( !validationResult ) return false;
 
21814
 
 
21815
    } // validation
 
21816
#endif
 
21817
 
 
21818
    return true;
 
21819
}
 
21820
 
 
21821
//---------------------------------------------------------------------
 
21822
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__blend_color( void* attributeData )
 
21823
{
 
21824
    profile_GLES2__technique__pass__states__blend_color__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__blend_color__AttributeData*>(attributeData);
 
21825
    if (typedAttributeData->value.data)
 
21826
    {
 
21827
        mStackMemoryManager.deleteObject();
 
21828
    }
 
21829
 
 
21830
 
 
21831
    typedAttributeData->~profile_GLES2__technique__pass__states__blend_color__AttributeData();
 
21832
 
 
21833
    return true;
 
21834
}
 
21835
 
 
21836
//---------------------------------------------------------------------
 
21837
const profile_GLES2__technique__pass__states__blend_equation__AttributeData profile_GLES2__technique__pass__states__blend_equation__AttributeData::DEFAULT = {ENUM__gl_blend_equation_enum__FUNC_ADD, 0};
 
21838
 
 
21839
//---------------------------------------------------------------------
 
21840
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__blend_equation( const ParserChar* text, size_t textLength )
 
21841
{
 
21842
    return true;
 
21843
}
 
21844
 
 
21845
//---------------------------------------------------------------------
 
21846
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__blend_equation( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
21847
{
 
21848
#ifdef GENERATEDSAXPARSER_VALIDATION
 
21849
    if ( mValidate )
 
21850
    {
 
21851
 
 
21852
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__blend_equation( attributes, attributeDataPtr, validationDataPtr );
 
21853
        if ( !validationResult ) return false;
 
21854
 
 
21855
    } // validation
 
21856
#endif
 
21857
 
 
21858
profile_GLES2__technique__pass__states__blend_equation__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__blend_equation__AttributeData>(attributeDataPtr);
 
21859
 
 
21860
const ParserChar** attributeArray = attributes.attributes;
 
21861
if ( attributeArray )
 
21862
{
 
21863
    while (true)
 
21864
    {
 
21865
        const ParserChar * attribute = *attributeArray;
 
21866
        if ( !attribute )
 
21867
            break;
 
21868
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
21869
        attributeArray++;
 
21870
        if ( !attributeArray )
 
21871
            return false;
 
21872
        const ParserChar* attributeValue = *attributeArray;
 
21873
        attributeArray++;
 
21874
 
 
21875
 
 
21876
    switch ( hash )
 
21877
    {
 
21878
    case HASH_ATTRIBUTE_VALUE:
 
21879
    {
 
21880
bool failed;
 
21881
attributeData->value = Utils::toEnum<ENUM__gl_blend_equation_enum, StringHash, ENUM__gl_blend_equation_enum__COUNT>(attributeValue, failed, ENUM__gl_blend_equation_enumMap, Utils::calculateStringHash);
 
21882
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
21883
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
21884
        HASH_ELEMENT_BLEND_EQUATION,
 
21885
        HASH_ATTRIBUTE_VALUE,
 
21886
        attributeValue))
 
21887
{
 
21888
    return false;
 
21889
}
 
21890
 
 
21891
    break;
 
21892
    }
 
21893
    case HASH_ATTRIBUTE_PARAM:
 
21894
    {
 
21895
 
 
21896
attributeData->param = attributeValue;
 
21897
 
 
21898
    break;
 
21899
    }
 
21900
    default:
 
21901
    {
 
21902
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_BLEND_EQUATION, attribute, attributeValue))
 
21903
            {return false;}
 
21904
    }
 
21905
    }
 
21906
    }
 
21907
}
 
21908
 
 
21909
 
 
21910
    return true;
 
21911
}
 
21912
 
 
21913
//---------------------------------------------------------------------
 
21914
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__blend_equation()
 
21915
{
 
21916
#ifdef GENERATEDSAXPARSER_VALIDATION
 
21917
    if ( mValidate )
 
21918
    {
 
21919
 
 
21920
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__blend_equation();
 
21921
        if ( !validationResult ) return false;
 
21922
 
 
21923
    } // validation
 
21924
#endif
 
21925
 
 
21926
    return true;
 
21927
}
 
21928
 
 
21929
//---------------------------------------------------------------------
 
21930
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__blend_equation( void* attributeData )
 
21931
{
 
21932
    profile_GLES2__technique__pass__states__blend_equation__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__blend_equation__AttributeData*>(attributeData);
 
21933
 
 
21934
    typedAttributeData->~profile_GLES2__technique__pass__states__blend_equation__AttributeData();
 
21935
 
 
21936
    return true;
 
21937
}
 
21938
 
 
21939
//---------------------------------------------------------------------
 
21940
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__blend_equation_separate( const ParserChar* text, size_t textLength )
 
21941
{
 
21942
    return true;
 
21943
}
 
21944
 
 
21945
//---------------------------------------------------------------------
 
21946
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__blend_equation_separate( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
21947
{
 
21948
#ifdef GENERATEDSAXPARSER_VALIDATION
 
21949
    if ( mValidate )
 
21950
    {
 
21951
 
 
21952
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__blend_equation_separate( attributes, attributeDataPtr, validationDataPtr );
 
21953
        if ( !validationResult ) return false;
 
21954
 
 
21955
    } // validation
 
21956
#endif
 
21957
 
 
21958
    return true;
 
21959
}
 
21960
 
 
21961
//---------------------------------------------------------------------
 
21962
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__blend_equation_separate()
 
21963
{
 
21964
#ifdef GENERATEDSAXPARSER_VALIDATION
 
21965
    if ( mValidate )
 
21966
    {
 
21967
 
 
21968
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__blend_equation_separate();
 
21969
        if ( !validationResult ) return false;
 
21970
 
 
21971
    } // validation
 
21972
#endif
 
21973
 
 
21974
    return true;
 
21975
}
 
21976
 
 
21977
//---------------------------------------------------------------------
 
21978
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__blend_equation_separate( void* attributeData )
 
21979
{
 
21980
    return true;
 
21981
}
 
21982
 
 
21983
//---------------------------------------------------------------------
 
21984
const profile_GLES2__technique__pass__states__blend_equation_separate__rgb__AttributeData profile_GLES2__technique__pass__states__blend_equation_separate__rgb__AttributeData::DEFAULT = {ENUM__gl_blend_equation_enum__FUNC_ADD, 0};
 
21985
 
 
21986
//---------------------------------------------------------------------
 
21987
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__blend_equation_separate__rgb( const ParserChar* text, size_t textLength )
 
21988
{
 
21989
    return true;
 
21990
}
 
21991
 
 
21992
//---------------------------------------------------------------------
 
21993
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__blend_equation_separate__rgb( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
21994
{
 
21995
#ifdef GENERATEDSAXPARSER_VALIDATION
 
21996
    if ( mValidate )
 
21997
    {
 
21998
 
 
21999
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__blend_equation_separate__rgb( attributes, attributeDataPtr, validationDataPtr );
 
22000
        if ( !validationResult ) return false;
 
22001
 
 
22002
    } // validation
 
22003
#endif
 
22004
 
 
22005
profile_GLES2__technique__pass__states__blend_equation_separate__rgb__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__blend_equation_separate__rgb__AttributeData>(attributeDataPtr);
 
22006
 
 
22007
const ParserChar** attributeArray = attributes.attributes;
 
22008
if ( attributeArray )
 
22009
{
 
22010
    while (true)
 
22011
    {
 
22012
        const ParserChar * attribute = *attributeArray;
 
22013
        if ( !attribute )
 
22014
            break;
 
22015
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
22016
        attributeArray++;
 
22017
        if ( !attributeArray )
 
22018
            return false;
 
22019
        const ParserChar* attributeValue = *attributeArray;
 
22020
        attributeArray++;
 
22021
 
 
22022
 
 
22023
    switch ( hash )
 
22024
    {
 
22025
    case HASH_ATTRIBUTE_VALUE:
 
22026
    {
 
22027
bool failed;
 
22028
attributeData->value = Utils::toEnum<ENUM__gl_blend_equation_enum, StringHash, ENUM__gl_blend_equation_enum__COUNT>(attributeValue, failed, ENUM__gl_blend_equation_enumMap, Utils::calculateStringHash);
 
22029
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
22030
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
22031
        HASH_ELEMENT_RGB,
 
22032
        HASH_ATTRIBUTE_VALUE,
 
22033
        attributeValue))
 
22034
{
 
22035
    return false;
 
22036
}
 
22037
 
 
22038
    break;
 
22039
    }
 
22040
    case HASH_ATTRIBUTE_PARAM:
 
22041
    {
 
22042
 
 
22043
attributeData->param = attributeValue;
 
22044
 
 
22045
    break;
 
22046
    }
 
22047
    default:
 
22048
    {
 
22049
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_RGB, attribute, attributeValue))
 
22050
            {return false;}
 
22051
    }
 
22052
    }
 
22053
    }
 
22054
}
 
22055
 
 
22056
 
 
22057
    return true;
 
22058
}
 
22059
 
 
22060
//---------------------------------------------------------------------
 
22061
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__blend_equation_separate__rgb()
 
22062
{
 
22063
#ifdef GENERATEDSAXPARSER_VALIDATION
 
22064
    if ( mValidate )
 
22065
    {
 
22066
 
 
22067
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__blend_equation_separate__rgb();
 
22068
        if ( !validationResult ) return false;
 
22069
 
 
22070
    } // validation
 
22071
#endif
 
22072
 
 
22073
    return true;
 
22074
}
 
22075
 
 
22076
//---------------------------------------------------------------------
 
22077
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__blend_equation_separate__rgb( void* attributeData )
 
22078
{
 
22079
    profile_GLES2__technique__pass__states__blend_equation_separate__rgb__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__blend_equation_separate__rgb__AttributeData*>(attributeData);
 
22080
 
 
22081
    typedAttributeData->~profile_GLES2__technique__pass__states__blend_equation_separate__rgb__AttributeData();
 
22082
 
 
22083
    return true;
 
22084
}
 
22085
 
 
22086
//---------------------------------------------------------------------
 
22087
const profile_GLES2__technique__pass__states__blend_equation_separate__alpha__AttributeData profile_GLES2__technique__pass__states__blend_equation_separate__alpha__AttributeData::DEFAULT = {ENUM__gl_blend_equation_enum__FUNC_ADD, 0};
 
22088
 
 
22089
//---------------------------------------------------------------------
 
22090
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__blend_equation_separate__alpha( const ParserChar* text, size_t textLength )
 
22091
{
 
22092
    return true;
 
22093
}
 
22094
 
 
22095
//---------------------------------------------------------------------
 
22096
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__blend_equation_separate__alpha( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
22097
{
 
22098
#ifdef GENERATEDSAXPARSER_VALIDATION
 
22099
    if ( mValidate )
 
22100
    {
 
22101
 
 
22102
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__blend_equation_separate__alpha( attributes, attributeDataPtr, validationDataPtr );
 
22103
        if ( !validationResult ) return false;
 
22104
 
 
22105
    } // validation
 
22106
#endif
 
22107
 
 
22108
profile_GLES2__technique__pass__states__blend_equation_separate__alpha__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__blend_equation_separate__alpha__AttributeData>(attributeDataPtr);
 
22109
 
 
22110
const ParserChar** attributeArray = attributes.attributes;
 
22111
if ( attributeArray )
 
22112
{
 
22113
    while (true)
 
22114
    {
 
22115
        const ParserChar * attribute = *attributeArray;
 
22116
        if ( !attribute )
 
22117
            break;
 
22118
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
22119
        attributeArray++;
 
22120
        if ( !attributeArray )
 
22121
            return false;
 
22122
        const ParserChar* attributeValue = *attributeArray;
 
22123
        attributeArray++;
 
22124
 
 
22125
 
 
22126
    switch ( hash )
 
22127
    {
 
22128
    case HASH_ATTRIBUTE_VALUE:
 
22129
    {
 
22130
bool failed;
 
22131
attributeData->value = Utils::toEnum<ENUM__gl_blend_equation_enum, StringHash, ENUM__gl_blend_equation_enum__COUNT>(attributeValue, failed, ENUM__gl_blend_equation_enumMap, Utils::calculateStringHash);
 
22132
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
22133
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
22134
        HASH_ELEMENT_ALPHA,
 
22135
        HASH_ATTRIBUTE_VALUE,
 
22136
        attributeValue))
 
22137
{
 
22138
    return false;
 
22139
}
 
22140
 
 
22141
    break;
 
22142
    }
 
22143
    case HASH_ATTRIBUTE_PARAM:
 
22144
    {
 
22145
 
 
22146
attributeData->param = attributeValue;
 
22147
 
 
22148
    break;
 
22149
    }
 
22150
    default:
 
22151
    {
 
22152
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_ALPHA, attribute, attributeValue))
 
22153
            {return false;}
 
22154
    }
 
22155
    }
 
22156
    }
 
22157
}
 
22158
 
 
22159
 
 
22160
    return true;
 
22161
}
 
22162
 
 
22163
//---------------------------------------------------------------------
 
22164
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__blend_equation_separate__alpha()
 
22165
{
 
22166
#ifdef GENERATEDSAXPARSER_VALIDATION
 
22167
    if ( mValidate )
 
22168
    {
 
22169
 
 
22170
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__blend_equation_separate__alpha();
 
22171
        if ( !validationResult ) return false;
 
22172
 
 
22173
    } // validation
 
22174
#endif
 
22175
 
 
22176
    return true;
 
22177
}
 
22178
 
 
22179
//---------------------------------------------------------------------
 
22180
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__blend_equation_separate__alpha( void* attributeData )
 
22181
{
 
22182
    profile_GLES2__technique__pass__states__blend_equation_separate__alpha__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__blend_equation_separate__alpha__AttributeData*>(attributeData);
 
22183
 
 
22184
    typedAttributeData->~profile_GLES2__technique__pass__states__blend_equation_separate__alpha__AttributeData();
 
22185
 
 
22186
    return true;
 
22187
}
 
22188
 
 
22189
//---------------------------------------------------------------------
 
22190
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__blend_func( const ParserChar* text, size_t textLength )
 
22191
{
 
22192
    return true;
 
22193
}
 
22194
 
 
22195
//---------------------------------------------------------------------
 
22196
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__blend_func( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
22197
{
 
22198
#ifdef GENERATEDSAXPARSER_VALIDATION
 
22199
    if ( mValidate )
 
22200
    {
 
22201
 
 
22202
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__blend_func( attributes, attributeDataPtr, validationDataPtr );
 
22203
        if ( !validationResult ) return false;
 
22204
 
 
22205
    } // validation
 
22206
#endif
 
22207
 
 
22208
    return true;
 
22209
}
 
22210
 
 
22211
//---------------------------------------------------------------------
 
22212
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__blend_func()
 
22213
{
 
22214
#ifdef GENERATEDSAXPARSER_VALIDATION
 
22215
    if ( mValidate )
 
22216
    {
 
22217
 
 
22218
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__blend_func();
 
22219
        if ( !validationResult ) return false;
 
22220
 
 
22221
    } // validation
 
22222
#endif
 
22223
 
 
22224
    return true;
 
22225
}
 
22226
 
 
22227
//---------------------------------------------------------------------
 
22228
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__blend_func( void* attributeData )
 
22229
{
 
22230
    return true;
 
22231
}
 
22232
 
 
22233
//---------------------------------------------------------------------
 
22234
const profile_GLES2__technique__pass__states__blend_func__src__AttributeData profile_GLES2__technique__pass__states__blend_func__src__AttributeData::DEFAULT = {ENUM__gl_blend_enum__ONE, 0};
 
22235
 
 
22236
//---------------------------------------------------------------------
 
22237
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__blend_func__src( const ParserChar* text, size_t textLength )
 
22238
{
 
22239
    return true;
 
22240
}
 
22241
 
 
22242
//---------------------------------------------------------------------
 
22243
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__blend_func__src( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
22244
{
 
22245
#ifdef GENERATEDSAXPARSER_VALIDATION
 
22246
    if ( mValidate )
 
22247
    {
 
22248
 
 
22249
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__blend_func__src( attributes, attributeDataPtr, validationDataPtr );
 
22250
        if ( !validationResult ) return false;
 
22251
 
 
22252
    } // validation
 
22253
#endif
 
22254
 
 
22255
profile_GLES2__technique__pass__states__blend_func__src__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__blend_func__src__AttributeData>(attributeDataPtr);
 
22256
 
 
22257
const ParserChar** attributeArray = attributes.attributes;
 
22258
if ( attributeArray )
 
22259
{
 
22260
    while (true)
 
22261
    {
 
22262
        const ParserChar * attribute = *attributeArray;
 
22263
        if ( !attribute )
 
22264
            break;
 
22265
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
22266
        attributeArray++;
 
22267
        if ( !attributeArray )
 
22268
            return false;
 
22269
        const ParserChar* attributeValue = *attributeArray;
 
22270
        attributeArray++;
 
22271
 
 
22272
 
 
22273
    switch ( hash )
 
22274
    {
 
22275
    case HASH_ATTRIBUTE_VALUE:
 
22276
    {
 
22277
bool failed;
 
22278
attributeData->value = Utils::toEnum<ENUM__gl_blend_enum, StringHash, ENUM__gl_blend_enum__COUNT>(attributeValue, failed, ENUM__gl_blend_enumMap, Utils::calculateStringHash);
 
22279
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
22280
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
22281
        HASH_ELEMENT_SRC,
 
22282
        HASH_ATTRIBUTE_VALUE,
 
22283
        attributeValue))
 
22284
{
 
22285
    return false;
 
22286
}
 
22287
 
 
22288
    break;
 
22289
    }
 
22290
    case HASH_ATTRIBUTE_PARAM:
 
22291
    {
 
22292
 
 
22293
attributeData->param = attributeValue;
 
22294
 
 
22295
    break;
 
22296
    }
 
22297
    default:
 
22298
    {
 
22299
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SRC, attribute, attributeValue))
 
22300
            {return false;}
 
22301
    }
 
22302
    }
 
22303
    }
 
22304
}
 
22305
 
 
22306
 
 
22307
    return true;
 
22308
}
 
22309
 
 
22310
//---------------------------------------------------------------------
 
22311
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__blend_func__src()
 
22312
{
 
22313
#ifdef GENERATEDSAXPARSER_VALIDATION
 
22314
    if ( mValidate )
 
22315
    {
 
22316
 
 
22317
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__blend_func__src();
 
22318
        if ( !validationResult ) return false;
 
22319
 
 
22320
    } // validation
 
22321
#endif
 
22322
 
 
22323
    return true;
 
22324
}
 
22325
 
 
22326
//---------------------------------------------------------------------
 
22327
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__blend_func__src( void* attributeData )
 
22328
{
 
22329
    profile_GLES2__technique__pass__states__blend_func__src__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__blend_func__src__AttributeData*>(attributeData);
 
22330
 
 
22331
    typedAttributeData->~profile_GLES2__technique__pass__states__blend_func__src__AttributeData();
 
22332
 
 
22333
    return true;
 
22334
}
 
22335
 
 
22336
//---------------------------------------------------------------------
 
22337
const profile_GLES2__technique__pass__states__blend_func__dest__AttributeData profile_GLES2__technique__pass__states__blend_func__dest__AttributeData::DEFAULT = {ENUM__gl_blend_enum__ZERO, 0};
 
22338
 
 
22339
//---------------------------------------------------------------------
 
22340
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__blend_func__dest( const ParserChar* text, size_t textLength )
 
22341
{
 
22342
    return true;
 
22343
}
 
22344
 
 
22345
//---------------------------------------------------------------------
 
22346
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__blend_func__dest( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
22347
{
 
22348
#ifdef GENERATEDSAXPARSER_VALIDATION
 
22349
    if ( mValidate )
 
22350
    {
 
22351
 
 
22352
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__blend_func__dest( attributes, attributeDataPtr, validationDataPtr );
 
22353
        if ( !validationResult ) return false;
 
22354
 
 
22355
    } // validation
 
22356
#endif
 
22357
 
 
22358
profile_GLES2__technique__pass__states__blend_func__dest__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__blend_func__dest__AttributeData>(attributeDataPtr);
 
22359
 
 
22360
const ParserChar** attributeArray = attributes.attributes;
 
22361
if ( attributeArray )
 
22362
{
 
22363
    while (true)
 
22364
    {
 
22365
        const ParserChar * attribute = *attributeArray;
 
22366
        if ( !attribute )
 
22367
            break;
 
22368
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
22369
        attributeArray++;
 
22370
        if ( !attributeArray )
 
22371
            return false;
 
22372
        const ParserChar* attributeValue = *attributeArray;
 
22373
        attributeArray++;
 
22374
 
 
22375
 
 
22376
    switch ( hash )
 
22377
    {
 
22378
    case HASH_ATTRIBUTE_VALUE:
 
22379
    {
 
22380
bool failed;
 
22381
attributeData->value = Utils::toEnum<ENUM__gl_blend_enum, StringHash, ENUM__gl_blend_enum__COUNT>(attributeValue, failed, ENUM__gl_blend_enumMap, Utils::calculateStringHash);
 
22382
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
22383
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
22384
        HASH_ELEMENT_DEST,
 
22385
        HASH_ATTRIBUTE_VALUE,
 
22386
        attributeValue))
 
22387
{
 
22388
    return false;
 
22389
}
 
22390
 
 
22391
    break;
 
22392
    }
 
22393
    case HASH_ATTRIBUTE_PARAM:
 
22394
    {
 
22395
 
 
22396
attributeData->param = attributeValue;
 
22397
 
 
22398
    break;
 
22399
    }
 
22400
    default:
 
22401
    {
 
22402
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_DEST, attribute, attributeValue))
 
22403
            {return false;}
 
22404
    }
 
22405
    }
 
22406
    }
 
22407
}
 
22408
 
 
22409
 
 
22410
    return true;
 
22411
}
 
22412
 
 
22413
//---------------------------------------------------------------------
 
22414
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__blend_func__dest()
 
22415
{
 
22416
#ifdef GENERATEDSAXPARSER_VALIDATION
 
22417
    if ( mValidate )
 
22418
    {
 
22419
 
 
22420
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__blend_func__dest();
 
22421
        if ( !validationResult ) return false;
 
22422
 
 
22423
    } // validation
 
22424
#endif
 
22425
 
 
22426
    return true;
 
22427
}
 
22428
 
 
22429
//---------------------------------------------------------------------
 
22430
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__blend_func__dest( void* attributeData )
 
22431
{
 
22432
    profile_GLES2__technique__pass__states__blend_func__dest__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__blend_func__dest__AttributeData*>(attributeData);
 
22433
 
 
22434
    typedAttributeData->~profile_GLES2__technique__pass__states__blend_func__dest__AttributeData();
 
22435
 
 
22436
    return true;
 
22437
}
 
22438
 
 
22439
//---------------------------------------------------------------------
 
22440
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__blend_func_separate( const ParserChar* text, size_t textLength )
 
22441
{
 
22442
    return true;
 
22443
}
 
22444
 
 
22445
//---------------------------------------------------------------------
 
22446
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__blend_func_separate( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
22447
{
 
22448
#ifdef GENERATEDSAXPARSER_VALIDATION
 
22449
    if ( mValidate )
 
22450
    {
 
22451
 
 
22452
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__blend_func_separate( attributes, attributeDataPtr, validationDataPtr );
 
22453
        if ( !validationResult ) return false;
 
22454
 
 
22455
    } // validation
 
22456
#endif
 
22457
 
 
22458
    return true;
 
22459
}
 
22460
 
 
22461
//---------------------------------------------------------------------
 
22462
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__blend_func_separate()
 
22463
{
 
22464
#ifdef GENERATEDSAXPARSER_VALIDATION
 
22465
    if ( mValidate )
 
22466
    {
 
22467
 
 
22468
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__blend_func_separate();
 
22469
        if ( !validationResult ) return false;
 
22470
 
 
22471
    } // validation
 
22472
#endif
 
22473
 
 
22474
    return true;
 
22475
}
 
22476
 
 
22477
//---------------------------------------------------------------------
 
22478
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__blend_func_separate( void* attributeData )
 
22479
{
 
22480
    return true;
 
22481
}
 
22482
 
 
22483
//---------------------------------------------------------------------
 
22484
const profile_GLES2__technique__pass__states__blend_func_separate__src_rgb__AttributeData profile_GLES2__technique__pass__states__blend_func_separate__src_rgb__AttributeData::DEFAULT = {ENUM__gl_blend_enum__ONE, 0};
 
22485
 
 
22486
//---------------------------------------------------------------------
 
22487
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__blend_func_separate__src_rgb( const ParserChar* text, size_t textLength )
 
22488
{
 
22489
    return true;
 
22490
}
 
22491
 
 
22492
//---------------------------------------------------------------------
 
22493
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__blend_func_separate__src_rgb( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
22494
{
 
22495
#ifdef GENERATEDSAXPARSER_VALIDATION
 
22496
    if ( mValidate )
 
22497
    {
 
22498
 
 
22499
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__blend_func_separate__src_rgb( attributes, attributeDataPtr, validationDataPtr );
 
22500
        if ( !validationResult ) return false;
 
22501
 
 
22502
    } // validation
 
22503
#endif
 
22504
 
 
22505
profile_GLES2__technique__pass__states__blend_func_separate__src_rgb__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__blend_func_separate__src_rgb__AttributeData>(attributeDataPtr);
 
22506
 
 
22507
const ParserChar** attributeArray = attributes.attributes;
 
22508
if ( attributeArray )
 
22509
{
 
22510
    while (true)
 
22511
    {
 
22512
        const ParserChar * attribute = *attributeArray;
 
22513
        if ( !attribute )
 
22514
            break;
 
22515
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
22516
        attributeArray++;
 
22517
        if ( !attributeArray )
 
22518
            return false;
 
22519
        const ParserChar* attributeValue = *attributeArray;
 
22520
        attributeArray++;
 
22521
 
 
22522
 
 
22523
    switch ( hash )
 
22524
    {
 
22525
    case HASH_ATTRIBUTE_VALUE:
 
22526
    {
 
22527
bool failed;
 
22528
attributeData->value = Utils::toEnum<ENUM__gl_blend_enum, StringHash, ENUM__gl_blend_enum__COUNT>(attributeValue, failed, ENUM__gl_blend_enumMap, Utils::calculateStringHash);
 
22529
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
22530
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
22531
        HASH_ELEMENT_SRC_RGB,
 
22532
        HASH_ATTRIBUTE_VALUE,
 
22533
        attributeValue))
 
22534
{
 
22535
    return false;
 
22536
}
 
22537
 
 
22538
    break;
 
22539
    }
 
22540
    case HASH_ATTRIBUTE_PARAM:
 
22541
    {
 
22542
 
 
22543
attributeData->param = attributeValue;
 
22544
 
 
22545
    break;
 
22546
    }
 
22547
    default:
 
22548
    {
 
22549
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SRC_RGB, attribute, attributeValue))
 
22550
            {return false;}
 
22551
    }
 
22552
    }
 
22553
    }
 
22554
}
 
22555
 
 
22556
 
 
22557
    return true;
 
22558
}
 
22559
 
 
22560
//---------------------------------------------------------------------
 
22561
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__blend_func_separate__src_rgb()
 
22562
{
 
22563
#ifdef GENERATEDSAXPARSER_VALIDATION
 
22564
    if ( mValidate )
 
22565
    {
 
22566
 
 
22567
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__blend_func_separate__src_rgb();
 
22568
        if ( !validationResult ) return false;
 
22569
 
 
22570
    } // validation
 
22571
#endif
 
22572
 
 
22573
    return true;
 
22574
}
 
22575
 
 
22576
//---------------------------------------------------------------------
 
22577
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__blend_func_separate__src_rgb( void* attributeData )
 
22578
{
 
22579
    profile_GLES2__technique__pass__states__blend_func_separate__src_rgb__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__blend_func_separate__src_rgb__AttributeData*>(attributeData);
 
22580
 
 
22581
    typedAttributeData->~profile_GLES2__technique__pass__states__blend_func_separate__src_rgb__AttributeData();
 
22582
 
 
22583
    return true;
 
22584
}
 
22585
 
 
22586
//---------------------------------------------------------------------
 
22587
const profile_GLES2__technique__pass__states__blend_func_separate__dest_rgb__AttributeData profile_GLES2__technique__pass__states__blend_func_separate__dest_rgb__AttributeData::DEFAULT = {ENUM__gl_blend_enum__ZERO, 0};
 
22588
 
 
22589
//---------------------------------------------------------------------
 
22590
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__blend_func_separate__dest_rgb( const ParserChar* text, size_t textLength )
 
22591
{
 
22592
    return true;
 
22593
}
 
22594
 
 
22595
//---------------------------------------------------------------------
 
22596
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__blend_func_separate__dest_rgb( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
22597
{
 
22598
#ifdef GENERATEDSAXPARSER_VALIDATION
 
22599
    if ( mValidate )
 
22600
    {
 
22601
 
 
22602
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__blend_func_separate__dest_rgb( attributes, attributeDataPtr, validationDataPtr );
 
22603
        if ( !validationResult ) return false;
 
22604
 
 
22605
    } // validation
 
22606
#endif
 
22607
 
 
22608
profile_GLES2__technique__pass__states__blend_func_separate__dest_rgb__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__blend_func_separate__dest_rgb__AttributeData>(attributeDataPtr);
 
22609
 
 
22610
const ParserChar** attributeArray = attributes.attributes;
 
22611
if ( attributeArray )
 
22612
{
 
22613
    while (true)
 
22614
    {
 
22615
        const ParserChar * attribute = *attributeArray;
 
22616
        if ( !attribute )
 
22617
            break;
 
22618
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
22619
        attributeArray++;
 
22620
        if ( !attributeArray )
 
22621
            return false;
 
22622
        const ParserChar* attributeValue = *attributeArray;
 
22623
        attributeArray++;
 
22624
 
 
22625
 
 
22626
    switch ( hash )
 
22627
    {
 
22628
    case HASH_ATTRIBUTE_VALUE:
 
22629
    {
 
22630
bool failed;
 
22631
attributeData->value = Utils::toEnum<ENUM__gl_blend_enum, StringHash, ENUM__gl_blend_enum__COUNT>(attributeValue, failed, ENUM__gl_blend_enumMap, Utils::calculateStringHash);
 
22632
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
22633
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
22634
        HASH_ELEMENT_DEST_RGB,
 
22635
        HASH_ATTRIBUTE_VALUE,
 
22636
        attributeValue))
 
22637
{
 
22638
    return false;
 
22639
}
 
22640
 
 
22641
    break;
 
22642
    }
 
22643
    case HASH_ATTRIBUTE_PARAM:
 
22644
    {
 
22645
 
 
22646
attributeData->param = attributeValue;
 
22647
 
 
22648
    break;
 
22649
    }
 
22650
    default:
 
22651
    {
 
22652
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_DEST_RGB, attribute, attributeValue))
 
22653
            {return false;}
 
22654
    }
 
22655
    }
 
22656
    }
 
22657
}
 
22658
 
 
22659
 
 
22660
    return true;
 
22661
}
 
22662
 
 
22663
//---------------------------------------------------------------------
 
22664
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__blend_func_separate__dest_rgb()
 
22665
{
 
22666
#ifdef GENERATEDSAXPARSER_VALIDATION
 
22667
    if ( mValidate )
 
22668
    {
 
22669
 
 
22670
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__blend_func_separate__dest_rgb();
 
22671
        if ( !validationResult ) return false;
 
22672
 
 
22673
    } // validation
 
22674
#endif
 
22675
 
 
22676
    return true;
 
22677
}
 
22678
 
 
22679
//---------------------------------------------------------------------
 
22680
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__blend_func_separate__dest_rgb( void* attributeData )
 
22681
{
 
22682
    profile_GLES2__technique__pass__states__blend_func_separate__dest_rgb__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__blend_func_separate__dest_rgb__AttributeData*>(attributeData);
 
22683
 
 
22684
    typedAttributeData->~profile_GLES2__technique__pass__states__blend_func_separate__dest_rgb__AttributeData();
 
22685
 
 
22686
    return true;
 
22687
}
 
22688
 
 
22689
//---------------------------------------------------------------------
 
22690
const profile_GLES2__technique__pass__states__blend_func_separate__src_alpha__AttributeData profile_GLES2__technique__pass__states__blend_func_separate__src_alpha__AttributeData::DEFAULT = {ENUM__gl_blend_enum__ONE, 0};
 
22691
 
 
22692
//---------------------------------------------------------------------
 
22693
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__blend_func_separate__src_alpha( const ParserChar* text, size_t textLength )
 
22694
{
 
22695
    return true;
 
22696
}
 
22697
 
 
22698
//---------------------------------------------------------------------
 
22699
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__blend_func_separate__src_alpha( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
22700
{
 
22701
#ifdef GENERATEDSAXPARSER_VALIDATION
 
22702
    if ( mValidate )
 
22703
    {
 
22704
 
 
22705
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__blend_func_separate__src_alpha( attributes, attributeDataPtr, validationDataPtr );
 
22706
        if ( !validationResult ) return false;
 
22707
 
 
22708
    } // validation
 
22709
#endif
 
22710
 
 
22711
profile_GLES2__technique__pass__states__blend_func_separate__src_alpha__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__blend_func_separate__src_alpha__AttributeData>(attributeDataPtr);
 
22712
 
 
22713
const ParserChar** attributeArray = attributes.attributes;
 
22714
if ( attributeArray )
 
22715
{
 
22716
    while (true)
 
22717
    {
 
22718
        const ParserChar * attribute = *attributeArray;
 
22719
        if ( !attribute )
 
22720
            break;
 
22721
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
22722
        attributeArray++;
 
22723
        if ( !attributeArray )
 
22724
            return false;
 
22725
        const ParserChar* attributeValue = *attributeArray;
 
22726
        attributeArray++;
 
22727
 
 
22728
 
 
22729
    switch ( hash )
 
22730
    {
 
22731
    case HASH_ATTRIBUTE_VALUE:
 
22732
    {
 
22733
bool failed;
 
22734
attributeData->value = Utils::toEnum<ENUM__gl_blend_enum, StringHash, ENUM__gl_blend_enum__COUNT>(attributeValue, failed, ENUM__gl_blend_enumMap, Utils::calculateStringHash);
 
22735
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
22736
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
22737
        HASH_ELEMENT_SRC_ALPHA,
 
22738
        HASH_ATTRIBUTE_VALUE,
 
22739
        attributeValue))
 
22740
{
 
22741
    return false;
 
22742
}
 
22743
 
 
22744
    break;
 
22745
    }
 
22746
    case HASH_ATTRIBUTE_PARAM:
 
22747
    {
 
22748
 
 
22749
attributeData->param = attributeValue;
 
22750
 
 
22751
    break;
 
22752
    }
 
22753
    default:
 
22754
    {
 
22755
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SRC_ALPHA, attribute, attributeValue))
 
22756
            {return false;}
 
22757
    }
 
22758
    }
 
22759
    }
 
22760
}
 
22761
 
 
22762
 
 
22763
    return true;
 
22764
}
 
22765
 
 
22766
//---------------------------------------------------------------------
 
22767
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__blend_func_separate__src_alpha()
 
22768
{
 
22769
#ifdef GENERATEDSAXPARSER_VALIDATION
 
22770
    if ( mValidate )
 
22771
    {
 
22772
 
 
22773
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__blend_func_separate__src_alpha();
 
22774
        if ( !validationResult ) return false;
 
22775
 
 
22776
    } // validation
 
22777
#endif
 
22778
 
 
22779
    return true;
 
22780
}
 
22781
 
 
22782
//---------------------------------------------------------------------
 
22783
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__blend_func_separate__src_alpha( void* attributeData )
 
22784
{
 
22785
    profile_GLES2__technique__pass__states__blend_func_separate__src_alpha__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__blend_func_separate__src_alpha__AttributeData*>(attributeData);
 
22786
 
 
22787
    typedAttributeData->~profile_GLES2__technique__pass__states__blend_func_separate__src_alpha__AttributeData();
 
22788
 
 
22789
    return true;
 
22790
}
 
22791
 
 
22792
//---------------------------------------------------------------------
 
22793
const profile_GLES2__technique__pass__states__blend_func_separate__dest_alpha__AttributeData profile_GLES2__technique__pass__states__blend_func_separate__dest_alpha__AttributeData::DEFAULT = {ENUM__gl_blend_enum__ZERO, 0};
 
22794
 
 
22795
//---------------------------------------------------------------------
 
22796
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__blend_func_separate__dest_alpha( const ParserChar* text, size_t textLength )
 
22797
{
 
22798
    return true;
 
22799
}
 
22800
 
 
22801
//---------------------------------------------------------------------
 
22802
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__blend_func_separate__dest_alpha( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
22803
{
 
22804
#ifdef GENERATEDSAXPARSER_VALIDATION
 
22805
    if ( mValidate )
 
22806
    {
 
22807
 
 
22808
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__blend_func_separate__dest_alpha( attributes, attributeDataPtr, validationDataPtr );
 
22809
        if ( !validationResult ) return false;
 
22810
 
 
22811
    } // validation
 
22812
#endif
 
22813
 
 
22814
profile_GLES2__technique__pass__states__blend_func_separate__dest_alpha__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__blend_func_separate__dest_alpha__AttributeData>(attributeDataPtr);
 
22815
 
 
22816
const ParserChar** attributeArray = attributes.attributes;
 
22817
if ( attributeArray )
 
22818
{
 
22819
    while (true)
 
22820
    {
 
22821
        const ParserChar * attribute = *attributeArray;
 
22822
        if ( !attribute )
 
22823
            break;
 
22824
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
22825
        attributeArray++;
 
22826
        if ( !attributeArray )
 
22827
            return false;
 
22828
        const ParserChar* attributeValue = *attributeArray;
 
22829
        attributeArray++;
 
22830
 
 
22831
 
 
22832
    switch ( hash )
 
22833
    {
 
22834
    case HASH_ATTRIBUTE_VALUE:
 
22835
    {
 
22836
bool failed;
 
22837
attributeData->value = Utils::toEnum<ENUM__gl_blend_enum, StringHash, ENUM__gl_blend_enum__COUNT>(attributeValue, failed, ENUM__gl_blend_enumMap, Utils::calculateStringHash);
 
22838
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
22839
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
22840
        HASH_ELEMENT_DEST_ALPHA,
 
22841
        HASH_ATTRIBUTE_VALUE,
 
22842
        attributeValue))
 
22843
{
 
22844
    return false;
 
22845
}
 
22846
 
 
22847
    break;
 
22848
    }
 
22849
    case HASH_ATTRIBUTE_PARAM:
 
22850
    {
 
22851
 
 
22852
attributeData->param = attributeValue;
 
22853
 
 
22854
    break;
 
22855
    }
 
22856
    default:
 
22857
    {
 
22858
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_DEST_ALPHA, attribute, attributeValue))
 
22859
            {return false;}
 
22860
    }
 
22861
    }
 
22862
    }
 
22863
}
 
22864
 
 
22865
 
 
22866
    return true;
 
22867
}
 
22868
 
 
22869
//---------------------------------------------------------------------
 
22870
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__blend_func_separate__dest_alpha()
 
22871
{
 
22872
#ifdef GENERATEDSAXPARSER_VALIDATION
 
22873
    if ( mValidate )
 
22874
    {
 
22875
 
 
22876
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__blend_func_separate__dest_alpha();
 
22877
        if ( !validationResult ) return false;
 
22878
 
 
22879
    } // validation
 
22880
#endif
 
22881
 
 
22882
    return true;
 
22883
}
 
22884
 
 
22885
//---------------------------------------------------------------------
 
22886
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__blend_func_separate__dest_alpha( void* attributeData )
 
22887
{
 
22888
    profile_GLES2__technique__pass__states__blend_func_separate__dest_alpha__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__blend_func_separate__dest_alpha__AttributeData*>(attributeData);
 
22889
 
 
22890
    typedAttributeData->~profile_GLES2__technique__pass__states__blend_func_separate__dest_alpha__AttributeData();
 
22891
 
 
22892
    return true;
 
22893
}
 
22894
 
 
22895
//---------------------------------------------------------------------
 
22896
const profile_GLES2__technique__pass__states__color_mask__AttributeData profile_GLES2__technique__pass__states__color_mask__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<bool>(), 0};
 
22897
 
 
22898
//---------------------------------------------------------------------
 
22899
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__color_mask( const ParserChar* text, size_t textLength )
 
22900
{
 
22901
    return true;
 
22902
}
 
22903
 
 
22904
//---------------------------------------------------------------------
 
22905
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__color_mask( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
22906
{
 
22907
#ifdef GENERATEDSAXPARSER_VALIDATION
 
22908
    if ( mValidate )
 
22909
    {
 
22910
 
 
22911
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__color_mask( attributes, attributeDataPtr, validationDataPtr );
 
22912
        if ( !validationResult ) return false;
 
22913
 
 
22914
    } // validation
 
22915
#endif
 
22916
 
 
22917
profile_GLES2__technique__pass__states__color_mask__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__color_mask__AttributeData>(attributeDataPtr);
 
22918
 
 
22919
const ParserChar** attributeArray = attributes.attributes;
 
22920
if ( attributeArray )
 
22921
{
 
22922
    while (true)
 
22923
    {
 
22924
        const ParserChar * attribute = *attributeArray;
 
22925
        if ( !attribute )
 
22926
            break;
 
22927
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
22928
        attributeArray++;
 
22929
        if ( !attributeArray )
 
22930
            return false;
 
22931
        const ParserChar* attributeValue = *attributeArray;
 
22932
        attributeArray++;
 
22933
 
 
22934
 
 
22935
    switch ( hash )
 
22936
    {
 
22937
    case HASH_ATTRIBUTE_VALUE:
 
22938
    {
 
22939
bool failed;
 
22940
#ifdef GENERATEDSAXPARSER_VALIDATION
 
22941
    if ( mValidate )
 
22942
    {
 
22943
failed = !characterData2BoolList(attributeValue, attributeData->value, 0, HASH_ELEMENT_COLOR_MASK, HASH_ATTRIBUTE_VALUE);
 
22944
    }
 
22945
    else
 
22946
    {
 
22947
failed = !characterData2BoolList(attributeValue, attributeData->value);
 
22948
    }
 
22949
#else
 
22950
    {
 
22951
failed = !characterData2BoolList(attributeValue, attributeData->value);
 
22952
    } // validation
 
22953
#endif
 
22954
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
22955
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
22956
        HASH_ELEMENT_COLOR_MASK,
 
22957
        HASH_ATTRIBUTE_VALUE,
 
22958
        attributeValue))
 
22959
{
 
22960
    return false;
 
22961
}
 
22962
#ifdef GENERATEDSAXPARSER_VALIDATION
 
22963
    if ( mValidate )
 
22964
    {
 
22965
    ParserError::ErrorType simpleTypeValidationResult = validate__bool4_type(attributeData->value.data, attributeData->value.size);
 
22966
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
22967
    {
 
22968
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
22969
            simpleTypeValidationResult,
 
22970
            HASH_ELEMENT_COLOR_MASK,
 
22971
            HASH_ATTRIBUTE_VALUE,
 
22972
            attributeValue) )
 
22973
        {
 
22974
            return false;
 
22975
        }
 
22976
    }
 
22977
    } // validation
 
22978
#endif
 
22979
 
 
22980
if ( !failed )
 
22981
    attributeData->present_attributes |= profile_GLES2__technique__pass__states__color_mask__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
22982
 
 
22983
    break;
 
22984
    }
 
22985
    case HASH_ATTRIBUTE_PARAM:
 
22986
    {
 
22987
 
 
22988
attributeData->param = attributeValue;
 
22989
 
 
22990
    break;
 
22991
    }
 
22992
    default:
 
22993
    {
 
22994
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_COLOR_MASK, attribute, attributeValue))
 
22995
            {return false;}
 
22996
    }
 
22997
    }
 
22998
    }
 
22999
}
 
23000
if ((attributeData->present_attributes & profile_GLES2__technique__pass__states__color_mask__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
23001
{
 
23002
    bool failed;
 
23003
    failed = !characterData2BoolList("true true true true", attributeData->value);
 
23004
    if ( !failed )
 
23005
    attributeData->present_attributes |= profile_GLES2__technique__pass__states__color_mask__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
23006
}
 
23007
 
 
23008
 
 
23009
    return true;
 
23010
}
 
23011
 
 
23012
//---------------------------------------------------------------------
 
23013
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__color_mask()
 
23014
{
 
23015
#ifdef GENERATEDSAXPARSER_VALIDATION
 
23016
    if ( mValidate )
 
23017
    {
 
23018
 
 
23019
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__color_mask();
 
23020
        if ( !validationResult ) return false;
 
23021
 
 
23022
    } // validation
 
23023
#endif
 
23024
 
 
23025
    return true;
 
23026
}
 
23027
 
 
23028
//---------------------------------------------------------------------
 
23029
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__color_mask( void* attributeData )
 
23030
{
 
23031
    profile_GLES2__technique__pass__states__color_mask__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__color_mask__AttributeData*>(attributeData);
 
23032
    if (typedAttributeData->value.data)
 
23033
    {
 
23034
        mStackMemoryManager.deleteObject();
 
23035
    }
 
23036
 
 
23037
 
 
23038
    typedAttributeData->~profile_GLES2__technique__pass__states__color_mask__AttributeData();
 
23039
 
 
23040
    return true;
 
23041
}
 
23042
 
 
23043
//---------------------------------------------------------------------
 
23044
const profile_GLES2__technique__pass__states__cull_face__AttributeData profile_GLES2__technique__pass__states__cull_face__AttributeData::DEFAULT = {ENUM__gl_face_enum__BACK, 0};
 
23045
 
 
23046
//---------------------------------------------------------------------
 
23047
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__cull_face( const ParserChar* text, size_t textLength )
 
23048
{
 
23049
    return true;
 
23050
}
 
23051
 
 
23052
//---------------------------------------------------------------------
 
23053
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__cull_face( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
23054
{
 
23055
#ifdef GENERATEDSAXPARSER_VALIDATION
 
23056
    if ( mValidate )
 
23057
    {
 
23058
 
 
23059
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__cull_face( attributes, attributeDataPtr, validationDataPtr );
 
23060
        if ( !validationResult ) return false;
 
23061
 
 
23062
    } // validation
 
23063
#endif
 
23064
 
 
23065
profile_GLES2__technique__pass__states__cull_face__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__cull_face__AttributeData>(attributeDataPtr);
 
23066
 
 
23067
const ParserChar** attributeArray = attributes.attributes;
 
23068
if ( attributeArray )
 
23069
{
 
23070
    while (true)
 
23071
    {
 
23072
        const ParserChar * attribute = *attributeArray;
 
23073
        if ( !attribute )
 
23074
            break;
 
23075
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
23076
        attributeArray++;
 
23077
        if ( !attributeArray )
 
23078
            return false;
 
23079
        const ParserChar* attributeValue = *attributeArray;
 
23080
        attributeArray++;
 
23081
 
 
23082
 
 
23083
    switch ( hash )
 
23084
    {
 
23085
    case HASH_ATTRIBUTE_VALUE:
 
23086
    {
 
23087
bool failed;
 
23088
attributeData->value = Utils::toEnum<ENUM__gl_face_enum, StringHash, ENUM__gl_face_enum__COUNT>(attributeValue, failed, ENUM__gl_face_enumMap, Utils::calculateStringHash);
 
23089
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
23090
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
23091
        HASH_ELEMENT_CULL_FACE,
 
23092
        HASH_ATTRIBUTE_VALUE,
 
23093
        attributeValue))
 
23094
{
 
23095
    return false;
 
23096
}
 
23097
 
 
23098
    break;
 
23099
    }
 
23100
    case HASH_ATTRIBUTE_PARAM:
 
23101
    {
 
23102
 
 
23103
attributeData->param = attributeValue;
 
23104
 
 
23105
    break;
 
23106
    }
 
23107
    default:
 
23108
    {
 
23109
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_CULL_FACE, attribute, attributeValue))
 
23110
            {return false;}
 
23111
    }
 
23112
    }
 
23113
    }
 
23114
}
 
23115
 
 
23116
 
 
23117
    return true;
 
23118
}
 
23119
 
 
23120
//---------------------------------------------------------------------
 
23121
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__cull_face()
 
23122
{
 
23123
#ifdef GENERATEDSAXPARSER_VALIDATION
 
23124
    if ( mValidate )
 
23125
    {
 
23126
 
 
23127
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__cull_face();
 
23128
        if ( !validationResult ) return false;
 
23129
 
 
23130
    } // validation
 
23131
#endif
 
23132
 
 
23133
    return true;
 
23134
}
 
23135
 
 
23136
//---------------------------------------------------------------------
 
23137
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__cull_face( void* attributeData )
 
23138
{
 
23139
    profile_GLES2__technique__pass__states__cull_face__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__cull_face__AttributeData*>(attributeData);
 
23140
 
 
23141
    typedAttributeData->~profile_GLES2__technique__pass__states__cull_face__AttributeData();
 
23142
 
 
23143
    return true;
 
23144
}
 
23145
 
 
23146
//---------------------------------------------------------------------
 
23147
const profile_GLES2__technique__pass__states__depth_func__AttributeData profile_GLES2__technique__pass__states__depth_func__AttributeData::DEFAULT = {ENUM__gl_func_enum__ALWAYS, 0};
 
23148
 
 
23149
//---------------------------------------------------------------------
 
23150
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__depth_func( const ParserChar* text, size_t textLength )
 
23151
{
 
23152
    return true;
 
23153
}
 
23154
 
 
23155
//---------------------------------------------------------------------
 
23156
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__depth_func( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
23157
{
 
23158
#ifdef GENERATEDSAXPARSER_VALIDATION
 
23159
    if ( mValidate )
 
23160
    {
 
23161
 
 
23162
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__depth_func( attributes, attributeDataPtr, validationDataPtr );
 
23163
        if ( !validationResult ) return false;
 
23164
 
 
23165
    } // validation
 
23166
#endif
 
23167
 
 
23168
profile_GLES2__technique__pass__states__depth_func__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__depth_func__AttributeData>(attributeDataPtr);
 
23169
 
 
23170
const ParserChar** attributeArray = attributes.attributes;
 
23171
if ( attributeArray )
 
23172
{
 
23173
    while (true)
 
23174
    {
 
23175
        const ParserChar * attribute = *attributeArray;
 
23176
        if ( !attribute )
 
23177
            break;
 
23178
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
23179
        attributeArray++;
 
23180
        if ( !attributeArray )
 
23181
            return false;
 
23182
        const ParserChar* attributeValue = *attributeArray;
 
23183
        attributeArray++;
 
23184
 
 
23185
 
 
23186
    switch ( hash )
 
23187
    {
 
23188
    case HASH_ATTRIBUTE_VALUE:
 
23189
    {
 
23190
bool failed;
 
23191
attributeData->value = Utils::toEnum<ENUM__gl_func_enum, StringHash, ENUM__gl_func_enum__COUNT>(attributeValue, failed, ENUM__gl_func_enumMap, Utils::calculateStringHash);
 
23192
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
23193
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
23194
        HASH_ELEMENT_DEPTH_FUNC,
 
23195
        HASH_ATTRIBUTE_VALUE,
 
23196
        attributeValue))
 
23197
{
 
23198
    return false;
 
23199
}
 
23200
 
 
23201
    break;
 
23202
    }
 
23203
    case HASH_ATTRIBUTE_PARAM:
 
23204
    {
 
23205
 
 
23206
attributeData->param = attributeValue;
 
23207
 
 
23208
    break;
 
23209
    }
 
23210
    default:
 
23211
    {
 
23212
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_DEPTH_FUNC, attribute, attributeValue))
 
23213
            {return false;}
 
23214
    }
 
23215
    }
 
23216
    }
 
23217
}
 
23218
 
 
23219
 
 
23220
    return true;
 
23221
}
 
23222
 
 
23223
//---------------------------------------------------------------------
 
23224
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__depth_func()
 
23225
{
 
23226
#ifdef GENERATEDSAXPARSER_VALIDATION
 
23227
    if ( mValidate )
 
23228
    {
 
23229
 
 
23230
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__depth_func();
 
23231
        if ( !validationResult ) return false;
 
23232
 
 
23233
    } // validation
 
23234
#endif
 
23235
 
 
23236
    return true;
 
23237
}
 
23238
 
 
23239
//---------------------------------------------------------------------
 
23240
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__depth_func( void* attributeData )
 
23241
{
 
23242
    profile_GLES2__technique__pass__states__depth_func__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__depth_func__AttributeData*>(attributeData);
 
23243
 
 
23244
    typedAttributeData->~profile_GLES2__technique__pass__states__depth_func__AttributeData();
 
23245
 
 
23246
    return true;
 
23247
}
 
23248
 
 
23249
//---------------------------------------------------------------------
 
23250
const profile_GLES2__technique__pass__states__depth_mask__AttributeData profile_GLES2__technique__pass__states__depth_mask__AttributeData::DEFAULT = {true, 0};
 
23251
 
 
23252
//---------------------------------------------------------------------
 
23253
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__depth_mask( const ParserChar* text, size_t textLength )
 
23254
{
 
23255
    return true;
 
23256
}
 
23257
 
 
23258
//---------------------------------------------------------------------
 
23259
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__depth_mask( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
23260
{
 
23261
#ifdef GENERATEDSAXPARSER_VALIDATION
 
23262
    if ( mValidate )
 
23263
    {
 
23264
 
 
23265
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__depth_mask( attributes, attributeDataPtr, validationDataPtr );
 
23266
        if ( !validationResult ) return false;
 
23267
 
 
23268
    } // validation
 
23269
#endif
 
23270
 
 
23271
profile_GLES2__technique__pass__states__depth_mask__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__depth_mask__AttributeData>(attributeDataPtr);
 
23272
 
 
23273
const ParserChar** attributeArray = attributes.attributes;
 
23274
if ( attributeArray )
 
23275
{
 
23276
    while (true)
 
23277
    {
 
23278
        const ParserChar * attribute = *attributeArray;
 
23279
        if ( !attribute )
 
23280
            break;
 
23281
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
23282
        attributeArray++;
 
23283
        if ( !attributeArray )
 
23284
            return false;
 
23285
        const ParserChar* attributeValue = *attributeArray;
 
23286
        attributeArray++;
 
23287
 
 
23288
 
 
23289
    switch ( hash )
 
23290
    {
 
23291
    case HASH_ATTRIBUTE_VALUE:
 
23292
    {
 
23293
bool failed;
 
23294
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
23295
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
23296
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
23297
        HASH_ELEMENT_DEPTH_MASK,
 
23298
        HASH_ATTRIBUTE_VALUE,
 
23299
        attributeValue))
 
23300
{
 
23301
    return false;
 
23302
}
 
23303
 
 
23304
    break;
 
23305
    }
 
23306
    case HASH_ATTRIBUTE_PARAM:
 
23307
    {
 
23308
 
 
23309
attributeData->param = attributeValue;
 
23310
 
 
23311
    break;
 
23312
    }
 
23313
    default:
 
23314
    {
 
23315
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_DEPTH_MASK, attribute, attributeValue))
 
23316
            {return false;}
 
23317
    }
 
23318
    }
 
23319
    }
 
23320
}
 
23321
 
 
23322
 
 
23323
    return true;
 
23324
}
 
23325
 
 
23326
//---------------------------------------------------------------------
 
23327
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__depth_mask()
 
23328
{
 
23329
#ifdef GENERATEDSAXPARSER_VALIDATION
 
23330
    if ( mValidate )
 
23331
    {
 
23332
 
 
23333
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__depth_mask();
 
23334
        if ( !validationResult ) return false;
 
23335
 
 
23336
    } // validation
 
23337
#endif
 
23338
 
 
23339
    return true;
 
23340
}
 
23341
 
 
23342
//---------------------------------------------------------------------
 
23343
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__depth_mask( void* attributeData )
 
23344
{
 
23345
    profile_GLES2__technique__pass__states__depth_mask__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__depth_mask__AttributeData*>(attributeData);
 
23346
 
 
23347
    typedAttributeData->~profile_GLES2__technique__pass__states__depth_mask__AttributeData();
 
23348
 
 
23349
    return true;
 
23350
}
 
23351
 
 
23352
//---------------------------------------------------------------------
 
23353
const profile_GLES2__technique__pass__states__depth_range__AttributeData profile_GLES2__technique__pass__states__depth_range__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<float>(), 0};
 
23354
 
 
23355
//---------------------------------------------------------------------
 
23356
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__depth_range( const ParserChar* text, size_t textLength )
 
23357
{
 
23358
    return true;
 
23359
}
 
23360
 
 
23361
//---------------------------------------------------------------------
 
23362
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__depth_range( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
23363
{
 
23364
#ifdef GENERATEDSAXPARSER_VALIDATION
 
23365
    if ( mValidate )
 
23366
    {
 
23367
 
 
23368
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__depth_range( attributes, attributeDataPtr, validationDataPtr );
 
23369
        if ( !validationResult ) return false;
 
23370
 
 
23371
    } // validation
 
23372
#endif
 
23373
 
 
23374
profile_GLES2__technique__pass__states__depth_range__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__depth_range__AttributeData>(attributeDataPtr);
 
23375
 
 
23376
const ParserChar** attributeArray = attributes.attributes;
 
23377
if ( attributeArray )
 
23378
{
 
23379
    while (true)
 
23380
    {
 
23381
        const ParserChar * attribute = *attributeArray;
 
23382
        if ( !attribute )
 
23383
            break;
 
23384
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
23385
        attributeArray++;
 
23386
        if ( !attributeArray )
 
23387
            return false;
 
23388
        const ParserChar* attributeValue = *attributeArray;
 
23389
        attributeArray++;
 
23390
 
 
23391
 
 
23392
    switch ( hash )
 
23393
    {
 
23394
    case HASH_ATTRIBUTE_VALUE:
 
23395
    {
 
23396
bool failed;
 
23397
#ifdef GENERATEDSAXPARSER_VALIDATION
 
23398
    if ( mValidate )
 
23399
    {
 
23400
failed = !characterData2FloatList(attributeValue, attributeData->value, 0, HASH_ELEMENT_DEPTH_RANGE, HASH_ATTRIBUTE_VALUE);
 
23401
    }
 
23402
    else
 
23403
    {
 
23404
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
23405
    }
 
23406
#else
 
23407
    {
 
23408
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
23409
    } // validation
 
23410
#endif
 
23411
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
23412
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
23413
        HASH_ELEMENT_DEPTH_RANGE,
 
23414
        HASH_ATTRIBUTE_VALUE,
 
23415
        attributeValue))
 
23416
{
 
23417
    return false;
 
23418
}
 
23419
#ifdef GENERATEDSAXPARSER_VALIDATION
 
23420
    if ( mValidate )
 
23421
    {
 
23422
    ParserError::ErrorType simpleTypeValidationResult = validate__float2_type(attributeData->value.data, attributeData->value.size);
 
23423
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
23424
    {
 
23425
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
23426
            simpleTypeValidationResult,
 
23427
            HASH_ELEMENT_DEPTH_RANGE,
 
23428
            HASH_ATTRIBUTE_VALUE,
 
23429
            attributeValue) )
 
23430
        {
 
23431
            return false;
 
23432
        }
 
23433
    }
 
23434
    } // validation
 
23435
#endif
 
23436
 
 
23437
if ( !failed )
 
23438
    attributeData->present_attributes |= profile_GLES2__technique__pass__states__depth_range__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
23439
 
 
23440
    break;
 
23441
    }
 
23442
    case HASH_ATTRIBUTE_PARAM:
 
23443
    {
 
23444
 
 
23445
attributeData->param = attributeValue;
 
23446
 
 
23447
    break;
 
23448
    }
 
23449
    default:
 
23450
    {
 
23451
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_DEPTH_RANGE, attribute, attributeValue))
 
23452
            {return false;}
 
23453
    }
 
23454
    }
 
23455
    }
 
23456
}
 
23457
if ((attributeData->present_attributes & profile_GLES2__technique__pass__states__depth_range__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
23458
{
 
23459
    bool failed;
 
23460
    failed = !characterData2FloatList("0.0E1 1.0E0", attributeData->value);
 
23461
    if ( !failed )
 
23462
    attributeData->present_attributes |= profile_GLES2__technique__pass__states__depth_range__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
23463
}
 
23464
 
 
23465
 
 
23466
    return true;
 
23467
}
 
23468
 
 
23469
//---------------------------------------------------------------------
 
23470
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__depth_range()
 
23471
{
 
23472
#ifdef GENERATEDSAXPARSER_VALIDATION
 
23473
    if ( mValidate )
 
23474
    {
 
23475
 
 
23476
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__depth_range();
 
23477
        if ( !validationResult ) return false;
 
23478
 
 
23479
    } // validation
 
23480
#endif
 
23481
 
 
23482
    return true;
 
23483
}
 
23484
 
 
23485
//---------------------------------------------------------------------
 
23486
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__depth_range( void* attributeData )
 
23487
{
 
23488
    profile_GLES2__technique__pass__states__depth_range__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__depth_range__AttributeData*>(attributeData);
 
23489
    if (typedAttributeData->value.data)
 
23490
    {
 
23491
        mStackMemoryManager.deleteObject();
 
23492
    }
 
23493
 
 
23494
 
 
23495
    typedAttributeData->~profile_GLES2__technique__pass__states__depth_range__AttributeData();
 
23496
 
 
23497
    return true;
 
23498
}
 
23499
 
 
23500
//---------------------------------------------------------------------
 
23501
const profile_GLES2__technique__pass__states__front_face__AttributeData profile_GLES2__technique__pass__states__front_face__AttributeData::DEFAULT = {ENUM__gl_front_face_enum__CCW, 0};
 
23502
 
 
23503
//---------------------------------------------------------------------
 
23504
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__front_face( const ParserChar* text, size_t textLength )
 
23505
{
 
23506
    return true;
 
23507
}
 
23508
 
 
23509
//---------------------------------------------------------------------
 
23510
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__front_face( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
23511
{
 
23512
#ifdef GENERATEDSAXPARSER_VALIDATION
 
23513
    if ( mValidate )
 
23514
    {
 
23515
 
 
23516
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__front_face( attributes, attributeDataPtr, validationDataPtr );
 
23517
        if ( !validationResult ) return false;
 
23518
 
 
23519
    } // validation
 
23520
#endif
 
23521
 
 
23522
profile_GLES2__technique__pass__states__front_face__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__front_face__AttributeData>(attributeDataPtr);
 
23523
 
 
23524
const ParserChar** attributeArray = attributes.attributes;
 
23525
if ( attributeArray )
 
23526
{
 
23527
    while (true)
 
23528
    {
 
23529
        const ParserChar * attribute = *attributeArray;
 
23530
        if ( !attribute )
 
23531
            break;
 
23532
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
23533
        attributeArray++;
 
23534
        if ( !attributeArray )
 
23535
            return false;
 
23536
        const ParserChar* attributeValue = *attributeArray;
 
23537
        attributeArray++;
 
23538
 
 
23539
 
 
23540
    switch ( hash )
 
23541
    {
 
23542
    case HASH_ATTRIBUTE_VALUE:
 
23543
    {
 
23544
bool failed;
 
23545
attributeData->value = Utils::toEnum<ENUM__gl_front_face_enum, StringHash, ENUM__gl_front_face_enum__COUNT>(attributeValue, failed, ENUM__gl_front_face_enumMap, Utils::calculateStringHash);
 
23546
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
23547
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
23548
        HASH_ELEMENT_FRONT_FACE,
 
23549
        HASH_ATTRIBUTE_VALUE,
 
23550
        attributeValue))
 
23551
{
 
23552
    return false;
 
23553
}
 
23554
 
 
23555
    break;
 
23556
    }
 
23557
    case HASH_ATTRIBUTE_PARAM:
 
23558
    {
 
23559
 
 
23560
attributeData->param = attributeValue;
 
23561
 
 
23562
    break;
 
23563
    }
 
23564
    default:
 
23565
    {
 
23566
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FRONT_FACE, attribute, attributeValue))
 
23567
            {return false;}
 
23568
    }
 
23569
    }
 
23570
    }
 
23571
}
 
23572
 
 
23573
 
 
23574
    return true;
 
23575
}
 
23576
 
 
23577
//---------------------------------------------------------------------
 
23578
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__front_face()
 
23579
{
 
23580
#ifdef GENERATEDSAXPARSER_VALIDATION
 
23581
    if ( mValidate )
 
23582
    {
 
23583
 
 
23584
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__front_face();
 
23585
        if ( !validationResult ) return false;
 
23586
 
 
23587
    } // validation
 
23588
#endif
 
23589
 
 
23590
    return true;
 
23591
}
 
23592
 
 
23593
//---------------------------------------------------------------------
 
23594
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__front_face( void* attributeData )
 
23595
{
 
23596
    profile_GLES2__technique__pass__states__front_face__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__front_face__AttributeData*>(attributeData);
 
23597
 
 
23598
    typedAttributeData->~profile_GLES2__technique__pass__states__front_face__AttributeData();
 
23599
 
 
23600
    return true;
 
23601
}
 
23602
 
 
23603
//---------------------------------------------------------------------
 
23604
const profile_GLES2__technique__pass__states__line_width__AttributeData profile_GLES2__technique__pass__states__line_width__AttributeData::DEFAULT = {1.0E0, 0};
 
23605
 
 
23606
//---------------------------------------------------------------------
 
23607
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__line_width( const ParserChar* text, size_t textLength )
 
23608
{
 
23609
    return true;
 
23610
}
 
23611
 
 
23612
//---------------------------------------------------------------------
 
23613
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__line_width( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
23614
{
 
23615
#ifdef GENERATEDSAXPARSER_VALIDATION
 
23616
    if ( mValidate )
 
23617
    {
 
23618
 
 
23619
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__line_width( attributes, attributeDataPtr, validationDataPtr );
 
23620
        if ( !validationResult ) return false;
 
23621
 
 
23622
    } // validation
 
23623
#endif
 
23624
 
 
23625
profile_GLES2__technique__pass__states__line_width__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__line_width__AttributeData>(attributeDataPtr);
 
23626
 
 
23627
const ParserChar** attributeArray = attributes.attributes;
 
23628
if ( attributeArray )
 
23629
{
 
23630
    while (true)
 
23631
    {
 
23632
        const ParserChar * attribute = *attributeArray;
 
23633
        if ( !attribute )
 
23634
            break;
 
23635
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
23636
        attributeArray++;
 
23637
        if ( !attributeArray )
 
23638
            return false;
 
23639
        const ParserChar* attributeValue = *attributeArray;
 
23640
        attributeArray++;
 
23641
 
 
23642
 
 
23643
    switch ( hash )
 
23644
    {
 
23645
    case HASH_ATTRIBUTE_VALUE:
 
23646
    {
 
23647
bool failed;
 
23648
attributeData->value = GeneratedSaxParser::Utils::toFloat(attributeValue, failed);
 
23649
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
23650
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
23651
        HASH_ELEMENT_LINE_WIDTH,
 
23652
        HASH_ATTRIBUTE_VALUE,
 
23653
        attributeValue))
 
23654
{
 
23655
    return false;
 
23656
}
 
23657
 
 
23658
    break;
 
23659
    }
 
23660
    case HASH_ATTRIBUTE_PARAM:
 
23661
    {
 
23662
 
 
23663
attributeData->param = attributeValue;
 
23664
 
 
23665
    break;
 
23666
    }
 
23667
    default:
 
23668
    {
 
23669
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LINE_WIDTH, attribute, attributeValue))
 
23670
            {return false;}
 
23671
    }
 
23672
    }
 
23673
    }
 
23674
}
 
23675
 
 
23676
 
 
23677
    return true;
 
23678
}
 
23679
 
 
23680
//---------------------------------------------------------------------
 
23681
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__line_width()
 
23682
{
 
23683
#ifdef GENERATEDSAXPARSER_VALIDATION
 
23684
    if ( mValidate )
 
23685
    {
 
23686
 
 
23687
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__line_width();
 
23688
        if ( !validationResult ) return false;
 
23689
 
 
23690
    } // validation
 
23691
#endif
 
23692
 
 
23693
    return true;
 
23694
}
 
23695
 
 
23696
//---------------------------------------------------------------------
 
23697
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__line_width( void* attributeData )
 
23698
{
 
23699
    profile_GLES2__technique__pass__states__line_width__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__line_width__AttributeData*>(attributeData);
 
23700
 
 
23701
    typedAttributeData->~profile_GLES2__technique__pass__states__line_width__AttributeData();
 
23702
 
 
23703
    return true;
 
23704
}
 
23705
 
 
23706
//---------------------------------------------------------------------
 
23707
const profile_GLES2__technique__pass__states__polygon_offset__AttributeData profile_GLES2__technique__pass__states__polygon_offset__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<float>(), 0};
 
23708
 
 
23709
//---------------------------------------------------------------------
 
23710
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__polygon_offset( const ParserChar* text, size_t textLength )
 
23711
{
 
23712
    return true;
 
23713
}
 
23714
 
 
23715
//---------------------------------------------------------------------
 
23716
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__polygon_offset( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
23717
{
 
23718
#ifdef GENERATEDSAXPARSER_VALIDATION
 
23719
    if ( mValidate )
 
23720
    {
 
23721
 
 
23722
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__polygon_offset( attributes, attributeDataPtr, validationDataPtr );
 
23723
        if ( !validationResult ) return false;
 
23724
 
 
23725
    } // validation
 
23726
#endif
 
23727
 
 
23728
profile_GLES2__technique__pass__states__polygon_offset__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__polygon_offset__AttributeData>(attributeDataPtr);
 
23729
 
 
23730
const ParserChar** attributeArray = attributes.attributes;
 
23731
if ( attributeArray )
 
23732
{
 
23733
    while (true)
 
23734
    {
 
23735
        const ParserChar * attribute = *attributeArray;
 
23736
        if ( !attribute )
 
23737
            break;
 
23738
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
23739
        attributeArray++;
 
23740
        if ( !attributeArray )
 
23741
            return false;
 
23742
        const ParserChar* attributeValue = *attributeArray;
 
23743
        attributeArray++;
 
23744
 
 
23745
 
 
23746
    switch ( hash )
 
23747
    {
 
23748
    case HASH_ATTRIBUTE_VALUE:
 
23749
    {
 
23750
bool failed;
 
23751
#ifdef GENERATEDSAXPARSER_VALIDATION
 
23752
    if ( mValidate )
 
23753
    {
 
23754
failed = !characterData2FloatList(attributeValue, attributeData->value, 0, HASH_ELEMENT_POLYGON_OFFSET, HASH_ATTRIBUTE_VALUE);
 
23755
    }
 
23756
    else
 
23757
    {
 
23758
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
23759
    }
 
23760
#else
 
23761
    {
 
23762
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
23763
    } // validation
 
23764
#endif
 
23765
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
23766
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
23767
        HASH_ELEMENT_POLYGON_OFFSET,
 
23768
        HASH_ATTRIBUTE_VALUE,
 
23769
        attributeValue))
 
23770
{
 
23771
    return false;
 
23772
}
 
23773
#ifdef GENERATEDSAXPARSER_VALIDATION
 
23774
    if ( mValidate )
 
23775
    {
 
23776
    ParserError::ErrorType simpleTypeValidationResult = validate__float2_type(attributeData->value.data, attributeData->value.size);
 
23777
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
23778
    {
 
23779
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
23780
            simpleTypeValidationResult,
 
23781
            HASH_ELEMENT_POLYGON_OFFSET,
 
23782
            HASH_ATTRIBUTE_VALUE,
 
23783
            attributeValue) )
 
23784
        {
 
23785
            return false;
 
23786
        }
 
23787
    }
 
23788
    } // validation
 
23789
#endif
 
23790
 
 
23791
if ( !failed )
 
23792
    attributeData->present_attributes |= profile_GLES2__technique__pass__states__polygon_offset__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
23793
 
 
23794
    break;
 
23795
    }
 
23796
    case HASH_ATTRIBUTE_PARAM:
 
23797
    {
 
23798
 
 
23799
attributeData->param = attributeValue;
 
23800
 
 
23801
    break;
 
23802
    }
 
23803
    default:
 
23804
    {
 
23805
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_POLYGON_OFFSET, attribute, attributeValue))
 
23806
            {return false;}
 
23807
    }
 
23808
    }
 
23809
    }
 
23810
}
 
23811
if ((attributeData->present_attributes & profile_GLES2__technique__pass__states__polygon_offset__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
23812
{
 
23813
    bool failed;
 
23814
    failed = !characterData2FloatList("0.0E1 0.0E1", attributeData->value);
 
23815
    if ( !failed )
 
23816
    attributeData->present_attributes |= profile_GLES2__technique__pass__states__polygon_offset__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
23817
}
 
23818
 
 
23819
 
 
23820
    return true;
 
23821
}
 
23822
 
 
23823
//---------------------------------------------------------------------
 
23824
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__polygon_offset()
 
23825
{
 
23826
#ifdef GENERATEDSAXPARSER_VALIDATION
 
23827
    if ( mValidate )
 
23828
    {
 
23829
 
 
23830
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__polygon_offset();
 
23831
        if ( !validationResult ) return false;
 
23832
 
 
23833
    } // validation
 
23834
#endif
 
23835
 
 
23836
    return true;
 
23837
}
 
23838
 
 
23839
//---------------------------------------------------------------------
 
23840
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__polygon_offset( void* attributeData )
 
23841
{
 
23842
    profile_GLES2__technique__pass__states__polygon_offset__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__polygon_offset__AttributeData*>(attributeData);
 
23843
    if (typedAttributeData->value.data)
 
23844
    {
 
23845
        mStackMemoryManager.deleteObject();
 
23846
    }
 
23847
 
 
23848
 
 
23849
    typedAttributeData->~profile_GLES2__technique__pass__states__polygon_offset__AttributeData();
 
23850
 
 
23851
    return true;
 
23852
}
 
23853
 
 
23854
//---------------------------------------------------------------------
 
23855
const profile_GLES2__technique__pass__states__point_size__AttributeData profile_GLES2__technique__pass__states__point_size__AttributeData::DEFAULT = {1.0E0, 0};
 
23856
 
 
23857
//---------------------------------------------------------------------
 
23858
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__point_size( const ParserChar* text, size_t textLength )
 
23859
{
 
23860
    return true;
 
23861
}
 
23862
 
 
23863
//---------------------------------------------------------------------
 
23864
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__point_size( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
23865
{
 
23866
#ifdef GENERATEDSAXPARSER_VALIDATION
 
23867
    if ( mValidate )
 
23868
    {
 
23869
 
 
23870
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__point_size( attributes, attributeDataPtr, validationDataPtr );
 
23871
        if ( !validationResult ) return false;
 
23872
 
 
23873
    } // validation
 
23874
#endif
 
23875
 
 
23876
profile_GLES2__technique__pass__states__point_size__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__point_size__AttributeData>(attributeDataPtr);
 
23877
 
 
23878
const ParserChar** attributeArray = attributes.attributes;
 
23879
if ( attributeArray )
 
23880
{
 
23881
    while (true)
 
23882
    {
 
23883
        const ParserChar * attribute = *attributeArray;
 
23884
        if ( !attribute )
 
23885
            break;
 
23886
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
23887
        attributeArray++;
 
23888
        if ( !attributeArray )
 
23889
            return false;
 
23890
        const ParserChar* attributeValue = *attributeArray;
 
23891
        attributeArray++;
 
23892
 
 
23893
 
 
23894
    switch ( hash )
 
23895
    {
 
23896
    case HASH_ATTRIBUTE_VALUE:
 
23897
    {
 
23898
bool failed;
 
23899
attributeData->value = GeneratedSaxParser::Utils::toFloat(attributeValue, failed);
 
23900
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
23901
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
23902
        HASH_ELEMENT_POINT_SIZE,
 
23903
        HASH_ATTRIBUTE_VALUE,
 
23904
        attributeValue))
 
23905
{
 
23906
    return false;
 
23907
}
 
23908
 
 
23909
    break;
 
23910
    }
 
23911
    case HASH_ATTRIBUTE_PARAM:
 
23912
    {
 
23913
 
 
23914
attributeData->param = attributeValue;
 
23915
 
 
23916
    break;
 
23917
    }
 
23918
    default:
 
23919
    {
 
23920
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_POINT_SIZE, attribute, attributeValue))
 
23921
            {return false;}
 
23922
    }
 
23923
    }
 
23924
    }
 
23925
}
 
23926
 
 
23927
 
 
23928
    return true;
 
23929
}
 
23930
 
 
23931
//---------------------------------------------------------------------
 
23932
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__point_size()
 
23933
{
 
23934
#ifdef GENERATEDSAXPARSER_VALIDATION
 
23935
    if ( mValidate )
 
23936
    {
 
23937
 
 
23938
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__point_size();
 
23939
        if ( !validationResult ) return false;
 
23940
 
 
23941
    } // validation
 
23942
#endif
 
23943
 
 
23944
    return true;
 
23945
}
 
23946
 
 
23947
//---------------------------------------------------------------------
 
23948
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__point_size( void* attributeData )
 
23949
{
 
23950
    profile_GLES2__technique__pass__states__point_size__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__point_size__AttributeData*>(attributeData);
 
23951
 
 
23952
    typedAttributeData->~profile_GLES2__technique__pass__states__point_size__AttributeData();
 
23953
 
 
23954
    return true;
 
23955
}
 
23956
 
 
23957
//---------------------------------------------------------------------
 
23958
bool ColladaParserAutoGen15Private::_data__sample_coverage( const ParserChar* text, size_t textLength )
 
23959
{
 
23960
    return true;
 
23961
}
 
23962
 
 
23963
//---------------------------------------------------------------------
 
23964
bool ColladaParserAutoGen15Private::_preBegin__sample_coverage( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
23965
{
 
23966
#ifdef GENERATEDSAXPARSER_VALIDATION
 
23967
    if ( mValidate )
 
23968
    {
 
23969
 
 
23970
        bool validationResult = _validateBegin__sample_coverage( attributes, attributeDataPtr, validationDataPtr );
 
23971
        if ( !validationResult ) return false;
 
23972
 
 
23973
    } // validation
 
23974
#endif
 
23975
 
 
23976
    return true;
 
23977
}
 
23978
 
 
23979
//---------------------------------------------------------------------
 
23980
bool ColladaParserAutoGen15Private::_preEnd__sample_coverage()
 
23981
{
 
23982
#ifdef GENERATEDSAXPARSER_VALIDATION
 
23983
    if ( mValidate )
 
23984
    {
 
23985
 
 
23986
        bool validationResult = _validateEnd__sample_coverage();
 
23987
        if ( !validationResult ) return false;
 
23988
 
 
23989
    } // validation
 
23990
#endif
 
23991
 
 
23992
    return true;
 
23993
}
 
23994
 
 
23995
//---------------------------------------------------------------------
 
23996
bool ColladaParserAutoGen15Private::_freeAttributes__sample_coverage( void* attributeData )
 
23997
{
 
23998
    return true;
 
23999
}
 
24000
 
 
24001
//---------------------------------------------------------------------
 
24002
const sample_coverage__value__AttributeData sample_coverage__value__AttributeData::DEFAULT = {0, 0, 0};
 
24003
 
 
24004
//---------------------------------------------------------------------
 
24005
bool ColladaParserAutoGen15Private::_data__sample_coverage__value( const ParserChar* text, size_t textLength )
 
24006
{
 
24007
    return true;
 
24008
}
 
24009
 
 
24010
//---------------------------------------------------------------------
 
24011
bool ColladaParserAutoGen15Private::_preBegin__sample_coverage__value( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
24012
{
 
24013
#ifdef GENERATEDSAXPARSER_VALIDATION
 
24014
    if ( mValidate )
 
24015
    {
 
24016
 
 
24017
        bool validationResult = _validateBegin__sample_coverage__value( attributes, attributeDataPtr, validationDataPtr );
 
24018
        if ( !validationResult ) return false;
 
24019
 
 
24020
    } // validation
 
24021
#endif
 
24022
 
 
24023
sample_coverage__value__AttributeData* attributeData = newData<sample_coverage__value__AttributeData>(attributeDataPtr);
 
24024
 
 
24025
const ParserChar** attributeArray = attributes.attributes;
 
24026
if ( attributeArray )
 
24027
{
 
24028
    while (true)
 
24029
    {
 
24030
        const ParserChar * attribute = *attributeArray;
 
24031
        if ( !attribute )
 
24032
            break;
 
24033
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
24034
        attributeArray++;
 
24035
        if ( !attributeArray )
 
24036
            return false;
 
24037
        const ParserChar* attributeValue = *attributeArray;
 
24038
        attributeArray++;
 
24039
 
 
24040
 
 
24041
    switch ( hash )
 
24042
    {
 
24043
    case HASH_ATTRIBUTE_VALUE:
 
24044
    {
 
24045
bool failed;
 
24046
attributeData->value = GeneratedSaxParser::Utils::toFloat(attributeValue, failed);
 
24047
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
24048
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
24049
        HASH_ELEMENT_VALUE,
 
24050
        HASH_ATTRIBUTE_VALUE,
 
24051
        attributeValue))
 
24052
{
 
24053
    return false;
 
24054
}
 
24055
if ( !failed )
 
24056
    attributeData->present_attributes |= sample_coverage__value__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
24057
 
 
24058
    break;
 
24059
    }
 
24060
    case HASH_ATTRIBUTE_PARAM:
 
24061
    {
 
24062
 
 
24063
attributeData->param = attributeValue;
 
24064
 
 
24065
    break;
 
24066
    }
 
24067
    default:
 
24068
    {
 
24069
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_VALUE, attribute, attributeValue))
 
24070
            {return false;}
 
24071
    }
 
24072
    }
 
24073
    }
 
24074
}
 
24075
 
 
24076
 
 
24077
    return true;
 
24078
}
 
24079
 
 
24080
//---------------------------------------------------------------------
 
24081
bool ColladaParserAutoGen15Private::_preEnd__sample_coverage__value()
 
24082
{
 
24083
#ifdef GENERATEDSAXPARSER_VALIDATION
 
24084
    if ( mValidate )
 
24085
    {
 
24086
 
 
24087
        bool validationResult = _validateEnd__sample_coverage__value();
 
24088
        if ( !validationResult ) return false;
 
24089
 
 
24090
    } // validation
 
24091
#endif
 
24092
 
 
24093
    return true;
 
24094
}
 
24095
 
 
24096
//---------------------------------------------------------------------
 
24097
bool ColladaParserAutoGen15Private::_freeAttributes__sample_coverage__value( void* attributeData )
 
24098
{
 
24099
    sample_coverage__value__AttributeData* typedAttributeData = static_cast<sample_coverage__value__AttributeData*>(attributeData);
 
24100
 
 
24101
    typedAttributeData->~sample_coverage__value__AttributeData();
 
24102
 
 
24103
    return true;
 
24104
}
 
24105
 
 
24106
//---------------------------------------------------------------------
 
24107
const invert__AttributeData invert__AttributeData::DEFAULT = {0, 0, 0};
 
24108
 
 
24109
//---------------------------------------------------------------------
 
24110
bool ColladaParserAutoGen15Private::_data__invert( const ParserChar* text, size_t textLength )
 
24111
{
 
24112
    return true;
 
24113
}
 
24114
 
 
24115
//---------------------------------------------------------------------
 
24116
bool ColladaParserAutoGen15Private::_preBegin__invert( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
24117
{
 
24118
#ifdef GENERATEDSAXPARSER_VALIDATION
 
24119
    if ( mValidate )
 
24120
    {
 
24121
 
 
24122
        bool validationResult = _validateBegin__invert( attributes, attributeDataPtr, validationDataPtr );
 
24123
        if ( !validationResult ) return false;
 
24124
 
 
24125
    } // validation
 
24126
#endif
 
24127
 
 
24128
invert__AttributeData* attributeData = newData<invert__AttributeData>(attributeDataPtr);
 
24129
 
 
24130
const ParserChar** attributeArray = attributes.attributes;
 
24131
if ( attributeArray )
 
24132
{
 
24133
    while (true)
 
24134
    {
 
24135
        const ParserChar * attribute = *attributeArray;
 
24136
        if ( !attribute )
 
24137
            break;
 
24138
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
24139
        attributeArray++;
 
24140
        if ( !attributeArray )
 
24141
            return false;
 
24142
        const ParserChar* attributeValue = *attributeArray;
 
24143
        attributeArray++;
 
24144
 
 
24145
 
 
24146
    switch ( hash )
 
24147
    {
 
24148
    case HASH_ATTRIBUTE_VALUE:
 
24149
    {
 
24150
bool failed;
 
24151
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
24152
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
24153
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
24154
        HASH_ELEMENT_INVERT,
 
24155
        HASH_ATTRIBUTE_VALUE,
 
24156
        attributeValue))
 
24157
{
 
24158
    return false;
 
24159
}
 
24160
if ( !failed )
 
24161
    attributeData->present_attributes |= invert__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
24162
 
 
24163
    break;
 
24164
    }
 
24165
    case HASH_ATTRIBUTE_PARAM:
 
24166
    {
 
24167
 
 
24168
attributeData->param = attributeValue;
 
24169
 
 
24170
    break;
 
24171
    }
 
24172
    default:
 
24173
    {
 
24174
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_INVERT, attribute, attributeValue))
 
24175
            {return false;}
 
24176
    }
 
24177
    }
 
24178
    }
 
24179
}
 
24180
 
 
24181
 
 
24182
    return true;
 
24183
}
 
24184
 
 
24185
//---------------------------------------------------------------------
 
24186
bool ColladaParserAutoGen15Private::_preEnd__invert()
 
24187
{
 
24188
#ifdef GENERATEDSAXPARSER_VALIDATION
 
24189
    if ( mValidate )
 
24190
    {
 
24191
 
 
24192
        bool validationResult = _validateEnd__invert();
 
24193
        if ( !validationResult ) return false;
 
24194
 
 
24195
    } // validation
 
24196
#endif
 
24197
 
 
24198
    return true;
 
24199
}
 
24200
 
 
24201
//---------------------------------------------------------------------
 
24202
bool ColladaParserAutoGen15Private::_freeAttributes__invert( void* attributeData )
 
24203
{
 
24204
    invert__AttributeData* typedAttributeData = static_cast<invert__AttributeData*>(attributeData);
 
24205
 
 
24206
    typedAttributeData->~invert__AttributeData();
 
24207
 
 
24208
    return true;
 
24209
}
 
24210
 
 
24211
//---------------------------------------------------------------------
 
24212
const profile_GLES2__technique__pass__states__scissor__AttributeData profile_GLES2__technique__pass__states__scissor__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<sint64>(), 0};
 
24213
 
 
24214
//---------------------------------------------------------------------
 
24215
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__scissor( const ParserChar* text, size_t textLength )
 
24216
{
 
24217
    return true;
 
24218
}
 
24219
 
 
24220
//---------------------------------------------------------------------
 
24221
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__scissor( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
24222
{
 
24223
#ifdef GENERATEDSAXPARSER_VALIDATION
 
24224
    if ( mValidate )
 
24225
    {
 
24226
 
 
24227
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__scissor( attributes, attributeDataPtr, validationDataPtr );
 
24228
        if ( !validationResult ) return false;
 
24229
 
 
24230
    } // validation
 
24231
#endif
 
24232
 
 
24233
profile_GLES2__technique__pass__states__scissor__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__scissor__AttributeData>(attributeDataPtr);
 
24234
 
 
24235
const ParserChar** attributeArray = attributes.attributes;
 
24236
if ( attributeArray )
 
24237
{
 
24238
    while (true)
 
24239
    {
 
24240
        const ParserChar * attribute = *attributeArray;
 
24241
        if ( !attribute )
 
24242
            break;
 
24243
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
24244
        attributeArray++;
 
24245
        if ( !attributeArray )
 
24246
            return false;
 
24247
        const ParserChar* attributeValue = *attributeArray;
 
24248
        attributeArray++;
 
24249
 
 
24250
 
 
24251
    switch ( hash )
 
24252
    {
 
24253
    case HASH_ATTRIBUTE_VALUE:
 
24254
    {
 
24255
bool failed;
 
24256
#ifdef GENERATEDSAXPARSER_VALIDATION
 
24257
    if ( mValidate )
 
24258
    {
 
24259
failed = !characterData2Sint64List(attributeValue, attributeData->value, 0, HASH_ELEMENT_SCISSOR, HASH_ATTRIBUTE_VALUE);
 
24260
    }
 
24261
    else
 
24262
    {
 
24263
failed = !characterData2Sint64List(attributeValue, attributeData->value);
 
24264
    }
 
24265
#else
 
24266
    {
 
24267
failed = !characterData2Sint64List(attributeValue, attributeData->value);
 
24268
    } // validation
 
24269
#endif
 
24270
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
24271
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
24272
        HASH_ELEMENT_SCISSOR,
 
24273
        HASH_ATTRIBUTE_VALUE,
 
24274
        attributeValue))
 
24275
{
 
24276
    return false;
 
24277
}
 
24278
#ifdef GENERATEDSAXPARSER_VALIDATION
 
24279
    if ( mValidate )
 
24280
    {
 
24281
    ParserError::ErrorType simpleTypeValidationResult = validate__int4_type(attributeData->value.data, attributeData->value.size);
 
24282
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
24283
    {
 
24284
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
24285
            simpleTypeValidationResult,
 
24286
            HASH_ELEMENT_SCISSOR,
 
24287
            HASH_ATTRIBUTE_VALUE,
 
24288
            attributeValue) )
 
24289
        {
 
24290
            return false;
 
24291
        }
 
24292
    }
 
24293
    } // validation
 
24294
#endif
 
24295
 
 
24296
if ( !failed )
 
24297
    attributeData->present_attributes |= profile_GLES2__technique__pass__states__scissor__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
24298
 
 
24299
    break;
 
24300
    }
 
24301
    case HASH_ATTRIBUTE_PARAM:
 
24302
    {
 
24303
 
 
24304
attributeData->param = attributeValue;
 
24305
 
 
24306
    break;
 
24307
    }
 
24308
    default:
 
24309
    {
 
24310
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SCISSOR, attribute, attributeValue))
 
24311
            {return false;}
 
24312
    }
 
24313
    }
 
24314
    }
 
24315
}
 
24316
if ((attributeData->present_attributes & profile_GLES2__technique__pass__states__scissor__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
24317
{
 
24318
    attributeData->value = GeneratedSaxParser::XSList<sint64>();
 
24319
}
 
24320
 
 
24321
 
 
24322
    return true;
 
24323
}
 
24324
 
 
24325
//---------------------------------------------------------------------
 
24326
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__scissor()
 
24327
{
 
24328
#ifdef GENERATEDSAXPARSER_VALIDATION
 
24329
    if ( mValidate )
 
24330
    {
 
24331
 
 
24332
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__scissor();
 
24333
        if ( !validationResult ) return false;
 
24334
 
 
24335
    } // validation
 
24336
#endif
 
24337
 
 
24338
    return true;
 
24339
}
 
24340
 
 
24341
//---------------------------------------------------------------------
 
24342
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__scissor( void* attributeData )
 
24343
{
 
24344
    profile_GLES2__technique__pass__states__scissor__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__scissor__AttributeData*>(attributeData);
 
24345
    if (typedAttributeData->value.data)
 
24346
    {
 
24347
        mStackMemoryManager.deleteObject();
 
24348
    }
 
24349
 
 
24350
 
 
24351
    typedAttributeData->~profile_GLES2__technique__pass__states__scissor__AttributeData();
 
24352
 
 
24353
    return true;
 
24354
}
 
24355
 
 
24356
//---------------------------------------------------------------------
 
24357
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__stencil_func( const ParserChar* text, size_t textLength )
 
24358
{
 
24359
    return true;
 
24360
}
 
24361
 
 
24362
//---------------------------------------------------------------------
 
24363
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__stencil_func( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
24364
{
 
24365
#ifdef GENERATEDSAXPARSER_VALIDATION
 
24366
    if ( mValidate )
 
24367
    {
 
24368
 
 
24369
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__stencil_func( attributes, attributeDataPtr, validationDataPtr );
 
24370
        if ( !validationResult ) return false;
 
24371
 
 
24372
    } // validation
 
24373
#endif
 
24374
 
 
24375
    return true;
 
24376
}
 
24377
 
 
24378
//---------------------------------------------------------------------
 
24379
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__stencil_func()
 
24380
{
 
24381
#ifdef GENERATEDSAXPARSER_VALIDATION
 
24382
    if ( mValidate )
 
24383
    {
 
24384
 
 
24385
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__stencil_func();
 
24386
        if ( !validationResult ) return false;
 
24387
 
 
24388
    } // validation
 
24389
#endif
 
24390
 
 
24391
    return true;
 
24392
}
 
24393
 
 
24394
//---------------------------------------------------------------------
 
24395
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__stencil_func( void* attributeData )
 
24396
{
 
24397
    return true;
 
24398
}
 
24399
 
 
24400
//---------------------------------------------------------------------
 
24401
const profile_GLES2__technique__pass__states__stencil_func__func__AttributeData profile_GLES2__technique__pass__states__stencil_func__func__AttributeData::DEFAULT = {ENUM__gl_func_enum__ALWAYS, 0};
 
24402
 
 
24403
//---------------------------------------------------------------------
 
24404
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__stencil_func__func( const ParserChar* text, size_t textLength )
 
24405
{
 
24406
    return true;
 
24407
}
 
24408
 
 
24409
//---------------------------------------------------------------------
 
24410
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__stencil_func__func( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
24411
{
 
24412
#ifdef GENERATEDSAXPARSER_VALIDATION
 
24413
    if ( mValidate )
 
24414
    {
 
24415
 
 
24416
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__stencil_func__func( attributes, attributeDataPtr, validationDataPtr );
 
24417
        if ( !validationResult ) return false;
 
24418
 
 
24419
    } // validation
 
24420
#endif
 
24421
 
 
24422
profile_GLES2__technique__pass__states__stencil_func__func__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__stencil_func__func__AttributeData>(attributeDataPtr);
 
24423
 
 
24424
const ParserChar** attributeArray = attributes.attributes;
 
24425
if ( attributeArray )
 
24426
{
 
24427
    while (true)
 
24428
    {
 
24429
        const ParserChar * attribute = *attributeArray;
 
24430
        if ( !attribute )
 
24431
            break;
 
24432
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
24433
        attributeArray++;
 
24434
        if ( !attributeArray )
 
24435
            return false;
 
24436
        const ParserChar* attributeValue = *attributeArray;
 
24437
        attributeArray++;
 
24438
 
 
24439
 
 
24440
    switch ( hash )
 
24441
    {
 
24442
    case HASH_ATTRIBUTE_VALUE:
 
24443
    {
 
24444
bool failed;
 
24445
attributeData->value = Utils::toEnum<ENUM__gl_func_enum, StringHash, ENUM__gl_func_enum__COUNT>(attributeValue, failed, ENUM__gl_func_enumMap, Utils::calculateStringHash);
 
24446
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
24447
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
24448
        HASH_ELEMENT_FUNC,
 
24449
        HASH_ATTRIBUTE_VALUE,
 
24450
        attributeValue))
 
24451
{
 
24452
    return false;
 
24453
}
 
24454
 
 
24455
    break;
 
24456
    }
 
24457
    case HASH_ATTRIBUTE_PARAM:
 
24458
    {
 
24459
 
 
24460
attributeData->param = attributeValue;
 
24461
 
 
24462
    break;
 
24463
    }
 
24464
    default:
 
24465
    {
 
24466
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FUNC, attribute, attributeValue))
 
24467
            {return false;}
 
24468
    }
 
24469
    }
 
24470
    }
 
24471
}
 
24472
 
 
24473
 
 
24474
    return true;
 
24475
}
 
24476
 
 
24477
//---------------------------------------------------------------------
 
24478
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__stencil_func__func()
 
24479
{
 
24480
#ifdef GENERATEDSAXPARSER_VALIDATION
 
24481
    if ( mValidate )
 
24482
    {
 
24483
 
 
24484
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__stencil_func__func();
 
24485
        if ( !validationResult ) return false;
 
24486
 
 
24487
    } // validation
 
24488
#endif
 
24489
 
 
24490
    return true;
 
24491
}
 
24492
 
 
24493
//---------------------------------------------------------------------
 
24494
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__stencil_func__func( void* attributeData )
 
24495
{
 
24496
    profile_GLES2__technique__pass__states__stencil_func__func__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__stencil_func__func__AttributeData*>(attributeData);
 
24497
 
 
24498
    typedAttributeData->~profile_GLES2__technique__pass__states__stencil_func__func__AttributeData();
 
24499
 
 
24500
    return true;
 
24501
}
 
24502
 
 
24503
//---------------------------------------------------------------------
 
24504
const profile_GLES2__technique__pass__states__stencil_func__ref__AttributeData profile_GLES2__technique__pass__states__stencil_func__ref__AttributeData::DEFAULT = {0, 0};
 
24505
 
 
24506
//---------------------------------------------------------------------
 
24507
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__stencil_func__ref( const ParserChar* text, size_t textLength )
 
24508
{
 
24509
    return true;
 
24510
}
 
24511
 
 
24512
//---------------------------------------------------------------------
 
24513
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__stencil_func__ref( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
24514
{
 
24515
#ifdef GENERATEDSAXPARSER_VALIDATION
 
24516
    if ( mValidate )
 
24517
    {
 
24518
 
 
24519
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__stencil_func__ref( attributes, attributeDataPtr, validationDataPtr );
 
24520
        if ( !validationResult ) return false;
 
24521
 
 
24522
    } // validation
 
24523
#endif
 
24524
 
 
24525
profile_GLES2__technique__pass__states__stencil_func__ref__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__stencil_func__ref__AttributeData>(attributeDataPtr);
 
24526
 
 
24527
const ParserChar** attributeArray = attributes.attributes;
 
24528
if ( attributeArray )
 
24529
{
 
24530
    while (true)
 
24531
    {
 
24532
        const ParserChar * attribute = *attributeArray;
 
24533
        if ( !attribute )
 
24534
            break;
 
24535
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
24536
        attributeArray++;
 
24537
        if ( !attributeArray )
 
24538
            return false;
 
24539
        const ParserChar* attributeValue = *attributeArray;
 
24540
        attributeArray++;
 
24541
 
 
24542
 
 
24543
    switch ( hash )
 
24544
    {
 
24545
    case HASH_ATTRIBUTE_VALUE:
 
24546
    {
 
24547
bool failed;
 
24548
attributeData->value = GeneratedSaxParser::Utils::toUint8(attributeValue, failed);
 
24549
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
24550
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
24551
        HASH_ELEMENT_REF,
 
24552
        HASH_ATTRIBUTE_VALUE,
 
24553
        attributeValue))
 
24554
{
 
24555
    return false;
 
24556
}
 
24557
 
 
24558
    break;
 
24559
    }
 
24560
    case HASH_ATTRIBUTE_PARAM:
 
24561
    {
 
24562
 
 
24563
attributeData->param = attributeValue;
 
24564
 
 
24565
    break;
 
24566
    }
 
24567
    default:
 
24568
    {
 
24569
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_REF, attribute, attributeValue))
 
24570
            {return false;}
 
24571
    }
 
24572
    }
 
24573
    }
 
24574
}
 
24575
 
 
24576
 
 
24577
    return true;
 
24578
}
 
24579
 
 
24580
//---------------------------------------------------------------------
 
24581
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__stencil_func__ref()
 
24582
{
 
24583
#ifdef GENERATEDSAXPARSER_VALIDATION
 
24584
    if ( mValidate )
 
24585
    {
 
24586
 
 
24587
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__stencil_func__ref();
 
24588
        if ( !validationResult ) return false;
 
24589
 
 
24590
    } // validation
 
24591
#endif
 
24592
 
 
24593
    return true;
 
24594
}
 
24595
 
 
24596
//---------------------------------------------------------------------
 
24597
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__stencil_func__ref( void* attributeData )
 
24598
{
 
24599
    profile_GLES2__technique__pass__states__stencil_func__ref__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__stencil_func__ref__AttributeData*>(attributeData);
 
24600
 
 
24601
    typedAttributeData->~profile_GLES2__technique__pass__states__stencil_func__ref__AttributeData();
 
24602
 
 
24603
    return true;
 
24604
}
 
24605
 
 
24606
//---------------------------------------------------------------------
 
24607
const profile_GLES2__technique__pass__states__stencil_func__mask__AttributeData profile_GLES2__technique__pass__states__stencil_func__mask__AttributeData::DEFAULT = {255, 0};
 
24608
 
 
24609
//---------------------------------------------------------------------
 
24610
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__stencil_func__mask( const ParserChar* text, size_t textLength )
 
24611
{
 
24612
    return true;
 
24613
}
 
24614
 
 
24615
//---------------------------------------------------------------------
 
24616
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__stencil_func__mask( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
24617
{
 
24618
#ifdef GENERATEDSAXPARSER_VALIDATION
 
24619
    if ( mValidate )
 
24620
    {
 
24621
 
 
24622
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__stencil_func__mask( attributes, attributeDataPtr, validationDataPtr );
 
24623
        if ( !validationResult ) return false;
 
24624
 
 
24625
    } // validation
 
24626
#endif
 
24627
 
 
24628
profile_GLES2__technique__pass__states__stencil_func__mask__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__stencil_func__mask__AttributeData>(attributeDataPtr);
 
24629
 
 
24630
const ParserChar** attributeArray = attributes.attributes;
 
24631
if ( attributeArray )
 
24632
{
 
24633
    while (true)
 
24634
    {
 
24635
        const ParserChar * attribute = *attributeArray;
 
24636
        if ( !attribute )
 
24637
            break;
 
24638
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
24639
        attributeArray++;
 
24640
        if ( !attributeArray )
 
24641
            return false;
 
24642
        const ParserChar* attributeValue = *attributeArray;
 
24643
        attributeArray++;
 
24644
 
 
24645
 
 
24646
    switch ( hash )
 
24647
    {
 
24648
    case HASH_ATTRIBUTE_VALUE:
 
24649
    {
 
24650
bool failed;
 
24651
attributeData->value = GeneratedSaxParser::Utils::toUint8(attributeValue, failed);
 
24652
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
24653
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
24654
        HASH_ELEMENT_MASK,
 
24655
        HASH_ATTRIBUTE_VALUE,
 
24656
        attributeValue))
 
24657
{
 
24658
    return false;
 
24659
}
 
24660
 
 
24661
    break;
 
24662
    }
 
24663
    case HASH_ATTRIBUTE_PARAM:
 
24664
    {
 
24665
 
 
24666
attributeData->param = attributeValue;
 
24667
 
 
24668
    break;
 
24669
    }
 
24670
    default:
 
24671
    {
 
24672
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_MASK, attribute, attributeValue))
 
24673
            {return false;}
 
24674
    }
 
24675
    }
 
24676
    }
 
24677
}
 
24678
 
 
24679
 
 
24680
    return true;
 
24681
}
 
24682
 
 
24683
//---------------------------------------------------------------------
 
24684
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__stencil_func__mask()
 
24685
{
 
24686
#ifdef GENERATEDSAXPARSER_VALIDATION
 
24687
    if ( mValidate )
 
24688
    {
 
24689
 
 
24690
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__stencil_func__mask();
 
24691
        if ( !validationResult ) return false;
 
24692
 
 
24693
    } // validation
 
24694
#endif
 
24695
 
 
24696
    return true;
 
24697
}
 
24698
 
 
24699
//---------------------------------------------------------------------
 
24700
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__stencil_func__mask( void* attributeData )
 
24701
{
 
24702
    profile_GLES2__technique__pass__states__stencil_func__mask__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__stencil_func__mask__AttributeData*>(attributeData);
 
24703
 
 
24704
    typedAttributeData->~profile_GLES2__technique__pass__states__stencil_func__mask__AttributeData();
 
24705
 
 
24706
    return true;
 
24707
}
 
24708
 
 
24709
//---------------------------------------------------------------------
 
24710
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__stencil_func_separate( const ParserChar* text, size_t textLength )
 
24711
{
 
24712
    return true;
 
24713
}
 
24714
 
 
24715
//---------------------------------------------------------------------
 
24716
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__stencil_func_separate( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
24717
{
 
24718
#ifdef GENERATEDSAXPARSER_VALIDATION
 
24719
    if ( mValidate )
 
24720
    {
 
24721
 
 
24722
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__stencil_func_separate( attributes, attributeDataPtr, validationDataPtr );
 
24723
        if ( !validationResult ) return false;
 
24724
 
 
24725
    } // validation
 
24726
#endif
 
24727
 
 
24728
    return true;
 
24729
}
 
24730
 
 
24731
//---------------------------------------------------------------------
 
24732
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__stencil_func_separate()
 
24733
{
 
24734
#ifdef GENERATEDSAXPARSER_VALIDATION
 
24735
    if ( mValidate )
 
24736
    {
 
24737
 
 
24738
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__stencil_func_separate();
 
24739
        if ( !validationResult ) return false;
 
24740
 
 
24741
    } // validation
 
24742
#endif
 
24743
 
 
24744
    return true;
 
24745
}
 
24746
 
 
24747
//---------------------------------------------------------------------
 
24748
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__stencil_func_separate( void* attributeData )
 
24749
{
 
24750
    return true;
 
24751
}
 
24752
 
 
24753
//---------------------------------------------------------------------
 
24754
const profile_GLES2__technique__pass__states__stencil_func_separate__front__AttributeData profile_GLES2__technique__pass__states__stencil_func_separate__front__AttributeData::DEFAULT = {ENUM__gl_func_enum__ALWAYS, 0};
 
24755
 
 
24756
//---------------------------------------------------------------------
 
24757
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__stencil_func_separate__front( const ParserChar* text, size_t textLength )
 
24758
{
 
24759
    return true;
 
24760
}
 
24761
 
 
24762
//---------------------------------------------------------------------
 
24763
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__stencil_func_separate__front( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
24764
{
 
24765
#ifdef GENERATEDSAXPARSER_VALIDATION
 
24766
    if ( mValidate )
 
24767
    {
 
24768
 
 
24769
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__stencil_func_separate__front( attributes, attributeDataPtr, validationDataPtr );
 
24770
        if ( !validationResult ) return false;
 
24771
 
 
24772
    } // validation
 
24773
#endif
 
24774
 
 
24775
profile_GLES2__technique__pass__states__stencil_func_separate__front__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__stencil_func_separate__front__AttributeData>(attributeDataPtr);
 
24776
 
 
24777
const ParserChar** attributeArray = attributes.attributes;
 
24778
if ( attributeArray )
 
24779
{
 
24780
    while (true)
 
24781
    {
 
24782
        const ParserChar * attribute = *attributeArray;
 
24783
        if ( !attribute )
 
24784
            break;
 
24785
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
24786
        attributeArray++;
 
24787
        if ( !attributeArray )
 
24788
            return false;
 
24789
        const ParserChar* attributeValue = *attributeArray;
 
24790
        attributeArray++;
 
24791
 
 
24792
 
 
24793
    switch ( hash )
 
24794
    {
 
24795
    case HASH_ATTRIBUTE_VALUE:
 
24796
    {
 
24797
bool failed;
 
24798
attributeData->value = Utils::toEnum<ENUM__gl_func_enum, StringHash, ENUM__gl_func_enum__COUNT>(attributeValue, failed, ENUM__gl_func_enumMap, Utils::calculateStringHash);
 
24799
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
24800
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
24801
        HASH_ELEMENT_FRONT,
 
24802
        HASH_ATTRIBUTE_VALUE,
 
24803
        attributeValue))
 
24804
{
 
24805
    return false;
 
24806
}
 
24807
 
 
24808
    break;
 
24809
    }
 
24810
    case HASH_ATTRIBUTE_PARAM:
 
24811
    {
 
24812
 
 
24813
attributeData->param = attributeValue;
 
24814
 
 
24815
    break;
 
24816
    }
 
24817
    default:
 
24818
    {
 
24819
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FRONT, attribute, attributeValue))
 
24820
            {return false;}
 
24821
    }
 
24822
    }
 
24823
    }
 
24824
}
 
24825
 
 
24826
 
 
24827
    return true;
 
24828
}
 
24829
 
 
24830
//---------------------------------------------------------------------
 
24831
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__stencil_func_separate__front()
 
24832
{
 
24833
#ifdef GENERATEDSAXPARSER_VALIDATION
 
24834
    if ( mValidate )
 
24835
    {
 
24836
 
 
24837
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__stencil_func_separate__front();
 
24838
        if ( !validationResult ) return false;
 
24839
 
 
24840
    } // validation
 
24841
#endif
 
24842
 
 
24843
    return true;
 
24844
}
 
24845
 
 
24846
//---------------------------------------------------------------------
 
24847
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__stencil_func_separate__front( void* attributeData )
 
24848
{
 
24849
    profile_GLES2__technique__pass__states__stencil_func_separate__front__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__stencil_func_separate__front__AttributeData*>(attributeData);
 
24850
 
 
24851
    typedAttributeData->~profile_GLES2__technique__pass__states__stencil_func_separate__front__AttributeData();
 
24852
 
 
24853
    return true;
 
24854
}
 
24855
 
 
24856
//---------------------------------------------------------------------
 
24857
const profile_GLES2__technique__pass__states__stencil_func_separate__back__AttributeData profile_GLES2__technique__pass__states__stencil_func_separate__back__AttributeData::DEFAULT = {ENUM__gl_func_enum__ALWAYS, 0};
 
24858
 
 
24859
//---------------------------------------------------------------------
 
24860
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__stencil_func_separate__back( const ParserChar* text, size_t textLength )
 
24861
{
 
24862
    return true;
 
24863
}
 
24864
 
 
24865
//---------------------------------------------------------------------
 
24866
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__stencil_func_separate__back( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
24867
{
 
24868
#ifdef GENERATEDSAXPARSER_VALIDATION
 
24869
    if ( mValidate )
 
24870
    {
 
24871
 
 
24872
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__stencil_func_separate__back( attributes, attributeDataPtr, validationDataPtr );
 
24873
        if ( !validationResult ) return false;
 
24874
 
 
24875
    } // validation
 
24876
#endif
 
24877
 
 
24878
profile_GLES2__technique__pass__states__stencil_func_separate__back__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__stencil_func_separate__back__AttributeData>(attributeDataPtr);
 
24879
 
 
24880
const ParserChar** attributeArray = attributes.attributes;
 
24881
if ( attributeArray )
 
24882
{
 
24883
    while (true)
 
24884
    {
 
24885
        const ParserChar * attribute = *attributeArray;
 
24886
        if ( !attribute )
 
24887
            break;
 
24888
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
24889
        attributeArray++;
 
24890
        if ( !attributeArray )
 
24891
            return false;
 
24892
        const ParserChar* attributeValue = *attributeArray;
 
24893
        attributeArray++;
 
24894
 
 
24895
 
 
24896
    switch ( hash )
 
24897
    {
 
24898
    case HASH_ATTRIBUTE_VALUE:
 
24899
    {
 
24900
bool failed;
 
24901
attributeData->value = Utils::toEnum<ENUM__gl_func_enum, StringHash, ENUM__gl_func_enum__COUNT>(attributeValue, failed, ENUM__gl_func_enumMap, Utils::calculateStringHash);
 
24902
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
24903
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
24904
        HASH_ELEMENT_BACK,
 
24905
        HASH_ATTRIBUTE_VALUE,
 
24906
        attributeValue))
 
24907
{
 
24908
    return false;
 
24909
}
 
24910
 
 
24911
    break;
 
24912
    }
 
24913
    case HASH_ATTRIBUTE_PARAM:
 
24914
    {
 
24915
 
 
24916
attributeData->param = attributeValue;
 
24917
 
 
24918
    break;
 
24919
    }
 
24920
    default:
 
24921
    {
 
24922
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_BACK, attribute, attributeValue))
 
24923
            {return false;}
 
24924
    }
 
24925
    }
 
24926
    }
 
24927
}
 
24928
 
 
24929
 
 
24930
    return true;
 
24931
}
 
24932
 
 
24933
//---------------------------------------------------------------------
 
24934
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__stencil_func_separate__back()
 
24935
{
 
24936
#ifdef GENERATEDSAXPARSER_VALIDATION
 
24937
    if ( mValidate )
 
24938
    {
 
24939
 
 
24940
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__stencil_func_separate__back();
 
24941
        if ( !validationResult ) return false;
 
24942
 
 
24943
    } // validation
 
24944
#endif
 
24945
 
 
24946
    return true;
 
24947
}
 
24948
 
 
24949
//---------------------------------------------------------------------
 
24950
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__stencil_func_separate__back( void* attributeData )
 
24951
{
 
24952
    profile_GLES2__technique__pass__states__stencil_func_separate__back__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__stencil_func_separate__back__AttributeData*>(attributeData);
 
24953
 
 
24954
    typedAttributeData->~profile_GLES2__technique__pass__states__stencil_func_separate__back__AttributeData();
 
24955
 
 
24956
    return true;
 
24957
}
 
24958
 
 
24959
//---------------------------------------------------------------------
 
24960
const profile_GLES2__technique__pass__states__stencil_func_separate__ref__AttributeData profile_GLES2__technique__pass__states__stencil_func_separate__ref__AttributeData::DEFAULT = {0, 0};
 
24961
 
 
24962
//---------------------------------------------------------------------
 
24963
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__stencil_func_separate__ref( const ParserChar* text, size_t textLength )
 
24964
{
 
24965
    return true;
 
24966
}
 
24967
 
 
24968
//---------------------------------------------------------------------
 
24969
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__stencil_func_separate__ref( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
24970
{
 
24971
#ifdef GENERATEDSAXPARSER_VALIDATION
 
24972
    if ( mValidate )
 
24973
    {
 
24974
 
 
24975
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__stencil_func_separate__ref( attributes, attributeDataPtr, validationDataPtr );
 
24976
        if ( !validationResult ) return false;
 
24977
 
 
24978
    } // validation
 
24979
#endif
 
24980
 
 
24981
profile_GLES2__technique__pass__states__stencil_func_separate__ref__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__stencil_func_separate__ref__AttributeData>(attributeDataPtr);
 
24982
 
 
24983
const ParserChar** attributeArray = attributes.attributes;
 
24984
if ( attributeArray )
 
24985
{
 
24986
    while (true)
 
24987
    {
 
24988
        const ParserChar * attribute = *attributeArray;
 
24989
        if ( !attribute )
 
24990
            break;
 
24991
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
24992
        attributeArray++;
 
24993
        if ( !attributeArray )
 
24994
            return false;
 
24995
        const ParserChar* attributeValue = *attributeArray;
 
24996
        attributeArray++;
 
24997
 
 
24998
 
 
24999
    switch ( hash )
 
25000
    {
 
25001
    case HASH_ATTRIBUTE_VALUE:
 
25002
    {
 
25003
bool failed;
 
25004
attributeData->value = GeneratedSaxParser::Utils::toUint8(attributeValue, failed);
 
25005
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
25006
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
25007
        HASH_ELEMENT_REF,
 
25008
        HASH_ATTRIBUTE_VALUE,
 
25009
        attributeValue))
 
25010
{
 
25011
    return false;
 
25012
}
 
25013
 
 
25014
    break;
 
25015
    }
 
25016
    case HASH_ATTRIBUTE_PARAM:
 
25017
    {
 
25018
 
 
25019
attributeData->param = attributeValue;
 
25020
 
 
25021
    break;
 
25022
    }
 
25023
    default:
 
25024
    {
 
25025
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_REF, attribute, attributeValue))
 
25026
            {return false;}
 
25027
    }
 
25028
    }
 
25029
    }
 
25030
}
 
25031
 
 
25032
 
 
25033
    return true;
 
25034
}
 
25035
 
 
25036
//---------------------------------------------------------------------
 
25037
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__stencil_func_separate__ref()
 
25038
{
 
25039
#ifdef GENERATEDSAXPARSER_VALIDATION
 
25040
    if ( mValidate )
 
25041
    {
 
25042
 
 
25043
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__stencil_func_separate__ref();
 
25044
        if ( !validationResult ) return false;
 
25045
 
 
25046
    } // validation
 
25047
#endif
 
25048
 
 
25049
    return true;
 
25050
}
 
25051
 
 
25052
//---------------------------------------------------------------------
 
25053
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__stencil_func_separate__ref( void* attributeData )
 
25054
{
 
25055
    profile_GLES2__technique__pass__states__stencil_func_separate__ref__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__stencil_func_separate__ref__AttributeData*>(attributeData);
 
25056
 
 
25057
    typedAttributeData->~profile_GLES2__technique__pass__states__stencil_func_separate__ref__AttributeData();
 
25058
 
 
25059
    return true;
 
25060
}
 
25061
 
 
25062
//---------------------------------------------------------------------
 
25063
const profile_GLES2__technique__pass__states__stencil_func_separate__mask__AttributeData profile_GLES2__technique__pass__states__stencil_func_separate__mask__AttributeData::DEFAULT = {255, 0};
 
25064
 
 
25065
//---------------------------------------------------------------------
 
25066
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__stencil_func_separate__mask( const ParserChar* text, size_t textLength )
 
25067
{
 
25068
    return true;
 
25069
}
 
25070
 
 
25071
//---------------------------------------------------------------------
 
25072
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__stencil_func_separate__mask( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
25073
{
 
25074
#ifdef GENERATEDSAXPARSER_VALIDATION
 
25075
    if ( mValidate )
 
25076
    {
 
25077
 
 
25078
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__stencil_func_separate__mask( attributes, attributeDataPtr, validationDataPtr );
 
25079
        if ( !validationResult ) return false;
 
25080
 
 
25081
    } // validation
 
25082
#endif
 
25083
 
 
25084
profile_GLES2__technique__pass__states__stencil_func_separate__mask__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__stencil_func_separate__mask__AttributeData>(attributeDataPtr);
 
25085
 
 
25086
const ParserChar** attributeArray = attributes.attributes;
 
25087
if ( attributeArray )
 
25088
{
 
25089
    while (true)
 
25090
    {
 
25091
        const ParserChar * attribute = *attributeArray;
 
25092
        if ( !attribute )
 
25093
            break;
 
25094
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
25095
        attributeArray++;
 
25096
        if ( !attributeArray )
 
25097
            return false;
 
25098
        const ParserChar* attributeValue = *attributeArray;
 
25099
        attributeArray++;
 
25100
 
 
25101
 
 
25102
    switch ( hash )
 
25103
    {
 
25104
    case HASH_ATTRIBUTE_VALUE:
 
25105
    {
 
25106
bool failed;
 
25107
attributeData->value = GeneratedSaxParser::Utils::toUint8(attributeValue, failed);
 
25108
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
25109
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
25110
        HASH_ELEMENT_MASK,
 
25111
        HASH_ATTRIBUTE_VALUE,
 
25112
        attributeValue))
 
25113
{
 
25114
    return false;
 
25115
}
 
25116
 
 
25117
    break;
 
25118
    }
 
25119
    case HASH_ATTRIBUTE_PARAM:
 
25120
    {
 
25121
 
 
25122
attributeData->param = attributeValue;
 
25123
 
 
25124
    break;
 
25125
    }
 
25126
    default:
 
25127
    {
 
25128
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_MASK, attribute, attributeValue))
 
25129
            {return false;}
 
25130
    }
 
25131
    }
 
25132
    }
 
25133
}
 
25134
 
 
25135
 
 
25136
    return true;
 
25137
}
 
25138
 
 
25139
//---------------------------------------------------------------------
 
25140
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__stencil_func_separate__mask()
 
25141
{
 
25142
#ifdef GENERATEDSAXPARSER_VALIDATION
 
25143
    if ( mValidate )
 
25144
    {
 
25145
 
 
25146
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__stencil_func_separate__mask();
 
25147
        if ( !validationResult ) return false;
 
25148
 
 
25149
    } // validation
 
25150
#endif
 
25151
 
 
25152
    return true;
 
25153
}
 
25154
 
 
25155
//---------------------------------------------------------------------
 
25156
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__stencil_func_separate__mask( void* attributeData )
 
25157
{
 
25158
    profile_GLES2__technique__pass__states__stencil_func_separate__mask__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__stencil_func_separate__mask__AttributeData*>(attributeData);
 
25159
 
 
25160
    typedAttributeData->~profile_GLES2__technique__pass__states__stencil_func_separate__mask__AttributeData();
 
25161
 
 
25162
    return true;
 
25163
}
 
25164
 
 
25165
//---------------------------------------------------------------------
 
25166
const profile_GLES2__technique__pass__states__stencil_mask__AttributeData profile_GLES2__technique__pass__states__stencil_mask__AttributeData::DEFAULT = {4294967295ULL, 0};
 
25167
 
 
25168
//---------------------------------------------------------------------
 
25169
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__stencil_mask( const ParserChar* text, size_t textLength )
 
25170
{
 
25171
    return true;
 
25172
}
 
25173
 
 
25174
//---------------------------------------------------------------------
 
25175
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__stencil_mask( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
25176
{
 
25177
#ifdef GENERATEDSAXPARSER_VALIDATION
 
25178
    if ( mValidate )
 
25179
    {
 
25180
 
 
25181
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__stencil_mask( attributes, attributeDataPtr, validationDataPtr );
 
25182
        if ( !validationResult ) return false;
 
25183
 
 
25184
    } // validation
 
25185
#endif
 
25186
 
 
25187
profile_GLES2__technique__pass__states__stencil_mask__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__stencil_mask__AttributeData>(attributeDataPtr);
 
25188
 
 
25189
const ParserChar** attributeArray = attributes.attributes;
 
25190
if ( attributeArray )
 
25191
{
 
25192
    while (true)
 
25193
    {
 
25194
        const ParserChar * attribute = *attributeArray;
 
25195
        if ( !attribute )
 
25196
            break;
 
25197
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
25198
        attributeArray++;
 
25199
        if ( !attributeArray )
 
25200
            return false;
 
25201
        const ParserChar* attributeValue = *attributeArray;
 
25202
        attributeArray++;
 
25203
 
 
25204
 
 
25205
    switch ( hash )
 
25206
    {
 
25207
    case HASH_ATTRIBUTE_VALUE:
 
25208
    {
 
25209
bool failed;
 
25210
attributeData->value = GeneratedSaxParser::Utils::toSint64(attributeValue, failed);
 
25211
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
25212
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
25213
        HASH_ELEMENT_STENCIL_MASK,
 
25214
        HASH_ATTRIBUTE_VALUE,
 
25215
        attributeValue))
 
25216
{
 
25217
    return false;
 
25218
}
 
25219
 
 
25220
    break;
 
25221
    }
 
25222
    case HASH_ATTRIBUTE_PARAM:
 
25223
    {
 
25224
 
 
25225
attributeData->param = attributeValue;
 
25226
 
 
25227
    break;
 
25228
    }
 
25229
    default:
 
25230
    {
 
25231
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_STENCIL_MASK, attribute, attributeValue))
 
25232
            {return false;}
 
25233
    }
 
25234
    }
 
25235
    }
 
25236
}
 
25237
 
 
25238
 
 
25239
    return true;
 
25240
}
 
25241
 
 
25242
//---------------------------------------------------------------------
 
25243
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__stencil_mask()
 
25244
{
 
25245
#ifdef GENERATEDSAXPARSER_VALIDATION
 
25246
    if ( mValidate )
 
25247
    {
 
25248
 
 
25249
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__stencil_mask();
 
25250
        if ( !validationResult ) return false;
 
25251
 
 
25252
    } // validation
 
25253
#endif
 
25254
 
 
25255
    return true;
 
25256
}
 
25257
 
 
25258
//---------------------------------------------------------------------
 
25259
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__stencil_mask( void* attributeData )
 
25260
{
 
25261
    profile_GLES2__technique__pass__states__stencil_mask__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__stencil_mask__AttributeData*>(attributeData);
 
25262
 
 
25263
    typedAttributeData->~profile_GLES2__technique__pass__states__stencil_mask__AttributeData();
 
25264
 
 
25265
    return true;
 
25266
}
 
25267
 
 
25268
//---------------------------------------------------------------------
 
25269
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__stencil_mask_separate( const ParserChar* text, size_t textLength )
 
25270
{
 
25271
    return true;
 
25272
}
 
25273
 
 
25274
//---------------------------------------------------------------------
 
25275
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__stencil_mask_separate( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
25276
{
 
25277
#ifdef GENERATEDSAXPARSER_VALIDATION
 
25278
    if ( mValidate )
 
25279
    {
 
25280
 
 
25281
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__stencil_mask_separate( attributes, attributeDataPtr, validationDataPtr );
 
25282
        if ( !validationResult ) return false;
 
25283
 
 
25284
    } // validation
 
25285
#endif
 
25286
 
 
25287
    return true;
 
25288
}
 
25289
 
 
25290
//---------------------------------------------------------------------
 
25291
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__stencil_mask_separate()
 
25292
{
 
25293
#ifdef GENERATEDSAXPARSER_VALIDATION
 
25294
    if ( mValidate )
 
25295
    {
 
25296
 
 
25297
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__stencil_mask_separate();
 
25298
        if ( !validationResult ) return false;
 
25299
 
 
25300
    } // validation
 
25301
#endif
 
25302
 
 
25303
    return true;
 
25304
}
 
25305
 
 
25306
//---------------------------------------------------------------------
 
25307
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__stencil_mask_separate( void* attributeData )
 
25308
{
 
25309
    return true;
 
25310
}
 
25311
 
 
25312
//---------------------------------------------------------------------
 
25313
const profile_GLES2__technique__pass__states__stencil_mask_separate__face__AttributeData profile_GLES2__technique__pass__states__stencil_mask_separate__face__AttributeData::DEFAULT = {ENUM__gl_face_enum__FRONT_AND_BACK, 0};
 
25314
 
 
25315
//---------------------------------------------------------------------
 
25316
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__stencil_mask_separate__face( const ParserChar* text, size_t textLength )
 
25317
{
 
25318
    return true;
 
25319
}
 
25320
 
 
25321
//---------------------------------------------------------------------
 
25322
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__stencil_mask_separate__face( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
25323
{
 
25324
#ifdef GENERATEDSAXPARSER_VALIDATION
 
25325
    if ( mValidate )
 
25326
    {
 
25327
 
 
25328
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__stencil_mask_separate__face( attributes, attributeDataPtr, validationDataPtr );
 
25329
        if ( !validationResult ) return false;
 
25330
 
 
25331
    } // validation
 
25332
#endif
 
25333
 
 
25334
profile_GLES2__technique__pass__states__stencil_mask_separate__face__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__stencil_mask_separate__face__AttributeData>(attributeDataPtr);
 
25335
 
 
25336
const ParserChar** attributeArray = attributes.attributes;
 
25337
if ( attributeArray )
 
25338
{
 
25339
    while (true)
 
25340
    {
 
25341
        const ParserChar * attribute = *attributeArray;
 
25342
        if ( !attribute )
 
25343
            break;
 
25344
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
25345
        attributeArray++;
 
25346
        if ( !attributeArray )
 
25347
            return false;
 
25348
        const ParserChar* attributeValue = *attributeArray;
 
25349
        attributeArray++;
 
25350
 
 
25351
 
 
25352
    switch ( hash )
 
25353
    {
 
25354
    case HASH_ATTRIBUTE_VALUE:
 
25355
    {
 
25356
bool failed;
 
25357
attributeData->value = Utils::toEnum<ENUM__gl_face_enum, StringHash, ENUM__gl_face_enum__COUNT>(attributeValue, failed, ENUM__gl_face_enumMap, Utils::calculateStringHash);
 
25358
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
25359
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
25360
        HASH_ELEMENT_FACE,
 
25361
        HASH_ATTRIBUTE_VALUE,
 
25362
        attributeValue))
 
25363
{
 
25364
    return false;
 
25365
}
 
25366
 
 
25367
    break;
 
25368
    }
 
25369
    case HASH_ATTRIBUTE_PARAM:
 
25370
    {
 
25371
 
 
25372
attributeData->param = attributeValue;
 
25373
 
 
25374
    break;
 
25375
    }
 
25376
    default:
 
25377
    {
 
25378
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FACE, attribute, attributeValue))
 
25379
            {return false;}
 
25380
    }
 
25381
    }
 
25382
    }
 
25383
}
 
25384
 
 
25385
 
 
25386
    return true;
 
25387
}
 
25388
 
 
25389
//---------------------------------------------------------------------
 
25390
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__stencil_mask_separate__face()
 
25391
{
 
25392
#ifdef GENERATEDSAXPARSER_VALIDATION
 
25393
    if ( mValidate )
 
25394
    {
 
25395
 
 
25396
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__stencil_mask_separate__face();
 
25397
        if ( !validationResult ) return false;
 
25398
 
 
25399
    } // validation
 
25400
#endif
 
25401
 
 
25402
    return true;
 
25403
}
 
25404
 
 
25405
//---------------------------------------------------------------------
 
25406
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__stencil_mask_separate__face( void* attributeData )
 
25407
{
 
25408
    profile_GLES2__technique__pass__states__stencil_mask_separate__face__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__stencil_mask_separate__face__AttributeData*>(attributeData);
 
25409
 
 
25410
    typedAttributeData->~profile_GLES2__technique__pass__states__stencil_mask_separate__face__AttributeData();
 
25411
 
 
25412
    return true;
 
25413
}
 
25414
 
 
25415
//---------------------------------------------------------------------
 
25416
const profile_GLES2__technique__pass__states__stencil_mask_separate__mask__AttributeData profile_GLES2__technique__pass__states__stencil_mask_separate__mask__AttributeData::DEFAULT = {255, 0};
 
25417
 
 
25418
//---------------------------------------------------------------------
 
25419
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__stencil_mask_separate__mask( const ParserChar* text, size_t textLength )
 
25420
{
 
25421
    return true;
 
25422
}
 
25423
 
 
25424
//---------------------------------------------------------------------
 
25425
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__stencil_mask_separate__mask( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
25426
{
 
25427
#ifdef GENERATEDSAXPARSER_VALIDATION
 
25428
    if ( mValidate )
 
25429
    {
 
25430
 
 
25431
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__stencil_mask_separate__mask( attributes, attributeDataPtr, validationDataPtr );
 
25432
        if ( !validationResult ) return false;
 
25433
 
 
25434
    } // validation
 
25435
#endif
 
25436
 
 
25437
profile_GLES2__technique__pass__states__stencil_mask_separate__mask__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__stencil_mask_separate__mask__AttributeData>(attributeDataPtr);
 
25438
 
 
25439
const ParserChar** attributeArray = attributes.attributes;
 
25440
if ( attributeArray )
 
25441
{
 
25442
    while (true)
 
25443
    {
 
25444
        const ParserChar * attribute = *attributeArray;
 
25445
        if ( !attribute )
 
25446
            break;
 
25447
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
25448
        attributeArray++;
 
25449
        if ( !attributeArray )
 
25450
            return false;
 
25451
        const ParserChar* attributeValue = *attributeArray;
 
25452
        attributeArray++;
 
25453
 
 
25454
 
 
25455
    switch ( hash )
 
25456
    {
 
25457
    case HASH_ATTRIBUTE_VALUE:
 
25458
    {
 
25459
bool failed;
 
25460
attributeData->value = GeneratedSaxParser::Utils::toUint8(attributeValue, failed);
 
25461
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
25462
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
25463
        HASH_ELEMENT_MASK,
 
25464
        HASH_ATTRIBUTE_VALUE,
 
25465
        attributeValue))
 
25466
{
 
25467
    return false;
 
25468
}
 
25469
 
 
25470
    break;
 
25471
    }
 
25472
    case HASH_ATTRIBUTE_PARAM:
 
25473
    {
 
25474
 
 
25475
attributeData->param = attributeValue;
 
25476
 
 
25477
    break;
 
25478
    }
 
25479
    default:
 
25480
    {
 
25481
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_MASK, attribute, attributeValue))
 
25482
            {return false;}
 
25483
    }
 
25484
    }
 
25485
    }
 
25486
}
 
25487
 
 
25488
 
 
25489
    return true;
 
25490
}
 
25491
 
 
25492
//---------------------------------------------------------------------
 
25493
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__stencil_mask_separate__mask()
 
25494
{
 
25495
#ifdef GENERATEDSAXPARSER_VALIDATION
 
25496
    if ( mValidate )
 
25497
    {
 
25498
 
 
25499
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__stencil_mask_separate__mask();
 
25500
        if ( !validationResult ) return false;
 
25501
 
 
25502
    } // validation
 
25503
#endif
 
25504
 
 
25505
    return true;
 
25506
}
 
25507
 
 
25508
//---------------------------------------------------------------------
 
25509
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__stencil_mask_separate__mask( void* attributeData )
 
25510
{
 
25511
    profile_GLES2__technique__pass__states__stencil_mask_separate__mask__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__stencil_mask_separate__mask__AttributeData*>(attributeData);
 
25512
 
 
25513
    typedAttributeData->~profile_GLES2__technique__pass__states__stencil_mask_separate__mask__AttributeData();
 
25514
 
 
25515
    return true;
 
25516
}
 
25517
 
 
25518
//---------------------------------------------------------------------
 
25519
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__stencil_op( const ParserChar* text, size_t textLength )
 
25520
{
 
25521
    return true;
 
25522
}
 
25523
 
 
25524
//---------------------------------------------------------------------
 
25525
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__stencil_op( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
25526
{
 
25527
#ifdef GENERATEDSAXPARSER_VALIDATION
 
25528
    if ( mValidate )
 
25529
    {
 
25530
 
 
25531
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__stencil_op( attributes, attributeDataPtr, validationDataPtr );
 
25532
        if ( !validationResult ) return false;
 
25533
 
 
25534
    } // validation
 
25535
#endif
 
25536
 
 
25537
    return true;
 
25538
}
 
25539
 
 
25540
//---------------------------------------------------------------------
 
25541
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__stencil_op()
 
25542
{
 
25543
#ifdef GENERATEDSAXPARSER_VALIDATION
 
25544
    if ( mValidate )
 
25545
    {
 
25546
 
 
25547
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__stencil_op();
 
25548
        if ( !validationResult ) return false;
 
25549
 
 
25550
    } // validation
 
25551
#endif
 
25552
 
 
25553
    return true;
 
25554
}
 
25555
 
 
25556
//---------------------------------------------------------------------
 
25557
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__stencil_op( void* attributeData )
 
25558
{
 
25559
    return true;
 
25560
}
 
25561
 
 
25562
//---------------------------------------------------------------------
 
25563
const profile_GLES2__technique__pass__states__stencil_op__fail__AttributeData profile_GLES2__technique__pass__states__stencil_op__fail__AttributeData::DEFAULT = {ENUM__gl_stencil_op_enum__KEEP, 0};
 
25564
 
 
25565
//---------------------------------------------------------------------
 
25566
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__stencil_op__fail( const ParserChar* text, size_t textLength )
 
25567
{
 
25568
    return true;
 
25569
}
 
25570
 
 
25571
//---------------------------------------------------------------------
 
25572
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__stencil_op__fail( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
25573
{
 
25574
#ifdef GENERATEDSAXPARSER_VALIDATION
 
25575
    if ( mValidate )
 
25576
    {
 
25577
 
 
25578
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__stencil_op__fail( attributes, attributeDataPtr, validationDataPtr );
 
25579
        if ( !validationResult ) return false;
 
25580
 
 
25581
    } // validation
 
25582
#endif
 
25583
 
 
25584
profile_GLES2__technique__pass__states__stencil_op__fail__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__stencil_op__fail__AttributeData>(attributeDataPtr);
 
25585
 
 
25586
const ParserChar** attributeArray = attributes.attributes;
 
25587
if ( attributeArray )
 
25588
{
 
25589
    while (true)
 
25590
    {
 
25591
        const ParserChar * attribute = *attributeArray;
 
25592
        if ( !attribute )
 
25593
            break;
 
25594
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
25595
        attributeArray++;
 
25596
        if ( !attributeArray )
 
25597
            return false;
 
25598
        const ParserChar* attributeValue = *attributeArray;
 
25599
        attributeArray++;
 
25600
 
 
25601
 
 
25602
    switch ( hash )
 
25603
    {
 
25604
    case HASH_ATTRIBUTE_VALUE:
 
25605
    {
 
25606
bool failed;
 
25607
attributeData->value = Utils::toEnum<ENUM__gl_stencil_op_enum, StringHash, ENUM__gl_stencil_op_enum__COUNT>(attributeValue, failed, ENUM__gl_stencil_op_enumMap, Utils::calculateStringHash);
 
25608
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
25609
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
25610
        HASH_ELEMENT_FAIL,
 
25611
        HASH_ATTRIBUTE_VALUE,
 
25612
        attributeValue))
 
25613
{
 
25614
    return false;
 
25615
}
 
25616
 
 
25617
    break;
 
25618
    }
 
25619
    case HASH_ATTRIBUTE_PARAM:
 
25620
    {
 
25621
 
 
25622
attributeData->param = attributeValue;
 
25623
 
 
25624
    break;
 
25625
    }
 
25626
    default:
 
25627
    {
 
25628
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FAIL, attribute, attributeValue))
 
25629
            {return false;}
 
25630
    }
 
25631
    }
 
25632
    }
 
25633
}
 
25634
 
 
25635
 
 
25636
    return true;
 
25637
}
 
25638
 
 
25639
//---------------------------------------------------------------------
 
25640
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__stencil_op__fail()
 
25641
{
 
25642
#ifdef GENERATEDSAXPARSER_VALIDATION
 
25643
    if ( mValidate )
 
25644
    {
 
25645
 
 
25646
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__stencil_op__fail();
 
25647
        if ( !validationResult ) return false;
 
25648
 
 
25649
    } // validation
 
25650
#endif
 
25651
 
 
25652
    return true;
 
25653
}
 
25654
 
 
25655
//---------------------------------------------------------------------
 
25656
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__stencil_op__fail( void* attributeData )
 
25657
{
 
25658
    profile_GLES2__technique__pass__states__stencil_op__fail__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__stencil_op__fail__AttributeData*>(attributeData);
 
25659
 
 
25660
    typedAttributeData->~profile_GLES2__technique__pass__states__stencil_op__fail__AttributeData();
 
25661
 
 
25662
    return true;
 
25663
}
 
25664
 
 
25665
//---------------------------------------------------------------------
 
25666
const profile_GLES2__technique__pass__states__stencil_op__zfail__AttributeData profile_GLES2__technique__pass__states__stencil_op__zfail__AttributeData::DEFAULT = {ENUM__gl_stencil_op_enum__KEEP, 0};
 
25667
 
 
25668
//---------------------------------------------------------------------
 
25669
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__stencil_op__zfail( const ParserChar* text, size_t textLength )
 
25670
{
 
25671
    return true;
 
25672
}
 
25673
 
 
25674
//---------------------------------------------------------------------
 
25675
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__stencil_op__zfail( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
25676
{
 
25677
#ifdef GENERATEDSAXPARSER_VALIDATION
 
25678
    if ( mValidate )
 
25679
    {
 
25680
 
 
25681
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__stencil_op__zfail( attributes, attributeDataPtr, validationDataPtr );
 
25682
        if ( !validationResult ) return false;
 
25683
 
 
25684
    } // validation
 
25685
#endif
 
25686
 
 
25687
profile_GLES2__technique__pass__states__stencil_op__zfail__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__stencil_op__zfail__AttributeData>(attributeDataPtr);
 
25688
 
 
25689
const ParserChar** attributeArray = attributes.attributes;
 
25690
if ( attributeArray )
 
25691
{
 
25692
    while (true)
 
25693
    {
 
25694
        const ParserChar * attribute = *attributeArray;
 
25695
        if ( !attribute )
 
25696
            break;
 
25697
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
25698
        attributeArray++;
 
25699
        if ( !attributeArray )
 
25700
            return false;
 
25701
        const ParserChar* attributeValue = *attributeArray;
 
25702
        attributeArray++;
 
25703
 
 
25704
 
 
25705
    switch ( hash )
 
25706
    {
 
25707
    case HASH_ATTRIBUTE_VALUE:
 
25708
    {
 
25709
bool failed;
 
25710
attributeData->value = Utils::toEnum<ENUM__gl_stencil_op_enum, StringHash, ENUM__gl_stencil_op_enum__COUNT>(attributeValue, failed, ENUM__gl_stencil_op_enumMap, Utils::calculateStringHash);
 
25711
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
25712
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
25713
        HASH_ELEMENT_ZFAIL,
 
25714
        HASH_ATTRIBUTE_VALUE,
 
25715
        attributeValue))
 
25716
{
 
25717
    return false;
 
25718
}
 
25719
 
 
25720
    break;
 
25721
    }
 
25722
    case HASH_ATTRIBUTE_PARAM:
 
25723
    {
 
25724
 
 
25725
attributeData->param = attributeValue;
 
25726
 
 
25727
    break;
 
25728
    }
 
25729
    default:
 
25730
    {
 
25731
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_ZFAIL, attribute, attributeValue))
 
25732
            {return false;}
 
25733
    }
 
25734
    }
 
25735
    }
 
25736
}
 
25737
 
 
25738
 
 
25739
    return true;
 
25740
}
 
25741
 
 
25742
//---------------------------------------------------------------------
 
25743
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__stencil_op__zfail()
 
25744
{
 
25745
#ifdef GENERATEDSAXPARSER_VALIDATION
 
25746
    if ( mValidate )
 
25747
    {
 
25748
 
 
25749
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__stencil_op__zfail();
 
25750
        if ( !validationResult ) return false;
 
25751
 
 
25752
    } // validation
 
25753
#endif
 
25754
 
 
25755
    return true;
 
25756
}
 
25757
 
 
25758
//---------------------------------------------------------------------
 
25759
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__stencil_op__zfail( void* attributeData )
 
25760
{
 
25761
    profile_GLES2__technique__pass__states__stencil_op__zfail__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__stencil_op__zfail__AttributeData*>(attributeData);
 
25762
 
 
25763
    typedAttributeData->~profile_GLES2__technique__pass__states__stencil_op__zfail__AttributeData();
 
25764
 
 
25765
    return true;
 
25766
}
 
25767
 
 
25768
//---------------------------------------------------------------------
 
25769
const profile_GLES2__technique__pass__states__stencil_op__zpass__AttributeData profile_GLES2__technique__pass__states__stencil_op__zpass__AttributeData::DEFAULT = {ENUM__gl_stencil_op_enum__KEEP, 0};
 
25770
 
 
25771
//---------------------------------------------------------------------
 
25772
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__stencil_op__zpass( const ParserChar* text, size_t textLength )
 
25773
{
 
25774
    return true;
 
25775
}
 
25776
 
 
25777
//---------------------------------------------------------------------
 
25778
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__stencil_op__zpass( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
25779
{
 
25780
#ifdef GENERATEDSAXPARSER_VALIDATION
 
25781
    if ( mValidate )
 
25782
    {
 
25783
 
 
25784
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__stencil_op__zpass( attributes, attributeDataPtr, validationDataPtr );
 
25785
        if ( !validationResult ) return false;
 
25786
 
 
25787
    } // validation
 
25788
#endif
 
25789
 
 
25790
profile_GLES2__technique__pass__states__stencil_op__zpass__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__stencil_op__zpass__AttributeData>(attributeDataPtr);
 
25791
 
 
25792
const ParserChar** attributeArray = attributes.attributes;
 
25793
if ( attributeArray )
 
25794
{
 
25795
    while (true)
 
25796
    {
 
25797
        const ParserChar * attribute = *attributeArray;
 
25798
        if ( !attribute )
 
25799
            break;
 
25800
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
25801
        attributeArray++;
 
25802
        if ( !attributeArray )
 
25803
            return false;
 
25804
        const ParserChar* attributeValue = *attributeArray;
 
25805
        attributeArray++;
 
25806
 
 
25807
 
 
25808
    switch ( hash )
 
25809
    {
 
25810
    case HASH_ATTRIBUTE_VALUE:
 
25811
    {
 
25812
bool failed;
 
25813
attributeData->value = Utils::toEnum<ENUM__gl_stencil_op_enum, StringHash, ENUM__gl_stencil_op_enum__COUNT>(attributeValue, failed, ENUM__gl_stencil_op_enumMap, Utils::calculateStringHash);
 
25814
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
25815
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
25816
        HASH_ELEMENT_ZPASS,
 
25817
        HASH_ATTRIBUTE_VALUE,
 
25818
        attributeValue))
 
25819
{
 
25820
    return false;
 
25821
}
 
25822
 
 
25823
    break;
 
25824
    }
 
25825
    case HASH_ATTRIBUTE_PARAM:
 
25826
    {
 
25827
 
 
25828
attributeData->param = attributeValue;
 
25829
 
 
25830
    break;
 
25831
    }
 
25832
    default:
 
25833
    {
 
25834
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_ZPASS, attribute, attributeValue))
 
25835
            {return false;}
 
25836
    }
 
25837
    }
 
25838
    }
 
25839
}
 
25840
 
 
25841
 
 
25842
    return true;
 
25843
}
 
25844
 
 
25845
//---------------------------------------------------------------------
 
25846
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__stencil_op__zpass()
 
25847
{
 
25848
#ifdef GENERATEDSAXPARSER_VALIDATION
 
25849
    if ( mValidate )
 
25850
    {
 
25851
 
 
25852
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__stencil_op__zpass();
 
25853
        if ( !validationResult ) return false;
 
25854
 
 
25855
    } // validation
 
25856
#endif
 
25857
 
 
25858
    return true;
 
25859
}
 
25860
 
 
25861
//---------------------------------------------------------------------
 
25862
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__stencil_op__zpass( void* attributeData )
 
25863
{
 
25864
    profile_GLES2__technique__pass__states__stencil_op__zpass__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__stencil_op__zpass__AttributeData*>(attributeData);
 
25865
 
 
25866
    typedAttributeData->~profile_GLES2__technique__pass__states__stencil_op__zpass__AttributeData();
 
25867
 
 
25868
    return true;
 
25869
}
 
25870
 
 
25871
//---------------------------------------------------------------------
 
25872
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__stencil_op_separate( const ParserChar* text, size_t textLength )
 
25873
{
 
25874
    return true;
 
25875
}
 
25876
 
 
25877
//---------------------------------------------------------------------
 
25878
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__stencil_op_separate( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
25879
{
 
25880
#ifdef GENERATEDSAXPARSER_VALIDATION
 
25881
    if ( mValidate )
 
25882
    {
 
25883
 
 
25884
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__stencil_op_separate( attributes, attributeDataPtr, validationDataPtr );
 
25885
        if ( !validationResult ) return false;
 
25886
 
 
25887
    } // validation
 
25888
#endif
 
25889
 
 
25890
    return true;
 
25891
}
 
25892
 
 
25893
//---------------------------------------------------------------------
 
25894
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__stencil_op_separate()
 
25895
{
 
25896
#ifdef GENERATEDSAXPARSER_VALIDATION
 
25897
    if ( mValidate )
 
25898
    {
 
25899
 
 
25900
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__stencil_op_separate();
 
25901
        if ( !validationResult ) return false;
 
25902
 
 
25903
    } // validation
 
25904
#endif
 
25905
 
 
25906
    return true;
 
25907
}
 
25908
 
 
25909
//---------------------------------------------------------------------
 
25910
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__stencil_op_separate( void* attributeData )
 
25911
{
 
25912
    return true;
 
25913
}
 
25914
 
 
25915
//---------------------------------------------------------------------
 
25916
const profile_GLES2__technique__pass__states__stencil_op_separate__face__AttributeData profile_GLES2__technique__pass__states__stencil_op_separate__face__AttributeData::DEFAULT = {ENUM__gl_face_enum__FRONT_AND_BACK, 0};
 
25917
 
 
25918
//---------------------------------------------------------------------
 
25919
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__stencil_op_separate__face( const ParserChar* text, size_t textLength )
 
25920
{
 
25921
    return true;
 
25922
}
 
25923
 
 
25924
//---------------------------------------------------------------------
 
25925
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__stencil_op_separate__face( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
25926
{
 
25927
#ifdef GENERATEDSAXPARSER_VALIDATION
 
25928
    if ( mValidate )
 
25929
    {
 
25930
 
 
25931
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__stencil_op_separate__face( attributes, attributeDataPtr, validationDataPtr );
 
25932
        if ( !validationResult ) return false;
 
25933
 
 
25934
    } // validation
 
25935
#endif
 
25936
 
 
25937
profile_GLES2__technique__pass__states__stencil_op_separate__face__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__stencil_op_separate__face__AttributeData>(attributeDataPtr);
 
25938
 
 
25939
const ParserChar** attributeArray = attributes.attributes;
 
25940
if ( attributeArray )
 
25941
{
 
25942
    while (true)
 
25943
    {
 
25944
        const ParserChar * attribute = *attributeArray;
 
25945
        if ( !attribute )
 
25946
            break;
 
25947
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
25948
        attributeArray++;
 
25949
        if ( !attributeArray )
 
25950
            return false;
 
25951
        const ParserChar* attributeValue = *attributeArray;
 
25952
        attributeArray++;
 
25953
 
 
25954
 
 
25955
    switch ( hash )
 
25956
    {
 
25957
    case HASH_ATTRIBUTE_VALUE:
 
25958
    {
 
25959
bool failed;
 
25960
attributeData->value = Utils::toEnum<ENUM__gl_face_enum, StringHash, ENUM__gl_face_enum__COUNT>(attributeValue, failed, ENUM__gl_face_enumMap, Utils::calculateStringHash);
 
25961
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
25962
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
25963
        HASH_ELEMENT_FACE,
 
25964
        HASH_ATTRIBUTE_VALUE,
 
25965
        attributeValue))
 
25966
{
 
25967
    return false;
 
25968
}
 
25969
 
 
25970
    break;
 
25971
    }
 
25972
    case HASH_ATTRIBUTE_PARAM:
 
25973
    {
 
25974
 
 
25975
attributeData->param = attributeValue;
 
25976
 
 
25977
    break;
 
25978
    }
 
25979
    default:
 
25980
    {
 
25981
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FACE, attribute, attributeValue))
 
25982
            {return false;}
 
25983
    }
 
25984
    }
 
25985
    }
 
25986
}
 
25987
 
 
25988
 
 
25989
    return true;
 
25990
}
 
25991
 
 
25992
//---------------------------------------------------------------------
 
25993
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__stencil_op_separate__face()
 
25994
{
 
25995
#ifdef GENERATEDSAXPARSER_VALIDATION
 
25996
    if ( mValidate )
 
25997
    {
 
25998
 
 
25999
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__stencil_op_separate__face();
 
26000
        if ( !validationResult ) return false;
 
26001
 
 
26002
    } // validation
 
26003
#endif
 
26004
 
 
26005
    return true;
 
26006
}
 
26007
 
 
26008
//---------------------------------------------------------------------
 
26009
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__stencil_op_separate__face( void* attributeData )
 
26010
{
 
26011
    profile_GLES2__technique__pass__states__stencil_op_separate__face__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__stencil_op_separate__face__AttributeData*>(attributeData);
 
26012
 
 
26013
    typedAttributeData->~profile_GLES2__technique__pass__states__stencil_op_separate__face__AttributeData();
 
26014
 
 
26015
    return true;
 
26016
}
 
26017
 
 
26018
//---------------------------------------------------------------------
 
26019
const profile_GLES2__technique__pass__states__stencil_op_separate__fail__AttributeData profile_GLES2__technique__pass__states__stencil_op_separate__fail__AttributeData::DEFAULT = {ENUM__gl_stencil_op_enum__KEEP, 0};
 
26020
 
 
26021
//---------------------------------------------------------------------
 
26022
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__stencil_op_separate__fail( const ParserChar* text, size_t textLength )
 
26023
{
 
26024
    return true;
 
26025
}
 
26026
 
 
26027
//---------------------------------------------------------------------
 
26028
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__stencil_op_separate__fail( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
26029
{
 
26030
#ifdef GENERATEDSAXPARSER_VALIDATION
 
26031
    if ( mValidate )
 
26032
    {
 
26033
 
 
26034
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__stencil_op_separate__fail( attributes, attributeDataPtr, validationDataPtr );
 
26035
        if ( !validationResult ) return false;
 
26036
 
 
26037
    } // validation
 
26038
#endif
 
26039
 
 
26040
profile_GLES2__technique__pass__states__stencil_op_separate__fail__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__stencil_op_separate__fail__AttributeData>(attributeDataPtr);
 
26041
 
 
26042
const ParserChar** attributeArray = attributes.attributes;
 
26043
if ( attributeArray )
 
26044
{
 
26045
    while (true)
 
26046
    {
 
26047
        const ParserChar * attribute = *attributeArray;
 
26048
        if ( !attribute )
 
26049
            break;
 
26050
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
26051
        attributeArray++;
 
26052
        if ( !attributeArray )
 
26053
            return false;
 
26054
        const ParserChar* attributeValue = *attributeArray;
 
26055
        attributeArray++;
 
26056
 
 
26057
 
 
26058
    switch ( hash )
 
26059
    {
 
26060
    case HASH_ATTRIBUTE_VALUE:
 
26061
    {
 
26062
bool failed;
 
26063
attributeData->value = Utils::toEnum<ENUM__gl_stencil_op_enum, StringHash, ENUM__gl_stencil_op_enum__COUNT>(attributeValue, failed, ENUM__gl_stencil_op_enumMap, Utils::calculateStringHash);
 
26064
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
26065
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
26066
        HASH_ELEMENT_FAIL,
 
26067
        HASH_ATTRIBUTE_VALUE,
 
26068
        attributeValue))
 
26069
{
 
26070
    return false;
 
26071
}
 
26072
 
 
26073
    break;
 
26074
    }
 
26075
    case HASH_ATTRIBUTE_PARAM:
 
26076
    {
 
26077
 
 
26078
attributeData->param = attributeValue;
 
26079
 
 
26080
    break;
 
26081
    }
 
26082
    default:
 
26083
    {
 
26084
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FAIL, attribute, attributeValue))
 
26085
            {return false;}
 
26086
    }
 
26087
    }
 
26088
    }
 
26089
}
 
26090
 
 
26091
 
 
26092
    return true;
 
26093
}
 
26094
 
 
26095
//---------------------------------------------------------------------
 
26096
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__stencil_op_separate__fail()
 
26097
{
 
26098
#ifdef GENERATEDSAXPARSER_VALIDATION
 
26099
    if ( mValidate )
 
26100
    {
 
26101
 
 
26102
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__stencil_op_separate__fail();
 
26103
        if ( !validationResult ) return false;
 
26104
 
 
26105
    } // validation
 
26106
#endif
 
26107
 
 
26108
    return true;
 
26109
}
 
26110
 
 
26111
//---------------------------------------------------------------------
 
26112
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__stencil_op_separate__fail( void* attributeData )
 
26113
{
 
26114
    profile_GLES2__technique__pass__states__stencil_op_separate__fail__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__stencil_op_separate__fail__AttributeData*>(attributeData);
 
26115
 
 
26116
    typedAttributeData->~profile_GLES2__technique__pass__states__stencil_op_separate__fail__AttributeData();
 
26117
 
 
26118
    return true;
 
26119
}
 
26120
 
 
26121
//---------------------------------------------------------------------
 
26122
const profile_GLES2__technique__pass__states__stencil_op_separate__zfail__AttributeData profile_GLES2__technique__pass__states__stencil_op_separate__zfail__AttributeData::DEFAULT = {ENUM__gl_stencil_op_enum__KEEP, 0};
 
26123
 
 
26124
//---------------------------------------------------------------------
 
26125
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__stencil_op_separate__zfail( const ParserChar* text, size_t textLength )
 
26126
{
 
26127
    return true;
 
26128
}
 
26129
 
 
26130
//---------------------------------------------------------------------
 
26131
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__stencil_op_separate__zfail( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
26132
{
 
26133
#ifdef GENERATEDSAXPARSER_VALIDATION
 
26134
    if ( mValidate )
 
26135
    {
 
26136
 
 
26137
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__stencil_op_separate__zfail( attributes, attributeDataPtr, validationDataPtr );
 
26138
        if ( !validationResult ) return false;
 
26139
 
 
26140
    } // validation
 
26141
#endif
 
26142
 
 
26143
profile_GLES2__technique__pass__states__stencil_op_separate__zfail__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__stencil_op_separate__zfail__AttributeData>(attributeDataPtr);
 
26144
 
 
26145
const ParserChar** attributeArray = attributes.attributes;
 
26146
if ( attributeArray )
 
26147
{
 
26148
    while (true)
 
26149
    {
 
26150
        const ParserChar * attribute = *attributeArray;
 
26151
        if ( !attribute )
 
26152
            break;
 
26153
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
26154
        attributeArray++;
 
26155
        if ( !attributeArray )
 
26156
            return false;
 
26157
        const ParserChar* attributeValue = *attributeArray;
 
26158
        attributeArray++;
 
26159
 
 
26160
 
 
26161
    switch ( hash )
 
26162
    {
 
26163
    case HASH_ATTRIBUTE_VALUE:
 
26164
    {
 
26165
bool failed;
 
26166
attributeData->value = Utils::toEnum<ENUM__gl_stencil_op_enum, StringHash, ENUM__gl_stencil_op_enum__COUNT>(attributeValue, failed, ENUM__gl_stencil_op_enumMap, Utils::calculateStringHash);
 
26167
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
26168
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
26169
        HASH_ELEMENT_ZFAIL,
 
26170
        HASH_ATTRIBUTE_VALUE,
 
26171
        attributeValue))
 
26172
{
 
26173
    return false;
 
26174
}
 
26175
 
 
26176
    break;
 
26177
    }
 
26178
    case HASH_ATTRIBUTE_PARAM:
 
26179
    {
 
26180
 
 
26181
attributeData->param = attributeValue;
 
26182
 
 
26183
    break;
 
26184
    }
 
26185
    default:
 
26186
    {
 
26187
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_ZFAIL, attribute, attributeValue))
 
26188
            {return false;}
 
26189
    }
 
26190
    }
 
26191
    }
 
26192
}
 
26193
 
 
26194
 
 
26195
    return true;
 
26196
}
 
26197
 
 
26198
//---------------------------------------------------------------------
 
26199
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__stencil_op_separate__zfail()
 
26200
{
 
26201
#ifdef GENERATEDSAXPARSER_VALIDATION
 
26202
    if ( mValidate )
 
26203
    {
 
26204
 
 
26205
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__stencil_op_separate__zfail();
 
26206
        if ( !validationResult ) return false;
 
26207
 
 
26208
    } // validation
 
26209
#endif
 
26210
 
 
26211
    return true;
 
26212
}
 
26213
 
 
26214
//---------------------------------------------------------------------
 
26215
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__stencil_op_separate__zfail( void* attributeData )
 
26216
{
 
26217
    profile_GLES2__technique__pass__states__stencil_op_separate__zfail__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__stencil_op_separate__zfail__AttributeData*>(attributeData);
 
26218
 
 
26219
    typedAttributeData->~profile_GLES2__technique__pass__states__stencil_op_separate__zfail__AttributeData();
 
26220
 
 
26221
    return true;
 
26222
}
 
26223
 
 
26224
//---------------------------------------------------------------------
 
26225
const profile_GLES2__technique__pass__states__stencil_op_separate__zpass__AttributeData profile_GLES2__technique__pass__states__stencil_op_separate__zpass__AttributeData::DEFAULT = {ENUM__gl_stencil_op_enum__KEEP, 0};
 
26226
 
 
26227
//---------------------------------------------------------------------
 
26228
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__stencil_op_separate__zpass( const ParserChar* text, size_t textLength )
 
26229
{
 
26230
    return true;
 
26231
}
 
26232
 
 
26233
//---------------------------------------------------------------------
 
26234
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__stencil_op_separate__zpass( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
26235
{
 
26236
#ifdef GENERATEDSAXPARSER_VALIDATION
 
26237
    if ( mValidate )
 
26238
    {
 
26239
 
 
26240
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__stencil_op_separate__zpass( attributes, attributeDataPtr, validationDataPtr );
 
26241
        if ( !validationResult ) return false;
 
26242
 
 
26243
    } // validation
 
26244
#endif
 
26245
 
 
26246
profile_GLES2__technique__pass__states__stencil_op_separate__zpass__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__stencil_op_separate__zpass__AttributeData>(attributeDataPtr);
 
26247
 
 
26248
const ParserChar** attributeArray = attributes.attributes;
 
26249
if ( attributeArray )
 
26250
{
 
26251
    while (true)
 
26252
    {
 
26253
        const ParserChar * attribute = *attributeArray;
 
26254
        if ( !attribute )
 
26255
            break;
 
26256
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
26257
        attributeArray++;
 
26258
        if ( !attributeArray )
 
26259
            return false;
 
26260
        const ParserChar* attributeValue = *attributeArray;
 
26261
        attributeArray++;
 
26262
 
 
26263
 
 
26264
    switch ( hash )
 
26265
    {
 
26266
    case HASH_ATTRIBUTE_VALUE:
 
26267
    {
 
26268
bool failed;
 
26269
attributeData->value = Utils::toEnum<ENUM__gl_stencil_op_enum, StringHash, ENUM__gl_stencil_op_enum__COUNT>(attributeValue, failed, ENUM__gl_stencil_op_enumMap, Utils::calculateStringHash);
 
26270
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
26271
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
26272
        HASH_ELEMENT_ZPASS,
 
26273
        HASH_ATTRIBUTE_VALUE,
 
26274
        attributeValue))
 
26275
{
 
26276
    return false;
 
26277
}
 
26278
 
 
26279
    break;
 
26280
    }
 
26281
    case HASH_ATTRIBUTE_PARAM:
 
26282
    {
 
26283
 
 
26284
attributeData->param = attributeValue;
 
26285
 
 
26286
    break;
 
26287
    }
 
26288
    default:
 
26289
    {
 
26290
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_ZPASS, attribute, attributeValue))
 
26291
            {return false;}
 
26292
    }
 
26293
    }
 
26294
    }
 
26295
}
 
26296
 
 
26297
 
 
26298
    return true;
 
26299
}
 
26300
 
 
26301
//---------------------------------------------------------------------
 
26302
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__stencil_op_separate__zpass()
 
26303
{
 
26304
#ifdef GENERATEDSAXPARSER_VALIDATION
 
26305
    if ( mValidate )
 
26306
    {
 
26307
 
 
26308
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__stencil_op_separate__zpass();
 
26309
        if ( !validationResult ) return false;
 
26310
 
 
26311
    } // validation
 
26312
#endif
 
26313
 
 
26314
    return true;
 
26315
}
 
26316
 
 
26317
//---------------------------------------------------------------------
 
26318
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__stencil_op_separate__zpass( void* attributeData )
 
26319
{
 
26320
    profile_GLES2__technique__pass__states__stencil_op_separate__zpass__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__stencil_op_separate__zpass__AttributeData*>(attributeData);
 
26321
 
 
26322
    typedAttributeData->~profile_GLES2__technique__pass__states__stencil_op_separate__zpass__AttributeData();
 
26323
 
 
26324
    return true;
 
26325
}
 
26326
 
 
26327
//---------------------------------------------------------------------
 
26328
const profile_GLES2__technique__pass__states__blend_enable__AttributeData profile_GLES2__technique__pass__states__blend_enable__AttributeData::DEFAULT = {false, 0};
 
26329
 
 
26330
//---------------------------------------------------------------------
 
26331
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__blend_enable( const ParserChar* text, size_t textLength )
 
26332
{
 
26333
    return true;
 
26334
}
 
26335
 
 
26336
//---------------------------------------------------------------------
 
26337
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__blend_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
26338
{
 
26339
#ifdef GENERATEDSAXPARSER_VALIDATION
 
26340
    if ( mValidate )
 
26341
    {
 
26342
 
 
26343
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__blend_enable( attributes, attributeDataPtr, validationDataPtr );
 
26344
        if ( !validationResult ) return false;
 
26345
 
 
26346
    } // validation
 
26347
#endif
 
26348
 
 
26349
profile_GLES2__technique__pass__states__blend_enable__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__blend_enable__AttributeData>(attributeDataPtr);
 
26350
 
 
26351
const ParserChar** attributeArray = attributes.attributes;
 
26352
if ( attributeArray )
 
26353
{
 
26354
    while (true)
 
26355
    {
 
26356
        const ParserChar * attribute = *attributeArray;
 
26357
        if ( !attribute )
 
26358
            break;
 
26359
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
26360
        attributeArray++;
 
26361
        if ( !attributeArray )
 
26362
            return false;
 
26363
        const ParserChar* attributeValue = *attributeArray;
 
26364
        attributeArray++;
 
26365
 
 
26366
 
 
26367
    switch ( hash )
 
26368
    {
 
26369
    case HASH_ATTRIBUTE_VALUE:
 
26370
    {
 
26371
bool failed;
 
26372
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
26373
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
26374
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
26375
        HASH_ELEMENT_BLEND_ENABLE,
 
26376
        HASH_ATTRIBUTE_VALUE,
 
26377
        attributeValue))
 
26378
{
 
26379
    return false;
 
26380
}
 
26381
 
 
26382
    break;
 
26383
    }
 
26384
    case HASH_ATTRIBUTE_PARAM:
 
26385
    {
 
26386
 
 
26387
attributeData->param = attributeValue;
 
26388
 
 
26389
    break;
 
26390
    }
 
26391
    default:
 
26392
    {
 
26393
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_BLEND_ENABLE, attribute, attributeValue))
 
26394
            {return false;}
 
26395
    }
 
26396
    }
 
26397
    }
 
26398
}
 
26399
 
 
26400
 
 
26401
    return true;
 
26402
}
 
26403
 
 
26404
//---------------------------------------------------------------------
 
26405
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__blend_enable()
 
26406
{
 
26407
#ifdef GENERATEDSAXPARSER_VALIDATION
 
26408
    if ( mValidate )
 
26409
    {
 
26410
 
 
26411
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__blend_enable();
 
26412
        if ( !validationResult ) return false;
 
26413
 
 
26414
    } // validation
 
26415
#endif
 
26416
 
 
26417
    return true;
 
26418
}
 
26419
 
 
26420
//---------------------------------------------------------------------
 
26421
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__blend_enable( void* attributeData )
 
26422
{
 
26423
    profile_GLES2__technique__pass__states__blend_enable__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__blend_enable__AttributeData*>(attributeData);
 
26424
 
 
26425
    typedAttributeData->~profile_GLES2__technique__pass__states__blend_enable__AttributeData();
 
26426
 
 
26427
    return true;
 
26428
}
 
26429
 
 
26430
//---------------------------------------------------------------------
 
26431
const profile_GLES2__technique__pass__states__cull_face_enable__AttributeData profile_GLES2__technique__pass__states__cull_face_enable__AttributeData::DEFAULT = {false, 0};
 
26432
 
 
26433
//---------------------------------------------------------------------
 
26434
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__cull_face_enable( const ParserChar* text, size_t textLength )
 
26435
{
 
26436
    return true;
 
26437
}
 
26438
 
 
26439
//---------------------------------------------------------------------
 
26440
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__cull_face_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
26441
{
 
26442
#ifdef GENERATEDSAXPARSER_VALIDATION
 
26443
    if ( mValidate )
 
26444
    {
 
26445
 
 
26446
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__cull_face_enable( attributes, attributeDataPtr, validationDataPtr );
 
26447
        if ( !validationResult ) return false;
 
26448
 
 
26449
    } // validation
 
26450
#endif
 
26451
 
 
26452
profile_GLES2__technique__pass__states__cull_face_enable__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__cull_face_enable__AttributeData>(attributeDataPtr);
 
26453
 
 
26454
const ParserChar** attributeArray = attributes.attributes;
 
26455
if ( attributeArray )
 
26456
{
 
26457
    while (true)
 
26458
    {
 
26459
        const ParserChar * attribute = *attributeArray;
 
26460
        if ( !attribute )
 
26461
            break;
 
26462
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
26463
        attributeArray++;
 
26464
        if ( !attributeArray )
 
26465
            return false;
 
26466
        const ParserChar* attributeValue = *attributeArray;
 
26467
        attributeArray++;
 
26468
 
 
26469
 
 
26470
    switch ( hash )
 
26471
    {
 
26472
    case HASH_ATTRIBUTE_VALUE:
 
26473
    {
 
26474
bool failed;
 
26475
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
26476
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
26477
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
26478
        HASH_ELEMENT_CULL_FACE_ENABLE,
 
26479
        HASH_ATTRIBUTE_VALUE,
 
26480
        attributeValue))
 
26481
{
 
26482
    return false;
 
26483
}
 
26484
 
 
26485
    break;
 
26486
    }
 
26487
    case HASH_ATTRIBUTE_PARAM:
 
26488
    {
 
26489
 
 
26490
attributeData->param = attributeValue;
 
26491
 
 
26492
    break;
 
26493
    }
 
26494
    default:
 
26495
    {
 
26496
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_CULL_FACE_ENABLE, attribute, attributeValue))
 
26497
            {return false;}
 
26498
    }
 
26499
    }
 
26500
    }
 
26501
}
 
26502
 
 
26503
 
 
26504
    return true;
 
26505
}
 
26506
 
 
26507
//---------------------------------------------------------------------
 
26508
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__cull_face_enable()
 
26509
{
 
26510
#ifdef GENERATEDSAXPARSER_VALIDATION
 
26511
    if ( mValidate )
 
26512
    {
 
26513
 
 
26514
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__cull_face_enable();
 
26515
        if ( !validationResult ) return false;
 
26516
 
 
26517
    } // validation
 
26518
#endif
 
26519
 
 
26520
    return true;
 
26521
}
 
26522
 
 
26523
//---------------------------------------------------------------------
 
26524
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__cull_face_enable( void* attributeData )
 
26525
{
 
26526
    profile_GLES2__technique__pass__states__cull_face_enable__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__cull_face_enable__AttributeData*>(attributeData);
 
26527
 
 
26528
    typedAttributeData->~profile_GLES2__technique__pass__states__cull_face_enable__AttributeData();
 
26529
 
 
26530
    return true;
 
26531
}
 
26532
 
 
26533
//---------------------------------------------------------------------
 
26534
const profile_GLES2__technique__pass__states__depth_test_enable__AttributeData profile_GLES2__technique__pass__states__depth_test_enable__AttributeData::DEFAULT = {false, 0};
 
26535
 
 
26536
//---------------------------------------------------------------------
 
26537
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__depth_test_enable( const ParserChar* text, size_t textLength )
 
26538
{
 
26539
    return true;
 
26540
}
 
26541
 
 
26542
//---------------------------------------------------------------------
 
26543
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__depth_test_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
26544
{
 
26545
#ifdef GENERATEDSAXPARSER_VALIDATION
 
26546
    if ( mValidate )
 
26547
    {
 
26548
 
 
26549
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__depth_test_enable( attributes, attributeDataPtr, validationDataPtr );
 
26550
        if ( !validationResult ) return false;
 
26551
 
 
26552
    } // validation
 
26553
#endif
 
26554
 
 
26555
profile_GLES2__technique__pass__states__depth_test_enable__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__depth_test_enable__AttributeData>(attributeDataPtr);
 
26556
 
 
26557
const ParserChar** attributeArray = attributes.attributes;
 
26558
if ( attributeArray )
 
26559
{
 
26560
    while (true)
 
26561
    {
 
26562
        const ParserChar * attribute = *attributeArray;
 
26563
        if ( !attribute )
 
26564
            break;
 
26565
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
26566
        attributeArray++;
 
26567
        if ( !attributeArray )
 
26568
            return false;
 
26569
        const ParserChar* attributeValue = *attributeArray;
 
26570
        attributeArray++;
 
26571
 
 
26572
 
 
26573
    switch ( hash )
 
26574
    {
 
26575
    case HASH_ATTRIBUTE_VALUE:
 
26576
    {
 
26577
bool failed;
 
26578
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
26579
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
26580
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
26581
        HASH_ELEMENT_DEPTH_TEST_ENABLE,
 
26582
        HASH_ATTRIBUTE_VALUE,
 
26583
        attributeValue))
 
26584
{
 
26585
    return false;
 
26586
}
 
26587
 
 
26588
    break;
 
26589
    }
 
26590
    case HASH_ATTRIBUTE_PARAM:
 
26591
    {
 
26592
 
 
26593
attributeData->param = attributeValue;
 
26594
 
 
26595
    break;
 
26596
    }
 
26597
    default:
 
26598
    {
 
26599
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_DEPTH_TEST_ENABLE, attribute, attributeValue))
 
26600
            {return false;}
 
26601
    }
 
26602
    }
 
26603
    }
 
26604
}
 
26605
 
 
26606
 
 
26607
    return true;
 
26608
}
 
26609
 
 
26610
//---------------------------------------------------------------------
 
26611
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__depth_test_enable()
 
26612
{
 
26613
#ifdef GENERATEDSAXPARSER_VALIDATION
 
26614
    if ( mValidate )
 
26615
    {
 
26616
 
 
26617
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__depth_test_enable();
 
26618
        if ( !validationResult ) return false;
 
26619
 
 
26620
    } // validation
 
26621
#endif
 
26622
 
 
26623
    return true;
 
26624
}
 
26625
 
 
26626
//---------------------------------------------------------------------
 
26627
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__depth_test_enable( void* attributeData )
 
26628
{
 
26629
    profile_GLES2__technique__pass__states__depth_test_enable__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__depth_test_enable__AttributeData*>(attributeData);
 
26630
 
 
26631
    typedAttributeData->~profile_GLES2__technique__pass__states__depth_test_enable__AttributeData();
 
26632
 
 
26633
    return true;
 
26634
}
 
26635
 
 
26636
//---------------------------------------------------------------------
 
26637
const profile_GLES2__technique__pass__states__dither_enable__AttributeData profile_GLES2__technique__pass__states__dither_enable__AttributeData::DEFAULT = {true, 0};
 
26638
 
 
26639
//---------------------------------------------------------------------
 
26640
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__dither_enable( const ParserChar* text, size_t textLength )
 
26641
{
 
26642
    return true;
 
26643
}
 
26644
 
 
26645
//---------------------------------------------------------------------
 
26646
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__dither_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
26647
{
 
26648
#ifdef GENERATEDSAXPARSER_VALIDATION
 
26649
    if ( mValidate )
 
26650
    {
 
26651
 
 
26652
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__dither_enable( attributes, attributeDataPtr, validationDataPtr );
 
26653
        if ( !validationResult ) return false;
 
26654
 
 
26655
    } // validation
 
26656
#endif
 
26657
 
 
26658
profile_GLES2__technique__pass__states__dither_enable__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__dither_enable__AttributeData>(attributeDataPtr);
 
26659
 
 
26660
const ParserChar** attributeArray = attributes.attributes;
 
26661
if ( attributeArray )
 
26662
{
 
26663
    while (true)
 
26664
    {
 
26665
        const ParserChar * attribute = *attributeArray;
 
26666
        if ( !attribute )
 
26667
            break;
 
26668
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
26669
        attributeArray++;
 
26670
        if ( !attributeArray )
 
26671
            return false;
 
26672
        const ParserChar* attributeValue = *attributeArray;
 
26673
        attributeArray++;
 
26674
 
 
26675
 
 
26676
    switch ( hash )
 
26677
    {
 
26678
    case HASH_ATTRIBUTE_VALUE:
 
26679
    {
 
26680
bool failed;
 
26681
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
26682
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
26683
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
26684
        HASH_ELEMENT_DITHER_ENABLE,
 
26685
        HASH_ATTRIBUTE_VALUE,
 
26686
        attributeValue))
 
26687
{
 
26688
    return false;
 
26689
}
 
26690
 
 
26691
    break;
 
26692
    }
 
26693
    case HASH_ATTRIBUTE_PARAM:
 
26694
    {
 
26695
 
 
26696
attributeData->param = attributeValue;
 
26697
 
 
26698
    break;
 
26699
    }
 
26700
    default:
 
26701
    {
 
26702
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_DITHER_ENABLE, attribute, attributeValue))
 
26703
            {return false;}
 
26704
    }
 
26705
    }
 
26706
    }
 
26707
}
 
26708
 
 
26709
 
 
26710
    return true;
 
26711
}
 
26712
 
 
26713
//---------------------------------------------------------------------
 
26714
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__dither_enable()
 
26715
{
 
26716
#ifdef GENERATEDSAXPARSER_VALIDATION
 
26717
    if ( mValidate )
 
26718
    {
 
26719
 
 
26720
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__dither_enable();
 
26721
        if ( !validationResult ) return false;
 
26722
 
 
26723
    } // validation
 
26724
#endif
 
26725
 
 
26726
    return true;
 
26727
}
 
26728
 
 
26729
//---------------------------------------------------------------------
 
26730
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__dither_enable( void* attributeData )
 
26731
{
 
26732
    profile_GLES2__technique__pass__states__dither_enable__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__dither_enable__AttributeData*>(attributeData);
 
26733
 
 
26734
    typedAttributeData->~profile_GLES2__technique__pass__states__dither_enable__AttributeData();
 
26735
 
 
26736
    return true;
 
26737
}
 
26738
 
 
26739
//---------------------------------------------------------------------
 
26740
const profile_GLES2__technique__pass__states__polygon_offset_fill_enable__AttributeData profile_GLES2__technique__pass__states__polygon_offset_fill_enable__AttributeData::DEFAULT = {false, 0};
 
26741
 
 
26742
//---------------------------------------------------------------------
 
26743
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__polygon_offset_fill_enable( const ParserChar* text, size_t textLength )
 
26744
{
 
26745
    return true;
 
26746
}
 
26747
 
 
26748
//---------------------------------------------------------------------
 
26749
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__polygon_offset_fill_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
26750
{
 
26751
#ifdef GENERATEDSAXPARSER_VALIDATION
 
26752
    if ( mValidate )
 
26753
    {
 
26754
 
 
26755
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__polygon_offset_fill_enable( attributes, attributeDataPtr, validationDataPtr );
 
26756
        if ( !validationResult ) return false;
 
26757
 
 
26758
    } // validation
 
26759
#endif
 
26760
 
 
26761
profile_GLES2__technique__pass__states__polygon_offset_fill_enable__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__polygon_offset_fill_enable__AttributeData>(attributeDataPtr);
 
26762
 
 
26763
const ParserChar** attributeArray = attributes.attributes;
 
26764
if ( attributeArray )
 
26765
{
 
26766
    while (true)
 
26767
    {
 
26768
        const ParserChar * attribute = *attributeArray;
 
26769
        if ( !attribute )
 
26770
            break;
 
26771
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
26772
        attributeArray++;
 
26773
        if ( !attributeArray )
 
26774
            return false;
 
26775
        const ParserChar* attributeValue = *attributeArray;
 
26776
        attributeArray++;
 
26777
 
 
26778
 
 
26779
    switch ( hash )
 
26780
    {
 
26781
    case HASH_ATTRIBUTE_VALUE:
 
26782
    {
 
26783
bool failed;
 
26784
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
26785
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
26786
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
26787
        HASH_ELEMENT_POLYGON_OFFSET_FILL_ENABLE,
 
26788
        HASH_ATTRIBUTE_VALUE,
 
26789
        attributeValue))
 
26790
{
 
26791
    return false;
 
26792
}
 
26793
 
 
26794
    break;
 
26795
    }
 
26796
    case HASH_ATTRIBUTE_PARAM:
 
26797
    {
 
26798
 
 
26799
attributeData->param = attributeValue;
 
26800
 
 
26801
    break;
 
26802
    }
 
26803
    default:
 
26804
    {
 
26805
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_POLYGON_OFFSET_FILL_ENABLE, attribute, attributeValue))
 
26806
            {return false;}
 
26807
    }
 
26808
    }
 
26809
    }
 
26810
}
 
26811
 
 
26812
 
 
26813
    return true;
 
26814
}
 
26815
 
 
26816
//---------------------------------------------------------------------
 
26817
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__polygon_offset_fill_enable()
 
26818
{
 
26819
#ifdef GENERATEDSAXPARSER_VALIDATION
 
26820
    if ( mValidate )
 
26821
    {
 
26822
 
 
26823
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__polygon_offset_fill_enable();
 
26824
        if ( !validationResult ) return false;
 
26825
 
 
26826
    } // validation
 
26827
#endif
 
26828
 
 
26829
    return true;
 
26830
}
 
26831
 
 
26832
//---------------------------------------------------------------------
 
26833
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__polygon_offset_fill_enable( void* attributeData )
 
26834
{
 
26835
    profile_GLES2__technique__pass__states__polygon_offset_fill_enable__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__polygon_offset_fill_enable__AttributeData*>(attributeData);
 
26836
 
 
26837
    typedAttributeData->~profile_GLES2__technique__pass__states__polygon_offset_fill_enable__AttributeData();
 
26838
 
 
26839
    return true;
 
26840
}
 
26841
 
 
26842
//---------------------------------------------------------------------
 
26843
const point_size_enable__AttributeData point_size_enable__AttributeData::DEFAULT = {false, 0};
 
26844
 
 
26845
//---------------------------------------------------------------------
 
26846
bool ColladaParserAutoGen15Private::_data__point_size_enable( const ParserChar* text, size_t textLength )
 
26847
{
 
26848
    return true;
 
26849
}
 
26850
 
 
26851
//---------------------------------------------------------------------
 
26852
bool ColladaParserAutoGen15Private::_preBegin__point_size_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
26853
{
 
26854
#ifdef GENERATEDSAXPARSER_VALIDATION
 
26855
    if ( mValidate )
 
26856
    {
 
26857
 
 
26858
        bool validationResult = _validateBegin__point_size_enable( attributes, attributeDataPtr, validationDataPtr );
 
26859
        if ( !validationResult ) return false;
 
26860
 
 
26861
    } // validation
 
26862
#endif
 
26863
 
 
26864
point_size_enable__AttributeData* attributeData = newData<point_size_enable__AttributeData>(attributeDataPtr);
 
26865
 
 
26866
const ParserChar** attributeArray = attributes.attributes;
 
26867
if ( attributeArray )
 
26868
{
 
26869
    while (true)
 
26870
    {
 
26871
        const ParserChar * attribute = *attributeArray;
 
26872
        if ( !attribute )
 
26873
            break;
 
26874
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
26875
        attributeArray++;
 
26876
        if ( !attributeArray )
 
26877
            return false;
 
26878
        const ParserChar* attributeValue = *attributeArray;
 
26879
        attributeArray++;
 
26880
 
 
26881
 
 
26882
    switch ( hash )
 
26883
    {
 
26884
    case HASH_ATTRIBUTE_VALUE:
 
26885
    {
 
26886
bool failed;
 
26887
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
26888
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
26889
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
26890
        HASH_ELEMENT_POINT_SIZE_ENABLE,
 
26891
        HASH_ATTRIBUTE_VALUE,
 
26892
        attributeValue))
 
26893
{
 
26894
    return false;
 
26895
}
 
26896
 
 
26897
    break;
 
26898
    }
 
26899
    case HASH_ATTRIBUTE_PARAM:
 
26900
    {
 
26901
 
 
26902
attributeData->param = attributeValue;
 
26903
 
 
26904
    break;
 
26905
    }
 
26906
    default:
 
26907
    {
 
26908
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_POINT_SIZE_ENABLE, attribute, attributeValue))
 
26909
            {return false;}
 
26910
    }
 
26911
    }
 
26912
    }
 
26913
}
 
26914
 
 
26915
 
 
26916
    return true;
 
26917
}
 
26918
 
 
26919
//---------------------------------------------------------------------
 
26920
bool ColladaParserAutoGen15Private::_preEnd__point_size_enable()
 
26921
{
 
26922
#ifdef GENERATEDSAXPARSER_VALIDATION
 
26923
    if ( mValidate )
 
26924
    {
 
26925
 
 
26926
        bool validationResult = _validateEnd__point_size_enable();
 
26927
        if ( !validationResult ) return false;
 
26928
 
 
26929
    } // validation
 
26930
#endif
 
26931
 
 
26932
    return true;
 
26933
}
 
26934
 
 
26935
//---------------------------------------------------------------------
 
26936
bool ColladaParserAutoGen15Private::_freeAttributes__point_size_enable( void* attributeData )
 
26937
{
 
26938
    point_size_enable__AttributeData* typedAttributeData = static_cast<point_size_enable__AttributeData*>(attributeData);
 
26939
 
 
26940
    typedAttributeData->~point_size_enable__AttributeData();
 
26941
 
 
26942
    return true;
 
26943
}
 
26944
 
 
26945
//---------------------------------------------------------------------
 
26946
const profile_GLES2__technique__pass__states__sample_alpha_to_coverage_enable__AttributeData profile_GLES2__technique__pass__states__sample_alpha_to_coverage_enable__AttributeData::DEFAULT = {false, 0};
 
26947
 
 
26948
//---------------------------------------------------------------------
 
26949
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__sample_alpha_to_coverage_enable( const ParserChar* text, size_t textLength )
 
26950
{
 
26951
    return true;
 
26952
}
 
26953
 
 
26954
//---------------------------------------------------------------------
 
26955
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__sample_alpha_to_coverage_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
26956
{
 
26957
#ifdef GENERATEDSAXPARSER_VALIDATION
 
26958
    if ( mValidate )
 
26959
    {
 
26960
 
 
26961
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__sample_alpha_to_coverage_enable( attributes, attributeDataPtr, validationDataPtr );
 
26962
        if ( !validationResult ) return false;
 
26963
 
 
26964
    } // validation
 
26965
#endif
 
26966
 
 
26967
profile_GLES2__technique__pass__states__sample_alpha_to_coverage_enable__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__sample_alpha_to_coverage_enable__AttributeData>(attributeDataPtr);
 
26968
 
 
26969
const ParserChar** attributeArray = attributes.attributes;
 
26970
if ( attributeArray )
 
26971
{
 
26972
    while (true)
 
26973
    {
 
26974
        const ParserChar * attribute = *attributeArray;
 
26975
        if ( !attribute )
 
26976
            break;
 
26977
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
26978
        attributeArray++;
 
26979
        if ( !attributeArray )
 
26980
            return false;
 
26981
        const ParserChar* attributeValue = *attributeArray;
 
26982
        attributeArray++;
 
26983
 
 
26984
 
 
26985
    switch ( hash )
 
26986
    {
 
26987
    case HASH_ATTRIBUTE_VALUE:
 
26988
    {
 
26989
bool failed;
 
26990
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
26991
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
26992
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
26993
        HASH_ELEMENT_SAMPLE_ALPHA_TO_COVERAGE_ENABLE,
 
26994
        HASH_ATTRIBUTE_VALUE,
 
26995
        attributeValue))
 
26996
{
 
26997
    return false;
 
26998
}
 
26999
 
 
27000
    break;
 
27001
    }
 
27002
    case HASH_ATTRIBUTE_PARAM:
 
27003
    {
 
27004
 
 
27005
attributeData->param = attributeValue;
 
27006
 
 
27007
    break;
 
27008
    }
 
27009
    default:
 
27010
    {
 
27011
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SAMPLE_ALPHA_TO_COVERAGE_ENABLE, attribute, attributeValue))
 
27012
            {return false;}
 
27013
    }
 
27014
    }
 
27015
    }
 
27016
}
 
27017
 
 
27018
 
 
27019
    return true;
 
27020
}
 
27021
 
 
27022
//---------------------------------------------------------------------
 
27023
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__sample_alpha_to_coverage_enable()
 
27024
{
 
27025
#ifdef GENERATEDSAXPARSER_VALIDATION
 
27026
    if ( mValidate )
 
27027
    {
 
27028
 
 
27029
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__sample_alpha_to_coverage_enable();
 
27030
        if ( !validationResult ) return false;
 
27031
 
 
27032
    } // validation
 
27033
#endif
 
27034
 
 
27035
    return true;
 
27036
}
 
27037
 
 
27038
//---------------------------------------------------------------------
 
27039
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__sample_alpha_to_coverage_enable( void* attributeData )
 
27040
{
 
27041
    profile_GLES2__technique__pass__states__sample_alpha_to_coverage_enable__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__sample_alpha_to_coverage_enable__AttributeData*>(attributeData);
 
27042
 
 
27043
    typedAttributeData->~profile_GLES2__technique__pass__states__sample_alpha_to_coverage_enable__AttributeData();
 
27044
 
 
27045
    return true;
 
27046
}
 
27047
 
 
27048
//---------------------------------------------------------------------
 
27049
const profile_GLES2__technique__pass__states__sample_coverage_enable__AttributeData profile_GLES2__technique__pass__states__sample_coverage_enable__AttributeData::DEFAULT = {false, 0};
 
27050
 
 
27051
//---------------------------------------------------------------------
 
27052
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__sample_coverage_enable( const ParserChar* text, size_t textLength )
 
27053
{
 
27054
    return true;
 
27055
}
 
27056
 
 
27057
//---------------------------------------------------------------------
 
27058
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__sample_coverage_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
27059
{
 
27060
#ifdef GENERATEDSAXPARSER_VALIDATION
 
27061
    if ( mValidate )
 
27062
    {
 
27063
 
 
27064
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__sample_coverage_enable( attributes, attributeDataPtr, validationDataPtr );
 
27065
        if ( !validationResult ) return false;
 
27066
 
 
27067
    } // validation
 
27068
#endif
 
27069
 
 
27070
profile_GLES2__technique__pass__states__sample_coverage_enable__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__sample_coverage_enable__AttributeData>(attributeDataPtr);
 
27071
 
 
27072
const ParserChar** attributeArray = attributes.attributes;
 
27073
if ( attributeArray )
 
27074
{
 
27075
    while (true)
 
27076
    {
 
27077
        const ParserChar * attribute = *attributeArray;
 
27078
        if ( !attribute )
 
27079
            break;
 
27080
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
27081
        attributeArray++;
 
27082
        if ( !attributeArray )
 
27083
            return false;
 
27084
        const ParserChar* attributeValue = *attributeArray;
 
27085
        attributeArray++;
 
27086
 
 
27087
 
 
27088
    switch ( hash )
 
27089
    {
 
27090
    case HASH_ATTRIBUTE_VALUE:
 
27091
    {
 
27092
bool failed;
 
27093
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
27094
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
27095
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
27096
        HASH_ELEMENT_SAMPLE_COVERAGE_ENABLE,
 
27097
        HASH_ATTRIBUTE_VALUE,
 
27098
        attributeValue))
 
27099
{
 
27100
    return false;
 
27101
}
 
27102
 
 
27103
    break;
 
27104
    }
 
27105
    case HASH_ATTRIBUTE_PARAM:
 
27106
    {
 
27107
 
 
27108
attributeData->param = attributeValue;
 
27109
 
 
27110
    break;
 
27111
    }
 
27112
    default:
 
27113
    {
 
27114
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SAMPLE_COVERAGE_ENABLE, attribute, attributeValue))
 
27115
            {return false;}
 
27116
    }
 
27117
    }
 
27118
    }
 
27119
}
 
27120
 
 
27121
 
 
27122
    return true;
 
27123
}
 
27124
 
 
27125
//---------------------------------------------------------------------
 
27126
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__sample_coverage_enable()
 
27127
{
 
27128
#ifdef GENERATEDSAXPARSER_VALIDATION
 
27129
    if ( mValidate )
 
27130
    {
 
27131
 
 
27132
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__sample_coverage_enable();
 
27133
        if ( !validationResult ) return false;
 
27134
 
 
27135
    } // validation
 
27136
#endif
 
27137
 
 
27138
    return true;
 
27139
}
 
27140
 
 
27141
//---------------------------------------------------------------------
 
27142
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__sample_coverage_enable( void* attributeData )
 
27143
{
 
27144
    profile_GLES2__technique__pass__states__sample_coverage_enable__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__sample_coverage_enable__AttributeData*>(attributeData);
 
27145
 
 
27146
    typedAttributeData->~profile_GLES2__technique__pass__states__sample_coverage_enable__AttributeData();
 
27147
 
 
27148
    return true;
 
27149
}
 
27150
 
 
27151
//---------------------------------------------------------------------
 
27152
const profile_GLES2__technique__pass__states__scissor_test_enable__AttributeData profile_GLES2__technique__pass__states__scissor_test_enable__AttributeData::DEFAULT = {false, 0};
 
27153
 
 
27154
//---------------------------------------------------------------------
 
27155
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__scissor_test_enable( const ParserChar* text, size_t textLength )
 
27156
{
 
27157
    return true;
 
27158
}
 
27159
 
 
27160
//---------------------------------------------------------------------
 
27161
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__scissor_test_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
27162
{
 
27163
#ifdef GENERATEDSAXPARSER_VALIDATION
 
27164
    if ( mValidate )
 
27165
    {
 
27166
 
 
27167
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__scissor_test_enable( attributes, attributeDataPtr, validationDataPtr );
 
27168
        if ( !validationResult ) return false;
 
27169
 
 
27170
    } // validation
 
27171
#endif
 
27172
 
 
27173
profile_GLES2__technique__pass__states__scissor_test_enable__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__scissor_test_enable__AttributeData>(attributeDataPtr);
 
27174
 
 
27175
const ParserChar** attributeArray = attributes.attributes;
 
27176
if ( attributeArray )
 
27177
{
 
27178
    while (true)
 
27179
    {
 
27180
        const ParserChar * attribute = *attributeArray;
 
27181
        if ( !attribute )
 
27182
            break;
 
27183
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
27184
        attributeArray++;
 
27185
        if ( !attributeArray )
 
27186
            return false;
 
27187
        const ParserChar* attributeValue = *attributeArray;
 
27188
        attributeArray++;
 
27189
 
 
27190
 
 
27191
    switch ( hash )
 
27192
    {
 
27193
    case HASH_ATTRIBUTE_VALUE:
 
27194
    {
 
27195
bool failed;
 
27196
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
27197
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
27198
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
27199
        HASH_ELEMENT_SCISSOR_TEST_ENABLE,
 
27200
        HASH_ATTRIBUTE_VALUE,
 
27201
        attributeValue))
 
27202
{
 
27203
    return false;
 
27204
}
 
27205
 
 
27206
    break;
 
27207
    }
 
27208
    case HASH_ATTRIBUTE_PARAM:
 
27209
    {
 
27210
 
 
27211
attributeData->param = attributeValue;
 
27212
 
 
27213
    break;
 
27214
    }
 
27215
    default:
 
27216
    {
 
27217
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SCISSOR_TEST_ENABLE, attribute, attributeValue))
 
27218
            {return false;}
 
27219
    }
 
27220
    }
 
27221
    }
 
27222
}
 
27223
 
 
27224
 
 
27225
    return true;
 
27226
}
 
27227
 
 
27228
//---------------------------------------------------------------------
 
27229
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__scissor_test_enable()
 
27230
{
 
27231
#ifdef GENERATEDSAXPARSER_VALIDATION
 
27232
    if ( mValidate )
 
27233
    {
 
27234
 
 
27235
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__scissor_test_enable();
 
27236
        if ( !validationResult ) return false;
 
27237
 
 
27238
    } // validation
 
27239
#endif
 
27240
 
 
27241
    return true;
 
27242
}
 
27243
 
 
27244
//---------------------------------------------------------------------
 
27245
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__scissor_test_enable( void* attributeData )
 
27246
{
 
27247
    profile_GLES2__technique__pass__states__scissor_test_enable__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__scissor_test_enable__AttributeData*>(attributeData);
 
27248
 
 
27249
    typedAttributeData->~profile_GLES2__technique__pass__states__scissor_test_enable__AttributeData();
 
27250
 
 
27251
    return true;
 
27252
}
 
27253
 
 
27254
//---------------------------------------------------------------------
 
27255
const profile_GLES2__technique__pass__states__stencil_test_enable__AttributeData profile_GLES2__technique__pass__states__stencil_test_enable__AttributeData::DEFAULT = {false, 0};
 
27256
 
 
27257
//---------------------------------------------------------------------
 
27258
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__states__stencil_test_enable( const ParserChar* text, size_t textLength )
 
27259
{
 
27260
    return true;
 
27261
}
 
27262
 
 
27263
//---------------------------------------------------------------------
 
27264
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__states__stencil_test_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
27265
{
 
27266
#ifdef GENERATEDSAXPARSER_VALIDATION
 
27267
    if ( mValidate )
 
27268
    {
 
27269
 
 
27270
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__states__stencil_test_enable( attributes, attributeDataPtr, validationDataPtr );
 
27271
        if ( !validationResult ) return false;
 
27272
 
 
27273
    } // validation
 
27274
#endif
 
27275
 
 
27276
profile_GLES2__technique__pass__states__stencil_test_enable__AttributeData* attributeData = newData<profile_GLES2__technique__pass__states__stencil_test_enable__AttributeData>(attributeDataPtr);
 
27277
 
 
27278
const ParserChar** attributeArray = attributes.attributes;
 
27279
if ( attributeArray )
 
27280
{
 
27281
    while (true)
 
27282
    {
 
27283
        const ParserChar * attribute = *attributeArray;
 
27284
        if ( !attribute )
 
27285
            break;
 
27286
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
27287
        attributeArray++;
 
27288
        if ( !attributeArray )
 
27289
            return false;
 
27290
        const ParserChar* attributeValue = *attributeArray;
 
27291
        attributeArray++;
 
27292
 
 
27293
 
 
27294
    switch ( hash )
 
27295
    {
 
27296
    case HASH_ATTRIBUTE_VALUE:
 
27297
    {
 
27298
bool failed;
 
27299
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
27300
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
27301
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
27302
        HASH_ELEMENT_STENCIL_TEST_ENABLE,
 
27303
        HASH_ATTRIBUTE_VALUE,
 
27304
        attributeValue))
 
27305
{
 
27306
    return false;
 
27307
}
 
27308
 
 
27309
    break;
 
27310
    }
 
27311
    case HASH_ATTRIBUTE_PARAM:
 
27312
    {
 
27313
 
 
27314
attributeData->param = attributeValue;
 
27315
 
 
27316
    break;
 
27317
    }
 
27318
    default:
 
27319
    {
 
27320
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_STENCIL_TEST_ENABLE, attribute, attributeValue))
 
27321
            {return false;}
 
27322
    }
 
27323
    }
 
27324
    }
 
27325
}
 
27326
 
 
27327
 
 
27328
    return true;
 
27329
}
 
27330
 
 
27331
//---------------------------------------------------------------------
 
27332
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__states__stencil_test_enable()
 
27333
{
 
27334
#ifdef GENERATEDSAXPARSER_VALIDATION
 
27335
    if ( mValidate )
 
27336
    {
 
27337
 
 
27338
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__states__stencil_test_enable();
 
27339
        if ( !validationResult ) return false;
 
27340
 
 
27341
    } // validation
 
27342
#endif
 
27343
 
 
27344
    return true;
 
27345
}
 
27346
 
 
27347
//---------------------------------------------------------------------
 
27348
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__states__stencil_test_enable( void* attributeData )
 
27349
{
 
27350
    profile_GLES2__technique__pass__states__stencil_test_enable__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__states__stencil_test_enable__AttributeData*>(attributeData);
 
27351
 
 
27352
    typedAttributeData->~profile_GLES2__technique__pass__states__stencil_test_enable__AttributeData();
 
27353
 
 
27354
    return true;
 
27355
}
 
27356
 
 
27357
//---------------------------------------------------------------------
 
27358
bool ColladaParserAutoGen15Private::_data__program____gles2_program_type( const ParserChar* text, size_t textLength )
 
27359
{
 
27360
    return true;
 
27361
}
 
27362
 
 
27363
//---------------------------------------------------------------------
 
27364
bool ColladaParserAutoGen15Private::_preBegin__program____gles2_program_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
27365
{
 
27366
#ifdef GENERATEDSAXPARSER_VALIDATION
 
27367
    if ( mValidate )
 
27368
    {
 
27369
 
 
27370
        bool validationResult = _validateBegin__program____gles2_program_type( attributes, attributeDataPtr, validationDataPtr );
 
27371
        if ( !validationResult ) return false;
 
27372
 
 
27373
    } // validation
 
27374
#endif
 
27375
 
 
27376
    return true;
 
27377
}
 
27378
 
 
27379
//---------------------------------------------------------------------
 
27380
bool ColladaParserAutoGen15Private::_preEnd__program____gles2_program_type()
 
27381
{
 
27382
#ifdef GENERATEDSAXPARSER_VALIDATION
 
27383
    if ( mValidate )
 
27384
    {
 
27385
 
 
27386
        bool validationResult = _validateEnd__program____gles2_program_type();
 
27387
        if ( !validationResult ) return false;
 
27388
 
 
27389
    } // validation
 
27390
#endif
 
27391
 
 
27392
    return true;
 
27393
}
 
27394
 
 
27395
//---------------------------------------------------------------------
 
27396
bool ColladaParserAutoGen15Private::_freeAttributes__program____gles2_program_type( void* attributeData )
 
27397
{
 
27398
    return true;
 
27399
}
 
27400
 
 
27401
//---------------------------------------------------------------------
 
27402
const shader____gles2_shader_type__AttributeData shader____gles2_shader_type__AttributeData::DEFAULT = {ENUM__fx_pipeline_stage_enum__NOT_PRESENT};
 
27403
 
 
27404
//---------------------------------------------------------------------
 
27405
bool ColladaParserAutoGen15Private::_data__shader____gles2_shader_type( const ParserChar* text, size_t textLength )
 
27406
{
 
27407
    return true;
 
27408
}
 
27409
 
 
27410
//---------------------------------------------------------------------
 
27411
bool ColladaParserAutoGen15Private::_preBegin__shader____gles2_shader_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
27412
{
 
27413
#ifdef GENERATEDSAXPARSER_VALIDATION
 
27414
    if ( mValidate )
 
27415
    {
 
27416
 
 
27417
        bool validationResult = _validateBegin__shader____gles2_shader_type( attributes, attributeDataPtr, validationDataPtr );
 
27418
        if ( !validationResult ) return false;
 
27419
 
 
27420
    } // validation
 
27421
#endif
 
27422
 
 
27423
shader____gles2_shader_type__AttributeData* attributeData = newData<shader____gles2_shader_type__AttributeData>(attributeDataPtr);
 
27424
 
 
27425
const ParserChar** attributeArray = attributes.attributes;
 
27426
if ( attributeArray )
 
27427
{
 
27428
    while (true)
 
27429
    {
 
27430
        const ParserChar * attribute = *attributeArray;
 
27431
        if ( !attribute )
 
27432
            break;
 
27433
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
27434
        attributeArray++;
 
27435
        if ( !attributeArray )
 
27436
            return false;
 
27437
        const ParserChar* attributeValue = *attributeArray;
 
27438
        attributeArray++;
 
27439
 
 
27440
 
 
27441
    switch ( hash )
 
27442
    {
 
27443
    case HASH_ATTRIBUTE_STAGE:
 
27444
    {
 
27445
bool failed;
 
27446
attributeData->stage = Utils::toEnum<ENUM__fx_pipeline_stage_enum, StringHash, ENUM__fx_pipeline_stage_enum__COUNT>(attributeValue, failed, ENUM__fx_pipeline_stage_enumMap, Utils::calculateStringHash);
 
27447
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
27448
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
27449
        HASH_ELEMENT_SHADER,
 
27450
        HASH_ATTRIBUTE_STAGE,
 
27451
        attributeValue))
 
27452
{
 
27453
    return false;
 
27454
}
 
27455
 
 
27456
    break;
 
27457
    }
 
27458
    default:
 
27459
    {
 
27460
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SHADER, attribute, attributeValue))
 
27461
            {return false;}
 
27462
    }
 
27463
    }
 
27464
    }
 
27465
}
 
27466
if ( attributeData->stage == ENUM__fx_pipeline_stage_enum__NOT_PRESENT )
 
27467
{
 
27468
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_SHADER, HASH_ATTRIBUTE_STAGE, 0 ) )
 
27469
        return false;
 
27470
}
 
27471
 
 
27472
 
 
27473
    return true;
 
27474
}
 
27475
 
 
27476
//---------------------------------------------------------------------
 
27477
bool ColladaParserAutoGen15Private::_preEnd__shader____gles2_shader_type()
 
27478
{
 
27479
#ifdef GENERATEDSAXPARSER_VALIDATION
 
27480
    if ( mValidate )
 
27481
    {
 
27482
 
 
27483
        bool validationResult = _validateEnd__shader____gles2_shader_type();
 
27484
        if ( !validationResult ) return false;
 
27485
 
 
27486
    } // validation
 
27487
#endif
 
27488
 
 
27489
    return true;
 
27490
}
 
27491
 
 
27492
//---------------------------------------------------------------------
 
27493
bool ColladaParserAutoGen15Private::_freeAttributes__shader____gles2_shader_type( void* attributeData )
 
27494
{
 
27495
    shader____gles2_shader_type__AttributeData* typedAttributeData = static_cast<shader____gles2_shader_type__AttributeData*>(attributeData);
 
27496
 
 
27497
    typedAttributeData->~shader____gles2_shader_type__AttributeData();
 
27498
 
 
27499
    return true;
 
27500
}
 
27501
 
 
27502
//---------------------------------------------------------------------
 
27503
ENUM__fx_pipeline_stage_enum ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__fx_pipeline_stage_enum (
 
27504
    const ParserChar* prefixedBuffer,
 
27505
    const ParserChar* prefixedBufferEnd,
 
27506
    const ParserChar** buffer,
 
27507
    const ParserChar* bufferEnd,
 
27508
    bool& failed,
 
27509
    const std::pair<StringHash, ENUM__fx_pipeline_stage_enum>* enumMap,
 
27510
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
27511
)
 
27512
{
 
27513
    return toEnumDataPrefix<ENUM__fx_pipeline_stage_enum, StringHash, ENUM__fx_pipeline_stage_enum__COUNT, &toEnum_ENUM__fx_pipeline_stage_enum>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
27514
}
 
27515
 
 
27516
//---------------------------------------------------------------------
 
27517
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__fx_pipeline_stage_enum (
 
27518
    const ParserChar* text,
 
27519
    size_t textLength,
 
27520
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__fx_pipeline_stage_enum*, size_t ),
 
27521
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
27522
)
 
27523
{
 
27524
    return characterData2EnumData<ENUM__fx_pipeline_stage_enum, StringHash, ENUM__fx_pipeline_stage_enum__COUNT>(text, textLength, dataFunction, ENUM__fx_pipeline_stage_enumMap, baseConversionFunc, &toEnum_ENUM__fx_pipeline_stage_enum, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__fx_pipeline_stage_enum);
 
27525
}
 
27526
 
 
27527
//---------------------------------------------------------------------
 
27528
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__fx_pipeline_stage_enum (
 
27529
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__fx_pipeline_stage_enum*, size_t ),
 
27530
    const std::pair<StringHash, ENUM__fx_pipeline_stage_enum>* enumMap,
 
27531
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
27532
    ENUM__fx_pipeline_stage_enum (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__fx_pipeline_stage_enum>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
27533
)
 
27534
{
 
27535
    return dataEnumEnd<ENUM__fx_pipeline_stage_enum, StringHash, ENUM__fx_pipeline_stage_enum__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
27536
}
 
27537
 
 
27538
//---------------------------------------------------------------------
 
27539
const gles2_shader_type____sources__AttributeData gles2_shader_type____sources__AttributeData::DEFAULT = {(const ParserChar*)"main"};
 
27540
 
 
27541
//---------------------------------------------------------------------
 
27542
bool ColladaParserAutoGen15Private::_data__gles2_shader_type____sources( const ParserChar* text, size_t textLength )
 
27543
{
 
27544
    return true;
 
27545
}
 
27546
 
 
27547
//---------------------------------------------------------------------
 
27548
bool ColladaParserAutoGen15Private::_preBegin__gles2_shader_type____sources( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
27549
{
 
27550
#ifdef GENERATEDSAXPARSER_VALIDATION
 
27551
    if ( mValidate )
 
27552
    {
 
27553
 
 
27554
        bool validationResult = _validateBegin__gles2_shader_type____sources( attributes, attributeDataPtr, validationDataPtr );
 
27555
        if ( !validationResult ) return false;
 
27556
 
 
27557
    } // validation
 
27558
#endif
 
27559
 
 
27560
gles2_shader_type____sources__AttributeData* attributeData = newData<gles2_shader_type____sources__AttributeData>(attributeDataPtr);
 
27561
 
 
27562
const ParserChar** attributeArray = attributes.attributes;
 
27563
if ( attributeArray )
 
27564
{
 
27565
    while (true)
 
27566
    {
 
27567
        const ParserChar * attribute = *attributeArray;
 
27568
        if ( !attribute )
 
27569
            break;
 
27570
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
27571
        attributeArray++;
 
27572
        if ( !attributeArray )
 
27573
            return false;
 
27574
        const ParserChar* attributeValue = *attributeArray;
 
27575
        attributeArray++;
 
27576
 
 
27577
 
 
27578
    switch ( hash )
 
27579
    {
 
27580
    case HASH_ATTRIBUTE_ENTRY:
 
27581
    {
 
27582
 
 
27583
attributeData->entry = attributeValue;
 
27584
 
 
27585
    break;
 
27586
    }
 
27587
    default:
 
27588
    {
 
27589
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SOURCES, attribute, attributeValue))
 
27590
            {return false;}
 
27591
    }
 
27592
    }
 
27593
    }
 
27594
}
 
27595
 
 
27596
 
 
27597
    return true;
 
27598
}
 
27599
 
 
27600
//---------------------------------------------------------------------
 
27601
bool ColladaParserAutoGen15Private::_preEnd__gles2_shader_type____sources()
 
27602
{
 
27603
#ifdef GENERATEDSAXPARSER_VALIDATION
 
27604
    if ( mValidate )
 
27605
    {
 
27606
 
 
27607
        bool validationResult = _validateEnd__gles2_shader_type____sources();
 
27608
        if ( !validationResult ) return false;
 
27609
 
 
27610
    } // validation
 
27611
#endif
 
27612
 
 
27613
    return true;
 
27614
}
 
27615
 
 
27616
//---------------------------------------------------------------------
 
27617
bool ColladaParserAutoGen15Private::_freeAttributes__gles2_shader_type____sources( void* attributeData )
 
27618
{
 
27619
    gles2_shader_type____sources__AttributeData* typedAttributeData = static_cast<gles2_shader_type____sources__AttributeData*>(attributeData);
 
27620
 
 
27621
    typedAttributeData->~gles2_shader_type____sources__AttributeData();
 
27622
 
 
27623
    return true;
 
27624
}
 
27625
 
 
27626
//---------------------------------------------------------------------
 
27627
bool ColladaParserAutoGen15Private::_data__inline( const ParserChar* text, size_t textLength )
 
27628
{
 
27629
 
 
27630
return mImpl->data__inline(text, textLength);
 
27631
}
 
27632
 
 
27633
//---------------------------------------------------------------------
 
27634
bool ColladaParserAutoGen15Private::_preBegin__inline( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
27635
{
 
27636
#ifdef GENERATEDSAXPARSER_VALIDATION
 
27637
    if ( mValidate )
 
27638
    {
 
27639
 
 
27640
        bool validationResult = _validateBegin__inline( attributes, attributeDataPtr, validationDataPtr );
 
27641
        if ( !validationResult ) return false;
 
27642
 
 
27643
    } // validation
 
27644
#endif
 
27645
 
 
27646
    return true;
 
27647
}
 
27648
 
 
27649
//---------------------------------------------------------------------
 
27650
bool ColladaParserAutoGen15Private::_preEnd__inline()
 
27651
{
 
27652
#ifdef GENERATEDSAXPARSER_VALIDATION
 
27653
    if ( mValidate )
 
27654
    {
 
27655
 
 
27656
        bool validationResult = _validateEnd__inline();
 
27657
        if ( !validationResult ) return false;
 
27658
 
 
27659
    } // validation
 
27660
#endif
 
27661
 
 
27662
    return true;
 
27663
}
 
27664
 
 
27665
//---------------------------------------------------------------------
 
27666
bool ColladaParserAutoGen15Private::_freeAttributes__inline( void* attributeData )
 
27667
{
 
27668
    return true;
 
27669
}
 
27670
 
 
27671
//---------------------------------------------------------------------
 
27672
const import__AttributeData import__AttributeData::DEFAULT = {0};
 
27673
 
 
27674
//---------------------------------------------------------------------
 
27675
bool ColladaParserAutoGen15Private::_data__import( const ParserChar* text, size_t textLength )
 
27676
{
 
27677
    return true;
 
27678
}
 
27679
 
 
27680
//---------------------------------------------------------------------
 
27681
bool ColladaParserAutoGen15Private::_preBegin__import( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
27682
{
 
27683
#ifdef GENERATEDSAXPARSER_VALIDATION
 
27684
    if ( mValidate )
 
27685
    {
 
27686
 
 
27687
        bool validationResult = _validateBegin__import( attributes, attributeDataPtr, validationDataPtr );
 
27688
        if ( !validationResult ) return false;
 
27689
 
 
27690
    } // validation
 
27691
#endif
 
27692
 
 
27693
import__AttributeData* attributeData = newData<import__AttributeData>(attributeDataPtr);
 
27694
 
 
27695
const ParserChar** attributeArray = attributes.attributes;
 
27696
if ( attributeArray )
 
27697
{
 
27698
    while (true)
 
27699
    {
 
27700
        const ParserChar * attribute = *attributeArray;
 
27701
        if ( !attribute )
 
27702
            break;
 
27703
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
27704
        attributeArray++;
 
27705
        if ( !attributeArray )
 
27706
            return false;
 
27707
        const ParserChar* attributeValue = *attributeArray;
 
27708
        attributeArray++;
 
27709
 
 
27710
 
 
27711
    switch ( hash )
 
27712
    {
 
27713
    case HASH_ATTRIBUTE_REF:
 
27714
    {
 
27715
 
 
27716
attributeData->ref = attributeValue;
 
27717
 
 
27718
    break;
 
27719
    }
 
27720
    default:
 
27721
    {
 
27722
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_IMPORT, attribute, attributeValue))
 
27723
            {return false;}
 
27724
    }
 
27725
    }
 
27726
    }
 
27727
}
 
27728
if ( !attributeData->ref )
 
27729
{
 
27730
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_IMPORT, HASH_ATTRIBUTE_REF, 0 ) )
 
27731
        return false;
 
27732
}
 
27733
 
 
27734
 
 
27735
    return true;
 
27736
}
 
27737
 
 
27738
//---------------------------------------------------------------------
 
27739
bool ColladaParserAutoGen15Private::_preEnd__import()
 
27740
{
 
27741
#ifdef GENERATEDSAXPARSER_VALIDATION
 
27742
    if ( mValidate )
 
27743
    {
 
27744
 
 
27745
        bool validationResult = _validateEnd__import();
 
27746
        if ( !validationResult ) return false;
 
27747
 
 
27748
    } // validation
 
27749
#endif
 
27750
 
 
27751
    return true;
 
27752
}
 
27753
 
 
27754
//---------------------------------------------------------------------
 
27755
bool ColladaParserAutoGen15Private::_freeAttributes__import( void* attributeData )
 
27756
{
 
27757
    import__AttributeData* typedAttributeData = static_cast<import__AttributeData*>(attributeData);
 
27758
 
 
27759
    typedAttributeData->~import__AttributeData();
 
27760
 
 
27761
    return true;
 
27762
}
 
27763
 
 
27764
//---------------------------------------------------------------------
 
27765
const compiler__AttributeData compiler__AttributeData::DEFAULT = {0, 0, 0};
 
27766
 
 
27767
//---------------------------------------------------------------------
 
27768
bool ColladaParserAutoGen15Private::_data__compiler( const ParserChar* text, size_t textLength )
 
27769
{
 
27770
    return true;
 
27771
}
 
27772
 
 
27773
//---------------------------------------------------------------------
 
27774
bool ColladaParserAutoGen15Private::_preBegin__compiler( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
27775
{
 
27776
#ifdef GENERATEDSAXPARSER_VALIDATION
 
27777
    if ( mValidate )
 
27778
    {
 
27779
 
 
27780
        bool validationResult = _validateBegin__compiler( attributes, attributeDataPtr, validationDataPtr );
 
27781
        if ( !validationResult ) return false;
 
27782
 
 
27783
    } // validation
 
27784
#endif
 
27785
 
 
27786
compiler__AttributeData* attributeData = newData<compiler__AttributeData>(attributeDataPtr);
 
27787
 
 
27788
const ParserChar** attributeArray = attributes.attributes;
 
27789
if ( attributeArray )
 
27790
{
 
27791
    while (true)
 
27792
    {
 
27793
        const ParserChar * attribute = *attributeArray;
 
27794
        if ( !attribute )
 
27795
            break;
 
27796
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
27797
        attributeArray++;
 
27798
        if ( !attributeArray )
 
27799
            return false;
 
27800
        const ParserChar* attributeValue = *attributeArray;
 
27801
        attributeArray++;
 
27802
 
 
27803
 
 
27804
    switch ( hash )
 
27805
    {
 
27806
    case HASH_ATTRIBUTE_PLATFORM:
 
27807
    {
 
27808
 
 
27809
attributeData->platform = attributeValue;
 
27810
 
 
27811
    break;
 
27812
    }
 
27813
    case HASH_ATTRIBUTE_TARGET:
 
27814
    {
 
27815
 
 
27816
attributeData->target = attributeValue;
 
27817
 
 
27818
    break;
 
27819
    }
 
27820
    case HASH_ATTRIBUTE_OPTIONS:
 
27821
    {
 
27822
 
 
27823
attributeData->options = attributeValue;
 
27824
 
 
27825
    break;
 
27826
    }
 
27827
    default:
 
27828
    {
 
27829
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_COMPILER, attribute, attributeValue))
 
27830
            {return false;}
 
27831
    }
 
27832
    }
 
27833
    }
 
27834
}
 
27835
if ( !attributeData->platform )
 
27836
{
 
27837
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_COMPILER, HASH_ATTRIBUTE_PLATFORM, 0 ) )
 
27838
        return false;
 
27839
}
 
27840
 
 
27841
 
 
27842
    return true;
 
27843
}
 
27844
 
 
27845
//---------------------------------------------------------------------
 
27846
bool ColladaParserAutoGen15Private::_preEnd__compiler()
 
27847
{
 
27848
#ifdef GENERATEDSAXPARSER_VALIDATION
 
27849
    if ( mValidate )
 
27850
    {
 
27851
 
 
27852
        bool validationResult = _validateEnd__compiler();
 
27853
        if ( !validationResult ) return false;
 
27854
 
 
27855
    } // validation
 
27856
#endif
 
27857
 
 
27858
    return true;
 
27859
}
 
27860
 
 
27861
//---------------------------------------------------------------------
 
27862
bool ColladaParserAutoGen15Private::_freeAttributes__compiler( void* attributeData )
 
27863
{
 
27864
    compiler__AttributeData* typedAttributeData = static_cast<compiler__AttributeData*>(attributeData);
 
27865
 
 
27866
    typedAttributeData->~compiler__AttributeData();
 
27867
 
 
27868
    return true;
 
27869
}
 
27870
 
 
27871
//---------------------------------------------------------------------
 
27872
bool ColladaParserAutoGen15Private::_data__binary( const ParserChar* text, size_t textLength )
 
27873
{
 
27874
    return true;
 
27875
}
 
27876
 
 
27877
//---------------------------------------------------------------------
 
27878
bool ColladaParserAutoGen15Private::_preBegin__binary( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
27879
{
 
27880
#ifdef GENERATEDSAXPARSER_VALIDATION
 
27881
    if ( mValidate )
 
27882
    {
 
27883
 
 
27884
        bool validationResult = _validateBegin__binary( attributes, attributeDataPtr, validationDataPtr );
 
27885
        if ( !validationResult ) return false;
 
27886
 
 
27887
    } // validation
 
27888
#endif
 
27889
 
 
27890
    return true;
 
27891
}
 
27892
 
 
27893
//---------------------------------------------------------------------
 
27894
bool ColladaParserAutoGen15Private::_preEnd__binary()
 
27895
{
 
27896
#ifdef GENERATEDSAXPARSER_VALIDATION
 
27897
    if ( mValidate )
 
27898
    {
 
27899
 
 
27900
        bool validationResult = _validateEnd__binary();
 
27901
        if ( !validationResult ) return false;
 
27902
 
 
27903
    } // validation
 
27904
#endif
 
27905
 
 
27906
    return true;
 
27907
}
 
27908
 
 
27909
//---------------------------------------------------------------------
 
27910
bool ColladaParserAutoGen15Private::_freeAttributes__binary( void* attributeData )
 
27911
{
 
27912
    return true;
 
27913
}
 
27914
 
 
27915
//---------------------------------------------------------------------
 
27916
bool ColladaParserAutoGen15Private::_data__ref____anyURI( const ParserChar* text, size_t textLength )
 
27917
{
 
27918
if (!mLastIncompleteFragmentInCharacterData)
 
27919
{
 
27920
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
27921
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
27922
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
27923
}
 
27924
else
 
27925
{
 
27926
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
27927
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
27928
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
27929
        mLastIncompleteFragmentInCharacterData = tmp;
 
27930
    }
 
27931
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
27932
    mEndOfDataInCurrentObjectOnStack += textLength;
 
27933
}
 
27934
return true;
 
27935
}
 
27936
 
 
27937
//---------------------------------------------------------------------
 
27938
bool ColladaParserAutoGen15Private::_preBegin__ref____anyURI( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
27939
{
 
27940
#ifdef GENERATEDSAXPARSER_VALIDATION
 
27941
    if ( mValidate )
 
27942
    {
 
27943
 
 
27944
        bool validationResult = _validateBegin__ref____anyURI( attributes, attributeDataPtr, validationDataPtr );
 
27945
        if ( !validationResult ) return false;
 
27946
 
 
27947
    } // validation
 
27948
#endif
 
27949
 
 
27950
    return true;
 
27951
}
 
27952
 
 
27953
//---------------------------------------------------------------------
 
27954
bool ColladaParserAutoGen15Private::_preEnd__ref____anyURI()
 
27955
{
 
27956
#ifdef GENERATEDSAXPARSER_VALIDATION
 
27957
    if ( mValidate )
 
27958
    {
 
27959
 
 
27960
        bool validationResult = _validateEnd__ref____anyURI();
 
27961
        if ( !validationResult ) return false;
 
27962
 
 
27963
    } // validation
 
27964
#endif
 
27965
 
 
27966
bool failed;
 
27967
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
27968
DISABLE_WARNING_UNUSED(ptrForErr)
 
27969
COLLADABU::URI parameter = GeneratedSaxParser::Utils::toURI((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
27970
bool returnValue;
 
27971
if (!failed)
 
27972
{
 
27973
    returnValue = mImpl->data__ref____anyURI(parameter);
 
27974
}
 
27975
else
 
27976
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_REF, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
27977
if (mLastIncompleteFragmentInCharacterData)
 
27978
    mStackMemoryManager.deleteObject();
 
27979
mLastIncompleteFragmentInCharacterData = 0;
 
27980
mEndOfDataInCurrentObjectOnStack = 0;
 
27981
return returnValue;
 
27982
}
 
27983
 
 
27984
//---------------------------------------------------------------------
 
27985
bool ColladaParserAutoGen15Private::_freeAttributes__ref____anyURI( void* attributeData )
 
27986
{
 
27987
    return true;
 
27988
}
 
27989
 
 
27990
//---------------------------------------------------------------------
 
27991
const binary__hex__AttributeData binary__hex__AttributeData::DEFAULT = {0};
 
27992
 
 
27993
//---------------------------------------------------------------------
 
27994
bool ColladaParserAutoGen15Private::_data__binary__hex( const ParserChar* text, size_t textLength )
 
27995
{
 
27996
#ifdef GENERATEDSAXPARSER_VALIDATION
 
27997
    if ( mValidate )
 
27998
    {
 
27999
return characterData2Uint8Data(text, textLength, &ColladaParserAutoGen15::data__binary__hex, 0, 0, 0);
 
28000
    }
 
28001
    else
 
28002
    {
 
28003
return characterData2Uint8Data(text, textLength, &ColladaParserAutoGen15::data__binary__hex);
 
28004
    }
 
28005
#else
 
28006
    {
 
28007
return characterData2Uint8Data(text, textLength, &ColladaParserAutoGen15::data__binary__hex);
 
28008
    } // validation
 
28009
#endif
 
28010
 
 
28011
}
 
28012
 
 
28013
//---------------------------------------------------------------------
 
28014
bool ColladaParserAutoGen15Private::_preBegin__binary__hex( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
28015
{
 
28016
#ifdef GENERATEDSAXPARSER_VALIDATION
 
28017
    if ( mValidate )
 
28018
    {
 
28019
 
 
28020
        bool validationResult = _validateBegin__binary__hex( attributes, attributeDataPtr, validationDataPtr );
 
28021
        if ( !validationResult ) return false;
 
28022
 
 
28023
    } // validation
 
28024
#endif
 
28025
 
 
28026
binary__hex__AttributeData* attributeData = newData<binary__hex__AttributeData>(attributeDataPtr);
 
28027
 
 
28028
const ParserChar** attributeArray = attributes.attributes;
 
28029
if ( attributeArray )
 
28030
{
 
28031
    while (true)
 
28032
    {
 
28033
        const ParserChar * attribute = *attributeArray;
 
28034
        if ( !attribute )
 
28035
            break;
 
28036
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
28037
        attributeArray++;
 
28038
        if ( !attributeArray )
 
28039
            return false;
 
28040
        const ParserChar* attributeValue = *attributeArray;
 
28041
        attributeArray++;
 
28042
 
 
28043
 
 
28044
    switch ( hash )
 
28045
    {
 
28046
    case HASH_ATTRIBUTE_FORMAT:
 
28047
    {
 
28048
 
 
28049
attributeData->format = attributeValue;
 
28050
 
 
28051
    break;
 
28052
    }
 
28053
    default:
 
28054
    {
 
28055
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_HEX, attribute, attributeValue))
 
28056
            {return false;}
 
28057
    }
 
28058
    }
 
28059
    }
 
28060
}
 
28061
 
 
28062
 
 
28063
    return true;
 
28064
}
 
28065
 
 
28066
//---------------------------------------------------------------------
 
28067
bool ColladaParserAutoGen15Private::_preEnd__binary__hex()
 
28068
{
 
28069
#ifdef GENERATEDSAXPARSER_VALIDATION
 
28070
    if ( mValidate )
 
28071
    {
 
28072
 
 
28073
        bool validationResult = _validateEnd__binary__hex();
 
28074
        if ( !validationResult ) return false;
 
28075
 
 
28076
    } // validation
 
28077
#endif
 
28078
 
 
28079
#ifdef GENERATEDSAXPARSER_VALIDATION
 
28080
    if ( mValidate )
 
28081
    {
 
28082
bool returnValue = uint8DataEnd( &ColladaParserAutoGen15::data__binary__hex, 0, 0, 0 );
 
28083
        return returnValue;
 
28084
    }
 
28085
    else
 
28086
    {
 
28087
return uint8DataEnd( &ColladaParserAutoGen15::data__binary__hex );
 
28088
    }
 
28089
#else
 
28090
    {
 
28091
return uint8DataEnd( &ColladaParserAutoGen15::data__binary__hex );
 
28092
    } // validation
 
28093
#endif
 
28094
 
 
28095
}
 
28096
 
 
28097
//---------------------------------------------------------------------
 
28098
bool ColladaParserAutoGen15Private::_freeAttributes__binary__hex( void* attributeData )
 
28099
{
 
28100
    binary__hex__AttributeData* typedAttributeData = static_cast<binary__hex__AttributeData*>(attributeData);
 
28101
 
 
28102
    typedAttributeData->~binary__hex__AttributeData();
 
28103
 
 
28104
    return true;
 
28105
}
 
28106
 
 
28107
//---------------------------------------------------------------------
 
28108
const linker__AttributeData linker__AttributeData::DEFAULT = {0, 0, 0};
 
28109
 
 
28110
//---------------------------------------------------------------------
 
28111
bool ColladaParserAutoGen15Private::_data__linker( const ParserChar* text, size_t textLength )
 
28112
{
 
28113
    return true;
 
28114
}
 
28115
 
 
28116
//---------------------------------------------------------------------
 
28117
bool ColladaParserAutoGen15Private::_preBegin__linker( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
28118
{
 
28119
#ifdef GENERATEDSAXPARSER_VALIDATION
 
28120
    if ( mValidate )
 
28121
    {
 
28122
 
 
28123
        bool validationResult = _validateBegin__linker( attributes, attributeDataPtr, validationDataPtr );
 
28124
        if ( !validationResult ) return false;
 
28125
 
 
28126
    } // validation
 
28127
#endif
 
28128
 
 
28129
linker__AttributeData* attributeData = newData<linker__AttributeData>(attributeDataPtr);
 
28130
 
 
28131
const ParserChar** attributeArray = attributes.attributes;
 
28132
if ( attributeArray )
 
28133
{
 
28134
    while (true)
 
28135
    {
 
28136
        const ParserChar * attribute = *attributeArray;
 
28137
        if ( !attribute )
 
28138
            break;
 
28139
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
28140
        attributeArray++;
 
28141
        if ( !attributeArray )
 
28142
            return false;
 
28143
        const ParserChar* attributeValue = *attributeArray;
 
28144
        attributeArray++;
 
28145
 
 
28146
 
 
28147
    switch ( hash )
 
28148
    {
 
28149
    case HASH_ATTRIBUTE_PLATFORM:
 
28150
    {
 
28151
 
 
28152
attributeData->platform = attributeValue;
 
28153
 
 
28154
    break;
 
28155
    }
 
28156
    case HASH_ATTRIBUTE_TARGET:
 
28157
    {
 
28158
 
 
28159
attributeData->target = attributeValue;
 
28160
 
 
28161
    break;
 
28162
    }
 
28163
    case HASH_ATTRIBUTE_OPTIONS:
 
28164
    {
 
28165
 
 
28166
attributeData->options = attributeValue;
 
28167
 
 
28168
    break;
 
28169
    }
 
28170
    default:
 
28171
    {
 
28172
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LINKER, attribute, attributeValue))
 
28173
            {return false;}
 
28174
    }
 
28175
    }
 
28176
    }
 
28177
}
 
28178
if ( !attributeData->platform )
 
28179
{
 
28180
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_LINKER, HASH_ATTRIBUTE_PLATFORM, 0 ) )
 
28181
        return false;
 
28182
}
 
28183
 
 
28184
 
 
28185
    return true;
 
28186
}
 
28187
 
 
28188
//---------------------------------------------------------------------
 
28189
bool ColladaParserAutoGen15Private::_preEnd__linker()
 
28190
{
 
28191
#ifdef GENERATEDSAXPARSER_VALIDATION
 
28192
    if ( mValidate )
 
28193
    {
 
28194
 
 
28195
        bool validationResult = _validateEnd__linker();
 
28196
        if ( !validationResult ) return false;
 
28197
 
 
28198
    } // validation
 
28199
#endif
 
28200
 
 
28201
    return true;
 
28202
}
 
28203
 
 
28204
//---------------------------------------------------------------------
 
28205
bool ColladaParserAutoGen15Private::_freeAttributes__linker( void* attributeData )
 
28206
{
 
28207
    linker__AttributeData* typedAttributeData = static_cast<linker__AttributeData*>(attributeData);
 
28208
 
 
28209
    typedAttributeData->~linker__AttributeData();
 
28210
 
 
28211
    return true;
 
28212
}
 
28213
 
 
28214
//---------------------------------------------------------------------
 
28215
const gles2_program_type____bind_attribute__AttributeData gles2_program_type____bind_attribute__AttributeData::DEFAULT = {0};
 
28216
 
 
28217
//---------------------------------------------------------------------
 
28218
bool ColladaParserAutoGen15Private::_data__gles2_program_type____bind_attribute( const ParserChar* text, size_t textLength )
 
28219
{
 
28220
    return true;
 
28221
}
 
28222
 
 
28223
//---------------------------------------------------------------------
 
28224
bool ColladaParserAutoGen15Private::_preBegin__gles2_program_type____bind_attribute( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
28225
{
 
28226
#ifdef GENERATEDSAXPARSER_VALIDATION
 
28227
    if ( mValidate )
 
28228
    {
 
28229
 
 
28230
        bool validationResult = _validateBegin__gles2_program_type____bind_attribute( attributes, attributeDataPtr, validationDataPtr );
 
28231
        if ( !validationResult ) return false;
 
28232
 
 
28233
    } // validation
 
28234
#endif
 
28235
 
 
28236
gles2_program_type____bind_attribute__AttributeData* attributeData = newData<gles2_program_type____bind_attribute__AttributeData>(attributeDataPtr);
 
28237
 
 
28238
const ParserChar** attributeArray = attributes.attributes;
 
28239
if ( attributeArray )
 
28240
{
 
28241
    while (true)
 
28242
    {
 
28243
        const ParserChar * attribute = *attributeArray;
 
28244
        if ( !attribute )
 
28245
            break;
 
28246
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
28247
        attributeArray++;
 
28248
        if ( !attributeArray )
 
28249
            return false;
 
28250
        const ParserChar* attributeValue = *attributeArray;
 
28251
        attributeArray++;
 
28252
 
 
28253
 
 
28254
    switch ( hash )
 
28255
    {
 
28256
    case HASH_ATTRIBUTE_SYMBOL:
 
28257
    {
 
28258
 
 
28259
attributeData->symbol = attributeValue;
 
28260
 
 
28261
    break;
 
28262
    }
 
28263
    default:
 
28264
    {
 
28265
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_BIND_ATTRIBUTE, attribute, attributeValue))
 
28266
            {return false;}
 
28267
    }
 
28268
    }
 
28269
    }
 
28270
}
 
28271
if ( !attributeData->symbol )
 
28272
{
 
28273
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_BIND_ATTRIBUTE, HASH_ATTRIBUTE_SYMBOL, 0 ) )
 
28274
        return false;
 
28275
}
 
28276
 
 
28277
 
 
28278
    return true;
 
28279
}
 
28280
 
 
28281
//---------------------------------------------------------------------
 
28282
bool ColladaParserAutoGen15Private::_preEnd__gles2_program_type____bind_attribute()
 
28283
{
 
28284
#ifdef GENERATEDSAXPARSER_VALIDATION
 
28285
    if ( mValidate )
 
28286
    {
 
28287
 
 
28288
        bool validationResult = _validateEnd__gles2_program_type____bind_attribute();
 
28289
        if ( !validationResult ) return false;
 
28290
 
 
28291
    } // validation
 
28292
#endif
 
28293
 
 
28294
    return true;
 
28295
}
 
28296
 
 
28297
//---------------------------------------------------------------------
 
28298
bool ColladaParserAutoGen15Private::_freeAttributes__gles2_program_type____bind_attribute( void* attributeData )
 
28299
{
 
28300
    gles2_program_type____bind_attribute__AttributeData* typedAttributeData = static_cast<gles2_program_type____bind_attribute__AttributeData*>(attributeData);
 
28301
 
 
28302
    typedAttributeData->~gles2_program_type____bind_attribute__AttributeData();
 
28303
 
 
28304
    return true;
 
28305
}
 
28306
 
 
28307
//---------------------------------------------------------------------
 
28308
bool ColladaParserAutoGen15Private::_data__semantic____token( const ParserChar* text, size_t textLength )
 
28309
{
 
28310
 
 
28311
return mImpl->data__semantic____token(text, textLength);
 
28312
}
 
28313
 
 
28314
//---------------------------------------------------------------------
 
28315
bool ColladaParserAutoGen15Private::_preBegin__semantic____token( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
28316
{
 
28317
#ifdef GENERATEDSAXPARSER_VALIDATION
 
28318
    if ( mValidate )
 
28319
    {
 
28320
 
 
28321
        bool validationResult = _validateBegin__semantic____token( attributes, attributeDataPtr, validationDataPtr );
 
28322
        if ( !validationResult ) return false;
 
28323
 
 
28324
    } // validation
 
28325
#endif
 
28326
 
 
28327
    return true;
 
28328
}
 
28329
 
 
28330
//---------------------------------------------------------------------
 
28331
bool ColladaParserAutoGen15Private::_preEnd__semantic____token()
 
28332
{
 
28333
#ifdef GENERATEDSAXPARSER_VALIDATION
 
28334
    if ( mValidate )
 
28335
    {
 
28336
 
 
28337
        bool validationResult = _validateEnd__semantic____token();
 
28338
        if ( !validationResult ) return false;
 
28339
 
 
28340
    } // validation
 
28341
#endif
 
28342
 
 
28343
    return true;
 
28344
}
 
28345
 
 
28346
//---------------------------------------------------------------------
 
28347
bool ColladaParserAutoGen15Private::_freeAttributes__semantic____token( void* attributeData )
 
28348
{
 
28349
    return true;
 
28350
}
 
28351
 
 
28352
//---------------------------------------------------------------------
 
28353
const gles2_program_type____bind_uniform__AttributeData gles2_program_type____bind_uniform__AttributeData::DEFAULT = {0};
 
28354
 
 
28355
//---------------------------------------------------------------------
 
28356
bool ColladaParserAutoGen15Private::_data__gles2_program_type____bind_uniform( const ParserChar* text, size_t textLength )
 
28357
{
 
28358
    return true;
 
28359
}
 
28360
 
 
28361
//---------------------------------------------------------------------
 
28362
bool ColladaParserAutoGen15Private::_preBegin__gles2_program_type____bind_uniform( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
28363
{
 
28364
#ifdef GENERATEDSAXPARSER_VALIDATION
 
28365
    if ( mValidate )
 
28366
    {
 
28367
 
 
28368
        bool validationResult = _validateBegin__gles2_program_type____bind_uniform( attributes, attributeDataPtr, validationDataPtr );
 
28369
        if ( !validationResult ) return false;
 
28370
 
 
28371
    } // validation
 
28372
#endif
 
28373
 
 
28374
gles2_program_type____bind_uniform__AttributeData* attributeData = newData<gles2_program_type____bind_uniform__AttributeData>(attributeDataPtr);
 
28375
 
 
28376
const ParserChar** attributeArray = attributes.attributes;
 
28377
if ( attributeArray )
 
28378
{
 
28379
    while (true)
 
28380
    {
 
28381
        const ParserChar * attribute = *attributeArray;
 
28382
        if ( !attribute )
 
28383
            break;
 
28384
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
28385
        attributeArray++;
 
28386
        if ( !attributeArray )
 
28387
            return false;
 
28388
        const ParserChar* attributeValue = *attributeArray;
 
28389
        attributeArray++;
 
28390
 
 
28391
 
 
28392
    switch ( hash )
 
28393
    {
 
28394
    case HASH_ATTRIBUTE_SYMBOL:
 
28395
    {
 
28396
 
 
28397
attributeData->symbol = attributeValue;
 
28398
 
 
28399
    break;
 
28400
    }
 
28401
    default:
 
28402
    {
 
28403
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_BIND_UNIFORM, attribute, attributeValue))
 
28404
            {return false;}
 
28405
    }
 
28406
    }
 
28407
    }
 
28408
}
 
28409
if ( !attributeData->symbol )
 
28410
{
 
28411
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_BIND_UNIFORM, HASH_ATTRIBUTE_SYMBOL, 0 ) )
 
28412
        return false;
 
28413
}
 
28414
 
 
28415
 
 
28416
    return true;
 
28417
}
 
28418
 
 
28419
//---------------------------------------------------------------------
 
28420
bool ColladaParserAutoGen15Private::_preEnd__gles2_program_type____bind_uniform()
 
28421
{
 
28422
#ifdef GENERATEDSAXPARSER_VALIDATION
 
28423
    if ( mValidate )
 
28424
    {
 
28425
 
 
28426
        bool validationResult = _validateEnd__gles2_program_type____bind_uniform();
 
28427
        if ( !validationResult ) return false;
 
28428
 
 
28429
    } // validation
 
28430
#endif
 
28431
 
 
28432
    return true;
 
28433
}
 
28434
 
 
28435
//---------------------------------------------------------------------
 
28436
bool ColladaParserAutoGen15Private::_freeAttributes__gles2_program_type____bind_uniform( void* attributeData )
 
28437
{
 
28438
    gles2_program_type____bind_uniform__AttributeData* typedAttributeData = static_cast<gles2_program_type____bind_uniform__AttributeData*>(attributeData);
 
28439
 
 
28440
    typedAttributeData->~gles2_program_type____bind_uniform__AttributeData();
 
28441
 
 
28442
    return true;
 
28443
}
 
28444
 
 
28445
//---------------------------------------------------------------------
 
28446
const profile_GLES2__technique__pass__program__bind_uniform__param__AttributeData profile_GLES2__technique__pass__program__bind_uniform__param__AttributeData::DEFAULT = {0};
 
28447
 
 
28448
//---------------------------------------------------------------------
 
28449
bool ColladaParserAutoGen15Private::_data__profile_GLES2__technique__pass__program__bind_uniform__param( const ParserChar* text, size_t textLength )
 
28450
{
 
28451
    return true;
 
28452
}
 
28453
 
 
28454
//---------------------------------------------------------------------
 
28455
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES2__technique__pass__program__bind_uniform__param( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
28456
{
 
28457
#ifdef GENERATEDSAXPARSER_VALIDATION
 
28458
    if ( mValidate )
 
28459
    {
 
28460
 
 
28461
        bool validationResult = _validateBegin__profile_GLES2__technique__pass__program__bind_uniform__param( attributes, attributeDataPtr, validationDataPtr );
 
28462
        if ( !validationResult ) return false;
 
28463
 
 
28464
    } // validation
 
28465
#endif
 
28466
 
 
28467
profile_GLES2__technique__pass__program__bind_uniform__param__AttributeData* attributeData = newData<profile_GLES2__technique__pass__program__bind_uniform__param__AttributeData>(attributeDataPtr);
 
28468
 
 
28469
const ParserChar** attributeArray = attributes.attributes;
 
28470
if ( attributeArray )
 
28471
{
 
28472
    while (true)
 
28473
    {
 
28474
        const ParserChar * attribute = *attributeArray;
 
28475
        if ( !attribute )
 
28476
            break;
 
28477
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
28478
        attributeArray++;
 
28479
        if ( !attributeArray )
 
28480
            return false;
 
28481
        const ParserChar* attributeValue = *attributeArray;
 
28482
        attributeArray++;
 
28483
 
 
28484
 
 
28485
    switch ( hash )
 
28486
    {
 
28487
    case HASH_ATTRIBUTE_REF:
 
28488
    {
 
28489
 
 
28490
attributeData->ref = attributeValue;
 
28491
#ifdef GENERATEDSAXPARSER_VALIDATION
 
28492
    if ( mValidate )
 
28493
    {
 
28494
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->ref, strlen(attributeData->ref));
 
28495
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
28496
    {
 
28497
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
28498
            simpleTypeValidationResult,
 
28499
            HASH_ELEMENT_PARAM,
 
28500
            HASH_ATTRIBUTE_REF,
 
28501
            attributeValue) )
 
28502
        {
 
28503
            return false;
 
28504
        }
 
28505
    }
 
28506
    } // validation
 
28507
#endif
 
28508
 
 
28509
    break;
 
28510
    }
 
28511
    default:
 
28512
    {
 
28513
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_PARAM, attribute, attributeValue))
 
28514
            {return false;}
 
28515
    }
 
28516
    }
 
28517
    }
 
28518
}
 
28519
if ( !attributeData->ref )
 
28520
{
 
28521
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_PARAM, HASH_ATTRIBUTE_REF, 0 ) )
 
28522
        return false;
 
28523
}
 
28524
 
 
28525
 
 
28526
    return true;
 
28527
}
 
28528
 
 
28529
//---------------------------------------------------------------------
 
28530
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES2__technique__pass__program__bind_uniform__param()
 
28531
{
 
28532
#ifdef GENERATEDSAXPARSER_VALIDATION
 
28533
    if ( mValidate )
 
28534
    {
 
28535
 
 
28536
        bool validationResult = _validateEnd__profile_GLES2__technique__pass__program__bind_uniform__param();
 
28537
        if ( !validationResult ) return false;
 
28538
 
 
28539
    } // validation
 
28540
#endif
 
28541
 
 
28542
    return true;
 
28543
}
 
28544
 
 
28545
//---------------------------------------------------------------------
 
28546
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES2__technique__pass__program__bind_uniform__param( void* attributeData )
 
28547
{
 
28548
    profile_GLES2__technique__pass__program__bind_uniform__param__AttributeData* typedAttributeData = static_cast<profile_GLES2__technique__pass__program__bind_uniform__param__AttributeData*>(attributeData);
 
28549
 
 
28550
    typedAttributeData->~profile_GLES2__technique__pass__program__bind_uniform__param__AttributeData();
 
28551
 
 
28552
    return true;
 
28553
}
 
28554
 
 
28555
//---------------------------------------------------------------------
 
28556
bool ColladaParserAutoGen15Private::_data__gles2_pass_type____evaluate( const ParserChar* text, size_t textLength )
 
28557
{
 
28558
    return true;
 
28559
}
 
28560
 
 
28561
//---------------------------------------------------------------------
 
28562
bool ColladaParserAutoGen15Private::_preBegin__gles2_pass_type____evaluate( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
28563
{
 
28564
#ifdef GENERATEDSAXPARSER_VALIDATION
 
28565
    if ( mValidate )
 
28566
    {
 
28567
 
 
28568
        bool validationResult = _validateBegin__gles2_pass_type____evaluate( attributes, attributeDataPtr, validationDataPtr );
 
28569
        if ( !validationResult ) return false;
 
28570
 
 
28571
    } // validation
 
28572
#endif
 
28573
 
 
28574
    return true;
 
28575
}
 
28576
 
 
28577
//---------------------------------------------------------------------
 
28578
bool ColladaParserAutoGen15Private::_preEnd__gles2_pass_type____evaluate()
 
28579
{
 
28580
#ifdef GENERATEDSAXPARSER_VALIDATION
 
28581
    if ( mValidate )
 
28582
    {
 
28583
 
 
28584
        bool validationResult = _validateEnd__gles2_pass_type____evaluate();
 
28585
        if ( !validationResult ) return false;
 
28586
 
 
28587
    } // validation
 
28588
#endif
 
28589
 
 
28590
    return true;
 
28591
}
 
28592
 
 
28593
//---------------------------------------------------------------------
 
28594
bool ColladaParserAutoGen15Private::_freeAttributes__gles2_pass_type____evaluate( void* attributeData )
 
28595
{
 
28596
    return true;
 
28597
}
 
28598
 
 
28599
//---------------------------------------------------------------------
 
28600
const color_target__AttributeData color_target__AttributeData::DEFAULT = {0, 0, ENUM__image_face_enum__POSITIVE_X, 0};
 
28601
 
 
28602
//---------------------------------------------------------------------
 
28603
bool ColladaParserAutoGen15Private::_data__color_target( const ParserChar* text, size_t textLength )
 
28604
{
 
28605
    return true;
 
28606
}
 
28607
 
 
28608
//---------------------------------------------------------------------
 
28609
bool ColladaParserAutoGen15Private::_preBegin__color_target( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
28610
{
 
28611
#ifdef GENERATEDSAXPARSER_VALIDATION
 
28612
    if ( mValidate )
 
28613
    {
 
28614
 
 
28615
        bool validationResult = _validateBegin__color_target( attributes, attributeDataPtr, validationDataPtr );
 
28616
        if ( !validationResult ) return false;
 
28617
 
 
28618
    } // validation
 
28619
#endif
 
28620
 
 
28621
color_target__AttributeData* attributeData = newData<color_target__AttributeData>(attributeDataPtr);
 
28622
 
 
28623
const ParserChar** attributeArray = attributes.attributes;
 
28624
if ( attributeArray )
 
28625
{
 
28626
    while (true)
 
28627
    {
 
28628
        const ParserChar * attribute = *attributeArray;
 
28629
        if ( !attribute )
 
28630
            break;
 
28631
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
28632
        attributeArray++;
 
28633
        if ( !attributeArray )
 
28634
            return false;
 
28635
        const ParserChar* attributeValue = *attributeArray;
 
28636
        attributeArray++;
 
28637
 
 
28638
 
 
28639
    switch ( hash )
 
28640
    {
 
28641
    case HASH_ATTRIBUTE_INDEX:
 
28642
    {
 
28643
bool failed;
 
28644
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
28645
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
28646
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
28647
        HASH_ELEMENT_COLOR_TARGET,
 
28648
        HASH_ATTRIBUTE_INDEX,
 
28649
        attributeValue))
 
28650
{
 
28651
    return false;
 
28652
}
 
28653
 
 
28654
    break;
 
28655
    }
 
28656
    case HASH_ATTRIBUTE_MIP:
 
28657
    {
 
28658
bool failed;
 
28659
attributeData->mip = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
28660
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
28661
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
28662
        HASH_ELEMENT_COLOR_TARGET,
 
28663
        HASH_ATTRIBUTE_MIP,
 
28664
        attributeValue))
 
28665
{
 
28666
    return false;
 
28667
}
 
28668
 
 
28669
    break;
 
28670
    }
 
28671
    case HASH_ATTRIBUTE_FACE:
 
28672
    {
 
28673
bool failed;
 
28674
attributeData->face = Utils::toEnum<ENUM__image_face_enum, StringHash, ENUM__image_face_enum__COUNT>(attributeValue, failed, ENUM__image_face_enumMap, Utils::calculateStringHash);
 
28675
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
28676
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
28677
        HASH_ELEMENT_COLOR_TARGET,
 
28678
        HASH_ATTRIBUTE_FACE,
 
28679
        attributeValue))
 
28680
{
 
28681
    return false;
 
28682
}
 
28683
 
 
28684
    break;
 
28685
    }
 
28686
    case HASH_ATTRIBUTE_SLICE:
 
28687
    {
 
28688
bool failed;
 
28689
attributeData->slice = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
28690
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
28691
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
28692
        HASH_ELEMENT_COLOR_TARGET,
 
28693
        HASH_ATTRIBUTE_SLICE,
 
28694
        attributeValue))
 
28695
{
 
28696
    return false;
 
28697
}
 
28698
 
 
28699
    break;
 
28700
    }
 
28701
    default:
 
28702
    {
 
28703
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_COLOR_TARGET, attribute, attributeValue))
 
28704
            {return false;}
 
28705
    }
 
28706
    }
 
28707
    }
 
28708
}
 
28709
 
 
28710
 
 
28711
    return true;
 
28712
}
 
28713
 
 
28714
//---------------------------------------------------------------------
 
28715
bool ColladaParserAutoGen15Private::_preEnd__color_target()
 
28716
{
 
28717
#ifdef GENERATEDSAXPARSER_VALIDATION
 
28718
    if ( mValidate )
 
28719
    {
 
28720
 
 
28721
        bool validationResult = _validateEnd__color_target();
 
28722
        if ( !validationResult ) return false;
 
28723
 
 
28724
    } // validation
 
28725
#endif
 
28726
 
 
28727
    return true;
 
28728
}
 
28729
 
 
28730
//---------------------------------------------------------------------
 
28731
bool ColladaParserAutoGen15Private::_freeAttributes__color_target( void* attributeData )
 
28732
{
 
28733
    color_target__AttributeData* typedAttributeData = static_cast<color_target__AttributeData*>(attributeData);
 
28734
 
 
28735
    typedAttributeData->~color_target__AttributeData();
 
28736
 
 
28737
    return true;
 
28738
}
 
28739
 
 
28740
//---------------------------------------------------------------------
 
28741
ENUM__image_face_enum ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__image_face_enum (
 
28742
    const ParserChar* prefixedBuffer,
 
28743
    const ParserChar* prefixedBufferEnd,
 
28744
    const ParserChar** buffer,
 
28745
    const ParserChar* bufferEnd,
 
28746
    bool& failed,
 
28747
    const std::pair<StringHash, ENUM__image_face_enum>* enumMap,
 
28748
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
28749
)
 
28750
{
 
28751
    return toEnumDataPrefix<ENUM__image_face_enum, StringHash, ENUM__image_face_enum__COUNT, &toEnum_ENUM__image_face_enum>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
28752
}
 
28753
 
 
28754
//---------------------------------------------------------------------
 
28755
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__image_face_enum (
 
28756
    const ParserChar* text,
 
28757
    size_t textLength,
 
28758
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__image_face_enum*, size_t ),
 
28759
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
28760
)
 
28761
{
 
28762
    return characterData2EnumData<ENUM__image_face_enum, StringHash, ENUM__image_face_enum__COUNT>(text, textLength, dataFunction, ENUM__image_face_enumMap, baseConversionFunc, &toEnum_ENUM__image_face_enum, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__image_face_enum);
 
28763
}
 
28764
 
 
28765
//---------------------------------------------------------------------
 
28766
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__image_face_enum (
 
28767
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__image_face_enum*, size_t ),
 
28768
    const std::pair<StringHash, ENUM__image_face_enum>* enumMap,
 
28769
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
28770
    ENUM__image_face_enum (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__image_face_enum>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
28771
)
 
28772
{
 
28773
    return dataEnumEnd<ENUM__image_face_enum, StringHash, ENUM__image_face_enum__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
28774
}
 
28775
 
 
28776
//---------------------------------------------------------------------
 
28777
const fx_colortarget_type____param__AttributeData fx_colortarget_type____param__AttributeData::DEFAULT = {0};
 
28778
 
 
28779
//---------------------------------------------------------------------
 
28780
bool ColladaParserAutoGen15Private::_data__fx_colortarget_type____param( const ParserChar* text, size_t textLength )
 
28781
{
 
28782
    return true;
 
28783
}
 
28784
 
 
28785
//---------------------------------------------------------------------
 
28786
bool ColladaParserAutoGen15Private::_preBegin__fx_colortarget_type____param( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
28787
{
 
28788
#ifdef GENERATEDSAXPARSER_VALIDATION
 
28789
    if ( mValidate )
 
28790
    {
 
28791
 
 
28792
        bool validationResult = _validateBegin__fx_colortarget_type____param( attributes, attributeDataPtr, validationDataPtr );
 
28793
        if ( !validationResult ) return false;
 
28794
 
 
28795
    } // validation
 
28796
#endif
 
28797
 
 
28798
fx_colortarget_type____param__AttributeData* attributeData = newData<fx_colortarget_type____param__AttributeData>(attributeDataPtr);
 
28799
 
 
28800
const ParserChar** attributeArray = attributes.attributes;
 
28801
if ( attributeArray )
 
28802
{
 
28803
    while (true)
 
28804
    {
 
28805
        const ParserChar * attribute = *attributeArray;
 
28806
        if ( !attribute )
 
28807
            break;
 
28808
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
28809
        attributeArray++;
 
28810
        if ( !attributeArray )
 
28811
            return false;
 
28812
        const ParserChar* attributeValue = *attributeArray;
 
28813
        attributeArray++;
 
28814
 
 
28815
 
 
28816
    switch ( hash )
 
28817
    {
 
28818
    case HASH_ATTRIBUTE_REF:
 
28819
    {
 
28820
 
 
28821
attributeData->ref = attributeValue;
 
28822
 
 
28823
    break;
 
28824
    }
 
28825
    default:
 
28826
    {
 
28827
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_PARAM, attribute, attributeValue))
 
28828
            {return false;}
 
28829
    }
 
28830
    }
 
28831
    }
 
28832
}
 
28833
if ( !attributeData->ref )
 
28834
{
 
28835
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_PARAM, HASH_ATTRIBUTE_REF, 0 ) )
 
28836
        return false;
 
28837
}
 
28838
 
 
28839
 
 
28840
    return true;
 
28841
}
 
28842
 
 
28843
//---------------------------------------------------------------------
 
28844
bool ColladaParserAutoGen15Private::_preEnd__fx_colortarget_type____param()
 
28845
{
 
28846
#ifdef GENERATEDSAXPARSER_VALIDATION
 
28847
    if ( mValidate )
 
28848
    {
 
28849
 
 
28850
        bool validationResult = _validateEnd__fx_colortarget_type____param();
 
28851
        if ( !validationResult ) return false;
 
28852
 
 
28853
    } // validation
 
28854
#endif
 
28855
 
 
28856
    return true;
 
28857
}
 
28858
 
 
28859
//---------------------------------------------------------------------
 
28860
bool ColladaParserAutoGen15Private::_freeAttributes__fx_colortarget_type____param( void* attributeData )
 
28861
{
 
28862
    fx_colortarget_type____param__AttributeData* typedAttributeData = static_cast<fx_colortarget_type____param__AttributeData*>(attributeData);
 
28863
 
 
28864
    typedAttributeData->~fx_colortarget_type____param__AttributeData();
 
28865
 
 
28866
    return true;
 
28867
}
 
28868
 
 
28869
//---------------------------------------------------------------------
 
28870
const depth_target__AttributeData depth_target__AttributeData::DEFAULT = {0, 0, ENUM__image_face_enum__POSITIVE_X, 0};
 
28871
 
 
28872
//---------------------------------------------------------------------
 
28873
bool ColladaParserAutoGen15Private::_data__depth_target( const ParserChar* text, size_t textLength )
 
28874
{
 
28875
    return true;
 
28876
}
 
28877
 
 
28878
//---------------------------------------------------------------------
 
28879
bool ColladaParserAutoGen15Private::_preBegin__depth_target( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
28880
{
 
28881
#ifdef GENERATEDSAXPARSER_VALIDATION
 
28882
    if ( mValidate )
 
28883
    {
 
28884
 
 
28885
        bool validationResult = _validateBegin__depth_target( attributes, attributeDataPtr, validationDataPtr );
 
28886
        if ( !validationResult ) return false;
 
28887
 
 
28888
    } // validation
 
28889
#endif
 
28890
 
 
28891
depth_target__AttributeData* attributeData = newData<depth_target__AttributeData>(attributeDataPtr);
 
28892
 
 
28893
const ParserChar** attributeArray = attributes.attributes;
 
28894
if ( attributeArray )
 
28895
{
 
28896
    while (true)
 
28897
    {
 
28898
        const ParserChar * attribute = *attributeArray;
 
28899
        if ( !attribute )
 
28900
            break;
 
28901
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
28902
        attributeArray++;
 
28903
        if ( !attributeArray )
 
28904
            return false;
 
28905
        const ParserChar* attributeValue = *attributeArray;
 
28906
        attributeArray++;
 
28907
 
 
28908
 
 
28909
    switch ( hash )
 
28910
    {
 
28911
    case HASH_ATTRIBUTE_INDEX:
 
28912
    {
 
28913
bool failed;
 
28914
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
28915
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
28916
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
28917
        HASH_ELEMENT_DEPTH_TARGET,
 
28918
        HASH_ATTRIBUTE_INDEX,
 
28919
        attributeValue))
 
28920
{
 
28921
    return false;
 
28922
}
 
28923
 
 
28924
    break;
 
28925
    }
 
28926
    case HASH_ATTRIBUTE_MIP:
 
28927
    {
 
28928
bool failed;
 
28929
attributeData->mip = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
28930
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
28931
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
28932
        HASH_ELEMENT_DEPTH_TARGET,
 
28933
        HASH_ATTRIBUTE_MIP,
 
28934
        attributeValue))
 
28935
{
 
28936
    return false;
 
28937
}
 
28938
 
 
28939
    break;
 
28940
    }
 
28941
    case HASH_ATTRIBUTE_FACE:
 
28942
    {
 
28943
bool failed;
 
28944
attributeData->face = Utils::toEnum<ENUM__image_face_enum, StringHash, ENUM__image_face_enum__COUNT>(attributeValue, failed, ENUM__image_face_enumMap, Utils::calculateStringHash);
 
28945
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
28946
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
28947
        HASH_ELEMENT_DEPTH_TARGET,
 
28948
        HASH_ATTRIBUTE_FACE,
 
28949
        attributeValue))
 
28950
{
 
28951
    return false;
 
28952
}
 
28953
 
 
28954
    break;
 
28955
    }
 
28956
    case HASH_ATTRIBUTE_SLICE:
 
28957
    {
 
28958
bool failed;
 
28959
attributeData->slice = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
28960
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
28961
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
28962
        HASH_ELEMENT_DEPTH_TARGET,
 
28963
        HASH_ATTRIBUTE_SLICE,
 
28964
        attributeValue))
 
28965
{
 
28966
    return false;
 
28967
}
 
28968
 
 
28969
    break;
 
28970
    }
 
28971
    default:
 
28972
    {
 
28973
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_DEPTH_TARGET, attribute, attributeValue))
 
28974
            {return false;}
 
28975
    }
 
28976
    }
 
28977
    }
 
28978
}
 
28979
 
 
28980
 
 
28981
    return true;
 
28982
}
 
28983
 
 
28984
//---------------------------------------------------------------------
 
28985
bool ColladaParserAutoGen15Private::_preEnd__depth_target()
 
28986
{
 
28987
#ifdef GENERATEDSAXPARSER_VALIDATION
 
28988
    if ( mValidate )
 
28989
    {
 
28990
 
 
28991
        bool validationResult = _validateEnd__depth_target();
 
28992
        if ( !validationResult ) return false;
 
28993
 
 
28994
    } // validation
 
28995
#endif
 
28996
 
 
28997
    return true;
 
28998
}
 
28999
 
 
29000
//---------------------------------------------------------------------
 
29001
bool ColladaParserAutoGen15Private::_freeAttributes__depth_target( void* attributeData )
 
29002
{
 
29003
    depth_target__AttributeData* typedAttributeData = static_cast<depth_target__AttributeData*>(attributeData);
 
29004
 
 
29005
    typedAttributeData->~depth_target__AttributeData();
 
29006
 
 
29007
    return true;
 
29008
}
 
29009
 
 
29010
//---------------------------------------------------------------------
 
29011
const stencil_target__AttributeData stencil_target__AttributeData::DEFAULT = {0, 0, ENUM__image_face_enum__POSITIVE_X, 0};
 
29012
 
 
29013
//---------------------------------------------------------------------
 
29014
bool ColladaParserAutoGen15Private::_data__stencil_target( const ParserChar* text, size_t textLength )
 
29015
{
 
29016
    return true;
 
29017
}
 
29018
 
 
29019
//---------------------------------------------------------------------
 
29020
bool ColladaParserAutoGen15Private::_preBegin__stencil_target( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
29021
{
 
29022
#ifdef GENERATEDSAXPARSER_VALIDATION
 
29023
    if ( mValidate )
 
29024
    {
 
29025
 
 
29026
        bool validationResult = _validateBegin__stencil_target( attributes, attributeDataPtr, validationDataPtr );
 
29027
        if ( !validationResult ) return false;
 
29028
 
 
29029
    } // validation
 
29030
#endif
 
29031
 
 
29032
stencil_target__AttributeData* attributeData = newData<stencil_target__AttributeData>(attributeDataPtr);
 
29033
 
 
29034
const ParserChar** attributeArray = attributes.attributes;
 
29035
if ( attributeArray )
 
29036
{
 
29037
    while (true)
 
29038
    {
 
29039
        const ParserChar * attribute = *attributeArray;
 
29040
        if ( !attribute )
 
29041
            break;
 
29042
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
29043
        attributeArray++;
 
29044
        if ( !attributeArray )
 
29045
            return false;
 
29046
        const ParserChar* attributeValue = *attributeArray;
 
29047
        attributeArray++;
 
29048
 
 
29049
 
 
29050
    switch ( hash )
 
29051
    {
 
29052
    case HASH_ATTRIBUTE_INDEX:
 
29053
    {
 
29054
bool failed;
 
29055
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
29056
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
29057
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
29058
        HASH_ELEMENT_STENCIL_TARGET,
 
29059
        HASH_ATTRIBUTE_INDEX,
 
29060
        attributeValue))
 
29061
{
 
29062
    return false;
 
29063
}
 
29064
 
 
29065
    break;
 
29066
    }
 
29067
    case HASH_ATTRIBUTE_MIP:
 
29068
    {
 
29069
bool failed;
 
29070
attributeData->mip = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
29071
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
29072
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
29073
        HASH_ELEMENT_STENCIL_TARGET,
 
29074
        HASH_ATTRIBUTE_MIP,
 
29075
        attributeValue))
 
29076
{
 
29077
    return false;
 
29078
}
 
29079
 
 
29080
    break;
 
29081
    }
 
29082
    case HASH_ATTRIBUTE_FACE:
 
29083
    {
 
29084
bool failed;
 
29085
attributeData->face = Utils::toEnum<ENUM__image_face_enum, StringHash, ENUM__image_face_enum__COUNT>(attributeValue, failed, ENUM__image_face_enumMap, Utils::calculateStringHash);
 
29086
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
29087
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
29088
        HASH_ELEMENT_STENCIL_TARGET,
 
29089
        HASH_ATTRIBUTE_FACE,
 
29090
        attributeValue))
 
29091
{
 
29092
    return false;
 
29093
}
 
29094
 
 
29095
    break;
 
29096
    }
 
29097
    case HASH_ATTRIBUTE_SLICE:
 
29098
    {
 
29099
bool failed;
 
29100
attributeData->slice = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
29101
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
29102
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
29103
        HASH_ELEMENT_STENCIL_TARGET,
 
29104
        HASH_ATTRIBUTE_SLICE,
 
29105
        attributeValue))
 
29106
{
 
29107
    return false;
 
29108
}
 
29109
 
 
29110
    break;
 
29111
    }
 
29112
    default:
 
29113
    {
 
29114
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_STENCIL_TARGET, attribute, attributeValue))
 
29115
            {return false;}
 
29116
    }
 
29117
    }
 
29118
    }
 
29119
}
 
29120
 
 
29121
 
 
29122
    return true;
 
29123
}
 
29124
 
 
29125
//---------------------------------------------------------------------
 
29126
bool ColladaParserAutoGen15Private::_preEnd__stencil_target()
 
29127
{
 
29128
#ifdef GENERATEDSAXPARSER_VALIDATION
 
29129
    if ( mValidate )
 
29130
    {
 
29131
 
 
29132
        bool validationResult = _validateEnd__stencil_target();
 
29133
        if ( !validationResult ) return false;
 
29134
 
 
29135
    } // validation
 
29136
#endif
 
29137
 
 
29138
    return true;
 
29139
}
 
29140
 
 
29141
//---------------------------------------------------------------------
 
29142
bool ColladaParserAutoGen15Private::_freeAttributes__stencil_target( void* attributeData )
 
29143
{
 
29144
    stencil_target__AttributeData* typedAttributeData = static_cast<stencil_target__AttributeData*>(attributeData);
 
29145
 
 
29146
    typedAttributeData->~stencil_target__AttributeData();
 
29147
 
 
29148
    return true;
 
29149
}
 
29150
 
 
29151
//---------------------------------------------------------------------
 
29152
const color_clear__AttributeData color_clear__AttributeData::DEFAULT = {0};
 
29153
 
 
29154
//---------------------------------------------------------------------
 
29155
bool ColladaParserAutoGen15Private::_data__color_clear( const ParserChar* text, size_t textLength )
 
29156
{
 
29157
#ifdef GENERATEDSAXPARSER_VALIDATION
 
29158
    if ( mValidate )
 
29159
    {
 
29160
        border_color__ValidationData* validationData = (border_color__ValidationData*)mValidationDataStack.top();
 
29161
        DISABLE_WARNING_UNUSED(validationData)
 
29162
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__color_clear, &validate__fx_color_type__stream, &validationData->validationWholeSize, 0);
 
29163
    }
 
29164
    else
 
29165
    {
 
29166
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__color_clear);
 
29167
    }
 
29168
#else
 
29169
    {
 
29170
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__color_clear);
 
29171
    } // validation
 
29172
#endif
 
29173
 
 
29174
}
 
29175
 
 
29176
//---------------------------------------------------------------------
 
29177
bool ColladaParserAutoGen15Private::_preBegin__color_clear( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
29178
{
 
29179
#ifdef GENERATEDSAXPARSER_VALIDATION
 
29180
    if ( mValidate )
 
29181
    {
 
29182
 
 
29183
        bool validationResult = _validateBegin__color_clear( attributes, attributeDataPtr, validationDataPtr );
 
29184
        if ( !validationResult ) return false;
 
29185
 
 
29186
    } // validation
 
29187
#endif
 
29188
 
 
29189
color_clear__AttributeData* attributeData = newData<color_clear__AttributeData>(attributeDataPtr);
 
29190
 
 
29191
const ParserChar** attributeArray = attributes.attributes;
 
29192
if ( attributeArray )
 
29193
{
 
29194
    while (true)
 
29195
    {
 
29196
        const ParserChar * attribute = *attributeArray;
 
29197
        if ( !attribute )
 
29198
            break;
 
29199
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
29200
        attributeArray++;
 
29201
        if ( !attributeArray )
 
29202
            return false;
 
29203
        const ParserChar* attributeValue = *attributeArray;
 
29204
        attributeArray++;
 
29205
 
 
29206
 
 
29207
    switch ( hash )
 
29208
    {
 
29209
    case HASH_ATTRIBUTE_INDEX:
 
29210
    {
 
29211
bool failed;
 
29212
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
29213
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
29214
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
29215
        HASH_ELEMENT_COLOR_CLEAR,
 
29216
        HASH_ATTRIBUTE_INDEX,
 
29217
        attributeValue))
 
29218
{
 
29219
    return false;
 
29220
}
 
29221
 
 
29222
    break;
 
29223
    }
 
29224
    default:
 
29225
    {
 
29226
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_COLOR_CLEAR, attribute, attributeValue))
 
29227
            {return false;}
 
29228
    }
 
29229
    }
 
29230
    }
 
29231
}
 
29232
 
 
29233
 
 
29234
    return true;
 
29235
}
 
29236
 
 
29237
//---------------------------------------------------------------------
 
29238
bool ColladaParserAutoGen15Private::_preEnd__color_clear()
 
29239
{
 
29240
#ifdef GENERATEDSAXPARSER_VALIDATION
 
29241
    if ( mValidate )
 
29242
    {
 
29243
 
 
29244
        bool validationResult = _validateEnd__color_clear();
 
29245
        if ( !validationResult ) return false;
 
29246
 
 
29247
    } // validation
 
29248
#endif
 
29249
 
 
29250
#ifdef GENERATEDSAXPARSER_VALIDATION
 
29251
    if ( mValidate )
 
29252
    {
 
29253
        border_color__ValidationData* validationData = (border_color__ValidationData*)mValidationDataStack.top();
 
29254
        DISABLE_WARNING_UNUSED(validationData)
 
29255
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__color_clear, &validate__fx_color_type__streamEnd, &validationData->validationWholeSize, 0 );
 
29256
        ParserError::ErrorType simpleTypeValidationResult = validate__fx_color_type(0, (*(&validationData->validationWholeSize)));
 
29257
        mValidationDataStack.deleteObject();
 
29258
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
29259
        {
 
29260
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
29261
                simpleTypeValidationResult,
 
29262
                HASH_ELEMENT_COLOR_CLEAR,
 
29263
                (ParserChar*)0, 0 ) )
 
29264
            {
 
29265
                return false;
 
29266
            }
 
29267
        }
 
29268
        return returnValue;
 
29269
    }
 
29270
    else
 
29271
    {
 
29272
return floatDataEnd( &ColladaParserAutoGen15::data__color_clear );
 
29273
    }
 
29274
#else
 
29275
    {
 
29276
return floatDataEnd( &ColladaParserAutoGen15::data__color_clear );
 
29277
    } // validation
 
29278
#endif
 
29279
 
 
29280
}
 
29281
 
 
29282
//---------------------------------------------------------------------
 
29283
bool ColladaParserAutoGen15Private::_freeAttributes__color_clear( void* attributeData )
 
29284
{
 
29285
    color_clear__AttributeData* typedAttributeData = static_cast<color_clear__AttributeData*>(attributeData);
 
29286
 
 
29287
    typedAttributeData->~color_clear__AttributeData();
 
29288
 
 
29289
    return true;
 
29290
}
 
29291
 
 
29292
//---------------------------------------------------------------------
 
29293
const stencil_clear__AttributeData stencil_clear__AttributeData::DEFAULT = {0};
 
29294
 
 
29295
//---------------------------------------------------------------------
 
29296
bool ColladaParserAutoGen15Private::_data__stencil_clear( const ParserChar* text, size_t textLength )
 
29297
{
 
29298
if (!mLastIncompleteFragmentInCharacterData)
 
29299
{
 
29300
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
29301
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
29302
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
29303
}
 
29304
else
 
29305
{
 
29306
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
29307
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
29308
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
29309
        mLastIncompleteFragmentInCharacterData = tmp;
 
29310
    }
 
29311
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
29312
    mEndOfDataInCurrentObjectOnStack += textLength;
 
29313
}
 
29314
return true;
 
29315
}
 
29316
 
 
29317
//---------------------------------------------------------------------
 
29318
bool ColladaParserAutoGen15Private::_preBegin__stencil_clear( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
29319
{
 
29320
#ifdef GENERATEDSAXPARSER_VALIDATION
 
29321
    if ( mValidate )
 
29322
    {
 
29323
 
 
29324
        bool validationResult = _validateBegin__stencil_clear( attributes, attributeDataPtr, validationDataPtr );
 
29325
        if ( !validationResult ) return false;
 
29326
 
 
29327
    } // validation
 
29328
#endif
 
29329
 
 
29330
stencil_clear__AttributeData* attributeData = newData<stencil_clear__AttributeData>(attributeDataPtr);
 
29331
 
 
29332
const ParserChar** attributeArray = attributes.attributes;
 
29333
if ( attributeArray )
 
29334
{
 
29335
    while (true)
 
29336
    {
 
29337
        const ParserChar * attribute = *attributeArray;
 
29338
        if ( !attribute )
 
29339
            break;
 
29340
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
29341
        attributeArray++;
 
29342
        if ( !attributeArray )
 
29343
            return false;
 
29344
        const ParserChar* attributeValue = *attributeArray;
 
29345
        attributeArray++;
 
29346
 
 
29347
 
 
29348
    switch ( hash )
 
29349
    {
 
29350
    case HASH_ATTRIBUTE_INDEX:
 
29351
    {
 
29352
bool failed;
 
29353
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
29354
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
29355
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
29356
        HASH_ELEMENT_STENCIL_CLEAR,
 
29357
        HASH_ATTRIBUTE_INDEX,
 
29358
        attributeValue))
 
29359
{
 
29360
    return false;
 
29361
}
 
29362
 
 
29363
    break;
 
29364
    }
 
29365
    default:
 
29366
    {
 
29367
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_STENCIL_CLEAR, attribute, attributeValue))
 
29368
            {return false;}
 
29369
    }
 
29370
    }
 
29371
    }
 
29372
}
 
29373
 
 
29374
 
 
29375
    return true;
 
29376
}
 
29377
 
 
29378
//---------------------------------------------------------------------
 
29379
bool ColladaParserAutoGen15Private::_preEnd__stencil_clear()
 
29380
{
 
29381
#ifdef GENERATEDSAXPARSER_VALIDATION
 
29382
    if ( mValidate )
 
29383
    {
 
29384
 
 
29385
        bool validationResult = _validateEnd__stencil_clear();
 
29386
        if ( !validationResult ) return false;
 
29387
 
 
29388
    } // validation
 
29389
#endif
 
29390
 
 
29391
bool failed;
 
29392
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
29393
DISABLE_WARNING_UNUSED(ptrForErr)
 
29394
sint8 parameter = GeneratedSaxParser::Utils::toSint8((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
29395
bool returnValue;
 
29396
if (!failed)
 
29397
{
 
29398
    returnValue = mImpl->data__stencil_clear(parameter);
 
29399
}
 
29400
else
 
29401
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_STENCIL_CLEAR, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
29402
if (mLastIncompleteFragmentInCharacterData)
 
29403
    mStackMemoryManager.deleteObject();
 
29404
mLastIncompleteFragmentInCharacterData = 0;
 
29405
mEndOfDataInCurrentObjectOnStack = 0;
 
29406
return returnValue;
 
29407
}
 
29408
 
 
29409
//---------------------------------------------------------------------
 
29410
bool ColladaParserAutoGen15Private::_freeAttributes__stencil_clear( void* attributeData )
 
29411
{
 
29412
    stencil_clear__AttributeData* typedAttributeData = static_cast<stencil_clear__AttributeData*>(attributeData);
 
29413
 
 
29414
    typedAttributeData->~stencil_clear__AttributeData();
 
29415
 
 
29416
    return true;
 
29417
}
 
29418
 
 
29419
//---------------------------------------------------------------------
 
29420
const depth_clear__AttributeData depth_clear__AttributeData::DEFAULT = {0};
 
29421
 
 
29422
//---------------------------------------------------------------------
 
29423
bool ColladaParserAutoGen15Private::_data__depth_clear( const ParserChar* text, size_t textLength )
 
29424
{
 
29425
if (!mLastIncompleteFragmentInCharacterData)
 
29426
{
 
29427
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
29428
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
29429
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
29430
}
 
29431
else
 
29432
{
 
29433
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
29434
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
29435
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
29436
        mLastIncompleteFragmentInCharacterData = tmp;
 
29437
    }
 
29438
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
29439
    mEndOfDataInCurrentObjectOnStack += textLength;
 
29440
}
 
29441
return true;
 
29442
}
 
29443
 
 
29444
//---------------------------------------------------------------------
 
29445
bool ColladaParserAutoGen15Private::_preBegin__depth_clear( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
29446
{
 
29447
#ifdef GENERATEDSAXPARSER_VALIDATION
 
29448
    if ( mValidate )
 
29449
    {
 
29450
 
 
29451
        bool validationResult = _validateBegin__depth_clear( attributes, attributeDataPtr, validationDataPtr );
 
29452
        if ( !validationResult ) return false;
 
29453
 
 
29454
    } // validation
 
29455
#endif
 
29456
 
 
29457
depth_clear__AttributeData* attributeData = newData<depth_clear__AttributeData>(attributeDataPtr);
 
29458
 
 
29459
const ParserChar** attributeArray = attributes.attributes;
 
29460
if ( attributeArray )
 
29461
{
 
29462
    while (true)
 
29463
    {
 
29464
        const ParserChar * attribute = *attributeArray;
 
29465
        if ( !attribute )
 
29466
            break;
 
29467
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
29468
        attributeArray++;
 
29469
        if ( !attributeArray )
 
29470
            return false;
 
29471
        const ParserChar* attributeValue = *attributeArray;
 
29472
        attributeArray++;
 
29473
 
 
29474
 
 
29475
    switch ( hash )
 
29476
    {
 
29477
    case HASH_ATTRIBUTE_INDEX:
 
29478
    {
 
29479
bool failed;
 
29480
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
29481
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
29482
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
29483
        HASH_ELEMENT_DEPTH_CLEAR,
 
29484
        HASH_ATTRIBUTE_INDEX,
 
29485
        attributeValue))
 
29486
{
 
29487
    return false;
 
29488
}
 
29489
 
 
29490
    break;
 
29491
    }
 
29492
    default:
 
29493
    {
 
29494
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_DEPTH_CLEAR, attribute, attributeValue))
 
29495
            {return false;}
 
29496
    }
 
29497
    }
 
29498
    }
 
29499
}
 
29500
 
 
29501
 
 
29502
    return true;
 
29503
}
 
29504
 
 
29505
//---------------------------------------------------------------------
 
29506
bool ColladaParserAutoGen15Private::_preEnd__depth_clear()
 
29507
{
 
29508
#ifdef GENERATEDSAXPARSER_VALIDATION
 
29509
    if ( mValidate )
 
29510
    {
 
29511
 
 
29512
        bool validationResult = _validateEnd__depth_clear();
 
29513
        if ( !validationResult ) return false;
 
29514
 
 
29515
    } // validation
 
29516
#endif
 
29517
 
 
29518
bool failed;
 
29519
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
29520
DISABLE_WARNING_UNUSED(ptrForErr)
 
29521
float parameter = GeneratedSaxParser::Utils::toFloat((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
29522
bool returnValue;
 
29523
if (!failed)
 
29524
{
 
29525
    returnValue = mImpl->data__depth_clear(parameter);
 
29526
}
 
29527
else
 
29528
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_DEPTH_CLEAR, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
29529
if (mLastIncompleteFragmentInCharacterData)
 
29530
    mStackMemoryManager.deleteObject();
 
29531
mLastIncompleteFragmentInCharacterData = 0;
 
29532
mEndOfDataInCurrentObjectOnStack = 0;
 
29533
return returnValue;
 
29534
}
 
29535
 
 
29536
//---------------------------------------------------------------------
 
29537
bool ColladaParserAutoGen15Private::_freeAttributes__depth_clear( void* attributeData )
 
29538
{
 
29539
    depth_clear__AttributeData* typedAttributeData = static_cast<depth_clear__AttributeData*>(attributeData);
 
29540
 
 
29541
    typedAttributeData->~depth_clear__AttributeData();
 
29542
 
 
29543
    return true;
 
29544
}
 
29545
 
 
29546
//---------------------------------------------------------------------
 
29547
bool ColladaParserAutoGen15Private::_data__draw( const ParserChar* text, size_t textLength )
 
29548
{
 
29549
 
 
29550
return mImpl->data__draw(text, textLength);
 
29551
}
 
29552
 
 
29553
//---------------------------------------------------------------------
 
29554
bool ColladaParserAutoGen15Private::_preBegin__draw( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
29555
{
 
29556
#ifdef GENERATEDSAXPARSER_VALIDATION
 
29557
    if ( mValidate )
 
29558
    {
 
29559
 
 
29560
        bool validationResult = _validateBegin__draw( attributes, attributeDataPtr, validationDataPtr );
 
29561
        if ( !validationResult ) return false;
 
29562
 
 
29563
    } // validation
 
29564
#endif
 
29565
 
 
29566
    return true;
 
29567
}
 
29568
 
 
29569
//---------------------------------------------------------------------
 
29570
bool ColladaParserAutoGen15Private::_preEnd__draw()
 
29571
{
 
29572
#ifdef GENERATEDSAXPARSER_VALIDATION
 
29573
    if ( mValidate )
 
29574
    {
 
29575
 
 
29576
        bool validationResult = _validateEnd__draw();
 
29577
        if ( !validationResult ) return false;
 
29578
 
 
29579
    } // validation
 
29580
#endif
 
29581
 
 
29582
    return true;
 
29583
}
 
29584
 
 
29585
//---------------------------------------------------------------------
 
29586
bool ColladaParserAutoGen15Private::_freeAttributes__draw( void* attributeData )
 
29587
{
 
29588
    return true;
 
29589
}
 
29590
 
 
29591
//---------------------------------------------------------------------
 
29592
const profile_GLSL__AttributeData profile_GLSL__AttributeData::DEFAULT = {0, (const ParserChar*)"PC"};
 
29593
 
 
29594
//---------------------------------------------------------------------
 
29595
bool ColladaParserAutoGen15Private::_data__profile_GLSL( const ParserChar* text, size_t textLength )
 
29596
{
 
29597
    return true;
 
29598
}
 
29599
 
 
29600
//---------------------------------------------------------------------
 
29601
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
29602
{
 
29603
#ifdef GENERATEDSAXPARSER_VALIDATION
 
29604
    if ( mValidate )
 
29605
    {
 
29606
 
 
29607
        bool validationResult = _validateBegin__profile_GLSL( attributes, attributeDataPtr, validationDataPtr );
 
29608
        if ( !validationResult ) return false;
 
29609
 
 
29610
    } // validation
 
29611
#endif
 
29612
 
 
29613
profile_GLSL__AttributeData* attributeData = newData<profile_GLSL__AttributeData>(attributeDataPtr);
 
29614
 
 
29615
const ParserChar** attributeArray = attributes.attributes;
 
29616
if ( attributeArray )
 
29617
{
 
29618
    while (true)
 
29619
    {
 
29620
        const ParserChar * attribute = *attributeArray;
 
29621
        if ( !attribute )
 
29622
            break;
 
29623
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
29624
        attributeArray++;
 
29625
        if ( !attributeArray )
 
29626
            return false;
 
29627
        const ParserChar* attributeValue = *attributeArray;
 
29628
        attributeArray++;
 
29629
 
 
29630
 
 
29631
    switch ( hash )
 
29632
    {
 
29633
    case HASH_ATTRIBUTE_ID:
 
29634
    {
 
29635
 
 
29636
attributeData->id = attributeValue;
 
29637
 
 
29638
    break;
 
29639
    }
 
29640
    case HASH_ATTRIBUTE_PLATFORM:
 
29641
    {
 
29642
 
 
29643
attributeData->platform = attributeValue;
 
29644
#ifdef GENERATEDSAXPARSER_VALIDATION
 
29645
    if ( mValidate )
 
29646
    {
 
29647
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->platform, strlen(attributeData->platform));
 
29648
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
29649
    {
 
29650
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
29651
            simpleTypeValidationResult,
 
29652
            HASH_ELEMENT_PROFILE_GLSL,
 
29653
            HASH_ATTRIBUTE_PLATFORM,
 
29654
            attributeValue) )
 
29655
        {
 
29656
            return false;
 
29657
        }
 
29658
    }
 
29659
    } // validation
 
29660
#endif
 
29661
 
 
29662
    break;
 
29663
    }
 
29664
    default:
 
29665
    {
 
29666
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_PROFILE_GLSL, attribute, attributeValue))
 
29667
            {return false;}
 
29668
    }
 
29669
    }
 
29670
    }
 
29671
}
 
29672
 
 
29673
 
 
29674
    return true;
 
29675
}
 
29676
 
 
29677
//---------------------------------------------------------------------
 
29678
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL()
 
29679
{
 
29680
#ifdef GENERATEDSAXPARSER_VALIDATION
 
29681
    if ( mValidate )
 
29682
    {
 
29683
 
 
29684
        bool validationResult = _validateEnd__profile_GLSL();
 
29685
        if ( !validationResult ) return false;
 
29686
 
 
29687
    } // validation
 
29688
#endif
 
29689
 
 
29690
    return true;
 
29691
}
 
29692
 
 
29693
//---------------------------------------------------------------------
 
29694
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL( void* attributeData )
 
29695
{
 
29696
    profile_GLSL__AttributeData* typedAttributeData = static_cast<profile_GLSL__AttributeData*>(attributeData);
 
29697
 
 
29698
    typedAttributeData->~profile_GLSL__AttributeData();
 
29699
 
 
29700
    return true;
 
29701
}
 
29702
 
 
29703
//---------------------------------------------------------------------
 
29704
const newparam____glsl_newparam_type__AttributeData newparam____glsl_newparam_type__AttributeData::DEFAULT = {0};
 
29705
 
 
29706
//---------------------------------------------------------------------
 
29707
bool ColladaParserAutoGen15Private::_data__newparam____glsl_newparam_type( const ParserChar* text, size_t textLength )
 
29708
{
 
29709
    return true;
 
29710
}
 
29711
 
 
29712
//---------------------------------------------------------------------
 
29713
bool ColladaParserAutoGen15Private::_preBegin__newparam____glsl_newparam_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
29714
{
 
29715
#ifdef GENERATEDSAXPARSER_VALIDATION
 
29716
    if ( mValidate )
 
29717
    {
 
29718
 
 
29719
        bool validationResult = _validateBegin__newparam____glsl_newparam_type( attributes, attributeDataPtr, validationDataPtr );
 
29720
        if ( !validationResult ) return false;
 
29721
 
 
29722
    } // validation
 
29723
#endif
 
29724
 
 
29725
newparam____glsl_newparam_type__AttributeData* attributeData = newData<newparam____glsl_newparam_type__AttributeData>(attributeDataPtr);
 
29726
 
 
29727
const ParserChar** attributeArray = attributes.attributes;
 
29728
if ( attributeArray )
 
29729
{
 
29730
    while (true)
 
29731
    {
 
29732
        const ParserChar * attribute = *attributeArray;
 
29733
        if ( !attribute )
 
29734
            break;
 
29735
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
29736
        attributeArray++;
 
29737
        if ( !attributeArray )
 
29738
            return false;
 
29739
        const ParserChar* attributeValue = *attributeArray;
 
29740
        attributeArray++;
 
29741
 
 
29742
 
 
29743
    switch ( hash )
 
29744
    {
 
29745
    case HASH_ATTRIBUTE_SID:
 
29746
    {
 
29747
 
 
29748
attributeData->sid = attributeValue;
 
29749
#ifdef GENERATEDSAXPARSER_VALIDATION
 
29750
    if ( mValidate )
 
29751
    {
 
29752
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
29753
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
29754
    {
 
29755
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
29756
            simpleTypeValidationResult,
 
29757
            HASH_ELEMENT_NEWPARAM,
 
29758
            HASH_ATTRIBUTE_SID,
 
29759
            attributeValue) )
 
29760
        {
 
29761
            return false;
 
29762
        }
 
29763
    }
 
29764
    } // validation
 
29765
#endif
 
29766
 
 
29767
    break;
 
29768
    }
 
29769
    default:
 
29770
    {
 
29771
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_NEWPARAM, attribute, attributeValue))
 
29772
            {return false;}
 
29773
    }
 
29774
    }
 
29775
    }
 
29776
}
 
29777
if ( !attributeData->sid )
 
29778
{
 
29779
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_NEWPARAM, HASH_ATTRIBUTE_SID, 0 ) )
 
29780
        return false;
 
29781
}
 
29782
 
 
29783
 
 
29784
    return true;
 
29785
}
 
29786
 
 
29787
//---------------------------------------------------------------------
 
29788
bool ColladaParserAutoGen15Private::_preEnd__newparam____glsl_newparam_type()
 
29789
{
 
29790
#ifdef GENERATEDSAXPARSER_VALIDATION
 
29791
    if ( mValidate )
 
29792
    {
 
29793
 
 
29794
        bool validationResult = _validateEnd__newparam____glsl_newparam_type();
 
29795
        if ( !validationResult ) return false;
 
29796
 
 
29797
    } // validation
 
29798
#endif
 
29799
 
 
29800
    return true;
 
29801
}
 
29802
 
 
29803
//---------------------------------------------------------------------
 
29804
bool ColladaParserAutoGen15Private::_freeAttributes__newparam____glsl_newparam_type( void* attributeData )
 
29805
{
 
29806
    newparam____glsl_newparam_type__AttributeData* typedAttributeData = static_cast<newparam____glsl_newparam_type__AttributeData*>(attributeData);
 
29807
 
 
29808
    typedAttributeData->~newparam____glsl_newparam_type__AttributeData();
 
29809
 
 
29810
    return true;
 
29811
}
 
29812
 
 
29813
//---------------------------------------------------------------------
 
29814
const array____glsl_array_type__AttributeData array____glsl_array_type__AttributeData::DEFAULT = {0, 0};
 
29815
 
 
29816
//---------------------------------------------------------------------
 
29817
bool ColladaParserAutoGen15Private::_data__array____glsl_array_type( const ParserChar* text, size_t textLength )
 
29818
{
 
29819
    return true;
 
29820
}
 
29821
 
 
29822
//---------------------------------------------------------------------
 
29823
bool ColladaParserAutoGen15Private::_preBegin__array____glsl_array_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
29824
{
 
29825
#ifdef GENERATEDSAXPARSER_VALIDATION
 
29826
    if ( mValidate )
 
29827
    {
 
29828
 
 
29829
        bool validationResult = _validateBegin__array____glsl_array_type( attributes, attributeDataPtr, validationDataPtr );
 
29830
        if ( !validationResult ) return false;
 
29831
 
 
29832
    } // validation
 
29833
#endif
 
29834
 
 
29835
array____glsl_array_type__AttributeData* attributeData = newData<array____glsl_array_type__AttributeData>(attributeDataPtr);
 
29836
 
 
29837
const ParserChar** attributeArray = attributes.attributes;
 
29838
if ( attributeArray )
 
29839
{
 
29840
    while (true)
 
29841
    {
 
29842
        const ParserChar * attribute = *attributeArray;
 
29843
        if ( !attribute )
 
29844
            break;
 
29845
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
29846
        attributeArray++;
 
29847
        if ( !attributeArray )
 
29848
            return false;
 
29849
        const ParserChar* attributeValue = *attributeArray;
 
29850
        attributeArray++;
 
29851
 
 
29852
 
 
29853
    switch ( hash )
 
29854
    {
 
29855
    case HASH_ATTRIBUTE_LENGTH:
 
29856
    {
 
29857
bool failed;
 
29858
attributeData->length = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
29859
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
29860
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
29861
        HASH_ELEMENT_ARRAY,
 
29862
        HASH_ATTRIBUTE_LENGTH,
 
29863
        attributeValue))
 
29864
{
 
29865
    return false;
 
29866
}
 
29867
#ifdef GENERATEDSAXPARSER_VALIDATION
 
29868
    if ( mValidate )
 
29869
    {
 
29870
    ParserError::ErrorType simpleTypeValidationResult = validate__positiveInteger(attributeData->length);
 
29871
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
29872
    {
 
29873
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
29874
            simpleTypeValidationResult,
 
29875
            HASH_ELEMENT_ARRAY,
 
29876
            HASH_ATTRIBUTE_LENGTH,
 
29877
            attributeValue) )
 
29878
        {
 
29879
            return false;
 
29880
        }
 
29881
    }
 
29882
    } // validation
 
29883
#endif
 
29884
if ( !failed )
 
29885
    attributeData->present_attributes |= array____glsl_array_type__AttributeData::ATTRIBUTE_LENGTH_PRESENT;
 
29886
 
 
29887
    break;
 
29888
    }
 
29889
    default:
 
29890
    {
 
29891
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_ARRAY, attribute, attributeValue))
 
29892
            {return false;}
 
29893
    }
 
29894
    }
 
29895
    }
 
29896
}
 
29897
if ( (attributeData->present_attributes & array____glsl_array_type__AttributeData::ATTRIBUTE_LENGTH_PRESENT) == 0 )
 
29898
{
 
29899
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_ARRAY, HASH_ATTRIBUTE_LENGTH, 0 ) )
 
29900
        return false;
 
29901
}
 
29902
 
 
29903
 
 
29904
    return true;
 
29905
}
 
29906
 
 
29907
//---------------------------------------------------------------------
 
29908
bool ColladaParserAutoGen15Private::_preEnd__array____glsl_array_type()
 
29909
{
 
29910
#ifdef GENERATEDSAXPARSER_VALIDATION
 
29911
    if ( mValidate )
 
29912
    {
 
29913
 
 
29914
        bool validationResult = _validateEnd__array____glsl_array_type();
 
29915
        if ( !validationResult ) return false;
 
29916
 
 
29917
    } // validation
 
29918
#endif
 
29919
 
 
29920
    return true;
 
29921
}
 
29922
 
 
29923
//---------------------------------------------------------------------
 
29924
bool ColladaParserAutoGen15Private::_freeAttributes__array____glsl_array_type( void* attributeData )
 
29925
{
 
29926
    array____glsl_array_type__AttributeData* typedAttributeData = static_cast<array____glsl_array_type__AttributeData*>(attributeData);
 
29927
 
 
29928
    typedAttributeData->~array____glsl_array_type__AttributeData();
 
29929
 
 
29930
    return true;
 
29931
}
 
29932
 
 
29933
//---------------------------------------------------------------------
 
29934
const profile_glsl_type____technique__AttributeData profile_glsl_type____technique__AttributeData::DEFAULT = {0, 0};
 
29935
 
 
29936
//---------------------------------------------------------------------
 
29937
bool ColladaParserAutoGen15Private::_data__profile_glsl_type____technique( const ParserChar* text, size_t textLength )
 
29938
{
 
29939
    return true;
 
29940
}
 
29941
 
 
29942
//---------------------------------------------------------------------
 
29943
bool ColladaParserAutoGen15Private::_preBegin__profile_glsl_type____technique( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
29944
{
 
29945
#ifdef GENERATEDSAXPARSER_VALIDATION
 
29946
    if ( mValidate )
 
29947
    {
 
29948
 
 
29949
        bool validationResult = _validateBegin__profile_glsl_type____technique( attributes, attributeDataPtr, validationDataPtr );
 
29950
        if ( !validationResult ) return false;
 
29951
 
 
29952
    } // validation
 
29953
#endif
 
29954
 
 
29955
profile_glsl_type____technique__AttributeData* attributeData = newData<profile_glsl_type____technique__AttributeData>(attributeDataPtr);
 
29956
 
 
29957
const ParserChar** attributeArray = attributes.attributes;
 
29958
if ( attributeArray )
 
29959
{
 
29960
    while (true)
 
29961
    {
 
29962
        const ParserChar * attribute = *attributeArray;
 
29963
        if ( !attribute )
 
29964
            break;
 
29965
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
29966
        attributeArray++;
 
29967
        if ( !attributeArray )
 
29968
            return false;
 
29969
        const ParserChar* attributeValue = *attributeArray;
 
29970
        attributeArray++;
 
29971
 
 
29972
 
 
29973
    switch ( hash )
 
29974
    {
 
29975
    case HASH_ATTRIBUTE_ID:
 
29976
    {
 
29977
 
 
29978
attributeData->id = attributeValue;
 
29979
 
 
29980
    break;
 
29981
    }
 
29982
    case HASH_ATTRIBUTE_SID:
 
29983
    {
 
29984
 
 
29985
attributeData->sid = attributeValue;
 
29986
#ifdef GENERATEDSAXPARSER_VALIDATION
 
29987
    if ( mValidate )
 
29988
    {
 
29989
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
29990
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
29991
    {
 
29992
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
29993
            simpleTypeValidationResult,
 
29994
            HASH_ELEMENT_TECHNIQUE,
 
29995
            HASH_ATTRIBUTE_SID,
 
29996
            attributeValue) )
 
29997
        {
 
29998
            return false;
 
29999
        }
 
30000
    }
 
30001
    } // validation
 
30002
#endif
 
30003
 
 
30004
    break;
 
30005
    }
 
30006
    default:
 
30007
    {
 
30008
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_TECHNIQUE, attribute, attributeValue))
 
30009
            {return false;}
 
30010
    }
 
30011
    }
 
30012
    }
 
30013
}
 
30014
if ( !attributeData->sid )
 
30015
{
 
30016
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_TECHNIQUE, HASH_ATTRIBUTE_SID, 0 ) )
 
30017
        return false;
 
30018
}
 
30019
 
 
30020
 
 
30021
    return true;
 
30022
}
 
30023
 
 
30024
//---------------------------------------------------------------------
 
30025
bool ColladaParserAutoGen15Private::_preEnd__profile_glsl_type____technique()
 
30026
{
 
30027
#ifdef GENERATEDSAXPARSER_VALIDATION
 
30028
    if ( mValidate )
 
30029
    {
 
30030
 
 
30031
        bool validationResult = _validateEnd__profile_glsl_type____technique();
 
30032
        if ( !validationResult ) return false;
 
30033
 
 
30034
    } // validation
 
30035
#endif
 
30036
 
 
30037
    return true;
 
30038
}
 
30039
 
 
30040
//---------------------------------------------------------------------
 
30041
bool ColladaParserAutoGen15Private::_freeAttributes__profile_glsl_type____technique( void* attributeData )
 
30042
{
 
30043
    profile_glsl_type____technique__AttributeData* typedAttributeData = static_cast<profile_glsl_type____technique__AttributeData*>(attributeData);
 
30044
 
 
30045
    typedAttributeData->~profile_glsl_type____technique__AttributeData();
 
30046
 
 
30047
    return true;
 
30048
}
 
30049
 
 
30050
//---------------------------------------------------------------------
 
30051
const profile_GLSL__technique__pass__AttributeData profile_GLSL__technique__pass__AttributeData::DEFAULT = {0};
 
30052
 
 
30053
//---------------------------------------------------------------------
 
30054
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass( const ParserChar* text, size_t textLength )
 
30055
{
 
30056
    return true;
 
30057
}
 
30058
 
 
30059
//---------------------------------------------------------------------
 
30060
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
30061
{
 
30062
#ifdef GENERATEDSAXPARSER_VALIDATION
 
30063
    if ( mValidate )
 
30064
    {
 
30065
 
 
30066
        bool validationResult = _validateBegin__profile_GLSL__technique__pass( attributes, attributeDataPtr, validationDataPtr );
 
30067
        if ( !validationResult ) return false;
 
30068
 
 
30069
    } // validation
 
30070
#endif
 
30071
 
 
30072
profile_GLSL__technique__pass__AttributeData* attributeData = newData<profile_GLSL__technique__pass__AttributeData>(attributeDataPtr);
 
30073
 
 
30074
const ParserChar** attributeArray = attributes.attributes;
 
30075
if ( attributeArray )
 
30076
{
 
30077
    while (true)
 
30078
    {
 
30079
        const ParserChar * attribute = *attributeArray;
 
30080
        if ( !attribute )
 
30081
            break;
 
30082
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
30083
        attributeArray++;
 
30084
        if ( !attributeArray )
 
30085
            return false;
 
30086
        const ParserChar* attributeValue = *attributeArray;
 
30087
        attributeArray++;
 
30088
 
 
30089
 
 
30090
    switch ( hash )
 
30091
    {
 
30092
    case HASH_ATTRIBUTE_SID:
 
30093
    {
 
30094
 
 
30095
attributeData->sid = attributeValue;
 
30096
#ifdef GENERATEDSAXPARSER_VALIDATION
 
30097
    if ( mValidate )
 
30098
    {
 
30099
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
30100
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
30101
    {
 
30102
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
30103
            simpleTypeValidationResult,
 
30104
            HASH_ELEMENT_PASS,
 
30105
            HASH_ATTRIBUTE_SID,
 
30106
            attributeValue) )
 
30107
        {
 
30108
            return false;
 
30109
        }
 
30110
    }
 
30111
    } // validation
 
30112
#endif
 
30113
 
 
30114
    break;
 
30115
    }
 
30116
    default:
 
30117
    {
 
30118
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_PASS, attribute, attributeValue))
 
30119
            {return false;}
 
30120
    }
 
30121
    }
 
30122
    }
 
30123
}
 
30124
 
 
30125
 
 
30126
    return true;
 
30127
}
 
30128
 
 
30129
//---------------------------------------------------------------------
 
30130
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass()
 
30131
{
 
30132
#ifdef GENERATEDSAXPARSER_VALIDATION
 
30133
    if ( mValidate )
 
30134
    {
 
30135
 
 
30136
        bool validationResult = _validateEnd__profile_GLSL__technique__pass();
 
30137
        if ( !validationResult ) return false;
 
30138
 
 
30139
    } // validation
 
30140
#endif
 
30141
 
 
30142
    return true;
 
30143
}
 
30144
 
 
30145
//---------------------------------------------------------------------
 
30146
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass( void* attributeData )
 
30147
{
 
30148
    profile_GLSL__technique__pass__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__AttributeData*>(attributeData);
 
30149
 
 
30150
    typedAttributeData->~profile_GLSL__technique__pass__AttributeData();
 
30151
 
 
30152
    return true;
 
30153
}
 
30154
 
 
30155
//---------------------------------------------------------------------
 
30156
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states( const ParserChar* text, size_t textLength )
 
30157
{
 
30158
    return true;
 
30159
}
 
30160
 
 
30161
//---------------------------------------------------------------------
 
30162
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
30163
{
 
30164
#ifdef GENERATEDSAXPARSER_VALIDATION
 
30165
    if ( mValidate )
 
30166
    {
 
30167
 
 
30168
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states( attributes, attributeDataPtr, validationDataPtr );
 
30169
        if ( !validationResult ) return false;
 
30170
 
 
30171
    } // validation
 
30172
#endif
 
30173
 
 
30174
    return true;
 
30175
}
 
30176
 
 
30177
//---------------------------------------------------------------------
 
30178
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states()
 
30179
{
 
30180
#ifdef GENERATEDSAXPARSER_VALIDATION
 
30181
    if ( mValidate )
 
30182
    {
 
30183
 
 
30184
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states();
 
30185
        if ( !validationResult ) return false;
 
30186
 
 
30187
    } // validation
 
30188
#endif
 
30189
 
 
30190
    return true;
 
30191
}
 
30192
 
 
30193
//---------------------------------------------------------------------
 
30194
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states( void* attributeData )
 
30195
{
 
30196
    return true;
 
30197
}
 
30198
 
 
30199
//---------------------------------------------------------------------
 
30200
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__alpha_func( const ParserChar* text, size_t textLength )
 
30201
{
 
30202
    return true;
 
30203
}
 
30204
 
 
30205
//---------------------------------------------------------------------
 
30206
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__alpha_func( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
30207
{
 
30208
#ifdef GENERATEDSAXPARSER_VALIDATION
 
30209
    if ( mValidate )
 
30210
    {
 
30211
 
 
30212
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__alpha_func( attributes, attributeDataPtr, validationDataPtr );
 
30213
        if ( !validationResult ) return false;
 
30214
 
 
30215
    } // validation
 
30216
#endif
 
30217
 
 
30218
    return true;
 
30219
}
 
30220
 
 
30221
//---------------------------------------------------------------------
 
30222
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__alpha_func()
 
30223
{
 
30224
#ifdef GENERATEDSAXPARSER_VALIDATION
 
30225
    if ( mValidate )
 
30226
    {
 
30227
 
 
30228
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__alpha_func();
 
30229
        if ( !validationResult ) return false;
 
30230
 
 
30231
    } // validation
 
30232
#endif
 
30233
 
 
30234
    return true;
 
30235
}
 
30236
 
 
30237
//---------------------------------------------------------------------
 
30238
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__alpha_func( void* attributeData )
 
30239
{
 
30240
    return true;
 
30241
}
 
30242
 
 
30243
//---------------------------------------------------------------------
 
30244
const profile_GLSL__technique__pass__states__alpha_func__func__AttributeData profile_GLSL__technique__pass__states__alpha_func__func__AttributeData::DEFAULT = {ENUM__gl_func_enum__ALWAYS, 0};
 
30245
 
 
30246
//---------------------------------------------------------------------
 
30247
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__alpha_func__func( const ParserChar* text, size_t textLength )
 
30248
{
 
30249
    return true;
 
30250
}
 
30251
 
 
30252
//---------------------------------------------------------------------
 
30253
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__alpha_func__func( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
30254
{
 
30255
#ifdef GENERATEDSAXPARSER_VALIDATION
 
30256
    if ( mValidate )
 
30257
    {
 
30258
 
 
30259
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__alpha_func__func( attributes, attributeDataPtr, validationDataPtr );
 
30260
        if ( !validationResult ) return false;
 
30261
 
 
30262
    } // validation
 
30263
#endif
 
30264
 
 
30265
profile_GLSL__technique__pass__states__alpha_func__func__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__alpha_func__func__AttributeData>(attributeDataPtr);
 
30266
 
 
30267
const ParserChar** attributeArray = attributes.attributes;
 
30268
if ( attributeArray )
 
30269
{
 
30270
    while (true)
 
30271
    {
 
30272
        const ParserChar * attribute = *attributeArray;
 
30273
        if ( !attribute )
 
30274
            break;
 
30275
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
30276
        attributeArray++;
 
30277
        if ( !attributeArray )
 
30278
            return false;
 
30279
        const ParserChar* attributeValue = *attributeArray;
 
30280
        attributeArray++;
 
30281
 
 
30282
 
 
30283
    switch ( hash )
 
30284
    {
 
30285
    case HASH_ATTRIBUTE_VALUE:
 
30286
    {
 
30287
bool failed;
 
30288
attributeData->value = Utils::toEnum<ENUM__gl_func_enum, StringHash, ENUM__gl_func_enum__COUNT>(attributeValue, failed, ENUM__gl_func_enumMap, Utils::calculateStringHash);
 
30289
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
30290
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
30291
        HASH_ELEMENT_FUNC,
 
30292
        HASH_ATTRIBUTE_VALUE,
 
30293
        attributeValue))
 
30294
{
 
30295
    return false;
 
30296
}
 
30297
 
 
30298
    break;
 
30299
    }
 
30300
    case HASH_ATTRIBUTE_PARAM:
 
30301
    {
 
30302
 
 
30303
attributeData->param = attributeValue;
 
30304
#ifdef GENERATEDSAXPARSER_VALIDATION
 
30305
    if ( mValidate )
 
30306
    {
 
30307
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
30308
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
30309
    {
 
30310
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
30311
            simpleTypeValidationResult,
 
30312
            HASH_ELEMENT_FUNC,
 
30313
            HASH_ATTRIBUTE_PARAM,
 
30314
            attributeValue) )
 
30315
        {
 
30316
            return false;
 
30317
        }
 
30318
    }
 
30319
    } // validation
 
30320
#endif
 
30321
 
 
30322
    break;
 
30323
    }
 
30324
    default:
 
30325
    {
 
30326
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FUNC, attribute, attributeValue))
 
30327
            {return false;}
 
30328
    }
 
30329
    }
 
30330
    }
 
30331
}
 
30332
 
 
30333
 
 
30334
    return true;
 
30335
}
 
30336
 
 
30337
//---------------------------------------------------------------------
 
30338
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__alpha_func__func()
 
30339
{
 
30340
#ifdef GENERATEDSAXPARSER_VALIDATION
 
30341
    if ( mValidate )
 
30342
    {
 
30343
 
 
30344
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__alpha_func__func();
 
30345
        if ( !validationResult ) return false;
 
30346
 
 
30347
    } // validation
 
30348
#endif
 
30349
 
 
30350
    return true;
 
30351
}
 
30352
 
 
30353
//---------------------------------------------------------------------
 
30354
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__alpha_func__func( void* attributeData )
 
30355
{
 
30356
    profile_GLSL__technique__pass__states__alpha_func__func__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__alpha_func__func__AttributeData*>(attributeData);
 
30357
 
 
30358
    typedAttributeData->~profile_GLSL__technique__pass__states__alpha_func__func__AttributeData();
 
30359
 
 
30360
    return true;
 
30361
}
 
30362
 
 
30363
//---------------------------------------------------------------------
 
30364
const profile_GLSL__technique__pass__states__alpha_func__value__AttributeData profile_GLSL__technique__pass__states__alpha_func__value__AttributeData::DEFAULT = {0.0E1, 0};
 
30365
 
 
30366
//---------------------------------------------------------------------
 
30367
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__alpha_func__value( const ParserChar* text, size_t textLength )
 
30368
{
 
30369
    return true;
 
30370
}
 
30371
 
 
30372
//---------------------------------------------------------------------
 
30373
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__alpha_func__value( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
30374
{
 
30375
#ifdef GENERATEDSAXPARSER_VALIDATION
 
30376
    if ( mValidate )
 
30377
    {
 
30378
 
 
30379
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__alpha_func__value( attributes, attributeDataPtr, validationDataPtr );
 
30380
        if ( !validationResult ) return false;
 
30381
 
 
30382
    } // validation
 
30383
#endif
 
30384
 
 
30385
profile_GLSL__technique__pass__states__alpha_func__value__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__alpha_func__value__AttributeData>(attributeDataPtr);
 
30386
 
 
30387
const ParserChar** attributeArray = attributes.attributes;
 
30388
if ( attributeArray )
 
30389
{
 
30390
    while (true)
 
30391
    {
 
30392
        const ParserChar * attribute = *attributeArray;
 
30393
        if ( !attribute )
 
30394
            break;
 
30395
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
30396
        attributeArray++;
 
30397
        if ( !attributeArray )
 
30398
            return false;
 
30399
        const ParserChar* attributeValue = *attributeArray;
 
30400
        attributeArray++;
 
30401
 
 
30402
 
 
30403
    switch ( hash )
 
30404
    {
 
30405
    case HASH_ATTRIBUTE_VALUE:
 
30406
    {
 
30407
bool failed;
 
30408
attributeData->value = GeneratedSaxParser::Utils::toFloat(attributeValue, failed);
 
30409
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
30410
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
30411
        HASH_ELEMENT_VALUE,
 
30412
        HASH_ATTRIBUTE_VALUE,
 
30413
        attributeValue))
 
30414
{
 
30415
    return false;
 
30416
}
 
30417
#ifdef GENERATEDSAXPARSER_VALIDATION
 
30418
    if ( mValidate )
 
30419
    {
 
30420
    ParserError::ErrorType simpleTypeValidationResult = validate__gl_alpha_value_type(attributeData->value);
 
30421
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
30422
    {
 
30423
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
30424
            simpleTypeValidationResult,
 
30425
            HASH_ELEMENT_VALUE,
 
30426
            HASH_ATTRIBUTE_VALUE,
 
30427
            attributeValue) )
 
30428
        {
 
30429
            return false;
 
30430
        }
 
30431
    }
 
30432
    } // validation
 
30433
#endif
 
30434
 
 
30435
    break;
 
30436
    }
 
30437
    case HASH_ATTRIBUTE_PARAM:
 
30438
    {
 
30439
 
 
30440
attributeData->param = attributeValue;
 
30441
#ifdef GENERATEDSAXPARSER_VALIDATION
 
30442
    if ( mValidate )
 
30443
    {
 
30444
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
30445
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
30446
    {
 
30447
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
30448
            simpleTypeValidationResult,
 
30449
            HASH_ELEMENT_VALUE,
 
30450
            HASH_ATTRIBUTE_PARAM,
 
30451
            attributeValue) )
 
30452
        {
 
30453
            return false;
 
30454
        }
 
30455
    }
 
30456
    } // validation
 
30457
#endif
 
30458
 
 
30459
    break;
 
30460
    }
 
30461
    default:
 
30462
    {
 
30463
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_VALUE, attribute, attributeValue))
 
30464
            {return false;}
 
30465
    }
 
30466
    }
 
30467
    }
 
30468
}
 
30469
 
 
30470
 
 
30471
    return true;
 
30472
}
 
30473
 
 
30474
//---------------------------------------------------------------------
 
30475
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__alpha_func__value()
 
30476
{
 
30477
#ifdef GENERATEDSAXPARSER_VALIDATION
 
30478
    if ( mValidate )
 
30479
    {
 
30480
 
 
30481
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__alpha_func__value();
 
30482
        if ( !validationResult ) return false;
 
30483
 
 
30484
    } // validation
 
30485
#endif
 
30486
 
 
30487
    return true;
 
30488
}
 
30489
 
 
30490
//---------------------------------------------------------------------
 
30491
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__alpha_func__value( void* attributeData )
 
30492
{
 
30493
    profile_GLSL__technique__pass__states__alpha_func__value__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__alpha_func__value__AttributeData*>(attributeData);
 
30494
 
 
30495
    typedAttributeData->~profile_GLSL__technique__pass__states__alpha_func__value__AttributeData();
 
30496
 
 
30497
    return true;
 
30498
}
 
30499
 
 
30500
//---------------------------------------------------------------------
 
30501
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__blend_func( const ParserChar* text, size_t textLength )
 
30502
{
 
30503
    return true;
 
30504
}
 
30505
 
 
30506
//---------------------------------------------------------------------
 
30507
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__blend_func( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
30508
{
 
30509
#ifdef GENERATEDSAXPARSER_VALIDATION
 
30510
    if ( mValidate )
 
30511
    {
 
30512
 
 
30513
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__blend_func( attributes, attributeDataPtr, validationDataPtr );
 
30514
        if ( !validationResult ) return false;
 
30515
 
 
30516
    } // validation
 
30517
#endif
 
30518
 
 
30519
    return true;
 
30520
}
 
30521
 
 
30522
//---------------------------------------------------------------------
 
30523
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__blend_func()
 
30524
{
 
30525
#ifdef GENERATEDSAXPARSER_VALIDATION
 
30526
    if ( mValidate )
 
30527
    {
 
30528
 
 
30529
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__blend_func();
 
30530
        if ( !validationResult ) return false;
 
30531
 
 
30532
    } // validation
 
30533
#endif
 
30534
 
 
30535
    return true;
 
30536
}
 
30537
 
 
30538
//---------------------------------------------------------------------
 
30539
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__blend_func( void* attributeData )
 
30540
{
 
30541
    return true;
 
30542
}
 
30543
 
 
30544
//---------------------------------------------------------------------
 
30545
const profile_GLSL__technique__pass__states__blend_func__src__AttributeData profile_GLSL__technique__pass__states__blend_func__src__AttributeData::DEFAULT = {ENUM__gl_blend_enum__ONE, 0};
 
30546
 
 
30547
//---------------------------------------------------------------------
 
30548
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__blend_func__src( const ParserChar* text, size_t textLength )
 
30549
{
 
30550
    return true;
 
30551
}
 
30552
 
 
30553
//---------------------------------------------------------------------
 
30554
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__blend_func__src( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
30555
{
 
30556
#ifdef GENERATEDSAXPARSER_VALIDATION
 
30557
    if ( mValidate )
 
30558
    {
 
30559
 
 
30560
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__blend_func__src( attributes, attributeDataPtr, validationDataPtr );
 
30561
        if ( !validationResult ) return false;
 
30562
 
 
30563
    } // validation
 
30564
#endif
 
30565
 
 
30566
profile_GLSL__technique__pass__states__blend_func__src__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__blend_func__src__AttributeData>(attributeDataPtr);
 
30567
 
 
30568
const ParserChar** attributeArray = attributes.attributes;
 
30569
if ( attributeArray )
 
30570
{
 
30571
    while (true)
 
30572
    {
 
30573
        const ParserChar * attribute = *attributeArray;
 
30574
        if ( !attribute )
 
30575
            break;
 
30576
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
30577
        attributeArray++;
 
30578
        if ( !attributeArray )
 
30579
            return false;
 
30580
        const ParserChar* attributeValue = *attributeArray;
 
30581
        attributeArray++;
 
30582
 
 
30583
 
 
30584
    switch ( hash )
 
30585
    {
 
30586
    case HASH_ATTRIBUTE_VALUE:
 
30587
    {
 
30588
bool failed;
 
30589
attributeData->value = Utils::toEnum<ENUM__gl_blend_enum, StringHash, ENUM__gl_blend_enum__COUNT>(attributeValue, failed, ENUM__gl_blend_enumMap, Utils::calculateStringHash);
 
30590
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
30591
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
30592
        HASH_ELEMENT_SRC,
 
30593
        HASH_ATTRIBUTE_VALUE,
 
30594
        attributeValue))
 
30595
{
 
30596
    return false;
 
30597
}
 
30598
 
 
30599
    break;
 
30600
    }
 
30601
    case HASH_ATTRIBUTE_PARAM:
 
30602
    {
 
30603
 
 
30604
attributeData->param = attributeValue;
 
30605
#ifdef GENERATEDSAXPARSER_VALIDATION
 
30606
    if ( mValidate )
 
30607
    {
 
30608
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
30609
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
30610
    {
 
30611
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
30612
            simpleTypeValidationResult,
 
30613
            HASH_ELEMENT_SRC,
 
30614
            HASH_ATTRIBUTE_PARAM,
 
30615
            attributeValue) )
 
30616
        {
 
30617
            return false;
 
30618
        }
 
30619
    }
 
30620
    } // validation
 
30621
#endif
 
30622
 
 
30623
    break;
 
30624
    }
 
30625
    default:
 
30626
    {
 
30627
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SRC, attribute, attributeValue))
 
30628
            {return false;}
 
30629
    }
 
30630
    }
 
30631
    }
 
30632
}
 
30633
 
 
30634
 
 
30635
    return true;
 
30636
}
 
30637
 
 
30638
//---------------------------------------------------------------------
 
30639
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__blend_func__src()
 
30640
{
 
30641
#ifdef GENERATEDSAXPARSER_VALIDATION
 
30642
    if ( mValidate )
 
30643
    {
 
30644
 
 
30645
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__blend_func__src();
 
30646
        if ( !validationResult ) return false;
 
30647
 
 
30648
    } // validation
 
30649
#endif
 
30650
 
 
30651
    return true;
 
30652
}
 
30653
 
 
30654
//---------------------------------------------------------------------
 
30655
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__blend_func__src( void* attributeData )
 
30656
{
 
30657
    profile_GLSL__technique__pass__states__blend_func__src__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__blend_func__src__AttributeData*>(attributeData);
 
30658
 
 
30659
    typedAttributeData->~profile_GLSL__technique__pass__states__blend_func__src__AttributeData();
 
30660
 
 
30661
    return true;
 
30662
}
 
30663
 
 
30664
//---------------------------------------------------------------------
 
30665
const profile_GLSL__technique__pass__states__blend_func__dest__AttributeData profile_GLSL__technique__pass__states__blend_func__dest__AttributeData::DEFAULT = {ENUM__gl_blend_enum__ZERO, 0};
 
30666
 
 
30667
//---------------------------------------------------------------------
 
30668
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__blend_func__dest( const ParserChar* text, size_t textLength )
 
30669
{
 
30670
    return true;
 
30671
}
 
30672
 
 
30673
//---------------------------------------------------------------------
 
30674
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__blend_func__dest( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
30675
{
 
30676
#ifdef GENERATEDSAXPARSER_VALIDATION
 
30677
    if ( mValidate )
 
30678
    {
 
30679
 
 
30680
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__blend_func__dest( attributes, attributeDataPtr, validationDataPtr );
 
30681
        if ( !validationResult ) return false;
 
30682
 
 
30683
    } // validation
 
30684
#endif
 
30685
 
 
30686
profile_GLSL__technique__pass__states__blend_func__dest__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__blend_func__dest__AttributeData>(attributeDataPtr);
 
30687
 
 
30688
const ParserChar** attributeArray = attributes.attributes;
 
30689
if ( attributeArray )
 
30690
{
 
30691
    while (true)
 
30692
    {
 
30693
        const ParserChar * attribute = *attributeArray;
 
30694
        if ( !attribute )
 
30695
            break;
 
30696
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
30697
        attributeArray++;
 
30698
        if ( !attributeArray )
 
30699
            return false;
 
30700
        const ParserChar* attributeValue = *attributeArray;
 
30701
        attributeArray++;
 
30702
 
 
30703
 
 
30704
    switch ( hash )
 
30705
    {
 
30706
    case HASH_ATTRIBUTE_VALUE:
 
30707
    {
 
30708
bool failed;
 
30709
attributeData->value = Utils::toEnum<ENUM__gl_blend_enum, StringHash, ENUM__gl_blend_enum__COUNT>(attributeValue, failed, ENUM__gl_blend_enumMap, Utils::calculateStringHash);
 
30710
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
30711
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
30712
        HASH_ELEMENT_DEST,
 
30713
        HASH_ATTRIBUTE_VALUE,
 
30714
        attributeValue))
 
30715
{
 
30716
    return false;
 
30717
}
 
30718
 
 
30719
    break;
 
30720
    }
 
30721
    case HASH_ATTRIBUTE_PARAM:
 
30722
    {
 
30723
 
 
30724
attributeData->param = attributeValue;
 
30725
#ifdef GENERATEDSAXPARSER_VALIDATION
 
30726
    if ( mValidate )
 
30727
    {
 
30728
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
30729
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
30730
    {
 
30731
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
30732
            simpleTypeValidationResult,
 
30733
            HASH_ELEMENT_DEST,
 
30734
            HASH_ATTRIBUTE_PARAM,
 
30735
            attributeValue) )
 
30736
        {
 
30737
            return false;
 
30738
        }
 
30739
    }
 
30740
    } // validation
 
30741
#endif
 
30742
 
 
30743
    break;
 
30744
    }
 
30745
    default:
 
30746
    {
 
30747
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_DEST, attribute, attributeValue))
 
30748
            {return false;}
 
30749
    }
 
30750
    }
 
30751
    }
 
30752
}
 
30753
 
 
30754
 
 
30755
    return true;
 
30756
}
 
30757
 
 
30758
//---------------------------------------------------------------------
 
30759
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__blend_func__dest()
 
30760
{
 
30761
#ifdef GENERATEDSAXPARSER_VALIDATION
 
30762
    if ( mValidate )
 
30763
    {
 
30764
 
 
30765
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__blend_func__dest();
 
30766
        if ( !validationResult ) return false;
 
30767
 
 
30768
    } // validation
 
30769
#endif
 
30770
 
 
30771
    return true;
 
30772
}
 
30773
 
 
30774
//---------------------------------------------------------------------
 
30775
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__blend_func__dest( void* attributeData )
 
30776
{
 
30777
    profile_GLSL__technique__pass__states__blend_func__dest__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__blend_func__dest__AttributeData*>(attributeData);
 
30778
 
 
30779
    typedAttributeData->~profile_GLSL__technique__pass__states__blend_func__dest__AttributeData();
 
30780
 
 
30781
    return true;
 
30782
}
 
30783
 
 
30784
//---------------------------------------------------------------------
 
30785
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__blend_func_separate( const ParserChar* text, size_t textLength )
 
30786
{
 
30787
    return true;
 
30788
}
 
30789
 
 
30790
//---------------------------------------------------------------------
 
30791
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__blend_func_separate( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
30792
{
 
30793
#ifdef GENERATEDSAXPARSER_VALIDATION
 
30794
    if ( mValidate )
 
30795
    {
 
30796
 
 
30797
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__blend_func_separate( attributes, attributeDataPtr, validationDataPtr );
 
30798
        if ( !validationResult ) return false;
 
30799
 
 
30800
    } // validation
 
30801
#endif
 
30802
 
 
30803
    return true;
 
30804
}
 
30805
 
 
30806
//---------------------------------------------------------------------
 
30807
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__blend_func_separate()
 
30808
{
 
30809
#ifdef GENERATEDSAXPARSER_VALIDATION
 
30810
    if ( mValidate )
 
30811
    {
 
30812
 
 
30813
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__blend_func_separate();
 
30814
        if ( !validationResult ) return false;
 
30815
 
 
30816
    } // validation
 
30817
#endif
 
30818
 
 
30819
    return true;
 
30820
}
 
30821
 
 
30822
//---------------------------------------------------------------------
 
30823
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__blend_func_separate( void* attributeData )
 
30824
{
 
30825
    return true;
 
30826
}
 
30827
 
 
30828
//---------------------------------------------------------------------
 
30829
const profile_GLSL__technique__pass__states__blend_func_separate__src_rgb__AttributeData profile_GLSL__technique__pass__states__blend_func_separate__src_rgb__AttributeData::DEFAULT = {ENUM__gl_blend_enum__ONE, 0};
 
30830
 
 
30831
//---------------------------------------------------------------------
 
30832
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__blend_func_separate__src_rgb( const ParserChar* text, size_t textLength )
 
30833
{
 
30834
    return true;
 
30835
}
 
30836
 
 
30837
//---------------------------------------------------------------------
 
30838
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__blend_func_separate__src_rgb( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
30839
{
 
30840
#ifdef GENERATEDSAXPARSER_VALIDATION
 
30841
    if ( mValidate )
 
30842
    {
 
30843
 
 
30844
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__blend_func_separate__src_rgb( attributes, attributeDataPtr, validationDataPtr );
 
30845
        if ( !validationResult ) return false;
 
30846
 
 
30847
    } // validation
 
30848
#endif
 
30849
 
 
30850
profile_GLSL__technique__pass__states__blend_func_separate__src_rgb__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__blend_func_separate__src_rgb__AttributeData>(attributeDataPtr);
 
30851
 
 
30852
const ParserChar** attributeArray = attributes.attributes;
 
30853
if ( attributeArray )
 
30854
{
 
30855
    while (true)
 
30856
    {
 
30857
        const ParserChar * attribute = *attributeArray;
 
30858
        if ( !attribute )
 
30859
            break;
 
30860
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
30861
        attributeArray++;
 
30862
        if ( !attributeArray )
 
30863
            return false;
 
30864
        const ParserChar* attributeValue = *attributeArray;
 
30865
        attributeArray++;
 
30866
 
 
30867
 
 
30868
    switch ( hash )
 
30869
    {
 
30870
    case HASH_ATTRIBUTE_VALUE:
 
30871
    {
 
30872
bool failed;
 
30873
attributeData->value = Utils::toEnum<ENUM__gl_blend_enum, StringHash, ENUM__gl_blend_enum__COUNT>(attributeValue, failed, ENUM__gl_blend_enumMap, Utils::calculateStringHash);
 
30874
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
30875
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
30876
        HASH_ELEMENT_SRC_RGB,
 
30877
        HASH_ATTRIBUTE_VALUE,
 
30878
        attributeValue))
 
30879
{
 
30880
    return false;
 
30881
}
 
30882
 
 
30883
    break;
 
30884
    }
 
30885
    case HASH_ATTRIBUTE_PARAM:
 
30886
    {
 
30887
 
 
30888
attributeData->param = attributeValue;
 
30889
#ifdef GENERATEDSAXPARSER_VALIDATION
 
30890
    if ( mValidate )
 
30891
    {
 
30892
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
30893
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
30894
    {
 
30895
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
30896
            simpleTypeValidationResult,
 
30897
            HASH_ELEMENT_SRC_RGB,
 
30898
            HASH_ATTRIBUTE_PARAM,
 
30899
            attributeValue) )
 
30900
        {
 
30901
            return false;
 
30902
        }
 
30903
    }
 
30904
    } // validation
 
30905
#endif
 
30906
 
 
30907
    break;
 
30908
    }
 
30909
    default:
 
30910
    {
 
30911
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SRC_RGB, attribute, attributeValue))
 
30912
            {return false;}
 
30913
    }
 
30914
    }
 
30915
    }
 
30916
}
 
30917
 
 
30918
 
 
30919
    return true;
 
30920
}
 
30921
 
 
30922
//---------------------------------------------------------------------
 
30923
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__blend_func_separate__src_rgb()
 
30924
{
 
30925
#ifdef GENERATEDSAXPARSER_VALIDATION
 
30926
    if ( mValidate )
 
30927
    {
 
30928
 
 
30929
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__blend_func_separate__src_rgb();
 
30930
        if ( !validationResult ) return false;
 
30931
 
 
30932
    } // validation
 
30933
#endif
 
30934
 
 
30935
    return true;
 
30936
}
 
30937
 
 
30938
//---------------------------------------------------------------------
 
30939
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__blend_func_separate__src_rgb( void* attributeData )
 
30940
{
 
30941
    profile_GLSL__technique__pass__states__blend_func_separate__src_rgb__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__blend_func_separate__src_rgb__AttributeData*>(attributeData);
 
30942
 
 
30943
    typedAttributeData->~profile_GLSL__technique__pass__states__blend_func_separate__src_rgb__AttributeData();
 
30944
 
 
30945
    return true;
 
30946
}
 
30947
 
 
30948
//---------------------------------------------------------------------
 
30949
const profile_GLSL__technique__pass__states__blend_func_separate__dest_rgb__AttributeData profile_GLSL__technique__pass__states__blend_func_separate__dest_rgb__AttributeData::DEFAULT = {ENUM__gl_blend_enum__ZERO, 0};
 
30950
 
 
30951
//---------------------------------------------------------------------
 
30952
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__blend_func_separate__dest_rgb( const ParserChar* text, size_t textLength )
 
30953
{
 
30954
    return true;
 
30955
}
 
30956
 
 
30957
//---------------------------------------------------------------------
 
30958
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__blend_func_separate__dest_rgb( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
30959
{
 
30960
#ifdef GENERATEDSAXPARSER_VALIDATION
 
30961
    if ( mValidate )
 
30962
    {
 
30963
 
 
30964
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__blend_func_separate__dest_rgb( attributes, attributeDataPtr, validationDataPtr );
 
30965
        if ( !validationResult ) return false;
 
30966
 
 
30967
    } // validation
 
30968
#endif
 
30969
 
 
30970
profile_GLSL__technique__pass__states__blend_func_separate__dest_rgb__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__blend_func_separate__dest_rgb__AttributeData>(attributeDataPtr);
 
30971
 
 
30972
const ParserChar** attributeArray = attributes.attributes;
 
30973
if ( attributeArray )
 
30974
{
 
30975
    while (true)
 
30976
    {
 
30977
        const ParserChar * attribute = *attributeArray;
 
30978
        if ( !attribute )
 
30979
            break;
 
30980
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
30981
        attributeArray++;
 
30982
        if ( !attributeArray )
 
30983
            return false;
 
30984
        const ParserChar* attributeValue = *attributeArray;
 
30985
        attributeArray++;
 
30986
 
 
30987
 
 
30988
    switch ( hash )
 
30989
    {
 
30990
    case HASH_ATTRIBUTE_VALUE:
 
30991
    {
 
30992
bool failed;
 
30993
attributeData->value = Utils::toEnum<ENUM__gl_blend_enum, StringHash, ENUM__gl_blend_enum__COUNT>(attributeValue, failed, ENUM__gl_blend_enumMap, Utils::calculateStringHash);
 
30994
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
30995
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
30996
        HASH_ELEMENT_DEST_RGB,
 
30997
        HASH_ATTRIBUTE_VALUE,
 
30998
        attributeValue))
 
30999
{
 
31000
    return false;
 
31001
}
 
31002
 
 
31003
    break;
 
31004
    }
 
31005
    case HASH_ATTRIBUTE_PARAM:
 
31006
    {
 
31007
 
 
31008
attributeData->param = attributeValue;
 
31009
#ifdef GENERATEDSAXPARSER_VALIDATION
 
31010
    if ( mValidate )
 
31011
    {
 
31012
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
31013
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
31014
    {
 
31015
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
31016
            simpleTypeValidationResult,
 
31017
            HASH_ELEMENT_DEST_RGB,
 
31018
            HASH_ATTRIBUTE_PARAM,
 
31019
            attributeValue) )
 
31020
        {
 
31021
            return false;
 
31022
        }
 
31023
    }
 
31024
    } // validation
 
31025
#endif
 
31026
 
 
31027
    break;
 
31028
    }
 
31029
    default:
 
31030
    {
 
31031
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_DEST_RGB, attribute, attributeValue))
 
31032
            {return false;}
 
31033
    }
 
31034
    }
 
31035
    }
 
31036
}
 
31037
 
 
31038
 
 
31039
    return true;
 
31040
}
 
31041
 
 
31042
//---------------------------------------------------------------------
 
31043
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__blend_func_separate__dest_rgb()
 
31044
{
 
31045
#ifdef GENERATEDSAXPARSER_VALIDATION
 
31046
    if ( mValidate )
 
31047
    {
 
31048
 
 
31049
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__blend_func_separate__dest_rgb();
 
31050
        if ( !validationResult ) return false;
 
31051
 
 
31052
    } // validation
 
31053
#endif
 
31054
 
 
31055
    return true;
 
31056
}
 
31057
 
 
31058
//---------------------------------------------------------------------
 
31059
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__blend_func_separate__dest_rgb( void* attributeData )
 
31060
{
 
31061
    profile_GLSL__technique__pass__states__blend_func_separate__dest_rgb__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__blend_func_separate__dest_rgb__AttributeData*>(attributeData);
 
31062
 
 
31063
    typedAttributeData->~profile_GLSL__technique__pass__states__blend_func_separate__dest_rgb__AttributeData();
 
31064
 
 
31065
    return true;
 
31066
}
 
31067
 
 
31068
//---------------------------------------------------------------------
 
31069
const profile_GLSL__technique__pass__states__blend_func_separate__src_alpha__AttributeData profile_GLSL__technique__pass__states__blend_func_separate__src_alpha__AttributeData::DEFAULT = {ENUM__gl_blend_enum__ONE, 0};
 
31070
 
 
31071
//---------------------------------------------------------------------
 
31072
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__blend_func_separate__src_alpha( const ParserChar* text, size_t textLength )
 
31073
{
 
31074
    return true;
 
31075
}
 
31076
 
 
31077
//---------------------------------------------------------------------
 
31078
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__blend_func_separate__src_alpha( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
31079
{
 
31080
#ifdef GENERATEDSAXPARSER_VALIDATION
 
31081
    if ( mValidate )
 
31082
    {
 
31083
 
 
31084
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__blend_func_separate__src_alpha( attributes, attributeDataPtr, validationDataPtr );
 
31085
        if ( !validationResult ) return false;
 
31086
 
 
31087
    } // validation
 
31088
#endif
 
31089
 
 
31090
profile_GLSL__technique__pass__states__blend_func_separate__src_alpha__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__blend_func_separate__src_alpha__AttributeData>(attributeDataPtr);
 
31091
 
 
31092
const ParserChar** attributeArray = attributes.attributes;
 
31093
if ( attributeArray )
 
31094
{
 
31095
    while (true)
 
31096
    {
 
31097
        const ParserChar * attribute = *attributeArray;
 
31098
        if ( !attribute )
 
31099
            break;
 
31100
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
31101
        attributeArray++;
 
31102
        if ( !attributeArray )
 
31103
            return false;
 
31104
        const ParserChar* attributeValue = *attributeArray;
 
31105
        attributeArray++;
 
31106
 
 
31107
 
 
31108
    switch ( hash )
 
31109
    {
 
31110
    case HASH_ATTRIBUTE_VALUE:
 
31111
    {
 
31112
bool failed;
 
31113
attributeData->value = Utils::toEnum<ENUM__gl_blend_enum, StringHash, ENUM__gl_blend_enum__COUNT>(attributeValue, failed, ENUM__gl_blend_enumMap, Utils::calculateStringHash);
 
31114
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
31115
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
31116
        HASH_ELEMENT_SRC_ALPHA,
 
31117
        HASH_ATTRIBUTE_VALUE,
 
31118
        attributeValue))
 
31119
{
 
31120
    return false;
 
31121
}
 
31122
 
 
31123
    break;
 
31124
    }
 
31125
    case HASH_ATTRIBUTE_PARAM:
 
31126
    {
 
31127
 
 
31128
attributeData->param = attributeValue;
 
31129
#ifdef GENERATEDSAXPARSER_VALIDATION
 
31130
    if ( mValidate )
 
31131
    {
 
31132
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
31133
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
31134
    {
 
31135
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
31136
            simpleTypeValidationResult,
 
31137
            HASH_ELEMENT_SRC_ALPHA,
 
31138
            HASH_ATTRIBUTE_PARAM,
 
31139
            attributeValue) )
 
31140
        {
 
31141
            return false;
 
31142
        }
 
31143
    }
 
31144
    } // validation
 
31145
#endif
 
31146
 
 
31147
    break;
 
31148
    }
 
31149
    default:
 
31150
    {
 
31151
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SRC_ALPHA, attribute, attributeValue))
 
31152
            {return false;}
 
31153
    }
 
31154
    }
 
31155
    }
 
31156
}
 
31157
 
 
31158
 
 
31159
    return true;
 
31160
}
 
31161
 
 
31162
//---------------------------------------------------------------------
 
31163
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__blend_func_separate__src_alpha()
 
31164
{
 
31165
#ifdef GENERATEDSAXPARSER_VALIDATION
 
31166
    if ( mValidate )
 
31167
    {
 
31168
 
 
31169
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__blend_func_separate__src_alpha();
 
31170
        if ( !validationResult ) return false;
 
31171
 
 
31172
    } // validation
 
31173
#endif
 
31174
 
 
31175
    return true;
 
31176
}
 
31177
 
 
31178
//---------------------------------------------------------------------
 
31179
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__blend_func_separate__src_alpha( void* attributeData )
 
31180
{
 
31181
    profile_GLSL__technique__pass__states__blend_func_separate__src_alpha__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__blend_func_separate__src_alpha__AttributeData*>(attributeData);
 
31182
 
 
31183
    typedAttributeData->~profile_GLSL__technique__pass__states__blend_func_separate__src_alpha__AttributeData();
 
31184
 
 
31185
    return true;
 
31186
}
 
31187
 
 
31188
//---------------------------------------------------------------------
 
31189
const profile_GLSL__technique__pass__states__blend_func_separate__dest_alpha__AttributeData profile_GLSL__technique__pass__states__blend_func_separate__dest_alpha__AttributeData::DEFAULT = {ENUM__gl_blend_enum__ZERO, 0};
 
31190
 
 
31191
//---------------------------------------------------------------------
 
31192
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__blend_func_separate__dest_alpha( const ParserChar* text, size_t textLength )
 
31193
{
 
31194
    return true;
 
31195
}
 
31196
 
 
31197
//---------------------------------------------------------------------
 
31198
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__blend_func_separate__dest_alpha( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
31199
{
 
31200
#ifdef GENERATEDSAXPARSER_VALIDATION
 
31201
    if ( mValidate )
 
31202
    {
 
31203
 
 
31204
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__blend_func_separate__dest_alpha( attributes, attributeDataPtr, validationDataPtr );
 
31205
        if ( !validationResult ) return false;
 
31206
 
 
31207
    } // validation
 
31208
#endif
 
31209
 
 
31210
profile_GLSL__technique__pass__states__blend_func_separate__dest_alpha__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__blend_func_separate__dest_alpha__AttributeData>(attributeDataPtr);
 
31211
 
 
31212
const ParserChar** attributeArray = attributes.attributes;
 
31213
if ( attributeArray )
 
31214
{
 
31215
    while (true)
 
31216
    {
 
31217
        const ParserChar * attribute = *attributeArray;
 
31218
        if ( !attribute )
 
31219
            break;
 
31220
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
31221
        attributeArray++;
 
31222
        if ( !attributeArray )
 
31223
            return false;
 
31224
        const ParserChar* attributeValue = *attributeArray;
 
31225
        attributeArray++;
 
31226
 
 
31227
 
 
31228
    switch ( hash )
 
31229
    {
 
31230
    case HASH_ATTRIBUTE_VALUE:
 
31231
    {
 
31232
bool failed;
 
31233
attributeData->value = Utils::toEnum<ENUM__gl_blend_enum, StringHash, ENUM__gl_blend_enum__COUNT>(attributeValue, failed, ENUM__gl_blend_enumMap, Utils::calculateStringHash);
 
31234
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
31235
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
31236
        HASH_ELEMENT_DEST_ALPHA,
 
31237
        HASH_ATTRIBUTE_VALUE,
 
31238
        attributeValue))
 
31239
{
 
31240
    return false;
 
31241
}
 
31242
 
 
31243
    break;
 
31244
    }
 
31245
    case HASH_ATTRIBUTE_PARAM:
 
31246
    {
 
31247
 
 
31248
attributeData->param = attributeValue;
 
31249
#ifdef GENERATEDSAXPARSER_VALIDATION
 
31250
    if ( mValidate )
 
31251
    {
 
31252
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
31253
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
31254
    {
 
31255
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
31256
            simpleTypeValidationResult,
 
31257
            HASH_ELEMENT_DEST_ALPHA,
 
31258
            HASH_ATTRIBUTE_PARAM,
 
31259
            attributeValue) )
 
31260
        {
 
31261
            return false;
 
31262
        }
 
31263
    }
 
31264
    } // validation
 
31265
#endif
 
31266
 
 
31267
    break;
 
31268
    }
 
31269
    default:
 
31270
    {
 
31271
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_DEST_ALPHA, attribute, attributeValue))
 
31272
            {return false;}
 
31273
    }
 
31274
    }
 
31275
    }
 
31276
}
 
31277
 
 
31278
 
 
31279
    return true;
 
31280
}
 
31281
 
 
31282
//---------------------------------------------------------------------
 
31283
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__blend_func_separate__dest_alpha()
 
31284
{
 
31285
#ifdef GENERATEDSAXPARSER_VALIDATION
 
31286
    if ( mValidate )
 
31287
    {
 
31288
 
 
31289
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__blend_func_separate__dest_alpha();
 
31290
        if ( !validationResult ) return false;
 
31291
 
 
31292
    } // validation
 
31293
#endif
 
31294
 
 
31295
    return true;
 
31296
}
 
31297
 
 
31298
//---------------------------------------------------------------------
 
31299
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__blend_func_separate__dest_alpha( void* attributeData )
 
31300
{
 
31301
    profile_GLSL__technique__pass__states__blend_func_separate__dest_alpha__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__blend_func_separate__dest_alpha__AttributeData*>(attributeData);
 
31302
 
 
31303
    typedAttributeData->~profile_GLSL__technique__pass__states__blend_func_separate__dest_alpha__AttributeData();
 
31304
 
 
31305
    return true;
 
31306
}
 
31307
 
 
31308
//---------------------------------------------------------------------
 
31309
const profile_GLSL__technique__pass__states__blend_equation__AttributeData profile_GLSL__technique__pass__states__blend_equation__AttributeData::DEFAULT = {ENUM__gl_blend_equation_enum__FUNC_ADD, 0};
 
31310
 
 
31311
//---------------------------------------------------------------------
 
31312
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__blend_equation( const ParserChar* text, size_t textLength )
 
31313
{
 
31314
    return true;
 
31315
}
 
31316
 
 
31317
//---------------------------------------------------------------------
 
31318
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__blend_equation( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
31319
{
 
31320
#ifdef GENERATEDSAXPARSER_VALIDATION
 
31321
    if ( mValidate )
 
31322
    {
 
31323
 
 
31324
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__blend_equation( attributes, attributeDataPtr, validationDataPtr );
 
31325
        if ( !validationResult ) return false;
 
31326
 
 
31327
    } // validation
 
31328
#endif
 
31329
 
 
31330
profile_GLSL__technique__pass__states__blend_equation__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__blend_equation__AttributeData>(attributeDataPtr);
 
31331
 
 
31332
const ParserChar** attributeArray = attributes.attributes;
 
31333
if ( attributeArray )
 
31334
{
 
31335
    while (true)
 
31336
    {
 
31337
        const ParserChar * attribute = *attributeArray;
 
31338
        if ( !attribute )
 
31339
            break;
 
31340
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
31341
        attributeArray++;
 
31342
        if ( !attributeArray )
 
31343
            return false;
 
31344
        const ParserChar* attributeValue = *attributeArray;
 
31345
        attributeArray++;
 
31346
 
 
31347
 
 
31348
    switch ( hash )
 
31349
    {
 
31350
    case HASH_ATTRIBUTE_VALUE:
 
31351
    {
 
31352
bool failed;
 
31353
attributeData->value = Utils::toEnum<ENUM__gl_blend_equation_enum, StringHash, ENUM__gl_blend_equation_enum__COUNT>(attributeValue, failed, ENUM__gl_blend_equation_enumMap, Utils::calculateStringHash);
 
31354
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
31355
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
31356
        HASH_ELEMENT_BLEND_EQUATION,
 
31357
        HASH_ATTRIBUTE_VALUE,
 
31358
        attributeValue))
 
31359
{
 
31360
    return false;
 
31361
}
 
31362
 
 
31363
    break;
 
31364
    }
 
31365
    case HASH_ATTRIBUTE_PARAM:
 
31366
    {
 
31367
 
 
31368
attributeData->param = attributeValue;
 
31369
#ifdef GENERATEDSAXPARSER_VALIDATION
 
31370
    if ( mValidate )
 
31371
    {
 
31372
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
31373
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
31374
    {
 
31375
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
31376
            simpleTypeValidationResult,
 
31377
            HASH_ELEMENT_BLEND_EQUATION,
 
31378
            HASH_ATTRIBUTE_PARAM,
 
31379
            attributeValue) )
 
31380
        {
 
31381
            return false;
 
31382
        }
 
31383
    }
 
31384
    } // validation
 
31385
#endif
 
31386
 
 
31387
    break;
 
31388
    }
 
31389
    default:
 
31390
    {
 
31391
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_BLEND_EQUATION, attribute, attributeValue))
 
31392
            {return false;}
 
31393
    }
 
31394
    }
 
31395
    }
 
31396
}
 
31397
 
 
31398
 
 
31399
    return true;
 
31400
}
 
31401
 
 
31402
//---------------------------------------------------------------------
 
31403
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__blend_equation()
 
31404
{
 
31405
#ifdef GENERATEDSAXPARSER_VALIDATION
 
31406
    if ( mValidate )
 
31407
    {
 
31408
 
 
31409
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__blend_equation();
 
31410
        if ( !validationResult ) return false;
 
31411
 
 
31412
    } // validation
 
31413
#endif
 
31414
 
 
31415
    return true;
 
31416
}
 
31417
 
 
31418
//---------------------------------------------------------------------
 
31419
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__blend_equation( void* attributeData )
 
31420
{
 
31421
    profile_GLSL__technique__pass__states__blend_equation__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__blend_equation__AttributeData*>(attributeData);
 
31422
 
 
31423
    typedAttributeData->~profile_GLSL__technique__pass__states__blend_equation__AttributeData();
 
31424
 
 
31425
    return true;
 
31426
}
 
31427
 
 
31428
//---------------------------------------------------------------------
 
31429
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__blend_equation_separate( const ParserChar* text, size_t textLength )
 
31430
{
 
31431
    return true;
 
31432
}
 
31433
 
 
31434
//---------------------------------------------------------------------
 
31435
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__blend_equation_separate( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
31436
{
 
31437
#ifdef GENERATEDSAXPARSER_VALIDATION
 
31438
    if ( mValidate )
 
31439
    {
 
31440
 
 
31441
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__blend_equation_separate( attributes, attributeDataPtr, validationDataPtr );
 
31442
        if ( !validationResult ) return false;
 
31443
 
 
31444
    } // validation
 
31445
#endif
 
31446
 
 
31447
    return true;
 
31448
}
 
31449
 
 
31450
//---------------------------------------------------------------------
 
31451
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__blend_equation_separate()
 
31452
{
 
31453
#ifdef GENERATEDSAXPARSER_VALIDATION
 
31454
    if ( mValidate )
 
31455
    {
 
31456
 
 
31457
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__blend_equation_separate();
 
31458
        if ( !validationResult ) return false;
 
31459
 
 
31460
    } // validation
 
31461
#endif
 
31462
 
 
31463
    return true;
 
31464
}
 
31465
 
 
31466
//---------------------------------------------------------------------
 
31467
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__blend_equation_separate( void* attributeData )
 
31468
{
 
31469
    return true;
 
31470
}
 
31471
 
 
31472
//---------------------------------------------------------------------
 
31473
const profile_GLSL__technique__pass__states__blend_equation_separate__rgb__AttributeData profile_GLSL__technique__pass__states__blend_equation_separate__rgb__AttributeData::DEFAULT = {ENUM__gl_blend_equation_enum__FUNC_ADD, 0};
 
31474
 
 
31475
//---------------------------------------------------------------------
 
31476
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__blend_equation_separate__rgb( const ParserChar* text, size_t textLength )
 
31477
{
 
31478
    return true;
 
31479
}
 
31480
 
 
31481
//---------------------------------------------------------------------
 
31482
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__blend_equation_separate__rgb( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
31483
{
 
31484
#ifdef GENERATEDSAXPARSER_VALIDATION
 
31485
    if ( mValidate )
 
31486
    {
 
31487
 
 
31488
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__blend_equation_separate__rgb( attributes, attributeDataPtr, validationDataPtr );
 
31489
        if ( !validationResult ) return false;
 
31490
 
 
31491
    } // validation
 
31492
#endif
 
31493
 
 
31494
profile_GLSL__technique__pass__states__blend_equation_separate__rgb__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__blend_equation_separate__rgb__AttributeData>(attributeDataPtr);
 
31495
 
 
31496
const ParserChar** attributeArray = attributes.attributes;
 
31497
if ( attributeArray )
 
31498
{
 
31499
    while (true)
 
31500
    {
 
31501
        const ParserChar * attribute = *attributeArray;
 
31502
        if ( !attribute )
 
31503
            break;
 
31504
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
31505
        attributeArray++;
 
31506
        if ( !attributeArray )
 
31507
            return false;
 
31508
        const ParserChar* attributeValue = *attributeArray;
 
31509
        attributeArray++;
 
31510
 
 
31511
 
 
31512
    switch ( hash )
 
31513
    {
 
31514
    case HASH_ATTRIBUTE_VALUE:
 
31515
    {
 
31516
bool failed;
 
31517
attributeData->value = Utils::toEnum<ENUM__gl_blend_equation_enum, StringHash, ENUM__gl_blend_equation_enum__COUNT>(attributeValue, failed, ENUM__gl_blend_equation_enumMap, Utils::calculateStringHash);
 
31518
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
31519
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
31520
        HASH_ELEMENT_RGB,
 
31521
        HASH_ATTRIBUTE_VALUE,
 
31522
        attributeValue))
 
31523
{
 
31524
    return false;
 
31525
}
 
31526
 
 
31527
    break;
 
31528
    }
 
31529
    case HASH_ATTRIBUTE_PARAM:
 
31530
    {
 
31531
 
 
31532
attributeData->param = attributeValue;
 
31533
#ifdef GENERATEDSAXPARSER_VALIDATION
 
31534
    if ( mValidate )
 
31535
    {
 
31536
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
31537
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
31538
    {
 
31539
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
31540
            simpleTypeValidationResult,
 
31541
            HASH_ELEMENT_RGB,
 
31542
            HASH_ATTRIBUTE_PARAM,
 
31543
            attributeValue) )
 
31544
        {
 
31545
            return false;
 
31546
        }
 
31547
    }
 
31548
    } // validation
 
31549
#endif
 
31550
 
 
31551
    break;
 
31552
    }
 
31553
    default:
 
31554
    {
 
31555
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_RGB, attribute, attributeValue))
 
31556
            {return false;}
 
31557
    }
 
31558
    }
 
31559
    }
 
31560
}
 
31561
 
 
31562
 
 
31563
    return true;
 
31564
}
 
31565
 
 
31566
//---------------------------------------------------------------------
 
31567
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__blend_equation_separate__rgb()
 
31568
{
 
31569
#ifdef GENERATEDSAXPARSER_VALIDATION
 
31570
    if ( mValidate )
 
31571
    {
 
31572
 
 
31573
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__blend_equation_separate__rgb();
 
31574
        if ( !validationResult ) return false;
 
31575
 
 
31576
    } // validation
 
31577
#endif
 
31578
 
 
31579
    return true;
 
31580
}
 
31581
 
 
31582
//---------------------------------------------------------------------
 
31583
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__blend_equation_separate__rgb( void* attributeData )
 
31584
{
 
31585
    profile_GLSL__technique__pass__states__blend_equation_separate__rgb__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__blend_equation_separate__rgb__AttributeData*>(attributeData);
 
31586
 
 
31587
    typedAttributeData->~profile_GLSL__technique__pass__states__blend_equation_separate__rgb__AttributeData();
 
31588
 
 
31589
    return true;
 
31590
}
 
31591
 
 
31592
//---------------------------------------------------------------------
 
31593
const profile_GLSL__technique__pass__states__blend_equation_separate__alpha__AttributeData profile_GLSL__technique__pass__states__blend_equation_separate__alpha__AttributeData::DEFAULT = {ENUM__gl_blend_equation_enum__FUNC_ADD, 0};
 
31594
 
 
31595
//---------------------------------------------------------------------
 
31596
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__blend_equation_separate__alpha( const ParserChar* text, size_t textLength )
 
31597
{
 
31598
    return true;
 
31599
}
 
31600
 
 
31601
//---------------------------------------------------------------------
 
31602
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__blend_equation_separate__alpha( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
31603
{
 
31604
#ifdef GENERATEDSAXPARSER_VALIDATION
 
31605
    if ( mValidate )
 
31606
    {
 
31607
 
 
31608
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__blend_equation_separate__alpha( attributes, attributeDataPtr, validationDataPtr );
 
31609
        if ( !validationResult ) return false;
 
31610
 
 
31611
    } // validation
 
31612
#endif
 
31613
 
 
31614
profile_GLSL__technique__pass__states__blend_equation_separate__alpha__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__blend_equation_separate__alpha__AttributeData>(attributeDataPtr);
 
31615
 
 
31616
const ParserChar** attributeArray = attributes.attributes;
 
31617
if ( attributeArray )
 
31618
{
 
31619
    while (true)
 
31620
    {
 
31621
        const ParserChar * attribute = *attributeArray;
 
31622
        if ( !attribute )
 
31623
            break;
 
31624
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
31625
        attributeArray++;
 
31626
        if ( !attributeArray )
 
31627
            return false;
 
31628
        const ParserChar* attributeValue = *attributeArray;
 
31629
        attributeArray++;
 
31630
 
 
31631
 
 
31632
    switch ( hash )
 
31633
    {
 
31634
    case HASH_ATTRIBUTE_VALUE:
 
31635
    {
 
31636
bool failed;
 
31637
attributeData->value = Utils::toEnum<ENUM__gl_blend_equation_enum, StringHash, ENUM__gl_blend_equation_enum__COUNT>(attributeValue, failed, ENUM__gl_blend_equation_enumMap, Utils::calculateStringHash);
 
31638
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
31639
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
31640
        HASH_ELEMENT_ALPHA,
 
31641
        HASH_ATTRIBUTE_VALUE,
 
31642
        attributeValue))
 
31643
{
 
31644
    return false;
 
31645
}
 
31646
 
 
31647
    break;
 
31648
    }
 
31649
    case HASH_ATTRIBUTE_PARAM:
 
31650
    {
 
31651
 
 
31652
attributeData->param = attributeValue;
 
31653
#ifdef GENERATEDSAXPARSER_VALIDATION
 
31654
    if ( mValidate )
 
31655
    {
 
31656
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
31657
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
31658
    {
 
31659
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
31660
            simpleTypeValidationResult,
 
31661
            HASH_ELEMENT_ALPHA,
 
31662
            HASH_ATTRIBUTE_PARAM,
 
31663
            attributeValue) )
 
31664
        {
 
31665
            return false;
 
31666
        }
 
31667
    }
 
31668
    } // validation
 
31669
#endif
 
31670
 
 
31671
    break;
 
31672
    }
 
31673
    default:
 
31674
    {
 
31675
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_ALPHA, attribute, attributeValue))
 
31676
            {return false;}
 
31677
    }
 
31678
    }
 
31679
    }
 
31680
}
 
31681
 
 
31682
 
 
31683
    return true;
 
31684
}
 
31685
 
 
31686
//---------------------------------------------------------------------
 
31687
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__blend_equation_separate__alpha()
 
31688
{
 
31689
#ifdef GENERATEDSAXPARSER_VALIDATION
 
31690
    if ( mValidate )
 
31691
    {
 
31692
 
 
31693
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__blend_equation_separate__alpha();
 
31694
        if ( !validationResult ) return false;
 
31695
 
 
31696
    } // validation
 
31697
#endif
 
31698
 
 
31699
    return true;
 
31700
}
 
31701
 
 
31702
//---------------------------------------------------------------------
 
31703
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__blend_equation_separate__alpha( void* attributeData )
 
31704
{
 
31705
    profile_GLSL__technique__pass__states__blend_equation_separate__alpha__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__blend_equation_separate__alpha__AttributeData*>(attributeData);
 
31706
 
 
31707
    typedAttributeData->~profile_GLSL__technique__pass__states__blend_equation_separate__alpha__AttributeData();
 
31708
 
 
31709
    return true;
 
31710
}
 
31711
 
 
31712
//---------------------------------------------------------------------
 
31713
bool ColladaParserAutoGen15Private::_data__color_material( const ParserChar* text, size_t textLength )
 
31714
{
 
31715
    return true;
 
31716
}
 
31717
 
 
31718
//---------------------------------------------------------------------
 
31719
bool ColladaParserAutoGen15Private::_preBegin__color_material( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
31720
{
 
31721
#ifdef GENERATEDSAXPARSER_VALIDATION
 
31722
    if ( mValidate )
 
31723
    {
 
31724
 
 
31725
        bool validationResult = _validateBegin__color_material( attributes, attributeDataPtr, validationDataPtr );
 
31726
        if ( !validationResult ) return false;
 
31727
 
 
31728
    } // validation
 
31729
#endif
 
31730
 
 
31731
    return true;
 
31732
}
 
31733
 
 
31734
//---------------------------------------------------------------------
 
31735
bool ColladaParserAutoGen15Private::_preEnd__color_material()
 
31736
{
 
31737
#ifdef GENERATEDSAXPARSER_VALIDATION
 
31738
    if ( mValidate )
 
31739
    {
 
31740
 
 
31741
        bool validationResult = _validateEnd__color_material();
 
31742
        if ( !validationResult ) return false;
 
31743
 
 
31744
    } // validation
 
31745
#endif
 
31746
 
 
31747
    return true;
 
31748
}
 
31749
 
 
31750
//---------------------------------------------------------------------
 
31751
bool ColladaParserAutoGen15Private::_freeAttributes__color_material( void* attributeData )
 
31752
{
 
31753
    return true;
 
31754
}
 
31755
 
 
31756
//---------------------------------------------------------------------
 
31757
const color_material__face__AttributeData color_material__face__AttributeData::DEFAULT = {ENUM__gl_face_enum__FRONT_AND_BACK, 0};
 
31758
 
 
31759
//---------------------------------------------------------------------
 
31760
bool ColladaParserAutoGen15Private::_data__color_material__face( const ParserChar* text, size_t textLength )
 
31761
{
 
31762
    return true;
 
31763
}
 
31764
 
 
31765
//---------------------------------------------------------------------
 
31766
bool ColladaParserAutoGen15Private::_preBegin__color_material__face( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
31767
{
 
31768
#ifdef GENERATEDSAXPARSER_VALIDATION
 
31769
    if ( mValidate )
 
31770
    {
 
31771
 
 
31772
        bool validationResult = _validateBegin__color_material__face( attributes, attributeDataPtr, validationDataPtr );
 
31773
        if ( !validationResult ) return false;
 
31774
 
 
31775
    } // validation
 
31776
#endif
 
31777
 
 
31778
color_material__face__AttributeData* attributeData = newData<color_material__face__AttributeData>(attributeDataPtr);
 
31779
 
 
31780
const ParserChar** attributeArray = attributes.attributes;
 
31781
if ( attributeArray )
 
31782
{
 
31783
    while (true)
 
31784
    {
 
31785
        const ParserChar * attribute = *attributeArray;
 
31786
        if ( !attribute )
 
31787
            break;
 
31788
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
31789
        attributeArray++;
 
31790
        if ( !attributeArray )
 
31791
            return false;
 
31792
        const ParserChar* attributeValue = *attributeArray;
 
31793
        attributeArray++;
 
31794
 
 
31795
 
 
31796
    switch ( hash )
 
31797
    {
 
31798
    case HASH_ATTRIBUTE_VALUE:
 
31799
    {
 
31800
bool failed;
 
31801
attributeData->value = Utils::toEnum<ENUM__gl_face_enum, StringHash, ENUM__gl_face_enum__COUNT>(attributeValue, failed, ENUM__gl_face_enumMap, Utils::calculateStringHash);
 
31802
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
31803
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
31804
        HASH_ELEMENT_FACE,
 
31805
        HASH_ATTRIBUTE_VALUE,
 
31806
        attributeValue))
 
31807
{
 
31808
    return false;
 
31809
}
 
31810
 
 
31811
    break;
 
31812
    }
 
31813
    case HASH_ATTRIBUTE_PARAM:
 
31814
    {
 
31815
 
 
31816
attributeData->param = attributeValue;
 
31817
#ifdef GENERATEDSAXPARSER_VALIDATION
 
31818
    if ( mValidate )
 
31819
    {
 
31820
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
31821
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
31822
    {
 
31823
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
31824
            simpleTypeValidationResult,
 
31825
            HASH_ELEMENT_FACE,
 
31826
            HASH_ATTRIBUTE_PARAM,
 
31827
            attributeValue) )
 
31828
        {
 
31829
            return false;
 
31830
        }
 
31831
    }
 
31832
    } // validation
 
31833
#endif
 
31834
 
 
31835
    break;
 
31836
    }
 
31837
    default:
 
31838
    {
 
31839
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FACE, attribute, attributeValue))
 
31840
            {return false;}
 
31841
    }
 
31842
    }
 
31843
    }
 
31844
}
 
31845
 
 
31846
 
 
31847
    return true;
 
31848
}
 
31849
 
 
31850
//---------------------------------------------------------------------
 
31851
bool ColladaParserAutoGen15Private::_preEnd__color_material__face()
 
31852
{
 
31853
#ifdef GENERATEDSAXPARSER_VALIDATION
 
31854
    if ( mValidate )
 
31855
    {
 
31856
 
 
31857
        bool validationResult = _validateEnd__color_material__face();
 
31858
        if ( !validationResult ) return false;
 
31859
 
 
31860
    } // validation
 
31861
#endif
 
31862
 
 
31863
    return true;
 
31864
}
 
31865
 
 
31866
//---------------------------------------------------------------------
 
31867
bool ColladaParserAutoGen15Private::_freeAttributes__color_material__face( void* attributeData )
 
31868
{
 
31869
    color_material__face__AttributeData* typedAttributeData = static_cast<color_material__face__AttributeData*>(attributeData);
 
31870
 
 
31871
    typedAttributeData->~color_material__face__AttributeData();
 
31872
 
 
31873
    return true;
 
31874
}
 
31875
 
 
31876
//---------------------------------------------------------------------
 
31877
const color_material__mode__AttributeData color_material__mode__AttributeData::DEFAULT = {ENUM__gl_material_enum__AMBIENT_AND_DIFFUSE, 0};
 
31878
 
 
31879
//---------------------------------------------------------------------
 
31880
bool ColladaParserAutoGen15Private::_data__color_material__mode( const ParserChar* text, size_t textLength )
 
31881
{
 
31882
    return true;
 
31883
}
 
31884
 
 
31885
//---------------------------------------------------------------------
 
31886
bool ColladaParserAutoGen15Private::_preBegin__color_material__mode( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
31887
{
 
31888
#ifdef GENERATEDSAXPARSER_VALIDATION
 
31889
    if ( mValidate )
 
31890
    {
 
31891
 
 
31892
        bool validationResult = _validateBegin__color_material__mode( attributes, attributeDataPtr, validationDataPtr );
 
31893
        if ( !validationResult ) return false;
 
31894
 
 
31895
    } // validation
 
31896
#endif
 
31897
 
 
31898
color_material__mode__AttributeData* attributeData = newData<color_material__mode__AttributeData>(attributeDataPtr);
 
31899
 
 
31900
const ParserChar** attributeArray = attributes.attributes;
 
31901
if ( attributeArray )
 
31902
{
 
31903
    while (true)
 
31904
    {
 
31905
        const ParserChar * attribute = *attributeArray;
 
31906
        if ( !attribute )
 
31907
            break;
 
31908
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
31909
        attributeArray++;
 
31910
        if ( !attributeArray )
 
31911
            return false;
 
31912
        const ParserChar* attributeValue = *attributeArray;
 
31913
        attributeArray++;
 
31914
 
 
31915
 
 
31916
    switch ( hash )
 
31917
    {
 
31918
    case HASH_ATTRIBUTE_VALUE:
 
31919
    {
 
31920
bool failed;
 
31921
attributeData->value = Utils::toEnum<ENUM__gl_material_enum, StringHash, ENUM__gl_material_enum__COUNT>(attributeValue, failed, ENUM__gl_material_enumMap, Utils::calculateStringHash);
 
31922
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
31923
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
31924
        HASH_ELEMENT_MODE,
 
31925
        HASH_ATTRIBUTE_VALUE,
 
31926
        attributeValue))
 
31927
{
 
31928
    return false;
 
31929
}
 
31930
 
 
31931
    break;
 
31932
    }
 
31933
    case HASH_ATTRIBUTE_PARAM:
 
31934
    {
 
31935
 
 
31936
attributeData->param = attributeValue;
 
31937
#ifdef GENERATEDSAXPARSER_VALIDATION
 
31938
    if ( mValidate )
 
31939
    {
 
31940
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
31941
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
31942
    {
 
31943
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
31944
            simpleTypeValidationResult,
 
31945
            HASH_ELEMENT_MODE,
 
31946
            HASH_ATTRIBUTE_PARAM,
 
31947
            attributeValue) )
 
31948
        {
 
31949
            return false;
 
31950
        }
 
31951
    }
 
31952
    } // validation
 
31953
#endif
 
31954
 
 
31955
    break;
 
31956
    }
 
31957
    default:
 
31958
    {
 
31959
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_MODE, attribute, attributeValue))
 
31960
            {return false;}
 
31961
    }
 
31962
    }
 
31963
    }
 
31964
}
 
31965
 
 
31966
 
 
31967
    return true;
 
31968
}
 
31969
 
 
31970
//---------------------------------------------------------------------
 
31971
bool ColladaParserAutoGen15Private::_preEnd__color_material__mode()
 
31972
{
 
31973
#ifdef GENERATEDSAXPARSER_VALIDATION
 
31974
    if ( mValidate )
 
31975
    {
 
31976
 
 
31977
        bool validationResult = _validateEnd__color_material__mode();
 
31978
        if ( !validationResult ) return false;
 
31979
 
 
31980
    } // validation
 
31981
#endif
 
31982
 
 
31983
    return true;
 
31984
}
 
31985
 
 
31986
//---------------------------------------------------------------------
 
31987
bool ColladaParserAutoGen15Private::_freeAttributes__color_material__mode( void* attributeData )
 
31988
{
 
31989
    color_material__mode__AttributeData* typedAttributeData = static_cast<color_material__mode__AttributeData*>(attributeData);
 
31990
 
 
31991
    typedAttributeData->~color_material__mode__AttributeData();
 
31992
 
 
31993
    return true;
 
31994
}
 
31995
 
 
31996
//---------------------------------------------------------------------
 
31997
const profile_GLSL__technique__pass__states__cull_face__AttributeData profile_GLSL__technique__pass__states__cull_face__AttributeData::DEFAULT = {ENUM__gl_face_enum__BACK, 0};
 
31998
 
 
31999
//---------------------------------------------------------------------
 
32000
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__cull_face( const ParserChar* text, size_t textLength )
 
32001
{
 
32002
    return true;
 
32003
}
 
32004
 
 
32005
//---------------------------------------------------------------------
 
32006
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__cull_face( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
32007
{
 
32008
#ifdef GENERATEDSAXPARSER_VALIDATION
 
32009
    if ( mValidate )
 
32010
    {
 
32011
 
 
32012
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__cull_face( attributes, attributeDataPtr, validationDataPtr );
 
32013
        if ( !validationResult ) return false;
 
32014
 
 
32015
    } // validation
 
32016
#endif
 
32017
 
 
32018
profile_GLSL__technique__pass__states__cull_face__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__cull_face__AttributeData>(attributeDataPtr);
 
32019
 
 
32020
const ParserChar** attributeArray = attributes.attributes;
 
32021
if ( attributeArray )
 
32022
{
 
32023
    while (true)
 
32024
    {
 
32025
        const ParserChar * attribute = *attributeArray;
 
32026
        if ( !attribute )
 
32027
            break;
 
32028
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
32029
        attributeArray++;
 
32030
        if ( !attributeArray )
 
32031
            return false;
 
32032
        const ParserChar* attributeValue = *attributeArray;
 
32033
        attributeArray++;
 
32034
 
 
32035
 
 
32036
    switch ( hash )
 
32037
    {
 
32038
    case HASH_ATTRIBUTE_VALUE:
 
32039
    {
 
32040
bool failed;
 
32041
attributeData->value = Utils::toEnum<ENUM__gl_face_enum, StringHash, ENUM__gl_face_enum__COUNT>(attributeValue, failed, ENUM__gl_face_enumMap, Utils::calculateStringHash);
 
32042
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
32043
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
32044
        HASH_ELEMENT_CULL_FACE,
 
32045
        HASH_ATTRIBUTE_VALUE,
 
32046
        attributeValue))
 
32047
{
 
32048
    return false;
 
32049
}
 
32050
 
 
32051
    break;
 
32052
    }
 
32053
    case HASH_ATTRIBUTE_PARAM:
 
32054
    {
 
32055
 
 
32056
attributeData->param = attributeValue;
 
32057
#ifdef GENERATEDSAXPARSER_VALIDATION
 
32058
    if ( mValidate )
 
32059
    {
 
32060
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
32061
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
32062
    {
 
32063
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
32064
            simpleTypeValidationResult,
 
32065
            HASH_ELEMENT_CULL_FACE,
 
32066
            HASH_ATTRIBUTE_PARAM,
 
32067
            attributeValue) )
 
32068
        {
 
32069
            return false;
 
32070
        }
 
32071
    }
 
32072
    } // validation
 
32073
#endif
 
32074
 
 
32075
    break;
 
32076
    }
 
32077
    default:
 
32078
    {
 
32079
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_CULL_FACE, attribute, attributeValue))
 
32080
            {return false;}
 
32081
    }
 
32082
    }
 
32083
    }
 
32084
}
 
32085
 
 
32086
 
 
32087
    return true;
 
32088
}
 
32089
 
 
32090
//---------------------------------------------------------------------
 
32091
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__cull_face()
 
32092
{
 
32093
#ifdef GENERATEDSAXPARSER_VALIDATION
 
32094
    if ( mValidate )
 
32095
    {
 
32096
 
 
32097
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__cull_face();
 
32098
        if ( !validationResult ) return false;
 
32099
 
 
32100
    } // validation
 
32101
#endif
 
32102
 
 
32103
    return true;
 
32104
}
 
32105
 
 
32106
//---------------------------------------------------------------------
 
32107
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__cull_face( void* attributeData )
 
32108
{
 
32109
    profile_GLSL__technique__pass__states__cull_face__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__cull_face__AttributeData*>(attributeData);
 
32110
 
 
32111
    typedAttributeData->~profile_GLSL__technique__pass__states__cull_face__AttributeData();
 
32112
 
 
32113
    return true;
 
32114
}
 
32115
 
 
32116
//---------------------------------------------------------------------
 
32117
const profile_GLSL__technique__pass__states__depth_func__AttributeData profile_GLSL__technique__pass__states__depth_func__AttributeData::DEFAULT = {ENUM__gl_func_enum__ALWAYS, 0};
 
32118
 
 
32119
//---------------------------------------------------------------------
 
32120
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__depth_func( const ParserChar* text, size_t textLength )
 
32121
{
 
32122
    return true;
 
32123
}
 
32124
 
 
32125
//---------------------------------------------------------------------
 
32126
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__depth_func( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
32127
{
 
32128
#ifdef GENERATEDSAXPARSER_VALIDATION
 
32129
    if ( mValidate )
 
32130
    {
 
32131
 
 
32132
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__depth_func( attributes, attributeDataPtr, validationDataPtr );
 
32133
        if ( !validationResult ) return false;
 
32134
 
 
32135
    } // validation
 
32136
#endif
 
32137
 
 
32138
profile_GLSL__technique__pass__states__depth_func__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__depth_func__AttributeData>(attributeDataPtr);
 
32139
 
 
32140
const ParserChar** attributeArray = attributes.attributes;
 
32141
if ( attributeArray )
 
32142
{
 
32143
    while (true)
 
32144
    {
 
32145
        const ParserChar * attribute = *attributeArray;
 
32146
        if ( !attribute )
 
32147
            break;
 
32148
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
32149
        attributeArray++;
 
32150
        if ( !attributeArray )
 
32151
            return false;
 
32152
        const ParserChar* attributeValue = *attributeArray;
 
32153
        attributeArray++;
 
32154
 
 
32155
 
 
32156
    switch ( hash )
 
32157
    {
 
32158
    case HASH_ATTRIBUTE_VALUE:
 
32159
    {
 
32160
bool failed;
 
32161
attributeData->value = Utils::toEnum<ENUM__gl_func_enum, StringHash, ENUM__gl_func_enum__COUNT>(attributeValue, failed, ENUM__gl_func_enumMap, Utils::calculateStringHash);
 
32162
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
32163
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
32164
        HASH_ELEMENT_DEPTH_FUNC,
 
32165
        HASH_ATTRIBUTE_VALUE,
 
32166
        attributeValue))
 
32167
{
 
32168
    return false;
 
32169
}
 
32170
 
 
32171
    break;
 
32172
    }
 
32173
    case HASH_ATTRIBUTE_PARAM:
 
32174
    {
 
32175
 
 
32176
attributeData->param = attributeValue;
 
32177
#ifdef GENERATEDSAXPARSER_VALIDATION
 
32178
    if ( mValidate )
 
32179
    {
 
32180
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
32181
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
32182
    {
 
32183
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
32184
            simpleTypeValidationResult,
 
32185
            HASH_ELEMENT_DEPTH_FUNC,
 
32186
            HASH_ATTRIBUTE_PARAM,
 
32187
            attributeValue) )
 
32188
        {
 
32189
            return false;
 
32190
        }
 
32191
    }
 
32192
    } // validation
 
32193
#endif
 
32194
 
 
32195
    break;
 
32196
    }
 
32197
    default:
 
32198
    {
 
32199
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_DEPTH_FUNC, attribute, attributeValue))
 
32200
            {return false;}
 
32201
    }
 
32202
    }
 
32203
    }
 
32204
}
 
32205
 
 
32206
 
 
32207
    return true;
 
32208
}
 
32209
 
 
32210
//---------------------------------------------------------------------
 
32211
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__depth_func()
 
32212
{
 
32213
#ifdef GENERATEDSAXPARSER_VALIDATION
 
32214
    if ( mValidate )
 
32215
    {
 
32216
 
 
32217
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__depth_func();
 
32218
        if ( !validationResult ) return false;
 
32219
 
 
32220
    } // validation
 
32221
#endif
 
32222
 
 
32223
    return true;
 
32224
}
 
32225
 
 
32226
//---------------------------------------------------------------------
 
32227
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__depth_func( void* attributeData )
 
32228
{
 
32229
    profile_GLSL__technique__pass__states__depth_func__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__depth_func__AttributeData*>(attributeData);
 
32230
 
 
32231
    typedAttributeData->~profile_GLSL__technique__pass__states__depth_func__AttributeData();
 
32232
 
 
32233
    return true;
 
32234
}
 
32235
 
 
32236
//---------------------------------------------------------------------
 
32237
const profile_GLSL__technique__pass__states__fog_mode__AttributeData profile_GLSL__technique__pass__states__fog_mode__AttributeData::DEFAULT = {ENUM__gl_fog_enum__EXP, 0};
 
32238
 
 
32239
//---------------------------------------------------------------------
 
32240
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__fog_mode( const ParserChar* text, size_t textLength )
 
32241
{
 
32242
    return true;
 
32243
}
 
32244
 
 
32245
//---------------------------------------------------------------------
 
32246
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__fog_mode( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
32247
{
 
32248
#ifdef GENERATEDSAXPARSER_VALIDATION
 
32249
    if ( mValidate )
 
32250
    {
 
32251
 
 
32252
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__fog_mode( attributes, attributeDataPtr, validationDataPtr );
 
32253
        if ( !validationResult ) return false;
 
32254
 
 
32255
    } // validation
 
32256
#endif
 
32257
 
 
32258
profile_GLSL__technique__pass__states__fog_mode__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__fog_mode__AttributeData>(attributeDataPtr);
 
32259
 
 
32260
const ParserChar** attributeArray = attributes.attributes;
 
32261
if ( attributeArray )
 
32262
{
 
32263
    while (true)
 
32264
    {
 
32265
        const ParserChar * attribute = *attributeArray;
 
32266
        if ( !attribute )
 
32267
            break;
 
32268
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
32269
        attributeArray++;
 
32270
        if ( !attributeArray )
 
32271
            return false;
 
32272
        const ParserChar* attributeValue = *attributeArray;
 
32273
        attributeArray++;
 
32274
 
 
32275
 
 
32276
    switch ( hash )
 
32277
    {
 
32278
    case HASH_ATTRIBUTE_VALUE:
 
32279
    {
 
32280
bool failed;
 
32281
attributeData->value = Utils::toEnum<ENUM__gl_fog_enum, StringHash, ENUM__gl_fog_enum__COUNT>(attributeValue, failed, ENUM__gl_fog_enumMap, Utils::calculateStringHash);
 
32282
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
32283
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
32284
        HASH_ELEMENT_FOG_MODE,
 
32285
        HASH_ATTRIBUTE_VALUE,
 
32286
        attributeValue))
 
32287
{
 
32288
    return false;
 
32289
}
 
32290
 
 
32291
    break;
 
32292
    }
 
32293
    case HASH_ATTRIBUTE_PARAM:
 
32294
    {
 
32295
 
 
32296
attributeData->param = attributeValue;
 
32297
#ifdef GENERATEDSAXPARSER_VALIDATION
 
32298
    if ( mValidate )
 
32299
    {
 
32300
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
32301
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
32302
    {
 
32303
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
32304
            simpleTypeValidationResult,
 
32305
            HASH_ELEMENT_FOG_MODE,
 
32306
            HASH_ATTRIBUTE_PARAM,
 
32307
            attributeValue) )
 
32308
        {
 
32309
            return false;
 
32310
        }
 
32311
    }
 
32312
    } // validation
 
32313
#endif
 
32314
 
 
32315
    break;
 
32316
    }
 
32317
    default:
 
32318
    {
 
32319
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FOG_MODE, attribute, attributeValue))
 
32320
            {return false;}
 
32321
    }
 
32322
    }
 
32323
    }
 
32324
}
 
32325
 
 
32326
 
 
32327
    return true;
 
32328
}
 
32329
 
 
32330
//---------------------------------------------------------------------
 
32331
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__fog_mode()
 
32332
{
 
32333
#ifdef GENERATEDSAXPARSER_VALIDATION
 
32334
    if ( mValidate )
 
32335
    {
 
32336
 
 
32337
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__fog_mode();
 
32338
        if ( !validationResult ) return false;
 
32339
 
 
32340
    } // validation
 
32341
#endif
 
32342
 
 
32343
    return true;
 
32344
}
 
32345
 
 
32346
//---------------------------------------------------------------------
 
32347
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__fog_mode( void* attributeData )
 
32348
{
 
32349
    profile_GLSL__technique__pass__states__fog_mode__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__fog_mode__AttributeData*>(attributeData);
 
32350
 
 
32351
    typedAttributeData->~profile_GLSL__technique__pass__states__fog_mode__AttributeData();
 
32352
 
 
32353
    return true;
 
32354
}
 
32355
 
 
32356
//---------------------------------------------------------------------
 
32357
const fog_coord_src__AttributeData fog_coord_src__AttributeData::DEFAULT = {ENUM__gl_fog_coord_src_enum__FOG_COORDINATE, 0};
 
32358
 
 
32359
//---------------------------------------------------------------------
 
32360
bool ColladaParserAutoGen15Private::_data__fog_coord_src( const ParserChar* text, size_t textLength )
 
32361
{
 
32362
    return true;
 
32363
}
 
32364
 
 
32365
//---------------------------------------------------------------------
 
32366
bool ColladaParserAutoGen15Private::_preBegin__fog_coord_src( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
32367
{
 
32368
#ifdef GENERATEDSAXPARSER_VALIDATION
 
32369
    if ( mValidate )
 
32370
    {
 
32371
 
 
32372
        bool validationResult = _validateBegin__fog_coord_src( attributes, attributeDataPtr, validationDataPtr );
 
32373
        if ( !validationResult ) return false;
 
32374
 
 
32375
    } // validation
 
32376
#endif
 
32377
 
 
32378
fog_coord_src__AttributeData* attributeData = newData<fog_coord_src__AttributeData>(attributeDataPtr);
 
32379
 
 
32380
const ParserChar** attributeArray = attributes.attributes;
 
32381
if ( attributeArray )
 
32382
{
 
32383
    while (true)
 
32384
    {
 
32385
        const ParserChar * attribute = *attributeArray;
 
32386
        if ( !attribute )
 
32387
            break;
 
32388
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
32389
        attributeArray++;
 
32390
        if ( !attributeArray )
 
32391
            return false;
 
32392
        const ParserChar* attributeValue = *attributeArray;
 
32393
        attributeArray++;
 
32394
 
 
32395
 
 
32396
    switch ( hash )
 
32397
    {
 
32398
    case HASH_ATTRIBUTE_VALUE:
 
32399
    {
 
32400
bool failed;
 
32401
attributeData->value = Utils::toEnum<ENUM__gl_fog_coord_src_enum, StringHash, ENUM__gl_fog_coord_src_enum__COUNT>(attributeValue, failed, ENUM__gl_fog_coord_src_enumMap, Utils::calculateStringHash);
 
32402
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
32403
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
32404
        HASH_ELEMENT_FOG_COORD_SRC,
 
32405
        HASH_ATTRIBUTE_VALUE,
 
32406
        attributeValue))
 
32407
{
 
32408
    return false;
 
32409
}
 
32410
 
 
32411
    break;
 
32412
    }
 
32413
    case HASH_ATTRIBUTE_PARAM:
 
32414
    {
 
32415
 
 
32416
attributeData->param = attributeValue;
 
32417
#ifdef GENERATEDSAXPARSER_VALIDATION
 
32418
    if ( mValidate )
 
32419
    {
 
32420
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
32421
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
32422
    {
 
32423
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
32424
            simpleTypeValidationResult,
 
32425
            HASH_ELEMENT_FOG_COORD_SRC,
 
32426
            HASH_ATTRIBUTE_PARAM,
 
32427
            attributeValue) )
 
32428
        {
 
32429
            return false;
 
32430
        }
 
32431
    }
 
32432
    } // validation
 
32433
#endif
 
32434
 
 
32435
    break;
 
32436
    }
 
32437
    default:
 
32438
    {
 
32439
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FOG_COORD_SRC, attribute, attributeValue))
 
32440
            {return false;}
 
32441
    }
 
32442
    }
 
32443
    }
 
32444
}
 
32445
 
 
32446
 
 
32447
    return true;
 
32448
}
 
32449
 
 
32450
//---------------------------------------------------------------------
 
32451
bool ColladaParserAutoGen15Private::_preEnd__fog_coord_src()
 
32452
{
 
32453
#ifdef GENERATEDSAXPARSER_VALIDATION
 
32454
    if ( mValidate )
 
32455
    {
 
32456
 
 
32457
        bool validationResult = _validateEnd__fog_coord_src();
 
32458
        if ( !validationResult ) return false;
 
32459
 
 
32460
    } // validation
 
32461
#endif
 
32462
 
 
32463
    return true;
 
32464
}
 
32465
 
 
32466
//---------------------------------------------------------------------
 
32467
bool ColladaParserAutoGen15Private::_freeAttributes__fog_coord_src( void* attributeData )
 
32468
{
 
32469
    fog_coord_src__AttributeData* typedAttributeData = static_cast<fog_coord_src__AttributeData*>(attributeData);
 
32470
 
 
32471
    typedAttributeData->~fog_coord_src__AttributeData();
 
32472
 
 
32473
    return true;
 
32474
}
 
32475
 
 
32476
//---------------------------------------------------------------------
 
32477
const profile_GLSL__technique__pass__states__front_face__AttributeData profile_GLSL__technique__pass__states__front_face__AttributeData::DEFAULT = {ENUM__gl_front_face_enum__CCW, 0};
 
32478
 
 
32479
//---------------------------------------------------------------------
 
32480
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__front_face( const ParserChar* text, size_t textLength )
 
32481
{
 
32482
    return true;
 
32483
}
 
32484
 
 
32485
//---------------------------------------------------------------------
 
32486
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__front_face( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
32487
{
 
32488
#ifdef GENERATEDSAXPARSER_VALIDATION
 
32489
    if ( mValidate )
 
32490
    {
 
32491
 
 
32492
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__front_face( attributes, attributeDataPtr, validationDataPtr );
 
32493
        if ( !validationResult ) return false;
 
32494
 
 
32495
    } // validation
 
32496
#endif
 
32497
 
 
32498
profile_GLSL__technique__pass__states__front_face__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__front_face__AttributeData>(attributeDataPtr);
 
32499
 
 
32500
const ParserChar** attributeArray = attributes.attributes;
 
32501
if ( attributeArray )
 
32502
{
 
32503
    while (true)
 
32504
    {
 
32505
        const ParserChar * attribute = *attributeArray;
 
32506
        if ( !attribute )
 
32507
            break;
 
32508
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
32509
        attributeArray++;
 
32510
        if ( !attributeArray )
 
32511
            return false;
 
32512
        const ParserChar* attributeValue = *attributeArray;
 
32513
        attributeArray++;
 
32514
 
 
32515
 
 
32516
    switch ( hash )
 
32517
    {
 
32518
    case HASH_ATTRIBUTE_VALUE:
 
32519
    {
 
32520
bool failed;
 
32521
attributeData->value = Utils::toEnum<ENUM__gl_front_face_enum, StringHash, ENUM__gl_front_face_enum__COUNT>(attributeValue, failed, ENUM__gl_front_face_enumMap, Utils::calculateStringHash);
 
32522
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
32523
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
32524
        HASH_ELEMENT_FRONT_FACE,
 
32525
        HASH_ATTRIBUTE_VALUE,
 
32526
        attributeValue))
 
32527
{
 
32528
    return false;
 
32529
}
 
32530
 
 
32531
    break;
 
32532
    }
 
32533
    case HASH_ATTRIBUTE_PARAM:
 
32534
    {
 
32535
 
 
32536
attributeData->param = attributeValue;
 
32537
#ifdef GENERATEDSAXPARSER_VALIDATION
 
32538
    if ( mValidate )
 
32539
    {
 
32540
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
32541
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
32542
    {
 
32543
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
32544
            simpleTypeValidationResult,
 
32545
            HASH_ELEMENT_FRONT_FACE,
 
32546
            HASH_ATTRIBUTE_PARAM,
 
32547
            attributeValue) )
 
32548
        {
 
32549
            return false;
 
32550
        }
 
32551
    }
 
32552
    } // validation
 
32553
#endif
 
32554
 
 
32555
    break;
 
32556
    }
 
32557
    default:
 
32558
    {
 
32559
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FRONT_FACE, attribute, attributeValue))
 
32560
            {return false;}
 
32561
    }
 
32562
    }
 
32563
    }
 
32564
}
 
32565
 
 
32566
 
 
32567
    return true;
 
32568
}
 
32569
 
 
32570
//---------------------------------------------------------------------
 
32571
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__front_face()
 
32572
{
 
32573
#ifdef GENERATEDSAXPARSER_VALIDATION
 
32574
    if ( mValidate )
 
32575
    {
 
32576
 
 
32577
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__front_face();
 
32578
        if ( !validationResult ) return false;
 
32579
 
 
32580
    } // validation
 
32581
#endif
 
32582
 
 
32583
    return true;
 
32584
}
 
32585
 
 
32586
//---------------------------------------------------------------------
 
32587
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__front_face( void* attributeData )
 
32588
{
 
32589
    profile_GLSL__technique__pass__states__front_face__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__front_face__AttributeData*>(attributeData);
 
32590
 
 
32591
    typedAttributeData->~profile_GLSL__technique__pass__states__front_face__AttributeData();
 
32592
 
 
32593
    return true;
 
32594
}
 
32595
 
 
32596
//---------------------------------------------------------------------
 
32597
const light_model_color_control__AttributeData light_model_color_control__AttributeData::DEFAULT = {ENUM__gl_light_model_color_control_enum__SINGLE_COLOR, 0};
 
32598
 
 
32599
//---------------------------------------------------------------------
 
32600
bool ColladaParserAutoGen15Private::_data__light_model_color_control( const ParserChar* text, size_t textLength )
 
32601
{
 
32602
    return true;
 
32603
}
 
32604
 
 
32605
//---------------------------------------------------------------------
 
32606
bool ColladaParserAutoGen15Private::_preBegin__light_model_color_control( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
32607
{
 
32608
#ifdef GENERATEDSAXPARSER_VALIDATION
 
32609
    if ( mValidate )
 
32610
    {
 
32611
 
 
32612
        bool validationResult = _validateBegin__light_model_color_control( attributes, attributeDataPtr, validationDataPtr );
 
32613
        if ( !validationResult ) return false;
 
32614
 
 
32615
    } // validation
 
32616
#endif
 
32617
 
 
32618
light_model_color_control__AttributeData* attributeData = newData<light_model_color_control__AttributeData>(attributeDataPtr);
 
32619
 
 
32620
const ParserChar** attributeArray = attributes.attributes;
 
32621
if ( attributeArray )
 
32622
{
 
32623
    while (true)
 
32624
    {
 
32625
        const ParserChar * attribute = *attributeArray;
 
32626
        if ( !attribute )
 
32627
            break;
 
32628
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
32629
        attributeArray++;
 
32630
        if ( !attributeArray )
 
32631
            return false;
 
32632
        const ParserChar* attributeValue = *attributeArray;
 
32633
        attributeArray++;
 
32634
 
 
32635
 
 
32636
    switch ( hash )
 
32637
    {
 
32638
    case HASH_ATTRIBUTE_VALUE:
 
32639
    {
 
32640
bool failed;
 
32641
attributeData->value = Utils::toEnum<ENUM__gl_light_model_color_control_enum, StringHash, ENUM__gl_light_model_color_control_enum__COUNT>(attributeValue, failed, ENUM__gl_light_model_color_control_enumMap, Utils::calculateStringHash);
 
32642
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
32643
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
32644
        HASH_ELEMENT_LIGHT_MODEL_COLOR_CONTROL,
 
32645
        HASH_ATTRIBUTE_VALUE,
 
32646
        attributeValue))
 
32647
{
 
32648
    return false;
 
32649
}
 
32650
 
 
32651
    break;
 
32652
    }
 
32653
    case HASH_ATTRIBUTE_PARAM:
 
32654
    {
 
32655
 
 
32656
attributeData->param = attributeValue;
 
32657
#ifdef GENERATEDSAXPARSER_VALIDATION
 
32658
    if ( mValidate )
 
32659
    {
 
32660
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
32661
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
32662
    {
 
32663
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
32664
            simpleTypeValidationResult,
 
32665
            HASH_ELEMENT_LIGHT_MODEL_COLOR_CONTROL,
 
32666
            HASH_ATTRIBUTE_PARAM,
 
32667
            attributeValue) )
 
32668
        {
 
32669
            return false;
 
32670
        }
 
32671
    }
 
32672
    } // validation
 
32673
#endif
 
32674
 
 
32675
    break;
 
32676
    }
 
32677
    default:
 
32678
    {
 
32679
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIGHT_MODEL_COLOR_CONTROL, attribute, attributeValue))
 
32680
            {return false;}
 
32681
    }
 
32682
    }
 
32683
    }
 
32684
}
 
32685
 
 
32686
 
 
32687
    return true;
 
32688
}
 
32689
 
 
32690
//---------------------------------------------------------------------
 
32691
bool ColladaParserAutoGen15Private::_preEnd__light_model_color_control()
 
32692
{
 
32693
#ifdef GENERATEDSAXPARSER_VALIDATION
 
32694
    if ( mValidate )
 
32695
    {
 
32696
 
 
32697
        bool validationResult = _validateEnd__light_model_color_control();
 
32698
        if ( !validationResult ) return false;
 
32699
 
 
32700
    } // validation
 
32701
#endif
 
32702
 
 
32703
    return true;
 
32704
}
 
32705
 
 
32706
//---------------------------------------------------------------------
 
32707
bool ColladaParserAutoGen15Private::_freeAttributes__light_model_color_control( void* attributeData )
 
32708
{
 
32709
    light_model_color_control__AttributeData* typedAttributeData = static_cast<light_model_color_control__AttributeData*>(attributeData);
 
32710
 
 
32711
    typedAttributeData->~light_model_color_control__AttributeData();
 
32712
 
 
32713
    return true;
 
32714
}
 
32715
 
 
32716
//---------------------------------------------------------------------
 
32717
const profile_GLSL__technique__pass__states__logic_op__AttributeData profile_GLSL__technique__pass__states__logic_op__AttributeData::DEFAULT = {ENUM__gl_logic_op_enum__COPY, 0};
 
32718
 
 
32719
//---------------------------------------------------------------------
 
32720
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__logic_op( const ParserChar* text, size_t textLength )
 
32721
{
 
32722
    return true;
 
32723
}
 
32724
 
 
32725
//---------------------------------------------------------------------
 
32726
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__logic_op( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
32727
{
 
32728
#ifdef GENERATEDSAXPARSER_VALIDATION
 
32729
    if ( mValidate )
 
32730
    {
 
32731
 
 
32732
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__logic_op( attributes, attributeDataPtr, validationDataPtr );
 
32733
        if ( !validationResult ) return false;
 
32734
 
 
32735
    } // validation
 
32736
#endif
 
32737
 
 
32738
profile_GLSL__technique__pass__states__logic_op__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__logic_op__AttributeData>(attributeDataPtr);
 
32739
 
 
32740
const ParserChar** attributeArray = attributes.attributes;
 
32741
if ( attributeArray )
 
32742
{
 
32743
    while (true)
 
32744
    {
 
32745
        const ParserChar * attribute = *attributeArray;
 
32746
        if ( !attribute )
 
32747
            break;
 
32748
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
32749
        attributeArray++;
 
32750
        if ( !attributeArray )
 
32751
            return false;
 
32752
        const ParserChar* attributeValue = *attributeArray;
 
32753
        attributeArray++;
 
32754
 
 
32755
 
 
32756
    switch ( hash )
 
32757
    {
 
32758
    case HASH_ATTRIBUTE_VALUE:
 
32759
    {
 
32760
bool failed;
 
32761
attributeData->value = Utils::toEnum<ENUM__gl_logic_op_enum, StringHash, ENUM__gl_logic_op_enum__COUNT>(attributeValue, failed, ENUM__gl_logic_op_enumMap, Utils::calculateStringHash);
 
32762
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
32763
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
32764
        HASH_ELEMENT_LOGIC_OP,
 
32765
        HASH_ATTRIBUTE_VALUE,
 
32766
        attributeValue))
 
32767
{
 
32768
    return false;
 
32769
}
 
32770
 
 
32771
    break;
 
32772
    }
 
32773
    case HASH_ATTRIBUTE_PARAM:
 
32774
    {
 
32775
 
 
32776
attributeData->param = attributeValue;
 
32777
#ifdef GENERATEDSAXPARSER_VALIDATION
 
32778
    if ( mValidate )
 
32779
    {
 
32780
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
32781
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
32782
    {
 
32783
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
32784
            simpleTypeValidationResult,
 
32785
            HASH_ELEMENT_LOGIC_OP,
 
32786
            HASH_ATTRIBUTE_PARAM,
 
32787
            attributeValue) )
 
32788
        {
 
32789
            return false;
 
32790
        }
 
32791
    }
 
32792
    } // validation
 
32793
#endif
 
32794
 
 
32795
    break;
 
32796
    }
 
32797
    default:
 
32798
    {
 
32799
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LOGIC_OP, attribute, attributeValue))
 
32800
            {return false;}
 
32801
    }
 
32802
    }
 
32803
    }
 
32804
}
 
32805
 
 
32806
 
 
32807
    return true;
 
32808
}
 
32809
 
 
32810
//---------------------------------------------------------------------
 
32811
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__logic_op()
 
32812
{
 
32813
#ifdef GENERATEDSAXPARSER_VALIDATION
 
32814
    if ( mValidate )
 
32815
    {
 
32816
 
 
32817
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__logic_op();
 
32818
        if ( !validationResult ) return false;
 
32819
 
 
32820
    } // validation
 
32821
#endif
 
32822
 
 
32823
    return true;
 
32824
}
 
32825
 
 
32826
//---------------------------------------------------------------------
 
32827
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__logic_op( void* attributeData )
 
32828
{
 
32829
    profile_GLSL__technique__pass__states__logic_op__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__logic_op__AttributeData*>(attributeData);
 
32830
 
 
32831
    typedAttributeData->~profile_GLSL__technique__pass__states__logic_op__AttributeData();
 
32832
 
 
32833
    return true;
 
32834
}
 
32835
 
 
32836
//---------------------------------------------------------------------
 
32837
bool ColladaParserAutoGen15Private::_data__polygon_mode( const ParserChar* text, size_t textLength )
 
32838
{
 
32839
    return true;
 
32840
}
 
32841
 
 
32842
//---------------------------------------------------------------------
 
32843
bool ColladaParserAutoGen15Private::_preBegin__polygon_mode( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
32844
{
 
32845
#ifdef GENERATEDSAXPARSER_VALIDATION
 
32846
    if ( mValidate )
 
32847
    {
 
32848
 
 
32849
        bool validationResult = _validateBegin__polygon_mode( attributes, attributeDataPtr, validationDataPtr );
 
32850
        if ( !validationResult ) return false;
 
32851
 
 
32852
    } // validation
 
32853
#endif
 
32854
 
 
32855
    return true;
 
32856
}
 
32857
 
 
32858
//---------------------------------------------------------------------
 
32859
bool ColladaParserAutoGen15Private::_preEnd__polygon_mode()
 
32860
{
 
32861
#ifdef GENERATEDSAXPARSER_VALIDATION
 
32862
    if ( mValidate )
 
32863
    {
 
32864
 
 
32865
        bool validationResult = _validateEnd__polygon_mode();
 
32866
        if ( !validationResult ) return false;
 
32867
 
 
32868
    } // validation
 
32869
#endif
 
32870
 
 
32871
    return true;
 
32872
}
 
32873
 
 
32874
//---------------------------------------------------------------------
 
32875
bool ColladaParserAutoGen15Private::_freeAttributes__polygon_mode( void* attributeData )
 
32876
{
 
32877
    return true;
 
32878
}
 
32879
 
 
32880
//---------------------------------------------------------------------
 
32881
const polygon_mode__face__AttributeData polygon_mode__face__AttributeData::DEFAULT = {ENUM__gl_face_enum__FRONT_AND_BACK, 0};
 
32882
 
 
32883
//---------------------------------------------------------------------
 
32884
bool ColladaParserAutoGen15Private::_data__polygon_mode__face( const ParserChar* text, size_t textLength )
 
32885
{
 
32886
    return true;
 
32887
}
 
32888
 
 
32889
//---------------------------------------------------------------------
 
32890
bool ColladaParserAutoGen15Private::_preBegin__polygon_mode__face( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
32891
{
 
32892
#ifdef GENERATEDSAXPARSER_VALIDATION
 
32893
    if ( mValidate )
 
32894
    {
 
32895
 
 
32896
        bool validationResult = _validateBegin__polygon_mode__face( attributes, attributeDataPtr, validationDataPtr );
 
32897
        if ( !validationResult ) return false;
 
32898
 
 
32899
    } // validation
 
32900
#endif
 
32901
 
 
32902
polygon_mode__face__AttributeData* attributeData = newData<polygon_mode__face__AttributeData>(attributeDataPtr);
 
32903
 
 
32904
const ParserChar** attributeArray = attributes.attributes;
 
32905
if ( attributeArray )
 
32906
{
 
32907
    while (true)
 
32908
    {
 
32909
        const ParserChar * attribute = *attributeArray;
 
32910
        if ( !attribute )
 
32911
            break;
 
32912
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
32913
        attributeArray++;
 
32914
        if ( !attributeArray )
 
32915
            return false;
 
32916
        const ParserChar* attributeValue = *attributeArray;
 
32917
        attributeArray++;
 
32918
 
 
32919
 
 
32920
    switch ( hash )
 
32921
    {
 
32922
    case HASH_ATTRIBUTE_VALUE:
 
32923
    {
 
32924
bool failed;
 
32925
attributeData->value = Utils::toEnum<ENUM__gl_face_enum, StringHash, ENUM__gl_face_enum__COUNT>(attributeValue, failed, ENUM__gl_face_enumMap, Utils::calculateStringHash);
 
32926
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
32927
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
32928
        HASH_ELEMENT_FACE,
 
32929
        HASH_ATTRIBUTE_VALUE,
 
32930
        attributeValue))
 
32931
{
 
32932
    return false;
 
32933
}
 
32934
 
 
32935
    break;
 
32936
    }
 
32937
    case HASH_ATTRIBUTE_PARAM:
 
32938
    {
 
32939
 
 
32940
attributeData->param = attributeValue;
 
32941
#ifdef GENERATEDSAXPARSER_VALIDATION
 
32942
    if ( mValidate )
 
32943
    {
 
32944
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
32945
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
32946
    {
 
32947
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
32948
            simpleTypeValidationResult,
 
32949
            HASH_ELEMENT_FACE,
 
32950
            HASH_ATTRIBUTE_PARAM,
 
32951
            attributeValue) )
 
32952
        {
 
32953
            return false;
 
32954
        }
 
32955
    }
 
32956
    } // validation
 
32957
#endif
 
32958
 
 
32959
    break;
 
32960
    }
 
32961
    default:
 
32962
    {
 
32963
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FACE, attribute, attributeValue))
 
32964
            {return false;}
 
32965
    }
 
32966
    }
 
32967
    }
 
32968
}
 
32969
 
 
32970
 
 
32971
    return true;
 
32972
}
 
32973
 
 
32974
//---------------------------------------------------------------------
 
32975
bool ColladaParserAutoGen15Private::_preEnd__polygon_mode__face()
 
32976
{
 
32977
#ifdef GENERATEDSAXPARSER_VALIDATION
 
32978
    if ( mValidate )
 
32979
    {
 
32980
 
 
32981
        bool validationResult = _validateEnd__polygon_mode__face();
 
32982
        if ( !validationResult ) return false;
 
32983
 
 
32984
    } // validation
 
32985
#endif
 
32986
 
 
32987
    return true;
 
32988
}
 
32989
 
 
32990
//---------------------------------------------------------------------
 
32991
bool ColladaParserAutoGen15Private::_freeAttributes__polygon_mode__face( void* attributeData )
 
32992
{
 
32993
    polygon_mode__face__AttributeData* typedAttributeData = static_cast<polygon_mode__face__AttributeData*>(attributeData);
 
32994
 
 
32995
    typedAttributeData->~polygon_mode__face__AttributeData();
 
32996
 
 
32997
    return true;
 
32998
}
 
32999
 
 
33000
//---------------------------------------------------------------------
 
33001
const polygon_mode__mode__AttributeData polygon_mode__mode__AttributeData::DEFAULT = {ENUM__gl_polygon_mode_enum__FILL, 0};
 
33002
 
 
33003
//---------------------------------------------------------------------
 
33004
bool ColladaParserAutoGen15Private::_data__polygon_mode__mode( const ParserChar* text, size_t textLength )
 
33005
{
 
33006
    return true;
 
33007
}
 
33008
 
 
33009
//---------------------------------------------------------------------
 
33010
bool ColladaParserAutoGen15Private::_preBegin__polygon_mode__mode( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
33011
{
 
33012
#ifdef GENERATEDSAXPARSER_VALIDATION
 
33013
    if ( mValidate )
 
33014
    {
 
33015
 
 
33016
        bool validationResult = _validateBegin__polygon_mode__mode( attributes, attributeDataPtr, validationDataPtr );
 
33017
        if ( !validationResult ) return false;
 
33018
 
 
33019
    } // validation
 
33020
#endif
 
33021
 
 
33022
polygon_mode__mode__AttributeData* attributeData = newData<polygon_mode__mode__AttributeData>(attributeDataPtr);
 
33023
 
 
33024
const ParserChar** attributeArray = attributes.attributes;
 
33025
if ( attributeArray )
 
33026
{
 
33027
    while (true)
 
33028
    {
 
33029
        const ParserChar * attribute = *attributeArray;
 
33030
        if ( !attribute )
 
33031
            break;
 
33032
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
33033
        attributeArray++;
 
33034
        if ( !attributeArray )
 
33035
            return false;
 
33036
        const ParserChar* attributeValue = *attributeArray;
 
33037
        attributeArray++;
 
33038
 
 
33039
 
 
33040
    switch ( hash )
 
33041
    {
 
33042
    case HASH_ATTRIBUTE_VALUE:
 
33043
    {
 
33044
bool failed;
 
33045
attributeData->value = Utils::toEnum<ENUM__gl_polygon_mode_enum, StringHash, ENUM__gl_polygon_mode_enum__COUNT>(attributeValue, failed, ENUM__gl_polygon_mode_enumMap, Utils::calculateStringHash);
 
33046
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
33047
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
33048
        HASH_ELEMENT_MODE,
 
33049
        HASH_ATTRIBUTE_VALUE,
 
33050
        attributeValue))
 
33051
{
 
33052
    return false;
 
33053
}
 
33054
 
 
33055
    break;
 
33056
    }
 
33057
    case HASH_ATTRIBUTE_PARAM:
 
33058
    {
 
33059
 
 
33060
attributeData->param = attributeValue;
 
33061
#ifdef GENERATEDSAXPARSER_VALIDATION
 
33062
    if ( mValidate )
 
33063
    {
 
33064
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
33065
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
33066
    {
 
33067
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
33068
            simpleTypeValidationResult,
 
33069
            HASH_ELEMENT_MODE,
 
33070
            HASH_ATTRIBUTE_PARAM,
 
33071
            attributeValue) )
 
33072
        {
 
33073
            return false;
 
33074
        }
 
33075
    }
 
33076
    } // validation
 
33077
#endif
 
33078
 
 
33079
    break;
 
33080
    }
 
33081
    default:
 
33082
    {
 
33083
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_MODE, attribute, attributeValue))
 
33084
            {return false;}
 
33085
    }
 
33086
    }
 
33087
    }
 
33088
}
 
33089
 
 
33090
 
 
33091
    return true;
 
33092
}
 
33093
 
 
33094
//---------------------------------------------------------------------
 
33095
bool ColladaParserAutoGen15Private::_preEnd__polygon_mode__mode()
 
33096
{
 
33097
#ifdef GENERATEDSAXPARSER_VALIDATION
 
33098
    if ( mValidate )
 
33099
    {
 
33100
 
 
33101
        bool validationResult = _validateEnd__polygon_mode__mode();
 
33102
        if ( !validationResult ) return false;
 
33103
 
 
33104
    } // validation
 
33105
#endif
 
33106
 
 
33107
    return true;
 
33108
}
 
33109
 
 
33110
//---------------------------------------------------------------------
 
33111
bool ColladaParserAutoGen15Private::_freeAttributes__polygon_mode__mode( void* attributeData )
 
33112
{
 
33113
    polygon_mode__mode__AttributeData* typedAttributeData = static_cast<polygon_mode__mode__AttributeData*>(attributeData);
 
33114
 
 
33115
    typedAttributeData->~polygon_mode__mode__AttributeData();
 
33116
 
 
33117
    return true;
 
33118
}
 
33119
 
 
33120
//---------------------------------------------------------------------
 
33121
const profile_GLSL__technique__pass__states__shade_model__AttributeData profile_GLSL__technique__pass__states__shade_model__AttributeData::DEFAULT = {ENUM__gl_shade_model_enum__SMOOTH, 0};
 
33122
 
 
33123
//---------------------------------------------------------------------
 
33124
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__shade_model( const ParserChar* text, size_t textLength )
 
33125
{
 
33126
    return true;
 
33127
}
 
33128
 
 
33129
//---------------------------------------------------------------------
 
33130
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__shade_model( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
33131
{
 
33132
#ifdef GENERATEDSAXPARSER_VALIDATION
 
33133
    if ( mValidate )
 
33134
    {
 
33135
 
 
33136
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__shade_model( attributes, attributeDataPtr, validationDataPtr );
 
33137
        if ( !validationResult ) return false;
 
33138
 
 
33139
    } // validation
 
33140
#endif
 
33141
 
 
33142
profile_GLSL__technique__pass__states__shade_model__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__shade_model__AttributeData>(attributeDataPtr);
 
33143
 
 
33144
const ParserChar** attributeArray = attributes.attributes;
 
33145
if ( attributeArray )
 
33146
{
 
33147
    while (true)
 
33148
    {
 
33149
        const ParserChar * attribute = *attributeArray;
 
33150
        if ( !attribute )
 
33151
            break;
 
33152
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
33153
        attributeArray++;
 
33154
        if ( !attributeArray )
 
33155
            return false;
 
33156
        const ParserChar* attributeValue = *attributeArray;
 
33157
        attributeArray++;
 
33158
 
 
33159
 
 
33160
    switch ( hash )
 
33161
    {
 
33162
    case HASH_ATTRIBUTE_VALUE:
 
33163
    {
 
33164
bool failed;
 
33165
attributeData->value = Utils::toEnum<ENUM__gl_shade_model_enum, StringHash, ENUM__gl_shade_model_enum__COUNT>(attributeValue, failed, ENUM__gl_shade_model_enumMap, Utils::calculateStringHash);
 
33166
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
33167
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
33168
        HASH_ELEMENT_SHADE_MODEL,
 
33169
        HASH_ATTRIBUTE_VALUE,
 
33170
        attributeValue))
 
33171
{
 
33172
    return false;
 
33173
}
 
33174
 
 
33175
    break;
 
33176
    }
 
33177
    case HASH_ATTRIBUTE_PARAM:
 
33178
    {
 
33179
 
 
33180
attributeData->param = attributeValue;
 
33181
#ifdef GENERATEDSAXPARSER_VALIDATION
 
33182
    if ( mValidate )
 
33183
    {
 
33184
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
33185
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
33186
    {
 
33187
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
33188
            simpleTypeValidationResult,
 
33189
            HASH_ELEMENT_SHADE_MODEL,
 
33190
            HASH_ATTRIBUTE_PARAM,
 
33191
            attributeValue) )
 
33192
        {
 
33193
            return false;
 
33194
        }
 
33195
    }
 
33196
    } // validation
 
33197
#endif
 
33198
 
 
33199
    break;
 
33200
    }
 
33201
    default:
 
33202
    {
 
33203
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SHADE_MODEL, attribute, attributeValue))
 
33204
            {return false;}
 
33205
    }
 
33206
    }
 
33207
    }
 
33208
}
 
33209
 
 
33210
 
 
33211
    return true;
 
33212
}
 
33213
 
 
33214
//---------------------------------------------------------------------
 
33215
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__shade_model()
 
33216
{
 
33217
#ifdef GENERATEDSAXPARSER_VALIDATION
 
33218
    if ( mValidate )
 
33219
    {
 
33220
 
 
33221
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__shade_model();
 
33222
        if ( !validationResult ) return false;
 
33223
 
 
33224
    } // validation
 
33225
#endif
 
33226
 
 
33227
    return true;
 
33228
}
 
33229
 
 
33230
//---------------------------------------------------------------------
 
33231
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__shade_model( void* attributeData )
 
33232
{
 
33233
    profile_GLSL__technique__pass__states__shade_model__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__shade_model__AttributeData*>(attributeData);
 
33234
 
 
33235
    typedAttributeData->~profile_GLSL__technique__pass__states__shade_model__AttributeData();
 
33236
 
 
33237
    return true;
 
33238
}
 
33239
 
 
33240
//---------------------------------------------------------------------
 
33241
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__stencil_func( const ParserChar* text, size_t textLength )
 
33242
{
 
33243
    return true;
 
33244
}
 
33245
 
 
33246
//---------------------------------------------------------------------
 
33247
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__stencil_func( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
33248
{
 
33249
#ifdef GENERATEDSAXPARSER_VALIDATION
 
33250
    if ( mValidate )
 
33251
    {
 
33252
 
 
33253
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__stencil_func( attributes, attributeDataPtr, validationDataPtr );
 
33254
        if ( !validationResult ) return false;
 
33255
 
 
33256
    } // validation
 
33257
#endif
 
33258
 
 
33259
    return true;
 
33260
}
 
33261
 
 
33262
//---------------------------------------------------------------------
 
33263
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__stencil_func()
 
33264
{
 
33265
#ifdef GENERATEDSAXPARSER_VALIDATION
 
33266
    if ( mValidate )
 
33267
    {
 
33268
 
 
33269
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__stencil_func();
 
33270
        if ( !validationResult ) return false;
 
33271
 
 
33272
    } // validation
 
33273
#endif
 
33274
 
 
33275
    return true;
 
33276
}
 
33277
 
 
33278
//---------------------------------------------------------------------
 
33279
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__stencil_func( void* attributeData )
 
33280
{
 
33281
    return true;
 
33282
}
 
33283
 
 
33284
//---------------------------------------------------------------------
 
33285
const profile_GLSL__technique__pass__states__stencil_func__func__AttributeData profile_GLSL__technique__pass__states__stencil_func__func__AttributeData::DEFAULT = {ENUM__gl_func_enum__ALWAYS, 0};
 
33286
 
 
33287
//---------------------------------------------------------------------
 
33288
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__stencil_func__func( const ParserChar* text, size_t textLength )
 
33289
{
 
33290
    return true;
 
33291
}
 
33292
 
 
33293
//---------------------------------------------------------------------
 
33294
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__stencil_func__func( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
33295
{
 
33296
#ifdef GENERATEDSAXPARSER_VALIDATION
 
33297
    if ( mValidate )
 
33298
    {
 
33299
 
 
33300
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__stencil_func__func( attributes, attributeDataPtr, validationDataPtr );
 
33301
        if ( !validationResult ) return false;
 
33302
 
 
33303
    } // validation
 
33304
#endif
 
33305
 
 
33306
profile_GLSL__technique__pass__states__stencil_func__func__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__stencil_func__func__AttributeData>(attributeDataPtr);
 
33307
 
 
33308
const ParserChar** attributeArray = attributes.attributes;
 
33309
if ( attributeArray )
 
33310
{
 
33311
    while (true)
 
33312
    {
 
33313
        const ParserChar * attribute = *attributeArray;
 
33314
        if ( !attribute )
 
33315
            break;
 
33316
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
33317
        attributeArray++;
 
33318
        if ( !attributeArray )
 
33319
            return false;
 
33320
        const ParserChar* attributeValue = *attributeArray;
 
33321
        attributeArray++;
 
33322
 
 
33323
 
 
33324
    switch ( hash )
 
33325
    {
 
33326
    case HASH_ATTRIBUTE_VALUE:
 
33327
    {
 
33328
bool failed;
 
33329
attributeData->value = Utils::toEnum<ENUM__gl_func_enum, StringHash, ENUM__gl_func_enum__COUNT>(attributeValue, failed, ENUM__gl_func_enumMap, Utils::calculateStringHash);
 
33330
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
33331
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
33332
        HASH_ELEMENT_FUNC,
 
33333
        HASH_ATTRIBUTE_VALUE,
 
33334
        attributeValue))
 
33335
{
 
33336
    return false;
 
33337
}
 
33338
 
 
33339
    break;
 
33340
    }
 
33341
    case HASH_ATTRIBUTE_PARAM:
 
33342
    {
 
33343
 
 
33344
attributeData->param = attributeValue;
 
33345
#ifdef GENERATEDSAXPARSER_VALIDATION
 
33346
    if ( mValidate )
 
33347
    {
 
33348
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
33349
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
33350
    {
 
33351
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
33352
            simpleTypeValidationResult,
 
33353
            HASH_ELEMENT_FUNC,
 
33354
            HASH_ATTRIBUTE_PARAM,
 
33355
            attributeValue) )
 
33356
        {
 
33357
            return false;
 
33358
        }
 
33359
    }
 
33360
    } // validation
 
33361
#endif
 
33362
 
 
33363
    break;
 
33364
    }
 
33365
    default:
 
33366
    {
 
33367
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FUNC, attribute, attributeValue))
 
33368
            {return false;}
 
33369
    }
 
33370
    }
 
33371
    }
 
33372
}
 
33373
 
 
33374
 
 
33375
    return true;
 
33376
}
 
33377
 
 
33378
//---------------------------------------------------------------------
 
33379
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__stencil_func__func()
 
33380
{
 
33381
#ifdef GENERATEDSAXPARSER_VALIDATION
 
33382
    if ( mValidate )
 
33383
    {
 
33384
 
 
33385
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__stencil_func__func();
 
33386
        if ( !validationResult ) return false;
 
33387
 
 
33388
    } // validation
 
33389
#endif
 
33390
 
 
33391
    return true;
 
33392
}
 
33393
 
 
33394
//---------------------------------------------------------------------
 
33395
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__stencil_func__func( void* attributeData )
 
33396
{
 
33397
    profile_GLSL__technique__pass__states__stencil_func__func__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__stencil_func__func__AttributeData*>(attributeData);
 
33398
 
 
33399
    typedAttributeData->~profile_GLSL__technique__pass__states__stencil_func__func__AttributeData();
 
33400
 
 
33401
    return true;
 
33402
}
 
33403
 
 
33404
//---------------------------------------------------------------------
 
33405
const profile_GLSL__technique__pass__states__stencil_func__ref__AttributeData profile_GLSL__technique__pass__states__stencil_func__ref__AttributeData::DEFAULT = {0, 0};
 
33406
 
 
33407
//---------------------------------------------------------------------
 
33408
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__stencil_func__ref( const ParserChar* text, size_t textLength )
 
33409
{
 
33410
    return true;
 
33411
}
 
33412
 
 
33413
//---------------------------------------------------------------------
 
33414
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__stencil_func__ref( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
33415
{
 
33416
#ifdef GENERATEDSAXPARSER_VALIDATION
 
33417
    if ( mValidate )
 
33418
    {
 
33419
 
 
33420
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__stencil_func__ref( attributes, attributeDataPtr, validationDataPtr );
 
33421
        if ( !validationResult ) return false;
 
33422
 
 
33423
    } // validation
 
33424
#endif
 
33425
 
 
33426
profile_GLSL__technique__pass__states__stencil_func__ref__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__stencil_func__ref__AttributeData>(attributeDataPtr);
 
33427
 
 
33428
const ParserChar** attributeArray = attributes.attributes;
 
33429
if ( attributeArray )
 
33430
{
 
33431
    while (true)
 
33432
    {
 
33433
        const ParserChar * attribute = *attributeArray;
 
33434
        if ( !attribute )
 
33435
            break;
 
33436
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
33437
        attributeArray++;
 
33438
        if ( !attributeArray )
 
33439
            return false;
 
33440
        const ParserChar* attributeValue = *attributeArray;
 
33441
        attributeArray++;
 
33442
 
 
33443
 
 
33444
    switch ( hash )
 
33445
    {
 
33446
    case HASH_ATTRIBUTE_VALUE:
 
33447
    {
 
33448
bool failed;
 
33449
attributeData->value = GeneratedSaxParser::Utils::toUint8(attributeValue, failed);
 
33450
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
33451
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
33452
        HASH_ELEMENT_REF,
 
33453
        HASH_ATTRIBUTE_VALUE,
 
33454
        attributeValue))
 
33455
{
 
33456
    return false;
 
33457
}
 
33458
 
 
33459
    break;
 
33460
    }
 
33461
    case HASH_ATTRIBUTE_PARAM:
 
33462
    {
 
33463
 
 
33464
attributeData->param = attributeValue;
 
33465
#ifdef GENERATEDSAXPARSER_VALIDATION
 
33466
    if ( mValidate )
 
33467
    {
 
33468
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
33469
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
33470
    {
 
33471
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
33472
            simpleTypeValidationResult,
 
33473
            HASH_ELEMENT_REF,
 
33474
            HASH_ATTRIBUTE_PARAM,
 
33475
            attributeValue) )
 
33476
        {
 
33477
            return false;
 
33478
        }
 
33479
    }
 
33480
    } // validation
 
33481
#endif
 
33482
 
 
33483
    break;
 
33484
    }
 
33485
    default:
 
33486
    {
 
33487
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_REF, attribute, attributeValue))
 
33488
            {return false;}
 
33489
    }
 
33490
    }
 
33491
    }
 
33492
}
 
33493
 
 
33494
 
 
33495
    return true;
 
33496
}
 
33497
 
 
33498
//---------------------------------------------------------------------
 
33499
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__stencil_func__ref()
 
33500
{
 
33501
#ifdef GENERATEDSAXPARSER_VALIDATION
 
33502
    if ( mValidate )
 
33503
    {
 
33504
 
 
33505
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__stencil_func__ref();
 
33506
        if ( !validationResult ) return false;
 
33507
 
 
33508
    } // validation
 
33509
#endif
 
33510
 
 
33511
    return true;
 
33512
}
 
33513
 
 
33514
//---------------------------------------------------------------------
 
33515
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__stencil_func__ref( void* attributeData )
 
33516
{
 
33517
    profile_GLSL__technique__pass__states__stencil_func__ref__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__stencil_func__ref__AttributeData*>(attributeData);
 
33518
 
 
33519
    typedAttributeData->~profile_GLSL__technique__pass__states__stencil_func__ref__AttributeData();
 
33520
 
 
33521
    return true;
 
33522
}
 
33523
 
 
33524
//---------------------------------------------------------------------
 
33525
const profile_GLSL__technique__pass__states__stencil_func__mask__AttributeData profile_GLSL__technique__pass__states__stencil_func__mask__AttributeData::DEFAULT = {255, 0};
 
33526
 
 
33527
//---------------------------------------------------------------------
 
33528
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__stencil_func__mask( const ParserChar* text, size_t textLength )
 
33529
{
 
33530
    return true;
 
33531
}
 
33532
 
 
33533
//---------------------------------------------------------------------
 
33534
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__stencil_func__mask( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
33535
{
 
33536
#ifdef GENERATEDSAXPARSER_VALIDATION
 
33537
    if ( mValidate )
 
33538
    {
 
33539
 
 
33540
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__stencil_func__mask( attributes, attributeDataPtr, validationDataPtr );
 
33541
        if ( !validationResult ) return false;
 
33542
 
 
33543
    } // validation
 
33544
#endif
 
33545
 
 
33546
profile_GLSL__technique__pass__states__stencil_func__mask__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__stencil_func__mask__AttributeData>(attributeDataPtr);
 
33547
 
 
33548
const ParserChar** attributeArray = attributes.attributes;
 
33549
if ( attributeArray )
 
33550
{
 
33551
    while (true)
 
33552
    {
 
33553
        const ParserChar * attribute = *attributeArray;
 
33554
        if ( !attribute )
 
33555
            break;
 
33556
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
33557
        attributeArray++;
 
33558
        if ( !attributeArray )
 
33559
            return false;
 
33560
        const ParserChar* attributeValue = *attributeArray;
 
33561
        attributeArray++;
 
33562
 
 
33563
 
 
33564
    switch ( hash )
 
33565
    {
 
33566
    case HASH_ATTRIBUTE_VALUE:
 
33567
    {
 
33568
bool failed;
 
33569
attributeData->value = GeneratedSaxParser::Utils::toUint8(attributeValue, failed);
 
33570
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
33571
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
33572
        HASH_ELEMENT_MASK,
 
33573
        HASH_ATTRIBUTE_VALUE,
 
33574
        attributeValue))
 
33575
{
 
33576
    return false;
 
33577
}
 
33578
 
 
33579
    break;
 
33580
    }
 
33581
    case HASH_ATTRIBUTE_PARAM:
 
33582
    {
 
33583
 
 
33584
attributeData->param = attributeValue;
 
33585
#ifdef GENERATEDSAXPARSER_VALIDATION
 
33586
    if ( mValidate )
 
33587
    {
 
33588
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
33589
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
33590
    {
 
33591
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
33592
            simpleTypeValidationResult,
 
33593
            HASH_ELEMENT_MASK,
 
33594
            HASH_ATTRIBUTE_PARAM,
 
33595
            attributeValue) )
 
33596
        {
 
33597
            return false;
 
33598
        }
 
33599
    }
 
33600
    } // validation
 
33601
#endif
 
33602
 
 
33603
    break;
 
33604
    }
 
33605
    default:
 
33606
    {
 
33607
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_MASK, attribute, attributeValue))
 
33608
            {return false;}
 
33609
    }
 
33610
    }
 
33611
    }
 
33612
}
 
33613
 
 
33614
 
 
33615
    return true;
 
33616
}
 
33617
 
 
33618
//---------------------------------------------------------------------
 
33619
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__stencil_func__mask()
 
33620
{
 
33621
#ifdef GENERATEDSAXPARSER_VALIDATION
 
33622
    if ( mValidate )
 
33623
    {
 
33624
 
 
33625
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__stencil_func__mask();
 
33626
        if ( !validationResult ) return false;
 
33627
 
 
33628
    } // validation
 
33629
#endif
 
33630
 
 
33631
    return true;
 
33632
}
 
33633
 
 
33634
//---------------------------------------------------------------------
 
33635
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__stencil_func__mask( void* attributeData )
 
33636
{
 
33637
    profile_GLSL__technique__pass__states__stencil_func__mask__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__stencil_func__mask__AttributeData*>(attributeData);
 
33638
 
 
33639
    typedAttributeData->~profile_GLSL__technique__pass__states__stencil_func__mask__AttributeData();
 
33640
 
 
33641
    return true;
 
33642
}
 
33643
 
 
33644
//---------------------------------------------------------------------
 
33645
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__stencil_op( const ParserChar* text, size_t textLength )
 
33646
{
 
33647
    return true;
 
33648
}
 
33649
 
 
33650
//---------------------------------------------------------------------
 
33651
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__stencil_op( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
33652
{
 
33653
#ifdef GENERATEDSAXPARSER_VALIDATION
 
33654
    if ( mValidate )
 
33655
    {
 
33656
 
 
33657
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__stencil_op( attributes, attributeDataPtr, validationDataPtr );
 
33658
        if ( !validationResult ) return false;
 
33659
 
 
33660
    } // validation
 
33661
#endif
 
33662
 
 
33663
    return true;
 
33664
}
 
33665
 
 
33666
//---------------------------------------------------------------------
 
33667
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__stencil_op()
 
33668
{
 
33669
#ifdef GENERATEDSAXPARSER_VALIDATION
 
33670
    if ( mValidate )
 
33671
    {
 
33672
 
 
33673
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__stencil_op();
 
33674
        if ( !validationResult ) return false;
 
33675
 
 
33676
    } // validation
 
33677
#endif
 
33678
 
 
33679
    return true;
 
33680
}
 
33681
 
 
33682
//---------------------------------------------------------------------
 
33683
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__stencil_op( void* attributeData )
 
33684
{
 
33685
    return true;
 
33686
}
 
33687
 
 
33688
//---------------------------------------------------------------------
 
33689
const profile_GLSL__technique__pass__states__stencil_op__fail__AttributeData profile_GLSL__technique__pass__states__stencil_op__fail__AttributeData::DEFAULT = {ENUM__gl_stencil_op_enum__KEEP, 0};
 
33690
 
 
33691
//---------------------------------------------------------------------
 
33692
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__stencil_op__fail( const ParserChar* text, size_t textLength )
 
33693
{
 
33694
    return true;
 
33695
}
 
33696
 
 
33697
//---------------------------------------------------------------------
 
33698
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__stencil_op__fail( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
33699
{
 
33700
#ifdef GENERATEDSAXPARSER_VALIDATION
 
33701
    if ( mValidate )
 
33702
    {
 
33703
 
 
33704
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__stencil_op__fail( attributes, attributeDataPtr, validationDataPtr );
 
33705
        if ( !validationResult ) return false;
 
33706
 
 
33707
    } // validation
 
33708
#endif
 
33709
 
 
33710
profile_GLSL__technique__pass__states__stencil_op__fail__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__stencil_op__fail__AttributeData>(attributeDataPtr);
 
33711
 
 
33712
const ParserChar** attributeArray = attributes.attributes;
 
33713
if ( attributeArray )
 
33714
{
 
33715
    while (true)
 
33716
    {
 
33717
        const ParserChar * attribute = *attributeArray;
 
33718
        if ( !attribute )
 
33719
            break;
 
33720
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
33721
        attributeArray++;
 
33722
        if ( !attributeArray )
 
33723
            return false;
 
33724
        const ParserChar* attributeValue = *attributeArray;
 
33725
        attributeArray++;
 
33726
 
 
33727
 
 
33728
    switch ( hash )
 
33729
    {
 
33730
    case HASH_ATTRIBUTE_VALUE:
 
33731
    {
 
33732
bool failed;
 
33733
attributeData->value = Utils::toEnum<ENUM__gl_stencil_op_enum, StringHash, ENUM__gl_stencil_op_enum__COUNT>(attributeValue, failed, ENUM__gl_stencil_op_enumMap, Utils::calculateStringHash);
 
33734
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
33735
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
33736
        HASH_ELEMENT_FAIL,
 
33737
        HASH_ATTRIBUTE_VALUE,
 
33738
        attributeValue))
 
33739
{
 
33740
    return false;
 
33741
}
 
33742
 
 
33743
    break;
 
33744
    }
 
33745
    case HASH_ATTRIBUTE_PARAM:
 
33746
    {
 
33747
 
 
33748
attributeData->param = attributeValue;
 
33749
#ifdef GENERATEDSAXPARSER_VALIDATION
 
33750
    if ( mValidate )
 
33751
    {
 
33752
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
33753
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
33754
    {
 
33755
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
33756
            simpleTypeValidationResult,
 
33757
            HASH_ELEMENT_FAIL,
 
33758
            HASH_ATTRIBUTE_PARAM,
 
33759
            attributeValue) )
 
33760
        {
 
33761
            return false;
 
33762
        }
 
33763
    }
 
33764
    } // validation
 
33765
#endif
 
33766
 
 
33767
    break;
 
33768
    }
 
33769
    default:
 
33770
    {
 
33771
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FAIL, attribute, attributeValue))
 
33772
            {return false;}
 
33773
    }
 
33774
    }
 
33775
    }
 
33776
}
 
33777
 
 
33778
 
 
33779
    return true;
 
33780
}
 
33781
 
 
33782
//---------------------------------------------------------------------
 
33783
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__stencil_op__fail()
 
33784
{
 
33785
#ifdef GENERATEDSAXPARSER_VALIDATION
 
33786
    if ( mValidate )
 
33787
    {
 
33788
 
 
33789
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__stencil_op__fail();
 
33790
        if ( !validationResult ) return false;
 
33791
 
 
33792
    } // validation
 
33793
#endif
 
33794
 
 
33795
    return true;
 
33796
}
 
33797
 
 
33798
//---------------------------------------------------------------------
 
33799
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__stencil_op__fail( void* attributeData )
 
33800
{
 
33801
    profile_GLSL__technique__pass__states__stencil_op__fail__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__stencil_op__fail__AttributeData*>(attributeData);
 
33802
 
 
33803
    typedAttributeData->~profile_GLSL__technique__pass__states__stencil_op__fail__AttributeData();
 
33804
 
 
33805
    return true;
 
33806
}
 
33807
 
 
33808
//---------------------------------------------------------------------
 
33809
const profile_GLSL__technique__pass__states__stencil_op__zfail__AttributeData profile_GLSL__technique__pass__states__stencil_op__zfail__AttributeData::DEFAULT = {ENUM__gl_stencil_op_enum__KEEP, 0};
 
33810
 
 
33811
//---------------------------------------------------------------------
 
33812
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__stencil_op__zfail( const ParserChar* text, size_t textLength )
 
33813
{
 
33814
    return true;
 
33815
}
 
33816
 
 
33817
//---------------------------------------------------------------------
 
33818
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__stencil_op__zfail( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
33819
{
 
33820
#ifdef GENERATEDSAXPARSER_VALIDATION
 
33821
    if ( mValidate )
 
33822
    {
 
33823
 
 
33824
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__stencil_op__zfail( attributes, attributeDataPtr, validationDataPtr );
 
33825
        if ( !validationResult ) return false;
 
33826
 
 
33827
    } // validation
 
33828
#endif
 
33829
 
 
33830
profile_GLSL__technique__pass__states__stencil_op__zfail__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__stencil_op__zfail__AttributeData>(attributeDataPtr);
 
33831
 
 
33832
const ParserChar** attributeArray = attributes.attributes;
 
33833
if ( attributeArray )
 
33834
{
 
33835
    while (true)
 
33836
    {
 
33837
        const ParserChar * attribute = *attributeArray;
 
33838
        if ( !attribute )
 
33839
            break;
 
33840
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
33841
        attributeArray++;
 
33842
        if ( !attributeArray )
 
33843
            return false;
 
33844
        const ParserChar* attributeValue = *attributeArray;
 
33845
        attributeArray++;
 
33846
 
 
33847
 
 
33848
    switch ( hash )
 
33849
    {
 
33850
    case HASH_ATTRIBUTE_VALUE:
 
33851
    {
 
33852
bool failed;
 
33853
attributeData->value = Utils::toEnum<ENUM__gl_stencil_op_enum, StringHash, ENUM__gl_stencil_op_enum__COUNT>(attributeValue, failed, ENUM__gl_stencil_op_enumMap, Utils::calculateStringHash);
 
33854
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
33855
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
33856
        HASH_ELEMENT_ZFAIL,
 
33857
        HASH_ATTRIBUTE_VALUE,
 
33858
        attributeValue))
 
33859
{
 
33860
    return false;
 
33861
}
 
33862
 
 
33863
    break;
 
33864
    }
 
33865
    case HASH_ATTRIBUTE_PARAM:
 
33866
    {
 
33867
 
 
33868
attributeData->param = attributeValue;
 
33869
#ifdef GENERATEDSAXPARSER_VALIDATION
 
33870
    if ( mValidate )
 
33871
    {
 
33872
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
33873
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
33874
    {
 
33875
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
33876
            simpleTypeValidationResult,
 
33877
            HASH_ELEMENT_ZFAIL,
 
33878
            HASH_ATTRIBUTE_PARAM,
 
33879
            attributeValue) )
 
33880
        {
 
33881
            return false;
 
33882
        }
 
33883
    }
 
33884
    } // validation
 
33885
#endif
 
33886
 
 
33887
    break;
 
33888
    }
 
33889
    default:
 
33890
    {
 
33891
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_ZFAIL, attribute, attributeValue))
 
33892
            {return false;}
 
33893
    }
 
33894
    }
 
33895
    }
 
33896
}
 
33897
 
 
33898
 
 
33899
    return true;
 
33900
}
 
33901
 
 
33902
//---------------------------------------------------------------------
 
33903
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__stencil_op__zfail()
 
33904
{
 
33905
#ifdef GENERATEDSAXPARSER_VALIDATION
 
33906
    if ( mValidate )
 
33907
    {
 
33908
 
 
33909
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__stencil_op__zfail();
 
33910
        if ( !validationResult ) return false;
 
33911
 
 
33912
    } // validation
 
33913
#endif
 
33914
 
 
33915
    return true;
 
33916
}
 
33917
 
 
33918
//---------------------------------------------------------------------
 
33919
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__stencil_op__zfail( void* attributeData )
 
33920
{
 
33921
    profile_GLSL__technique__pass__states__stencil_op__zfail__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__stencil_op__zfail__AttributeData*>(attributeData);
 
33922
 
 
33923
    typedAttributeData->~profile_GLSL__technique__pass__states__stencil_op__zfail__AttributeData();
 
33924
 
 
33925
    return true;
 
33926
}
 
33927
 
 
33928
//---------------------------------------------------------------------
 
33929
const profile_GLSL__technique__pass__states__stencil_op__zpass__AttributeData profile_GLSL__technique__pass__states__stencil_op__zpass__AttributeData::DEFAULT = {ENUM__gl_stencil_op_enum__KEEP, 0};
 
33930
 
 
33931
//---------------------------------------------------------------------
 
33932
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__stencil_op__zpass( const ParserChar* text, size_t textLength )
 
33933
{
 
33934
    return true;
 
33935
}
 
33936
 
 
33937
//---------------------------------------------------------------------
 
33938
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__stencil_op__zpass( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
33939
{
 
33940
#ifdef GENERATEDSAXPARSER_VALIDATION
 
33941
    if ( mValidate )
 
33942
    {
 
33943
 
 
33944
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__stencil_op__zpass( attributes, attributeDataPtr, validationDataPtr );
 
33945
        if ( !validationResult ) return false;
 
33946
 
 
33947
    } // validation
 
33948
#endif
 
33949
 
 
33950
profile_GLSL__technique__pass__states__stencil_op__zpass__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__stencil_op__zpass__AttributeData>(attributeDataPtr);
 
33951
 
 
33952
const ParserChar** attributeArray = attributes.attributes;
 
33953
if ( attributeArray )
 
33954
{
 
33955
    while (true)
 
33956
    {
 
33957
        const ParserChar * attribute = *attributeArray;
 
33958
        if ( !attribute )
 
33959
            break;
 
33960
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
33961
        attributeArray++;
 
33962
        if ( !attributeArray )
 
33963
            return false;
 
33964
        const ParserChar* attributeValue = *attributeArray;
 
33965
        attributeArray++;
 
33966
 
 
33967
 
 
33968
    switch ( hash )
 
33969
    {
 
33970
    case HASH_ATTRIBUTE_VALUE:
 
33971
    {
 
33972
bool failed;
 
33973
attributeData->value = Utils::toEnum<ENUM__gl_stencil_op_enum, StringHash, ENUM__gl_stencil_op_enum__COUNT>(attributeValue, failed, ENUM__gl_stencil_op_enumMap, Utils::calculateStringHash);
 
33974
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
33975
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
33976
        HASH_ELEMENT_ZPASS,
 
33977
        HASH_ATTRIBUTE_VALUE,
 
33978
        attributeValue))
 
33979
{
 
33980
    return false;
 
33981
}
 
33982
 
 
33983
    break;
 
33984
    }
 
33985
    case HASH_ATTRIBUTE_PARAM:
 
33986
    {
 
33987
 
 
33988
attributeData->param = attributeValue;
 
33989
#ifdef GENERATEDSAXPARSER_VALIDATION
 
33990
    if ( mValidate )
 
33991
    {
 
33992
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
33993
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
33994
    {
 
33995
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
33996
            simpleTypeValidationResult,
 
33997
            HASH_ELEMENT_ZPASS,
 
33998
            HASH_ATTRIBUTE_PARAM,
 
33999
            attributeValue) )
 
34000
        {
 
34001
            return false;
 
34002
        }
 
34003
    }
 
34004
    } // validation
 
34005
#endif
 
34006
 
 
34007
    break;
 
34008
    }
 
34009
    default:
 
34010
    {
 
34011
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_ZPASS, attribute, attributeValue))
 
34012
            {return false;}
 
34013
    }
 
34014
    }
 
34015
    }
 
34016
}
 
34017
 
 
34018
 
 
34019
    return true;
 
34020
}
 
34021
 
 
34022
//---------------------------------------------------------------------
 
34023
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__stencil_op__zpass()
 
34024
{
 
34025
#ifdef GENERATEDSAXPARSER_VALIDATION
 
34026
    if ( mValidate )
 
34027
    {
 
34028
 
 
34029
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__stencil_op__zpass();
 
34030
        if ( !validationResult ) return false;
 
34031
 
 
34032
    } // validation
 
34033
#endif
 
34034
 
 
34035
    return true;
 
34036
}
 
34037
 
 
34038
//---------------------------------------------------------------------
 
34039
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__stencil_op__zpass( void* attributeData )
 
34040
{
 
34041
    profile_GLSL__technique__pass__states__stencil_op__zpass__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__stencil_op__zpass__AttributeData*>(attributeData);
 
34042
 
 
34043
    typedAttributeData->~profile_GLSL__technique__pass__states__stencil_op__zpass__AttributeData();
 
34044
 
 
34045
    return true;
 
34046
}
 
34047
 
 
34048
//---------------------------------------------------------------------
 
34049
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__stencil_func_separate( const ParserChar* text, size_t textLength )
 
34050
{
 
34051
    return true;
 
34052
}
 
34053
 
 
34054
//---------------------------------------------------------------------
 
34055
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__stencil_func_separate( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
34056
{
 
34057
#ifdef GENERATEDSAXPARSER_VALIDATION
 
34058
    if ( mValidate )
 
34059
    {
 
34060
 
 
34061
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__stencil_func_separate( attributes, attributeDataPtr, validationDataPtr );
 
34062
        if ( !validationResult ) return false;
 
34063
 
 
34064
    } // validation
 
34065
#endif
 
34066
 
 
34067
    return true;
 
34068
}
 
34069
 
 
34070
//---------------------------------------------------------------------
 
34071
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__stencil_func_separate()
 
34072
{
 
34073
#ifdef GENERATEDSAXPARSER_VALIDATION
 
34074
    if ( mValidate )
 
34075
    {
 
34076
 
 
34077
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__stencil_func_separate();
 
34078
        if ( !validationResult ) return false;
 
34079
 
 
34080
    } // validation
 
34081
#endif
 
34082
 
 
34083
    return true;
 
34084
}
 
34085
 
 
34086
//---------------------------------------------------------------------
 
34087
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__stencil_func_separate( void* attributeData )
 
34088
{
 
34089
    return true;
 
34090
}
 
34091
 
 
34092
//---------------------------------------------------------------------
 
34093
const profile_GLSL__technique__pass__states__stencil_func_separate__front__AttributeData profile_GLSL__technique__pass__states__stencil_func_separate__front__AttributeData::DEFAULT = {ENUM__gl_func_enum__ALWAYS, 0};
 
34094
 
 
34095
//---------------------------------------------------------------------
 
34096
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__stencil_func_separate__front( const ParserChar* text, size_t textLength )
 
34097
{
 
34098
    return true;
 
34099
}
 
34100
 
 
34101
//---------------------------------------------------------------------
 
34102
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__stencil_func_separate__front( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
34103
{
 
34104
#ifdef GENERATEDSAXPARSER_VALIDATION
 
34105
    if ( mValidate )
 
34106
    {
 
34107
 
 
34108
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__stencil_func_separate__front( attributes, attributeDataPtr, validationDataPtr );
 
34109
        if ( !validationResult ) return false;
 
34110
 
 
34111
    } // validation
 
34112
#endif
 
34113
 
 
34114
profile_GLSL__technique__pass__states__stencil_func_separate__front__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__stencil_func_separate__front__AttributeData>(attributeDataPtr);
 
34115
 
 
34116
const ParserChar** attributeArray = attributes.attributes;
 
34117
if ( attributeArray )
 
34118
{
 
34119
    while (true)
 
34120
    {
 
34121
        const ParserChar * attribute = *attributeArray;
 
34122
        if ( !attribute )
 
34123
            break;
 
34124
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
34125
        attributeArray++;
 
34126
        if ( !attributeArray )
 
34127
            return false;
 
34128
        const ParserChar* attributeValue = *attributeArray;
 
34129
        attributeArray++;
 
34130
 
 
34131
 
 
34132
    switch ( hash )
 
34133
    {
 
34134
    case HASH_ATTRIBUTE_VALUE:
 
34135
    {
 
34136
bool failed;
 
34137
attributeData->value = Utils::toEnum<ENUM__gl_func_enum, StringHash, ENUM__gl_func_enum__COUNT>(attributeValue, failed, ENUM__gl_func_enumMap, Utils::calculateStringHash);
 
34138
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
34139
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
34140
        HASH_ELEMENT_FRONT,
 
34141
        HASH_ATTRIBUTE_VALUE,
 
34142
        attributeValue))
 
34143
{
 
34144
    return false;
 
34145
}
 
34146
 
 
34147
    break;
 
34148
    }
 
34149
    case HASH_ATTRIBUTE_PARAM:
 
34150
    {
 
34151
 
 
34152
attributeData->param = attributeValue;
 
34153
#ifdef GENERATEDSAXPARSER_VALIDATION
 
34154
    if ( mValidate )
 
34155
    {
 
34156
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
34157
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
34158
    {
 
34159
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
34160
            simpleTypeValidationResult,
 
34161
            HASH_ELEMENT_FRONT,
 
34162
            HASH_ATTRIBUTE_PARAM,
 
34163
            attributeValue) )
 
34164
        {
 
34165
            return false;
 
34166
        }
 
34167
    }
 
34168
    } // validation
 
34169
#endif
 
34170
 
 
34171
    break;
 
34172
    }
 
34173
    default:
 
34174
    {
 
34175
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FRONT, attribute, attributeValue))
 
34176
            {return false;}
 
34177
    }
 
34178
    }
 
34179
    }
 
34180
}
 
34181
 
 
34182
 
 
34183
    return true;
 
34184
}
 
34185
 
 
34186
//---------------------------------------------------------------------
 
34187
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__stencil_func_separate__front()
 
34188
{
 
34189
#ifdef GENERATEDSAXPARSER_VALIDATION
 
34190
    if ( mValidate )
 
34191
    {
 
34192
 
 
34193
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__stencil_func_separate__front();
 
34194
        if ( !validationResult ) return false;
 
34195
 
 
34196
    } // validation
 
34197
#endif
 
34198
 
 
34199
    return true;
 
34200
}
 
34201
 
 
34202
//---------------------------------------------------------------------
 
34203
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__stencil_func_separate__front( void* attributeData )
 
34204
{
 
34205
    profile_GLSL__technique__pass__states__stencil_func_separate__front__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__stencil_func_separate__front__AttributeData*>(attributeData);
 
34206
 
 
34207
    typedAttributeData->~profile_GLSL__technique__pass__states__stencil_func_separate__front__AttributeData();
 
34208
 
 
34209
    return true;
 
34210
}
 
34211
 
 
34212
//---------------------------------------------------------------------
 
34213
const profile_GLSL__technique__pass__states__stencil_func_separate__back__AttributeData profile_GLSL__technique__pass__states__stencil_func_separate__back__AttributeData::DEFAULT = {ENUM__gl_func_enum__ALWAYS, 0};
 
34214
 
 
34215
//---------------------------------------------------------------------
 
34216
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__stencil_func_separate__back( const ParserChar* text, size_t textLength )
 
34217
{
 
34218
    return true;
 
34219
}
 
34220
 
 
34221
//---------------------------------------------------------------------
 
34222
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__stencil_func_separate__back( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
34223
{
 
34224
#ifdef GENERATEDSAXPARSER_VALIDATION
 
34225
    if ( mValidate )
 
34226
    {
 
34227
 
 
34228
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__stencil_func_separate__back( attributes, attributeDataPtr, validationDataPtr );
 
34229
        if ( !validationResult ) return false;
 
34230
 
 
34231
    } // validation
 
34232
#endif
 
34233
 
 
34234
profile_GLSL__technique__pass__states__stencil_func_separate__back__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__stencil_func_separate__back__AttributeData>(attributeDataPtr);
 
34235
 
 
34236
const ParserChar** attributeArray = attributes.attributes;
 
34237
if ( attributeArray )
 
34238
{
 
34239
    while (true)
 
34240
    {
 
34241
        const ParserChar * attribute = *attributeArray;
 
34242
        if ( !attribute )
 
34243
            break;
 
34244
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
34245
        attributeArray++;
 
34246
        if ( !attributeArray )
 
34247
            return false;
 
34248
        const ParserChar* attributeValue = *attributeArray;
 
34249
        attributeArray++;
 
34250
 
 
34251
 
 
34252
    switch ( hash )
 
34253
    {
 
34254
    case HASH_ATTRIBUTE_VALUE:
 
34255
    {
 
34256
bool failed;
 
34257
attributeData->value = Utils::toEnum<ENUM__gl_func_enum, StringHash, ENUM__gl_func_enum__COUNT>(attributeValue, failed, ENUM__gl_func_enumMap, Utils::calculateStringHash);
 
34258
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
34259
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
34260
        HASH_ELEMENT_BACK,
 
34261
        HASH_ATTRIBUTE_VALUE,
 
34262
        attributeValue))
 
34263
{
 
34264
    return false;
 
34265
}
 
34266
 
 
34267
    break;
 
34268
    }
 
34269
    case HASH_ATTRIBUTE_PARAM:
 
34270
    {
 
34271
 
 
34272
attributeData->param = attributeValue;
 
34273
#ifdef GENERATEDSAXPARSER_VALIDATION
 
34274
    if ( mValidate )
 
34275
    {
 
34276
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
34277
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
34278
    {
 
34279
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
34280
            simpleTypeValidationResult,
 
34281
            HASH_ELEMENT_BACK,
 
34282
            HASH_ATTRIBUTE_PARAM,
 
34283
            attributeValue) )
 
34284
        {
 
34285
            return false;
 
34286
        }
 
34287
    }
 
34288
    } // validation
 
34289
#endif
 
34290
 
 
34291
    break;
 
34292
    }
 
34293
    default:
 
34294
    {
 
34295
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_BACK, attribute, attributeValue))
 
34296
            {return false;}
 
34297
    }
 
34298
    }
 
34299
    }
 
34300
}
 
34301
 
 
34302
 
 
34303
    return true;
 
34304
}
 
34305
 
 
34306
//---------------------------------------------------------------------
 
34307
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__stencil_func_separate__back()
 
34308
{
 
34309
#ifdef GENERATEDSAXPARSER_VALIDATION
 
34310
    if ( mValidate )
 
34311
    {
 
34312
 
 
34313
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__stencil_func_separate__back();
 
34314
        if ( !validationResult ) return false;
 
34315
 
 
34316
    } // validation
 
34317
#endif
 
34318
 
 
34319
    return true;
 
34320
}
 
34321
 
 
34322
//---------------------------------------------------------------------
 
34323
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__stencil_func_separate__back( void* attributeData )
 
34324
{
 
34325
    profile_GLSL__technique__pass__states__stencil_func_separate__back__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__stencil_func_separate__back__AttributeData*>(attributeData);
 
34326
 
 
34327
    typedAttributeData->~profile_GLSL__technique__pass__states__stencil_func_separate__back__AttributeData();
 
34328
 
 
34329
    return true;
 
34330
}
 
34331
 
 
34332
//---------------------------------------------------------------------
 
34333
const profile_GLSL__technique__pass__states__stencil_func_separate__ref__AttributeData profile_GLSL__technique__pass__states__stencil_func_separate__ref__AttributeData::DEFAULT = {0, 0};
 
34334
 
 
34335
//---------------------------------------------------------------------
 
34336
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__stencil_func_separate__ref( const ParserChar* text, size_t textLength )
 
34337
{
 
34338
    return true;
 
34339
}
 
34340
 
 
34341
//---------------------------------------------------------------------
 
34342
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__stencil_func_separate__ref( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
34343
{
 
34344
#ifdef GENERATEDSAXPARSER_VALIDATION
 
34345
    if ( mValidate )
 
34346
    {
 
34347
 
 
34348
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__stencil_func_separate__ref( attributes, attributeDataPtr, validationDataPtr );
 
34349
        if ( !validationResult ) return false;
 
34350
 
 
34351
    } // validation
 
34352
#endif
 
34353
 
 
34354
profile_GLSL__technique__pass__states__stencil_func_separate__ref__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__stencil_func_separate__ref__AttributeData>(attributeDataPtr);
 
34355
 
 
34356
const ParserChar** attributeArray = attributes.attributes;
 
34357
if ( attributeArray )
 
34358
{
 
34359
    while (true)
 
34360
    {
 
34361
        const ParserChar * attribute = *attributeArray;
 
34362
        if ( !attribute )
 
34363
            break;
 
34364
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
34365
        attributeArray++;
 
34366
        if ( !attributeArray )
 
34367
            return false;
 
34368
        const ParserChar* attributeValue = *attributeArray;
 
34369
        attributeArray++;
 
34370
 
 
34371
 
 
34372
    switch ( hash )
 
34373
    {
 
34374
    case HASH_ATTRIBUTE_VALUE:
 
34375
    {
 
34376
bool failed;
 
34377
attributeData->value = GeneratedSaxParser::Utils::toUint8(attributeValue, failed);
 
34378
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
34379
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
34380
        HASH_ELEMENT_REF,
 
34381
        HASH_ATTRIBUTE_VALUE,
 
34382
        attributeValue))
 
34383
{
 
34384
    return false;
 
34385
}
 
34386
 
 
34387
    break;
 
34388
    }
 
34389
    case HASH_ATTRIBUTE_PARAM:
 
34390
    {
 
34391
 
 
34392
attributeData->param = attributeValue;
 
34393
#ifdef GENERATEDSAXPARSER_VALIDATION
 
34394
    if ( mValidate )
 
34395
    {
 
34396
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
34397
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
34398
    {
 
34399
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
34400
            simpleTypeValidationResult,
 
34401
            HASH_ELEMENT_REF,
 
34402
            HASH_ATTRIBUTE_PARAM,
 
34403
            attributeValue) )
 
34404
        {
 
34405
            return false;
 
34406
        }
 
34407
    }
 
34408
    } // validation
 
34409
#endif
 
34410
 
 
34411
    break;
 
34412
    }
 
34413
    default:
 
34414
    {
 
34415
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_REF, attribute, attributeValue))
 
34416
            {return false;}
 
34417
    }
 
34418
    }
 
34419
    }
 
34420
}
 
34421
 
 
34422
 
 
34423
    return true;
 
34424
}
 
34425
 
 
34426
//---------------------------------------------------------------------
 
34427
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__stencil_func_separate__ref()
 
34428
{
 
34429
#ifdef GENERATEDSAXPARSER_VALIDATION
 
34430
    if ( mValidate )
 
34431
    {
 
34432
 
 
34433
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__stencil_func_separate__ref();
 
34434
        if ( !validationResult ) return false;
 
34435
 
 
34436
    } // validation
 
34437
#endif
 
34438
 
 
34439
    return true;
 
34440
}
 
34441
 
 
34442
//---------------------------------------------------------------------
 
34443
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__stencil_func_separate__ref( void* attributeData )
 
34444
{
 
34445
    profile_GLSL__technique__pass__states__stencil_func_separate__ref__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__stencil_func_separate__ref__AttributeData*>(attributeData);
 
34446
 
 
34447
    typedAttributeData->~profile_GLSL__technique__pass__states__stencil_func_separate__ref__AttributeData();
 
34448
 
 
34449
    return true;
 
34450
}
 
34451
 
 
34452
//---------------------------------------------------------------------
 
34453
const profile_GLSL__technique__pass__states__stencil_func_separate__mask__AttributeData profile_GLSL__technique__pass__states__stencil_func_separate__mask__AttributeData::DEFAULT = {255, 0};
 
34454
 
 
34455
//---------------------------------------------------------------------
 
34456
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__stencil_func_separate__mask( const ParserChar* text, size_t textLength )
 
34457
{
 
34458
    return true;
 
34459
}
 
34460
 
 
34461
//---------------------------------------------------------------------
 
34462
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__stencil_func_separate__mask( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
34463
{
 
34464
#ifdef GENERATEDSAXPARSER_VALIDATION
 
34465
    if ( mValidate )
 
34466
    {
 
34467
 
 
34468
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__stencil_func_separate__mask( attributes, attributeDataPtr, validationDataPtr );
 
34469
        if ( !validationResult ) return false;
 
34470
 
 
34471
    } // validation
 
34472
#endif
 
34473
 
 
34474
profile_GLSL__technique__pass__states__stencil_func_separate__mask__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__stencil_func_separate__mask__AttributeData>(attributeDataPtr);
 
34475
 
 
34476
const ParserChar** attributeArray = attributes.attributes;
 
34477
if ( attributeArray )
 
34478
{
 
34479
    while (true)
 
34480
    {
 
34481
        const ParserChar * attribute = *attributeArray;
 
34482
        if ( !attribute )
 
34483
            break;
 
34484
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
34485
        attributeArray++;
 
34486
        if ( !attributeArray )
 
34487
            return false;
 
34488
        const ParserChar* attributeValue = *attributeArray;
 
34489
        attributeArray++;
 
34490
 
 
34491
 
 
34492
    switch ( hash )
 
34493
    {
 
34494
    case HASH_ATTRIBUTE_VALUE:
 
34495
    {
 
34496
bool failed;
 
34497
attributeData->value = GeneratedSaxParser::Utils::toUint8(attributeValue, failed);
 
34498
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
34499
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
34500
        HASH_ELEMENT_MASK,
 
34501
        HASH_ATTRIBUTE_VALUE,
 
34502
        attributeValue))
 
34503
{
 
34504
    return false;
 
34505
}
 
34506
 
 
34507
    break;
 
34508
    }
 
34509
    case HASH_ATTRIBUTE_PARAM:
 
34510
    {
 
34511
 
 
34512
attributeData->param = attributeValue;
 
34513
#ifdef GENERATEDSAXPARSER_VALIDATION
 
34514
    if ( mValidate )
 
34515
    {
 
34516
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
34517
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
34518
    {
 
34519
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
34520
            simpleTypeValidationResult,
 
34521
            HASH_ELEMENT_MASK,
 
34522
            HASH_ATTRIBUTE_PARAM,
 
34523
            attributeValue) )
 
34524
        {
 
34525
            return false;
 
34526
        }
 
34527
    }
 
34528
    } // validation
 
34529
#endif
 
34530
 
 
34531
    break;
 
34532
    }
 
34533
    default:
 
34534
    {
 
34535
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_MASK, attribute, attributeValue))
 
34536
            {return false;}
 
34537
    }
 
34538
    }
 
34539
    }
 
34540
}
 
34541
 
 
34542
 
 
34543
    return true;
 
34544
}
 
34545
 
 
34546
//---------------------------------------------------------------------
 
34547
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__stencil_func_separate__mask()
 
34548
{
 
34549
#ifdef GENERATEDSAXPARSER_VALIDATION
 
34550
    if ( mValidate )
 
34551
    {
 
34552
 
 
34553
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__stencil_func_separate__mask();
 
34554
        if ( !validationResult ) return false;
 
34555
 
 
34556
    } // validation
 
34557
#endif
 
34558
 
 
34559
    return true;
 
34560
}
 
34561
 
 
34562
//---------------------------------------------------------------------
 
34563
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__stencil_func_separate__mask( void* attributeData )
 
34564
{
 
34565
    profile_GLSL__technique__pass__states__stencil_func_separate__mask__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__stencil_func_separate__mask__AttributeData*>(attributeData);
 
34566
 
 
34567
    typedAttributeData->~profile_GLSL__technique__pass__states__stencil_func_separate__mask__AttributeData();
 
34568
 
 
34569
    return true;
 
34570
}
 
34571
 
 
34572
//---------------------------------------------------------------------
 
34573
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__stencil_op_separate( const ParserChar* text, size_t textLength )
 
34574
{
 
34575
    return true;
 
34576
}
 
34577
 
 
34578
//---------------------------------------------------------------------
 
34579
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__stencil_op_separate( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
34580
{
 
34581
#ifdef GENERATEDSAXPARSER_VALIDATION
 
34582
    if ( mValidate )
 
34583
    {
 
34584
 
 
34585
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__stencil_op_separate( attributes, attributeDataPtr, validationDataPtr );
 
34586
        if ( !validationResult ) return false;
 
34587
 
 
34588
    } // validation
 
34589
#endif
 
34590
 
 
34591
    return true;
 
34592
}
 
34593
 
 
34594
//---------------------------------------------------------------------
 
34595
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__stencil_op_separate()
 
34596
{
 
34597
#ifdef GENERATEDSAXPARSER_VALIDATION
 
34598
    if ( mValidate )
 
34599
    {
 
34600
 
 
34601
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__stencil_op_separate();
 
34602
        if ( !validationResult ) return false;
 
34603
 
 
34604
    } // validation
 
34605
#endif
 
34606
 
 
34607
    return true;
 
34608
}
 
34609
 
 
34610
//---------------------------------------------------------------------
 
34611
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__stencil_op_separate( void* attributeData )
 
34612
{
 
34613
    return true;
 
34614
}
 
34615
 
 
34616
//---------------------------------------------------------------------
 
34617
const profile_GLSL__technique__pass__states__stencil_op_separate__face__AttributeData profile_GLSL__technique__pass__states__stencil_op_separate__face__AttributeData::DEFAULT = {ENUM__gl_face_enum__FRONT_AND_BACK, 0};
 
34618
 
 
34619
//---------------------------------------------------------------------
 
34620
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__stencil_op_separate__face( const ParserChar* text, size_t textLength )
 
34621
{
 
34622
    return true;
 
34623
}
 
34624
 
 
34625
//---------------------------------------------------------------------
 
34626
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__stencil_op_separate__face( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
34627
{
 
34628
#ifdef GENERATEDSAXPARSER_VALIDATION
 
34629
    if ( mValidate )
 
34630
    {
 
34631
 
 
34632
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__stencil_op_separate__face( attributes, attributeDataPtr, validationDataPtr );
 
34633
        if ( !validationResult ) return false;
 
34634
 
 
34635
    } // validation
 
34636
#endif
 
34637
 
 
34638
profile_GLSL__technique__pass__states__stencil_op_separate__face__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__stencil_op_separate__face__AttributeData>(attributeDataPtr);
 
34639
 
 
34640
const ParserChar** attributeArray = attributes.attributes;
 
34641
if ( attributeArray )
 
34642
{
 
34643
    while (true)
 
34644
    {
 
34645
        const ParserChar * attribute = *attributeArray;
 
34646
        if ( !attribute )
 
34647
            break;
 
34648
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
34649
        attributeArray++;
 
34650
        if ( !attributeArray )
 
34651
            return false;
 
34652
        const ParserChar* attributeValue = *attributeArray;
 
34653
        attributeArray++;
 
34654
 
 
34655
 
 
34656
    switch ( hash )
 
34657
    {
 
34658
    case HASH_ATTRIBUTE_VALUE:
 
34659
    {
 
34660
bool failed;
 
34661
attributeData->value = Utils::toEnum<ENUM__gl_face_enum, StringHash, ENUM__gl_face_enum__COUNT>(attributeValue, failed, ENUM__gl_face_enumMap, Utils::calculateStringHash);
 
34662
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
34663
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
34664
        HASH_ELEMENT_FACE,
 
34665
        HASH_ATTRIBUTE_VALUE,
 
34666
        attributeValue))
 
34667
{
 
34668
    return false;
 
34669
}
 
34670
 
 
34671
    break;
 
34672
    }
 
34673
    case HASH_ATTRIBUTE_PARAM:
 
34674
    {
 
34675
 
 
34676
attributeData->param = attributeValue;
 
34677
#ifdef GENERATEDSAXPARSER_VALIDATION
 
34678
    if ( mValidate )
 
34679
    {
 
34680
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
34681
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
34682
    {
 
34683
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
34684
            simpleTypeValidationResult,
 
34685
            HASH_ELEMENT_FACE,
 
34686
            HASH_ATTRIBUTE_PARAM,
 
34687
            attributeValue) )
 
34688
        {
 
34689
            return false;
 
34690
        }
 
34691
    }
 
34692
    } // validation
 
34693
#endif
 
34694
 
 
34695
    break;
 
34696
    }
 
34697
    default:
 
34698
    {
 
34699
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FACE, attribute, attributeValue))
 
34700
            {return false;}
 
34701
    }
 
34702
    }
 
34703
    }
 
34704
}
 
34705
 
 
34706
 
 
34707
    return true;
 
34708
}
 
34709
 
 
34710
//---------------------------------------------------------------------
 
34711
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__stencil_op_separate__face()
 
34712
{
 
34713
#ifdef GENERATEDSAXPARSER_VALIDATION
 
34714
    if ( mValidate )
 
34715
    {
 
34716
 
 
34717
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__stencil_op_separate__face();
 
34718
        if ( !validationResult ) return false;
 
34719
 
 
34720
    } // validation
 
34721
#endif
 
34722
 
 
34723
    return true;
 
34724
}
 
34725
 
 
34726
//---------------------------------------------------------------------
 
34727
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__stencil_op_separate__face( void* attributeData )
 
34728
{
 
34729
    profile_GLSL__technique__pass__states__stencil_op_separate__face__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__stencil_op_separate__face__AttributeData*>(attributeData);
 
34730
 
 
34731
    typedAttributeData->~profile_GLSL__technique__pass__states__stencil_op_separate__face__AttributeData();
 
34732
 
 
34733
    return true;
 
34734
}
 
34735
 
 
34736
//---------------------------------------------------------------------
 
34737
const profile_GLSL__technique__pass__states__stencil_op_separate__fail__AttributeData profile_GLSL__technique__pass__states__stencil_op_separate__fail__AttributeData::DEFAULT = {ENUM__gl_stencil_op_enum__KEEP, 0};
 
34738
 
 
34739
//---------------------------------------------------------------------
 
34740
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__stencil_op_separate__fail( const ParserChar* text, size_t textLength )
 
34741
{
 
34742
    return true;
 
34743
}
 
34744
 
 
34745
//---------------------------------------------------------------------
 
34746
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__stencil_op_separate__fail( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
34747
{
 
34748
#ifdef GENERATEDSAXPARSER_VALIDATION
 
34749
    if ( mValidate )
 
34750
    {
 
34751
 
 
34752
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__stencil_op_separate__fail( attributes, attributeDataPtr, validationDataPtr );
 
34753
        if ( !validationResult ) return false;
 
34754
 
 
34755
    } // validation
 
34756
#endif
 
34757
 
 
34758
profile_GLSL__technique__pass__states__stencil_op_separate__fail__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__stencil_op_separate__fail__AttributeData>(attributeDataPtr);
 
34759
 
 
34760
const ParserChar** attributeArray = attributes.attributes;
 
34761
if ( attributeArray )
 
34762
{
 
34763
    while (true)
 
34764
    {
 
34765
        const ParserChar * attribute = *attributeArray;
 
34766
        if ( !attribute )
 
34767
            break;
 
34768
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
34769
        attributeArray++;
 
34770
        if ( !attributeArray )
 
34771
            return false;
 
34772
        const ParserChar* attributeValue = *attributeArray;
 
34773
        attributeArray++;
 
34774
 
 
34775
 
 
34776
    switch ( hash )
 
34777
    {
 
34778
    case HASH_ATTRIBUTE_VALUE:
 
34779
    {
 
34780
bool failed;
 
34781
attributeData->value = Utils::toEnum<ENUM__gl_stencil_op_enum, StringHash, ENUM__gl_stencil_op_enum__COUNT>(attributeValue, failed, ENUM__gl_stencil_op_enumMap, Utils::calculateStringHash);
 
34782
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
34783
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
34784
        HASH_ELEMENT_FAIL,
 
34785
        HASH_ATTRIBUTE_VALUE,
 
34786
        attributeValue))
 
34787
{
 
34788
    return false;
 
34789
}
 
34790
 
 
34791
    break;
 
34792
    }
 
34793
    case HASH_ATTRIBUTE_PARAM:
 
34794
    {
 
34795
 
 
34796
attributeData->param = attributeValue;
 
34797
#ifdef GENERATEDSAXPARSER_VALIDATION
 
34798
    if ( mValidate )
 
34799
    {
 
34800
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
34801
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
34802
    {
 
34803
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
34804
            simpleTypeValidationResult,
 
34805
            HASH_ELEMENT_FAIL,
 
34806
            HASH_ATTRIBUTE_PARAM,
 
34807
            attributeValue) )
 
34808
        {
 
34809
            return false;
 
34810
        }
 
34811
    }
 
34812
    } // validation
 
34813
#endif
 
34814
 
 
34815
    break;
 
34816
    }
 
34817
    default:
 
34818
    {
 
34819
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FAIL, attribute, attributeValue))
 
34820
            {return false;}
 
34821
    }
 
34822
    }
 
34823
    }
 
34824
}
 
34825
 
 
34826
 
 
34827
    return true;
 
34828
}
 
34829
 
 
34830
//---------------------------------------------------------------------
 
34831
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__stencil_op_separate__fail()
 
34832
{
 
34833
#ifdef GENERATEDSAXPARSER_VALIDATION
 
34834
    if ( mValidate )
 
34835
    {
 
34836
 
 
34837
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__stencil_op_separate__fail();
 
34838
        if ( !validationResult ) return false;
 
34839
 
 
34840
    } // validation
 
34841
#endif
 
34842
 
 
34843
    return true;
 
34844
}
 
34845
 
 
34846
//---------------------------------------------------------------------
 
34847
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__stencil_op_separate__fail( void* attributeData )
 
34848
{
 
34849
    profile_GLSL__technique__pass__states__stencil_op_separate__fail__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__stencil_op_separate__fail__AttributeData*>(attributeData);
 
34850
 
 
34851
    typedAttributeData->~profile_GLSL__technique__pass__states__stencil_op_separate__fail__AttributeData();
 
34852
 
 
34853
    return true;
 
34854
}
 
34855
 
 
34856
//---------------------------------------------------------------------
 
34857
const profile_GLSL__technique__pass__states__stencil_op_separate__zfail__AttributeData profile_GLSL__technique__pass__states__stencil_op_separate__zfail__AttributeData::DEFAULT = {ENUM__gl_stencil_op_enum__KEEP, 0};
 
34858
 
 
34859
//---------------------------------------------------------------------
 
34860
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__stencil_op_separate__zfail( const ParserChar* text, size_t textLength )
 
34861
{
 
34862
    return true;
 
34863
}
 
34864
 
 
34865
//---------------------------------------------------------------------
 
34866
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__stencil_op_separate__zfail( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
34867
{
 
34868
#ifdef GENERATEDSAXPARSER_VALIDATION
 
34869
    if ( mValidate )
 
34870
    {
 
34871
 
 
34872
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__stencil_op_separate__zfail( attributes, attributeDataPtr, validationDataPtr );
 
34873
        if ( !validationResult ) return false;
 
34874
 
 
34875
    } // validation
 
34876
#endif
 
34877
 
 
34878
profile_GLSL__technique__pass__states__stencil_op_separate__zfail__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__stencil_op_separate__zfail__AttributeData>(attributeDataPtr);
 
34879
 
 
34880
const ParserChar** attributeArray = attributes.attributes;
 
34881
if ( attributeArray )
 
34882
{
 
34883
    while (true)
 
34884
    {
 
34885
        const ParserChar * attribute = *attributeArray;
 
34886
        if ( !attribute )
 
34887
            break;
 
34888
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
34889
        attributeArray++;
 
34890
        if ( !attributeArray )
 
34891
            return false;
 
34892
        const ParserChar* attributeValue = *attributeArray;
 
34893
        attributeArray++;
 
34894
 
 
34895
 
 
34896
    switch ( hash )
 
34897
    {
 
34898
    case HASH_ATTRIBUTE_VALUE:
 
34899
    {
 
34900
bool failed;
 
34901
attributeData->value = Utils::toEnum<ENUM__gl_stencil_op_enum, StringHash, ENUM__gl_stencil_op_enum__COUNT>(attributeValue, failed, ENUM__gl_stencil_op_enumMap, Utils::calculateStringHash);
 
34902
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
34903
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
34904
        HASH_ELEMENT_ZFAIL,
 
34905
        HASH_ATTRIBUTE_VALUE,
 
34906
        attributeValue))
 
34907
{
 
34908
    return false;
 
34909
}
 
34910
 
 
34911
    break;
 
34912
    }
 
34913
    case HASH_ATTRIBUTE_PARAM:
 
34914
    {
 
34915
 
 
34916
attributeData->param = attributeValue;
 
34917
#ifdef GENERATEDSAXPARSER_VALIDATION
 
34918
    if ( mValidate )
 
34919
    {
 
34920
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
34921
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
34922
    {
 
34923
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
34924
            simpleTypeValidationResult,
 
34925
            HASH_ELEMENT_ZFAIL,
 
34926
            HASH_ATTRIBUTE_PARAM,
 
34927
            attributeValue) )
 
34928
        {
 
34929
            return false;
 
34930
        }
 
34931
    }
 
34932
    } // validation
 
34933
#endif
 
34934
 
 
34935
    break;
 
34936
    }
 
34937
    default:
 
34938
    {
 
34939
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_ZFAIL, attribute, attributeValue))
 
34940
            {return false;}
 
34941
    }
 
34942
    }
 
34943
    }
 
34944
}
 
34945
 
 
34946
 
 
34947
    return true;
 
34948
}
 
34949
 
 
34950
//---------------------------------------------------------------------
 
34951
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__stencil_op_separate__zfail()
 
34952
{
 
34953
#ifdef GENERATEDSAXPARSER_VALIDATION
 
34954
    if ( mValidate )
 
34955
    {
 
34956
 
 
34957
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__stencil_op_separate__zfail();
 
34958
        if ( !validationResult ) return false;
 
34959
 
 
34960
    } // validation
 
34961
#endif
 
34962
 
 
34963
    return true;
 
34964
}
 
34965
 
 
34966
//---------------------------------------------------------------------
 
34967
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__stencil_op_separate__zfail( void* attributeData )
 
34968
{
 
34969
    profile_GLSL__technique__pass__states__stencil_op_separate__zfail__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__stencil_op_separate__zfail__AttributeData*>(attributeData);
 
34970
 
 
34971
    typedAttributeData->~profile_GLSL__technique__pass__states__stencil_op_separate__zfail__AttributeData();
 
34972
 
 
34973
    return true;
 
34974
}
 
34975
 
 
34976
//---------------------------------------------------------------------
 
34977
const profile_GLSL__technique__pass__states__stencil_op_separate__zpass__AttributeData profile_GLSL__technique__pass__states__stencil_op_separate__zpass__AttributeData::DEFAULT = {ENUM__gl_stencil_op_enum__KEEP, 0};
 
34978
 
 
34979
//---------------------------------------------------------------------
 
34980
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__stencil_op_separate__zpass( const ParserChar* text, size_t textLength )
 
34981
{
 
34982
    return true;
 
34983
}
 
34984
 
 
34985
//---------------------------------------------------------------------
 
34986
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__stencil_op_separate__zpass( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
34987
{
 
34988
#ifdef GENERATEDSAXPARSER_VALIDATION
 
34989
    if ( mValidate )
 
34990
    {
 
34991
 
 
34992
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__stencil_op_separate__zpass( attributes, attributeDataPtr, validationDataPtr );
 
34993
        if ( !validationResult ) return false;
 
34994
 
 
34995
    } // validation
 
34996
#endif
 
34997
 
 
34998
profile_GLSL__technique__pass__states__stencil_op_separate__zpass__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__stencil_op_separate__zpass__AttributeData>(attributeDataPtr);
 
34999
 
 
35000
const ParserChar** attributeArray = attributes.attributes;
 
35001
if ( attributeArray )
 
35002
{
 
35003
    while (true)
 
35004
    {
 
35005
        const ParserChar * attribute = *attributeArray;
 
35006
        if ( !attribute )
 
35007
            break;
 
35008
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
35009
        attributeArray++;
 
35010
        if ( !attributeArray )
 
35011
            return false;
 
35012
        const ParserChar* attributeValue = *attributeArray;
 
35013
        attributeArray++;
 
35014
 
 
35015
 
 
35016
    switch ( hash )
 
35017
    {
 
35018
    case HASH_ATTRIBUTE_VALUE:
 
35019
    {
 
35020
bool failed;
 
35021
attributeData->value = Utils::toEnum<ENUM__gl_stencil_op_enum, StringHash, ENUM__gl_stencil_op_enum__COUNT>(attributeValue, failed, ENUM__gl_stencil_op_enumMap, Utils::calculateStringHash);
 
35022
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
35023
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
35024
        HASH_ELEMENT_ZPASS,
 
35025
        HASH_ATTRIBUTE_VALUE,
 
35026
        attributeValue))
 
35027
{
 
35028
    return false;
 
35029
}
 
35030
 
 
35031
    break;
 
35032
    }
 
35033
    case HASH_ATTRIBUTE_PARAM:
 
35034
    {
 
35035
 
 
35036
attributeData->param = attributeValue;
 
35037
#ifdef GENERATEDSAXPARSER_VALIDATION
 
35038
    if ( mValidate )
 
35039
    {
 
35040
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
35041
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
35042
    {
 
35043
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
35044
            simpleTypeValidationResult,
 
35045
            HASH_ELEMENT_ZPASS,
 
35046
            HASH_ATTRIBUTE_PARAM,
 
35047
            attributeValue) )
 
35048
        {
 
35049
            return false;
 
35050
        }
 
35051
    }
 
35052
    } // validation
 
35053
#endif
 
35054
 
 
35055
    break;
 
35056
    }
 
35057
    default:
 
35058
    {
 
35059
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_ZPASS, attribute, attributeValue))
 
35060
            {return false;}
 
35061
    }
 
35062
    }
 
35063
    }
 
35064
}
 
35065
 
 
35066
 
 
35067
    return true;
 
35068
}
 
35069
 
 
35070
//---------------------------------------------------------------------
 
35071
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__stencil_op_separate__zpass()
 
35072
{
 
35073
#ifdef GENERATEDSAXPARSER_VALIDATION
 
35074
    if ( mValidate )
 
35075
    {
 
35076
 
 
35077
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__stencil_op_separate__zpass();
 
35078
        if ( !validationResult ) return false;
 
35079
 
 
35080
    } // validation
 
35081
#endif
 
35082
 
 
35083
    return true;
 
35084
}
 
35085
 
 
35086
//---------------------------------------------------------------------
 
35087
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__stencil_op_separate__zpass( void* attributeData )
 
35088
{
 
35089
    profile_GLSL__technique__pass__states__stencil_op_separate__zpass__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__stencil_op_separate__zpass__AttributeData*>(attributeData);
 
35090
 
 
35091
    typedAttributeData->~profile_GLSL__technique__pass__states__stencil_op_separate__zpass__AttributeData();
 
35092
 
 
35093
    return true;
 
35094
}
 
35095
 
 
35096
//---------------------------------------------------------------------
 
35097
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__stencil_mask_separate( const ParserChar* text, size_t textLength )
 
35098
{
 
35099
    return true;
 
35100
}
 
35101
 
 
35102
//---------------------------------------------------------------------
 
35103
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__stencil_mask_separate( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
35104
{
 
35105
#ifdef GENERATEDSAXPARSER_VALIDATION
 
35106
    if ( mValidate )
 
35107
    {
 
35108
 
 
35109
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__stencil_mask_separate( attributes, attributeDataPtr, validationDataPtr );
 
35110
        if ( !validationResult ) return false;
 
35111
 
 
35112
    } // validation
 
35113
#endif
 
35114
 
 
35115
    return true;
 
35116
}
 
35117
 
 
35118
//---------------------------------------------------------------------
 
35119
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__stencil_mask_separate()
 
35120
{
 
35121
#ifdef GENERATEDSAXPARSER_VALIDATION
 
35122
    if ( mValidate )
 
35123
    {
 
35124
 
 
35125
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__stencil_mask_separate();
 
35126
        if ( !validationResult ) return false;
 
35127
 
 
35128
    } // validation
 
35129
#endif
 
35130
 
 
35131
    return true;
 
35132
}
 
35133
 
 
35134
//---------------------------------------------------------------------
 
35135
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__stencil_mask_separate( void* attributeData )
 
35136
{
 
35137
    return true;
 
35138
}
 
35139
 
 
35140
//---------------------------------------------------------------------
 
35141
const profile_GLSL__technique__pass__states__stencil_mask_separate__face__AttributeData profile_GLSL__technique__pass__states__stencil_mask_separate__face__AttributeData::DEFAULT = {ENUM__gl_face_enum__FRONT_AND_BACK, 0};
 
35142
 
 
35143
//---------------------------------------------------------------------
 
35144
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__stencil_mask_separate__face( const ParserChar* text, size_t textLength )
 
35145
{
 
35146
    return true;
 
35147
}
 
35148
 
 
35149
//---------------------------------------------------------------------
 
35150
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__stencil_mask_separate__face( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
35151
{
 
35152
#ifdef GENERATEDSAXPARSER_VALIDATION
 
35153
    if ( mValidate )
 
35154
    {
 
35155
 
 
35156
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__stencil_mask_separate__face( attributes, attributeDataPtr, validationDataPtr );
 
35157
        if ( !validationResult ) return false;
 
35158
 
 
35159
    } // validation
 
35160
#endif
 
35161
 
 
35162
profile_GLSL__technique__pass__states__stencil_mask_separate__face__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__stencil_mask_separate__face__AttributeData>(attributeDataPtr);
 
35163
 
 
35164
const ParserChar** attributeArray = attributes.attributes;
 
35165
if ( attributeArray )
 
35166
{
 
35167
    while (true)
 
35168
    {
 
35169
        const ParserChar * attribute = *attributeArray;
 
35170
        if ( !attribute )
 
35171
            break;
 
35172
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
35173
        attributeArray++;
 
35174
        if ( !attributeArray )
 
35175
            return false;
 
35176
        const ParserChar* attributeValue = *attributeArray;
 
35177
        attributeArray++;
 
35178
 
 
35179
 
 
35180
    switch ( hash )
 
35181
    {
 
35182
    case HASH_ATTRIBUTE_VALUE:
 
35183
    {
 
35184
bool failed;
 
35185
attributeData->value = Utils::toEnum<ENUM__gl_face_enum, StringHash, ENUM__gl_face_enum__COUNT>(attributeValue, failed, ENUM__gl_face_enumMap, Utils::calculateStringHash);
 
35186
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
35187
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
35188
        HASH_ELEMENT_FACE,
 
35189
        HASH_ATTRIBUTE_VALUE,
 
35190
        attributeValue))
 
35191
{
 
35192
    return false;
 
35193
}
 
35194
 
 
35195
    break;
 
35196
    }
 
35197
    case HASH_ATTRIBUTE_PARAM:
 
35198
    {
 
35199
 
 
35200
attributeData->param = attributeValue;
 
35201
#ifdef GENERATEDSAXPARSER_VALIDATION
 
35202
    if ( mValidate )
 
35203
    {
 
35204
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
35205
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
35206
    {
 
35207
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
35208
            simpleTypeValidationResult,
 
35209
            HASH_ELEMENT_FACE,
 
35210
            HASH_ATTRIBUTE_PARAM,
 
35211
            attributeValue) )
 
35212
        {
 
35213
            return false;
 
35214
        }
 
35215
    }
 
35216
    } // validation
 
35217
#endif
 
35218
 
 
35219
    break;
 
35220
    }
 
35221
    default:
 
35222
    {
 
35223
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FACE, attribute, attributeValue))
 
35224
            {return false;}
 
35225
    }
 
35226
    }
 
35227
    }
 
35228
}
 
35229
 
 
35230
 
 
35231
    return true;
 
35232
}
 
35233
 
 
35234
//---------------------------------------------------------------------
 
35235
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__stencil_mask_separate__face()
 
35236
{
 
35237
#ifdef GENERATEDSAXPARSER_VALIDATION
 
35238
    if ( mValidate )
 
35239
    {
 
35240
 
 
35241
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__stencil_mask_separate__face();
 
35242
        if ( !validationResult ) return false;
 
35243
 
 
35244
    } // validation
 
35245
#endif
 
35246
 
 
35247
    return true;
 
35248
}
 
35249
 
 
35250
//---------------------------------------------------------------------
 
35251
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__stencil_mask_separate__face( void* attributeData )
 
35252
{
 
35253
    profile_GLSL__technique__pass__states__stencil_mask_separate__face__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__stencil_mask_separate__face__AttributeData*>(attributeData);
 
35254
 
 
35255
    typedAttributeData->~profile_GLSL__technique__pass__states__stencil_mask_separate__face__AttributeData();
 
35256
 
 
35257
    return true;
 
35258
}
 
35259
 
 
35260
//---------------------------------------------------------------------
 
35261
const profile_GLSL__technique__pass__states__stencil_mask_separate__mask__AttributeData profile_GLSL__technique__pass__states__stencil_mask_separate__mask__AttributeData::DEFAULT = {255, 0};
 
35262
 
 
35263
//---------------------------------------------------------------------
 
35264
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__stencil_mask_separate__mask( const ParserChar* text, size_t textLength )
 
35265
{
 
35266
    return true;
 
35267
}
 
35268
 
 
35269
//---------------------------------------------------------------------
 
35270
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__stencil_mask_separate__mask( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
35271
{
 
35272
#ifdef GENERATEDSAXPARSER_VALIDATION
 
35273
    if ( mValidate )
 
35274
    {
 
35275
 
 
35276
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__stencil_mask_separate__mask( attributes, attributeDataPtr, validationDataPtr );
 
35277
        if ( !validationResult ) return false;
 
35278
 
 
35279
    } // validation
 
35280
#endif
 
35281
 
 
35282
profile_GLSL__technique__pass__states__stencil_mask_separate__mask__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__stencil_mask_separate__mask__AttributeData>(attributeDataPtr);
 
35283
 
 
35284
const ParserChar** attributeArray = attributes.attributes;
 
35285
if ( attributeArray )
 
35286
{
 
35287
    while (true)
 
35288
    {
 
35289
        const ParserChar * attribute = *attributeArray;
 
35290
        if ( !attribute )
 
35291
            break;
 
35292
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
35293
        attributeArray++;
 
35294
        if ( !attributeArray )
 
35295
            return false;
 
35296
        const ParserChar* attributeValue = *attributeArray;
 
35297
        attributeArray++;
 
35298
 
 
35299
 
 
35300
    switch ( hash )
 
35301
    {
 
35302
    case HASH_ATTRIBUTE_VALUE:
 
35303
    {
 
35304
bool failed;
 
35305
attributeData->value = GeneratedSaxParser::Utils::toUint8(attributeValue, failed);
 
35306
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
35307
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
35308
        HASH_ELEMENT_MASK,
 
35309
        HASH_ATTRIBUTE_VALUE,
 
35310
        attributeValue))
 
35311
{
 
35312
    return false;
 
35313
}
 
35314
 
 
35315
    break;
 
35316
    }
 
35317
    case HASH_ATTRIBUTE_PARAM:
 
35318
    {
 
35319
 
 
35320
attributeData->param = attributeValue;
 
35321
#ifdef GENERATEDSAXPARSER_VALIDATION
 
35322
    if ( mValidate )
 
35323
    {
 
35324
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
35325
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
35326
    {
 
35327
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
35328
            simpleTypeValidationResult,
 
35329
            HASH_ELEMENT_MASK,
 
35330
            HASH_ATTRIBUTE_PARAM,
 
35331
            attributeValue) )
 
35332
        {
 
35333
            return false;
 
35334
        }
 
35335
    }
 
35336
    } // validation
 
35337
#endif
 
35338
 
 
35339
    break;
 
35340
    }
 
35341
    default:
 
35342
    {
 
35343
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_MASK, attribute, attributeValue))
 
35344
            {return false;}
 
35345
    }
 
35346
    }
 
35347
    }
 
35348
}
 
35349
 
 
35350
 
 
35351
    return true;
 
35352
}
 
35353
 
 
35354
//---------------------------------------------------------------------
 
35355
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__stencil_mask_separate__mask()
 
35356
{
 
35357
#ifdef GENERATEDSAXPARSER_VALIDATION
 
35358
    if ( mValidate )
 
35359
    {
 
35360
 
 
35361
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__stencil_mask_separate__mask();
 
35362
        if ( !validationResult ) return false;
 
35363
 
 
35364
    } // validation
 
35365
#endif
 
35366
 
 
35367
    return true;
 
35368
}
 
35369
 
 
35370
//---------------------------------------------------------------------
 
35371
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__stencil_mask_separate__mask( void* attributeData )
 
35372
{
 
35373
    profile_GLSL__technique__pass__states__stencil_mask_separate__mask__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__stencil_mask_separate__mask__AttributeData*>(attributeData);
 
35374
 
 
35375
    typedAttributeData->~profile_GLSL__technique__pass__states__stencil_mask_separate__mask__AttributeData();
 
35376
 
 
35377
    return true;
 
35378
}
 
35379
 
 
35380
//---------------------------------------------------------------------
 
35381
const profile_GLSL__technique__pass__states__light_enable__AttributeData profile_GLSL__technique__pass__states__light_enable__AttributeData::DEFAULT = {0, false, 0, 0};
 
35382
 
 
35383
//---------------------------------------------------------------------
 
35384
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__light_enable( const ParserChar* text, size_t textLength )
 
35385
{
 
35386
    return true;
 
35387
}
 
35388
 
 
35389
//---------------------------------------------------------------------
 
35390
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__light_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
35391
{
 
35392
#ifdef GENERATEDSAXPARSER_VALIDATION
 
35393
    if ( mValidate )
 
35394
    {
 
35395
 
 
35396
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__light_enable( attributes, attributeDataPtr, validationDataPtr );
 
35397
        if ( !validationResult ) return false;
 
35398
 
 
35399
    } // validation
 
35400
#endif
 
35401
 
 
35402
profile_GLSL__technique__pass__states__light_enable__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__light_enable__AttributeData>(attributeDataPtr);
 
35403
 
 
35404
const ParserChar** attributeArray = attributes.attributes;
 
35405
if ( attributeArray )
 
35406
{
 
35407
    while (true)
 
35408
    {
 
35409
        const ParserChar * attribute = *attributeArray;
 
35410
        if ( !attribute )
 
35411
            break;
 
35412
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
35413
        attributeArray++;
 
35414
        if ( !attributeArray )
 
35415
            return false;
 
35416
        const ParserChar* attributeValue = *attributeArray;
 
35417
        attributeArray++;
 
35418
 
 
35419
 
 
35420
    switch ( hash )
 
35421
    {
 
35422
    case HASH_ATTRIBUTE_VALUE:
 
35423
    {
 
35424
bool failed;
 
35425
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
35426
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
35427
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
35428
        HASH_ELEMENT_LIGHT_ENABLE,
 
35429
        HASH_ATTRIBUTE_VALUE,
 
35430
        attributeValue))
 
35431
{
 
35432
    return false;
 
35433
}
 
35434
 
 
35435
    break;
 
35436
    }
 
35437
    case HASH_ATTRIBUTE_PARAM:
 
35438
    {
 
35439
 
 
35440
attributeData->param = attributeValue;
 
35441
#ifdef GENERATEDSAXPARSER_VALIDATION
 
35442
    if ( mValidate )
 
35443
    {
 
35444
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
35445
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
35446
    {
 
35447
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
35448
            simpleTypeValidationResult,
 
35449
            HASH_ELEMENT_LIGHT_ENABLE,
 
35450
            HASH_ATTRIBUTE_PARAM,
 
35451
            attributeValue) )
 
35452
        {
 
35453
            return false;
 
35454
        }
 
35455
    }
 
35456
    } // validation
 
35457
#endif
 
35458
 
 
35459
    break;
 
35460
    }
 
35461
    case HASH_ATTRIBUTE_INDEX:
 
35462
    {
 
35463
bool failed;
 
35464
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
35465
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
35466
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
35467
        HASH_ELEMENT_LIGHT_ENABLE,
 
35468
        HASH_ATTRIBUTE_INDEX,
 
35469
        attributeValue))
 
35470
{
 
35471
    return false;
 
35472
}
 
35473
if ( !failed )
 
35474
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__light_enable__AttributeData::ATTRIBUTE_INDEX_PRESENT;
 
35475
 
 
35476
    break;
 
35477
    }
 
35478
    default:
 
35479
    {
 
35480
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIGHT_ENABLE, attribute, attributeValue))
 
35481
            {return false;}
 
35482
    }
 
35483
    }
 
35484
    }
 
35485
}
 
35486
if ( (attributeData->present_attributes & profile_GLSL__technique__pass__states__light_enable__AttributeData::ATTRIBUTE_INDEX_PRESENT) == 0 )
 
35487
{
 
35488
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_LIGHT_ENABLE, HASH_ATTRIBUTE_INDEX, 0 ) )
 
35489
        return false;
 
35490
}
 
35491
 
 
35492
 
 
35493
    return true;
 
35494
}
 
35495
 
 
35496
//---------------------------------------------------------------------
 
35497
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__light_enable()
 
35498
{
 
35499
#ifdef GENERATEDSAXPARSER_VALIDATION
 
35500
    if ( mValidate )
 
35501
    {
 
35502
 
 
35503
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__light_enable();
 
35504
        if ( !validationResult ) return false;
 
35505
 
 
35506
    } // validation
 
35507
#endif
 
35508
 
 
35509
    return true;
 
35510
}
 
35511
 
 
35512
//---------------------------------------------------------------------
 
35513
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__light_enable( void* attributeData )
 
35514
{
 
35515
    profile_GLSL__technique__pass__states__light_enable__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__light_enable__AttributeData*>(attributeData);
 
35516
 
 
35517
    typedAttributeData->~profile_GLSL__technique__pass__states__light_enable__AttributeData();
 
35518
 
 
35519
    return true;
 
35520
}
 
35521
 
 
35522
//---------------------------------------------------------------------
 
35523
const profile_GLSL__technique__pass__states__light_ambient__AttributeData profile_GLSL__technique__pass__states__light_ambient__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<float>(), 0, 0};
 
35524
 
 
35525
//---------------------------------------------------------------------
 
35526
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__light_ambient( const ParserChar* text, size_t textLength )
 
35527
{
 
35528
    return true;
 
35529
}
 
35530
 
 
35531
//---------------------------------------------------------------------
 
35532
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__light_ambient( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
35533
{
 
35534
#ifdef GENERATEDSAXPARSER_VALIDATION
 
35535
    if ( mValidate )
 
35536
    {
 
35537
 
 
35538
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__light_ambient( attributes, attributeDataPtr, validationDataPtr );
 
35539
        if ( !validationResult ) return false;
 
35540
 
 
35541
    } // validation
 
35542
#endif
 
35543
 
 
35544
profile_GLSL__technique__pass__states__light_ambient__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__light_ambient__AttributeData>(attributeDataPtr);
 
35545
 
 
35546
const ParserChar** attributeArray = attributes.attributes;
 
35547
if ( attributeArray )
 
35548
{
 
35549
    while (true)
 
35550
    {
 
35551
        const ParserChar * attribute = *attributeArray;
 
35552
        if ( !attribute )
 
35553
            break;
 
35554
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
35555
        attributeArray++;
 
35556
        if ( !attributeArray )
 
35557
            return false;
 
35558
        const ParserChar* attributeValue = *attributeArray;
 
35559
        attributeArray++;
 
35560
 
 
35561
 
 
35562
    switch ( hash )
 
35563
    {
 
35564
    case HASH_ATTRIBUTE_VALUE:
 
35565
    {
 
35566
bool failed;
 
35567
#ifdef GENERATEDSAXPARSER_VALIDATION
 
35568
    if ( mValidate )
 
35569
    {
 
35570
failed = !characterData2FloatList(attributeValue, attributeData->value, 0, HASH_ELEMENT_LIGHT_AMBIENT, HASH_ATTRIBUTE_VALUE);
 
35571
    }
 
35572
    else
 
35573
    {
 
35574
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
35575
    }
 
35576
#else
 
35577
    {
 
35578
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
35579
    } // validation
 
35580
#endif
 
35581
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
35582
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
35583
        HASH_ELEMENT_LIGHT_AMBIENT,
 
35584
        HASH_ATTRIBUTE_VALUE,
 
35585
        attributeValue))
 
35586
{
 
35587
    return false;
 
35588
}
 
35589
#ifdef GENERATEDSAXPARSER_VALIDATION
 
35590
    if ( mValidate )
 
35591
    {
 
35592
    ParserError::ErrorType simpleTypeValidationResult = validate__float4_type(attributeData->value.data, attributeData->value.size);
 
35593
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
35594
    {
 
35595
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
35596
            simpleTypeValidationResult,
 
35597
            HASH_ELEMENT_LIGHT_AMBIENT,
 
35598
            HASH_ATTRIBUTE_VALUE,
 
35599
            attributeValue) )
 
35600
        {
 
35601
            return false;
 
35602
        }
 
35603
    }
 
35604
    } // validation
 
35605
#endif
 
35606
 
 
35607
if ( !failed )
 
35608
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__light_ambient__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
35609
 
 
35610
    break;
 
35611
    }
 
35612
    case HASH_ATTRIBUTE_PARAM:
 
35613
    {
 
35614
 
 
35615
attributeData->param = attributeValue;
 
35616
#ifdef GENERATEDSAXPARSER_VALIDATION
 
35617
    if ( mValidate )
 
35618
    {
 
35619
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
35620
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
35621
    {
 
35622
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
35623
            simpleTypeValidationResult,
 
35624
            HASH_ELEMENT_LIGHT_AMBIENT,
 
35625
            HASH_ATTRIBUTE_PARAM,
 
35626
            attributeValue) )
 
35627
        {
 
35628
            return false;
 
35629
        }
 
35630
    }
 
35631
    } // validation
 
35632
#endif
 
35633
 
 
35634
    break;
 
35635
    }
 
35636
    case HASH_ATTRIBUTE_INDEX:
 
35637
    {
 
35638
bool failed;
 
35639
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
35640
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
35641
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
35642
        HASH_ELEMENT_LIGHT_AMBIENT,
 
35643
        HASH_ATTRIBUTE_INDEX,
 
35644
        attributeValue))
 
35645
{
 
35646
    return false;
 
35647
}
 
35648
if ( !failed )
 
35649
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__light_ambient__AttributeData::ATTRIBUTE_INDEX_PRESENT;
 
35650
 
 
35651
    break;
 
35652
    }
 
35653
    default:
 
35654
    {
 
35655
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIGHT_AMBIENT, attribute, attributeValue))
 
35656
            {return false;}
 
35657
    }
 
35658
    }
 
35659
    }
 
35660
}
 
35661
if ((attributeData->present_attributes & profile_GLSL__technique__pass__states__light_ambient__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
35662
{
 
35663
    bool failed;
 
35664
    failed = !characterData2FloatList("0.0E1 0.0E1 0.0E1 1.0E0", attributeData->value);
 
35665
    if ( !failed )
 
35666
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__light_ambient__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
35667
}
 
35668
if ( (attributeData->present_attributes & profile_GLSL__technique__pass__states__light_ambient__AttributeData::ATTRIBUTE_INDEX_PRESENT) == 0 )
 
35669
{
 
35670
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_LIGHT_AMBIENT, HASH_ATTRIBUTE_INDEX, 0 ) )
 
35671
        return false;
 
35672
}
 
35673
 
 
35674
 
 
35675
    return true;
 
35676
}
 
35677
 
 
35678
//---------------------------------------------------------------------
 
35679
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__light_ambient()
 
35680
{
 
35681
#ifdef GENERATEDSAXPARSER_VALIDATION
 
35682
    if ( mValidate )
 
35683
    {
 
35684
 
 
35685
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__light_ambient();
 
35686
        if ( !validationResult ) return false;
 
35687
 
 
35688
    } // validation
 
35689
#endif
 
35690
 
 
35691
    return true;
 
35692
}
 
35693
 
 
35694
//---------------------------------------------------------------------
 
35695
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__light_ambient( void* attributeData )
 
35696
{
 
35697
    profile_GLSL__technique__pass__states__light_ambient__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__light_ambient__AttributeData*>(attributeData);
 
35698
    if (typedAttributeData->value.data)
 
35699
    {
 
35700
        mStackMemoryManager.deleteObject();
 
35701
    }
 
35702
 
 
35703
 
 
35704
    typedAttributeData->~profile_GLSL__technique__pass__states__light_ambient__AttributeData();
 
35705
 
 
35706
    return true;
 
35707
}
 
35708
 
 
35709
//---------------------------------------------------------------------
 
35710
const profile_GLSL__technique__pass__states__light_diffuse__AttributeData profile_GLSL__technique__pass__states__light_diffuse__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<float>(), 0, 0};
 
35711
 
 
35712
//---------------------------------------------------------------------
 
35713
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__light_diffuse( const ParserChar* text, size_t textLength )
 
35714
{
 
35715
    return true;
 
35716
}
 
35717
 
 
35718
//---------------------------------------------------------------------
 
35719
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__light_diffuse( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
35720
{
 
35721
#ifdef GENERATEDSAXPARSER_VALIDATION
 
35722
    if ( mValidate )
 
35723
    {
 
35724
 
 
35725
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__light_diffuse( attributes, attributeDataPtr, validationDataPtr );
 
35726
        if ( !validationResult ) return false;
 
35727
 
 
35728
    } // validation
 
35729
#endif
 
35730
 
 
35731
profile_GLSL__technique__pass__states__light_diffuse__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__light_diffuse__AttributeData>(attributeDataPtr);
 
35732
 
 
35733
const ParserChar** attributeArray = attributes.attributes;
 
35734
if ( attributeArray )
 
35735
{
 
35736
    while (true)
 
35737
    {
 
35738
        const ParserChar * attribute = *attributeArray;
 
35739
        if ( !attribute )
 
35740
            break;
 
35741
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
35742
        attributeArray++;
 
35743
        if ( !attributeArray )
 
35744
            return false;
 
35745
        const ParserChar* attributeValue = *attributeArray;
 
35746
        attributeArray++;
 
35747
 
 
35748
 
 
35749
    switch ( hash )
 
35750
    {
 
35751
    case HASH_ATTRIBUTE_VALUE:
 
35752
    {
 
35753
bool failed;
 
35754
#ifdef GENERATEDSAXPARSER_VALIDATION
 
35755
    if ( mValidate )
 
35756
    {
 
35757
failed = !characterData2FloatList(attributeValue, attributeData->value, 0, HASH_ELEMENT_LIGHT_DIFFUSE, HASH_ATTRIBUTE_VALUE);
 
35758
    }
 
35759
    else
 
35760
    {
 
35761
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
35762
    }
 
35763
#else
 
35764
    {
 
35765
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
35766
    } // validation
 
35767
#endif
 
35768
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
35769
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
35770
        HASH_ELEMENT_LIGHT_DIFFUSE,
 
35771
        HASH_ATTRIBUTE_VALUE,
 
35772
        attributeValue))
 
35773
{
 
35774
    return false;
 
35775
}
 
35776
#ifdef GENERATEDSAXPARSER_VALIDATION
 
35777
    if ( mValidate )
 
35778
    {
 
35779
    ParserError::ErrorType simpleTypeValidationResult = validate__float4_type(attributeData->value.data, attributeData->value.size);
 
35780
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
35781
    {
 
35782
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
35783
            simpleTypeValidationResult,
 
35784
            HASH_ELEMENT_LIGHT_DIFFUSE,
 
35785
            HASH_ATTRIBUTE_VALUE,
 
35786
            attributeValue) )
 
35787
        {
 
35788
            return false;
 
35789
        }
 
35790
    }
 
35791
    } // validation
 
35792
#endif
 
35793
 
 
35794
if ( !failed )
 
35795
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__light_diffuse__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
35796
 
 
35797
    break;
 
35798
    }
 
35799
    case HASH_ATTRIBUTE_PARAM:
 
35800
    {
 
35801
 
 
35802
attributeData->param = attributeValue;
 
35803
#ifdef GENERATEDSAXPARSER_VALIDATION
 
35804
    if ( mValidate )
 
35805
    {
 
35806
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
35807
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
35808
    {
 
35809
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
35810
            simpleTypeValidationResult,
 
35811
            HASH_ELEMENT_LIGHT_DIFFUSE,
 
35812
            HASH_ATTRIBUTE_PARAM,
 
35813
            attributeValue) )
 
35814
        {
 
35815
            return false;
 
35816
        }
 
35817
    }
 
35818
    } // validation
 
35819
#endif
 
35820
 
 
35821
    break;
 
35822
    }
 
35823
    case HASH_ATTRIBUTE_INDEX:
 
35824
    {
 
35825
bool failed;
 
35826
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
35827
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
35828
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
35829
        HASH_ELEMENT_LIGHT_DIFFUSE,
 
35830
        HASH_ATTRIBUTE_INDEX,
 
35831
        attributeValue))
 
35832
{
 
35833
    return false;
 
35834
}
 
35835
if ( !failed )
 
35836
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__light_diffuse__AttributeData::ATTRIBUTE_INDEX_PRESENT;
 
35837
 
 
35838
    break;
 
35839
    }
 
35840
    default:
 
35841
    {
 
35842
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIGHT_DIFFUSE, attribute, attributeValue))
 
35843
            {return false;}
 
35844
    }
 
35845
    }
 
35846
    }
 
35847
}
 
35848
if ((attributeData->present_attributes & profile_GLSL__technique__pass__states__light_diffuse__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
35849
{
 
35850
    bool failed;
 
35851
    failed = !characterData2FloatList("0.0E1 0.0E1 0.0E1 0.0E1", attributeData->value);
 
35852
    if ( !failed )
 
35853
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__light_diffuse__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
35854
}
 
35855
if ( (attributeData->present_attributes & profile_GLSL__technique__pass__states__light_diffuse__AttributeData::ATTRIBUTE_INDEX_PRESENT) == 0 )
 
35856
{
 
35857
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_LIGHT_DIFFUSE, HASH_ATTRIBUTE_INDEX, 0 ) )
 
35858
        return false;
 
35859
}
 
35860
 
 
35861
 
 
35862
    return true;
 
35863
}
 
35864
 
 
35865
//---------------------------------------------------------------------
 
35866
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__light_diffuse()
 
35867
{
 
35868
#ifdef GENERATEDSAXPARSER_VALIDATION
 
35869
    if ( mValidate )
 
35870
    {
 
35871
 
 
35872
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__light_diffuse();
 
35873
        if ( !validationResult ) return false;
 
35874
 
 
35875
    } // validation
 
35876
#endif
 
35877
 
 
35878
    return true;
 
35879
}
 
35880
 
 
35881
//---------------------------------------------------------------------
 
35882
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__light_diffuse( void* attributeData )
 
35883
{
 
35884
    profile_GLSL__technique__pass__states__light_diffuse__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__light_diffuse__AttributeData*>(attributeData);
 
35885
    if (typedAttributeData->value.data)
 
35886
    {
 
35887
        mStackMemoryManager.deleteObject();
 
35888
    }
 
35889
 
 
35890
 
 
35891
    typedAttributeData->~profile_GLSL__technique__pass__states__light_diffuse__AttributeData();
 
35892
 
 
35893
    return true;
 
35894
}
 
35895
 
 
35896
//---------------------------------------------------------------------
 
35897
const profile_GLSL__technique__pass__states__light_specular__AttributeData profile_GLSL__technique__pass__states__light_specular__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<float>(), 0, 0};
 
35898
 
 
35899
//---------------------------------------------------------------------
 
35900
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__light_specular( const ParserChar* text, size_t textLength )
 
35901
{
 
35902
    return true;
 
35903
}
 
35904
 
 
35905
//---------------------------------------------------------------------
 
35906
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__light_specular( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
35907
{
 
35908
#ifdef GENERATEDSAXPARSER_VALIDATION
 
35909
    if ( mValidate )
 
35910
    {
 
35911
 
 
35912
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__light_specular( attributes, attributeDataPtr, validationDataPtr );
 
35913
        if ( !validationResult ) return false;
 
35914
 
 
35915
    } // validation
 
35916
#endif
 
35917
 
 
35918
profile_GLSL__technique__pass__states__light_specular__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__light_specular__AttributeData>(attributeDataPtr);
 
35919
 
 
35920
const ParserChar** attributeArray = attributes.attributes;
 
35921
if ( attributeArray )
 
35922
{
 
35923
    while (true)
 
35924
    {
 
35925
        const ParserChar * attribute = *attributeArray;
 
35926
        if ( !attribute )
 
35927
            break;
 
35928
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
35929
        attributeArray++;
 
35930
        if ( !attributeArray )
 
35931
            return false;
 
35932
        const ParserChar* attributeValue = *attributeArray;
 
35933
        attributeArray++;
 
35934
 
 
35935
 
 
35936
    switch ( hash )
 
35937
    {
 
35938
    case HASH_ATTRIBUTE_VALUE:
 
35939
    {
 
35940
bool failed;
 
35941
#ifdef GENERATEDSAXPARSER_VALIDATION
 
35942
    if ( mValidate )
 
35943
    {
 
35944
failed = !characterData2FloatList(attributeValue, attributeData->value, 0, HASH_ELEMENT_LIGHT_SPECULAR, HASH_ATTRIBUTE_VALUE);
 
35945
    }
 
35946
    else
 
35947
    {
 
35948
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
35949
    }
 
35950
#else
 
35951
    {
 
35952
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
35953
    } // validation
 
35954
#endif
 
35955
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
35956
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
35957
        HASH_ELEMENT_LIGHT_SPECULAR,
 
35958
        HASH_ATTRIBUTE_VALUE,
 
35959
        attributeValue))
 
35960
{
 
35961
    return false;
 
35962
}
 
35963
#ifdef GENERATEDSAXPARSER_VALIDATION
 
35964
    if ( mValidate )
 
35965
    {
 
35966
    ParserError::ErrorType simpleTypeValidationResult = validate__float4_type(attributeData->value.data, attributeData->value.size);
 
35967
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
35968
    {
 
35969
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
35970
            simpleTypeValidationResult,
 
35971
            HASH_ELEMENT_LIGHT_SPECULAR,
 
35972
            HASH_ATTRIBUTE_VALUE,
 
35973
            attributeValue) )
 
35974
        {
 
35975
            return false;
 
35976
        }
 
35977
    }
 
35978
    } // validation
 
35979
#endif
 
35980
 
 
35981
if ( !failed )
 
35982
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__light_specular__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
35983
 
 
35984
    break;
 
35985
    }
 
35986
    case HASH_ATTRIBUTE_PARAM:
 
35987
    {
 
35988
 
 
35989
attributeData->param = attributeValue;
 
35990
#ifdef GENERATEDSAXPARSER_VALIDATION
 
35991
    if ( mValidate )
 
35992
    {
 
35993
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
35994
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
35995
    {
 
35996
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
35997
            simpleTypeValidationResult,
 
35998
            HASH_ELEMENT_LIGHT_SPECULAR,
 
35999
            HASH_ATTRIBUTE_PARAM,
 
36000
            attributeValue) )
 
36001
        {
 
36002
            return false;
 
36003
        }
 
36004
    }
 
36005
    } // validation
 
36006
#endif
 
36007
 
 
36008
    break;
 
36009
    }
 
36010
    case HASH_ATTRIBUTE_INDEX:
 
36011
    {
 
36012
bool failed;
 
36013
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
36014
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
36015
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
36016
        HASH_ELEMENT_LIGHT_SPECULAR,
 
36017
        HASH_ATTRIBUTE_INDEX,
 
36018
        attributeValue))
 
36019
{
 
36020
    return false;
 
36021
}
 
36022
if ( !failed )
 
36023
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__light_specular__AttributeData::ATTRIBUTE_INDEX_PRESENT;
 
36024
 
 
36025
    break;
 
36026
    }
 
36027
    default:
 
36028
    {
 
36029
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIGHT_SPECULAR, attribute, attributeValue))
 
36030
            {return false;}
 
36031
    }
 
36032
    }
 
36033
    }
 
36034
}
 
36035
if ((attributeData->present_attributes & profile_GLSL__technique__pass__states__light_specular__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
36036
{
 
36037
    bool failed;
 
36038
    failed = !characterData2FloatList("0.0E1 0.0E1 0.0E1 0.0E1", attributeData->value);
 
36039
    if ( !failed )
 
36040
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__light_specular__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
36041
}
 
36042
if ( (attributeData->present_attributes & profile_GLSL__technique__pass__states__light_specular__AttributeData::ATTRIBUTE_INDEX_PRESENT) == 0 )
 
36043
{
 
36044
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_LIGHT_SPECULAR, HASH_ATTRIBUTE_INDEX, 0 ) )
 
36045
        return false;
 
36046
}
 
36047
 
 
36048
 
 
36049
    return true;
 
36050
}
 
36051
 
 
36052
//---------------------------------------------------------------------
 
36053
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__light_specular()
 
36054
{
 
36055
#ifdef GENERATEDSAXPARSER_VALIDATION
 
36056
    if ( mValidate )
 
36057
    {
 
36058
 
 
36059
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__light_specular();
 
36060
        if ( !validationResult ) return false;
 
36061
 
 
36062
    } // validation
 
36063
#endif
 
36064
 
 
36065
    return true;
 
36066
}
 
36067
 
 
36068
//---------------------------------------------------------------------
 
36069
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__light_specular( void* attributeData )
 
36070
{
 
36071
    profile_GLSL__technique__pass__states__light_specular__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__light_specular__AttributeData*>(attributeData);
 
36072
    if (typedAttributeData->value.data)
 
36073
    {
 
36074
        mStackMemoryManager.deleteObject();
 
36075
    }
 
36076
 
 
36077
 
 
36078
    typedAttributeData->~profile_GLSL__technique__pass__states__light_specular__AttributeData();
 
36079
 
 
36080
    return true;
 
36081
}
 
36082
 
 
36083
//---------------------------------------------------------------------
 
36084
const profile_GLSL__technique__pass__states__light_position__AttributeData profile_GLSL__technique__pass__states__light_position__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<float>(), 0, 0};
 
36085
 
 
36086
//---------------------------------------------------------------------
 
36087
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__light_position( const ParserChar* text, size_t textLength )
 
36088
{
 
36089
    return true;
 
36090
}
 
36091
 
 
36092
//---------------------------------------------------------------------
 
36093
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__light_position( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
36094
{
 
36095
#ifdef GENERATEDSAXPARSER_VALIDATION
 
36096
    if ( mValidate )
 
36097
    {
 
36098
 
 
36099
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__light_position( attributes, attributeDataPtr, validationDataPtr );
 
36100
        if ( !validationResult ) return false;
 
36101
 
 
36102
    } // validation
 
36103
#endif
 
36104
 
 
36105
profile_GLSL__technique__pass__states__light_position__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__light_position__AttributeData>(attributeDataPtr);
 
36106
 
 
36107
const ParserChar** attributeArray = attributes.attributes;
 
36108
if ( attributeArray )
 
36109
{
 
36110
    while (true)
 
36111
    {
 
36112
        const ParserChar * attribute = *attributeArray;
 
36113
        if ( !attribute )
 
36114
            break;
 
36115
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
36116
        attributeArray++;
 
36117
        if ( !attributeArray )
 
36118
            return false;
 
36119
        const ParserChar* attributeValue = *attributeArray;
 
36120
        attributeArray++;
 
36121
 
 
36122
 
 
36123
    switch ( hash )
 
36124
    {
 
36125
    case HASH_ATTRIBUTE_VALUE:
 
36126
    {
 
36127
bool failed;
 
36128
#ifdef GENERATEDSAXPARSER_VALIDATION
 
36129
    if ( mValidate )
 
36130
    {
 
36131
failed = !characterData2FloatList(attributeValue, attributeData->value, 0, HASH_ELEMENT_LIGHT_POSITION, HASH_ATTRIBUTE_VALUE);
 
36132
    }
 
36133
    else
 
36134
    {
 
36135
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
36136
    }
 
36137
#else
 
36138
    {
 
36139
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
36140
    } // validation
 
36141
#endif
 
36142
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
36143
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
36144
        HASH_ELEMENT_LIGHT_POSITION,
 
36145
        HASH_ATTRIBUTE_VALUE,
 
36146
        attributeValue))
 
36147
{
 
36148
    return false;
 
36149
}
 
36150
#ifdef GENERATEDSAXPARSER_VALIDATION
 
36151
    if ( mValidate )
 
36152
    {
 
36153
    ParserError::ErrorType simpleTypeValidationResult = validate__float4_type(attributeData->value.data, attributeData->value.size);
 
36154
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
36155
    {
 
36156
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
36157
            simpleTypeValidationResult,
 
36158
            HASH_ELEMENT_LIGHT_POSITION,
 
36159
            HASH_ATTRIBUTE_VALUE,
 
36160
            attributeValue) )
 
36161
        {
 
36162
            return false;
 
36163
        }
 
36164
    }
 
36165
    } // validation
 
36166
#endif
 
36167
 
 
36168
if ( !failed )
 
36169
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__light_position__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
36170
 
 
36171
    break;
 
36172
    }
 
36173
    case HASH_ATTRIBUTE_PARAM:
 
36174
    {
 
36175
 
 
36176
attributeData->param = attributeValue;
 
36177
#ifdef GENERATEDSAXPARSER_VALIDATION
 
36178
    if ( mValidate )
 
36179
    {
 
36180
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
36181
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
36182
    {
 
36183
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
36184
            simpleTypeValidationResult,
 
36185
            HASH_ELEMENT_LIGHT_POSITION,
 
36186
            HASH_ATTRIBUTE_PARAM,
 
36187
            attributeValue) )
 
36188
        {
 
36189
            return false;
 
36190
        }
 
36191
    }
 
36192
    } // validation
 
36193
#endif
 
36194
 
 
36195
    break;
 
36196
    }
 
36197
    case HASH_ATTRIBUTE_INDEX:
 
36198
    {
 
36199
bool failed;
 
36200
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
36201
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
36202
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
36203
        HASH_ELEMENT_LIGHT_POSITION,
 
36204
        HASH_ATTRIBUTE_INDEX,
 
36205
        attributeValue))
 
36206
{
 
36207
    return false;
 
36208
}
 
36209
if ( !failed )
 
36210
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__light_position__AttributeData::ATTRIBUTE_INDEX_PRESENT;
 
36211
 
 
36212
    break;
 
36213
    }
 
36214
    default:
 
36215
    {
 
36216
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIGHT_POSITION, attribute, attributeValue))
 
36217
            {return false;}
 
36218
    }
 
36219
    }
 
36220
    }
 
36221
}
 
36222
if ((attributeData->present_attributes & profile_GLSL__technique__pass__states__light_position__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
36223
{
 
36224
    bool failed;
 
36225
    failed = !characterData2FloatList("0.0E1 0.0E1 1.0E0 0.0E1", attributeData->value);
 
36226
    if ( !failed )
 
36227
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__light_position__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
36228
}
 
36229
if ( (attributeData->present_attributes & profile_GLSL__technique__pass__states__light_position__AttributeData::ATTRIBUTE_INDEX_PRESENT) == 0 )
 
36230
{
 
36231
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_LIGHT_POSITION, HASH_ATTRIBUTE_INDEX, 0 ) )
 
36232
        return false;
 
36233
}
 
36234
 
 
36235
 
 
36236
    return true;
 
36237
}
 
36238
 
 
36239
//---------------------------------------------------------------------
 
36240
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__light_position()
 
36241
{
 
36242
#ifdef GENERATEDSAXPARSER_VALIDATION
 
36243
    if ( mValidate )
 
36244
    {
 
36245
 
 
36246
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__light_position();
 
36247
        if ( !validationResult ) return false;
 
36248
 
 
36249
    } // validation
 
36250
#endif
 
36251
 
 
36252
    return true;
 
36253
}
 
36254
 
 
36255
//---------------------------------------------------------------------
 
36256
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__light_position( void* attributeData )
 
36257
{
 
36258
    profile_GLSL__technique__pass__states__light_position__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__light_position__AttributeData*>(attributeData);
 
36259
    if (typedAttributeData->value.data)
 
36260
    {
 
36261
        mStackMemoryManager.deleteObject();
 
36262
    }
 
36263
 
 
36264
 
 
36265
    typedAttributeData->~profile_GLSL__technique__pass__states__light_position__AttributeData();
 
36266
 
 
36267
    return true;
 
36268
}
 
36269
 
 
36270
//---------------------------------------------------------------------
 
36271
const profile_GLSL__technique__pass__states__light_constant_attenuation__AttributeData profile_GLSL__technique__pass__states__light_constant_attenuation__AttributeData::DEFAULT = {0, 1.0E0, 0, 0};
 
36272
 
 
36273
//---------------------------------------------------------------------
 
36274
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__light_constant_attenuation( const ParserChar* text, size_t textLength )
 
36275
{
 
36276
    return true;
 
36277
}
 
36278
 
 
36279
//---------------------------------------------------------------------
 
36280
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__light_constant_attenuation( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
36281
{
 
36282
#ifdef GENERATEDSAXPARSER_VALIDATION
 
36283
    if ( mValidate )
 
36284
    {
 
36285
 
 
36286
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__light_constant_attenuation( attributes, attributeDataPtr, validationDataPtr );
 
36287
        if ( !validationResult ) return false;
 
36288
 
 
36289
    } // validation
 
36290
#endif
 
36291
 
 
36292
profile_GLSL__technique__pass__states__light_constant_attenuation__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__light_constant_attenuation__AttributeData>(attributeDataPtr);
 
36293
 
 
36294
const ParserChar** attributeArray = attributes.attributes;
 
36295
if ( attributeArray )
 
36296
{
 
36297
    while (true)
 
36298
    {
 
36299
        const ParserChar * attribute = *attributeArray;
 
36300
        if ( !attribute )
 
36301
            break;
 
36302
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
36303
        attributeArray++;
 
36304
        if ( !attributeArray )
 
36305
            return false;
 
36306
        const ParserChar* attributeValue = *attributeArray;
 
36307
        attributeArray++;
 
36308
 
 
36309
 
 
36310
    switch ( hash )
 
36311
    {
 
36312
    case HASH_ATTRIBUTE_VALUE:
 
36313
    {
 
36314
bool failed;
 
36315
attributeData->value = GeneratedSaxParser::Utils::toFloat(attributeValue, failed);
 
36316
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
36317
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
36318
        HASH_ELEMENT_LIGHT_CONSTANT_ATTENUATION,
 
36319
        HASH_ATTRIBUTE_VALUE,
 
36320
        attributeValue))
 
36321
{
 
36322
    return false;
 
36323
}
 
36324
 
 
36325
    break;
 
36326
    }
 
36327
    case HASH_ATTRIBUTE_PARAM:
 
36328
    {
 
36329
 
 
36330
attributeData->param = attributeValue;
 
36331
#ifdef GENERATEDSAXPARSER_VALIDATION
 
36332
    if ( mValidate )
 
36333
    {
 
36334
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
36335
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
36336
    {
 
36337
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
36338
            simpleTypeValidationResult,
 
36339
            HASH_ELEMENT_LIGHT_CONSTANT_ATTENUATION,
 
36340
            HASH_ATTRIBUTE_PARAM,
 
36341
            attributeValue) )
 
36342
        {
 
36343
            return false;
 
36344
        }
 
36345
    }
 
36346
    } // validation
 
36347
#endif
 
36348
 
 
36349
    break;
 
36350
    }
 
36351
    case HASH_ATTRIBUTE_INDEX:
 
36352
    {
 
36353
bool failed;
 
36354
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
36355
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
36356
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
36357
        HASH_ELEMENT_LIGHT_CONSTANT_ATTENUATION,
 
36358
        HASH_ATTRIBUTE_INDEX,
 
36359
        attributeValue))
 
36360
{
 
36361
    return false;
 
36362
}
 
36363
if ( !failed )
 
36364
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__light_constant_attenuation__AttributeData::ATTRIBUTE_INDEX_PRESENT;
 
36365
 
 
36366
    break;
 
36367
    }
 
36368
    default:
 
36369
    {
 
36370
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIGHT_CONSTANT_ATTENUATION, attribute, attributeValue))
 
36371
            {return false;}
 
36372
    }
 
36373
    }
 
36374
    }
 
36375
}
 
36376
if ( (attributeData->present_attributes & profile_GLSL__technique__pass__states__light_constant_attenuation__AttributeData::ATTRIBUTE_INDEX_PRESENT) == 0 )
 
36377
{
 
36378
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_LIGHT_CONSTANT_ATTENUATION, HASH_ATTRIBUTE_INDEX, 0 ) )
 
36379
        return false;
 
36380
}
 
36381
 
 
36382
 
 
36383
    return true;
 
36384
}
 
36385
 
 
36386
//---------------------------------------------------------------------
 
36387
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__light_constant_attenuation()
 
36388
{
 
36389
#ifdef GENERATEDSAXPARSER_VALIDATION
 
36390
    if ( mValidate )
 
36391
    {
 
36392
 
 
36393
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__light_constant_attenuation();
 
36394
        if ( !validationResult ) return false;
 
36395
 
 
36396
    } // validation
 
36397
#endif
 
36398
 
 
36399
    return true;
 
36400
}
 
36401
 
 
36402
//---------------------------------------------------------------------
 
36403
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__light_constant_attenuation( void* attributeData )
 
36404
{
 
36405
    profile_GLSL__technique__pass__states__light_constant_attenuation__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__light_constant_attenuation__AttributeData*>(attributeData);
 
36406
 
 
36407
    typedAttributeData->~profile_GLSL__technique__pass__states__light_constant_attenuation__AttributeData();
 
36408
 
 
36409
    return true;
 
36410
}
 
36411
 
 
36412
//---------------------------------------------------------------------
 
36413
const profile_GLSL__technique__pass__states__light_linear_attenuation__AttributeData profile_GLSL__technique__pass__states__light_linear_attenuation__AttributeData::DEFAULT = {0, 0.0E1, 0, 0};
 
36414
 
 
36415
//---------------------------------------------------------------------
 
36416
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__light_linear_attenuation( const ParserChar* text, size_t textLength )
 
36417
{
 
36418
    return true;
 
36419
}
 
36420
 
 
36421
//---------------------------------------------------------------------
 
36422
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__light_linear_attenuation( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
36423
{
 
36424
#ifdef GENERATEDSAXPARSER_VALIDATION
 
36425
    if ( mValidate )
 
36426
    {
 
36427
 
 
36428
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__light_linear_attenuation( attributes, attributeDataPtr, validationDataPtr );
 
36429
        if ( !validationResult ) return false;
 
36430
 
 
36431
    } // validation
 
36432
#endif
 
36433
 
 
36434
profile_GLSL__technique__pass__states__light_linear_attenuation__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__light_linear_attenuation__AttributeData>(attributeDataPtr);
 
36435
 
 
36436
const ParserChar** attributeArray = attributes.attributes;
 
36437
if ( attributeArray )
 
36438
{
 
36439
    while (true)
 
36440
    {
 
36441
        const ParserChar * attribute = *attributeArray;
 
36442
        if ( !attribute )
 
36443
            break;
 
36444
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
36445
        attributeArray++;
 
36446
        if ( !attributeArray )
 
36447
            return false;
 
36448
        const ParserChar* attributeValue = *attributeArray;
 
36449
        attributeArray++;
 
36450
 
 
36451
 
 
36452
    switch ( hash )
 
36453
    {
 
36454
    case HASH_ATTRIBUTE_VALUE:
 
36455
    {
 
36456
bool failed;
 
36457
attributeData->value = GeneratedSaxParser::Utils::toFloat(attributeValue, failed);
 
36458
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
36459
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
36460
        HASH_ELEMENT_LIGHT_LINEAR_ATTENUATION,
 
36461
        HASH_ATTRIBUTE_VALUE,
 
36462
        attributeValue))
 
36463
{
 
36464
    return false;
 
36465
}
 
36466
 
 
36467
    break;
 
36468
    }
 
36469
    case HASH_ATTRIBUTE_PARAM:
 
36470
    {
 
36471
 
 
36472
attributeData->param = attributeValue;
 
36473
#ifdef GENERATEDSAXPARSER_VALIDATION
 
36474
    if ( mValidate )
 
36475
    {
 
36476
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
36477
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
36478
    {
 
36479
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
36480
            simpleTypeValidationResult,
 
36481
            HASH_ELEMENT_LIGHT_LINEAR_ATTENUATION,
 
36482
            HASH_ATTRIBUTE_PARAM,
 
36483
            attributeValue) )
 
36484
        {
 
36485
            return false;
 
36486
        }
 
36487
    }
 
36488
    } // validation
 
36489
#endif
 
36490
 
 
36491
    break;
 
36492
    }
 
36493
    case HASH_ATTRIBUTE_INDEX:
 
36494
    {
 
36495
bool failed;
 
36496
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
36497
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
36498
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
36499
        HASH_ELEMENT_LIGHT_LINEAR_ATTENUATION,
 
36500
        HASH_ATTRIBUTE_INDEX,
 
36501
        attributeValue))
 
36502
{
 
36503
    return false;
 
36504
}
 
36505
if ( !failed )
 
36506
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__light_linear_attenuation__AttributeData::ATTRIBUTE_INDEX_PRESENT;
 
36507
 
 
36508
    break;
 
36509
    }
 
36510
    default:
 
36511
    {
 
36512
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIGHT_LINEAR_ATTENUATION, attribute, attributeValue))
 
36513
            {return false;}
 
36514
    }
 
36515
    }
 
36516
    }
 
36517
}
 
36518
if ( (attributeData->present_attributes & profile_GLSL__technique__pass__states__light_linear_attenuation__AttributeData::ATTRIBUTE_INDEX_PRESENT) == 0 )
 
36519
{
 
36520
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_LIGHT_LINEAR_ATTENUATION, HASH_ATTRIBUTE_INDEX, 0 ) )
 
36521
        return false;
 
36522
}
 
36523
 
 
36524
 
 
36525
    return true;
 
36526
}
 
36527
 
 
36528
//---------------------------------------------------------------------
 
36529
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__light_linear_attenuation()
 
36530
{
 
36531
#ifdef GENERATEDSAXPARSER_VALIDATION
 
36532
    if ( mValidate )
 
36533
    {
 
36534
 
 
36535
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__light_linear_attenuation();
 
36536
        if ( !validationResult ) return false;
 
36537
 
 
36538
    } // validation
 
36539
#endif
 
36540
 
 
36541
    return true;
 
36542
}
 
36543
 
 
36544
//---------------------------------------------------------------------
 
36545
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__light_linear_attenuation( void* attributeData )
 
36546
{
 
36547
    profile_GLSL__technique__pass__states__light_linear_attenuation__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__light_linear_attenuation__AttributeData*>(attributeData);
 
36548
 
 
36549
    typedAttributeData->~profile_GLSL__technique__pass__states__light_linear_attenuation__AttributeData();
 
36550
 
 
36551
    return true;
 
36552
}
 
36553
 
 
36554
//---------------------------------------------------------------------
 
36555
const profile_GLSL__technique__pass__states__light_quadratic_attenuation__AttributeData profile_GLSL__technique__pass__states__light_quadratic_attenuation__AttributeData::DEFAULT = {0, 0.0E1, 0, 0};
 
36556
 
 
36557
//---------------------------------------------------------------------
 
36558
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__light_quadratic_attenuation( const ParserChar* text, size_t textLength )
 
36559
{
 
36560
    return true;
 
36561
}
 
36562
 
 
36563
//---------------------------------------------------------------------
 
36564
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__light_quadratic_attenuation( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
36565
{
 
36566
#ifdef GENERATEDSAXPARSER_VALIDATION
 
36567
    if ( mValidate )
 
36568
    {
 
36569
 
 
36570
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__light_quadratic_attenuation( attributes, attributeDataPtr, validationDataPtr );
 
36571
        if ( !validationResult ) return false;
 
36572
 
 
36573
    } // validation
 
36574
#endif
 
36575
 
 
36576
profile_GLSL__technique__pass__states__light_quadratic_attenuation__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__light_quadratic_attenuation__AttributeData>(attributeDataPtr);
 
36577
 
 
36578
const ParserChar** attributeArray = attributes.attributes;
 
36579
if ( attributeArray )
 
36580
{
 
36581
    while (true)
 
36582
    {
 
36583
        const ParserChar * attribute = *attributeArray;
 
36584
        if ( !attribute )
 
36585
            break;
 
36586
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
36587
        attributeArray++;
 
36588
        if ( !attributeArray )
 
36589
            return false;
 
36590
        const ParserChar* attributeValue = *attributeArray;
 
36591
        attributeArray++;
 
36592
 
 
36593
 
 
36594
    switch ( hash )
 
36595
    {
 
36596
    case HASH_ATTRIBUTE_VALUE:
 
36597
    {
 
36598
bool failed;
 
36599
attributeData->value = GeneratedSaxParser::Utils::toFloat(attributeValue, failed);
 
36600
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
36601
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
36602
        HASH_ELEMENT_LIGHT_QUADRATIC_ATTENUATION,
 
36603
        HASH_ATTRIBUTE_VALUE,
 
36604
        attributeValue))
 
36605
{
 
36606
    return false;
 
36607
}
 
36608
 
 
36609
    break;
 
36610
    }
 
36611
    case HASH_ATTRIBUTE_PARAM:
 
36612
    {
 
36613
 
 
36614
attributeData->param = attributeValue;
 
36615
#ifdef GENERATEDSAXPARSER_VALIDATION
 
36616
    if ( mValidate )
 
36617
    {
 
36618
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
36619
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
36620
    {
 
36621
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
36622
            simpleTypeValidationResult,
 
36623
            HASH_ELEMENT_LIGHT_QUADRATIC_ATTENUATION,
 
36624
            HASH_ATTRIBUTE_PARAM,
 
36625
            attributeValue) )
 
36626
        {
 
36627
            return false;
 
36628
        }
 
36629
    }
 
36630
    } // validation
 
36631
#endif
 
36632
 
 
36633
    break;
 
36634
    }
 
36635
    case HASH_ATTRIBUTE_INDEX:
 
36636
    {
 
36637
bool failed;
 
36638
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
36639
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
36640
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
36641
        HASH_ELEMENT_LIGHT_QUADRATIC_ATTENUATION,
 
36642
        HASH_ATTRIBUTE_INDEX,
 
36643
        attributeValue))
 
36644
{
 
36645
    return false;
 
36646
}
 
36647
if ( !failed )
 
36648
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__light_quadratic_attenuation__AttributeData::ATTRIBUTE_INDEX_PRESENT;
 
36649
 
 
36650
    break;
 
36651
    }
 
36652
    default:
 
36653
    {
 
36654
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIGHT_QUADRATIC_ATTENUATION, attribute, attributeValue))
 
36655
            {return false;}
 
36656
    }
 
36657
    }
 
36658
    }
 
36659
}
 
36660
if ( (attributeData->present_attributes & profile_GLSL__technique__pass__states__light_quadratic_attenuation__AttributeData::ATTRIBUTE_INDEX_PRESENT) == 0 )
 
36661
{
 
36662
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_LIGHT_QUADRATIC_ATTENUATION, HASH_ATTRIBUTE_INDEX, 0 ) )
 
36663
        return false;
 
36664
}
 
36665
 
 
36666
 
 
36667
    return true;
 
36668
}
 
36669
 
 
36670
//---------------------------------------------------------------------
 
36671
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__light_quadratic_attenuation()
 
36672
{
 
36673
#ifdef GENERATEDSAXPARSER_VALIDATION
 
36674
    if ( mValidate )
 
36675
    {
 
36676
 
 
36677
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__light_quadratic_attenuation();
 
36678
        if ( !validationResult ) return false;
 
36679
 
 
36680
    } // validation
 
36681
#endif
 
36682
 
 
36683
    return true;
 
36684
}
 
36685
 
 
36686
//---------------------------------------------------------------------
 
36687
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__light_quadratic_attenuation( void* attributeData )
 
36688
{
 
36689
    profile_GLSL__technique__pass__states__light_quadratic_attenuation__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__light_quadratic_attenuation__AttributeData*>(attributeData);
 
36690
 
 
36691
    typedAttributeData->~profile_GLSL__technique__pass__states__light_quadratic_attenuation__AttributeData();
 
36692
 
 
36693
    return true;
 
36694
}
 
36695
 
 
36696
//---------------------------------------------------------------------
 
36697
const profile_GLSL__technique__pass__states__light_spot_cutoff__AttributeData profile_GLSL__technique__pass__states__light_spot_cutoff__AttributeData::DEFAULT = {0, 1.8E2, 0, 0};
 
36698
 
 
36699
//---------------------------------------------------------------------
 
36700
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__light_spot_cutoff( const ParserChar* text, size_t textLength )
 
36701
{
 
36702
    return true;
 
36703
}
 
36704
 
 
36705
//---------------------------------------------------------------------
 
36706
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__light_spot_cutoff( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
36707
{
 
36708
#ifdef GENERATEDSAXPARSER_VALIDATION
 
36709
    if ( mValidate )
 
36710
    {
 
36711
 
 
36712
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__light_spot_cutoff( attributes, attributeDataPtr, validationDataPtr );
 
36713
        if ( !validationResult ) return false;
 
36714
 
 
36715
    } // validation
 
36716
#endif
 
36717
 
 
36718
profile_GLSL__technique__pass__states__light_spot_cutoff__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__light_spot_cutoff__AttributeData>(attributeDataPtr);
 
36719
 
 
36720
const ParserChar** attributeArray = attributes.attributes;
 
36721
if ( attributeArray )
 
36722
{
 
36723
    while (true)
 
36724
    {
 
36725
        const ParserChar * attribute = *attributeArray;
 
36726
        if ( !attribute )
 
36727
            break;
 
36728
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
36729
        attributeArray++;
 
36730
        if ( !attributeArray )
 
36731
            return false;
 
36732
        const ParserChar* attributeValue = *attributeArray;
 
36733
        attributeArray++;
 
36734
 
 
36735
 
 
36736
    switch ( hash )
 
36737
    {
 
36738
    case HASH_ATTRIBUTE_VALUE:
 
36739
    {
 
36740
bool failed;
 
36741
attributeData->value = GeneratedSaxParser::Utils::toFloat(attributeValue, failed);
 
36742
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
36743
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
36744
        HASH_ELEMENT_LIGHT_SPOT_CUTOFF,
 
36745
        HASH_ATTRIBUTE_VALUE,
 
36746
        attributeValue))
 
36747
{
 
36748
    return false;
 
36749
}
 
36750
 
 
36751
    break;
 
36752
    }
 
36753
    case HASH_ATTRIBUTE_PARAM:
 
36754
    {
 
36755
 
 
36756
attributeData->param = attributeValue;
 
36757
#ifdef GENERATEDSAXPARSER_VALIDATION
 
36758
    if ( mValidate )
 
36759
    {
 
36760
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
36761
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
36762
    {
 
36763
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
36764
            simpleTypeValidationResult,
 
36765
            HASH_ELEMENT_LIGHT_SPOT_CUTOFF,
 
36766
            HASH_ATTRIBUTE_PARAM,
 
36767
            attributeValue) )
 
36768
        {
 
36769
            return false;
 
36770
        }
 
36771
    }
 
36772
    } // validation
 
36773
#endif
 
36774
 
 
36775
    break;
 
36776
    }
 
36777
    case HASH_ATTRIBUTE_INDEX:
 
36778
    {
 
36779
bool failed;
 
36780
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
36781
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
36782
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
36783
        HASH_ELEMENT_LIGHT_SPOT_CUTOFF,
 
36784
        HASH_ATTRIBUTE_INDEX,
 
36785
        attributeValue))
 
36786
{
 
36787
    return false;
 
36788
}
 
36789
if ( !failed )
 
36790
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__light_spot_cutoff__AttributeData::ATTRIBUTE_INDEX_PRESENT;
 
36791
 
 
36792
    break;
 
36793
    }
 
36794
    default:
 
36795
    {
 
36796
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIGHT_SPOT_CUTOFF, attribute, attributeValue))
 
36797
            {return false;}
 
36798
    }
 
36799
    }
 
36800
    }
 
36801
}
 
36802
if ( (attributeData->present_attributes & profile_GLSL__technique__pass__states__light_spot_cutoff__AttributeData::ATTRIBUTE_INDEX_PRESENT) == 0 )
 
36803
{
 
36804
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_LIGHT_SPOT_CUTOFF, HASH_ATTRIBUTE_INDEX, 0 ) )
 
36805
        return false;
 
36806
}
 
36807
 
 
36808
 
 
36809
    return true;
 
36810
}
 
36811
 
 
36812
//---------------------------------------------------------------------
 
36813
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__light_spot_cutoff()
 
36814
{
 
36815
#ifdef GENERATEDSAXPARSER_VALIDATION
 
36816
    if ( mValidate )
 
36817
    {
 
36818
 
 
36819
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__light_spot_cutoff();
 
36820
        if ( !validationResult ) return false;
 
36821
 
 
36822
    } // validation
 
36823
#endif
 
36824
 
 
36825
    return true;
 
36826
}
 
36827
 
 
36828
//---------------------------------------------------------------------
 
36829
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__light_spot_cutoff( void* attributeData )
 
36830
{
 
36831
    profile_GLSL__technique__pass__states__light_spot_cutoff__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__light_spot_cutoff__AttributeData*>(attributeData);
 
36832
 
 
36833
    typedAttributeData->~profile_GLSL__technique__pass__states__light_spot_cutoff__AttributeData();
 
36834
 
 
36835
    return true;
 
36836
}
 
36837
 
 
36838
//---------------------------------------------------------------------
 
36839
const profile_GLSL__technique__pass__states__light_spot_direction__AttributeData profile_GLSL__technique__pass__states__light_spot_direction__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<float>(), 0, 0};
 
36840
 
 
36841
//---------------------------------------------------------------------
 
36842
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__light_spot_direction( const ParserChar* text, size_t textLength )
 
36843
{
 
36844
    return true;
 
36845
}
 
36846
 
 
36847
//---------------------------------------------------------------------
 
36848
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__light_spot_direction( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
36849
{
 
36850
#ifdef GENERATEDSAXPARSER_VALIDATION
 
36851
    if ( mValidate )
 
36852
    {
 
36853
 
 
36854
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__light_spot_direction( attributes, attributeDataPtr, validationDataPtr );
 
36855
        if ( !validationResult ) return false;
 
36856
 
 
36857
    } // validation
 
36858
#endif
 
36859
 
 
36860
profile_GLSL__technique__pass__states__light_spot_direction__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__light_spot_direction__AttributeData>(attributeDataPtr);
 
36861
 
 
36862
const ParserChar** attributeArray = attributes.attributes;
 
36863
if ( attributeArray )
 
36864
{
 
36865
    while (true)
 
36866
    {
 
36867
        const ParserChar * attribute = *attributeArray;
 
36868
        if ( !attribute )
 
36869
            break;
 
36870
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
36871
        attributeArray++;
 
36872
        if ( !attributeArray )
 
36873
            return false;
 
36874
        const ParserChar* attributeValue = *attributeArray;
 
36875
        attributeArray++;
 
36876
 
 
36877
 
 
36878
    switch ( hash )
 
36879
    {
 
36880
    case HASH_ATTRIBUTE_VALUE:
 
36881
    {
 
36882
bool failed;
 
36883
#ifdef GENERATEDSAXPARSER_VALIDATION
 
36884
    if ( mValidate )
 
36885
    {
 
36886
failed = !characterData2FloatList(attributeValue, attributeData->value, 0, HASH_ELEMENT_LIGHT_SPOT_DIRECTION, HASH_ATTRIBUTE_VALUE);
 
36887
    }
 
36888
    else
 
36889
    {
 
36890
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
36891
    }
 
36892
#else
 
36893
    {
 
36894
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
36895
    } // validation
 
36896
#endif
 
36897
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
36898
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
36899
        HASH_ELEMENT_LIGHT_SPOT_DIRECTION,
 
36900
        HASH_ATTRIBUTE_VALUE,
 
36901
        attributeValue))
 
36902
{
 
36903
    return false;
 
36904
}
 
36905
#ifdef GENERATEDSAXPARSER_VALIDATION
 
36906
    if ( mValidate )
 
36907
    {
 
36908
    ParserError::ErrorType simpleTypeValidationResult = validate__float3_type(attributeData->value.data, attributeData->value.size);
 
36909
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
36910
    {
 
36911
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
36912
            simpleTypeValidationResult,
 
36913
            HASH_ELEMENT_LIGHT_SPOT_DIRECTION,
 
36914
            HASH_ATTRIBUTE_VALUE,
 
36915
            attributeValue) )
 
36916
        {
 
36917
            return false;
 
36918
        }
 
36919
    }
 
36920
    } // validation
 
36921
#endif
 
36922
 
 
36923
if ( !failed )
 
36924
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__light_spot_direction__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
36925
 
 
36926
    break;
 
36927
    }
 
36928
    case HASH_ATTRIBUTE_PARAM:
 
36929
    {
 
36930
 
 
36931
attributeData->param = attributeValue;
 
36932
#ifdef GENERATEDSAXPARSER_VALIDATION
 
36933
    if ( mValidate )
 
36934
    {
 
36935
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
36936
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
36937
    {
 
36938
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
36939
            simpleTypeValidationResult,
 
36940
            HASH_ELEMENT_LIGHT_SPOT_DIRECTION,
 
36941
            HASH_ATTRIBUTE_PARAM,
 
36942
            attributeValue) )
 
36943
        {
 
36944
            return false;
 
36945
        }
 
36946
    }
 
36947
    } // validation
 
36948
#endif
 
36949
 
 
36950
    break;
 
36951
    }
 
36952
    case HASH_ATTRIBUTE_INDEX:
 
36953
    {
 
36954
bool failed;
 
36955
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
36956
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
36957
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
36958
        HASH_ELEMENT_LIGHT_SPOT_DIRECTION,
 
36959
        HASH_ATTRIBUTE_INDEX,
 
36960
        attributeValue))
 
36961
{
 
36962
    return false;
 
36963
}
 
36964
if ( !failed )
 
36965
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__light_spot_direction__AttributeData::ATTRIBUTE_INDEX_PRESENT;
 
36966
 
 
36967
    break;
 
36968
    }
 
36969
    default:
 
36970
    {
 
36971
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIGHT_SPOT_DIRECTION, attribute, attributeValue))
 
36972
            {return false;}
 
36973
    }
 
36974
    }
 
36975
    }
 
36976
}
 
36977
if ((attributeData->present_attributes & profile_GLSL__technique__pass__states__light_spot_direction__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
36978
{
 
36979
    bool failed;
 
36980
    failed = !characterData2FloatList("0.0E1 0.0E1 -1.0E0", attributeData->value);
 
36981
    if ( !failed )
 
36982
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__light_spot_direction__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
36983
}
 
36984
if ( (attributeData->present_attributes & profile_GLSL__technique__pass__states__light_spot_direction__AttributeData::ATTRIBUTE_INDEX_PRESENT) == 0 )
 
36985
{
 
36986
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_LIGHT_SPOT_DIRECTION, HASH_ATTRIBUTE_INDEX, 0 ) )
 
36987
        return false;
 
36988
}
 
36989
 
 
36990
 
 
36991
    return true;
 
36992
}
 
36993
 
 
36994
//---------------------------------------------------------------------
 
36995
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__light_spot_direction()
 
36996
{
 
36997
#ifdef GENERATEDSAXPARSER_VALIDATION
 
36998
    if ( mValidate )
 
36999
    {
 
37000
 
 
37001
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__light_spot_direction();
 
37002
        if ( !validationResult ) return false;
 
37003
 
 
37004
    } // validation
 
37005
#endif
 
37006
 
 
37007
    return true;
 
37008
}
 
37009
 
 
37010
//---------------------------------------------------------------------
 
37011
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__light_spot_direction( void* attributeData )
 
37012
{
 
37013
    profile_GLSL__technique__pass__states__light_spot_direction__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__light_spot_direction__AttributeData*>(attributeData);
 
37014
    if (typedAttributeData->value.data)
 
37015
    {
 
37016
        mStackMemoryManager.deleteObject();
 
37017
    }
 
37018
 
 
37019
 
 
37020
    typedAttributeData->~profile_GLSL__technique__pass__states__light_spot_direction__AttributeData();
 
37021
 
 
37022
    return true;
 
37023
}
 
37024
 
 
37025
//---------------------------------------------------------------------
 
37026
const profile_GLSL__technique__pass__states__light_spot_exponent__AttributeData profile_GLSL__technique__pass__states__light_spot_exponent__AttributeData::DEFAULT = {0, 0.0E1, 0, 0};
 
37027
 
 
37028
//---------------------------------------------------------------------
 
37029
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__light_spot_exponent( const ParserChar* text, size_t textLength )
 
37030
{
 
37031
    return true;
 
37032
}
 
37033
 
 
37034
//---------------------------------------------------------------------
 
37035
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__light_spot_exponent( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
37036
{
 
37037
#ifdef GENERATEDSAXPARSER_VALIDATION
 
37038
    if ( mValidate )
 
37039
    {
 
37040
 
 
37041
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__light_spot_exponent( attributes, attributeDataPtr, validationDataPtr );
 
37042
        if ( !validationResult ) return false;
 
37043
 
 
37044
    } // validation
 
37045
#endif
 
37046
 
 
37047
profile_GLSL__technique__pass__states__light_spot_exponent__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__light_spot_exponent__AttributeData>(attributeDataPtr);
 
37048
 
 
37049
const ParserChar** attributeArray = attributes.attributes;
 
37050
if ( attributeArray )
 
37051
{
 
37052
    while (true)
 
37053
    {
 
37054
        const ParserChar * attribute = *attributeArray;
 
37055
        if ( !attribute )
 
37056
            break;
 
37057
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
37058
        attributeArray++;
 
37059
        if ( !attributeArray )
 
37060
            return false;
 
37061
        const ParserChar* attributeValue = *attributeArray;
 
37062
        attributeArray++;
 
37063
 
 
37064
 
 
37065
    switch ( hash )
 
37066
    {
 
37067
    case HASH_ATTRIBUTE_VALUE:
 
37068
    {
 
37069
bool failed;
 
37070
attributeData->value = GeneratedSaxParser::Utils::toFloat(attributeValue, failed);
 
37071
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
37072
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
37073
        HASH_ELEMENT_LIGHT_SPOT_EXPONENT,
 
37074
        HASH_ATTRIBUTE_VALUE,
 
37075
        attributeValue))
 
37076
{
 
37077
    return false;
 
37078
}
 
37079
 
 
37080
    break;
 
37081
    }
 
37082
    case HASH_ATTRIBUTE_PARAM:
 
37083
    {
 
37084
 
 
37085
attributeData->param = attributeValue;
 
37086
#ifdef GENERATEDSAXPARSER_VALIDATION
 
37087
    if ( mValidate )
 
37088
    {
 
37089
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
37090
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
37091
    {
 
37092
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
37093
            simpleTypeValidationResult,
 
37094
            HASH_ELEMENT_LIGHT_SPOT_EXPONENT,
 
37095
            HASH_ATTRIBUTE_PARAM,
 
37096
            attributeValue) )
 
37097
        {
 
37098
            return false;
 
37099
        }
 
37100
    }
 
37101
    } // validation
 
37102
#endif
 
37103
 
 
37104
    break;
 
37105
    }
 
37106
    case HASH_ATTRIBUTE_INDEX:
 
37107
    {
 
37108
bool failed;
 
37109
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
37110
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
37111
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
37112
        HASH_ELEMENT_LIGHT_SPOT_EXPONENT,
 
37113
        HASH_ATTRIBUTE_INDEX,
 
37114
        attributeValue))
 
37115
{
 
37116
    return false;
 
37117
}
 
37118
if ( !failed )
 
37119
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__light_spot_exponent__AttributeData::ATTRIBUTE_INDEX_PRESENT;
 
37120
 
 
37121
    break;
 
37122
    }
 
37123
    default:
 
37124
    {
 
37125
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIGHT_SPOT_EXPONENT, attribute, attributeValue))
 
37126
            {return false;}
 
37127
    }
 
37128
    }
 
37129
    }
 
37130
}
 
37131
if ( (attributeData->present_attributes & profile_GLSL__technique__pass__states__light_spot_exponent__AttributeData::ATTRIBUTE_INDEX_PRESENT) == 0 )
 
37132
{
 
37133
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_LIGHT_SPOT_EXPONENT, HASH_ATTRIBUTE_INDEX, 0 ) )
 
37134
        return false;
 
37135
}
 
37136
 
 
37137
 
 
37138
    return true;
 
37139
}
 
37140
 
 
37141
//---------------------------------------------------------------------
 
37142
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__light_spot_exponent()
 
37143
{
 
37144
#ifdef GENERATEDSAXPARSER_VALIDATION
 
37145
    if ( mValidate )
 
37146
    {
 
37147
 
 
37148
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__light_spot_exponent();
 
37149
        if ( !validationResult ) return false;
 
37150
 
 
37151
    } // validation
 
37152
#endif
 
37153
 
 
37154
    return true;
 
37155
}
 
37156
 
 
37157
//---------------------------------------------------------------------
 
37158
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__light_spot_exponent( void* attributeData )
 
37159
{
 
37160
    profile_GLSL__technique__pass__states__light_spot_exponent__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__light_spot_exponent__AttributeData*>(attributeData);
 
37161
 
 
37162
    typedAttributeData->~profile_GLSL__technique__pass__states__light_spot_exponent__AttributeData();
 
37163
 
 
37164
    return true;
 
37165
}
 
37166
 
 
37167
//---------------------------------------------------------------------
 
37168
const texture1D__AttributeData texture1D__AttributeData::DEFAULT = {0, 0};
 
37169
 
 
37170
//---------------------------------------------------------------------
 
37171
bool ColladaParserAutoGen15Private::_data__texture1D( const ParserChar* text, size_t textLength )
 
37172
{
 
37173
    return true;
 
37174
}
 
37175
 
 
37176
//---------------------------------------------------------------------
 
37177
bool ColladaParserAutoGen15Private::_preBegin__texture1D( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
37178
{
 
37179
#ifdef GENERATEDSAXPARSER_VALIDATION
 
37180
    if ( mValidate )
 
37181
    {
 
37182
 
 
37183
        bool validationResult = _validateBegin__texture1D( attributes, attributeDataPtr, validationDataPtr );
 
37184
        if ( !validationResult ) return false;
 
37185
 
 
37186
    } // validation
 
37187
#endif
 
37188
 
 
37189
texture1D__AttributeData* attributeData = newData<texture1D__AttributeData>(attributeDataPtr);
 
37190
 
 
37191
const ParserChar** attributeArray = attributes.attributes;
 
37192
if ( attributeArray )
 
37193
{
 
37194
    while (true)
 
37195
    {
 
37196
        const ParserChar * attribute = *attributeArray;
 
37197
        if ( !attribute )
 
37198
            break;
 
37199
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
37200
        attributeArray++;
 
37201
        if ( !attributeArray )
 
37202
            return false;
 
37203
        const ParserChar* attributeValue = *attributeArray;
 
37204
        attributeArray++;
 
37205
 
 
37206
 
 
37207
    switch ( hash )
 
37208
    {
 
37209
    case HASH_ATTRIBUTE_INDEX:
 
37210
    {
 
37211
bool failed;
 
37212
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
37213
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
37214
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
37215
        HASH_ELEMENT_TEXTURE1D,
 
37216
        HASH_ATTRIBUTE_INDEX,
 
37217
        attributeValue))
 
37218
{
 
37219
    return false;
 
37220
}
 
37221
if ( !failed )
 
37222
    attributeData->present_attributes |= texture1D__AttributeData::ATTRIBUTE_INDEX_PRESENT;
 
37223
 
 
37224
    break;
 
37225
    }
 
37226
    default:
 
37227
    {
 
37228
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_TEXTURE1D, attribute, attributeValue))
 
37229
            {return false;}
 
37230
    }
 
37231
    }
 
37232
    }
 
37233
}
 
37234
if ( (attributeData->present_attributes & texture1D__AttributeData::ATTRIBUTE_INDEX_PRESENT) == 0 )
 
37235
{
 
37236
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_TEXTURE1D, HASH_ATTRIBUTE_INDEX, 0 ) )
 
37237
        return false;
 
37238
}
 
37239
 
 
37240
 
 
37241
    return true;
 
37242
}
 
37243
 
 
37244
//---------------------------------------------------------------------
 
37245
bool ColladaParserAutoGen15Private::_preEnd__texture1D()
 
37246
{
 
37247
#ifdef GENERATEDSAXPARSER_VALIDATION
 
37248
    if ( mValidate )
 
37249
    {
 
37250
 
 
37251
        bool validationResult = _validateEnd__texture1D();
 
37252
        if ( !validationResult ) return false;
 
37253
 
 
37254
    } // validation
 
37255
#endif
 
37256
 
 
37257
    return true;
 
37258
}
 
37259
 
 
37260
//---------------------------------------------------------------------
 
37261
bool ColladaParserAutoGen15Private::_freeAttributes__texture1D( void* attributeData )
 
37262
{
 
37263
    texture1D__AttributeData* typedAttributeData = static_cast<texture1D__AttributeData*>(attributeData);
 
37264
 
 
37265
    typedAttributeData->~texture1D__AttributeData();
 
37266
 
 
37267
    return true;
 
37268
}
 
37269
 
 
37270
//---------------------------------------------------------------------
 
37271
bool ColladaParserAutoGen15Private::_data__value____fx_sampler1D_type( const ParserChar* text, size_t textLength )
 
37272
{
 
37273
    return true;
 
37274
}
 
37275
 
 
37276
//---------------------------------------------------------------------
 
37277
bool ColladaParserAutoGen15Private::_preBegin__value____fx_sampler1D_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
37278
{
 
37279
#ifdef GENERATEDSAXPARSER_VALIDATION
 
37280
    if ( mValidate )
 
37281
    {
 
37282
 
 
37283
        bool validationResult = _validateBegin__value____fx_sampler1D_type( attributes, attributeDataPtr, validationDataPtr );
 
37284
        if ( !validationResult ) return false;
 
37285
 
 
37286
    } // validation
 
37287
#endif
 
37288
 
 
37289
    return true;
 
37290
}
 
37291
 
 
37292
//---------------------------------------------------------------------
 
37293
bool ColladaParserAutoGen15Private::_preEnd__value____fx_sampler1D_type()
 
37294
{
 
37295
#ifdef GENERATEDSAXPARSER_VALIDATION
 
37296
    if ( mValidate )
 
37297
    {
 
37298
 
 
37299
        bool validationResult = _validateEnd__value____fx_sampler1D_type();
 
37300
        if ( !validationResult ) return false;
 
37301
 
 
37302
    } // validation
 
37303
#endif
 
37304
 
 
37305
    return true;
 
37306
}
 
37307
 
 
37308
//---------------------------------------------------------------------
 
37309
bool ColladaParserAutoGen15Private::_freeAttributes__value____fx_sampler1D_type( void* attributeData )
 
37310
{
 
37311
    return true;
 
37312
}
 
37313
 
 
37314
//---------------------------------------------------------------------
 
37315
bool ColladaParserAutoGen15Private::_data__param____NCName( const ParserChar* text, size_t textLength )
 
37316
{
 
37317
if (!mLastIncompleteFragmentInCharacterData)
 
37318
{
 
37319
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
37320
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
37321
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
37322
}
 
37323
else
 
37324
{
 
37325
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
37326
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
37327
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
37328
        mLastIncompleteFragmentInCharacterData = tmp;
 
37329
    }
 
37330
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
37331
    mEndOfDataInCurrentObjectOnStack += textLength;
 
37332
}
 
37333
return true;
 
37334
}
 
37335
 
 
37336
//---------------------------------------------------------------------
 
37337
bool ColladaParserAutoGen15Private::_preBegin__param____NCName( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
37338
{
 
37339
#ifdef GENERATEDSAXPARSER_VALIDATION
 
37340
    if ( mValidate )
 
37341
    {
 
37342
 
 
37343
        bool validationResult = _validateBegin__param____NCName( attributes, attributeDataPtr, validationDataPtr );
 
37344
        if ( !validationResult ) return false;
 
37345
 
 
37346
    } // validation
 
37347
#endif
 
37348
 
 
37349
    return true;
 
37350
}
 
37351
 
 
37352
//---------------------------------------------------------------------
 
37353
bool ColladaParserAutoGen15Private::_preEnd__param____NCName()
 
37354
{
 
37355
#ifdef GENERATEDSAXPARSER_VALIDATION
 
37356
    if ( mValidate )
 
37357
    {
 
37358
 
 
37359
        bool validationResult = _validateEnd__param____NCName();
 
37360
        if ( !validationResult ) return false;
 
37361
 
 
37362
    } // validation
 
37363
#endif
 
37364
 
 
37365
bool returnValue = true;
 
37366
#ifdef GENERATEDSAXPARSER_VALIDATION
 
37367
    if ( mValidate )
 
37368
    {
 
37369
ParserError::ErrorType simpleTypeValidationResult = validate__NCName(mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData);
 
37370
if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
37371
{
 
37372
    ParserChar msg[21];
 
37373
    Utils::fillErrorMsg(msg, mLastIncompleteFragmentInCharacterData, 20);
 
37374
    if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
37375
        simpleTypeValidationResult,
 
37376
        0,
 
37377
        msg) )
 
37378
    {
 
37379
        returnValue =  false;
 
37380
    }
 
37381
}
 
37382
if (!returnValue)
 
37383
{
 
37384
    mStackMemoryManager.deleteObject();
 
37385
    mLastIncompleteFragmentInCharacterData = 0;
 
37386
    mEndOfDataInCurrentObjectOnStack = 0;
 
37387
    return returnValue;
 
37388
}
 
37389
    } // validation
 
37390
#endif
 
37391
returnValue = mImpl->data__param____NCName(mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData);
 
37392
mStackMemoryManager.deleteObject();
 
37393
mLastIncompleteFragmentInCharacterData = 0;
 
37394
mEndOfDataInCurrentObjectOnStack = 0;
 
37395
return returnValue;
 
37396
 
 
37397
}
 
37398
 
 
37399
//---------------------------------------------------------------------
 
37400
bool ColladaParserAutoGen15Private::_freeAttributes__param____NCName( void* attributeData )
 
37401
{
 
37402
    return true;
 
37403
}
 
37404
 
 
37405
//---------------------------------------------------------------------
 
37406
const texture2D__AttributeData texture2D__AttributeData::DEFAULT = {0, 0};
 
37407
 
 
37408
//---------------------------------------------------------------------
 
37409
bool ColladaParserAutoGen15Private::_data__texture2D( const ParserChar* text, size_t textLength )
 
37410
{
 
37411
    return true;
 
37412
}
 
37413
 
 
37414
//---------------------------------------------------------------------
 
37415
bool ColladaParserAutoGen15Private::_preBegin__texture2D( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
37416
{
 
37417
#ifdef GENERATEDSAXPARSER_VALIDATION
 
37418
    if ( mValidate )
 
37419
    {
 
37420
 
 
37421
        bool validationResult = _validateBegin__texture2D( attributes, attributeDataPtr, validationDataPtr );
 
37422
        if ( !validationResult ) return false;
 
37423
 
 
37424
    } // validation
 
37425
#endif
 
37426
 
 
37427
texture2D__AttributeData* attributeData = newData<texture2D__AttributeData>(attributeDataPtr);
 
37428
 
 
37429
const ParserChar** attributeArray = attributes.attributes;
 
37430
if ( attributeArray )
 
37431
{
 
37432
    while (true)
 
37433
    {
 
37434
        const ParserChar * attribute = *attributeArray;
 
37435
        if ( !attribute )
 
37436
            break;
 
37437
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
37438
        attributeArray++;
 
37439
        if ( !attributeArray )
 
37440
            return false;
 
37441
        const ParserChar* attributeValue = *attributeArray;
 
37442
        attributeArray++;
 
37443
 
 
37444
 
 
37445
    switch ( hash )
 
37446
    {
 
37447
    case HASH_ATTRIBUTE_INDEX:
 
37448
    {
 
37449
bool failed;
 
37450
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
37451
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
37452
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
37453
        HASH_ELEMENT_TEXTURE2D,
 
37454
        HASH_ATTRIBUTE_INDEX,
 
37455
        attributeValue))
 
37456
{
 
37457
    return false;
 
37458
}
 
37459
if ( !failed )
 
37460
    attributeData->present_attributes |= texture2D__AttributeData::ATTRIBUTE_INDEX_PRESENT;
 
37461
 
 
37462
    break;
 
37463
    }
 
37464
    default:
 
37465
    {
 
37466
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_TEXTURE2D, attribute, attributeValue))
 
37467
            {return false;}
 
37468
    }
 
37469
    }
 
37470
    }
 
37471
}
 
37472
if ( (attributeData->present_attributes & texture2D__AttributeData::ATTRIBUTE_INDEX_PRESENT) == 0 )
 
37473
{
 
37474
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_TEXTURE2D, HASH_ATTRIBUTE_INDEX, 0 ) )
 
37475
        return false;
 
37476
}
 
37477
 
 
37478
 
 
37479
    return true;
 
37480
}
 
37481
 
 
37482
//---------------------------------------------------------------------
 
37483
bool ColladaParserAutoGen15Private::_preEnd__texture2D()
 
37484
{
 
37485
#ifdef GENERATEDSAXPARSER_VALIDATION
 
37486
    if ( mValidate )
 
37487
    {
 
37488
 
 
37489
        bool validationResult = _validateEnd__texture2D();
 
37490
        if ( !validationResult ) return false;
 
37491
 
 
37492
    } // validation
 
37493
#endif
 
37494
 
 
37495
    return true;
 
37496
}
 
37497
 
 
37498
//---------------------------------------------------------------------
 
37499
bool ColladaParserAutoGen15Private::_freeAttributes__texture2D( void* attributeData )
 
37500
{
 
37501
    texture2D__AttributeData* typedAttributeData = static_cast<texture2D__AttributeData*>(attributeData);
 
37502
 
 
37503
    typedAttributeData->~texture2D__AttributeData();
 
37504
 
 
37505
    return true;
 
37506
}
 
37507
 
 
37508
//---------------------------------------------------------------------
 
37509
bool ColladaParserAutoGen15Private::_data__value____fx_sampler2D_type( const ParserChar* text, size_t textLength )
 
37510
{
 
37511
    return true;
 
37512
}
 
37513
 
 
37514
//---------------------------------------------------------------------
 
37515
bool ColladaParserAutoGen15Private::_preBegin__value____fx_sampler2D_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
37516
{
 
37517
#ifdef GENERATEDSAXPARSER_VALIDATION
 
37518
    if ( mValidate )
 
37519
    {
 
37520
 
 
37521
        bool validationResult = _validateBegin__value____fx_sampler2D_type( attributes, attributeDataPtr, validationDataPtr );
 
37522
        if ( !validationResult ) return false;
 
37523
 
 
37524
    } // validation
 
37525
#endif
 
37526
 
 
37527
    return true;
 
37528
}
 
37529
 
 
37530
//---------------------------------------------------------------------
 
37531
bool ColladaParserAutoGen15Private::_preEnd__value____fx_sampler2D_type()
 
37532
{
 
37533
#ifdef GENERATEDSAXPARSER_VALIDATION
 
37534
    if ( mValidate )
 
37535
    {
 
37536
 
 
37537
        bool validationResult = _validateEnd__value____fx_sampler2D_type();
 
37538
        if ( !validationResult ) return false;
 
37539
 
 
37540
    } // validation
 
37541
#endif
 
37542
 
 
37543
    return true;
 
37544
}
 
37545
 
 
37546
//---------------------------------------------------------------------
 
37547
bool ColladaParserAutoGen15Private::_freeAttributes__value____fx_sampler2D_type( void* attributeData )
 
37548
{
 
37549
    return true;
 
37550
}
 
37551
 
 
37552
//---------------------------------------------------------------------
 
37553
const texture3D__AttributeData texture3D__AttributeData::DEFAULT = {0, 0};
 
37554
 
 
37555
//---------------------------------------------------------------------
 
37556
bool ColladaParserAutoGen15Private::_data__texture3D( const ParserChar* text, size_t textLength )
 
37557
{
 
37558
    return true;
 
37559
}
 
37560
 
 
37561
//---------------------------------------------------------------------
 
37562
bool ColladaParserAutoGen15Private::_preBegin__texture3D( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
37563
{
 
37564
#ifdef GENERATEDSAXPARSER_VALIDATION
 
37565
    if ( mValidate )
 
37566
    {
 
37567
 
 
37568
        bool validationResult = _validateBegin__texture3D( attributes, attributeDataPtr, validationDataPtr );
 
37569
        if ( !validationResult ) return false;
 
37570
 
 
37571
    } // validation
 
37572
#endif
 
37573
 
 
37574
texture3D__AttributeData* attributeData = newData<texture3D__AttributeData>(attributeDataPtr);
 
37575
 
 
37576
const ParserChar** attributeArray = attributes.attributes;
 
37577
if ( attributeArray )
 
37578
{
 
37579
    while (true)
 
37580
    {
 
37581
        const ParserChar * attribute = *attributeArray;
 
37582
        if ( !attribute )
 
37583
            break;
 
37584
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
37585
        attributeArray++;
 
37586
        if ( !attributeArray )
 
37587
            return false;
 
37588
        const ParserChar* attributeValue = *attributeArray;
 
37589
        attributeArray++;
 
37590
 
 
37591
 
 
37592
    switch ( hash )
 
37593
    {
 
37594
    case HASH_ATTRIBUTE_INDEX:
 
37595
    {
 
37596
bool failed;
 
37597
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
37598
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
37599
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
37600
        HASH_ELEMENT_TEXTURE3D,
 
37601
        HASH_ATTRIBUTE_INDEX,
 
37602
        attributeValue))
 
37603
{
 
37604
    return false;
 
37605
}
 
37606
if ( !failed )
 
37607
    attributeData->present_attributes |= texture3D__AttributeData::ATTRIBUTE_INDEX_PRESENT;
 
37608
 
 
37609
    break;
 
37610
    }
 
37611
    default:
 
37612
    {
 
37613
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_TEXTURE3D, attribute, attributeValue))
 
37614
            {return false;}
 
37615
    }
 
37616
    }
 
37617
    }
 
37618
}
 
37619
if ( (attributeData->present_attributes & texture3D__AttributeData::ATTRIBUTE_INDEX_PRESENT) == 0 )
 
37620
{
 
37621
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_TEXTURE3D, HASH_ATTRIBUTE_INDEX, 0 ) )
 
37622
        return false;
 
37623
}
 
37624
 
 
37625
 
 
37626
    return true;
 
37627
}
 
37628
 
 
37629
//---------------------------------------------------------------------
 
37630
bool ColladaParserAutoGen15Private::_preEnd__texture3D()
 
37631
{
 
37632
#ifdef GENERATEDSAXPARSER_VALIDATION
 
37633
    if ( mValidate )
 
37634
    {
 
37635
 
 
37636
        bool validationResult = _validateEnd__texture3D();
 
37637
        if ( !validationResult ) return false;
 
37638
 
 
37639
    } // validation
 
37640
#endif
 
37641
 
 
37642
    return true;
 
37643
}
 
37644
 
 
37645
//---------------------------------------------------------------------
 
37646
bool ColladaParserAutoGen15Private::_freeAttributes__texture3D( void* attributeData )
 
37647
{
 
37648
    texture3D__AttributeData* typedAttributeData = static_cast<texture3D__AttributeData*>(attributeData);
 
37649
 
 
37650
    typedAttributeData->~texture3D__AttributeData();
 
37651
 
 
37652
    return true;
 
37653
}
 
37654
 
 
37655
//---------------------------------------------------------------------
 
37656
bool ColladaParserAutoGen15Private::_data__value____fx_sampler3D_type( const ParserChar* text, size_t textLength )
 
37657
{
 
37658
    return true;
 
37659
}
 
37660
 
 
37661
//---------------------------------------------------------------------
 
37662
bool ColladaParserAutoGen15Private::_preBegin__value____fx_sampler3D_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
37663
{
 
37664
#ifdef GENERATEDSAXPARSER_VALIDATION
 
37665
    if ( mValidate )
 
37666
    {
 
37667
 
 
37668
        bool validationResult = _validateBegin__value____fx_sampler3D_type( attributes, attributeDataPtr, validationDataPtr );
 
37669
        if ( !validationResult ) return false;
 
37670
 
 
37671
    } // validation
 
37672
#endif
 
37673
 
 
37674
    return true;
 
37675
}
 
37676
 
 
37677
//---------------------------------------------------------------------
 
37678
bool ColladaParserAutoGen15Private::_preEnd__value____fx_sampler3D_type()
 
37679
{
 
37680
#ifdef GENERATEDSAXPARSER_VALIDATION
 
37681
    if ( mValidate )
 
37682
    {
 
37683
 
 
37684
        bool validationResult = _validateEnd__value____fx_sampler3D_type();
 
37685
        if ( !validationResult ) return false;
 
37686
 
 
37687
    } // validation
 
37688
#endif
 
37689
 
 
37690
    return true;
 
37691
}
 
37692
 
 
37693
//---------------------------------------------------------------------
 
37694
bool ColladaParserAutoGen15Private::_freeAttributes__value____fx_sampler3D_type( void* attributeData )
 
37695
{
 
37696
    return true;
 
37697
}
 
37698
 
 
37699
//---------------------------------------------------------------------
 
37700
const textureCUBE__AttributeData textureCUBE__AttributeData::DEFAULT = {0, 0};
 
37701
 
 
37702
//---------------------------------------------------------------------
 
37703
bool ColladaParserAutoGen15Private::_data__textureCUBE( const ParserChar* text, size_t textLength )
 
37704
{
 
37705
    return true;
 
37706
}
 
37707
 
 
37708
//---------------------------------------------------------------------
 
37709
bool ColladaParserAutoGen15Private::_preBegin__textureCUBE( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
37710
{
 
37711
#ifdef GENERATEDSAXPARSER_VALIDATION
 
37712
    if ( mValidate )
 
37713
    {
 
37714
 
 
37715
        bool validationResult = _validateBegin__textureCUBE( attributes, attributeDataPtr, validationDataPtr );
 
37716
        if ( !validationResult ) return false;
 
37717
 
 
37718
    } // validation
 
37719
#endif
 
37720
 
 
37721
textureCUBE__AttributeData* attributeData = newData<textureCUBE__AttributeData>(attributeDataPtr);
 
37722
 
 
37723
const ParserChar** attributeArray = attributes.attributes;
 
37724
if ( attributeArray )
 
37725
{
 
37726
    while (true)
 
37727
    {
 
37728
        const ParserChar * attribute = *attributeArray;
 
37729
        if ( !attribute )
 
37730
            break;
 
37731
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
37732
        attributeArray++;
 
37733
        if ( !attributeArray )
 
37734
            return false;
 
37735
        const ParserChar* attributeValue = *attributeArray;
 
37736
        attributeArray++;
 
37737
 
 
37738
 
 
37739
    switch ( hash )
 
37740
    {
 
37741
    case HASH_ATTRIBUTE_INDEX:
 
37742
    {
 
37743
bool failed;
 
37744
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
37745
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
37746
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
37747
        HASH_ELEMENT_TEXTURECUBE,
 
37748
        HASH_ATTRIBUTE_INDEX,
 
37749
        attributeValue))
 
37750
{
 
37751
    return false;
 
37752
}
 
37753
if ( !failed )
 
37754
    attributeData->present_attributes |= textureCUBE__AttributeData::ATTRIBUTE_INDEX_PRESENT;
 
37755
 
 
37756
    break;
 
37757
    }
 
37758
    default:
 
37759
    {
 
37760
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_TEXTURECUBE, attribute, attributeValue))
 
37761
            {return false;}
 
37762
    }
 
37763
    }
 
37764
    }
 
37765
}
 
37766
if ( (attributeData->present_attributes & textureCUBE__AttributeData::ATTRIBUTE_INDEX_PRESENT) == 0 )
 
37767
{
 
37768
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_TEXTURECUBE, HASH_ATTRIBUTE_INDEX, 0 ) )
 
37769
        return false;
 
37770
}
 
37771
 
 
37772
 
 
37773
    return true;
 
37774
}
 
37775
 
 
37776
//---------------------------------------------------------------------
 
37777
bool ColladaParserAutoGen15Private::_preEnd__textureCUBE()
 
37778
{
 
37779
#ifdef GENERATEDSAXPARSER_VALIDATION
 
37780
    if ( mValidate )
 
37781
    {
 
37782
 
 
37783
        bool validationResult = _validateEnd__textureCUBE();
 
37784
        if ( !validationResult ) return false;
 
37785
 
 
37786
    } // validation
 
37787
#endif
 
37788
 
 
37789
    return true;
 
37790
}
 
37791
 
 
37792
//---------------------------------------------------------------------
 
37793
bool ColladaParserAutoGen15Private::_freeAttributes__textureCUBE( void* attributeData )
 
37794
{
 
37795
    textureCUBE__AttributeData* typedAttributeData = static_cast<textureCUBE__AttributeData*>(attributeData);
 
37796
 
 
37797
    typedAttributeData->~textureCUBE__AttributeData();
 
37798
 
 
37799
    return true;
 
37800
}
 
37801
 
 
37802
//---------------------------------------------------------------------
 
37803
bool ColladaParserAutoGen15Private::_data__value____fx_samplerCUBE_type( const ParserChar* text, size_t textLength )
 
37804
{
 
37805
    return true;
 
37806
}
 
37807
 
 
37808
//---------------------------------------------------------------------
 
37809
bool ColladaParserAutoGen15Private::_preBegin__value____fx_samplerCUBE_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
37810
{
 
37811
#ifdef GENERATEDSAXPARSER_VALIDATION
 
37812
    if ( mValidate )
 
37813
    {
 
37814
 
 
37815
        bool validationResult = _validateBegin__value____fx_samplerCUBE_type( attributes, attributeDataPtr, validationDataPtr );
 
37816
        if ( !validationResult ) return false;
 
37817
 
 
37818
    } // validation
 
37819
#endif
 
37820
 
 
37821
    return true;
 
37822
}
 
37823
 
 
37824
//---------------------------------------------------------------------
 
37825
bool ColladaParserAutoGen15Private::_preEnd__value____fx_samplerCUBE_type()
 
37826
{
 
37827
#ifdef GENERATEDSAXPARSER_VALIDATION
 
37828
    if ( mValidate )
 
37829
    {
 
37830
 
 
37831
        bool validationResult = _validateEnd__value____fx_samplerCUBE_type();
 
37832
        if ( !validationResult ) return false;
 
37833
 
 
37834
    } // validation
 
37835
#endif
 
37836
 
 
37837
    return true;
 
37838
}
 
37839
 
 
37840
//---------------------------------------------------------------------
 
37841
bool ColladaParserAutoGen15Private::_freeAttributes__value____fx_samplerCUBE_type( void* attributeData )
 
37842
{
 
37843
    return true;
 
37844
}
 
37845
 
 
37846
//---------------------------------------------------------------------
 
37847
const textureRECT__AttributeData textureRECT__AttributeData::DEFAULT = {0, 0};
 
37848
 
 
37849
//---------------------------------------------------------------------
 
37850
bool ColladaParserAutoGen15Private::_data__textureRECT( const ParserChar* text, size_t textLength )
 
37851
{
 
37852
    return true;
 
37853
}
 
37854
 
 
37855
//---------------------------------------------------------------------
 
37856
bool ColladaParserAutoGen15Private::_preBegin__textureRECT( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
37857
{
 
37858
#ifdef GENERATEDSAXPARSER_VALIDATION
 
37859
    if ( mValidate )
 
37860
    {
 
37861
 
 
37862
        bool validationResult = _validateBegin__textureRECT( attributes, attributeDataPtr, validationDataPtr );
 
37863
        if ( !validationResult ) return false;
 
37864
 
 
37865
    } // validation
 
37866
#endif
 
37867
 
 
37868
textureRECT__AttributeData* attributeData = newData<textureRECT__AttributeData>(attributeDataPtr);
 
37869
 
 
37870
const ParserChar** attributeArray = attributes.attributes;
 
37871
if ( attributeArray )
 
37872
{
 
37873
    while (true)
 
37874
    {
 
37875
        const ParserChar * attribute = *attributeArray;
 
37876
        if ( !attribute )
 
37877
            break;
 
37878
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
37879
        attributeArray++;
 
37880
        if ( !attributeArray )
 
37881
            return false;
 
37882
        const ParserChar* attributeValue = *attributeArray;
 
37883
        attributeArray++;
 
37884
 
 
37885
 
 
37886
    switch ( hash )
 
37887
    {
 
37888
    case HASH_ATTRIBUTE_INDEX:
 
37889
    {
 
37890
bool failed;
 
37891
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
37892
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
37893
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
37894
        HASH_ELEMENT_TEXTURERECT,
 
37895
        HASH_ATTRIBUTE_INDEX,
 
37896
        attributeValue))
 
37897
{
 
37898
    return false;
 
37899
}
 
37900
if ( !failed )
 
37901
    attributeData->present_attributes |= textureRECT__AttributeData::ATTRIBUTE_INDEX_PRESENT;
 
37902
 
 
37903
    break;
 
37904
    }
 
37905
    default:
 
37906
    {
 
37907
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_TEXTURERECT, attribute, attributeValue))
 
37908
            {return false;}
 
37909
    }
 
37910
    }
 
37911
    }
 
37912
}
 
37913
if ( (attributeData->present_attributes & textureRECT__AttributeData::ATTRIBUTE_INDEX_PRESENT) == 0 )
 
37914
{
 
37915
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_TEXTURERECT, HASH_ATTRIBUTE_INDEX, 0 ) )
 
37916
        return false;
 
37917
}
 
37918
 
 
37919
 
 
37920
    return true;
 
37921
}
 
37922
 
 
37923
//---------------------------------------------------------------------
 
37924
bool ColladaParserAutoGen15Private::_preEnd__textureRECT()
 
37925
{
 
37926
#ifdef GENERATEDSAXPARSER_VALIDATION
 
37927
    if ( mValidate )
 
37928
    {
 
37929
 
 
37930
        bool validationResult = _validateEnd__textureRECT();
 
37931
        if ( !validationResult ) return false;
 
37932
 
 
37933
    } // validation
 
37934
#endif
 
37935
 
 
37936
    return true;
 
37937
}
 
37938
 
 
37939
//---------------------------------------------------------------------
 
37940
bool ColladaParserAutoGen15Private::_freeAttributes__textureRECT( void* attributeData )
 
37941
{
 
37942
    textureRECT__AttributeData* typedAttributeData = static_cast<textureRECT__AttributeData*>(attributeData);
 
37943
 
 
37944
    typedAttributeData->~textureRECT__AttributeData();
 
37945
 
 
37946
    return true;
 
37947
}
 
37948
 
 
37949
//---------------------------------------------------------------------
 
37950
bool ColladaParserAutoGen15Private::_data__value____fx_samplerRECT_type( const ParserChar* text, size_t textLength )
 
37951
{
 
37952
    return true;
 
37953
}
 
37954
 
 
37955
//---------------------------------------------------------------------
 
37956
bool ColladaParserAutoGen15Private::_preBegin__value____fx_samplerRECT_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
37957
{
 
37958
#ifdef GENERATEDSAXPARSER_VALIDATION
 
37959
    if ( mValidate )
 
37960
    {
 
37961
 
 
37962
        bool validationResult = _validateBegin__value____fx_samplerRECT_type( attributes, attributeDataPtr, validationDataPtr );
 
37963
        if ( !validationResult ) return false;
 
37964
 
 
37965
    } // validation
 
37966
#endif
 
37967
 
 
37968
    return true;
 
37969
}
 
37970
 
 
37971
//---------------------------------------------------------------------
 
37972
bool ColladaParserAutoGen15Private::_preEnd__value____fx_samplerRECT_type()
 
37973
{
 
37974
#ifdef GENERATEDSAXPARSER_VALIDATION
 
37975
    if ( mValidate )
 
37976
    {
 
37977
 
 
37978
        bool validationResult = _validateEnd__value____fx_samplerRECT_type();
 
37979
        if ( !validationResult ) return false;
 
37980
 
 
37981
    } // validation
 
37982
#endif
 
37983
 
 
37984
    return true;
 
37985
}
 
37986
 
 
37987
//---------------------------------------------------------------------
 
37988
bool ColladaParserAutoGen15Private::_freeAttributes__value____fx_samplerRECT_type( void* attributeData )
 
37989
{
 
37990
    return true;
 
37991
}
 
37992
 
 
37993
//---------------------------------------------------------------------
 
37994
const textureDEPTH__AttributeData textureDEPTH__AttributeData::DEFAULT = {0, 0};
 
37995
 
 
37996
//---------------------------------------------------------------------
 
37997
bool ColladaParserAutoGen15Private::_data__textureDEPTH( const ParserChar* text, size_t textLength )
 
37998
{
 
37999
    return true;
 
38000
}
 
38001
 
 
38002
//---------------------------------------------------------------------
 
38003
bool ColladaParserAutoGen15Private::_preBegin__textureDEPTH( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
38004
{
 
38005
#ifdef GENERATEDSAXPARSER_VALIDATION
 
38006
    if ( mValidate )
 
38007
    {
 
38008
 
 
38009
        bool validationResult = _validateBegin__textureDEPTH( attributes, attributeDataPtr, validationDataPtr );
 
38010
        if ( !validationResult ) return false;
 
38011
 
 
38012
    } // validation
 
38013
#endif
 
38014
 
 
38015
textureDEPTH__AttributeData* attributeData = newData<textureDEPTH__AttributeData>(attributeDataPtr);
 
38016
 
 
38017
const ParserChar** attributeArray = attributes.attributes;
 
38018
if ( attributeArray )
 
38019
{
 
38020
    while (true)
 
38021
    {
 
38022
        const ParserChar * attribute = *attributeArray;
 
38023
        if ( !attribute )
 
38024
            break;
 
38025
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
38026
        attributeArray++;
 
38027
        if ( !attributeArray )
 
38028
            return false;
 
38029
        const ParserChar* attributeValue = *attributeArray;
 
38030
        attributeArray++;
 
38031
 
 
38032
 
 
38033
    switch ( hash )
 
38034
    {
 
38035
    case HASH_ATTRIBUTE_INDEX:
 
38036
    {
 
38037
bool failed;
 
38038
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
38039
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
38040
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
38041
        HASH_ELEMENT_TEXTUREDEPTH,
 
38042
        HASH_ATTRIBUTE_INDEX,
 
38043
        attributeValue))
 
38044
{
 
38045
    return false;
 
38046
}
 
38047
if ( !failed )
 
38048
    attributeData->present_attributes |= textureDEPTH__AttributeData::ATTRIBUTE_INDEX_PRESENT;
 
38049
 
 
38050
    break;
 
38051
    }
 
38052
    default:
 
38053
    {
 
38054
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_TEXTUREDEPTH, attribute, attributeValue))
 
38055
            {return false;}
 
38056
    }
 
38057
    }
 
38058
    }
 
38059
}
 
38060
if ( (attributeData->present_attributes & textureDEPTH__AttributeData::ATTRIBUTE_INDEX_PRESENT) == 0 )
 
38061
{
 
38062
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_TEXTUREDEPTH, HASH_ATTRIBUTE_INDEX, 0 ) )
 
38063
        return false;
 
38064
}
 
38065
 
 
38066
 
 
38067
    return true;
 
38068
}
 
38069
 
 
38070
//---------------------------------------------------------------------
 
38071
bool ColladaParserAutoGen15Private::_preEnd__textureDEPTH()
 
38072
{
 
38073
#ifdef GENERATEDSAXPARSER_VALIDATION
 
38074
    if ( mValidate )
 
38075
    {
 
38076
 
 
38077
        bool validationResult = _validateEnd__textureDEPTH();
 
38078
        if ( !validationResult ) return false;
 
38079
 
 
38080
    } // validation
 
38081
#endif
 
38082
 
 
38083
    return true;
 
38084
}
 
38085
 
 
38086
//---------------------------------------------------------------------
 
38087
bool ColladaParserAutoGen15Private::_freeAttributes__textureDEPTH( void* attributeData )
 
38088
{
 
38089
    textureDEPTH__AttributeData* typedAttributeData = static_cast<textureDEPTH__AttributeData*>(attributeData);
 
38090
 
 
38091
    typedAttributeData->~textureDEPTH__AttributeData();
 
38092
 
 
38093
    return true;
 
38094
}
 
38095
 
 
38096
//---------------------------------------------------------------------
 
38097
bool ColladaParserAutoGen15Private::_data__value____fx_samplerDEPTH_type( const ParserChar* text, size_t textLength )
 
38098
{
 
38099
    return true;
 
38100
}
 
38101
 
 
38102
//---------------------------------------------------------------------
 
38103
bool ColladaParserAutoGen15Private::_preBegin__value____fx_samplerDEPTH_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
38104
{
 
38105
#ifdef GENERATEDSAXPARSER_VALIDATION
 
38106
    if ( mValidate )
 
38107
    {
 
38108
 
 
38109
        bool validationResult = _validateBegin__value____fx_samplerDEPTH_type( attributes, attributeDataPtr, validationDataPtr );
 
38110
        if ( !validationResult ) return false;
 
38111
 
 
38112
    } // validation
 
38113
#endif
 
38114
 
 
38115
    return true;
 
38116
}
 
38117
 
 
38118
//---------------------------------------------------------------------
 
38119
bool ColladaParserAutoGen15Private::_preEnd__value____fx_samplerDEPTH_type()
 
38120
{
 
38121
#ifdef GENERATEDSAXPARSER_VALIDATION
 
38122
    if ( mValidate )
 
38123
    {
 
38124
 
 
38125
        bool validationResult = _validateEnd__value____fx_samplerDEPTH_type();
 
38126
        if ( !validationResult ) return false;
 
38127
 
 
38128
    } // validation
 
38129
#endif
 
38130
 
 
38131
    return true;
 
38132
}
 
38133
 
 
38134
//---------------------------------------------------------------------
 
38135
bool ColladaParserAutoGen15Private::_freeAttributes__value____fx_samplerDEPTH_type( void* attributeData )
 
38136
{
 
38137
    return true;
 
38138
}
 
38139
 
 
38140
//---------------------------------------------------------------------
 
38141
const texture1D_enable__AttributeData texture1D_enable__AttributeData::DEFAULT = {0, false, 0, 0};
 
38142
 
 
38143
//---------------------------------------------------------------------
 
38144
bool ColladaParserAutoGen15Private::_data__texture1D_enable( const ParserChar* text, size_t textLength )
 
38145
{
 
38146
    return true;
 
38147
}
 
38148
 
 
38149
//---------------------------------------------------------------------
 
38150
bool ColladaParserAutoGen15Private::_preBegin__texture1D_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
38151
{
 
38152
#ifdef GENERATEDSAXPARSER_VALIDATION
 
38153
    if ( mValidate )
 
38154
    {
 
38155
 
 
38156
        bool validationResult = _validateBegin__texture1D_enable( attributes, attributeDataPtr, validationDataPtr );
 
38157
        if ( !validationResult ) return false;
 
38158
 
 
38159
    } // validation
 
38160
#endif
 
38161
 
 
38162
texture1D_enable__AttributeData* attributeData = newData<texture1D_enable__AttributeData>(attributeDataPtr);
 
38163
 
 
38164
const ParserChar** attributeArray = attributes.attributes;
 
38165
if ( attributeArray )
 
38166
{
 
38167
    while (true)
 
38168
    {
 
38169
        const ParserChar * attribute = *attributeArray;
 
38170
        if ( !attribute )
 
38171
            break;
 
38172
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
38173
        attributeArray++;
 
38174
        if ( !attributeArray )
 
38175
            return false;
 
38176
        const ParserChar* attributeValue = *attributeArray;
 
38177
        attributeArray++;
 
38178
 
 
38179
 
 
38180
    switch ( hash )
 
38181
    {
 
38182
    case HASH_ATTRIBUTE_VALUE:
 
38183
    {
 
38184
bool failed;
 
38185
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
38186
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
38187
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
38188
        HASH_ELEMENT_TEXTURE1D_ENABLE,
 
38189
        HASH_ATTRIBUTE_VALUE,
 
38190
        attributeValue))
 
38191
{
 
38192
    return false;
 
38193
}
 
38194
 
 
38195
    break;
 
38196
    }
 
38197
    case HASH_ATTRIBUTE_PARAM:
 
38198
    {
 
38199
 
 
38200
attributeData->param = attributeValue;
 
38201
#ifdef GENERATEDSAXPARSER_VALIDATION
 
38202
    if ( mValidate )
 
38203
    {
 
38204
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
38205
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
38206
    {
 
38207
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
38208
            simpleTypeValidationResult,
 
38209
            HASH_ELEMENT_TEXTURE1D_ENABLE,
 
38210
            HASH_ATTRIBUTE_PARAM,
 
38211
            attributeValue) )
 
38212
        {
 
38213
            return false;
 
38214
        }
 
38215
    }
 
38216
    } // validation
 
38217
#endif
 
38218
 
 
38219
    break;
 
38220
    }
 
38221
    case HASH_ATTRIBUTE_INDEX:
 
38222
    {
 
38223
bool failed;
 
38224
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
38225
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
38226
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
38227
        HASH_ELEMENT_TEXTURE1D_ENABLE,
 
38228
        HASH_ATTRIBUTE_INDEX,
 
38229
        attributeValue))
 
38230
{
 
38231
    return false;
 
38232
}
 
38233
if ( !failed )
 
38234
    attributeData->present_attributes |= texture1D_enable__AttributeData::ATTRIBUTE_INDEX_PRESENT;
 
38235
 
 
38236
    break;
 
38237
    }
 
38238
    default:
 
38239
    {
 
38240
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_TEXTURE1D_ENABLE, attribute, attributeValue))
 
38241
            {return false;}
 
38242
    }
 
38243
    }
 
38244
    }
 
38245
}
 
38246
 
 
38247
 
 
38248
    return true;
 
38249
}
 
38250
 
 
38251
//---------------------------------------------------------------------
 
38252
bool ColladaParserAutoGen15Private::_preEnd__texture1D_enable()
 
38253
{
 
38254
#ifdef GENERATEDSAXPARSER_VALIDATION
 
38255
    if ( mValidate )
 
38256
    {
 
38257
 
 
38258
        bool validationResult = _validateEnd__texture1D_enable();
 
38259
        if ( !validationResult ) return false;
 
38260
 
 
38261
    } // validation
 
38262
#endif
 
38263
 
 
38264
    return true;
 
38265
}
 
38266
 
 
38267
//---------------------------------------------------------------------
 
38268
bool ColladaParserAutoGen15Private::_freeAttributes__texture1D_enable( void* attributeData )
 
38269
{
 
38270
    texture1D_enable__AttributeData* typedAttributeData = static_cast<texture1D_enable__AttributeData*>(attributeData);
 
38271
 
 
38272
    typedAttributeData->~texture1D_enable__AttributeData();
 
38273
 
 
38274
    return true;
 
38275
}
 
38276
 
 
38277
//---------------------------------------------------------------------
 
38278
const texture2D_enable__AttributeData texture2D_enable__AttributeData::DEFAULT = {0, false, 0, 0};
 
38279
 
 
38280
//---------------------------------------------------------------------
 
38281
bool ColladaParserAutoGen15Private::_data__texture2D_enable( const ParserChar* text, size_t textLength )
 
38282
{
 
38283
    return true;
 
38284
}
 
38285
 
 
38286
//---------------------------------------------------------------------
 
38287
bool ColladaParserAutoGen15Private::_preBegin__texture2D_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
38288
{
 
38289
#ifdef GENERATEDSAXPARSER_VALIDATION
 
38290
    if ( mValidate )
 
38291
    {
 
38292
 
 
38293
        bool validationResult = _validateBegin__texture2D_enable( attributes, attributeDataPtr, validationDataPtr );
 
38294
        if ( !validationResult ) return false;
 
38295
 
 
38296
    } // validation
 
38297
#endif
 
38298
 
 
38299
texture2D_enable__AttributeData* attributeData = newData<texture2D_enable__AttributeData>(attributeDataPtr);
 
38300
 
 
38301
const ParserChar** attributeArray = attributes.attributes;
 
38302
if ( attributeArray )
 
38303
{
 
38304
    while (true)
 
38305
    {
 
38306
        const ParserChar * attribute = *attributeArray;
 
38307
        if ( !attribute )
 
38308
            break;
 
38309
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
38310
        attributeArray++;
 
38311
        if ( !attributeArray )
 
38312
            return false;
 
38313
        const ParserChar* attributeValue = *attributeArray;
 
38314
        attributeArray++;
 
38315
 
 
38316
 
 
38317
    switch ( hash )
 
38318
    {
 
38319
    case HASH_ATTRIBUTE_VALUE:
 
38320
    {
 
38321
bool failed;
 
38322
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
38323
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
38324
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
38325
        HASH_ELEMENT_TEXTURE2D_ENABLE,
 
38326
        HASH_ATTRIBUTE_VALUE,
 
38327
        attributeValue))
 
38328
{
 
38329
    return false;
 
38330
}
 
38331
 
 
38332
    break;
 
38333
    }
 
38334
    case HASH_ATTRIBUTE_PARAM:
 
38335
    {
 
38336
 
 
38337
attributeData->param = attributeValue;
 
38338
#ifdef GENERATEDSAXPARSER_VALIDATION
 
38339
    if ( mValidate )
 
38340
    {
 
38341
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
38342
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
38343
    {
 
38344
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
38345
            simpleTypeValidationResult,
 
38346
            HASH_ELEMENT_TEXTURE2D_ENABLE,
 
38347
            HASH_ATTRIBUTE_PARAM,
 
38348
            attributeValue) )
 
38349
        {
 
38350
            return false;
 
38351
        }
 
38352
    }
 
38353
    } // validation
 
38354
#endif
 
38355
 
 
38356
    break;
 
38357
    }
 
38358
    case HASH_ATTRIBUTE_INDEX:
 
38359
    {
 
38360
bool failed;
 
38361
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
38362
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
38363
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
38364
        HASH_ELEMENT_TEXTURE2D_ENABLE,
 
38365
        HASH_ATTRIBUTE_INDEX,
 
38366
        attributeValue))
 
38367
{
 
38368
    return false;
 
38369
}
 
38370
if ( !failed )
 
38371
    attributeData->present_attributes |= texture2D_enable__AttributeData::ATTRIBUTE_INDEX_PRESENT;
 
38372
 
 
38373
    break;
 
38374
    }
 
38375
    default:
 
38376
    {
 
38377
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_TEXTURE2D_ENABLE, attribute, attributeValue))
 
38378
            {return false;}
 
38379
    }
 
38380
    }
 
38381
    }
 
38382
}
 
38383
 
 
38384
 
 
38385
    return true;
 
38386
}
 
38387
 
 
38388
//---------------------------------------------------------------------
 
38389
bool ColladaParserAutoGen15Private::_preEnd__texture2D_enable()
 
38390
{
 
38391
#ifdef GENERATEDSAXPARSER_VALIDATION
 
38392
    if ( mValidate )
 
38393
    {
 
38394
 
 
38395
        bool validationResult = _validateEnd__texture2D_enable();
 
38396
        if ( !validationResult ) return false;
 
38397
 
 
38398
    } // validation
 
38399
#endif
 
38400
 
 
38401
    return true;
 
38402
}
 
38403
 
 
38404
//---------------------------------------------------------------------
 
38405
bool ColladaParserAutoGen15Private::_freeAttributes__texture2D_enable( void* attributeData )
 
38406
{
 
38407
    texture2D_enable__AttributeData* typedAttributeData = static_cast<texture2D_enable__AttributeData*>(attributeData);
 
38408
 
 
38409
    typedAttributeData->~texture2D_enable__AttributeData();
 
38410
 
 
38411
    return true;
 
38412
}
 
38413
 
 
38414
//---------------------------------------------------------------------
 
38415
const texture3D_enable__AttributeData texture3D_enable__AttributeData::DEFAULT = {0, false, 0, 0};
 
38416
 
 
38417
//---------------------------------------------------------------------
 
38418
bool ColladaParserAutoGen15Private::_data__texture3D_enable( const ParserChar* text, size_t textLength )
 
38419
{
 
38420
    return true;
 
38421
}
 
38422
 
 
38423
//---------------------------------------------------------------------
 
38424
bool ColladaParserAutoGen15Private::_preBegin__texture3D_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
38425
{
 
38426
#ifdef GENERATEDSAXPARSER_VALIDATION
 
38427
    if ( mValidate )
 
38428
    {
 
38429
 
 
38430
        bool validationResult = _validateBegin__texture3D_enable( attributes, attributeDataPtr, validationDataPtr );
 
38431
        if ( !validationResult ) return false;
 
38432
 
 
38433
    } // validation
 
38434
#endif
 
38435
 
 
38436
texture3D_enable__AttributeData* attributeData = newData<texture3D_enable__AttributeData>(attributeDataPtr);
 
38437
 
 
38438
const ParserChar** attributeArray = attributes.attributes;
 
38439
if ( attributeArray )
 
38440
{
 
38441
    while (true)
 
38442
    {
 
38443
        const ParserChar * attribute = *attributeArray;
 
38444
        if ( !attribute )
 
38445
            break;
 
38446
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
38447
        attributeArray++;
 
38448
        if ( !attributeArray )
 
38449
            return false;
 
38450
        const ParserChar* attributeValue = *attributeArray;
 
38451
        attributeArray++;
 
38452
 
 
38453
 
 
38454
    switch ( hash )
 
38455
    {
 
38456
    case HASH_ATTRIBUTE_VALUE:
 
38457
    {
 
38458
bool failed;
 
38459
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
38460
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
38461
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
38462
        HASH_ELEMENT_TEXTURE3D_ENABLE,
 
38463
        HASH_ATTRIBUTE_VALUE,
 
38464
        attributeValue))
 
38465
{
 
38466
    return false;
 
38467
}
 
38468
 
 
38469
    break;
 
38470
    }
 
38471
    case HASH_ATTRIBUTE_PARAM:
 
38472
    {
 
38473
 
 
38474
attributeData->param = attributeValue;
 
38475
#ifdef GENERATEDSAXPARSER_VALIDATION
 
38476
    if ( mValidate )
 
38477
    {
 
38478
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
38479
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
38480
    {
 
38481
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
38482
            simpleTypeValidationResult,
 
38483
            HASH_ELEMENT_TEXTURE3D_ENABLE,
 
38484
            HASH_ATTRIBUTE_PARAM,
 
38485
            attributeValue) )
 
38486
        {
 
38487
            return false;
 
38488
        }
 
38489
    }
 
38490
    } // validation
 
38491
#endif
 
38492
 
 
38493
    break;
 
38494
    }
 
38495
    case HASH_ATTRIBUTE_INDEX:
 
38496
    {
 
38497
bool failed;
 
38498
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
38499
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
38500
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
38501
        HASH_ELEMENT_TEXTURE3D_ENABLE,
 
38502
        HASH_ATTRIBUTE_INDEX,
 
38503
        attributeValue))
 
38504
{
 
38505
    return false;
 
38506
}
 
38507
if ( !failed )
 
38508
    attributeData->present_attributes |= texture3D_enable__AttributeData::ATTRIBUTE_INDEX_PRESENT;
 
38509
 
 
38510
    break;
 
38511
    }
 
38512
    default:
 
38513
    {
 
38514
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_TEXTURE3D_ENABLE, attribute, attributeValue))
 
38515
            {return false;}
 
38516
    }
 
38517
    }
 
38518
    }
 
38519
}
 
38520
 
 
38521
 
 
38522
    return true;
 
38523
}
 
38524
 
 
38525
//---------------------------------------------------------------------
 
38526
bool ColladaParserAutoGen15Private::_preEnd__texture3D_enable()
 
38527
{
 
38528
#ifdef GENERATEDSAXPARSER_VALIDATION
 
38529
    if ( mValidate )
 
38530
    {
 
38531
 
 
38532
        bool validationResult = _validateEnd__texture3D_enable();
 
38533
        if ( !validationResult ) return false;
 
38534
 
 
38535
    } // validation
 
38536
#endif
 
38537
 
 
38538
    return true;
 
38539
}
 
38540
 
 
38541
//---------------------------------------------------------------------
 
38542
bool ColladaParserAutoGen15Private::_freeAttributes__texture3D_enable( void* attributeData )
 
38543
{
 
38544
    texture3D_enable__AttributeData* typedAttributeData = static_cast<texture3D_enable__AttributeData*>(attributeData);
 
38545
 
 
38546
    typedAttributeData->~texture3D_enable__AttributeData();
 
38547
 
 
38548
    return true;
 
38549
}
 
38550
 
 
38551
//---------------------------------------------------------------------
 
38552
const textureCUBE_enable__AttributeData textureCUBE_enable__AttributeData::DEFAULT = {0, false, 0, 0};
 
38553
 
 
38554
//---------------------------------------------------------------------
 
38555
bool ColladaParserAutoGen15Private::_data__textureCUBE_enable( const ParserChar* text, size_t textLength )
 
38556
{
 
38557
    return true;
 
38558
}
 
38559
 
 
38560
//---------------------------------------------------------------------
 
38561
bool ColladaParserAutoGen15Private::_preBegin__textureCUBE_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
38562
{
 
38563
#ifdef GENERATEDSAXPARSER_VALIDATION
 
38564
    if ( mValidate )
 
38565
    {
 
38566
 
 
38567
        bool validationResult = _validateBegin__textureCUBE_enable( attributes, attributeDataPtr, validationDataPtr );
 
38568
        if ( !validationResult ) return false;
 
38569
 
 
38570
    } // validation
 
38571
#endif
 
38572
 
 
38573
textureCUBE_enable__AttributeData* attributeData = newData<textureCUBE_enable__AttributeData>(attributeDataPtr);
 
38574
 
 
38575
const ParserChar** attributeArray = attributes.attributes;
 
38576
if ( attributeArray )
 
38577
{
 
38578
    while (true)
 
38579
    {
 
38580
        const ParserChar * attribute = *attributeArray;
 
38581
        if ( !attribute )
 
38582
            break;
 
38583
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
38584
        attributeArray++;
 
38585
        if ( !attributeArray )
 
38586
            return false;
 
38587
        const ParserChar* attributeValue = *attributeArray;
 
38588
        attributeArray++;
 
38589
 
 
38590
 
 
38591
    switch ( hash )
 
38592
    {
 
38593
    case HASH_ATTRIBUTE_VALUE:
 
38594
    {
 
38595
bool failed;
 
38596
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
38597
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
38598
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
38599
        HASH_ELEMENT_TEXTURECUBE_ENABLE,
 
38600
        HASH_ATTRIBUTE_VALUE,
 
38601
        attributeValue))
 
38602
{
 
38603
    return false;
 
38604
}
 
38605
 
 
38606
    break;
 
38607
    }
 
38608
    case HASH_ATTRIBUTE_PARAM:
 
38609
    {
 
38610
 
 
38611
attributeData->param = attributeValue;
 
38612
#ifdef GENERATEDSAXPARSER_VALIDATION
 
38613
    if ( mValidate )
 
38614
    {
 
38615
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
38616
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
38617
    {
 
38618
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
38619
            simpleTypeValidationResult,
 
38620
            HASH_ELEMENT_TEXTURECUBE_ENABLE,
 
38621
            HASH_ATTRIBUTE_PARAM,
 
38622
            attributeValue) )
 
38623
        {
 
38624
            return false;
 
38625
        }
 
38626
    }
 
38627
    } // validation
 
38628
#endif
 
38629
 
 
38630
    break;
 
38631
    }
 
38632
    case HASH_ATTRIBUTE_INDEX:
 
38633
    {
 
38634
bool failed;
 
38635
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
38636
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
38637
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
38638
        HASH_ELEMENT_TEXTURECUBE_ENABLE,
 
38639
        HASH_ATTRIBUTE_INDEX,
 
38640
        attributeValue))
 
38641
{
 
38642
    return false;
 
38643
}
 
38644
if ( !failed )
 
38645
    attributeData->present_attributes |= textureCUBE_enable__AttributeData::ATTRIBUTE_INDEX_PRESENT;
 
38646
 
 
38647
    break;
 
38648
    }
 
38649
    default:
 
38650
    {
 
38651
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_TEXTURECUBE_ENABLE, attribute, attributeValue))
 
38652
            {return false;}
 
38653
    }
 
38654
    }
 
38655
    }
 
38656
}
 
38657
 
 
38658
 
 
38659
    return true;
 
38660
}
 
38661
 
 
38662
//---------------------------------------------------------------------
 
38663
bool ColladaParserAutoGen15Private::_preEnd__textureCUBE_enable()
 
38664
{
 
38665
#ifdef GENERATEDSAXPARSER_VALIDATION
 
38666
    if ( mValidate )
 
38667
    {
 
38668
 
 
38669
        bool validationResult = _validateEnd__textureCUBE_enable();
 
38670
        if ( !validationResult ) return false;
 
38671
 
 
38672
    } // validation
 
38673
#endif
 
38674
 
 
38675
    return true;
 
38676
}
 
38677
 
 
38678
//---------------------------------------------------------------------
 
38679
bool ColladaParserAutoGen15Private::_freeAttributes__textureCUBE_enable( void* attributeData )
 
38680
{
 
38681
    textureCUBE_enable__AttributeData* typedAttributeData = static_cast<textureCUBE_enable__AttributeData*>(attributeData);
 
38682
 
 
38683
    typedAttributeData->~textureCUBE_enable__AttributeData();
 
38684
 
 
38685
    return true;
 
38686
}
 
38687
 
 
38688
//---------------------------------------------------------------------
 
38689
const textureRECT_enable__AttributeData textureRECT_enable__AttributeData::DEFAULT = {0, false, 0, 0};
 
38690
 
 
38691
//---------------------------------------------------------------------
 
38692
bool ColladaParserAutoGen15Private::_data__textureRECT_enable( const ParserChar* text, size_t textLength )
 
38693
{
 
38694
    return true;
 
38695
}
 
38696
 
 
38697
//---------------------------------------------------------------------
 
38698
bool ColladaParserAutoGen15Private::_preBegin__textureRECT_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
38699
{
 
38700
#ifdef GENERATEDSAXPARSER_VALIDATION
 
38701
    if ( mValidate )
 
38702
    {
 
38703
 
 
38704
        bool validationResult = _validateBegin__textureRECT_enable( attributes, attributeDataPtr, validationDataPtr );
 
38705
        if ( !validationResult ) return false;
 
38706
 
 
38707
    } // validation
 
38708
#endif
 
38709
 
 
38710
textureRECT_enable__AttributeData* attributeData = newData<textureRECT_enable__AttributeData>(attributeDataPtr);
 
38711
 
 
38712
const ParserChar** attributeArray = attributes.attributes;
 
38713
if ( attributeArray )
 
38714
{
 
38715
    while (true)
 
38716
    {
 
38717
        const ParserChar * attribute = *attributeArray;
 
38718
        if ( !attribute )
 
38719
            break;
 
38720
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
38721
        attributeArray++;
 
38722
        if ( !attributeArray )
 
38723
            return false;
 
38724
        const ParserChar* attributeValue = *attributeArray;
 
38725
        attributeArray++;
 
38726
 
 
38727
 
 
38728
    switch ( hash )
 
38729
    {
 
38730
    case HASH_ATTRIBUTE_VALUE:
 
38731
    {
 
38732
bool failed;
 
38733
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
38734
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
38735
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
38736
        HASH_ELEMENT_TEXTURERECT_ENABLE,
 
38737
        HASH_ATTRIBUTE_VALUE,
 
38738
        attributeValue))
 
38739
{
 
38740
    return false;
 
38741
}
 
38742
 
 
38743
    break;
 
38744
    }
 
38745
    case HASH_ATTRIBUTE_PARAM:
 
38746
    {
 
38747
 
 
38748
attributeData->param = attributeValue;
 
38749
#ifdef GENERATEDSAXPARSER_VALIDATION
 
38750
    if ( mValidate )
 
38751
    {
 
38752
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
38753
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
38754
    {
 
38755
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
38756
            simpleTypeValidationResult,
 
38757
            HASH_ELEMENT_TEXTURERECT_ENABLE,
 
38758
            HASH_ATTRIBUTE_PARAM,
 
38759
            attributeValue) )
 
38760
        {
 
38761
            return false;
 
38762
        }
 
38763
    }
 
38764
    } // validation
 
38765
#endif
 
38766
 
 
38767
    break;
 
38768
    }
 
38769
    case HASH_ATTRIBUTE_INDEX:
 
38770
    {
 
38771
bool failed;
 
38772
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
38773
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
38774
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
38775
        HASH_ELEMENT_TEXTURERECT_ENABLE,
 
38776
        HASH_ATTRIBUTE_INDEX,
 
38777
        attributeValue))
 
38778
{
 
38779
    return false;
 
38780
}
 
38781
if ( !failed )
 
38782
    attributeData->present_attributes |= textureRECT_enable__AttributeData::ATTRIBUTE_INDEX_PRESENT;
 
38783
 
 
38784
    break;
 
38785
    }
 
38786
    default:
 
38787
    {
 
38788
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_TEXTURERECT_ENABLE, attribute, attributeValue))
 
38789
            {return false;}
 
38790
    }
 
38791
    }
 
38792
    }
 
38793
}
 
38794
 
 
38795
 
 
38796
    return true;
 
38797
}
 
38798
 
 
38799
//---------------------------------------------------------------------
 
38800
bool ColladaParserAutoGen15Private::_preEnd__textureRECT_enable()
 
38801
{
 
38802
#ifdef GENERATEDSAXPARSER_VALIDATION
 
38803
    if ( mValidate )
 
38804
    {
 
38805
 
 
38806
        bool validationResult = _validateEnd__textureRECT_enable();
 
38807
        if ( !validationResult ) return false;
 
38808
 
 
38809
    } // validation
 
38810
#endif
 
38811
 
 
38812
    return true;
 
38813
}
 
38814
 
 
38815
//---------------------------------------------------------------------
 
38816
bool ColladaParserAutoGen15Private::_freeAttributes__textureRECT_enable( void* attributeData )
 
38817
{
 
38818
    textureRECT_enable__AttributeData* typedAttributeData = static_cast<textureRECT_enable__AttributeData*>(attributeData);
 
38819
 
 
38820
    typedAttributeData->~textureRECT_enable__AttributeData();
 
38821
 
 
38822
    return true;
 
38823
}
 
38824
 
 
38825
//---------------------------------------------------------------------
 
38826
const textureDEPTH_enable__AttributeData textureDEPTH_enable__AttributeData::DEFAULT = {0, false, 0, 0};
 
38827
 
 
38828
//---------------------------------------------------------------------
 
38829
bool ColladaParserAutoGen15Private::_data__textureDEPTH_enable( const ParserChar* text, size_t textLength )
 
38830
{
 
38831
    return true;
 
38832
}
 
38833
 
 
38834
//---------------------------------------------------------------------
 
38835
bool ColladaParserAutoGen15Private::_preBegin__textureDEPTH_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
38836
{
 
38837
#ifdef GENERATEDSAXPARSER_VALIDATION
 
38838
    if ( mValidate )
 
38839
    {
 
38840
 
 
38841
        bool validationResult = _validateBegin__textureDEPTH_enable( attributes, attributeDataPtr, validationDataPtr );
 
38842
        if ( !validationResult ) return false;
 
38843
 
 
38844
    } // validation
 
38845
#endif
 
38846
 
 
38847
textureDEPTH_enable__AttributeData* attributeData = newData<textureDEPTH_enable__AttributeData>(attributeDataPtr);
 
38848
 
 
38849
const ParserChar** attributeArray = attributes.attributes;
 
38850
if ( attributeArray )
 
38851
{
 
38852
    while (true)
 
38853
    {
 
38854
        const ParserChar * attribute = *attributeArray;
 
38855
        if ( !attribute )
 
38856
            break;
 
38857
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
38858
        attributeArray++;
 
38859
        if ( !attributeArray )
 
38860
            return false;
 
38861
        const ParserChar* attributeValue = *attributeArray;
 
38862
        attributeArray++;
 
38863
 
 
38864
 
 
38865
    switch ( hash )
 
38866
    {
 
38867
    case HASH_ATTRIBUTE_VALUE:
 
38868
    {
 
38869
bool failed;
 
38870
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
38871
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
38872
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
38873
        HASH_ELEMENT_TEXTUREDEPTH_ENABLE,
 
38874
        HASH_ATTRIBUTE_VALUE,
 
38875
        attributeValue))
 
38876
{
 
38877
    return false;
 
38878
}
 
38879
 
 
38880
    break;
 
38881
    }
 
38882
    case HASH_ATTRIBUTE_PARAM:
 
38883
    {
 
38884
 
 
38885
attributeData->param = attributeValue;
 
38886
#ifdef GENERATEDSAXPARSER_VALIDATION
 
38887
    if ( mValidate )
 
38888
    {
 
38889
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
38890
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
38891
    {
 
38892
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
38893
            simpleTypeValidationResult,
 
38894
            HASH_ELEMENT_TEXTUREDEPTH_ENABLE,
 
38895
            HASH_ATTRIBUTE_PARAM,
 
38896
            attributeValue) )
 
38897
        {
 
38898
            return false;
 
38899
        }
 
38900
    }
 
38901
    } // validation
 
38902
#endif
 
38903
 
 
38904
    break;
 
38905
    }
 
38906
    case HASH_ATTRIBUTE_INDEX:
 
38907
    {
 
38908
bool failed;
 
38909
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
38910
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
38911
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
38912
        HASH_ELEMENT_TEXTUREDEPTH_ENABLE,
 
38913
        HASH_ATTRIBUTE_INDEX,
 
38914
        attributeValue))
 
38915
{
 
38916
    return false;
 
38917
}
 
38918
if ( !failed )
 
38919
    attributeData->present_attributes |= textureDEPTH_enable__AttributeData::ATTRIBUTE_INDEX_PRESENT;
 
38920
 
 
38921
    break;
 
38922
    }
 
38923
    default:
 
38924
    {
 
38925
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_TEXTUREDEPTH_ENABLE, attribute, attributeValue))
 
38926
            {return false;}
 
38927
    }
 
38928
    }
 
38929
    }
 
38930
}
 
38931
 
 
38932
 
 
38933
    return true;
 
38934
}
 
38935
 
 
38936
//---------------------------------------------------------------------
 
38937
bool ColladaParserAutoGen15Private::_preEnd__textureDEPTH_enable()
 
38938
{
 
38939
#ifdef GENERATEDSAXPARSER_VALIDATION
 
38940
    if ( mValidate )
 
38941
    {
 
38942
 
 
38943
        bool validationResult = _validateEnd__textureDEPTH_enable();
 
38944
        if ( !validationResult ) return false;
 
38945
 
 
38946
    } // validation
 
38947
#endif
 
38948
 
 
38949
    return true;
 
38950
}
 
38951
 
 
38952
//---------------------------------------------------------------------
 
38953
bool ColladaParserAutoGen15Private::_freeAttributes__textureDEPTH_enable( void* attributeData )
 
38954
{
 
38955
    textureDEPTH_enable__AttributeData* typedAttributeData = static_cast<textureDEPTH_enable__AttributeData*>(attributeData);
 
38956
 
 
38957
    typedAttributeData->~textureDEPTH_enable__AttributeData();
 
38958
 
 
38959
    return true;
 
38960
}
 
38961
 
 
38962
//---------------------------------------------------------------------
 
38963
const texture_env_color__AttributeData texture_env_color__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<float>(), 0, 0};
 
38964
 
 
38965
//---------------------------------------------------------------------
 
38966
bool ColladaParserAutoGen15Private::_data__texture_env_color( const ParserChar* text, size_t textLength )
 
38967
{
 
38968
    return true;
 
38969
}
 
38970
 
 
38971
//---------------------------------------------------------------------
 
38972
bool ColladaParserAutoGen15Private::_preBegin__texture_env_color( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
38973
{
 
38974
#ifdef GENERATEDSAXPARSER_VALIDATION
 
38975
    if ( mValidate )
 
38976
    {
 
38977
 
 
38978
        bool validationResult = _validateBegin__texture_env_color( attributes, attributeDataPtr, validationDataPtr );
 
38979
        if ( !validationResult ) return false;
 
38980
 
 
38981
    } // validation
 
38982
#endif
 
38983
 
 
38984
texture_env_color__AttributeData* attributeData = newData<texture_env_color__AttributeData>(attributeDataPtr);
 
38985
 
 
38986
const ParserChar** attributeArray = attributes.attributes;
 
38987
if ( attributeArray )
 
38988
{
 
38989
    while (true)
 
38990
    {
 
38991
        const ParserChar * attribute = *attributeArray;
 
38992
        if ( !attribute )
 
38993
            break;
 
38994
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
38995
        attributeArray++;
 
38996
        if ( !attributeArray )
 
38997
            return false;
 
38998
        const ParserChar* attributeValue = *attributeArray;
 
38999
        attributeArray++;
 
39000
 
 
39001
 
 
39002
    switch ( hash )
 
39003
    {
 
39004
    case HASH_ATTRIBUTE_VALUE:
 
39005
    {
 
39006
bool failed;
 
39007
#ifdef GENERATEDSAXPARSER_VALIDATION
 
39008
    if ( mValidate )
 
39009
    {
 
39010
failed = !characterData2FloatList(attributeValue, attributeData->value, 0, HASH_ELEMENT_TEXTURE_ENV_COLOR, HASH_ATTRIBUTE_VALUE);
 
39011
    }
 
39012
    else
 
39013
    {
 
39014
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
39015
    }
 
39016
#else
 
39017
    {
 
39018
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
39019
    } // validation
 
39020
#endif
 
39021
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
39022
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
39023
        HASH_ELEMENT_TEXTURE_ENV_COLOR,
 
39024
        HASH_ATTRIBUTE_VALUE,
 
39025
        attributeValue))
 
39026
{
 
39027
    return false;
 
39028
}
 
39029
#ifdef GENERATEDSAXPARSER_VALIDATION
 
39030
    if ( mValidate )
 
39031
    {
 
39032
    ParserError::ErrorType simpleTypeValidationResult = validate__float4_type(attributeData->value.data, attributeData->value.size);
 
39033
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
39034
    {
 
39035
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
39036
            simpleTypeValidationResult,
 
39037
            HASH_ELEMENT_TEXTURE_ENV_COLOR,
 
39038
            HASH_ATTRIBUTE_VALUE,
 
39039
            attributeValue) )
 
39040
        {
 
39041
            return false;
 
39042
        }
 
39043
    }
 
39044
    } // validation
 
39045
#endif
 
39046
 
 
39047
if ( !failed )
 
39048
    attributeData->present_attributes |= texture_env_color__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
39049
 
 
39050
    break;
 
39051
    }
 
39052
    case HASH_ATTRIBUTE_PARAM:
 
39053
    {
 
39054
 
 
39055
attributeData->param = attributeValue;
 
39056
#ifdef GENERATEDSAXPARSER_VALIDATION
 
39057
    if ( mValidate )
 
39058
    {
 
39059
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
39060
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
39061
    {
 
39062
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
39063
            simpleTypeValidationResult,
 
39064
            HASH_ELEMENT_TEXTURE_ENV_COLOR,
 
39065
            HASH_ATTRIBUTE_PARAM,
 
39066
            attributeValue) )
 
39067
        {
 
39068
            return false;
 
39069
        }
 
39070
    }
 
39071
    } // validation
 
39072
#endif
 
39073
 
 
39074
    break;
 
39075
    }
 
39076
    case HASH_ATTRIBUTE_INDEX:
 
39077
    {
 
39078
bool failed;
 
39079
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
39080
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
39081
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
39082
        HASH_ELEMENT_TEXTURE_ENV_COLOR,
 
39083
        HASH_ATTRIBUTE_INDEX,
 
39084
        attributeValue))
 
39085
{
 
39086
    return false;
 
39087
}
 
39088
if ( !failed )
 
39089
    attributeData->present_attributes |= texture_env_color__AttributeData::ATTRIBUTE_INDEX_PRESENT;
 
39090
 
 
39091
    break;
 
39092
    }
 
39093
    default:
 
39094
    {
 
39095
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_TEXTURE_ENV_COLOR, attribute, attributeValue))
 
39096
            {return false;}
 
39097
    }
 
39098
    }
 
39099
    }
 
39100
}
 
39101
if ((attributeData->present_attributes & texture_env_color__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
39102
{
 
39103
    attributeData->value = GeneratedSaxParser::XSList<float>();
 
39104
}
 
39105
 
 
39106
 
 
39107
    return true;
 
39108
}
 
39109
 
 
39110
//---------------------------------------------------------------------
 
39111
bool ColladaParserAutoGen15Private::_preEnd__texture_env_color()
 
39112
{
 
39113
#ifdef GENERATEDSAXPARSER_VALIDATION
 
39114
    if ( mValidate )
 
39115
    {
 
39116
 
 
39117
        bool validationResult = _validateEnd__texture_env_color();
 
39118
        if ( !validationResult ) return false;
 
39119
 
 
39120
    } // validation
 
39121
#endif
 
39122
 
 
39123
    return true;
 
39124
}
 
39125
 
 
39126
//---------------------------------------------------------------------
 
39127
bool ColladaParserAutoGen15Private::_freeAttributes__texture_env_color( void* attributeData )
 
39128
{
 
39129
    texture_env_color__AttributeData* typedAttributeData = static_cast<texture_env_color__AttributeData*>(attributeData);
 
39130
    if (typedAttributeData->value.data)
 
39131
    {
 
39132
        mStackMemoryManager.deleteObject();
 
39133
    }
 
39134
 
 
39135
 
 
39136
    typedAttributeData->~texture_env_color__AttributeData();
 
39137
 
 
39138
    return true;
 
39139
}
 
39140
 
 
39141
//---------------------------------------------------------------------
 
39142
const texture_env_mode__AttributeData texture_env_mode__AttributeData::DEFAULT = {0, 0, 0, 0};
 
39143
 
 
39144
//---------------------------------------------------------------------
 
39145
bool ColladaParserAutoGen15Private::_data__texture_env_mode( const ParserChar* text, size_t textLength )
 
39146
{
 
39147
    return true;
 
39148
}
 
39149
 
 
39150
//---------------------------------------------------------------------
 
39151
bool ColladaParserAutoGen15Private::_preBegin__texture_env_mode( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
39152
{
 
39153
#ifdef GENERATEDSAXPARSER_VALIDATION
 
39154
    if ( mValidate )
 
39155
    {
 
39156
 
 
39157
        bool validationResult = _validateBegin__texture_env_mode( attributes, attributeDataPtr, validationDataPtr );
 
39158
        if ( !validationResult ) return false;
 
39159
 
 
39160
    } // validation
 
39161
#endif
 
39162
 
 
39163
texture_env_mode__AttributeData* attributeData = newData<texture_env_mode__AttributeData>(attributeDataPtr);
 
39164
 
 
39165
const ParserChar** attributeArray = attributes.attributes;
 
39166
if ( attributeArray )
 
39167
{
 
39168
    while (true)
 
39169
    {
 
39170
        const ParserChar * attribute = *attributeArray;
 
39171
        if ( !attribute )
 
39172
            break;
 
39173
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
39174
        attributeArray++;
 
39175
        if ( !attributeArray )
 
39176
            return false;
 
39177
        const ParserChar* attributeValue = *attributeArray;
 
39178
        attributeArray++;
 
39179
 
 
39180
 
 
39181
    switch ( hash )
 
39182
    {
 
39183
    case HASH_ATTRIBUTE_VALUE:
 
39184
    {
 
39185
 
 
39186
attributeData->value = attributeValue;
 
39187
 
 
39188
    break;
 
39189
    }
 
39190
    case HASH_ATTRIBUTE_PARAM:
 
39191
    {
 
39192
 
 
39193
attributeData->param = attributeValue;
 
39194
#ifdef GENERATEDSAXPARSER_VALIDATION
 
39195
    if ( mValidate )
 
39196
    {
 
39197
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
39198
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
39199
    {
 
39200
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
39201
            simpleTypeValidationResult,
 
39202
            HASH_ELEMENT_TEXTURE_ENV_MODE,
 
39203
            HASH_ATTRIBUTE_PARAM,
 
39204
            attributeValue) )
 
39205
        {
 
39206
            return false;
 
39207
        }
 
39208
    }
 
39209
    } // validation
 
39210
#endif
 
39211
 
 
39212
    break;
 
39213
    }
 
39214
    case HASH_ATTRIBUTE_INDEX:
 
39215
    {
 
39216
bool failed;
 
39217
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
39218
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
39219
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
39220
        HASH_ELEMENT_TEXTURE_ENV_MODE,
 
39221
        HASH_ATTRIBUTE_INDEX,
 
39222
        attributeValue))
 
39223
{
 
39224
    return false;
 
39225
}
 
39226
if ( !failed )
 
39227
    attributeData->present_attributes |= texture_env_mode__AttributeData::ATTRIBUTE_INDEX_PRESENT;
 
39228
 
 
39229
    break;
 
39230
    }
 
39231
    default:
 
39232
    {
 
39233
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_TEXTURE_ENV_MODE, attribute, attributeValue))
 
39234
            {return false;}
 
39235
    }
 
39236
    }
 
39237
    }
 
39238
}
 
39239
 
 
39240
 
 
39241
    return true;
 
39242
}
 
39243
 
 
39244
//---------------------------------------------------------------------
 
39245
bool ColladaParserAutoGen15Private::_preEnd__texture_env_mode()
 
39246
{
 
39247
#ifdef GENERATEDSAXPARSER_VALIDATION
 
39248
    if ( mValidate )
 
39249
    {
 
39250
 
 
39251
        bool validationResult = _validateEnd__texture_env_mode();
 
39252
        if ( !validationResult ) return false;
 
39253
 
 
39254
    } // validation
 
39255
#endif
 
39256
 
 
39257
    return true;
 
39258
}
 
39259
 
 
39260
//---------------------------------------------------------------------
 
39261
bool ColladaParserAutoGen15Private::_freeAttributes__texture_env_mode( void* attributeData )
 
39262
{
 
39263
    texture_env_mode__AttributeData* typedAttributeData = static_cast<texture_env_mode__AttributeData*>(attributeData);
 
39264
 
 
39265
    typedAttributeData->~texture_env_mode__AttributeData();
 
39266
 
 
39267
    return true;
 
39268
}
 
39269
 
 
39270
//---------------------------------------------------------------------
 
39271
const profile_GLSL__technique__pass__states__clip_plane__AttributeData profile_GLSL__technique__pass__states__clip_plane__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<float>(), 0, 0};
 
39272
 
 
39273
//---------------------------------------------------------------------
 
39274
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__clip_plane( const ParserChar* text, size_t textLength )
 
39275
{
 
39276
    return true;
 
39277
}
 
39278
 
 
39279
//---------------------------------------------------------------------
 
39280
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__clip_plane( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
39281
{
 
39282
#ifdef GENERATEDSAXPARSER_VALIDATION
 
39283
    if ( mValidate )
 
39284
    {
 
39285
 
 
39286
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__clip_plane( attributes, attributeDataPtr, validationDataPtr );
 
39287
        if ( !validationResult ) return false;
 
39288
 
 
39289
    } // validation
 
39290
#endif
 
39291
 
 
39292
profile_GLSL__technique__pass__states__clip_plane__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__clip_plane__AttributeData>(attributeDataPtr);
 
39293
 
 
39294
const ParserChar** attributeArray = attributes.attributes;
 
39295
if ( attributeArray )
 
39296
{
 
39297
    while (true)
 
39298
    {
 
39299
        const ParserChar * attribute = *attributeArray;
 
39300
        if ( !attribute )
 
39301
            break;
 
39302
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
39303
        attributeArray++;
 
39304
        if ( !attributeArray )
 
39305
            return false;
 
39306
        const ParserChar* attributeValue = *attributeArray;
 
39307
        attributeArray++;
 
39308
 
 
39309
 
 
39310
    switch ( hash )
 
39311
    {
 
39312
    case HASH_ATTRIBUTE_VALUE:
 
39313
    {
 
39314
bool failed;
 
39315
#ifdef GENERATEDSAXPARSER_VALIDATION
 
39316
    if ( mValidate )
 
39317
    {
 
39318
failed = !characterData2FloatList(attributeValue, attributeData->value, 0, HASH_ELEMENT_CLIP_PLANE, HASH_ATTRIBUTE_VALUE);
 
39319
    }
 
39320
    else
 
39321
    {
 
39322
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
39323
    }
 
39324
#else
 
39325
    {
 
39326
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
39327
    } // validation
 
39328
#endif
 
39329
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
39330
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
39331
        HASH_ELEMENT_CLIP_PLANE,
 
39332
        HASH_ATTRIBUTE_VALUE,
 
39333
        attributeValue))
 
39334
{
 
39335
    return false;
 
39336
}
 
39337
#ifdef GENERATEDSAXPARSER_VALIDATION
 
39338
    if ( mValidate )
 
39339
    {
 
39340
    ParserError::ErrorType simpleTypeValidationResult = validate__float4_type(attributeData->value.data, attributeData->value.size);
 
39341
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
39342
    {
 
39343
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
39344
            simpleTypeValidationResult,
 
39345
            HASH_ELEMENT_CLIP_PLANE,
 
39346
            HASH_ATTRIBUTE_VALUE,
 
39347
            attributeValue) )
 
39348
        {
 
39349
            return false;
 
39350
        }
 
39351
    }
 
39352
    } // validation
 
39353
#endif
 
39354
 
 
39355
if ( !failed )
 
39356
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__clip_plane__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
39357
 
 
39358
    break;
 
39359
    }
 
39360
    case HASH_ATTRIBUTE_PARAM:
 
39361
    {
 
39362
 
 
39363
attributeData->param = attributeValue;
 
39364
#ifdef GENERATEDSAXPARSER_VALIDATION
 
39365
    if ( mValidate )
 
39366
    {
 
39367
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
39368
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
39369
    {
 
39370
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
39371
            simpleTypeValidationResult,
 
39372
            HASH_ELEMENT_CLIP_PLANE,
 
39373
            HASH_ATTRIBUTE_PARAM,
 
39374
            attributeValue) )
 
39375
        {
 
39376
            return false;
 
39377
        }
 
39378
    }
 
39379
    } // validation
 
39380
#endif
 
39381
 
 
39382
    break;
 
39383
    }
 
39384
    case HASH_ATTRIBUTE_INDEX:
 
39385
    {
 
39386
bool failed;
 
39387
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
39388
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
39389
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
39390
        HASH_ELEMENT_CLIP_PLANE,
 
39391
        HASH_ATTRIBUTE_INDEX,
 
39392
        attributeValue))
 
39393
{
 
39394
    return false;
 
39395
}
 
39396
if ( !failed )
 
39397
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__clip_plane__AttributeData::ATTRIBUTE_INDEX_PRESENT;
 
39398
 
 
39399
    break;
 
39400
    }
 
39401
    default:
 
39402
    {
 
39403
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_CLIP_PLANE, attribute, attributeValue))
 
39404
            {return false;}
 
39405
    }
 
39406
    }
 
39407
    }
 
39408
}
 
39409
if ((attributeData->present_attributes & profile_GLSL__technique__pass__states__clip_plane__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
39410
{
 
39411
    bool failed;
 
39412
    failed = !characterData2FloatList("0.0E1 0.0E1 0.0E1 0.0E1", attributeData->value);
 
39413
    if ( !failed )
 
39414
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__clip_plane__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
39415
}
 
39416
 
 
39417
 
 
39418
    return true;
 
39419
}
 
39420
 
 
39421
//---------------------------------------------------------------------
 
39422
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__clip_plane()
 
39423
{
 
39424
#ifdef GENERATEDSAXPARSER_VALIDATION
 
39425
    if ( mValidate )
 
39426
    {
 
39427
 
 
39428
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__clip_plane();
 
39429
        if ( !validationResult ) return false;
 
39430
 
 
39431
    } // validation
 
39432
#endif
 
39433
 
 
39434
    return true;
 
39435
}
 
39436
 
 
39437
//---------------------------------------------------------------------
 
39438
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__clip_plane( void* attributeData )
 
39439
{
 
39440
    profile_GLSL__technique__pass__states__clip_plane__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__clip_plane__AttributeData*>(attributeData);
 
39441
    if (typedAttributeData->value.data)
 
39442
    {
 
39443
        mStackMemoryManager.deleteObject();
 
39444
    }
 
39445
 
 
39446
 
 
39447
    typedAttributeData->~profile_GLSL__technique__pass__states__clip_plane__AttributeData();
 
39448
 
 
39449
    return true;
 
39450
}
 
39451
 
 
39452
//---------------------------------------------------------------------
 
39453
const profile_GLSL__technique__pass__states__clip_plane_enable__AttributeData profile_GLSL__technique__pass__states__clip_plane_enable__AttributeData::DEFAULT = {0, false, 0, 0};
 
39454
 
 
39455
//---------------------------------------------------------------------
 
39456
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__clip_plane_enable( const ParserChar* text, size_t textLength )
 
39457
{
 
39458
    return true;
 
39459
}
 
39460
 
 
39461
//---------------------------------------------------------------------
 
39462
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__clip_plane_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
39463
{
 
39464
#ifdef GENERATEDSAXPARSER_VALIDATION
 
39465
    if ( mValidate )
 
39466
    {
 
39467
 
 
39468
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__clip_plane_enable( attributes, attributeDataPtr, validationDataPtr );
 
39469
        if ( !validationResult ) return false;
 
39470
 
 
39471
    } // validation
 
39472
#endif
 
39473
 
 
39474
profile_GLSL__technique__pass__states__clip_plane_enable__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__clip_plane_enable__AttributeData>(attributeDataPtr);
 
39475
 
 
39476
const ParserChar** attributeArray = attributes.attributes;
 
39477
if ( attributeArray )
 
39478
{
 
39479
    while (true)
 
39480
    {
 
39481
        const ParserChar * attribute = *attributeArray;
 
39482
        if ( !attribute )
 
39483
            break;
 
39484
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
39485
        attributeArray++;
 
39486
        if ( !attributeArray )
 
39487
            return false;
 
39488
        const ParserChar* attributeValue = *attributeArray;
 
39489
        attributeArray++;
 
39490
 
 
39491
 
 
39492
    switch ( hash )
 
39493
    {
 
39494
    case HASH_ATTRIBUTE_VALUE:
 
39495
    {
 
39496
bool failed;
 
39497
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
39498
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
39499
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
39500
        HASH_ELEMENT_CLIP_PLANE_ENABLE,
 
39501
        HASH_ATTRIBUTE_VALUE,
 
39502
        attributeValue))
 
39503
{
 
39504
    return false;
 
39505
}
 
39506
 
 
39507
    break;
 
39508
    }
 
39509
    case HASH_ATTRIBUTE_PARAM:
 
39510
    {
 
39511
 
 
39512
attributeData->param = attributeValue;
 
39513
#ifdef GENERATEDSAXPARSER_VALIDATION
 
39514
    if ( mValidate )
 
39515
    {
 
39516
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
39517
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
39518
    {
 
39519
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
39520
            simpleTypeValidationResult,
 
39521
            HASH_ELEMENT_CLIP_PLANE_ENABLE,
 
39522
            HASH_ATTRIBUTE_PARAM,
 
39523
            attributeValue) )
 
39524
        {
 
39525
            return false;
 
39526
        }
 
39527
    }
 
39528
    } // validation
 
39529
#endif
 
39530
 
 
39531
    break;
 
39532
    }
 
39533
    case HASH_ATTRIBUTE_INDEX:
 
39534
    {
 
39535
bool failed;
 
39536
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
39537
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
39538
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
39539
        HASH_ELEMENT_CLIP_PLANE_ENABLE,
 
39540
        HASH_ATTRIBUTE_INDEX,
 
39541
        attributeValue))
 
39542
{
 
39543
    return false;
 
39544
}
 
39545
if ( !failed )
 
39546
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__clip_plane_enable__AttributeData::ATTRIBUTE_INDEX_PRESENT;
 
39547
 
 
39548
    break;
 
39549
    }
 
39550
    default:
 
39551
    {
 
39552
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_CLIP_PLANE_ENABLE, attribute, attributeValue))
 
39553
            {return false;}
 
39554
    }
 
39555
    }
 
39556
    }
 
39557
}
 
39558
 
 
39559
 
 
39560
    return true;
 
39561
}
 
39562
 
 
39563
//---------------------------------------------------------------------
 
39564
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__clip_plane_enable()
 
39565
{
 
39566
#ifdef GENERATEDSAXPARSER_VALIDATION
 
39567
    if ( mValidate )
 
39568
    {
 
39569
 
 
39570
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__clip_plane_enable();
 
39571
        if ( !validationResult ) return false;
 
39572
 
 
39573
    } // validation
 
39574
#endif
 
39575
 
 
39576
    return true;
 
39577
}
 
39578
 
 
39579
//---------------------------------------------------------------------
 
39580
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__clip_plane_enable( void* attributeData )
 
39581
{
 
39582
    profile_GLSL__technique__pass__states__clip_plane_enable__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__clip_plane_enable__AttributeData*>(attributeData);
 
39583
 
 
39584
    typedAttributeData->~profile_GLSL__technique__pass__states__clip_plane_enable__AttributeData();
 
39585
 
 
39586
    return true;
 
39587
}
 
39588
 
 
39589
//---------------------------------------------------------------------
 
39590
const profile_GLSL__technique__pass__states__blend_color__AttributeData profile_GLSL__technique__pass__states__blend_color__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<float>(), 0};
 
39591
 
 
39592
//---------------------------------------------------------------------
 
39593
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__blend_color( const ParserChar* text, size_t textLength )
 
39594
{
 
39595
    return true;
 
39596
}
 
39597
 
 
39598
//---------------------------------------------------------------------
 
39599
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__blend_color( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
39600
{
 
39601
#ifdef GENERATEDSAXPARSER_VALIDATION
 
39602
    if ( mValidate )
 
39603
    {
 
39604
 
 
39605
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__blend_color( attributes, attributeDataPtr, validationDataPtr );
 
39606
        if ( !validationResult ) return false;
 
39607
 
 
39608
    } // validation
 
39609
#endif
 
39610
 
 
39611
profile_GLSL__technique__pass__states__blend_color__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__blend_color__AttributeData>(attributeDataPtr);
 
39612
 
 
39613
const ParserChar** attributeArray = attributes.attributes;
 
39614
if ( attributeArray )
 
39615
{
 
39616
    while (true)
 
39617
    {
 
39618
        const ParserChar * attribute = *attributeArray;
 
39619
        if ( !attribute )
 
39620
            break;
 
39621
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
39622
        attributeArray++;
 
39623
        if ( !attributeArray )
 
39624
            return false;
 
39625
        const ParserChar* attributeValue = *attributeArray;
 
39626
        attributeArray++;
 
39627
 
 
39628
 
 
39629
    switch ( hash )
 
39630
    {
 
39631
    case HASH_ATTRIBUTE_VALUE:
 
39632
    {
 
39633
bool failed;
 
39634
#ifdef GENERATEDSAXPARSER_VALIDATION
 
39635
    if ( mValidate )
 
39636
    {
 
39637
failed = !characterData2FloatList(attributeValue, attributeData->value, 0, HASH_ELEMENT_BLEND_COLOR, HASH_ATTRIBUTE_VALUE);
 
39638
    }
 
39639
    else
 
39640
    {
 
39641
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
39642
    }
 
39643
#else
 
39644
    {
 
39645
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
39646
    } // validation
 
39647
#endif
 
39648
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
39649
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
39650
        HASH_ELEMENT_BLEND_COLOR,
 
39651
        HASH_ATTRIBUTE_VALUE,
 
39652
        attributeValue))
 
39653
{
 
39654
    return false;
 
39655
}
 
39656
#ifdef GENERATEDSAXPARSER_VALIDATION
 
39657
    if ( mValidate )
 
39658
    {
 
39659
    ParserError::ErrorType simpleTypeValidationResult = validate__float4_type(attributeData->value.data, attributeData->value.size);
 
39660
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
39661
    {
 
39662
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
39663
            simpleTypeValidationResult,
 
39664
            HASH_ELEMENT_BLEND_COLOR,
 
39665
            HASH_ATTRIBUTE_VALUE,
 
39666
            attributeValue) )
 
39667
        {
 
39668
            return false;
 
39669
        }
 
39670
    }
 
39671
    } // validation
 
39672
#endif
 
39673
 
 
39674
if ( !failed )
 
39675
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__blend_color__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
39676
 
 
39677
    break;
 
39678
    }
 
39679
    case HASH_ATTRIBUTE_PARAM:
 
39680
    {
 
39681
 
 
39682
attributeData->param = attributeValue;
 
39683
#ifdef GENERATEDSAXPARSER_VALIDATION
 
39684
    if ( mValidate )
 
39685
    {
 
39686
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
39687
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
39688
    {
 
39689
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
39690
            simpleTypeValidationResult,
 
39691
            HASH_ELEMENT_BLEND_COLOR,
 
39692
            HASH_ATTRIBUTE_PARAM,
 
39693
            attributeValue) )
 
39694
        {
 
39695
            return false;
 
39696
        }
 
39697
    }
 
39698
    } // validation
 
39699
#endif
 
39700
 
 
39701
    break;
 
39702
    }
 
39703
    default:
 
39704
    {
 
39705
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_BLEND_COLOR, attribute, attributeValue))
 
39706
            {return false;}
 
39707
    }
 
39708
    }
 
39709
    }
 
39710
}
 
39711
if ((attributeData->present_attributes & profile_GLSL__technique__pass__states__blend_color__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
39712
{
 
39713
    bool failed;
 
39714
    failed = !characterData2FloatList("0.0E1 0.0E1 0.0E1 0.0E1", attributeData->value);
 
39715
    if ( !failed )
 
39716
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__blend_color__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
39717
}
 
39718
 
 
39719
 
 
39720
    return true;
 
39721
}
 
39722
 
 
39723
//---------------------------------------------------------------------
 
39724
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__blend_color()
 
39725
{
 
39726
#ifdef GENERATEDSAXPARSER_VALIDATION
 
39727
    if ( mValidate )
 
39728
    {
 
39729
 
 
39730
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__blend_color();
 
39731
        if ( !validationResult ) return false;
 
39732
 
 
39733
    } // validation
 
39734
#endif
 
39735
 
 
39736
    return true;
 
39737
}
 
39738
 
 
39739
//---------------------------------------------------------------------
 
39740
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__blend_color( void* attributeData )
 
39741
{
 
39742
    profile_GLSL__technique__pass__states__blend_color__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__blend_color__AttributeData*>(attributeData);
 
39743
    if (typedAttributeData->value.data)
 
39744
    {
 
39745
        mStackMemoryManager.deleteObject();
 
39746
    }
 
39747
 
 
39748
 
 
39749
    typedAttributeData->~profile_GLSL__technique__pass__states__blend_color__AttributeData();
 
39750
 
 
39751
    return true;
 
39752
}
 
39753
 
 
39754
//---------------------------------------------------------------------
 
39755
const profile_GLSL__technique__pass__states__color_mask__AttributeData profile_GLSL__technique__pass__states__color_mask__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<bool>(), 0};
 
39756
 
 
39757
//---------------------------------------------------------------------
 
39758
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__color_mask( const ParserChar* text, size_t textLength )
 
39759
{
 
39760
    return true;
 
39761
}
 
39762
 
 
39763
//---------------------------------------------------------------------
 
39764
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__color_mask( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
39765
{
 
39766
#ifdef GENERATEDSAXPARSER_VALIDATION
 
39767
    if ( mValidate )
 
39768
    {
 
39769
 
 
39770
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__color_mask( attributes, attributeDataPtr, validationDataPtr );
 
39771
        if ( !validationResult ) return false;
 
39772
 
 
39773
    } // validation
 
39774
#endif
 
39775
 
 
39776
profile_GLSL__technique__pass__states__color_mask__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__color_mask__AttributeData>(attributeDataPtr);
 
39777
 
 
39778
const ParserChar** attributeArray = attributes.attributes;
 
39779
if ( attributeArray )
 
39780
{
 
39781
    while (true)
 
39782
    {
 
39783
        const ParserChar * attribute = *attributeArray;
 
39784
        if ( !attribute )
 
39785
            break;
 
39786
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
39787
        attributeArray++;
 
39788
        if ( !attributeArray )
 
39789
            return false;
 
39790
        const ParserChar* attributeValue = *attributeArray;
 
39791
        attributeArray++;
 
39792
 
 
39793
 
 
39794
    switch ( hash )
 
39795
    {
 
39796
    case HASH_ATTRIBUTE_VALUE:
 
39797
    {
 
39798
bool failed;
 
39799
#ifdef GENERATEDSAXPARSER_VALIDATION
 
39800
    if ( mValidate )
 
39801
    {
 
39802
failed = !characterData2BoolList(attributeValue, attributeData->value, 0, HASH_ELEMENT_COLOR_MASK, HASH_ATTRIBUTE_VALUE);
 
39803
    }
 
39804
    else
 
39805
    {
 
39806
failed = !characterData2BoolList(attributeValue, attributeData->value);
 
39807
    }
 
39808
#else
 
39809
    {
 
39810
failed = !characterData2BoolList(attributeValue, attributeData->value);
 
39811
    } // validation
 
39812
#endif
 
39813
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
39814
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
39815
        HASH_ELEMENT_COLOR_MASK,
 
39816
        HASH_ATTRIBUTE_VALUE,
 
39817
        attributeValue))
 
39818
{
 
39819
    return false;
 
39820
}
 
39821
#ifdef GENERATEDSAXPARSER_VALIDATION
 
39822
    if ( mValidate )
 
39823
    {
 
39824
    ParserError::ErrorType simpleTypeValidationResult = validate__bool4_type(attributeData->value.data, attributeData->value.size);
 
39825
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
39826
    {
 
39827
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
39828
            simpleTypeValidationResult,
 
39829
            HASH_ELEMENT_COLOR_MASK,
 
39830
            HASH_ATTRIBUTE_VALUE,
 
39831
            attributeValue) )
 
39832
        {
 
39833
            return false;
 
39834
        }
 
39835
    }
 
39836
    } // validation
 
39837
#endif
 
39838
 
 
39839
if ( !failed )
 
39840
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__color_mask__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
39841
 
 
39842
    break;
 
39843
    }
 
39844
    case HASH_ATTRIBUTE_PARAM:
 
39845
    {
 
39846
 
 
39847
attributeData->param = attributeValue;
 
39848
#ifdef GENERATEDSAXPARSER_VALIDATION
 
39849
    if ( mValidate )
 
39850
    {
 
39851
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
39852
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
39853
    {
 
39854
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
39855
            simpleTypeValidationResult,
 
39856
            HASH_ELEMENT_COLOR_MASK,
 
39857
            HASH_ATTRIBUTE_PARAM,
 
39858
            attributeValue) )
 
39859
        {
 
39860
            return false;
 
39861
        }
 
39862
    }
 
39863
    } // validation
 
39864
#endif
 
39865
 
 
39866
    break;
 
39867
    }
 
39868
    default:
 
39869
    {
 
39870
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_COLOR_MASK, attribute, attributeValue))
 
39871
            {return false;}
 
39872
    }
 
39873
    }
 
39874
    }
 
39875
}
 
39876
if ((attributeData->present_attributes & profile_GLSL__technique__pass__states__color_mask__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
39877
{
 
39878
    bool failed;
 
39879
    failed = !characterData2BoolList("true true true true", attributeData->value);
 
39880
    if ( !failed )
 
39881
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__color_mask__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
39882
}
 
39883
 
 
39884
 
 
39885
    return true;
 
39886
}
 
39887
 
 
39888
//---------------------------------------------------------------------
 
39889
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__color_mask()
 
39890
{
 
39891
#ifdef GENERATEDSAXPARSER_VALIDATION
 
39892
    if ( mValidate )
 
39893
    {
 
39894
 
 
39895
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__color_mask();
 
39896
        if ( !validationResult ) return false;
 
39897
 
 
39898
    } // validation
 
39899
#endif
 
39900
 
 
39901
    return true;
 
39902
}
 
39903
 
 
39904
//---------------------------------------------------------------------
 
39905
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__color_mask( void* attributeData )
 
39906
{
 
39907
    profile_GLSL__technique__pass__states__color_mask__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__color_mask__AttributeData*>(attributeData);
 
39908
    if (typedAttributeData->value.data)
 
39909
    {
 
39910
        mStackMemoryManager.deleteObject();
 
39911
    }
 
39912
 
 
39913
 
 
39914
    typedAttributeData->~profile_GLSL__technique__pass__states__color_mask__AttributeData();
 
39915
 
 
39916
    return true;
 
39917
}
 
39918
 
 
39919
//---------------------------------------------------------------------
 
39920
const depth_bounds__AttributeData depth_bounds__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<float>(), 0};
 
39921
 
 
39922
//---------------------------------------------------------------------
 
39923
bool ColladaParserAutoGen15Private::_data__depth_bounds( const ParserChar* text, size_t textLength )
 
39924
{
 
39925
    return true;
 
39926
}
 
39927
 
 
39928
//---------------------------------------------------------------------
 
39929
bool ColladaParserAutoGen15Private::_preBegin__depth_bounds( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
39930
{
 
39931
#ifdef GENERATEDSAXPARSER_VALIDATION
 
39932
    if ( mValidate )
 
39933
    {
 
39934
 
 
39935
        bool validationResult = _validateBegin__depth_bounds( attributes, attributeDataPtr, validationDataPtr );
 
39936
        if ( !validationResult ) return false;
 
39937
 
 
39938
    } // validation
 
39939
#endif
 
39940
 
 
39941
depth_bounds__AttributeData* attributeData = newData<depth_bounds__AttributeData>(attributeDataPtr);
 
39942
 
 
39943
const ParserChar** attributeArray = attributes.attributes;
 
39944
if ( attributeArray )
 
39945
{
 
39946
    while (true)
 
39947
    {
 
39948
        const ParserChar * attribute = *attributeArray;
 
39949
        if ( !attribute )
 
39950
            break;
 
39951
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
39952
        attributeArray++;
 
39953
        if ( !attributeArray )
 
39954
            return false;
 
39955
        const ParserChar* attributeValue = *attributeArray;
 
39956
        attributeArray++;
 
39957
 
 
39958
 
 
39959
    switch ( hash )
 
39960
    {
 
39961
    case HASH_ATTRIBUTE_VALUE:
 
39962
    {
 
39963
bool failed;
 
39964
#ifdef GENERATEDSAXPARSER_VALIDATION
 
39965
    if ( mValidate )
 
39966
    {
 
39967
failed = !characterData2FloatList(attributeValue, attributeData->value, 0, HASH_ELEMENT_DEPTH_BOUNDS, HASH_ATTRIBUTE_VALUE);
 
39968
    }
 
39969
    else
 
39970
    {
 
39971
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
39972
    }
 
39973
#else
 
39974
    {
 
39975
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
39976
    } // validation
 
39977
#endif
 
39978
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
39979
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
39980
        HASH_ELEMENT_DEPTH_BOUNDS,
 
39981
        HASH_ATTRIBUTE_VALUE,
 
39982
        attributeValue))
 
39983
{
 
39984
    return false;
 
39985
}
 
39986
#ifdef GENERATEDSAXPARSER_VALIDATION
 
39987
    if ( mValidate )
 
39988
    {
 
39989
    ParserError::ErrorType simpleTypeValidationResult = validate__float2_type(attributeData->value.data, attributeData->value.size);
 
39990
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
39991
    {
 
39992
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
39993
            simpleTypeValidationResult,
 
39994
            HASH_ELEMENT_DEPTH_BOUNDS,
 
39995
            HASH_ATTRIBUTE_VALUE,
 
39996
            attributeValue) )
 
39997
        {
 
39998
            return false;
 
39999
        }
 
40000
    }
 
40001
    } // validation
 
40002
#endif
 
40003
 
 
40004
if ( !failed )
 
40005
    attributeData->present_attributes |= depth_bounds__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
40006
 
 
40007
    break;
 
40008
    }
 
40009
    case HASH_ATTRIBUTE_PARAM:
 
40010
    {
 
40011
 
 
40012
attributeData->param = attributeValue;
 
40013
#ifdef GENERATEDSAXPARSER_VALIDATION
 
40014
    if ( mValidate )
 
40015
    {
 
40016
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
40017
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
40018
    {
 
40019
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
40020
            simpleTypeValidationResult,
 
40021
            HASH_ELEMENT_DEPTH_BOUNDS,
 
40022
            HASH_ATTRIBUTE_PARAM,
 
40023
            attributeValue) )
 
40024
        {
 
40025
            return false;
 
40026
        }
 
40027
    }
 
40028
    } // validation
 
40029
#endif
 
40030
 
 
40031
    break;
 
40032
    }
 
40033
    default:
 
40034
    {
 
40035
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_DEPTH_BOUNDS, attribute, attributeValue))
 
40036
            {return false;}
 
40037
    }
 
40038
    }
 
40039
    }
 
40040
}
 
40041
if ((attributeData->present_attributes & depth_bounds__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
40042
{
 
40043
    attributeData->value = GeneratedSaxParser::XSList<float>();
 
40044
}
 
40045
 
 
40046
 
 
40047
    return true;
 
40048
}
 
40049
 
 
40050
//---------------------------------------------------------------------
 
40051
bool ColladaParserAutoGen15Private::_preEnd__depth_bounds()
 
40052
{
 
40053
#ifdef GENERATEDSAXPARSER_VALIDATION
 
40054
    if ( mValidate )
 
40055
    {
 
40056
 
 
40057
        bool validationResult = _validateEnd__depth_bounds();
 
40058
        if ( !validationResult ) return false;
 
40059
 
 
40060
    } // validation
 
40061
#endif
 
40062
 
 
40063
    return true;
 
40064
}
 
40065
 
 
40066
//---------------------------------------------------------------------
 
40067
bool ColladaParserAutoGen15Private::_freeAttributes__depth_bounds( void* attributeData )
 
40068
{
 
40069
    depth_bounds__AttributeData* typedAttributeData = static_cast<depth_bounds__AttributeData*>(attributeData);
 
40070
    if (typedAttributeData->value.data)
 
40071
    {
 
40072
        mStackMemoryManager.deleteObject();
 
40073
    }
 
40074
 
 
40075
 
 
40076
    typedAttributeData->~depth_bounds__AttributeData();
 
40077
 
 
40078
    return true;
 
40079
}
 
40080
 
 
40081
//---------------------------------------------------------------------
 
40082
const profile_GLSL__technique__pass__states__depth_mask__AttributeData profile_GLSL__technique__pass__states__depth_mask__AttributeData::DEFAULT = {true, 0};
 
40083
 
 
40084
//---------------------------------------------------------------------
 
40085
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__depth_mask( const ParserChar* text, size_t textLength )
 
40086
{
 
40087
    return true;
 
40088
}
 
40089
 
 
40090
//---------------------------------------------------------------------
 
40091
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__depth_mask( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
40092
{
 
40093
#ifdef GENERATEDSAXPARSER_VALIDATION
 
40094
    if ( mValidate )
 
40095
    {
 
40096
 
 
40097
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__depth_mask( attributes, attributeDataPtr, validationDataPtr );
 
40098
        if ( !validationResult ) return false;
 
40099
 
 
40100
    } // validation
 
40101
#endif
 
40102
 
 
40103
profile_GLSL__technique__pass__states__depth_mask__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__depth_mask__AttributeData>(attributeDataPtr);
 
40104
 
 
40105
const ParserChar** attributeArray = attributes.attributes;
 
40106
if ( attributeArray )
 
40107
{
 
40108
    while (true)
 
40109
    {
 
40110
        const ParserChar * attribute = *attributeArray;
 
40111
        if ( !attribute )
 
40112
            break;
 
40113
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
40114
        attributeArray++;
 
40115
        if ( !attributeArray )
 
40116
            return false;
 
40117
        const ParserChar* attributeValue = *attributeArray;
 
40118
        attributeArray++;
 
40119
 
 
40120
 
 
40121
    switch ( hash )
 
40122
    {
 
40123
    case HASH_ATTRIBUTE_VALUE:
 
40124
    {
 
40125
bool failed;
 
40126
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
40127
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
40128
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
40129
        HASH_ELEMENT_DEPTH_MASK,
 
40130
        HASH_ATTRIBUTE_VALUE,
 
40131
        attributeValue))
 
40132
{
 
40133
    return false;
 
40134
}
 
40135
 
 
40136
    break;
 
40137
    }
 
40138
    case HASH_ATTRIBUTE_PARAM:
 
40139
    {
 
40140
 
 
40141
attributeData->param = attributeValue;
 
40142
#ifdef GENERATEDSAXPARSER_VALIDATION
 
40143
    if ( mValidate )
 
40144
    {
 
40145
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
40146
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
40147
    {
 
40148
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
40149
            simpleTypeValidationResult,
 
40150
            HASH_ELEMENT_DEPTH_MASK,
 
40151
            HASH_ATTRIBUTE_PARAM,
 
40152
            attributeValue) )
 
40153
        {
 
40154
            return false;
 
40155
        }
 
40156
    }
 
40157
    } // validation
 
40158
#endif
 
40159
 
 
40160
    break;
 
40161
    }
 
40162
    default:
 
40163
    {
 
40164
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_DEPTH_MASK, attribute, attributeValue))
 
40165
            {return false;}
 
40166
    }
 
40167
    }
 
40168
    }
 
40169
}
 
40170
 
 
40171
 
 
40172
    return true;
 
40173
}
 
40174
 
 
40175
//---------------------------------------------------------------------
 
40176
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__depth_mask()
 
40177
{
 
40178
#ifdef GENERATEDSAXPARSER_VALIDATION
 
40179
    if ( mValidate )
 
40180
    {
 
40181
 
 
40182
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__depth_mask();
 
40183
        if ( !validationResult ) return false;
 
40184
 
 
40185
    } // validation
 
40186
#endif
 
40187
 
 
40188
    return true;
 
40189
}
 
40190
 
 
40191
//---------------------------------------------------------------------
 
40192
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__depth_mask( void* attributeData )
 
40193
{
 
40194
    profile_GLSL__technique__pass__states__depth_mask__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__depth_mask__AttributeData*>(attributeData);
 
40195
 
 
40196
    typedAttributeData->~profile_GLSL__technique__pass__states__depth_mask__AttributeData();
 
40197
 
 
40198
    return true;
 
40199
}
 
40200
 
 
40201
//---------------------------------------------------------------------
 
40202
const profile_GLSL__technique__pass__states__depth_range__AttributeData profile_GLSL__technique__pass__states__depth_range__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<float>(), 0};
 
40203
 
 
40204
//---------------------------------------------------------------------
 
40205
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__depth_range( const ParserChar* text, size_t textLength )
 
40206
{
 
40207
    return true;
 
40208
}
 
40209
 
 
40210
//---------------------------------------------------------------------
 
40211
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__depth_range( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
40212
{
 
40213
#ifdef GENERATEDSAXPARSER_VALIDATION
 
40214
    if ( mValidate )
 
40215
    {
 
40216
 
 
40217
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__depth_range( attributes, attributeDataPtr, validationDataPtr );
 
40218
        if ( !validationResult ) return false;
 
40219
 
 
40220
    } // validation
 
40221
#endif
 
40222
 
 
40223
profile_GLSL__technique__pass__states__depth_range__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__depth_range__AttributeData>(attributeDataPtr);
 
40224
 
 
40225
const ParserChar** attributeArray = attributes.attributes;
 
40226
if ( attributeArray )
 
40227
{
 
40228
    while (true)
 
40229
    {
 
40230
        const ParserChar * attribute = *attributeArray;
 
40231
        if ( !attribute )
 
40232
            break;
 
40233
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
40234
        attributeArray++;
 
40235
        if ( !attributeArray )
 
40236
            return false;
 
40237
        const ParserChar* attributeValue = *attributeArray;
 
40238
        attributeArray++;
 
40239
 
 
40240
 
 
40241
    switch ( hash )
 
40242
    {
 
40243
    case HASH_ATTRIBUTE_VALUE:
 
40244
    {
 
40245
bool failed;
 
40246
#ifdef GENERATEDSAXPARSER_VALIDATION
 
40247
    if ( mValidate )
 
40248
    {
 
40249
failed = !characterData2FloatList(attributeValue, attributeData->value, 0, HASH_ELEMENT_DEPTH_RANGE, HASH_ATTRIBUTE_VALUE);
 
40250
    }
 
40251
    else
 
40252
    {
 
40253
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
40254
    }
 
40255
#else
 
40256
    {
 
40257
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
40258
    } // validation
 
40259
#endif
 
40260
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
40261
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
40262
        HASH_ELEMENT_DEPTH_RANGE,
 
40263
        HASH_ATTRIBUTE_VALUE,
 
40264
        attributeValue))
 
40265
{
 
40266
    return false;
 
40267
}
 
40268
#ifdef GENERATEDSAXPARSER_VALIDATION
 
40269
    if ( mValidate )
 
40270
    {
 
40271
    ParserError::ErrorType simpleTypeValidationResult = validate__float2_type(attributeData->value.data, attributeData->value.size);
 
40272
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
40273
    {
 
40274
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
40275
            simpleTypeValidationResult,
 
40276
            HASH_ELEMENT_DEPTH_RANGE,
 
40277
            HASH_ATTRIBUTE_VALUE,
 
40278
            attributeValue) )
 
40279
        {
 
40280
            return false;
 
40281
        }
 
40282
    }
 
40283
    } // validation
 
40284
#endif
 
40285
 
 
40286
if ( !failed )
 
40287
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__depth_range__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
40288
 
 
40289
    break;
 
40290
    }
 
40291
    case HASH_ATTRIBUTE_PARAM:
 
40292
    {
 
40293
 
 
40294
attributeData->param = attributeValue;
 
40295
#ifdef GENERATEDSAXPARSER_VALIDATION
 
40296
    if ( mValidate )
 
40297
    {
 
40298
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
40299
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
40300
    {
 
40301
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
40302
            simpleTypeValidationResult,
 
40303
            HASH_ELEMENT_DEPTH_RANGE,
 
40304
            HASH_ATTRIBUTE_PARAM,
 
40305
            attributeValue) )
 
40306
        {
 
40307
            return false;
 
40308
        }
 
40309
    }
 
40310
    } // validation
 
40311
#endif
 
40312
 
 
40313
    break;
 
40314
    }
 
40315
    default:
 
40316
    {
 
40317
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_DEPTH_RANGE, attribute, attributeValue))
 
40318
            {return false;}
 
40319
    }
 
40320
    }
 
40321
    }
 
40322
}
 
40323
if ((attributeData->present_attributes & profile_GLSL__technique__pass__states__depth_range__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
40324
{
 
40325
    bool failed;
 
40326
    failed = !characterData2FloatList("0.0E1 1.0E0", attributeData->value);
 
40327
    if ( !failed )
 
40328
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__depth_range__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
40329
}
 
40330
 
 
40331
 
 
40332
    return true;
 
40333
}
 
40334
 
 
40335
//---------------------------------------------------------------------
 
40336
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__depth_range()
 
40337
{
 
40338
#ifdef GENERATEDSAXPARSER_VALIDATION
 
40339
    if ( mValidate )
 
40340
    {
 
40341
 
 
40342
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__depth_range();
 
40343
        if ( !validationResult ) return false;
 
40344
 
 
40345
    } // validation
 
40346
#endif
 
40347
 
 
40348
    return true;
 
40349
}
 
40350
 
 
40351
//---------------------------------------------------------------------
 
40352
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__depth_range( void* attributeData )
 
40353
{
 
40354
    profile_GLSL__technique__pass__states__depth_range__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__depth_range__AttributeData*>(attributeData);
 
40355
    if (typedAttributeData->value.data)
 
40356
    {
 
40357
        mStackMemoryManager.deleteObject();
 
40358
    }
 
40359
 
 
40360
 
 
40361
    typedAttributeData->~profile_GLSL__technique__pass__states__depth_range__AttributeData();
 
40362
 
 
40363
    return true;
 
40364
}
 
40365
 
 
40366
//---------------------------------------------------------------------
 
40367
const profile_GLSL__technique__pass__states__fog_density__AttributeData profile_GLSL__technique__pass__states__fog_density__AttributeData::DEFAULT = {1.0E0, 0};
 
40368
 
 
40369
//---------------------------------------------------------------------
 
40370
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__fog_density( const ParserChar* text, size_t textLength )
 
40371
{
 
40372
    return true;
 
40373
}
 
40374
 
 
40375
//---------------------------------------------------------------------
 
40376
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__fog_density( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
40377
{
 
40378
#ifdef GENERATEDSAXPARSER_VALIDATION
 
40379
    if ( mValidate )
 
40380
    {
 
40381
 
 
40382
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__fog_density( attributes, attributeDataPtr, validationDataPtr );
 
40383
        if ( !validationResult ) return false;
 
40384
 
 
40385
    } // validation
 
40386
#endif
 
40387
 
 
40388
profile_GLSL__technique__pass__states__fog_density__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__fog_density__AttributeData>(attributeDataPtr);
 
40389
 
 
40390
const ParserChar** attributeArray = attributes.attributes;
 
40391
if ( attributeArray )
 
40392
{
 
40393
    while (true)
 
40394
    {
 
40395
        const ParserChar * attribute = *attributeArray;
 
40396
        if ( !attribute )
 
40397
            break;
 
40398
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
40399
        attributeArray++;
 
40400
        if ( !attributeArray )
 
40401
            return false;
 
40402
        const ParserChar* attributeValue = *attributeArray;
 
40403
        attributeArray++;
 
40404
 
 
40405
 
 
40406
    switch ( hash )
 
40407
    {
 
40408
    case HASH_ATTRIBUTE_VALUE:
 
40409
    {
 
40410
bool failed;
 
40411
attributeData->value = GeneratedSaxParser::Utils::toFloat(attributeValue, failed);
 
40412
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
40413
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
40414
        HASH_ELEMENT_FOG_DENSITY,
 
40415
        HASH_ATTRIBUTE_VALUE,
 
40416
        attributeValue))
 
40417
{
 
40418
    return false;
 
40419
}
 
40420
 
 
40421
    break;
 
40422
    }
 
40423
    case HASH_ATTRIBUTE_PARAM:
 
40424
    {
 
40425
 
 
40426
attributeData->param = attributeValue;
 
40427
#ifdef GENERATEDSAXPARSER_VALIDATION
 
40428
    if ( mValidate )
 
40429
    {
 
40430
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
40431
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
40432
    {
 
40433
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
40434
            simpleTypeValidationResult,
 
40435
            HASH_ELEMENT_FOG_DENSITY,
 
40436
            HASH_ATTRIBUTE_PARAM,
 
40437
            attributeValue) )
 
40438
        {
 
40439
            return false;
 
40440
        }
 
40441
    }
 
40442
    } // validation
 
40443
#endif
 
40444
 
 
40445
    break;
 
40446
    }
 
40447
    default:
 
40448
    {
 
40449
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FOG_DENSITY, attribute, attributeValue))
 
40450
            {return false;}
 
40451
    }
 
40452
    }
 
40453
    }
 
40454
}
 
40455
 
 
40456
 
 
40457
    return true;
 
40458
}
 
40459
 
 
40460
//---------------------------------------------------------------------
 
40461
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__fog_density()
 
40462
{
 
40463
#ifdef GENERATEDSAXPARSER_VALIDATION
 
40464
    if ( mValidate )
 
40465
    {
 
40466
 
 
40467
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__fog_density();
 
40468
        if ( !validationResult ) return false;
 
40469
 
 
40470
    } // validation
 
40471
#endif
 
40472
 
 
40473
    return true;
 
40474
}
 
40475
 
 
40476
//---------------------------------------------------------------------
 
40477
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__fog_density( void* attributeData )
 
40478
{
 
40479
    profile_GLSL__technique__pass__states__fog_density__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__fog_density__AttributeData*>(attributeData);
 
40480
 
 
40481
    typedAttributeData->~profile_GLSL__technique__pass__states__fog_density__AttributeData();
 
40482
 
 
40483
    return true;
 
40484
}
 
40485
 
 
40486
//---------------------------------------------------------------------
 
40487
const profile_GLSL__technique__pass__states__fog_start__AttributeData profile_GLSL__technique__pass__states__fog_start__AttributeData::DEFAULT = {0.0E1, 0};
 
40488
 
 
40489
//---------------------------------------------------------------------
 
40490
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__fog_start( const ParserChar* text, size_t textLength )
 
40491
{
 
40492
    return true;
 
40493
}
 
40494
 
 
40495
//---------------------------------------------------------------------
 
40496
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__fog_start( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
40497
{
 
40498
#ifdef GENERATEDSAXPARSER_VALIDATION
 
40499
    if ( mValidate )
 
40500
    {
 
40501
 
 
40502
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__fog_start( attributes, attributeDataPtr, validationDataPtr );
 
40503
        if ( !validationResult ) return false;
 
40504
 
 
40505
    } // validation
 
40506
#endif
 
40507
 
 
40508
profile_GLSL__technique__pass__states__fog_start__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__fog_start__AttributeData>(attributeDataPtr);
 
40509
 
 
40510
const ParserChar** attributeArray = attributes.attributes;
 
40511
if ( attributeArray )
 
40512
{
 
40513
    while (true)
 
40514
    {
 
40515
        const ParserChar * attribute = *attributeArray;
 
40516
        if ( !attribute )
 
40517
            break;
 
40518
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
40519
        attributeArray++;
 
40520
        if ( !attributeArray )
 
40521
            return false;
 
40522
        const ParserChar* attributeValue = *attributeArray;
 
40523
        attributeArray++;
 
40524
 
 
40525
 
 
40526
    switch ( hash )
 
40527
    {
 
40528
    case HASH_ATTRIBUTE_VALUE:
 
40529
    {
 
40530
bool failed;
 
40531
attributeData->value = GeneratedSaxParser::Utils::toFloat(attributeValue, failed);
 
40532
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
40533
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
40534
        HASH_ELEMENT_FOG_START,
 
40535
        HASH_ATTRIBUTE_VALUE,
 
40536
        attributeValue))
 
40537
{
 
40538
    return false;
 
40539
}
 
40540
 
 
40541
    break;
 
40542
    }
 
40543
    case HASH_ATTRIBUTE_PARAM:
 
40544
    {
 
40545
 
 
40546
attributeData->param = attributeValue;
 
40547
#ifdef GENERATEDSAXPARSER_VALIDATION
 
40548
    if ( mValidate )
 
40549
    {
 
40550
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
40551
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
40552
    {
 
40553
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
40554
            simpleTypeValidationResult,
 
40555
            HASH_ELEMENT_FOG_START,
 
40556
            HASH_ATTRIBUTE_PARAM,
 
40557
            attributeValue) )
 
40558
        {
 
40559
            return false;
 
40560
        }
 
40561
    }
 
40562
    } // validation
 
40563
#endif
 
40564
 
 
40565
    break;
 
40566
    }
 
40567
    default:
 
40568
    {
 
40569
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FOG_START, attribute, attributeValue))
 
40570
            {return false;}
 
40571
    }
 
40572
    }
 
40573
    }
 
40574
}
 
40575
 
 
40576
 
 
40577
    return true;
 
40578
}
 
40579
 
 
40580
//---------------------------------------------------------------------
 
40581
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__fog_start()
 
40582
{
 
40583
#ifdef GENERATEDSAXPARSER_VALIDATION
 
40584
    if ( mValidate )
 
40585
    {
 
40586
 
 
40587
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__fog_start();
 
40588
        if ( !validationResult ) return false;
 
40589
 
 
40590
    } // validation
 
40591
#endif
 
40592
 
 
40593
    return true;
 
40594
}
 
40595
 
 
40596
//---------------------------------------------------------------------
 
40597
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__fog_start( void* attributeData )
 
40598
{
 
40599
    profile_GLSL__technique__pass__states__fog_start__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__fog_start__AttributeData*>(attributeData);
 
40600
 
 
40601
    typedAttributeData->~profile_GLSL__technique__pass__states__fog_start__AttributeData();
 
40602
 
 
40603
    return true;
 
40604
}
 
40605
 
 
40606
//---------------------------------------------------------------------
 
40607
const profile_GLSL__technique__pass__states__fog_end__AttributeData profile_GLSL__technique__pass__states__fog_end__AttributeData::DEFAULT = {1.0E0, 0};
 
40608
 
 
40609
//---------------------------------------------------------------------
 
40610
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__fog_end( const ParserChar* text, size_t textLength )
 
40611
{
 
40612
    return true;
 
40613
}
 
40614
 
 
40615
//---------------------------------------------------------------------
 
40616
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__fog_end( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
40617
{
 
40618
#ifdef GENERATEDSAXPARSER_VALIDATION
 
40619
    if ( mValidate )
 
40620
    {
 
40621
 
 
40622
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__fog_end( attributes, attributeDataPtr, validationDataPtr );
 
40623
        if ( !validationResult ) return false;
 
40624
 
 
40625
    } // validation
 
40626
#endif
 
40627
 
 
40628
profile_GLSL__technique__pass__states__fog_end__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__fog_end__AttributeData>(attributeDataPtr);
 
40629
 
 
40630
const ParserChar** attributeArray = attributes.attributes;
 
40631
if ( attributeArray )
 
40632
{
 
40633
    while (true)
 
40634
    {
 
40635
        const ParserChar * attribute = *attributeArray;
 
40636
        if ( !attribute )
 
40637
            break;
 
40638
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
40639
        attributeArray++;
 
40640
        if ( !attributeArray )
 
40641
            return false;
 
40642
        const ParserChar* attributeValue = *attributeArray;
 
40643
        attributeArray++;
 
40644
 
 
40645
 
 
40646
    switch ( hash )
 
40647
    {
 
40648
    case HASH_ATTRIBUTE_VALUE:
 
40649
    {
 
40650
bool failed;
 
40651
attributeData->value = GeneratedSaxParser::Utils::toFloat(attributeValue, failed);
 
40652
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
40653
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
40654
        HASH_ELEMENT_FOG_END,
 
40655
        HASH_ATTRIBUTE_VALUE,
 
40656
        attributeValue))
 
40657
{
 
40658
    return false;
 
40659
}
 
40660
 
 
40661
    break;
 
40662
    }
 
40663
    case HASH_ATTRIBUTE_PARAM:
 
40664
    {
 
40665
 
 
40666
attributeData->param = attributeValue;
 
40667
#ifdef GENERATEDSAXPARSER_VALIDATION
 
40668
    if ( mValidate )
 
40669
    {
 
40670
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
40671
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
40672
    {
 
40673
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
40674
            simpleTypeValidationResult,
 
40675
            HASH_ELEMENT_FOG_END,
 
40676
            HASH_ATTRIBUTE_PARAM,
 
40677
            attributeValue) )
 
40678
        {
 
40679
            return false;
 
40680
        }
 
40681
    }
 
40682
    } // validation
 
40683
#endif
 
40684
 
 
40685
    break;
 
40686
    }
 
40687
    default:
 
40688
    {
 
40689
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FOG_END, attribute, attributeValue))
 
40690
            {return false;}
 
40691
    }
 
40692
    }
 
40693
    }
 
40694
}
 
40695
 
 
40696
 
 
40697
    return true;
 
40698
}
 
40699
 
 
40700
//---------------------------------------------------------------------
 
40701
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__fog_end()
 
40702
{
 
40703
#ifdef GENERATEDSAXPARSER_VALIDATION
 
40704
    if ( mValidate )
 
40705
    {
 
40706
 
 
40707
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__fog_end();
 
40708
        if ( !validationResult ) return false;
 
40709
 
 
40710
    } // validation
 
40711
#endif
 
40712
 
 
40713
    return true;
 
40714
}
 
40715
 
 
40716
//---------------------------------------------------------------------
 
40717
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__fog_end( void* attributeData )
 
40718
{
 
40719
    profile_GLSL__technique__pass__states__fog_end__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__fog_end__AttributeData*>(attributeData);
 
40720
 
 
40721
    typedAttributeData->~profile_GLSL__technique__pass__states__fog_end__AttributeData();
 
40722
 
 
40723
    return true;
 
40724
}
 
40725
 
 
40726
//---------------------------------------------------------------------
 
40727
const profile_GLSL__technique__pass__states__fog_color__AttributeData profile_GLSL__technique__pass__states__fog_color__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<float>(), 0};
 
40728
 
 
40729
//---------------------------------------------------------------------
 
40730
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__fog_color( const ParserChar* text, size_t textLength )
 
40731
{
 
40732
    return true;
 
40733
}
 
40734
 
 
40735
//---------------------------------------------------------------------
 
40736
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__fog_color( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
40737
{
 
40738
#ifdef GENERATEDSAXPARSER_VALIDATION
 
40739
    if ( mValidate )
 
40740
    {
 
40741
 
 
40742
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__fog_color( attributes, attributeDataPtr, validationDataPtr );
 
40743
        if ( !validationResult ) return false;
 
40744
 
 
40745
    } // validation
 
40746
#endif
 
40747
 
 
40748
profile_GLSL__technique__pass__states__fog_color__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__fog_color__AttributeData>(attributeDataPtr);
 
40749
 
 
40750
const ParserChar** attributeArray = attributes.attributes;
 
40751
if ( attributeArray )
 
40752
{
 
40753
    while (true)
 
40754
    {
 
40755
        const ParserChar * attribute = *attributeArray;
 
40756
        if ( !attribute )
 
40757
            break;
 
40758
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
40759
        attributeArray++;
 
40760
        if ( !attributeArray )
 
40761
            return false;
 
40762
        const ParserChar* attributeValue = *attributeArray;
 
40763
        attributeArray++;
 
40764
 
 
40765
 
 
40766
    switch ( hash )
 
40767
    {
 
40768
    case HASH_ATTRIBUTE_VALUE:
 
40769
    {
 
40770
bool failed;
 
40771
#ifdef GENERATEDSAXPARSER_VALIDATION
 
40772
    if ( mValidate )
 
40773
    {
 
40774
failed = !characterData2FloatList(attributeValue, attributeData->value, 0, HASH_ELEMENT_FOG_COLOR, HASH_ATTRIBUTE_VALUE);
 
40775
    }
 
40776
    else
 
40777
    {
 
40778
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
40779
    }
 
40780
#else
 
40781
    {
 
40782
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
40783
    } // validation
 
40784
#endif
 
40785
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
40786
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
40787
        HASH_ELEMENT_FOG_COLOR,
 
40788
        HASH_ATTRIBUTE_VALUE,
 
40789
        attributeValue))
 
40790
{
 
40791
    return false;
 
40792
}
 
40793
#ifdef GENERATEDSAXPARSER_VALIDATION
 
40794
    if ( mValidate )
 
40795
    {
 
40796
    ParserError::ErrorType simpleTypeValidationResult = validate__float4_type(attributeData->value.data, attributeData->value.size);
 
40797
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
40798
    {
 
40799
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
40800
            simpleTypeValidationResult,
 
40801
            HASH_ELEMENT_FOG_COLOR,
 
40802
            HASH_ATTRIBUTE_VALUE,
 
40803
            attributeValue) )
 
40804
        {
 
40805
            return false;
 
40806
        }
 
40807
    }
 
40808
    } // validation
 
40809
#endif
 
40810
 
 
40811
if ( !failed )
 
40812
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__fog_color__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
40813
 
 
40814
    break;
 
40815
    }
 
40816
    case HASH_ATTRIBUTE_PARAM:
 
40817
    {
 
40818
 
 
40819
attributeData->param = attributeValue;
 
40820
#ifdef GENERATEDSAXPARSER_VALIDATION
 
40821
    if ( mValidate )
 
40822
    {
 
40823
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
40824
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
40825
    {
 
40826
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
40827
            simpleTypeValidationResult,
 
40828
            HASH_ELEMENT_FOG_COLOR,
 
40829
            HASH_ATTRIBUTE_PARAM,
 
40830
            attributeValue) )
 
40831
        {
 
40832
            return false;
 
40833
        }
 
40834
    }
 
40835
    } // validation
 
40836
#endif
 
40837
 
 
40838
    break;
 
40839
    }
 
40840
    default:
 
40841
    {
 
40842
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FOG_COLOR, attribute, attributeValue))
 
40843
            {return false;}
 
40844
    }
 
40845
    }
 
40846
    }
 
40847
}
 
40848
if ((attributeData->present_attributes & profile_GLSL__technique__pass__states__fog_color__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
40849
{
 
40850
    bool failed;
 
40851
    failed = !characterData2FloatList("0.0E1 0.0E1 0.0E1 0.0E1", attributeData->value);
 
40852
    if ( !failed )
 
40853
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__fog_color__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
40854
}
 
40855
 
 
40856
 
 
40857
    return true;
 
40858
}
 
40859
 
 
40860
//---------------------------------------------------------------------
 
40861
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__fog_color()
 
40862
{
 
40863
#ifdef GENERATEDSAXPARSER_VALIDATION
 
40864
    if ( mValidate )
 
40865
    {
 
40866
 
 
40867
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__fog_color();
 
40868
        if ( !validationResult ) return false;
 
40869
 
 
40870
    } // validation
 
40871
#endif
 
40872
 
 
40873
    return true;
 
40874
}
 
40875
 
 
40876
//---------------------------------------------------------------------
 
40877
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__fog_color( void* attributeData )
 
40878
{
 
40879
    profile_GLSL__technique__pass__states__fog_color__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__fog_color__AttributeData*>(attributeData);
 
40880
    if (typedAttributeData->value.data)
 
40881
    {
 
40882
        mStackMemoryManager.deleteObject();
 
40883
    }
 
40884
 
 
40885
 
 
40886
    typedAttributeData->~profile_GLSL__technique__pass__states__fog_color__AttributeData();
 
40887
 
 
40888
    return true;
 
40889
}
 
40890
 
 
40891
//---------------------------------------------------------------------
 
40892
const profile_GLSL__technique__pass__states__light_model_ambient__AttributeData profile_GLSL__technique__pass__states__light_model_ambient__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<float>(), 0};
 
40893
 
 
40894
//---------------------------------------------------------------------
 
40895
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__light_model_ambient( const ParserChar* text, size_t textLength )
 
40896
{
 
40897
    return true;
 
40898
}
 
40899
 
 
40900
//---------------------------------------------------------------------
 
40901
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__light_model_ambient( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
40902
{
 
40903
#ifdef GENERATEDSAXPARSER_VALIDATION
 
40904
    if ( mValidate )
 
40905
    {
 
40906
 
 
40907
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__light_model_ambient( attributes, attributeDataPtr, validationDataPtr );
 
40908
        if ( !validationResult ) return false;
 
40909
 
 
40910
    } // validation
 
40911
#endif
 
40912
 
 
40913
profile_GLSL__technique__pass__states__light_model_ambient__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__light_model_ambient__AttributeData>(attributeDataPtr);
 
40914
 
 
40915
const ParserChar** attributeArray = attributes.attributes;
 
40916
if ( attributeArray )
 
40917
{
 
40918
    while (true)
 
40919
    {
 
40920
        const ParserChar * attribute = *attributeArray;
 
40921
        if ( !attribute )
 
40922
            break;
 
40923
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
40924
        attributeArray++;
 
40925
        if ( !attributeArray )
 
40926
            return false;
 
40927
        const ParserChar* attributeValue = *attributeArray;
 
40928
        attributeArray++;
 
40929
 
 
40930
 
 
40931
    switch ( hash )
 
40932
    {
 
40933
    case HASH_ATTRIBUTE_VALUE:
 
40934
    {
 
40935
bool failed;
 
40936
#ifdef GENERATEDSAXPARSER_VALIDATION
 
40937
    if ( mValidate )
 
40938
    {
 
40939
failed = !characterData2FloatList(attributeValue, attributeData->value, 0, HASH_ELEMENT_LIGHT_MODEL_AMBIENT, HASH_ATTRIBUTE_VALUE);
 
40940
    }
 
40941
    else
 
40942
    {
 
40943
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
40944
    }
 
40945
#else
 
40946
    {
 
40947
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
40948
    } // validation
 
40949
#endif
 
40950
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
40951
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
40952
        HASH_ELEMENT_LIGHT_MODEL_AMBIENT,
 
40953
        HASH_ATTRIBUTE_VALUE,
 
40954
        attributeValue))
 
40955
{
 
40956
    return false;
 
40957
}
 
40958
#ifdef GENERATEDSAXPARSER_VALIDATION
 
40959
    if ( mValidate )
 
40960
    {
 
40961
    ParserError::ErrorType simpleTypeValidationResult = validate__float4_type(attributeData->value.data, attributeData->value.size);
 
40962
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
40963
    {
 
40964
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
40965
            simpleTypeValidationResult,
 
40966
            HASH_ELEMENT_LIGHT_MODEL_AMBIENT,
 
40967
            HASH_ATTRIBUTE_VALUE,
 
40968
            attributeValue) )
 
40969
        {
 
40970
            return false;
 
40971
        }
 
40972
    }
 
40973
    } // validation
 
40974
#endif
 
40975
 
 
40976
if ( !failed )
 
40977
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__light_model_ambient__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
40978
 
 
40979
    break;
 
40980
    }
 
40981
    case HASH_ATTRIBUTE_PARAM:
 
40982
    {
 
40983
 
 
40984
attributeData->param = attributeValue;
 
40985
#ifdef GENERATEDSAXPARSER_VALIDATION
 
40986
    if ( mValidate )
 
40987
    {
 
40988
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
40989
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
40990
    {
 
40991
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
40992
            simpleTypeValidationResult,
 
40993
            HASH_ELEMENT_LIGHT_MODEL_AMBIENT,
 
40994
            HASH_ATTRIBUTE_PARAM,
 
40995
            attributeValue) )
 
40996
        {
 
40997
            return false;
 
40998
        }
 
40999
    }
 
41000
    } // validation
 
41001
#endif
 
41002
 
 
41003
    break;
 
41004
    }
 
41005
    default:
 
41006
    {
 
41007
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIGHT_MODEL_AMBIENT, attribute, attributeValue))
 
41008
            {return false;}
 
41009
    }
 
41010
    }
 
41011
    }
 
41012
}
 
41013
if ((attributeData->present_attributes & profile_GLSL__technique__pass__states__light_model_ambient__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
41014
{
 
41015
    bool failed;
 
41016
    failed = !characterData2FloatList("2.0E-1 2.0E-1 2.0E-1 1.0E0", attributeData->value);
 
41017
    if ( !failed )
 
41018
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__light_model_ambient__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
41019
}
 
41020
 
 
41021
 
 
41022
    return true;
 
41023
}
 
41024
 
 
41025
//---------------------------------------------------------------------
 
41026
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__light_model_ambient()
 
41027
{
 
41028
#ifdef GENERATEDSAXPARSER_VALIDATION
 
41029
    if ( mValidate )
 
41030
    {
 
41031
 
 
41032
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__light_model_ambient();
 
41033
        if ( !validationResult ) return false;
 
41034
 
 
41035
    } // validation
 
41036
#endif
 
41037
 
 
41038
    return true;
 
41039
}
 
41040
 
 
41041
//---------------------------------------------------------------------
 
41042
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__light_model_ambient( void* attributeData )
 
41043
{
 
41044
    profile_GLSL__technique__pass__states__light_model_ambient__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__light_model_ambient__AttributeData*>(attributeData);
 
41045
    if (typedAttributeData->value.data)
 
41046
    {
 
41047
        mStackMemoryManager.deleteObject();
 
41048
    }
 
41049
 
 
41050
 
 
41051
    typedAttributeData->~profile_GLSL__technique__pass__states__light_model_ambient__AttributeData();
 
41052
 
 
41053
    return true;
 
41054
}
 
41055
 
 
41056
//---------------------------------------------------------------------
 
41057
const profile_GLSL__technique__pass__states__lighting_enable__AttributeData profile_GLSL__technique__pass__states__lighting_enable__AttributeData::DEFAULT = {false, 0};
 
41058
 
 
41059
//---------------------------------------------------------------------
 
41060
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__lighting_enable( const ParserChar* text, size_t textLength )
 
41061
{
 
41062
    return true;
 
41063
}
 
41064
 
 
41065
//---------------------------------------------------------------------
 
41066
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__lighting_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
41067
{
 
41068
#ifdef GENERATEDSAXPARSER_VALIDATION
 
41069
    if ( mValidate )
 
41070
    {
 
41071
 
 
41072
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__lighting_enable( attributes, attributeDataPtr, validationDataPtr );
 
41073
        if ( !validationResult ) return false;
 
41074
 
 
41075
    } // validation
 
41076
#endif
 
41077
 
 
41078
profile_GLSL__technique__pass__states__lighting_enable__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__lighting_enable__AttributeData>(attributeDataPtr);
 
41079
 
 
41080
const ParserChar** attributeArray = attributes.attributes;
 
41081
if ( attributeArray )
 
41082
{
 
41083
    while (true)
 
41084
    {
 
41085
        const ParserChar * attribute = *attributeArray;
 
41086
        if ( !attribute )
 
41087
            break;
 
41088
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
41089
        attributeArray++;
 
41090
        if ( !attributeArray )
 
41091
            return false;
 
41092
        const ParserChar* attributeValue = *attributeArray;
 
41093
        attributeArray++;
 
41094
 
 
41095
 
 
41096
    switch ( hash )
 
41097
    {
 
41098
    case HASH_ATTRIBUTE_VALUE:
 
41099
    {
 
41100
bool failed;
 
41101
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
41102
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
41103
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
41104
        HASH_ELEMENT_LIGHTING_ENABLE,
 
41105
        HASH_ATTRIBUTE_VALUE,
 
41106
        attributeValue))
 
41107
{
 
41108
    return false;
 
41109
}
 
41110
 
 
41111
    break;
 
41112
    }
 
41113
    case HASH_ATTRIBUTE_PARAM:
 
41114
    {
 
41115
 
 
41116
attributeData->param = attributeValue;
 
41117
#ifdef GENERATEDSAXPARSER_VALIDATION
 
41118
    if ( mValidate )
 
41119
    {
 
41120
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
41121
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
41122
    {
 
41123
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
41124
            simpleTypeValidationResult,
 
41125
            HASH_ELEMENT_LIGHTING_ENABLE,
 
41126
            HASH_ATTRIBUTE_PARAM,
 
41127
            attributeValue) )
 
41128
        {
 
41129
            return false;
 
41130
        }
 
41131
    }
 
41132
    } // validation
 
41133
#endif
 
41134
 
 
41135
    break;
 
41136
    }
 
41137
    default:
 
41138
    {
 
41139
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIGHTING_ENABLE, attribute, attributeValue))
 
41140
            {return false;}
 
41141
    }
 
41142
    }
 
41143
    }
 
41144
}
 
41145
 
 
41146
 
 
41147
    return true;
 
41148
}
 
41149
 
 
41150
//---------------------------------------------------------------------
 
41151
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__lighting_enable()
 
41152
{
 
41153
#ifdef GENERATEDSAXPARSER_VALIDATION
 
41154
    if ( mValidate )
 
41155
    {
 
41156
 
 
41157
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__lighting_enable();
 
41158
        if ( !validationResult ) return false;
 
41159
 
 
41160
    } // validation
 
41161
#endif
 
41162
 
 
41163
    return true;
 
41164
}
 
41165
 
 
41166
//---------------------------------------------------------------------
 
41167
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__lighting_enable( void* attributeData )
 
41168
{
 
41169
    profile_GLSL__technique__pass__states__lighting_enable__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__lighting_enable__AttributeData*>(attributeData);
 
41170
 
 
41171
    typedAttributeData->~profile_GLSL__technique__pass__states__lighting_enable__AttributeData();
 
41172
 
 
41173
    return true;
 
41174
}
 
41175
 
 
41176
//---------------------------------------------------------------------
 
41177
const line_stipple__AttributeData line_stipple__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<sint64>(), 0};
 
41178
 
 
41179
//---------------------------------------------------------------------
 
41180
bool ColladaParserAutoGen15Private::_data__line_stipple( const ParserChar* text, size_t textLength )
 
41181
{
 
41182
    return true;
 
41183
}
 
41184
 
 
41185
//---------------------------------------------------------------------
 
41186
bool ColladaParserAutoGen15Private::_preBegin__line_stipple( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
41187
{
 
41188
#ifdef GENERATEDSAXPARSER_VALIDATION
 
41189
    if ( mValidate )
 
41190
    {
 
41191
 
 
41192
        bool validationResult = _validateBegin__line_stipple( attributes, attributeDataPtr, validationDataPtr );
 
41193
        if ( !validationResult ) return false;
 
41194
 
 
41195
    } // validation
 
41196
#endif
 
41197
 
 
41198
line_stipple__AttributeData* attributeData = newData<line_stipple__AttributeData>(attributeDataPtr);
 
41199
 
 
41200
const ParserChar** attributeArray = attributes.attributes;
 
41201
if ( attributeArray )
 
41202
{
 
41203
    while (true)
 
41204
    {
 
41205
        const ParserChar * attribute = *attributeArray;
 
41206
        if ( !attribute )
 
41207
            break;
 
41208
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
41209
        attributeArray++;
 
41210
        if ( !attributeArray )
 
41211
            return false;
 
41212
        const ParserChar* attributeValue = *attributeArray;
 
41213
        attributeArray++;
 
41214
 
 
41215
 
 
41216
    switch ( hash )
 
41217
    {
 
41218
    case HASH_ATTRIBUTE_VALUE:
 
41219
    {
 
41220
bool failed;
 
41221
#ifdef GENERATEDSAXPARSER_VALIDATION
 
41222
    if ( mValidate )
 
41223
    {
 
41224
failed = !characterData2Sint64List(attributeValue, attributeData->value, 0, HASH_ELEMENT_LINE_STIPPLE, HASH_ATTRIBUTE_VALUE);
 
41225
    }
 
41226
    else
 
41227
    {
 
41228
failed = !characterData2Sint64List(attributeValue, attributeData->value);
 
41229
    }
 
41230
#else
 
41231
    {
 
41232
failed = !characterData2Sint64List(attributeValue, attributeData->value);
 
41233
    } // validation
 
41234
#endif
 
41235
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
41236
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
41237
        HASH_ELEMENT_LINE_STIPPLE,
 
41238
        HASH_ATTRIBUTE_VALUE,
 
41239
        attributeValue))
 
41240
{
 
41241
    return false;
 
41242
}
 
41243
#ifdef GENERATEDSAXPARSER_VALIDATION
 
41244
    if ( mValidate )
 
41245
    {
 
41246
    ParserError::ErrorType simpleTypeValidationResult = validate__int2_type(attributeData->value.data, attributeData->value.size);
 
41247
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
41248
    {
 
41249
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
41250
            simpleTypeValidationResult,
 
41251
            HASH_ELEMENT_LINE_STIPPLE,
 
41252
            HASH_ATTRIBUTE_VALUE,
 
41253
            attributeValue) )
 
41254
        {
 
41255
            return false;
 
41256
        }
 
41257
    }
 
41258
    } // validation
 
41259
#endif
 
41260
 
 
41261
if ( !failed )
 
41262
    attributeData->present_attributes |= line_stipple__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
41263
 
 
41264
    break;
 
41265
    }
 
41266
    case HASH_ATTRIBUTE_PARAM:
 
41267
    {
 
41268
 
 
41269
attributeData->param = attributeValue;
 
41270
#ifdef GENERATEDSAXPARSER_VALIDATION
 
41271
    if ( mValidate )
 
41272
    {
 
41273
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
41274
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
41275
    {
 
41276
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
41277
            simpleTypeValidationResult,
 
41278
            HASH_ELEMENT_LINE_STIPPLE,
 
41279
            HASH_ATTRIBUTE_PARAM,
 
41280
            attributeValue) )
 
41281
        {
 
41282
            return false;
 
41283
        }
 
41284
    }
 
41285
    } // validation
 
41286
#endif
 
41287
 
 
41288
    break;
 
41289
    }
 
41290
    default:
 
41291
    {
 
41292
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LINE_STIPPLE, attribute, attributeValue))
 
41293
            {return false;}
 
41294
    }
 
41295
    }
 
41296
    }
 
41297
}
 
41298
if ((attributeData->present_attributes & line_stipple__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
41299
{
 
41300
    bool failed;
 
41301
    failed = !characterData2Sint64List("1 65536", attributeData->value);
 
41302
    if ( !failed )
 
41303
    attributeData->present_attributes |= line_stipple__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
41304
}
 
41305
 
 
41306
 
 
41307
    return true;
 
41308
}
 
41309
 
 
41310
//---------------------------------------------------------------------
 
41311
bool ColladaParserAutoGen15Private::_preEnd__line_stipple()
 
41312
{
 
41313
#ifdef GENERATEDSAXPARSER_VALIDATION
 
41314
    if ( mValidate )
 
41315
    {
 
41316
 
 
41317
        bool validationResult = _validateEnd__line_stipple();
 
41318
        if ( !validationResult ) return false;
 
41319
 
 
41320
    } // validation
 
41321
#endif
 
41322
 
 
41323
    return true;
 
41324
}
 
41325
 
 
41326
//---------------------------------------------------------------------
 
41327
bool ColladaParserAutoGen15Private::_freeAttributes__line_stipple( void* attributeData )
 
41328
{
 
41329
    line_stipple__AttributeData* typedAttributeData = static_cast<line_stipple__AttributeData*>(attributeData);
 
41330
    if (typedAttributeData->value.data)
 
41331
    {
 
41332
        mStackMemoryManager.deleteObject();
 
41333
    }
 
41334
 
 
41335
 
 
41336
    typedAttributeData->~line_stipple__AttributeData();
 
41337
 
 
41338
    return true;
 
41339
}
 
41340
 
 
41341
//---------------------------------------------------------------------
 
41342
const profile_GLSL__technique__pass__states__line_width__AttributeData profile_GLSL__technique__pass__states__line_width__AttributeData::DEFAULT = {1.0E0, 0};
 
41343
 
 
41344
//---------------------------------------------------------------------
 
41345
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__line_width( const ParserChar* text, size_t textLength )
 
41346
{
 
41347
    return true;
 
41348
}
 
41349
 
 
41350
//---------------------------------------------------------------------
 
41351
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__line_width( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
41352
{
 
41353
#ifdef GENERATEDSAXPARSER_VALIDATION
 
41354
    if ( mValidate )
 
41355
    {
 
41356
 
 
41357
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__line_width( attributes, attributeDataPtr, validationDataPtr );
 
41358
        if ( !validationResult ) return false;
 
41359
 
 
41360
    } // validation
 
41361
#endif
 
41362
 
 
41363
profile_GLSL__technique__pass__states__line_width__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__line_width__AttributeData>(attributeDataPtr);
 
41364
 
 
41365
const ParserChar** attributeArray = attributes.attributes;
 
41366
if ( attributeArray )
 
41367
{
 
41368
    while (true)
 
41369
    {
 
41370
        const ParserChar * attribute = *attributeArray;
 
41371
        if ( !attribute )
 
41372
            break;
 
41373
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
41374
        attributeArray++;
 
41375
        if ( !attributeArray )
 
41376
            return false;
 
41377
        const ParserChar* attributeValue = *attributeArray;
 
41378
        attributeArray++;
 
41379
 
 
41380
 
 
41381
    switch ( hash )
 
41382
    {
 
41383
    case HASH_ATTRIBUTE_VALUE:
 
41384
    {
 
41385
bool failed;
 
41386
attributeData->value = GeneratedSaxParser::Utils::toFloat(attributeValue, failed);
 
41387
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
41388
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
41389
        HASH_ELEMENT_LINE_WIDTH,
 
41390
        HASH_ATTRIBUTE_VALUE,
 
41391
        attributeValue))
 
41392
{
 
41393
    return false;
 
41394
}
 
41395
 
 
41396
    break;
 
41397
    }
 
41398
    case HASH_ATTRIBUTE_PARAM:
 
41399
    {
 
41400
 
 
41401
attributeData->param = attributeValue;
 
41402
#ifdef GENERATEDSAXPARSER_VALIDATION
 
41403
    if ( mValidate )
 
41404
    {
 
41405
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
41406
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
41407
    {
 
41408
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
41409
            simpleTypeValidationResult,
 
41410
            HASH_ELEMENT_LINE_WIDTH,
 
41411
            HASH_ATTRIBUTE_PARAM,
 
41412
            attributeValue) )
 
41413
        {
 
41414
            return false;
 
41415
        }
 
41416
    }
 
41417
    } // validation
 
41418
#endif
 
41419
 
 
41420
    break;
 
41421
    }
 
41422
    default:
 
41423
    {
 
41424
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LINE_WIDTH, attribute, attributeValue))
 
41425
            {return false;}
 
41426
    }
 
41427
    }
 
41428
    }
 
41429
}
 
41430
 
 
41431
 
 
41432
    return true;
 
41433
}
 
41434
 
 
41435
//---------------------------------------------------------------------
 
41436
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__line_width()
 
41437
{
 
41438
#ifdef GENERATEDSAXPARSER_VALIDATION
 
41439
    if ( mValidate )
 
41440
    {
 
41441
 
 
41442
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__line_width();
 
41443
        if ( !validationResult ) return false;
 
41444
 
 
41445
    } // validation
 
41446
#endif
 
41447
 
 
41448
    return true;
 
41449
}
 
41450
 
 
41451
//---------------------------------------------------------------------
 
41452
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__line_width( void* attributeData )
 
41453
{
 
41454
    profile_GLSL__technique__pass__states__line_width__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__line_width__AttributeData*>(attributeData);
 
41455
 
 
41456
    typedAttributeData->~profile_GLSL__technique__pass__states__line_width__AttributeData();
 
41457
 
 
41458
    return true;
 
41459
}
 
41460
 
 
41461
//---------------------------------------------------------------------
 
41462
const profile_GLSL__technique__pass__states__material_ambient__AttributeData profile_GLSL__technique__pass__states__material_ambient__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<float>(), 0};
 
41463
 
 
41464
//---------------------------------------------------------------------
 
41465
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__material_ambient( const ParserChar* text, size_t textLength )
 
41466
{
 
41467
    return true;
 
41468
}
 
41469
 
 
41470
//---------------------------------------------------------------------
 
41471
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__material_ambient( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
41472
{
 
41473
#ifdef GENERATEDSAXPARSER_VALIDATION
 
41474
    if ( mValidate )
 
41475
    {
 
41476
 
 
41477
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__material_ambient( attributes, attributeDataPtr, validationDataPtr );
 
41478
        if ( !validationResult ) return false;
 
41479
 
 
41480
    } // validation
 
41481
#endif
 
41482
 
 
41483
profile_GLSL__technique__pass__states__material_ambient__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__material_ambient__AttributeData>(attributeDataPtr);
 
41484
 
 
41485
const ParserChar** attributeArray = attributes.attributes;
 
41486
if ( attributeArray )
 
41487
{
 
41488
    while (true)
 
41489
    {
 
41490
        const ParserChar * attribute = *attributeArray;
 
41491
        if ( !attribute )
 
41492
            break;
 
41493
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
41494
        attributeArray++;
 
41495
        if ( !attributeArray )
 
41496
            return false;
 
41497
        const ParserChar* attributeValue = *attributeArray;
 
41498
        attributeArray++;
 
41499
 
 
41500
 
 
41501
    switch ( hash )
 
41502
    {
 
41503
    case HASH_ATTRIBUTE_VALUE:
 
41504
    {
 
41505
bool failed;
 
41506
#ifdef GENERATEDSAXPARSER_VALIDATION
 
41507
    if ( mValidate )
 
41508
    {
 
41509
failed = !characterData2FloatList(attributeValue, attributeData->value, 0, HASH_ELEMENT_MATERIAL_AMBIENT, HASH_ATTRIBUTE_VALUE);
 
41510
    }
 
41511
    else
 
41512
    {
 
41513
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
41514
    }
 
41515
#else
 
41516
    {
 
41517
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
41518
    } // validation
 
41519
#endif
 
41520
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
41521
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
41522
        HASH_ELEMENT_MATERIAL_AMBIENT,
 
41523
        HASH_ATTRIBUTE_VALUE,
 
41524
        attributeValue))
 
41525
{
 
41526
    return false;
 
41527
}
 
41528
#ifdef GENERATEDSAXPARSER_VALIDATION
 
41529
    if ( mValidate )
 
41530
    {
 
41531
    ParserError::ErrorType simpleTypeValidationResult = validate__float4_type(attributeData->value.data, attributeData->value.size);
 
41532
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
41533
    {
 
41534
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
41535
            simpleTypeValidationResult,
 
41536
            HASH_ELEMENT_MATERIAL_AMBIENT,
 
41537
            HASH_ATTRIBUTE_VALUE,
 
41538
            attributeValue) )
 
41539
        {
 
41540
            return false;
 
41541
        }
 
41542
    }
 
41543
    } // validation
 
41544
#endif
 
41545
 
 
41546
if ( !failed )
 
41547
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__material_ambient__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
41548
 
 
41549
    break;
 
41550
    }
 
41551
    case HASH_ATTRIBUTE_PARAM:
 
41552
    {
 
41553
 
 
41554
attributeData->param = attributeValue;
 
41555
#ifdef GENERATEDSAXPARSER_VALIDATION
 
41556
    if ( mValidate )
 
41557
    {
 
41558
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
41559
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
41560
    {
 
41561
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
41562
            simpleTypeValidationResult,
 
41563
            HASH_ELEMENT_MATERIAL_AMBIENT,
 
41564
            HASH_ATTRIBUTE_PARAM,
 
41565
            attributeValue) )
 
41566
        {
 
41567
            return false;
 
41568
        }
 
41569
    }
 
41570
    } // validation
 
41571
#endif
 
41572
 
 
41573
    break;
 
41574
    }
 
41575
    default:
 
41576
    {
 
41577
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_MATERIAL_AMBIENT, attribute, attributeValue))
 
41578
            {return false;}
 
41579
    }
 
41580
    }
 
41581
    }
 
41582
}
 
41583
if ((attributeData->present_attributes & profile_GLSL__technique__pass__states__material_ambient__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
41584
{
 
41585
    bool failed;
 
41586
    failed = !characterData2FloatList("2.0E-1 2.0E-1 2.0E-1 1.0E0", attributeData->value);
 
41587
    if ( !failed )
 
41588
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__material_ambient__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
41589
}
 
41590
 
 
41591
 
 
41592
    return true;
 
41593
}
 
41594
 
 
41595
//---------------------------------------------------------------------
 
41596
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__material_ambient()
 
41597
{
 
41598
#ifdef GENERATEDSAXPARSER_VALIDATION
 
41599
    if ( mValidate )
 
41600
    {
 
41601
 
 
41602
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__material_ambient();
 
41603
        if ( !validationResult ) return false;
 
41604
 
 
41605
    } // validation
 
41606
#endif
 
41607
 
 
41608
    return true;
 
41609
}
 
41610
 
 
41611
//---------------------------------------------------------------------
 
41612
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__material_ambient( void* attributeData )
 
41613
{
 
41614
    profile_GLSL__technique__pass__states__material_ambient__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__material_ambient__AttributeData*>(attributeData);
 
41615
    if (typedAttributeData->value.data)
 
41616
    {
 
41617
        mStackMemoryManager.deleteObject();
 
41618
    }
 
41619
 
 
41620
 
 
41621
    typedAttributeData->~profile_GLSL__technique__pass__states__material_ambient__AttributeData();
 
41622
 
 
41623
    return true;
 
41624
}
 
41625
 
 
41626
//---------------------------------------------------------------------
 
41627
const profile_GLSL__technique__pass__states__material_diffuse__AttributeData profile_GLSL__technique__pass__states__material_diffuse__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<float>(), 0};
 
41628
 
 
41629
//---------------------------------------------------------------------
 
41630
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__material_diffuse( const ParserChar* text, size_t textLength )
 
41631
{
 
41632
    return true;
 
41633
}
 
41634
 
 
41635
//---------------------------------------------------------------------
 
41636
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__material_diffuse( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
41637
{
 
41638
#ifdef GENERATEDSAXPARSER_VALIDATION
 
41639
    if ( mValidate )
 
41640
    {
 
41641
 
 
41642
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__material_diffuse( attributes, attributeDataPtr, validationDataPtr );
 
41643
        if ( !validationResult ) return false;
 
41644
 
 
41645
    } // validation
 
41646
#endif
 
41647
 
 
41648
profile_GLSL__technique__pass__states__material_diffuse__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__material_diffuse__AttributeData>(attributeDataPtr);
 
41649
 
 
41650
const ParserChar** attributeArray = attributes.attributes;
 
41651
if ( attributeArray )
 
41652
{
 
41653
    while (true)
 
41654
    {
 
41655
        const ParserChar * attribute = *attributeArray;
 
41656
        if ( !attribute )
 
41657
            break;
 
41658
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
41659
        attributeArray++;
 
41660
        if ( !attributeArray )
 
41661
            return false;
 
41662
        const ParserChar* attributeValue = *attributeArray;
 
41663
        attributeArray++;
 
41664
 
 
41665
 
 
41666
    switch ( hash )
 
41667
    {
 
41668
    case HASH_ATTRIBUTE_VALUE:
 
41669
    {
 
41670
bool failed;
 
41671
#ifdef GENERATEDSAXPARSER_VALIDATION
 
41672
    if ( mValidate )
 
41673
    {
 
41674
failed = !characterData2FloatList(attributeValue, attributeData->value, 0, HASH_ELEMENT_MATERIAL_DIFFUSE, HASH_ATTRIBUTE_VALUE);
 
41675
    }
 
41676
    else
 
41677
    {
 
41678
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
41679
    }
 
41680
#else
 
41681
    {
 
41682
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
41683
    } // validation
 
41684
#endif
 
41685
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
41686
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
41687
        HASH_ELEMENT_MATERIAL_DIFFUSE,
 
41688
        HASH_ATTRIBUTE_VALUE,
 
41689
        attributeValue))
 
41690
{
 
41691
    return false;
 
41692
}
 
41693
#ifdef GENERATEDSAXPARSER_VALIDATION
 
41694
    if ( mValidate )
 
41695
    {
 
41696
    ParserError::ErrorType simpleTypeValidationResult = validate__float4_type(attributeData->value.data, attributeData->value.size);
 
41697
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
41698
    {
 
41699
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
41700
            simpleTypeValidationResult,
 
41701
            HASH_ELEMENT_MATERIAL_DIFFUSE,
 
41702
            HASH_ATTRIBUTE_VALUE,
 
41703
            attributeValue) )
 
41704
        {
 
41705
            return false;
 
41706
        }
 
41707
    }
 
41708
    } // validation
 
41709
#endif
 
41710
 
 
41711
if ( !failed )
 
41712
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__material_diffuse__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
41713
 
 
41714
    break;
 
41715
    }
 
41716
    case HASH_ATTRIBUTE_PARAM:
 
41717
    {
 
41718
 
 
41719
attributeData->param = attributeValue;
 
41720
#ifdef GENERATEDSAXPARSER_VALIDATION
 
41721
    if ( mValidate )
 
41722
    {
 
41723
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
41724
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
41725
    {
 
41726
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
41727
            simpleTypeValidationResult,
 
41728
            HASH_ELEMENT_MATERIAL_DIFFUSE,
 
41729
            HASH_ATTRIBUTE_PARAM,
 
41730
            attributeValue) )
 
41731
        {
 
41732
            return false;
 
41733
        }
 
41734
    }
 
41735
    } // validation
 
41736
#endif
 
41737
 
 
41738
    break;
 
41739
    }
 
41740
    default:
 
41741
    {
 
41742
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_MATERIAL_DIFFUSE, attribute, attributeValue))
 
41743
            {return false;}
 
41744
    }
 
41745
    }
 
41746
    }
 
41747
}
 
41748
if ((attributeData->present_attributes & profile_GLSL__technique__pass__states__material_diffuse__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
41749
{
 
41750
    bool failed;
 
41751
    failed = !characterData2FloatList("8.0E-1 8.0E-1 8.0E-1 1.0E0", attributeData->value);
 
41752
    if ( !failed )
 
41753
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__material_diffuse__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
41754
}
 
41755
 
 
41756
 
 
41757
    return true;
 
41758
}
 
41759
 
 
41760
//---------------------------------------------------------------------
 
41761
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__material_diffuse()
 
41762
{
 
41763
#ifdef GENERATEDSAXPARSER_VALIDATION
 
41764
    if ( mValidate )
 
41765
    {
 
41766
 
 
41767
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__material_diffuse();
 
41768
        if ( !validationResult ) return false;
 
41769
 
 
41770
    } // validation
 
41771
#endif
 
41772
 
 
41773
    return true;
 
41774
}
 
41775
 
 
41776
//---------------------------------------------------------------------
 
41777
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__material_diffuse( void* attributeData )
 
41778
{
 
41779
    profile_GLSL__technique__pass__states__material_diffuse__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__material_diffuse__AttributeData*>(attributeData);
 
41780
    if (typedAttributeData->value.data)
 
41781
    {
 
41782
        mStackMemoryManager.deleteObject();
 
41783
    }
 
41784
 
 
41785
 
 
41786
    typedAttributeData->~profile_GLSL__technique__pass__states__material_diffuse__AttributeData();
 
41787
 
 
41788
    return true;
 
41789
}
 
41790
 
 
41791
//---------------------------------------------------------------------
 
41792
const profile_GLSL__technique__pass__states__material_emission__AttributeData profile_GLSL__technique__pass__states__material_emission__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<float>(), 0};
 
41793
 
 
41794
//---------------------------------------------------------------------
 
41795
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__material_emission( const ParserChar* text, size_t textLength )
 
41796
{
 
41797
    return true;
 
41798
}
 
41799
 
 
41800
//---------------------------------------------------------------------
 
41801
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__material_emission( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
41802
{
 
41803
#ifdef GENERATEDSAXPARSER_VALIDATION
 
41804
    if ( mValidate )
 
41805
    {
 
41806
 
 
41807
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__material_emission( attributes, attributeDataPtr, validationDataPtr );
 
41808
        if ( !validationResult ) return false;
 
41809
 
 
41810
    } // validation
 
41811
#endif
 
41812
 
 
41813
profile_GLSL__technique__pass__states__material_emission__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__material_emission__AttributeData>(attributeDataPtr);
 
41814
 
 
41815
const ParserChar** attributeArray = attributes.attributes;
 
41816
if ( attributeArray )
 
41817
{
 
41818
    while (true)
 
41819
    {
 
41820
        const ParserChar * attribute = *attributeArray;
 
41821
        if ( !attribute )
 
41822
            break;
 
41823
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
41824
        attributeArray++;
 
41825
        if ( !attributeArray )
 
41826
            return false;
 
41827
        const ParserChar* attributeValue = *attributeArray;
 
41828
        attributeArray++;
 
41829
 
 
41830
 
 
41831
    switch ( hash )
 
41832
    {
 
41833
    case HASH_ATTRIBUTE_VALUE:
 
41834
    {
 
41835
bool failed;
 
41836
#ifdef GENERATEDSAXPARSER_VALIDATION
 
41837
    if ( mValidate )
 
41838
    {
 
41839
failed = !characterData2FloatList(attributeValue, attributeData->value, 0, HASH_ELEMENT_MATERIAL_EMISSION, HASH_ATTRIBUTE_VALUE);
 
41840
    }
 
41841
    else
 
41842
    {
 
41843
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
41844
    }
 
41845
#else
 
41846
    {
 
41847
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
41848
    } // validation
 
41849
#endif
 
41850
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
41851
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
41852
        HASH_ELEMENT_MATERIAL_EMISSION,
 
41853
        HASH_ATTRIBUTE_VALUE,
 
41854
        attributeValue))
 
41855
{
 
41856
    return false;
 
41857
}
 
41858
#ifdef GENERATEDSAXPARSER_VALIDATION
 
41859
    if ( mValidate )
 
41860
    {
 
41861
    ParserError::ErrorType simpleTypeValidationResult = validate__float4_type(attributeData->value.data, attributeData->value.size);
 
41862
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
41863
    {
 
41864
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
41865
            simpleTypeValidationResult,
 
41866
            HASH_ELEMENT_MATERIAL_EMISSION,
 
41867
            HASH_ATTRIBUTE_VALUE,
 
41868
            attributeValue) )
 
41869
        {
 
41870
            return false;
 
41871
        }
 
41872
    }
 
41873
    } // validation
 
41874
#endif
 
41875
 
 
41876
if ( !failed )
 
41877
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__material_emission__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
41878
 
 
41879
    break;
 
41880
    }
 
41881
    case HASH_ATTRIBUTE_PARAM:
 
41882
    {
 
41883
 
 
41884
attributeData->param = attributeValue;
 
41885
#ifdef GENERATEDSAXPARSER_VALIDATION
 
41886
    if ( mValidate )
 
41887
    {
 
41888
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
41889
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
41890
    {
 
41891
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
41892
            simpleTypeValidationResult,
 
41893
            HASH_ELEMENT_MATERIAL_EMISSION,
 
41894
            HASH_ATTRIBUTE_PARAM,
 
41895
            attributeValue) )
 
41896
        {
 
41897
            return false;
 
41898
        }
 
41899
    }
 
41900
    } // validation
 
41901
#endif
 
41902
 
 
41903
    break;
 
41904
    }
 
41905
    default:
 
41906
    {
 
41907
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_MATERIAL_EMISSION, attribute, attributeValue))
 
41908
            {return false;}
 
41909
    }
 
41910
    }
 
41911
    }
 
41912
}
 
41913
if ((attributeData->present_attributes & profile_GLSL__technique__pass__states__material_emission__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
41914
{
 
41915
    bool failed;
 
41916
    failed = !characterData2FloatList("0.0E1 0.0E1 0.0E1 1.0E0", attributeData->value);
 
41917
    if ( !failed )
 
41918
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__material_emission__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
41919
}
 
41920
 
 
41921
 
 
41922
    return true;
 
41923
}
 
41924
 
 
41925
//---------------------------------------------------------------------
 
41926
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__material_emission()
 
41927
{
 
41928
#ifdef GENERATEDSAXPARSER_VALIDATION
 
41929
    if ( mValidate )
 
41930
    {
 
41931
 
 
41932
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__material_emission();
 
41933
        if ( !validationResult ) return false;
 
41934
 
 
41935
    } // validation
 
41936
#endif
 
41937
 
 
41938
    return true;
 
41939
}
 
41940
 
 
41941
//---------------------------------------------------------------------
 
41942
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__material_emission( void* attributeData )
 
41943
{
 
41944
    profile_GLSL__technique__pass__states__material_emission__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__material_emission__AttributeData*>(attributeData);
 
41945
    if (typedAttributeData->value.data)
 
41946
    {
 
41947
        mStackMemoryManager.deleteObject();
 
41948
    }
 
41949
 
 
41950
 
 
41951
    typedAttributeData->~profile_GLSL__technique__pass__states__material_emission__AttributeData();
 
41952
 
 
41953
    return true;
 
41954
}
 
41955
 
 
41956
//---------------------------------------------------------------------
 
41957
const profile_GLSL__technique__pass__states__material_shininess__AttributeData profile_GLSL__technique__pass__states__material_shininess__AttributeData::DEFAULT = {0.0E1, 0};
 
41958
 
 
41959
//---------------------------------------------------------------------
 
41960
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__material_shininess( const ParserChar* text, size_t textLength )
 
41961
{
 
41962
    return true;
 
41963
}
 
41964
 
 
41965
//---------------------------------------------------------------------
 
41966
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__material_shininess( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
41967
{
 
41968
#ifdef GENERATEDSAXPARSER_VALIDATION
 
41969
    if ( mValidate )
 
41970
    {
 
41971
 
 
41972
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__material_shininess( attributes, attributeDataPtr, validationDataPtr );
 
41973
        if ( !validationResult ) return false;
 
41974
 
 
41975
    } // validation
 
41976
#endif
 
41977
 
 
41978
profile_GLSL__technique__pass__states__material_shininess__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__material_shininess__AttributeData>(attributeDataPtr);
 
41979
 
 
41980
const ParserChar** attributeArray = attributes.attributes;
 
41981
if ( attributeArray )
 
41982
{
 
41983
    while (true)
 
41984
    {
 
41985
        const ParserChar * attribute = *attributeArray;
 
41986
        if ( !attribute )
 
41987
            break;
 
41988
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
41989
        attributeArray++;
 
41990
        if ( !attributeArray )
 
41991
            return false;
 
41992
        const ParserChar* attributeValue = *attributeArray;
 
41993
        attributeArray++;
 
41994
 
 
41995
 
 
41996
    switch ( hash )
 
41997
    {
 
41998
    case HASH_ATTRIBUTE_VALUE:
 
41999
    {
 
42000
bool failed;
 
42001
attributeData->value = GeneratedSaxParser::Utils::toFloat(attributeValue, failed);
 
42002
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
42003
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
42004
        HASH_ELEMENT_MATERIAL_SHININESS,
 
42005
        HASH_ATTRIBUTE_VALUE,
 
42006
        attributeValue))
 
42007
{
 
42008
    return false;
 
42009
}
 
42010
 
 
42011
    break;
 
42012
    }
 
42013
    case HASH_ATTRIBUTE_PARAM:
 
42014
    {
 
42015
 
 
42016
attributeData->param = attributeValue;
 
42017
#ifdef GENERATEDSAXPARSER_VALIDATION
 
42018
    if ( mValidate )
 
42019
    {
 
42020
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
42021
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
42022
    {
 
42023
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
42024
            simpleTypeValidationResult,
 
42025
            HASH_ELEMENT_MATERIAL_SHININESS,
 
42026
            HASH_ATTRIBUTE_PARAM,
 
42027
            attributeValue) )
 
42028
        {
 
42029
            return false;
 
42030
        }
 
42031
    }
 
42032
    } // validation
 
42033
#endif
 
42034
 
 
42035
    break;
 
42036
    }
 
42037
    default:
 
42038
    {
 
42039
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_MATERIAL_SHININESS, attribute, attributeValue))
 
42040
            {return false;}
 
42041
    }
 
42042
    }
 
42043
    }
 
42044
}
 
42045
 
 
42046
 
 
42047
    return true;
 
42048
}
 
42049
 
 
42050
//---------------------------------------------------------------------
 
42051
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__material_shininess()
 
42052
{
 
42053
#ifdef GENERATEDSAXPARSER_VALIDATION
 
42054
    if ( mValidate )
 
42055
    {
 
42056
 
 
42057
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__material_shininess();
 
42058
        if ( !validationResult ) return false;
 
42059
 
 
42060
    } // validation
 
42061
#endif
 
42062
 
 
42063
    return true;
 
42064
}
 
42065
 
 
42066
//---------------------------------------------------------------------
 
42067
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__material_shininess( void* attributeData )
 
42068
{
 
42069
    profile_GLSL__technique__pass__states__material_shininess__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__material_shininess__AttributeData*>(attributeData);
 
42070
 
 
42071
    typedAttributeData->~profile_GLSL__technique__pass__states__material_shininess__AttributeData();
 
42072
 
 
42073
    return true;
 
42074
}
 
42075
 
 
42076
//---------------------------------------------------------------------
 
42077
const profile_GLSL__technique__pass__states__material_specular__AttributeData profile_GLSL__technique__pass__states__material_specular__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<float>(), 0};
 
42078
 
 
42079
//---------------------------------------------------------------------
 
42080
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__material_specular( const ParserChar* text, size_t textLength )
 
42081
{
 
42082
    return true;
 
42083
}
 
42084
 
 
42085
//---------------------------------------------------------------------
 
42086
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__material_specular( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
42087
{
 
42088
#ifdef GENERATEDSAXPARSER_VALIDATION
 
42089
    if ( mValidate )
 
42090
    {
 
42091
 
 
42092
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__material_specular( attributes, attributeDataPtr, validationDataPtr );
 
42093
        if ( !validationResult ) return false;
 
42094
 
 
42095
    } // validation
 
42096
#endif
 
42097
 
 
42098
profile_GLSL__technique__pass__states__material_specular__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__material_specular__AttributeData>(attributeDataPtr);
 
42099
 
 
42100
const ParserChar** attributeArray = attributes.attributes;
 
42101
if ( attributeArray )
 
42102
{
 
42103
    while (true)
 
42104
    {
 
42105
        const ParserChar * attribute = *attributeArray;
 
42106
        if ( !attribute )
 
42107
            break;
 
42108
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
42109
        attributeArray++;
 
42110
        if ( !attributeArray )
 
42111
            return false;
 
42112
        const ParserChar* attributeValue = *attributeArray;
 
42113
        attributeArray++;
 
42114
 
 
42115
 
 
42116
    switch ( hash )
 
42117
    {
 
42118
    case HASH_ATTRIBUTE_VALUE:
 
42119
    {
 
42120
bool failed;
 
42121
#ifdef GENERATEDSAXPARSER_VALIDATION
 
42122
    if ( mValidate )
 
42123
    {
 
42124
failed = !characterData2FloatList(attributeValue, attributeData->value, 0, HASH_ELEMENT_MATERIAL_SPECULAR, HASH_ATTRIBUTE_VALUE);
 
42125
    }
 
42126
    else
 
42127
    {
 
42128
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
42129
    }
 
42130
#else
 
42131
    {
 
42132
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
42133
    } // validation
 
42134
#endif
 
42135
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
42136
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
42137
        HASH_ELEMENT_MATERIAL_SPECULAR,
 
42138
        HASH_ATTRIBUTE_VALUE,
 
42139
        attributeValue))
 
42140
{
 
42141
    return false;
 
42142
}
 
42143
#ifdef GENERATEDSAXPARSER_VALIDATION
 
42144
    if ( mValidate )
 
42145
    {
 
42146
    ParserError::ErrorType simpleTypeValidationResult = validate__float4_type(attributeData->value.data, attributeData->value.size);
 
42147
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
42148
    {
 
42149
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
42150
            simpleTypeValidationResult,
 
42151
            HASH_ELEMENT_MATERIAL_SPECULAR,
 
42152
            HASH_ATTRIBUTE_VALUE,
 
42153
            attributeValue) )
 
42154
        {
 
42155
            return false;
 
42156
        }
 
42157
    }
 
42158
    } // validation
 
42159
#endif
 
42160
 
 
42161
if ( !failed )
 
42162
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__material_specular__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
42163
 
 
42164
    break;
 
42165
    }
 
42166
    case HASH_ATTRIBUTE_PARAM:
 
42167
    {
 
42168
 
 
42169
attributeData->param = attributeValue;
 
42170
#ifdef GENERATEDSAXPARSER_VALIDATION
 
42171
    if ( mValidate )
 
42172
    {
 
42173
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
42174
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
42175
    {
 
42176
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
42177
            simpleTypeValidationResult,
 
42178
            HASH_ELEMENT_MATERIAL_SPECULAR,
 
42179
            HASH_ATTRIBUTE_PARAM,
 
42180
            attributeValue) )
 
42181
        {
 
42182
            return false;
 
42183
        }
 
42184
    }
 
42185
    } // validation
 
42186
#endif
 
42187
 
 
42188
    break;
 
42189
    }
 
42190
    default:
 
42191
    {
 
42192
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_MATERIAL_SPECULAR, attribute, attributeValue))
 
42193
            {return false;}
 
42194
    }
 
42195
    }
 
42196
    }
 
42197
}
 
42198
if ((attributeData->present_attributes & profile_GLSL__technique__pass__states__material_specular__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
42199
{
 
42200
    bool failed;
 
42201
    failed = !characterData2FloatList("0.0E1 0.0E1 0.0E1 1.0E0", attributeData->value);
 
42202
    if ( !failed )
 
42203
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__material_specular__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
42204
}
 
42205
 
 
42206
 
 
42207
    return true;
 
42208
}
 
42209
 
 
42210
//---------------------------------------------------------------------
 
42211
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__material_specular()
 
42212
{
 
42213
#ifdef GENERATEDSAXPARSER_VALIDATION
 
42214
    if ( mValidate )
 
42215
    {
 
42216
 
 
42217
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__material_specular();
 
42218
        if ( !validationResult ) return false;
 
42219
 
 
42220
    } // validation
 
42221
#endif
 
42222
 
 
42223
    return true;
 
42224
}
 
42225
 
 
42226
//---------------------------------------------------------------------
 
42227
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__material_specular( void* attributeData )
 
42228
{
 
42229
    profile_GLSL__technique__pass__states__material_specular__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__material_specular__AttributeData*>(attributeData);
 
42230
    if (typedAttributeData->value.data)
 
42231
    {
 
42232
        mStackMemoryManager.deleteObject();
 
42233
    }
 
42234
 
 
42235
 
 
42236
    typedAttributeData->~profile_GLSL__technique__pass__states__material_specular__AttributeData();
 
42237
 
 
42238
    return true;
 
42239
}
 
42240
 
 
42241
//---------------------------------------------------------------------
 
42242
const profile_GLSL__technique__pass__states__model_view_matrix__AttributeData profile_GLSL__technique__pass__states__model_view_matrix__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<float>(), 0};
 
42243
 
 
42244
//---------------------------------------------------------------------
 
42245
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__model_view_matrix( const ParserChar* text, size_t textLength )
 
42246
{
 
42247
    return true;
 
42248
}
 
42249
 
 
42250
//---------------------------------------------------------------------
 
42251
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__model_view_matrix( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
42252
{
 
42253
#ifdef GENERATEDSAXPARSER_VALIDATION
 
42254
    if ( mValidate )
 
42255
    {
 
42256
 
 
42257
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__model_view_matrix( attributes, attributeDataPtr, validationDataPtr );
 
42258
        if ( !validationResult ) return false;
 
42259
 
 
42260
    } // validation
 
42261
#endif
 
42262
 
 
42263
profile_GLSL__technique__pass__states__model_view_matrix__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__model_view_matrix__AttributeData>(attributeDataPtr);
 
42264
 
 
42265
const ParserChar** attributeArray = attributes.attributes;
 
42266
if ( attributeArray )
 
42267
{
 
42268
    while (true)
 
42269
    {
 
42270
        const ParserChar * attribute = *attributeArray;
 
42271
        if ( !attribute )
 
42272
            break;
 
42273
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
42274
        attributeArray++;
 
42275
        if ( !attributeArray )
 
42276
            return false;
 
42277
        const ParserChar* attributeValue = *attributeArray;
 
42278
        attributeArray++;
 
42279
 
 
42280
 
 
42281
    switch ( hash )
 
42282
    {
 
42283
    case HASH_ATTRIBUTE_VALUE:
 
42284
    {
 
42285
bool failed;
 
42286
#ifdef GENERATEDSAXPARSER_VALIDATION
 
42287
    if ( mValidate )
 
42288
    {
 
42289
failed = !characterData2FloatList(attributeValue, attributeData->value, 0, HASH_ELEMENT_MODEL_VIEW_MATRIX, HASH_ATTRIBUTE_VALUE);
 
42290
    }
 
42291
    else
 
42292
    {
 
42293
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
42294
    }
 
42295
#else
 
42296
    {
 
42297
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
42298
    } // validation
 
42299
#endif
 
42300
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
42301
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
42302
        HASH_ELEMENT_MODEL_VIEW_MATRIX,
 
42303
        HASH_ATTRIBUTE_VALUE,
 
42304
        attributeValue))
 
42305
{
 
42306
    return false;
 
42307
}
 
42308
#ifdef GENERATEDSAXPARSER_VALIDATION
 
42309
    if ( mValidate )
 
42310
    {
 
42311
    ParserError::ErrorType simpleTypeValidationResult = validate__float4x4_type(attributeData->value.data, attributeData->value.size);
 
42312
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
42313
    {
 
42314
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
42315
            simpleTypeValidationResult,
 
42316
            HASH_ELEMENT_MODEL_VIEW_MATRIX,
 
42317
            HASH_ATTRIBUTE_VALUE,
 
42318
            attributeValue) )
 
42319
        {
 
42320
            return false;
 
42321
        }
 
42322
    }
 
42323
    } // validation
 
42324
#endif
 
42325
 
 
42326
if ( !failed )
 
42327
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__model_view_matrix__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
42328
 
 
42329
    break;
 
42330
    }
 
42331
    case HASH_ATTRIBUTE_PARAM:
 
42332
    {
 
42333
 
 
42334
attributeData->param = attributeValue;
 
42335
#ifdef GENERATEDSAXPARSER_VALIDATION
 
42336
    if ( mValidate )
 
42337
    {
 
42338
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
42339
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
42340
    {
 
42341
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
42342
            simpleTypeValidationResult,
 
42343
            HASH_ELEMENT_MODEL_VIEW_MATRIX,
 
42344
            HASH_ATTRIBUTE_PARAM,
 
42345
            attributeValue) )
 
42346
        {
 
42347
            return false;
 
42348
        }
 
42349
    }
 
42350
    } // validation
 
42351
#endif
 
42352
 
 
42353
    break;
 
42354
    }
 
42355
    default:
 
42356
    {
 
42357
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_MODEL_VIEW_MATRIX, attribute, attributeValue))
 
42358
            {return false;}
 
42359
    }
 
42360
    }
 
42361
    }
 
42362
}
 
42363
if ((attributeData->present_attributes & profile_GLSL__technique__pass__states__model_view_matrix__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
42364
{
 
42365
    bool failed;
 
42366
    failed = !characterData2FloatList("1.0E0 0.0E1 0.0E1 0.0E1 0.0E1 1.0E0 0.0E1 0.0E1 0.0E1 0.0E1 1.0E0 0.0E1 0.0E1 0.0E1 0.0E1 1.0E0", attributeData->value);
 
42367
    if ( !failed )
 
42368
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__model_view_matrix__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
42369
}
 
42370
 
 
42371
 
 
42372
    return true;
 
42373
}
 
42374
 
 
42375
//---------------------------------------------------------------------
 
42376
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__model_view_matrix()
 
42377
{
 
42378
#ifdef GENERATEDSAXPARSER_VALIDATION
 
42379
    if ( mValidate )
 
42380
    {
 
42381
 
 
42382
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__model_view_matrix();
 
42383
        if ( !validationResult ) return false;
 
42384
 
 
42385
    } // validation
 
42386
#endif
 
42387
 
 
42388
    return true;
 
42389
}
 
42390
 
 
42391
//---------------------------------------------------------------------
 
42392
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__model_view_matrix( void* attributeData )
 
42393
{
 
42394
    profile_GLSL__technique__pass__states__model_view_matrix__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__model_view_matrix__AttributeData*>(attributeData);
 
42395
    if (typedAttributeData->value.data)
 
42396
    {
 
42397
        mStackMemoryManager.deleteObject();
 
42398
    }
 
42399
 
 
42400
 
 
42401
    typedAttributeData->~profile_GLSL__technique__pass__states__model_view_matrix__AttributeData();
 
42402
 
 
42403
    return true;
 
42404
}
 
42405
 
 
42406
//---------------------------------------------------------------------
 
42407
const profile_GLSL__technique__pass__states__point_distance_attenuation__AttributeData profile_GLSL__technique__pass__states__point_distance_attenuation__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<float>(), 0};
 
42408
 
 
42409
//---------------------------------------------------------------------
 
42410
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__point_distance_attenuation( const ParserChar* text, size_t textLength )
 
42411
{
 
42412
    return true;
 
42413
}
 
42414
 
 
42415
//---------------------------------------------------------------------
 
42416
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__point_distance_attenuation( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
42417
{
 
42418
#ifdef GENERATEDSAXPARSER_VALIDATION
 
42419
    if ( mValidate )
 
42420
    {
 
42421
 
 
42422
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__point_distance_attenuation( attributes, attributeDataPtr, validationDataPtr );
 
42423
        if ( !validationResult ) return false;
 
42424
 
 
42425
    } // validation
 
42426
#endif
 
42427
 
 
42428
profile_GLSL__technique__pass__states__point_distance_attenuation__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__point_distance_attenuation__AttributeData>(attributeDataPtr);
 
42429
 
 
42430
const ParserChar** attributeArray = attributes.attributes;
 
42431
if ( attributeArray )
 
42432
{
 
42433
    while (true)
 
42434
    {
 
42435
        const ParserChar * attribute = *attributeArray;
 
42436
        if ( !attribute )
 
42437
            break;
 
42438
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
42439
        attributeArray++;
 
42440
        if ( !attributeArray )
 
42441
            return false;
 
42442
        const ParserChar* attributeValue = *attributeArray;
 
42443
        attributeArray++;
 
42444
 
 
42445
 
 
42446
    switch ( hash )
 
42447
    {
 
42448
    case HASH_ATTRIBUTE_VALUE:
 
42449
    {
 
42450
bool failed;
 
42451
#ifdef GENERATEDSAXPARSER_VALIDATION
 
42452
    if ( mValidate )
 
42453
    {
 
42454
failed = !characterData2FloatList(attributeValue, attributeData->value, 0, HASH_ELEMENT_POINT_DISTANCE_ATTENUATION, HASH_ATTRIBUTE_VALUE);
 
42455
    }
 
42456
    else
 
42457
    {
 
42458
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
42459
    }
 
42460
#else
 
42461
    {
 
42462
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
42463
    } // validation
 
42464
#endif
 
42465
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
42466
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
42467
        HASH_ELEMENT_POINT_DISTANCE_ATTENUATION,
 
42468
        HASH_ATTRIBUTE_VALUE,
 
42469
        attributeValue))
 
42470
{
 
42471
    return false;
 
42472
}
 
42473
#ifdef GENERATEDSAXPARSER_VALIDATION
 
42474
    if ( mValidate )
 
42475
    {
 
42476
    ParserError::ErrorType simpleTypeValidationResult = validate__float3_type(attributeData->value.data, attributeData->value.size);
 
42477
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
42478
    {
 
42479
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
42480
            simpleTypeValidationResult,
 
42481
            HASH_ELEMENT_POINT_DISTANCE_ATTENUATION,
 
42482
            HASH_ATTRIBUTE_VALUE,
 
42483
            attributeValue) )
 
42484
        {
 
42485
            return false;
 
42486
        }
 
42487
    }
 
42488
    } // validation
 
42489
#endif
 
42490
 
 
42491
if ( !failed )
 
42492
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__point_distance_attenuation__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
42493
 
 
42494
    break;
 
42495
    }
 
42496
    case HASH_ATTRIBUTE_PARAM:
 
42497
    {
 
42498
 
 
42499
attributeData->param = attributeValue;
 
42500
#ifdef GENERATEDSAXPARSER_VALIDATION
 
42501
    if ( mValidate )
 
42502
    {
 
42503
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
42504
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
42505
    {
 
42506
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
42507
            simpleTypeValidationResult,
 
42508
            HASH_ELEMENT_POINT_DISTANCE_ATTENUATION,
 
42509
            HASH_ATTRIBUTE_PARAM,
 
42510
            attributeValue) )
 
42511
        {
 
42512
            return false;
 
42513
        }
 
42514
    }
 
42515
    } // validation
 
42516
#endif
 
42517
 
 
42518
    break;
 
42519
    }
 
42520
    default:
 
42521
    {
 
42522
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_POINT_DISTANCE_ATTENUATION, attribute, attributeValue))
 
42523
            {return false;}
 
42524
    }
 
42525
    }
 
42526
    }
 
42527
}
 
42528
if ((attributeData->present_attributes & profile_GLSL__technique__pass__states__point_distance_attenuation__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
42529
{
 
42530
    bool failed;
 
42531
    failed = !characterData2FloatList("1.0E0 0.0E1 0.0E1", attributeData->value);
 
42532
    if ( !failed )
 
42533
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__point_distance_attenuation__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
42534
}
 
42535
 
 
42536
 
 
42537
    return true;
 
42538
}
 
42539
 
 
42540
//---------------------------------------------------------------------
 
42541
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__point_distance_attenuation()
 
42542
{
 
42543
#ifdef GENERATEDSAXPARSER_VALIDATION
 
42544
    if ( mValidate )
 
42545
    {
 
42546
 
 
42547
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__point_distance_attenuation();
 
42548
        if ( !validationResult ) return false;
 
42549
 
 
42550
    } // validation
 
42551
#endif
 
42552
 
 
42553
    return true;
 
42554
}
 
42555
 
 
42556
//---------------------------------------------------------------------
 
42557
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__point_distance_attenuation( void* attributeData )
 
42558
{
 
42559
    profile_GLSL__technique__pass__states__point_distance_attenuation__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__point_distance_attenuation__AttributeData*>(attributeData);
 
42560
    if (typedAttributeData->value.data)
 
42561
    {
 
42562
        mStackMemoryManager.deleteObject();
 
42563
    }
 
42564
 
 
42565
 
 
42566
    typedAttributeData->~profile_GLSL__technique__pass__states__point_distance_attenuation__AttributeData();
 
42567
 
 
42568
    return true;
 
42569
}
 
42570
 
 
42571
//---------------------------------------------------------------------
 
42572
const profile_GLSL__technique__pass__states__point_fade_threshold_size__AttributeData profile_GLSL__technique__pass__states__point_fade_threshold_size__AttributeData::DEFAULT = {1.0E0, 0};
 
42573
 
 
42574
//---------------------------------------------------------------------
 
42575
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__point_fade_threshold_size( const ParserChar* text, size_t textLength )
 
42576
{
 
42577
    return true;
 
42578
}
 
42579
 
 
42580
//---------------------------------------------------------------------
 
42581
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__point_fade_threshold_size( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
42582
{
 
42583
#ifdef GENERATEDSAXPARSER_VALIDATION
 
42584
    if ( mValidate )
 
42585
    {
 
42586
 
 
42587
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__point_fade_threshold_size( attributes, attributeDataPtr, validationDataPtr );
 
42588
        if ( !validationResult ) return false;
 
42589
 
 
42590
    } // validation
 
42591
#endif
 
42592
 
 
42593
profile_GLSL__technique__pass__states__point_fade_threshold_size__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__point_fade_threshold_size__AttributeData>(attributeDataPtr);
 
42594
 
 
42595
const ParserChar** attributeArray = attributes.attributes;
 
42596
if ( attributeArray )
 
42597
{
 
42598
    while (true)
 
42599
    {
 
42600
        const ParserChar * attribute = *attributeArray;
 
42601
        if ( !attribute )
 
42602
            break;
 
42603
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
42604
        attributeArray++;
 
42605
        if ( !attributeArray )
 
42606
            return false;
 
42607
        const ParserChar* attributeValue = *attributeArray;
 
42608
        attributeArray++;
 
42609
 
 
42610
 
 
42611
    switch ( hash )
 
42612
    {
 
42613
    case HASH_ATTRIBUTE_VALUE:
 
42614
    {
 
42615
bool failed;
 
42616
attributeData->value = GeneratedSaxParser::Utils::toFloat(attributeValue, failed);
 
42617
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
42618
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
42619
        HASH_ELEMENT_POINT_FADE_THRESHOLD_SIZE,
 
42620
        HASH_ATTRIBUTE_VALUE,
 
42621
        attributeValue))
 
42622
{
 
42623
    return false;
 
42624
}
 
42625
 
 
42626
    break;
 
42627
    }
 
42628
    case HASH_ATTRIBUTE_PARAM:
 
42629
    {
 
42630
 
 
42631
attributeData->param = attributeValue;
 
42632
#ifdef GENERATEDSAXPARSER_VALIDATION
 
42633
    if ( mValidate )
 
42634
    {
 
42635
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
42636
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
42637
    {
 
42638
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
42639
            simpleTypeValidationResult,
 
42640
            HASH_ELEMENT_POINT_FADE_THRESHOLD_SIZE,
 
42641
            HASH_ATTRIBUTE_PARAM,
 
42642
            attributeValue) )
 
42643
        {
 
42644
            return false;
 
42645
        }
 
42646
    }
 
42647
    } // validation
 
42648
#endif
 
42649
 
 
42650
    break;
 
42651
    }
 
42652
    default:
 
42653
    {
 
42654
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_POINT_FADE_THRESHOLD_SIZE, attribute, attributeValue))
 
42655
            {return false;}
 
42656
    }
 
42657
    }
 
42658
    }
 
42659
}
 
42660
 
 
42661
 
 
42662
    return true;
 
42663
}
 
42664
 
 
42665
//---------------------------------------------------------------------
 
42666
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__point_fade_threshold_size()
 
42667
{
 
42668
#ifdef GENERATEDSAXPARSER_VALIDATION
 
42669
    if ( mValidate )
 
42670
    {
 
42671
 
 
42672
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__point_fade_threshold_size();
 
42673
        if ( !validationResult ) return false;
 
42674
 
 
42675
    } // validation
 
42676
#endif
 
42677
 
 
42678
    return true;
 
42679
}
 
42680
 
 
42681
//---------------------------------------------------------------------
 
42682
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__point_fade_threshold_size( void* attributeData )
 
42683
{
 
42684
    profile_GLSL__technique__pass__states__point_fade_threshold_size__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__point_fade_threshold_size__AttributeData*>(attributeData);
 
42685
 
 
42686
    typedAttributeData->~profile_GLSL__technique__pass__states__point_fade_threshold_size__AttributeData();
 
42687
 
 
42688
    return true;
 
42689
}
 
42690
 
 
42691
//---------------------------------------------------------------------
 
42692
const profile_GLSL__technique__pass__states__point_size__AttributeData profile_GLSL__technique__pass__states__point_size__AttributeData::DEFAULT = {1.0E0, 0};
 
42693
 
 
42694
//---------------------------------------------------------------------
 
42695
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__point_size( const ParserChar* text, size_t textLength )
 
42696
{
 
42697
    return true;
 
42698
}
 
42699
 
 
42700
//---------------------------------------------------------------------
 
42701
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__point_size( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
42702
{
 
42703
#ifdef GENERATEDSAXPARSER_VALIDATION
 
42704
    if ( mValidate )
 
42705
    {
 
42706
 
 
42707
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__point_size( attributes, attributeDataPtr, validationDataPtr );
 
42708
        if ( !validationResult ) return false;
 
42709
 
 
42710
    } // validation
 
42711
#endif
 
42712
 
 
42713
profile_GLSL__technique__pass__states__point_size__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__point_size__AttributeData>(attributeDataPtr);
 
42714
 
 
42715
const ParserChar** attributeArray = attributes.attributes;
 
42716
if ( attributeArray )
 
42717
{
 
42718
    while (true)
 
42719
    {
 
42720
        const ParserChar * attribute = *attributeArray;
 
42721
        if ( !attribute )
 
42722
            break;
 
42723
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
42724
        attributeArray++;
 
42725
        if ( !attributeArray )
 
42726
            return false;
 
42727
        const ParserChar* attributeValue = *attributeArray;
 
42728
        attributeArray++;
 
42729
 
 
42730
 
 
42731
    switch ( hash )
 
42732
    {
 
42733
    case HASH_ATTRIBUTE_VALUE:
 
42734
    {
 
42735
bool failed;
 
42736
attributeData->value = GeneratedSaxParser::Utils::toFloat(attributeValue, failed);
 
42737
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
42738
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
42739
        HASH_ELEMENT_POINT_SIZE,
 
42740
        HASH_ATTRIBUTE_VALUE,
 
42741
        attributeValue))
 
42742
{
 
42743
    return false;
 
42744
}
 
42745
 
 
42746
    break;
 
42747
    }
 
42748
    case HASH_ATTRIBUTE_PARAM:
 
42749
    {
 
42750
 
 
42751
attributeData->param = attributeValue;
 
42752
#ifdef GENERATEDSAXPARSER_VALIDATION
 
42753
    if ( mValidate )
 
42754
    {
 
42755
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
42756
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
42757
    {
 
42758
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
42759
            simpleTypeValidationResult,
 
42760
            HASH_ELEMENT_POINT_SIZE,
 
42761
            HASH_ATTRIBUTE_PARAM,
 
42762
            attributeValue) )
 
42763
        {
 
42764
            return false;
 
42765
        }
 
42766
    }
 
42767
    } // validation
 
42768
#endif
 
42769
 
 
42770
    break;
 
42771
    }
 
42772
    default:
 
42773
    {
 
42774
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_POINT_SIZE, attribute, attributeValue))
 
42775
            {return false;}
 
42776
    }
 
42777
    }
 
42778
    }
 
42779
}
 
42780
 
 
42781
 
 
42782
    return true;
 
42783
}
 
42784
 
 
42785
//---------------------------------------------------------------------
 
42786
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__point_size()
 
42787
{
 
42788
#ifdef GENERATEDSAXPARSER_VALIDATION
 
42789
    if ( mValidate )
 
42790
    {
 
42791
 
 
42792
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__point_size();
 
42793
        if ( !validationResult ) return false;
 
42794
 
 
42795
    } // validation
 
42796
#endif
 
42797
 
 
42798
    return true;
 
42799
}
 
42800
 
 
42801
//---------------------------------------------------------------------
 
42802
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__point_size( void* attributeData )
 
42803
{
 
42804
    profile_GLSL__technique__pass__states__point_size__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__point_size__AttributeData*>(attributeData);
 
42805
 
 
42806
    typedAttributeData->~profile_GLSL__technique__pass__states__point_size__AttributeData();
 
42807
 
 
42808
    return true;
 
42809
}
 
42810
 
 
42811
//---------------------------------------------------------------------
 
42812
const profile_GLSL__technique__pass__states__point_size_min__AttributeData profile_GLSL__technique__pass__states__point_size_min__AttributeData::DEFAULT = {0.0E1, 0};
 
42813
 
 
42814
//---------------------------------------------------------------------
 
42815
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__point_size_min( const ParserChar* text, size_t textLength )
 
42816
{
 
42817
    return true;
 
42818
}
 
42819
 
 
42820
//---------------------------------------------------------------------
 
42821
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__point_size_min( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
42822
{
 
42823
#ifdef GENERATEDSAXPARSER_VALIDATION
 
42824
    if ( mValidate )
 
42825
    {
 
42826
 
 
42827
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__point_size_min( attributes, attributeDataPtr, validationDataPtr );
 
42828
        if ( !validationResult ) return false;
 
42829
 
 
42830
    } // validation
 
42831
#endif
 
42832
 
 
42833
profile_GLSL__technique__pass__states__point_size_min__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__point_size_min__AttributeData>(attributeDataPtr);
 
42834
 
 
42835
const ParserChar** attributeArray = attributes.attributes;
 
42836
if ( attributeArray )
 
42837
{
 
42838
    while (true)
 
42839
    {
 
42840
        const ParserChar * attribute = *attributeArray;
 
42841
        if ( !attribute )
 
42842
            break;
 
42843
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
42844
        attributeArray++;
 
42845
        if ( !attributeArray )
 
42846
            return false;
 
42847
        const ParserChar* attributeValue = *attributeArray;
 
42848
        attributeArray++;
 
42849
 
 
42850
 
 
42851
    switch ( hash )
 
42852
    {
 
42853
    case HASH_ATTRIBUTE_VALUE:
 
42854
    {
 
42855
bool failed;
 
42856
attributeData->value = GeneratedSaxParser::Utils::toFloat(attributeValue, failed);
 
42857
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
42858
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
42859
        HASH_ELEMENT_POINT_SIZE_MIN,
 
42860
        HASH_ATTRIBUTE_VALUE,
 
42861
        attributeValue))
 
42862
{
 
42863
    return false;
 
42864
}
 
42865
 
 
42866
    break;
 
42867
    }
 
42868
    case HASH_ATTRIBUTE_PARAM:
 
42869
    {
 
42870
 
 
42871
attributeData->param = attributeValue;
 
42872
#ifdef GENERATEDSAXPARSER_VALIDATION
 
42873
    if ( mValidate )
 
42874
    {
 
42875
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
42876
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
42877
    {
 
42878
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
42879
            simpleTypeValidationResult,
 
42880
            HASH_ELEMENT_POINT_SIZE_MIN,
 
42881
            HASH_ATTRIBUTE_PARAM,
 
42882
            attributeValue) )
 
42883
        {
 
42884
            return false;
 
42885
        }
 
42886
    }
 
42887
    } // validation
 
42888
#endif
 
42889
 
 
42890
    break;
 
42891
    }
 
42892
    default:
 
42893
    {
 
42894
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_POINT_SIZE_MIN, attribute, attributeValue))
 
42895
            {return false;}
 
42896
    }
 
42897
    }
 
42898
    }
 
42899
}
 
42900
 
 
42901
 
 
42902
    return true;
 
42903
}
 
42904
 
 
42905
//---------------------------------------------------------------------
 
42906
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__point_size_min()
 
42907
{
 
42908
#ifdef GENERATEDSAXPARSER_VALIDATION
 
42909
    if ( mValidate )
 
42910
    {
 
42911
 
 
42912
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__point_size_min();
 
42913
        if ( !validationResult ) return false;
 
42914
 
 
42915
    } // validation
 
42916
#endif
 
42917
 
 
42918
    return true;
 
42919
}
 
42920
 
 
42921
//---------------------------------------------------------------------
 
42922
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__point_size_min( void* attributeData )
 
42923
{
 
42924
    profile_GLSL__technique__pass__states__point_size_min__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__point_size_min__AttributeData*>(attributeData);
 
42925
 
 
42926
    typedAttributeData->~profile_GLSL__technique__pass__states__point_size_min__AttributeData();
 
42927
 
 
42928
    return true;
 
42929
}
 
42930
 
 
42931
//---------------------------------------------------------------------
 
42932
const profile_GLSL__technique__pass__states__point_size_max__AttributeData profile_GLSL__technique__pass__states__point_size_max__AttributeData::DEFAULT = {1.0E0, 0};
 
42933
 
 
42934
//---------------------------------------------------------------------
 
42935
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__point_size_max( const ParserChar* text, size_t textLength )
 
42936
{
 
42937
    return true;
 
42938
}
 
42939
 
 
42940
//---------------------------------------------------------------------
 
42941
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__point_size_max( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
42942
{
 
42943
#ifdef GENERATEDSAXPARSER_VALIDATION
 
42944
    if ( mValidate )
 
42945
    {
 
42946
 
 
42947
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__point_size_max( attributes, attributeDataPtr, validationDataPtr );
 
42948
        if ( !validationResult ) return false;
 
42949
 
 
42950
    } // validation
 
42951
#endif
 
42952
 
 
42953
profile_GLSL__technique__pass__states__point_size_max__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__point_size_max__AttributeData>(attributeDataPtr);
 
42954
 
 
42955
const ParserChar** attributeArray = attributes.attributes;
 
42956
if ( attributeArray )
 
42957
{
 
42958
    while (true)
 
42959
    {
 
42960
        const ParserChar * attribute = *attributeArray;
 
42961
        if ( !attribute )
 
42962
            break;
 
42963
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
42964
        attributeArray++;
 
42965
        if ( !attributeArray )
 
42966
            return false;
 
42967
        const ParserChar* attributeValue = *attributeArray;
 
42968
        attributeArray++;
 
42969
 
 
42970
 
 
42971
    switch ( hash )
 
42972
    {
 
42973
    case HASH_ATTRIBUTE_VALUE:
 
42974
    {
 
42975
bool failed;
 
42976
attributeData->value = GeneratedSaxParser::Utils::toFloat(attributeValue, failed);
 
42977
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
42978
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
42979
        HASH_ELEMENT_POINT_SIZE_MAX,
 
42980
        HASH_ATTRIBUTE_VALUE,
 
42981
        attributeValue))
 
42982
{
 
42983
    return false;
 
42984
}
 
42985
 
 
42986
    break;
 
42987
    }
 
42988
    case HASH_ATTRIBUTE_PARAM:
 
42989
    {
 
42990
 
 
42991
attributeData->param = attributeValue;
 
42992
#ifdef GENERATEDSAXPARSER_VALIDATION
 
42993
    if ( mValidate )
 
42994
    {
 
42995
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
42996
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
42997
    {
 
42998
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
42999
            simpleTypeValidationResult,
 
43000
            HASH_ELEMENT_POINT_SIZE_MAX,
 
43001
            HASH_ATTRIBUTE_PARAM,
 
43002
            attributeValue) )
 
43003
        {
 
43004
            return false;
 
43005
        }
 
43006
    }
 
43007
    } // validation
 
43008
#endif
 
43009
 
 
43010
    break;
 
43011
    }
 
43012
    default:
 
43013
    {
 
43014
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_POINT_SIZE_MAX, attribute, attributeValue))
 
43015
            {return false;}
 
43016
    }
 
43017
    }
 
43018
    }
 
43019
}
 
43020
 
 
43021
 
 
43022
    return true;
 
43023
}
 
43024
 
 
43025
//---------------------------------------------------------------------
 
43026
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__point_size_max()
 
43027
{
 
43028
#ifdef GENERATEDSAXPARSER_VALIDATION
 
43029
    if ( mValidate )
 
43030
    {
 
43031
 
 
43032
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__point_size_max();
 
43033
        if ( !validationResult ) return false;
 
43034
 
 
43035
    } // validation
 
43036
#endif
 
43037
 
 
43038
    return true;
 
43039
}
 
43040
 
 
43041
//---------------------------------------------------------------------
 
43042
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__point_size_max( void* attributeData )
 
43043
{
 
43044
    profile_GLSL__technique__pass__states__point_size_max__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__point_size_max__AttributeData*>(attributeData);
 
43045
 
 
43046
    typedAttributeData->~profile_GLSL__technique__pass__states__point_size_max__AttributeData();
 
43047
 
 
43048
    return true;
 
43049
}
 
43050
 
 
43051
//---------------------------------------------------------------------
 
43052
const profile_GLSL__technique__pass__states__polygon_offset__AttributeData profile_GLSL__technique__pass__states__polygon_offset__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<float>(), 0};
 
43053
 
 
43054
//---------------------------------------------------------------------
 
43055
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__polygon_offset( const ParserChar* text, size_t textLength )
 
43056
{
 
43057
    return true;
 
43058
}
 
43059
 
 
43060
//---------------------------------------------------------------------
 
43061
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__polygon_offset( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
43062
{
 
43063
#ifdef GENERATEDSAXPARSER_VALIDATION
 
43064
    if ( mValidate )
 
43065
    {
 
43066
 
 
43067
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__polygon_offset( attributes, attributeDataPtr, validationDataPtr );
 
43068
        if ( !validationResult ) return false;
 
43069
 
 
43070
    } // validation
 
43071
#endif
 
43072
 
 
43073
profile_GLSL__technique__pass__states__polygon_offset__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__polygon_offset__AttributeData>(attributeDataPtr);
 
43074
 
 
43075
const ParserChar** attributeArray = attributes.attributes;
 
43076
if ( attributeArray )
 
43077
{
 
43078
    while (true)
 
43079
    {
 
43080
        const ParserChar * attribute = *attributeArray;
 
43081
        if ( !attribute )
 
43082
            break;
 
43083
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
43084
        attributeArray++;
 
43085
        if ( !attributeArray )
 
43086
            return false;
 
43087
        const ParserChar* attributeValue = *attributeArray;
 
43088
        attributeArray++;
 
43089
 
 
43090
 
 
43091
    switch ( hash )
 
43092
    {
 
43093
    case HASH_ATTRIBUTE_VALUE:
 
43094
    {
 
43095
bool failed;
 
43096
#ifdef GENERATEDSAXPARSER_VALIDATION
 
43097
    if ( mValidate )
 
43098
    {
 
43099
failed = !characterData2FloatList(attributeValue, attributeData->value, 0, HASH_ELEMENT_POLYGON_OFFSET, HASH_ATTRIBUTE_VALUE);
 
43100
    }
 
43101
    else
 
43102
    {
 
43103
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
43104
    }
 
43105
#else
 
43106
    {
 
43107
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
43108
    } // validation
 
43109
#endif
 
43110
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
43111
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
43112
        HASH_ELEMENT_POLYGON_OFFSET,
 
43113
        HASH_ATTRIBUTE_VALUE,
 
43114
        attributeValue))
 
43115
{
 
43116
    return false;
 
43117
}
 
43118
#ifdef GENERATEDSAXPARSER_VALIDATION
 
43119
    if ( mValidate )
 
43120
    {
 
43121
    ParserError::ErrorType simpleTypeValidationResult = validate__float2_type(attributeData->value.data, attributeData->value.size);
 
43122
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
43123
    {
 
43124
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
43125
            simpleTypeValidationResult,
 
43126
            HASH_ELEMENT_POLYGON_OFFSET,
 
43127
            HASH_ATTRIBUTE_VALUE,
 
43128
            attributeValue) )
 
43129
        {
 
43130
            return false;
 
43131
        }
 
43132
    }
 
43133
    } // validation
 
43134
#endif
 
43135
 
 
43136
if ( !failed )
 
43137
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__polygon_offset__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
43138
 
 
43139
    break;
 
43140
    }
 
43141
    case HASH_ATTRIBUTE_PARAM:
 
43142
    {
 
43143
 
 
43144
attributeData->param = attributeValue;
 
43145
#ifdef GENERATEDSAXPARSER_VALIDATION
 
43146
    if ( mValidate )
 
43147
    {
 
43148
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
43149
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
43150
    {
 
43151
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
43152
            simpleTypeValidationResult,
 
43153
            HASH_ELEMENT_POLYGON_OFFSET,
 
43154
            HASH_ATTRIBUTE_PARAM,
 
43155
            attributeValue) )
 
43156
        {
 
43157
            return false;
 
43158
        }
 
43159
    }
 
43160
    } // validation
 
43161
#endif
 
43162
 
 
43163
    break;
 
43164
    }
 
43165
    default:
 
43166
    {
 
43167
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_POLYGON_OFFSET, attribute, attributeValue))
 
43168
            {return false;}
 
43169
    }
 
43170
    }
 
43171
    }
 
43172
}
 
43173
if ((attributeData->present_attributes & profile_GLSL__technique__pass__states__polygon_offset__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
43174
{
 
43175
    bool failed;
 
43176
    failed = !characterData2FloatList("0.0E1 0.0E1", attributeData->value);
 
43177
    if ( !failed )
 
43178
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__polygon_offset__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
43179
}
 
43180
 
 
43181
 
 
43182
    return true;
 
43183
}
 
43184
 
 
43185
//---------------------------------------------------------------------
 
43186
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__polygon_offset()
 
43187
{
 
43188
#ifdef GENERATEDSAXPARSER_VALIDATION
 
43189
    if ( mValidate )
 
43190
    {
 
43191
 
 
43192
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__polygon_offset();
 
43193
        if ( !validationResult ) return false;
 
43194
 
 
43195
    } // validation
 
43196
#endif
 
43197
 
 
43198
    return true;
 
43199
}
 
43200
 
 
43201
//---------------------------------------------------------------------
 
43202
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__polygon_offset( void* attributeData )
 
43203
{
 
43204
    profile_GLSL__technique__pass__states__polygon_offset__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__polygon_offset__AttributeData*>(attributeData);
 
43205
    if (typedAttributeData->value.data)
 
43206
    {
 
43207
        mStackMemoryManager.deleteObject();
 
43208
    }
 
43209
 
 
43210
 
 
43211
    typedAttributeData->~profile_GLSL__technique__pass__states__polygon_offset__AttributeData();
 
43212
 
 
43213
    return true;
 
43214
}
 
43215
 
 
43216
//---------------------------------------------------------------------
 
43217
const profile_GLSL__technique__pass__states__projection_matrix__AttributeData profile_GLSL__technique__pass__states__projection_matrix__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<float>(), 0};
 
43218
 
 
43219
//---------------------------------------------------------------------
 
43220
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__projection_matrix( const ParserChar* text, size_t textLength )
 
43221
{
 
43222
    return true;
 
43223
}
 
43224
 
 
43225
//---------------------------------------------------------------------
 
43226
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__projection_matrix( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
43227
{
 
43228
#ifdef GENERATEDSAXPARSER_VALIDATION
 
43229
    if ( mValidate )
 
43230
    {
 
43231
 
 
43232
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__projection_matrix( attributes, attributeDataPtr, validationDataPtr );
 
43233
        if ( !validationResult ) return false;
 
43234
 
 
43235
    } // validation
 
43236
#endif
 
43237
 
 
43238
profile_GLSL__technique__pass__states__projection_matrix__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__projection_matrix__AttributeData>(attributeDataPtr);
 
43239
 
 
43240
const ParserChar** attributeArray = attributes.attributes;
 
43241
if ( attributeArray )
 
43242
{
 
43243
    while (true)
 
43244
    {
 
43245
        const ParserChar * attribute = *attributeArray;
 
43246
        if ( !attribute )
 
43247
            break;
 
43248
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
43249
        attributeArray++;
 
43250
        if ( !attributeArray )
 
43251
            return false;
 
43252
        const ParserChar* attributeValue = *attributeArray;
 
43253
        attributeArray++;
 
43254
 
 
43255
 
 
43256
    switch ( hash )
 
43257
    {
 
43258
    case HASH_ATTRIBUTE_VALUE:
 
43259
    {
 
43260
bool failed;
 
43261
#ifdef GENERATEDSAXPARSER_VALIDATION
 
43262
    if ( mValidate )
 
43263
    {
 
43264
failed = !characterData2FloatList(attributeValue, attributeData->value, 0, HASH_ELEMENT_PROJECTION_MATRIX, HASH_ATTRIBUTE_VALUE);
 
43265
    }
 
43266
    else
 
43267
    {
 
43268
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
43269
    }
 
43270
#else
 
43271
    {
 
43272
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
43273
    } // validation
 
43274
#endif
 
43275
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
43276
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
43277
        HASH_ELEMENT_PROJECTION_MATRIX,
 
43278
        HASH_ATTRIBUTE_VALUE,
 
43279
        attributeValue))
 
43280
{
 
43281
    return false;
 
43282
}
 
43283
#ifdef GENERATEDSAXPARSER_VALIDATION
 
43284
    if ( mValidate )
 
43285
    {
 
43286
    ParserError::ErrorType simpleTypeValidationResult = validate__float4x4_type(attributeData->value.data, attributeData->value.size);
 
43287
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
43288
    {
 
43289
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
43290
            simpleTypeValidationResult,
 
43291
            HASH_ELEMENT_PROJECTION_MATRIX,
 
43292
            HASH_ATTRIBUTE_VALUE,
 
43293
            attributeValue) )
 
43294
        {
 
43295
            return false;
 
43296
        }
 
43297
    }
 
43298
    } // validation
 
43299
#endif
 
43300
 
 
43301
if ( !failed )
 
43302
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__projection_matrix__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
43303
 
 
43304
    break;
 
43305
    }
 
43306
    case HASH_ATTRIBUTE_PARAM:
 
43307
    {
 
43308
 
 
43309
attributeData->param = attributeValue;
 
43310
#ifdef GENERATEDSAXPARSER_VALIDATION
 
43311
    if ( mValidate )
 
43312
    {
 
43313
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
43314
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
43315
    {
 
43316
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
43317
            simpleTypeValidationResult,
 
43318
            HASH_ELEMENT_PROJECTION_MATRIX,
 
43319
            HASH_ATTRIBUTE_PARAM,
 
43320
            attributeValue) )
 
43321
        {
 
43322
            return false;
 
43323
        }
 
43324
    }
 
43325
    } // validation
 
43326
#endif
 
43327
 
 
43328
    break;
 
43329
    }
 
43330
    default:
 
43331
    {
 
43332
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_PROJECTION_MATRIX, attribute, attributeValue))
 
43333
            {return false;}
 
43334
    }
 
43335
    }
 
43336
    }
 
43337
}
 
43338
if ((attributeData->present_attributes & profile_GLSL__technique__pass__states__projection_matrix__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
43339
{
 
43340
    bool failed;
 
43341
    failed = !characterData2FloatList("1.0E0 0.0E1 0.0E1 0.0E1 0.0E1 1.0E0 0.0E1 0.0E1 0.0E1 0.0E1 1.0E0 0.0E1 0.0E1 0.0E1 0.0E1 1.0E0", attributeData->value);
 
43342
    if ( !failed )
 
43343
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__projection_matrix__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
43344
}
 
43345
 
 
43346
 
 
43347
    return true;
 
43348
}
 
43349
 
 
43350
//---------------------------------------------------------------------
 
43351
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__projection_matrix()
 
43352
{
 
43353
#ifdef GENERATEDSAXPARSER_VALIDATION
 
43354
    if ( mValidate )
 
43355
    {
 
43356
 
 
43357
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__projection_matrix();
 
43358
        if ( !validationResult ) return false;
 
43359
 
 
43360
    } // validation
 
43361
#endif
 
43362
 
 
43363
    return true;
 
43364
}
 
43365
 
 
43366
//---------------------------------------------------------------------
 
43367
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__projection_matrix( void* attributeData )
 
43368
{
 
43369
    profile_GLSL__technique__pass__states__projection_matrix__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__projection_matrix__AttributeData*>(attributeData);
 
43370
    if (typedAttributeData->value.data)
 
43371
    {
 
43372
        mStackMemoryManager.deleteObject();
 
43373
    }
 
43374
 
 
43375
 
 
43376
    typedAttributeData->~profile_GLSL__technique__pass__states__projection_matrix__AttributeData();
 
43377
 
 
43378
    return true;
 
43379
}
 
43380
 
 
43381
//---------------------------------------------------------------------
 
43382
const profile_GLSL__technique__pass__states__scissor__AttributeData profile_GLSL__technique__pass__states__scissor__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<sint64>(), 0};
 
43383
 
 
43384
//---------------------------------------------------------------------
 
43385
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__scissor( const ParserChar* text, size_t textLength )
 
43386
{
 
43387
    return true;
 
43388
}
 
43389
 
 
43390
//---------------------------------------------------------------------
 
43391
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__scissor( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
43392
{
 
43393
#ifdef GENERATEDSAXPARSER_VALIDATION
 
43394
    if ( mValidate )
 
43395
    {
 
43396
 
 
43397
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__scissor( attributes, attributeDataPtr, validationDataPtr );
 
43398
        if ( !validationResult ) return false;
 
43399
 
 
43400
    } // validation
 
43401
#endif
 
43402
 
 
43403
profile_GLSL__technique__pass__states__scissor__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__scissor__AttributeData>(attributeDataPtr);
 
43404
 
 
43405
const ParserChar** attributeArray = attributes.attributes;
 
43406
if ( attributeArray )
 
43407
{
 
43408
    while (true)
 
43409
    {
 
43410
        const ParserChar * attribute = *attributeArray;
 
43411
        if ( !attribute )
 
43412
            break;
 
43413
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
43414
        attributeArray++;
 
43415
        if ( !attributeArray )
 
43416
            return false;
 
43417
        const ParserChar* attributeValue = *attributeArray;
 
43418
        attributeArray++;
 
43419
 
 
43420
 
 
43421
    switch ( hash )
 
43422
    {
 
43423
    case HASH_ATTRIBUTE_VALUE:
 
43424
    {
 
43425
bool failed;
 
43426
#ifdef GENERATEDSAXPARSER_VALIDATION
 
43427
    if ( mValidate )
 
43428
    {
 
43429
failed = !characterData2Sint64List(attributeValue, attributeData->value, 0, HASH_ELEMENT_SCISSOR, HASH_ATTRIBUTE_VALUE);
 
43430
    }
 
43431
    else
 
43432
    {
 
43433
failed = !characterData2Sint64List(attributeValue, attributeData->value);
 
43434
    }
 
43435
#else
 
43436
    {
 
43437
failed = !characterData2Sint64List(attributeValue, attributeData->value);
 
43438
    } // validation
 
43439
#endif
 
43440
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
43441
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
43442
        HASH_ELEMENT_SCISSOR,
 
43443
        HASH_ATTRIBUTE_VALUE,
 
43444
        attributeValue))
 
43445
{
 
43446
    return false;
 
43447
}
 
43448
#ifdef GENERATEDSAXPARSER_VALIDATION
 
43449
    if ( mValidate )
 
43450
    {
 
43451
    ParserError::ErrorType simpleTypeValidationResult = validate__int4_type(attributeData->value.data, attributeData->value.size);
 
43452
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
43453
    {
 
43454
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
43455
            simpleTypeValidationResult,
 
43456
            HASH_ELEMENT_SCISSOR,
 
43457
            HASH_ATTRIBUTE_VALUE,
 
43458
            attributeValue) )
 
43459
        {
 
43460
            return false;
 
43461
        }
 
43462
    }
 
43463
    } // validation
 
43464
#endif
 
43465
 
 
43466
if ( !failed )
 
43467
    attributeData->present_attributes |= profile_GLSL__technique__pass__states__scissor__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
43468
 
 
43469
    break;
 
43470
    }
 
43471
    case HASH_ATTRIBUTE_PARAM:
 
43472
    {
 
43473
 
 
43474
attributeData->param = attributeValue;
 
43475
#ifdef GENERATEDSAXPARSER_VALIDATION
 
43476
    if ( mValidate )
 
43477
    {
 
43478
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
43479
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
43480
    {
 
43481
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
43482
            simpleTypeValidationResult,
 
43483
            HASH_ELEMENT_SCISSOR,
 
43484
            HASH_ATTRIBUTE_PARAM,
 
43485
            attributeValue) )
 
43486
        {
 
43487
            return false;
 
43488
        }
 
43489
    }
 
43490
    } // validation
 
43491
#endif
 
43492
 
 
43493
    break;
 
43494
    }
 
43495
    default:
 
43496
    {
 
43497
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SCISSOR, attribute, attributeValue))
 
43498
            {return false;}
 
43499
    }
 
43500
    }
 
43501
    }
 
43502
}
 
43503
if ((attributeData->present_attributes & profile_GLSL__technique__pass__states__scissor__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
43504
{
 
43505
    attributeData->value = GeneratedSaxParser::XSList<sint64>();
 
43506
}
 
43507
 
 
43508
 
 
43509
    return true;
 
43510
}
 
43511
 
 
43512
//---------------------------------------------------------------------
 
43513
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__scissor()
 
43514
{
 
43515
#ifdef GENERATEDSAXPARSER_VALIDATION
 
43516
    if ( mValidate )
 
43517
    {
 
43518
 
 
43519
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__scissor();
 
43520
        if ( !validationResult ) return false;
 
43521
 
 
43522
    } // validation
 
43523
#endif
 
43524
 
 
43525
    return true;
 
43526
}
 
43527
 
 
43528
//---------------------------------------------------------------------
 
43529
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__scissor( void* attributeData )
 
43530
{
 
43531
    profile_GLSL__technique__pass__states__scissor__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__scissor__AttributeData*>(attributeData);
 
43532
    if (typedAttributeData->value.data)
 
43533
    {
 
43534
        mStackMemoryManager.deleteObject();
 
43535
    }
 
43536
 
 
43537
 
 
43538
    typedAttributeData->~profile_GLSL__technique__pass__states__scissor__AttributeData();
 
43539
 
 
43540
    return true;
 
43541
}
 
43542
 
 
43543
//---------------------------------------------------------------------
 
43544
const profile_GLSL__technique__pass__states__stencil_mask__AttributeData profile_GLSL__technique__pass__states__stencil_mask__AttributeData::DEFAULT = {4294967295ULL, 0};
 
43545
 
 
43546
//---------------------------------------------------------------------
 
43547
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__stencil_mask( const ParserChar* text, size_t textLength )
 
43548
{
 
43549
    return true;
 
43550
}
 
43551
 
 
43552
//---------------------------------------------------------------------
 
43553
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__stencil_mask( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
43554
{
 
43555
#ifdef GENERATEDSAXPARSER_VALIDATION
 
43556
    if ( mValidate )
 
43557
    {
 
43558
 
 
43559
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__stencil_mask( attributes, attributeDataPtr, validationDataPtr );
 
43560
        if ( !validationResult ) return false;
 
43561
 
 
43562
    } // validation
 
43563
#endif
 
43564
 
 
43565
profile_GLSL__technique__pass__states__stencil_mask__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__stencil_mask__AttributeData>(attributeDataPtr);
 
43566
 
 
43567
const ParserChar** attributeArray = attributes.attributes;
 
43568
if ( attributeArray )
 
43569
{
 
43570
    while (true)
 
43571
    {
 
43572
        const ParserChar * attribute = *attributeArray;
 
43573
        if ( !attribute )
 
43574
            break;
 
43575
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
43576
        attributeArray++;
 
43577
        if ( !attributeArray )
 
43578
            return false;
 
43579
        const ParserChar* attributeValue = *attributeArray;
 
43580
        attributeArray++;
 
43581
 
 
43582
 
 
43583
    switch ( hash )
 
43584
    {
 
43585
    case HASH_ATTRIBUTE_VALUE:
 
43586
    {
 
43587
bool failed;
 
43588
attributeData->value = GeneratedSaxParser::Utils::toSint64(attributeValue, failed);
 
43589
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
43590
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
43591
        HASH_ELEMENT_STENCIL_MASK,
 
43592
        HASH_ATTRIBUTE_VALUE,
 
43593
        attributeValue))
 
43594
{
 
43595
    return false;
 
43596
}
 
43597
 
 
43598
    break;
 
43599
    }
 
43600
    case HASH_ATTRIBUTE_PARAM:
 
43601
    {
 
43602
 
 
43603
attributeData->param = attributeValue;
 
43604
#ifdef GENERATEDSAXPARSER_VALIDATION
 
43605
    if ( mValidate )
 
43606
    {
 
43607
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
43608
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
43609
    {
 
43610
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
43611
            simpleTypeValidationResult,
 
43612
            HASH_ELEMENT_STENCIL_MASK,
 
43613
            HASH_ATTRIBUTE_PARAM,
 
43614
            attributeValue) )
 
43615
        {
 
43616
            return false;
 
43617
        }
 
43618
    }
 
43619
    } // validation
 
43620
#endif
 
43621
 
 
43622
    break;
 
43623
    }
 
43624
    default:
 
43625
    {
 
43626
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_STENCIL_MASK, attribute, attributeValue))
 
43627
            {return false;}
 
43628
    }
 
43629
    }
 
43630
    }
 
43631
}
 
43632
 
 
43633
 
 
43634
    return true;
 
43635
}
 
43636
 
 
43637
//---------------------------------------------------------------------
 
43638
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__stencil_mask()
 
43639
{
 
43640
#ifdef GENERATEDSAXPARSER_VALIDATION
 
43641
    if ( mValidate )
 
43642
    {
 
43643
 
 
43644
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__stencil_mask();
 
43645
        if ( !validationResult ) return false;
 
43646
 
 
43647
    } // validation
 
43648
#endif
 
43649
 
 
43650
    return true;
 
43651
}
 
43652
 
 
43653
//---------------------------------------------------------------------
 
43654
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__stencil_mask( void* attributeData )
 
43655
{
 
43656
    profile_GLSL__technique__pass__states__stencil_mask__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__stencil_mask__AttributeData*>(attributeData);
 
43657
 
 
43658
    typedAttributeData->~profile_GLSL__technique__pass__states__stencil_mask__AttributeData();
 
43659
 
 
43660
    return true;
 
43661
}
 
43662
 
 
43663
//---------------------------------------------------------------------
 
43664
const profile_GLSL__technique__pass__states__alpha_test_enable__AttributeData profile_GLSL__technique__pass__states__alpha_test_enable__AttributeData::DEFAULT = {false, 0};
 
43665
 
 
43666
//---------------------------------------------------------------------
 
43667
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__alpha_test_enable( const ParserChar* text, size_t textLength )
 
43668
{
 
43669
    return true;
 
43670
}
 
43671
 
 
43672
//---------------------------------------------------------------------
 
43673
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__alpha_test_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
43674
{
 
43675
#ifdef GENERATEDSAXPARSER_VALIDATION
 
43676
    if ( mValidate )
 
43677
    {
 
43678
 
 
43679
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__alpha_test_enable( attributes, attributeDataPtr, validationDataPtr );
 
43680
        if ( !validationResult ) return false;
 
43681
 
 
43682
    } // validation
 
43683
#endif
 
43684
 
 
43685
profile_GLSL__technique__pass__states__alpha_test_enable__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__alpha_test_enable__AttributeData>(attributeDataPtr);
 
43686
 
 
43687
const ParserChar** attributeArray = attributes.attributes;
 
43688
if ( attributeArray )
 
43689
{
 
43690
    while (true)
 
43691
    {
 
43692
        const ParserChar * attribute = *attributeArray;
 
43693
        if ( !attribute )
 
43694
            break;
 
43695
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
43696
        attributeArray++;
 
43697
        if ( !attributeArray )
 
43698
            return false;
 
43699
        const ParserChar* attributeValue = *attributeArray;
 
43700
        attributeArray++;
 
43701
 
 
43702
 
 
43703
    switch ( hash )
 
43704
    {
 
43705
    case HASH_ATTRIBUTE_VALUE:
 
43706
    {
 
43707
bool failed;
 
43708
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
43709
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
43710
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
43711
        HASH_ELEMENT_ALPHA_TEST_ENABLE,
 
43712
        HASH_ATTRIBUTE_VALUE,
 
43713
        attributeValue))
 
43714
{
 
43715
    return false;
 
43716
}
 
43717
 
 
43718
    break;
 
43719
    }
 
43720
    case HASH_ATTRIBUTE_PARAM:
 
43721
    {
 
43722
 
 
43723
attributeData->param = attributeValue;
 
43724
#ifdef GENERATEDSAXPARSER_VALIDATION
 
43725
    if ( mValidate )
 
43726
    {
 
43727
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
43728
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
43729
    {
 
43730
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
43731
            simpleTypeValidationResult,
 
43732
            HASH_ELEMENT_ALPHA_TEST_ENABLE,
 
43733
            HASH_ATTRIBUTE_PARAM,
 
43734
            attributeValue) )
 
43735
        {
 
43736
            return false;
 
43737
        }
 
43738
    }
 
43739
    } // validation
 
43740
#endif
 
43741
 
 
43742
    break;
 
43743
    }
 
43744
    default:
 
43745
    {
 
43746
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_ALPHA_TEST_ENABLE, attribute, attributeValue))
 
43747
            {return false;}
 
43748
    }
 
43749
    }
 
43750
    }
 
43751
}
 
43752
 
 
43753
 
 
43754
    return true;
 
43755
}
 
43756
 
 
43757
//---------------------------------------------------------------------
 
43758
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__alpha_test_enable()
 
43759
{
 
43760
#ifdef GENERATEDSAXPARSER_VALIDATION
 
43761
    if ( mValidate )
 
43762
    {
 
43763
 
 
43764
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__alpha_test_enable();
 
43765
        if ( !validationResult ) return false;
 
43766
 
 
43767
    } // validation
 
43768
#endif
 
43769
 
 
43770
    return true;
 
43771
}
 
43772
 
 
43773
//---------------------------------------------------------------------
 
43774
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__alpha_test_enable( void* attributeData )
 
43775
{
 
43776
    profile_GLSL__technique__pass__states__alpha_test_enable__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__alpha_test_enable__AttributeData*>(attributeData);
 
43777
 
 
43778
    typedAttributeData->~profile_GLSL__technique__pass__states__alpha_test_enable__AttributeData();
 
43779
 
 
43780
    return true;
 
43781
}
 
43782
 
 
43783
//---------------------------------------------------------------------
 
43784
const profile_GLSL__technique__pass__states__blend_enable__AttributeData profile_GLSL__technique__pass__states__blend_enable__AttributeData::DEFAULT = {false, 0};
 
43785
 
 
43786
//---------------------------------------------------------------------
 
43787
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__blend_enable( const ParserChar* text, size_t textLength )
 
43788
{
 
43789
    return true;
 
43790
}
 
43791
 
 
43792
//---------------------------------------------------------------------
 
43793
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__blend_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
43794
{
 
43795
#ifdef GENERATEDSAXPARSER_VALIDATION
 
43796
    if ( mValidate )
 
43797
    {
 
43798
 
 
43799
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__blend_enable( attributes, attributeDataPtr, validationDataPtr );
 
43800
        if ( !validationResult ) return false;
 
43801
 
 
43802
    } // validation
 
43803
#endif
 
43804
 
 
43805
profile_GLSL__technique__pass__states__blend_enable__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__blend_enable__AttributeData>(attributeDataPtr);
 
43806
 
 
43807
const ParserChar** attributeArray = attributes.attributes;
 
43808
if ( attributeArray )
 
43809
{
 
43810
    while (true)
 
43811
    {
 
43812
        const ParserChar * attribute = *attributeArray;
 
43813
        if ( !attribute )
 
43814
            break;
 
43815
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
43816
        attributeArray++;
 
43817
        if ( !attributeArray )
 
43818
            return false;
 
43819
        const ParserChar* attributeValue = *attributeArray;
 
43820
        attributeArray++;
 
43821
 
 
43822
 
 
43823
    switch ( hash )
 
43824
    {
 
43825
    case HASH_ATTRIBUTE_VALUE:
 
43826
    {
 
43827
bool failed;
 
43828
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
43829
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
43830
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
43831
        HASH_ELEMENT_BLEND_ENABLE,
 
43832
        HASH_ATTRIBUTE_VALUE,
 
43833
        attributeValue))
 
43834
{
 
43835
    return false;
 
43836
}
 
43837
 
 
43838
    break;
 
43839
    }
 
43840
    case HASH_ATTRIBUTE_PARAM:
 
43841
    {
 
43842
 
 
43843
attributeData->param = attributeValue;
 
43844
#ifdef GENERATEDSAXPARSER_VALIDATION
 
43845
    if ( mValidate )
 
43846
    {
 
43847
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
43848
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
43849
    {
 
43850
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
43851
            simpleTypeValidationResult,
 
43852
            HASH_ELEMENT_BLEND_ENABLE,
 
43853
            HASH_ATTRIBUTE_PARAM,
 
43854
            attributeValue) )
 
43855
        {
 
43856
            return false;
 
43857
        }
 
43858
    }
 
43859
    } // validation
 
43860
#endif
 
43861
 
 
43862
    break;
 
43863
    }
 
43864
    default:
 
43865
    {
 
43866
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_BLEND_ENABLE, attribute, attributeValue))
 
43867
            {return false;}
 
43868
    }
 
43869
    }
 
43870
    }
 
43871
}
 
43872
 
 
43873
 
 
43874
    return true;
 
43875
}
 
43876
 
 
43877
//---------------------------------------------------------------------
 
43878
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__blend_enable()
 
43879
{
 
43880
#ifdef GENERATEDSAXPARSER_VALIDATION
 
43881
    if ( mValidate )
 
43882
    {
 
43883
 
 
43884
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__blend_enable();
 
43885
        if ( !validationResult ) return false;
 
43886
 
 
43887
    } // validation
 
43888
#endif
 
43889
 
 
43890
    return true;
 
43891
}
 
43892
 
 
43893
//---------------------------------------------------------------------
 
43894
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__blend_enable( void* attributeData )
 
43895
{
 
43896
    profile_GLSL__technique__pass__states__blend_enable__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__blend_enable__AttributeData*>(attributeData);
 
43897
 
 
43898
    typedAttributeData->~profile_GLSL__technique__pass__states__blend_enable__AttributeData();
 
43899
 
 
43900
    return true;
 
43901
}
 
43902
 
 
43903
//---------------------------------------------------------------------
 
43904
const profile_GLSL__technique__pass__states__color_logic_op_enable__AttributeData profile_GLSL__technique__pass__states__color_logic_op_enable__AttributeData::DEFAULT = {false, 0};
 
43905
 
 
43906
//---------------------------------------------------------------------
 
43907
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__color_logic_op_enable( const ParserChar* text, size_t textLength )
 
43908
{
 
43909
    return true;
 
43910
}
 
43911
 
 
43912
//---------------------------------------------------------------------
 
43913
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__color_logic_op_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
43914
{
 
43915
#ifdef GENERATEDSAXPARSER_VALIDATION
 
43916
    if ( mValidate )
 
43917
    {
 
43918
 
 
43919
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__color_logic_op_enable( attributes, attributeDataPtr, validationDataPtr );
 
43920
        if ( !validationResult ) return false;
 
43921
 
 
43922
    } // validation
 
43923
#endif
 
43924
 
 
43925
profile_GLSL__technique__pass__states__color_logic_op_enable__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__color_logic_op_enable__AttributeData>(attributeDataPtr);
 
43926
 
 
43927
const ParserChar** attributeArray = attributes.attributes;
 
43928
if ( attributeArray )
 
43929
{
 
43930
    while (true)
 
43931
    {
 
43932
        const ParserChar * attribute = *attributeArray;
 
43933
        if ( !attribute )
 
43934
            break;
 
43935
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
43936
        attributeArray++;
 
43937
        if ( !attributeArray )
 
43938
            return false;
 
43939
        const ParserChar* attributeValue = *attributeArray;
 
43940
        attributeArray++;
 
43941
 
 
43942
 
 
43943
    switch ( hash )
 
43944
    {
 
43945
    case HASH_ATTRIBUTE_VALUE:
 
43946
    {
 
43947
bool failed;
 
43948
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
43949
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
43950
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
43951
        HASH_ELEMENT_COLOR_LOGIC_OP_ENABLE,
 
43952
        HASH_ATTRIBUTE_VALUE,
 
43953
        attributeValue))
 
43954
{
 
43955
    return false;
 
43956
}
 
43957
 
 
43958
    break;
 
43959
    }
 
43960
    case HASH_ATTRIBUTE_PARAM:
 
43961
    {
 
43962
 
 
43963
attributeData->param = attributeValue;
 
43964
#ifdef GENERATEDSAXPARSER_VALIDATION
 
43965
    if ( mValidate )
 
43966
    {
 
43967
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
43968
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
43969
    {
 
43970
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
43971
            simpleTypeValidationResult,
 
43972
            HASH_ELEMENT_COLOR_LOGIC_OP_ENABLE,
 
43973
            HASH_ATTRIBUTE_PARAM,
 
43974
            attributeValue) )
 
43975
        {
 
43976
            return false;
 
43977
        }
 
43978
    }
 
43979
    } // validation
 
43980
#endif
 
43981
 
 
43982
    break;
 
43983
    }
 
43984
    default:
 
43985
    {
 
43986
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_COLOR_LOGIC_OP_ENABLE, attribute, attributeValue))
 
43987
            {return false;}
 
43988
    }
 
43989
    }
 
43990
    }
 
43991
}
 
43992
 
 
43993
 
 
43994
    return true;
 
43995
}
 
43996
 
 
43997
//---------------------------------------------------------------------
 
43998
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__color_logic_op_enable()
 
43999
{
 
44000
#ifdef GENERATEDSAXPARSER_VALIDATION
 
44001
    if ( mValidate )
 
44002
    {
 
44003
 
 
44004
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__color_logic_op_enable();
 
44005
        if ( !validationResult ) return false;
 
44006
 
 
44007
    } // validation
 
44008
#endif
 
44009
 
 
44010
    return true;
 
44011
}
 
44012
 
 
44013
//---------------------------------------------------------------------
 
44014
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__color_logic_op_enable( void* attributeData )
 
44015
{
 
44016
    profile_GLSL__technique__pass__states__color_logic_op_enable__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__color_logic_op_enable__AttributeData*>(attributeData);
 
44017
 
 
44018
    typedAttributeData->~profile_GLSL__technique__pass__states__color_logic_op_enable__AttributeData();
 
44019
 
 
44020
    return true;
 
44021
}
 
44022
 
 
44023
//---------------------------------------------------------------------
 
44024
const profile_GLSL__technique__pass__states__color_material_enable__AttributeData profile_GLSL__technique__pass__states__color_material_enable__AttributeData::DEFAULT = {true, 0};
 
44025
 
 
44026
//---------------------------------------------------------------------
 
44027
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__color_material_enable( const ParserChar* text, size_t textLength )
 
44028
{
 
44029
    return true;
 
44030
}
 
44031
 
 
44032
//---------------------------------------------------------------------
 
44033
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__color_material_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
44034
{
 
44035
#ifdef GENERATEDSAXPARSER_VALIDATION
 
44036
    if ( mValidate )
 
44037
    {
 
44038
 
 
44039
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__color_material_enable( attributes, attributeDataPtr, validationDataPtr );
 
44040
        if ( !validationResult ) return false;
 
44041
 
 
44042
    } // validation
 
44043
#endif
 
44044
 
 
44045
profile_GLSL__technique__pass__states__color_material_enable__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__color_material_enable__AttributeData>(attributeDataPtr);
 
44046
 
 
44047
const ParserChar** attributeArray = attributes.attributes;
 
44048
if ( attributeArray )
 
44049
{
 
44050
    while (true)
 
44051
    {
 
44052
        const ParserChar * attribute = *attributeArray;
 
44053
        if ( !attribute )
 
44054
            break;
 
44055
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
44056
        attributeArray++;
 
44057
        if ( !attributeArray )
 
44058
            return false;
 
44059
        const ParserChar* attributeValue = *attributeArray;
 
44060
        attributeArray++;
 
44061
 
 
44062
 
 
44063
    switch ( hash )
 
44064
    {
 
44065
    case HASH_ATTRIBUTE_VALUE:
 
44066
    {
 
44067
bool failed;
 
44068
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
44069
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
44070
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
44071
        HASH_ELEMENT_COLOR_MATERIAL_ENABLE,
 
44072
        HASH_ATTRIBUTE_VALUE,
 
44073
        attributeValue))
 
44074
{
 
44075
    return false;
 
44076
}
 
44077
 
 
44078
    break;
 
44079
    }
 
44080
    case HASH_ATTRIBUTE_PARAM:
 
44081
    {
 
44082
 
 
44083
attributeData->param = attributeValue;
 
44084
#ifdef GENERATEDSAXPARSER_VALIDATION
 
44085
    if ( mValidate )
 
44086
    {
 
44087
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
44088
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
44089
    {
 
44090
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
44091
            simpleTypeValidationResult,
 
44092
            HASH_ELEMENT_COLOR_MATERIAL_ENABLE,
 
44093
            HASH_ATTRIBUTE_PARAM,
 
44094
            attributeValue) )
 
44095
        {
 
44096
            return false;
 
44097
        }
 
44098
    }
 
44099
    } // validation
 
44100
#endif
 
44101
 
 
44102
    break;
 
44103
    }
 
44104
    default:
 
44105
    {
 
44106
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_COLOR_MATERIAL_ENABLE, attribute, attributeValue))
 
44107
            {return false;}
 
44108
    }
 
44109
    }
 
44110
    }
 
44111
}
 
44112
 
 
44113
 
 
44114
    return true;
 
44115
}
 
44116
 
 
44117
//---------------------------------------------------------------------
 
44118
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__color_material_enable()
 
44119
{
 
44120
#ifdef GENERATEDSAXPARSER_VALIDATION
 
44121
    if ( mValidate )
 
44122
    {
 
44123
 
 
44124
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__color_material_enable();
 
44125
        if ( !validationResult ) return false;
 
44126
 
 
44127
    } // validation
 
44128
#endif
 
44129
 
 
44130
    return true;
 
44131
}
 
44132
 
 
44133
//---------------------------------------------------------------------
 
44134
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__color_material_enable( void* attributeData )
 
44135
{
 
44136
    profile_GLSL__technique__pass__states__color_material_enable__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__color_material_enable__AttributeData*>(attributeData);
 
44137
 
 
44138
    typedAttributeData->~profile_GLSL__technique__pass__states__color_material_enable__AttributeData();
 
44139
 
 
44140
    return true;
 
44141
}
 
44142
 
 
44143
//---------------------------------------------------------------------
 
44144
const profile_GLSL__technique__pass__states__cull_face_enable__AttributeData profile_GLSL__technique__pass__states__cull_face_enable__AttributeData::DEFAULT = {false, 0};
 
44145
 
 
44146
//---------------------------------------------------------------------
 
44147
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__cull_face_enable( const ParserChar* text, size_t textLength )
 
44148
{
 
44149
    return true;
 
44150
}
 
44151
 
 
44152
//---------------------------------------------------------------------
 
44153
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__cull_face_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
44154
{
 
44155
#ifdef GENERATEDSAXPARSER_VALIDATION
 
44156
    if ( mValidate )
 
44157
    {
 
44158
 
 
44159
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__cull_face_enable( attributes, attributeDataPtr, validationDataPtr );
 
44160
        if ( !validationResult ) return false;
 
44161
 
 
44162
    } // validation
 
44163
#endif
 
44164
 
 
44165
profile_GLSL__technique__pass__states__cull_face_enable__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__cull_face_enable__AttributeData>(attributeDataPtr);
 
44166
 
 
44167
const ParserChar** attributeArray = attributes.attributes;
 
44168
if ( attributeArray )
 
44169
{
 
44170
    while (true)
 
44171
    {
 
44172
        const ParserChar * attribute = *attributeArray;
 
44173
        if ( !attribute )
 
44174
            break;
 
44175
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
44176
        attributeArray++;
 
44177
        if ( !attributeArray )
 
44178
            return false;
 
44179
        const ParserChar* attributeValue = *attributeArray;
 
44180
        attributeArray++;
 
44181
 
 
44182
 
 
44183
    switch ( hash )
 
44184
    {
 
44185
    case HASH_ATTRIBUTE_VALUE:
 
44186
    {
 
44187
bool failed;
 
44188
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
44189
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
44190
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
44191
        HASH_ELEMENT_CULL_FACE_ENABLE,
 
44192
        HASH_ATTRIBUTE_VALUE,
 
44193
        attributeValue))
 
44194
{
 
44195
    return false;
 
44196
}
 
44197
 
 
44198
    break;
 
44199
    }
 
44200
    case HASH_ATTRIBUTE_PARAM:
 
44201
    {
 
44202
 
 
44203
attributeData->param = attributeValue;
 
44204
#ifdef GENERATEDSAXPARSER_VALIDATION
 
44205
    if ( mValidate )
 
44206
    {
 
44207
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
44208
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
44209
    {
 
44210
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
44211
            simpleTypeValidationResult,
 
44212
            HASH_ELEMENT_CULL_FACE_ENABLE,
 
44213
            HASH_ATTRIBUTE_PARAM,
 
44214
            attributeValue) )
 
44215
        {
 
44216
            return false;
 
44217
        }
 
44218
    }
 
44219
    } // validation
 
44220
#endif
 
44221
 
 
44222
    break;
 
44223
    }
 
44224
    default:
 
44225
    {
 
44226
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_CULL_FACE_ENABLE, attribute, attributeValue))
 
44227
            {return false;}
 
44228
    }
 
44229
    }
 
44230
    }
 
44231
}
 
44232
 
 
44233
 
 
44234
    return true;
 
44235
}
 
44236
 
 
44237
//---------------------------------------------------------------------
 
44238
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__cull_face_enable()
 
44239
{
 
44240
#ifdef GENERATEDSAXPARSER_VALIDATION
 
44241
    if ( mValidate )
 
44242
    {
 
44243
 
 
44244
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__cull_face_enable();
 
44245
        if ( !validationResult ) return false;
 
44246
 
 
44247
    } // validation
 
44248
#endif
 
44249
 
 
44250
    return true;
 
44251
}
 
44252
 
 
44253
//---------------------------------------------------------------------
 
44254
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__cull_face_enable( void* attributeData )
 
44255
{
 
44256
    profile_GLSL__technique__pass__states__cull_face_enable__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__cull_face_enable__AttributeData*>(attributeData);
 
44257
 
 
44258
    typedAttributeData->~profile_GLSL__technique__pass__states__cull_face_enable__AttributeData();
 
44259
 
 
44260
    return true;
 
44261
}
 
44262
 
 
44263
//---------------------------------------------------------------------
 
44264
const depth_bounds_enable__AttributeData depth_bounds_enable__AttributeData::DEFAULT = {false, 0};
 
44265
 
 
44266
//---------------------------------------------------------------------
 
44267
bool ColladaParserAutoGen15Private::_data__depth_bounds_enable( const ParserChar* text, size_t textLength )
 
44268
{
 
44269
    return true;
 
44270
}
 
44271
 
 
44272
//---------------------------------------------------------------------
 
44273
bool ColladaParserAutoGen15Private::_preBegin__depth_bounds_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
44274
{
 
44275
#ifdef GENERATEDSAXPARSER_VALIDATION
 
44276
    if ( mValidate )
 
44277
    {
 
44278
 
 
44279
        bool validationResult = _validateBegin__depth_bounds_enable( attributes, attributeDataPtr, validationDataPtr );
 
44280
        if ( !validationResult ) return false;
 
44281
 
 
44282
    } // validation
 
44283
#endif
 
44284
 
 
44285
depth_bounds_enable__AttributeData* attributeData = newData<depth_bounds_enable__AttributeData>(attributeDataPtr);
 
44286
 
 
44287
const ParserChar** attributeArray = attributes.attributes;
 
44288
if ( attributeArray )
 
44289
{
 
44290
    while (true)
 
44291
    {
 
44292
        const ParserChar * attribute = *attributeArray;
 
44293
        if ( !attribute )
 
44294
            break;
 
44295
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
44296
        attributeArray++;
 
44297
        if ( !attributeArray )
 
44298
            return false;
 
44299
        const ParserChar* attributeValue = *attributeArray;
 
44300
        attributeArray++;
 
44301
 
 
44302
 
 
44303
    switch ( hash )
 
44304
    {
 
44305
    case HASH_ATTRIBUTE_VALUE:
 
44306
    {
 
44307
bool failed;
 
44308
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
44309
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
44310
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
44311
        HASH_ELEMENT_DEPTH_BOUNDS_ENABLE,
 
44312
        HASH_ATTRIBUTE_VALUE,
 
44313
        attributeValue))
 
44314
{
 
44315
    return false;
 
44316
}
 
44317
 
 
44318
    break;
 
44319
    }
 
44320
    case HASH_ATTRIBUTE_PARAM:
 
44321
    {
 
44322
 
 
44323
attributeData->param = attributeValue;
 
44324
#ifdef GENERATEDSAXPARSER_VALIDATION
 
44325
    if ( mValidate )
 
44326
    {
 
44327
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
44328
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
44329
    {
 
44330
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
44331
            simpleTypeValidationResult,
 
44332
            HASH_ELEMENT_DEPTH_BOUNDS_ENABLE,
 
44333
            HASH_ATTRIBUTE_PARAM,
 
44334
            attributeValue) )
 
44335
        {
 
44336
            return false;
 
44337
        }
 
44338
    }
 
44339
    } // validation
 
44340
#endif
 
44341
 
 
44342
    break;
 
44343
    }
 
44344
    default:
 
44345
    {
 
44346
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_DEPTH_BOUNDS_ENABLE, attribute, attributeValue))
 
44347
            {return false;}
 
44348
    }
 
44349
    }
 
44350
    }
 
44351
}
 
44352
 
 
44353
 
 
44354
    return true;
 
44355
}
 
44356
 
 
44357
//---------------------------------------------------------------------
 
44358
bool ColladaParserAutoGen15Private::_preEnd__depth_bounds_enable()
 
44359
{
 
44360
#ifdef GENERATEDSAXPARSER_VALIDATION
 
44361
    if ( mValidate )
 
44362
    {
 
44363
 
 
44364
        bool validationResult = _validateEnd__depth_bounds_enable();
 
44365
        if ( !validationResult ) return false;
 
44366
 
 
44367
    } // validation
 
44368
#endif
 
44369
 
 
44370
    return true;
 
44371
}
 
44372
 
 
44373
//---------------------------------------------------------------------
 
44374
bool ColladaParserAutoGen15Private::_freeAttributes__depth_bounds_enable( void* attributeData )
 
44375
{
 
44376
    depth_bounds_enable__AttributeData* typedAttributeData = static_cast<depth_bounds_enable__AttributeData*>(attributeData);
 
44377
 
 
44378
    typedAttributeData->~depth_bounds_enable__AttributeData();
 
44379
 
 
44380
    return true;
 
44381
}
 
44382
 
 
44383
//---------------------------------------------------------------------
 
44384
const depth_clamp_enable__AttributeData depth_clamp_enable__AttributeData::DEFAULT = {false, 0};
 
44385
 
 
44386
//---------------------------------------------------------------------
 
44387
bool ColladaParserAutoGen15Private::_data__depth_clamp_enable( const ParserChar* text, size_t textLength )
 
44388
{
 
44389
    return true;
 
44390
}
 
44391
 
 
44392
//---------------------------------------------------------------------
 
44393
bool ColladaParserAutoGen15Private::_preBegin__depth_clamp_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
44394
{
 
44395
#ifdef GENERATEDSAXPARSER_VALIDATION
 
44396
    if ( mValidate )
 
44397
    {
 
44398
 
 
44399
        bool validationResult = _validateBegin__depth_clamp_enable( attributes, attributeDataPtr, validationDataPtr );
 
44400
        if ( !validationResult ) return false;
 
44401
 
 
44402
    } // validation
 
44403
#endif
 
44404
 
 
44405
depth_clamp_enable__AttributeData* attributeData = newData<depth_clamp_enable__AttributeData>(attributeDataPtr);
 
44406
 
 
44407
const ParserChar** attributeArray = attributes.attributes;
 
44408
if ( attributeArray )
 
44409
{
 
44410
    while (true)
 
44411
    {
 
44412
        const ParserChar * attribute = *attributeArray;
 
44413
        if ( !attribute )
 
44414
            break;
 
44415
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
44416
        attributeArray++;
 
44417
        if ( !attributeArray )
 
44418
            return false;
 
44419
        const ParserChar* attributeValue = *attributeArray;
 
44420
        attributeArray++;
 
44421
 
 
44422
 
 
44423
    switch ( hash )
 
44424
    {
 
44425
    case HASH_ATTRIBUTE_VALUE:
 
44426
    {
 
44427
bool failed;
 
44428
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
44429
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
44430
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
44431
        HASH_ELEMENT_DEPTH_CLAMP_ENABLE,
 
44432
        HASH_ATTRIBUTE_VALUE,
 
44433
        attributeValue))
 
44434
{
 
44435
    return false;
 
44436
}
 
44437
 
 
44438
    break;
 
44439
    }
 
44440
    case HASH_ATTRIBUTE_PARAM:
 
44441
    {
 
44442
 
 
44443
attributeData->param = attributeValue;
 
44444
#ifdef GENERATEDSAXPARSER_VALIDATION
 
44445
    if ( mValidate )
 
44446
    {
 
44447
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
44448
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
44449
    {
 
44450
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
44451
            simpleTypeValidationResult,
 
44452
            HASH_ELEMENT_DEPTH_CLAMP_ENABLE,
 
44453
            HASH_ATTRIBUTE_PARAM,
 
44454
            attributeValue) )
 
44455
        {
 
44456
            return false;
 
44457
        }
 
44458
    }
 
44459
    } // validation
 
44460
#endif
 
44461
 
 
44462
    break;
 
44463
    }
 
44464
    default:
 
44465
    {
 
44466
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_DEPTH_CLAMP_ENABLE, attribute, attributeValue))
 
44467
            {return false;}
 
44468
    }
 
44469
    }
 
44470
    }
 
44471
}
 
44472
 
 
44473
 
 
44474
    return true;
 
44475
}
 
44476
 
 
44477
//---------------------------------------------------------------------
 
44478
bool ColladaParserAutoGen15Private::_preEnd__depth_clamp_enable()
 
44479
{
 
44480
#ifdef GENERATEDSAXPARSER_VALIDATION
 
44481
    if ( mValidate )
 
44482
    {
 
44483
 
 
44484
        bool validationResult = _validateEnd__depth_clamp_enable();
 
44485
        if ( !validationResult ) return false;
 
44486
 
 
44487
    } // validation
 
44488
#endif
 
44489
 
 
44490
    return true;
 
44491
}
 
44492
 
 
44493
//---------------------------------------------------------------------
 
44494
bool ColladaParserAutoGen15Private::_freeAttributes__depth_clamp_enable( void* attributeData )
 
44495
{
 
44496
    depth_clamp_enable__AttributeData* typedAttributeData = static_cast<depth_clamp_enable__AttributeData*>(attributeData);
 
44497
 
 
44498
    typedAttributeData->~depth_clamp_enable__AttributeData();
 
44499
 
 
44500
    return true;
 
44501
}
 
44502
 
 
44503
//---------------------------------------------------------------------
 
44504
const profile_GLSL__technique__pass__states__depth_test_enable__AttributeData profile_GLSL__technique__pass__states__depth_test_enable__AttributeData::DEFAULT = {false, 0};
 
44505
 
 
44506
//---------------------------------------------------------------------
 
44507
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__depth_test_enable( const ParserChar* text, size_t textLength )
 
44508
{
 
44509
    return true;
 
44510
}
 
44511
 
 
44512
//---------------------------------------------------------------------
 
44513
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__depth_test_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
44514
{
 
44515
#ifdef GENERATEDSAXPARSER_VALIDATION
 
44516
    if ( mValidate )
 
44517
    {
 
44518
 
 
44519
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__depth_test_enable( attributes, attributeDataPtr, validationDataPtr );
 
44520
        if ( !validationResult ) return false;
 
44521
 
 
44522
    } // validation
 
44523
#endif
 
44524
 
 
44525
profile_GLSL__technique__pass__states__depth_test_enable__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__depth_test_enable__AttributeData>(attributeDataPtr);
 
44526
 
 
44527
const ParserChar** attributeArray = attributes.attributes;
 
44528
if ( attributeArray )
 
44529
{
 
44530
    while (true)
 
44531
    {
 
44532
        const ParserChar * attribute = *attributeArray;
 
44533
        if ( !attribute )
 
44534
            break;
 
44535
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
44536
        attributeArray++;
 
44537
        if ( !attributeArray )
 
44538
            return false;
 
44539
        const ParserChar* attributeValue = *attributeArray;
 
44540
        attributeArray++;
 
44541
 
 
44542
 
 
44543
    switch ( hash )
 
44544
    {
 
44545
    case HASH_ATTRIBUTE_VALUE:
 
44546
    {
 
44547
bool failed;
 
44548
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
44549
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
44550
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
44551
        HASH_ELEMENT_DEPTH_TEST_ENABLE,
 
44552
        HASH_ATTRIBUTE_VALUE,
 
44553
        attributeValue))
 
44554
{
 
44555
    return false;
 
44556
}
 
44557
 
 
44558
    break;
 
44559
    }
 
44560
    case HASH_ATTRIBUTE_PARAM:
 
44561
    {
 
44562
 
 
44563
attributeData->param = attributeValue;
 
44564
#ifdef GENERATEDSAXPARSER_VALIDATION
 
44565
    if ( mValidate )
 
44566
    {
 
44567
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
44568
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
44569
    {
 
44570
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
44571
            simpleTypeValidationResult,
 
44572
            HASH_ELEMENT_DEPTH_TEST_ENABLE,
 
44573
            HASH_ATTRIBUTE_PARAM,
 
44574
            attributeValue) )
 
44575
        {
 
44576
            return false;
 
44577
        }
 
44578
    }
 
44579
    } // validation
 
44580
#endif
 
44581
 
 
44582
    break;
 
44583
    }
 
44584
    default:
 
44585
    {
 
44586
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_DEPTH_TEST_ENABLE, attribute, attributeValue))
 
44587
            {return false;}
 
44588
    }
 
44589
    }
 
44590
    }
 
44591
}
 
44592
 
 
44593
 
 
44594
    return true;
 
44595
}
 
44596
 
 
44597
//---------------------------------------------------------------------
 
44598
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__depth_test_enable()
 
44599
{
 
44600
#ifdef GENERATEDSAXPARSER_VALIDATION
 
44601
    if ( mValidate )
 
44602
    {
 
44603
 
 
44604
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__depth_test_enable();
 
44605
        if ( !validationResult ) return false;
 
44606
 
 
44607
    } // validation
 
44608
#endif
 
44609
 
 
44610
    return true;
 
44611
}
 
44612
 
 
44613
//---------------------------------------------------------------------
 
44614
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__depth_test_enable( void* attributeData )
 
44615
{
 
44616
    profile_GLSL__technique__pass__states__depth_test_enable__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__depth_test_enable__AttributeData*>(attributeData);
 
44617
 
 
44618
    typedAttributeData->~profile_GLSL__technique__pass__states__depth_test_enable__AttributeData();
 
44619
 
 
44620
    return true;
 
44621
}
 
44622
 
 
44623
//---------------------------------------------------------------------
 
44624
const profile_GLSL__technique__pass__states__dither_enable__AttributeData profile_GLSL__technique__pass__states__dither_enable__AttributeData::DEFAULT = {true, 0};
 
44625
 
 
44626
//---------------------------------------------------------------------
 
44627
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__dither_enable( const ParserChar* text, size_t textLength )
 
44628
{
 
44629
    return true;
 
44630
}
 
44631
 
 
44632
//---------------------------------------------------------------------
 
44633
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__dither_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
44634
{
 
44635
#ifdef GENERATEDSAXPARSER_VALIDATION
 
44636
    if ( mValidate )
 
44637
    {
 
44638
 
 
44639
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__dither_enable( attributes, attributeDataPtr, validationDataPtr );
 
44640
        if ( !validationResult ) return false;
 
44641
 
 
44642
    } // validation
 
44643
#endif
 
44644
 
 
44645
profile_GLSL__technique__pass__states__dither_enable__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__dither_enable__AttributeData>(attributeDataPtr);
 
44646
 
 
44647
const ParserChar** attributeArray = attributes.attributes;
 
44648
if ( attributeArray )
 
44649
{
 
44650
    while (true)
 
44651
    {
 
44652
        const ParserChar * attribute = *attributeArray;
 
44653
        if ( !attribute )
 
44654
            break;
 
44655
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
44656
        attributeArray++;
 
44657
        if ( !attributeArray )
 
44658
            return false;
 
44659
        const ParserChar* attributeValue = *attributeArray;
 
44660
        attributeArray++;
 
44661
 
 
44662
 
 
44663
    switch ( hash )
 
44664
    {
 
44665
    case HASH_ATTRIBUTE_VALUE:
 
44666
    {
 
44667
bool failed;
 
44668
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
44669
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
44670
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
44671
        HASH_ELEMENT_DITHER_ENABLE,
 
44672
        HASH_ATTRIBUTE_VALUE,
 
44673
        attributeValue))
 
44674
{
 
44675
    return false;
 
44676
}
 
44677
 
 
44678
    break;
 
44679
    }
 
44680
    case HASH_ATTRIBUTE_PARAM:
 
44681
    {
 
44682
 
 
44683
attributeData->param = attributeValue;
 
44684
#ifdef GENERATEDSAXPARSER_VALIDATION
 
44685
    if ( mValidate )
 
44686
    {
 
44687
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
44688
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
44689
    {
 
44690
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
44691
            simpleTypeValidationResult,
 
44692
            HASH_ELEMENT_DITHER_ENABLE,
 
44693
            HASH_ATTRIBUTE_PARAM,
 
44694
            attributeValue) )
 
44695
        {
 
44696
            return false;
 
44697
        }
 
44698
    }
 
44699
    } // validation
 
44700
#endif
 
44701
 
 
44702
    break;
 
44703
    }
 
44704
    default:
 
44705
    {
 
44706
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_DITHER_ENABLE, attribute, attributeValue))
 
44707
            {return false;}
 
44708
    }
 
44709
    }
 
44710
    }
 
44711
}
 
44712
 
 
44713
 
 
44714
    return true;
 
44715
}
 
44716
 
 
44717
//---------------------------------------------------------------------
 
44718
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__dither_enable()
 
44719
{
 
44720
#ifdef GENERATEDSAXPARSER_VALIDATION
 
44721
    if ( mValidate )
 
44722
    {
 
44723
 
 
44724
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__dither_enable();
 
44725
        if ( !validationResult ) return false;
 
44726
 
 
44727
    } // validation
 
44728
#endif
 
44729
 
 
44730
    return true;
 
44731
}
 
44732
 
 
44733
//---------------------------------------------------------------------
 
44734
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__dither_enable( void* attributeData )
 
44735
{
 
44736
    profile_GLSL__technique__pass__states__dither_enable__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__dither_enable__AttributeData*>(attributeData);
 
44737
 
 
44738
    typedAttributeData->~profile_GLSL__technique__pass__states__dither_enable__AttributeData();
 
44739
 
 
44740
    return true;
 
44741
}
 
44742
 
 
44743
//---------------------------------------------------------------------
 
44744
const profile_GLSL__technique__pass__states__fog_enable__AttributeData profile_GLSL__technique__pass__states__fog_enable__AttributeData::DEFAULT = {false, 0};
 
44745
 
 
44746
//---------------------------------------------------------------------
 
44747
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__fog_enable( const ParserChar* text, size_t textLength )
 
44748
{
 
44749
    return true;
 
44750
}
 
44751
 
 
44752
//---------------------------------------------------------------------
 
44753
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__fog_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
44754
{
 
44755
#ifdef GENERATEDSAXPARSER_VALIDATION
 
44756
    if ( mValidate )
 
44757
    {
 
44758
 
 
44759
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__fog_enable( attributes, attributeDataPtr, validationDataPtr );
 
44760
        if ( !validationResult ) return false;
 
44761
 
 
44762
    } // validation
 
44763
#endif
 
44764
 
 
44765
profile_GLSL__technique__pass__states__fog_enable__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__fog_enable__AttributeData>(attributeDataPtr);
 
44766
 
 
44767
const ParserChar** attributeArray = attributes.attributes;
 
44768
if ( attributeArray )
 
44769
{
 
44770
    while (true)
 
44771
    {
 
44772
        const ParserChar * attribute = *attributeArray;
 
44773
        if ( !attribute )
 
44774
            break;
 
44775
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
44776
        attributeArray++;
 
44777
        if ( !attributeArray )
 
44778
            return false;
 
44779
        const ParserChar* attributeValue = *attributeArray;
 
44780
        attributeArray++;
 
44781
 
 
44782
 
 
44783
    switch ( hash )
 
44784
    {
 
44785
    case HASH_ATTRIBUTE_VALUE:
 
44786
    {
 
44787
bool failed;
 
44788
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
44789
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
44790
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
44791
        HASH_ELEMENT_FOG_ENABLE,
 
44792
        HASH_ATTRIBUTE_VALUE,
 
44793
        attributeValue))
 
44794
{
 
44795
    return false;
 
44796
}
 
44797
 
 
44798
    break;
 
44799
    }
 
44800
    case HASH_ATTRIBUTE_PARAM:
 
44801
    {
 
44802
 
 
44803
attributeData->param = attributeValue;
 
44804
#ifdef GENERATEDSAXPARSER_VALIDATION
 
44805
    if ( mValidate )
 
44806
    {
 
44807
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
44808
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
44809
    {
 
44810
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
44811
            simpleTypeValidationResult,
 
44812
            HASH_ELEMENT_FOG_ENABLE,
 
44813
            HASH_ATTRIBUTE_PARAM,
 
44814
            attributeValue) )
 
44815
        {
 
44816
            return false;
 
44817
        }
 
44818
    }
 
44819
    } // validation
 
44820
#endif
 
44821
 
 
44822
    break;
 
44823
    }
 
44824
    default:
 
44825
    {
 
44826
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FOG_ENABLE, attribute, attributeValue))
 
44827
            {return false;}
 
44828
    }
 
44829
    }
 
44830
    }
 
44831
}
 
44832
 
 
44833
 
 
44834
    return true;
 
44835
}
 
44836
 
 
44837
//---------------------------------------------------------------------
 
44838
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__fog_enable()
 
44839
{
 
44840
#ifdef GENERATEDSAXPARSER_VALIDATION
 
44841
    if ( mValidate )
 
44842
    {
 
44843
 
 
44844
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__fog_enable();
 
44845
        if ( !validationResult ) return false;
 
44846
 
 
44847
    } // validation
 
44848
#endif
 
44849
 
 
44850
    return true;
 
44851
}
 
44852
 
 
44853
//---------------------------------------------------------------------
 
44854
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__fog_enable( void* attributeData )
 
44855
{
 
44856
    profile_GLSL__technique__pass__states__fog_enable__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__fog_enable__AttributeData*>(attributeData);
 
44857
 
 
44858
    typedAttributeData->~profile_GLSL__technique__pass__states__fog_enable__AttributeData();
 
44859
 
 
44860
    return true;
 
44861
}
 
44862
 
 
44863
//---------------------------------------------------------------------
 
44864
const light_model_local_viewer_enable__AttributeData light_model_local_viewer_enable__AttributeData::DEFAULT = {false, 0};
 
44865
 
 
44866
//---------------------------------------------------------------------
 
44867
bool ColladaParserAutoGen15Private::_data__light_model_local_viewer_enable( const ParserChar* text, size_t textLength )
 
44868
{
 
44869
    return true;
 
44870
}
 
44871
 
 
44872
//---------------------------------------------------------------------
 
44873
bool ColladaParserAutoGen15Private::_preBegin__light_model_local_viewer_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
44874
{
 
44875
#ifdef GENERATEDSAXPARSER_VALIDATION
 
44876
    if ( mValidate )
 
44877
    {
 
44878
 
 
44879
        bool validationResult = _validateBegin__light_model_local_viewer_enable( attributes, attributeDataPtr, validationDataPtr );
 
44880
        if ( !validationResult ) return false;
 
44881
 
 
44882
    } // validation
 
44883
#endif
 
44884
 
 
44885
light_model_local_viewer_enable__AttributeData* attributeData = newData<light_model_local_viewer_enable__AttributeData>(attributeDataPtr);
 
44886
 
 
44887
const ParserChar** attributeArray = attributes.attributes;
 
44888
if ( attributeArray )
 
44889
{
 
44890
    while (true)
 
44891
    {
 
44892
        const ParserChar * attribute = *attributeArray;
 
44893
        if ( !attribute )
 
44894
            break;
 
44895
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
44896
        attributeArray++;
 
44897
        if ( !attributeArray )
 
44898
            return false;
 
44899
        const ParserChar* attributeValue = *attributeArray;
 
44900
        attributeArray++;
 
44901
 
 
44902
 
 
44903
    switch ( hash )
 
44904
    {
 
44905
    case HASH_ATTRIBUTE_VALUE:
 
44906
    {
 
44907
bool failed;
 
44908
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
44909
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
44910
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
44911
        HASH_ELEMENT_LIGHT_MODEL_LOCAL_VIEWER_ENABLE,
 
44912
        HASH_ATTRIBUTE_VALUE,
 
44913
        attributeValue))
 
44914
{
 
44915
    return false;
 
44916
}
 
44917
 
 
44918
    break;
 
44919
    }
 
44920
    case HASH_ATTRIBUTE_PARAM:
 
44921
    {
 
44922
 
 
44923
attributeData->param = attributeValue;
 
44924
#ifdef GENERATEDSAXPARSER_VALIDATION
 
44925
    if ( mValidate )
 
44926
    {
 
44927
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
44928
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
44929
    {
 
44930
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
44931
            simpleTypeValidationResult,
 
44932
            HASH_ELEMENT_LIGHT_MODEL_LOCAL_VIEWER_ENABLE,
 
44933
            HASH_ATTRIBUTE_PARAM,
 
44934
            attributeValue) )
 
44935
        {
 
44936
            return false;
 
44937
        }
 
44938
    }
 
44939
    } // validation
 
44940
#endif
 
44941
 
 
44942
    break;
 
44943
    }
 
44944
    default:
 
44945
    {
 
44946
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIGHT_MODEL_LOCAL_VIEWER_ENABLE, attribute, attributeValue))
 
44947
            {return false;}
 
44948
    }
 
44949
    }
 
44950
    }
 
44951
}
 
44952
 
 
44953
 
 
44954
    return true;
 
44955
}
 
44956
 
 
44957
//---------------------------------------------------------------------
 
44958
bool ColladaParserAutoGen15Private::_preEnd__light_model_local_viewer_enable()
 
44959
{
 
44960
#ifdef GENERATEDSAXPARSER_VALIDATION
 
44961
    if ( mValidate )
 
44962
    {
 
44963
 
 
44964
        bool validationResult = _validateEnd__light_model_local_viewer_enable();
 
44965
        if ( !validationResult ) return false;
 
44966
 
 
44967
    } // validation
 
44968
#endif
 
44969
 
 
44970
    return true;
 
44971
}
 
44972
 
 
44973
//---------------------------------------------------------------------
 
44974
bool ColladaParserAutoGen15Private::_freeAttributes__light_model_local_viewer_enable( void* attributeData )
 
44975
{
 
44976
    light_model_local_viewer_enable__AttributeData* typedAttributeData = static_cast<light_model_local_viewer_enable__AttributeData*>(attributeData);
 
44977
 
 
44978
    typedAttributeData->~light_model_local_viewer_enable__AttributeData();
 
44979
 
 
44980
    return true;
 
44981
}
 
44982
 
 
44983
//---------------------------------------------------------------------
 
44984
const profile_GLSL__technique__pass__states__light_model_two_side_enable__AttributeData profile_GLSL__technique__pass__states__light_model_two_side_enable__AttributeData::DEFAULT = {false, 0};
 
44985
 
 
44986
//---------------------------------------------------------------------
 
44987
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__light_model_two_side_enable( const ParserChar* text, size_t textLength )
 
44988
{
 
44989
    return true;
 
44990
}
 
44991
 
 
44992
//---------------------------------------------------------------------
 
44993
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__light_model_two_side_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
44994
{
 
44995
#ifdef GENERATEDSAXPARSER_VALIDATION
 
44996
    if ( mValidate )
 
44997
    {
 
44998
 
 
44999
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__light_model_two_side_enable( attributes, attributeDataPtr, validationDataPtr );
 
45000
        if ( !validationResult ) return false;
 
45001
 
 
45002
    } // validation
 
45003
#endif
 
45004
 
 
45005
profile_GLSL__technique__pass__states__light_model_two_side_enable__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__light_model_two_side_enable__AttributeData>(attributeDataPtr);
 
45006
 
 
45007
const ParserChar** attributeArray = attributes.attributes;
 
45008
if ( attributeArray )
 
45009
{
 
45010
    while (true)
 
45011
    {
 
45012
        const ParserChar * attribute = *attributeArray;
 
45013
        if ( !attribute )
 
45014
            break;
 
45015
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
45016
        attributeArray++;
 
45017
        if ( !attributeArray )
 
45018
            return false;
 
45019
        const ParserChar* attributeValue = *attributeArray;
 
45020
        attributeArray++;
 
45021
 
 
45022
 
 
45023
    switch ( hash )
 
45024
    {
 
45025
    case HASH_ATTRIBUTE_VALUE:
 
45026
    {
 
45027
bool failed;
 
45028
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
45029
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
45030
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
45031
        HASH_ELEMENT_LIGHT_MODEL_TWO_SIDE_ENABLE,
 
45032
        HASH_ATTRIBUTE_VALUE,
 
45033
        attributeValue))
 
45034
{
 
45035
    return false;
 
45036
}
 
45037
 
 
45038
    break;
 
45039
    }
 
45040
    case HASH_ATTRIBUTE_PARAM:
 
45041
    {
 
45042
 
 
45043
attributeData->param = attributeValue;
 
45044
#ifdef GENERATEDSAXPARSER_VALIDATION
 
45045
    if ( mValidate )
 
45046
    {
 
45047
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
45048
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
45049
    {
 
45050
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
45051
            simpleTypeValidationResult,
 
45052
            HASH_ELEMENT_LIGHT_MODEL_TWO_SIDE_ENABLE,
 
45053
            HASH_ATTRIBUTE_PARAM,
 
45054
            attributeValue) )
 
45055
        {
 
45056
            return false;
 
45057
        }
 
45058
    }
 
45059
    } // validation
 
45060
#endif
 
45061
 
 
45062
    break;
 
45063
    }
 
45064
    default:
 
45065
    {
 
45066
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIGHT_MODEL_TWO_SIDE_ENABLE, attribute, attributeValue))
 
45067
            {return false;}
 
45068
    }
 
45069
    }
 
45070
    }
 
45071
}
 
45072
 
 
45073
 
 
45074
    return true;
 
45075
}
 
45076
 
 
45077
//---------------------------------------------------------------------
 
45078
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__light_model_two_side_enable()
 
45079
{
 
45080
#ifdef GENERATEDSAXPARSER_VALIDATION
 
45081
    if ( mValidate )
 
45082
    {
 
45083
 
 
45084
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__light_model_two_side_enable();
 
45085
        if ( !validationResult ) return false;
 
45086
 
 
45087
    } // validation
 
45088
#endif
 
45089
 
 
45090
    return true;
 
45091
}
 
45092
 
 
45093
//---------------------------------------------------------------------
 
45094
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__light_model_two_side_enable( void* attributeData )
 
45095
{
 
45096
    profile_GLSL__technique__pass__states__light_model_two_side_enable__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__light_model_two_side_enable__AttributeData*>(attributeData);
 
45097
 
 
45098
    typedAttributeData->~profile_GLSL__technique__pass__states__light_model_two_side_enable__AttributeData();
 
45099
 
 
45100
    return true;
 
45101
}
 
45102
 
 
45103
//---------------------------------------------------------------------
 
45104
const profile_GLSL__technique__pass__states__line_smooth_enable__AttributeData profile_GLSL__technique__pass__states__line_smooth_enable__AttributeData::DEFAULT = {false, 0};
 
45105
 
 
45106
//---------------------------------------------------------------------
 
45107
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__line_smooth_enable( const ParserChar* text, size_t textLength )
 
45108
{
 
45109
    return true;
 
45110
}
 
45111
 
 
45112
//---------------------------------------------------------------------
 
45113
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__line_smooth_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
45114
{
 
45115
#ifdef GENERATEDSAXPARSER_VALIDATION
 
45116
    if ( mValidate )
 
45117
    {
 
45118
 
 
45119
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__line_smooth_enable( attributes, attributeDataPtr, validationDataPtr );
 
45120
        if ( !validationResult ) return false;
 
45121
 
 
45122
    } // validation
 
45123
#endif
 
45124
 
 
45125
profile_GLSL__technique__pass__states__line_smooth_enable__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__line_smooth_enable__AttributeData>(attributeDataPtr);
 
45126
 
 
45127
const ParserChar** attributeArray = attributes.attributes;
 
45128
if ( attributeArray )
 
45129
{
 
45130
    while (true)
 
45131
    {
 
45132
        const ParserChar * attribute = *attributeArray;
 
45133
        if ( !attribute )
 
45134
            break;
 
45135
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
45136
        attributeArray++;
 
45137
        if ( !attributeArray )
 
45138
            return false;
 
45139
        const ParserChar* attributeValue = *attributeArray;
 
45140
        attributeArray++;
 
45141
 
 
45142
 
 
45143
    switch ( hash )
 
45144
    {
 
45145
    case HASH_ATTRIBUTE_VALUE:
 
45146
    {
 
45147
bool failed;
 
45148
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
45149
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
45150
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
45151
        HASH_ELEMENT_LINE_SMOOTH_ENABLE,
 
45152
        HASH_ATTRIBUTE_VALUE,
 
45153
        attributeValue))
 
45154
{
 
45155
    return false;
 
45156
}
 
45157
 
 
45158
    break;
 
45159
    }
 
45160
    case HASH_ATTRIBUTE_PARAM:
 
45161
    {
 
45162
 
 
45163
attributeData->param = attributeValue;
 
45164
#ifdef GENERATEDSAXPARSER_VALIDATION
 
45165
    if ( mValidate )
 
45166
    {
 
45167
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
45168
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
45169
    {
 
45170
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
45171
            simpleTypeValidationResult,
 
45172
            HASH_ELEMENT_LINE_SMOOTH_ENABLE,
 
45173
            HASH_ATTRIBUTE_PARAM,
 
45174
            attributeValue) )
 
45175
        {
 
45176
            return false;
 
45177
        }
 
45178
    }
 
45179
    } // validation
 
45180
#endif
 
45181
 
 
45182
    break;
 
45183
    }
 
45184
    default:
 
45185
    {
 
45186
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LINE_SMOOTH_ENABLE, attribute, attributeValue))
 
45187
            {return false;}
 
45188
    }
 
45189
    }
 
45190
    }
 
45191
}
 
45192
 
 
45193
 
 
45194
    return true;
 
45195
}
 
45196
 
 
45197
//---------------------------------------------------------------------
 
45198
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__line_smooth_enable()
 
45199
{
 
45200
#ifdef GENERATEDSAXPARSER_VALIDATION
 
45201
    if ( mValidate )
 
45202
    {
 
45203
 
 
45204
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__line_smooth_enable();
 
45205
        if ( !validationResult ) return false;
 
45206
 
 
45207
    } // validation
 
45208
#endif
 
45209
 
 
45210
    return true;
 
45211
}
 
45212
 
 
45213
//---------------------------------------------------------------------
 
45214
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__line_smooth_enable( void* attributeData )
 
45215
{
 
45216
    profile_GLSL__technique__pass__states__line_smooth_enable__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__line_smooth_enable__AttributeData*>(attributeData);
 
45217
 
 
45218
    typedAttributeData->~profile_GLSL__technique__pass__states__line_smooth_enable__AttributeData();
 
45219
 
 
45220
    return true;
 
45221
}
 
45222
 
 
45223
//---------------------------------------------------------------------
 
45224
const line_stipple_enable__AttributeData line_stipple_enable__AttributeData::DEFAULT = {false, 0};
 
45225
 
 
45226
//---------------------------------------------------------------------
 
45227
bool ColladaParserAutoGen15Private::_data__line_stipple_enable( const ParserChar* text, size_t textLength )
 
45228
{
 
45229
    return true;
 
45230
}
 
45231
 
 
45232
//---------------------------------------------------------------------
 
45233
bool ColladaParserAutoGen15Private::_preBegin__line_stipple_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
45234
{
 
45235
#ifdef GENERATEDSAXPARSER_VALIDATION
 
45236
    if ( mValidate )
 
45237
    {
 
45238
 
 
45239
        bool validationResult = _validateBegin__line_stipple_enable( attributes, attributeDataPtr, validationDataPtr );
 
45240
        if ( !validationResult ) return false;
 
45241
 
 
45242
    } // validation
 
45243
#endif
 
45244
 
 
45245
line_stipple_enable__AttributeData* attributeData = newData<line_stipple_enable__AttributeData>(attributeDataPtr);
 
45246
 
 
45247
const ParserChar** attributeArray = attributes.attributes;
 
45248
if ( attributeArray )
 
45249
{
 
45250
    while (true)
 
45251
    {
 
45252
        const ParserChar * attribute = *attributeArray;
 
45253
        if ( !attribute )
 
45254
            break;
 
45255
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
45256
        attributeArray++;
 
45257
        if ( !attributeArray )
 
45258
            return false;
 
45259
        const ParserChar* attributeValue = *attributeArray;
 
45260
        attributeArray++;
 
45261
 
 
45262
 
 
45263
    switch ( hash )
 
45264
    {
 
45265
    case HASH_ATTRIBUTE_VALUE:
 
45266
    {
 
45267
bool failed;
 
45268
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
45269
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
45270
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
45271
        HASH_ELEMENT_LINE_STIPPLE_ENABLE,
 
45272
        HASH_ATTRIBUTE_VALUE,
 
45273
        attributeValue))
 
45274
{
 
45275
    return false;
 
45276
}
 
45277
 
 
45278
    break;
 
45279
    }
 
45280
    case HASH_ATTRIBUTE_PARAM:
 
45281
    {
 
45282
 
 
45283
attributeData->param = attributeValue;
 
45284
#ifdef GENERATEDSAXPARSER_VALIDATION
 
45285
    if ( mValidate )
 
45286
    {
 
45287
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
45288
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
45289
    {
 
45290
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
45291
            simpleTypeValidationResult,
 
45292
            HASH_ELEMENT_LINE_STIPPLE_ENABLE,
 
45293
            HASH_ATTRIBUTE_PARAM,
 
45294
            attributeValue) )
 
45295
        {
 
45296
            return false;
 
45297
        }
 
45298
    }
 
45299
    } // validation
 
45300
#endif
 
45301
 
 
45302
    break;
 
45303
    }
 
45304
    default:
 
45305
    {
 
45306
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LINE_STIPPLE_ENABLE, attribute, attributeValue))
 
45307
            {return false;}
 
45308
    }
 
45309
    }
 
45310
    }
 
45311
}
 
45312
 
 
45313
 
 
45314
    return true;
 
45315
}
 
45316
 
 
45317
//---------------------------------------------------------------------
 
45318
bool ColladaParserAutoGen15Private::_preEnd__line_stipple_enable()
 
45319
{
 
45320
#ifdef GENERATEDSAXPARSER_VALIDATION
 
45321
    if ( mValidate )
 
45322
    {
 
45323
 
 
45324
        bool validationResult = _validateEnd__line_stipple_enable();
 
45325
        if ( !validationResult ) return false;
 
45326
 
 
45327
    } // validation
 
45328
#endif
 
45329
 
 
45330
    return true;
 
45331
}
 
45332
 
 
45333
//---------------------------------------------------------------------
 
45334
bool ColladaParserAutoGen15Private::_freeAttributes__line_stipple_enable( void* attributeData )
 
45335
{
 
45336
    line_stipple_enable__AttributeData* typedAttributeData = static_cast<line_stipple_enable__AttributeData*>(attributeData);
 
45337
 
 
45338
    typedAttributeData->~line_stipple_enable__AttributeData();
 
45339
 
 
45340
    return true;
 
45341
}
 
45342
 
 
45343
//---------------------------------------------------------------------
 
45344
const logic_op_enable__AttributeData logic_op_enable__AttributeData::DEFAULT = {false, 0};
 
45345
 
 
45346
//---------------------------------------------------------------------
 
45347
bool ColladaParserAutoGen15Private::_data__logic_op_enable( const ParserChar* text, size_t textLength )
 
45348
{
 
45349
    return true;
 
45350
}
 
45351
 
 
45352
//---------------------------------------------------------------------
 
45353
bool ColladaParserAutoGen15Private::_preBegin__logic_op_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
45354
{
 
45355
#ifdef GENERATEDSAXPARSER_VALIDATION
 
45356
    if ( mValidate )
 
45357
    {
 
45358
 
 
45359
        bool validationResult = _validateBegin__logic_op_enable( attributes, attributeDataPtr, validationDataPtr );
 
45360
        if ( !validationResult ) return false;
 
45361
 
 
45362
    } // validation
 
45363
#endif
 
45364
 
 
45365
logic_op_enable__AttributeData* attributeData = newData<logic_op_enable__AttributeData>(attributeDataPtr);
 
45366
 
 
45367
const ParserChar** attributeArray = attributes.attributes;
 
45368
if ( attributeArray )
 
45369
{
 
45370
    while (true)
 
45371
    {
 
45372
        const ParserChar * attribute = *attributeArray;
 
45373
        if ( !attribute )
 
45374
            break;
 
45375
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
45376
        attributeArray++;
 
45377
        if ( !attributeArray )
 
45378
            return false;
 
45379
        const ParserChar* attributeValue = *attributeArray;
 
45380
        attributeArray++;
 
45381
 
 
45382
 
 
45383
    switch ( hash )
 
45384
    {
 
45385
    case HASH_ATTRIBUTE_VALUE:
 
45386
    {
 
45387
bool failed;
 
45388
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
45389
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
45390
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
45391
        HASH_ELEMENT_LOGIC_OP_ENABLE,
 
45392
        HASH_ATTRIBUTE_VALUE,
 
45393
        attributeValue))
 
45394
{
 
45395
    return false;
 
45396
}
 
45397
 
 
45398
    break;
 
45399
    }
 
45400
    case HASH_ATTRIBUTE_PARAM:
 
45401
    {
 
45402
 
 
45403
attributeData->param = attributeValue;
 
45404
#ifdef GENERATEDSAXPARSER_VALIDATION
 
45405
    if ( mValidate )
 
45406
    {
 
45407
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
45408
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
45409
    {
 
45410
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
45411
            simpleTypeValidationResult,
 
45412
            HASH_ELEMENT_LOGIC_OP_ENABLE,
 
45413
            HASH_ATTRIBUTE_PARAM,
 
45414
            attributeValue) )
 
45415
        {
 
45416
            return false;
 
45417
        }
 
45418
    }
 
45419
    } // validation
 
45420
#endif
 
45421
 
 
45422
    break;
 
45423
    }
 
45424
    default:
 
45425
    {
 
45426
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LOGIC_OP_ENABLE, attribute, attributeValue))
 
45427
            {return false;}
 
45428
    }
 
45429
    }
 
45430
    }
 
45431
}
 
45432
 
 
45433
 
 
45434
    return true;
 
45435
}
 
45436
 
 
45437
//---------------------------------------------------------------------
 
45438
bool ColladaParserAutoGen15Private::_preEnd__logic_op_enable()
 
45439
{
 
45440
#ifdef GENERATEDSAXPARSER_VALIDATION
 
45441
    if ( mValidate )
 
45442
    {
 
45443
 
 
45444
        bool validationResult = _validateEnd__logic_op_enable();
 
45445
        if ( !validationResult ) return false;
 
45446
 
 
45447
    } // validation
 
45448
#endif
 
45449
 
 
45450
    return true;
 
45451
}
 
45452
 
 
45453
//---------------------------------------------------------------------
 
45454
bool ColladaParserAutoGen15Private::_freeAttributes__logic_op_enable( void* attributeData )
 
45455
{
 
45456
    logic_op_enable__AttributeData* typedAttributeData = static_cast<logic_op_enable__AttributeData*>(attributeData);
 
45457
 
 
45458
    typedAttributeData->~logic_op_enable__AttributeData();
 
45459
 
 
45460
    return true;
 
45461
}
 
45462
 
 
45463
//---------------------------------------------------------------------
 
45464
const profile_GLSL__technique__pass__states__multisample_enable__AttributeData profile_GLSL__technique__pass__states__multisample_enable__AttributeData::DEFAULT = {false, 0};
 
45465
 
 
45466
//---------------------------------------------------------------------
 
45467
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__multisample_enable( const ParserChar* text, size_t textLength )
 
45468
{
 
45469
    return true;
 
45470
}
 
45471
 
 
45472
//---------------------------------------------------------------------
 
45473
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__multisample_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
45474
{
 
45475
#ifdef GENERATEDSAXPARSER_VALIDATION
 
45476
    if ( mValidate )
 
45477
    {
 
45478
 
 
45479
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__multisample_enable( attributes, attributeDataPtr, validationDataPtr );
 
45480
        if ( !validationResult ) return false;
 
45481
 
 
45482
    } // validation
 
45483
#endif
 
45484
 
 
45485
profile_GLSL__technique__pass__states__multisample_enable__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__multisample_enable__AttributeData>(attributeDataPtr);
 
45486
 
 
45487
const ParserChar** attributeArray = attributes.attributes;
 
45488
if ( attributeArray )
 
45489
{
 
45490
    while (true)
 
45491
    {
 
45492
        const ParserChar * attribute = *attributeArray;
 
45493
        if ( !attribute )
 
45494
            break;
 
45495
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
45496
        attributeArray++;
 
45497
        if ( !attributeArray )
 
45498
            return false;
 
45499
        const ParserChar* attributeValue = *attributeArray;
 
45500
        attributeArray++;
 
45501
 
 
45502
 
 
45503
    switch ( hash )
 
45504
    {
 
45505
    case HASH_ATTRIBUTE_VALUE:
 
45506
    {
 
45507
bool failed;
 
45508
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
45509
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
45510
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
45511
        HASH_ELEMENT_MULTISAMPLE_ENABLE,
 
45512
        HASH_ATTRIBUTE_VALUE,
 
45513
        attributeValue))
 
45514
{
 
45515
    return false;
 
45516
}
 
45517
 
 
45518
    break;
 
45519
    }
 
45520
    case HASH_ATTRIBUTE_PARAM:
 
45521
    {
 
45522
 
 
45523
attributeData->param = attributeValue;
 
45524
#ifdef GENERATEDSAXPARSER_VALIDATION
 
45525
    if ( mValidate )
 
45526
    {
 
45527
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
45528
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
45529
    {
 
45530
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
45531
            simpleTypeValidationResult,
 
45532
            HASH_ELEMENT_MULTISAMPLE_ENABLE,
 
45533
            HASH_ATTRIBUTE_PARAM,
 
45534
            attributeValue) )
 
45535
        {
 
45536
            return false;
 
45537
        }
 
45538
    }
 
45539
    } // validation
 
45540
#endif
 
45541
 
 
45542
    break;
 
45543
    }
 
45544
    default:
 
45545
    {
 
45546
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_MULTISAMPLE_ENABLE, attribute, attributeValue))
 
45547
            {return false;}
 
45548
    }
 
45549
    }
 
45550
    }
 
45551
}
 
45552
 
 
45553
 
 
45554
    return true;
 
45555
}
 
45556
 
 
45557
//---------------------------------------------------------------------
 
45558
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__multisample_enable()
 
45559
{
 
45560
#ifdef GENERATEDSAXPARSER_VALIDATION
 
45561
    if ( mValidate )
 
45562
    {
 
45563
 
 
45564
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__multisample_enable();
 
45565
        if ( !validationResult ) return false;
 
45566
 
 
45567
    } // validation
 
45568
#endif
 
45569
 
 
45570
    return true;
 
45571
}
 
45572
 
 
45573
//---------------------------------------------------------------------
 
45574
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__multisample_enable( void* attributeData )
 
45575
{
 
45576
    profile_GLSL__technique__pass__states__multisample_enable__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__multisample_enable__AttributeData*>(attributeData);
 
45577
 
 
45578
    typedAttributeData->~profile_GLSL__technique__pass__states__multisample_enable__AttributeData();
 
45579
 
 
45580
    return true;
 
45581
}
 
45582
 
 
45583
//---------------------------------------------------------------------
 
45584
const profile_GLSL__technique__pass__states__normalize_enable__AttributeData profile_GLSL__technique__pass__states__normalize_enable__AttributeData::DEFAULT = {false, 0};
 
45585
 
 
45586
//---------------------------------------------------------------------
 
45587
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__normalize_enable( const ParserChar* text, size_t textLength )
 
45588
{
 
45589
    return true;
 
45590
}
 
45591
 
 
45592
//---------------------------------------------------------------------
 
45593
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__normalize_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
45594
{
 
45595
#ifdef GENERATEDSAXPARSER_VALIDATION
 
45596
    if ( mValidate )
 
45597
    {
 
45598
 
 
45599
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__normalize_enable( attributes, attributeDataPtr, validationDataPtr );
 
45600
        if ( !validationResult ) return false;
 
45601
 
 
45602
    } // validation
 
45603
#endif
 
45604
 
 
45605
profile_GLSL__technique__pass__states__normalize_enable__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__normalize_enable__AttributeData>(attributeDataPtr);
 
45606
 
 
45607
const ParserChar** attributeArray = attributes.attributes;
 
45608
if ( attributeArray )
 
45609
{
 
45610
    while (true)
 
45611
    {
 
45612
        const ParserChar * attribute = *attributeArray;
 
45613
        if ( !attribute )
 
45614
            break;
 
45615
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
45616
        attributeArray++;
 
45617
        if ( !attributeArray )
 
45618
            return false;
 
45619
        const ParserChar* attributeValue = *attributeArray;
 
45620
        attributeArray++;
 
45621
 
 
45622
 
 
45623
    switch ( hash )
 
45624
    {
 
45625
    case HASH_ATTRIBUTE_VALUE:
 
45626
    {
 
45627
bool failed;
 
45628
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
45629
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
45630
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
45631
        HASH_ELEMENT_NORMALIZE_ENABLE,
 
45632
        HASH_ATTRIBUTE_VALUE,
 
45633
        attributeValue))
 
45634
{
 
45635
    return false;
 
45636
}
 
45637
 
 
45638
    break;
 
45639
    }
 
45640
    case HASH_ATTRIBUTE_PARAM:
 
45641
    {
 
45642
 
 
45643
attributeData->param = attributeValue;
 
45644
#ifdef GENERATEDSAXPARSER_VALIDATION
 
45645
    if ( mValidate )
 
45646
    {
 
45647
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
45648
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
45649
    {
 
45650
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
45651
            simpleTypeValidationResult,
 
45652
            HASH_ELEMENT_NORMALIZE_ENABLE,
 
45653
            HASH_ATTRIBUTE_PARAM,
 
45654
            attributeValue) )
 
45655
        {
 
45656
            return false;
 
45657
        }
 
45658
    }
 
45659
    } // validation
 
45660
#endif
 
45661
 
 
45662
    break;
 
45663
    }
 
45664
    default:
 
45665
    {
 
45666
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_NORMALIZE_ENABLE, attribute, attributeValue))
 
45667
            {return false;}
 
45668
    }
 
45669
    }
 
45670
    }
 
45671
}
 
45672
 
 
45673
 
 
45674
    return true;
 
45675
}
 
45676
 
 
45677
//---------------------------------------------------------------------
 
45678
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__normalize_enable()
 
45679
{
 
45680
#ifdef GENERATEDSAXPARSER_VALIDATION
 
45681
    if ( mValidate )
 
45682
    {
 
45683
 
 
45684
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__normalize_enable();
 
45685
        if ( !validationResult ) return false;
 
45686
 
 
45687
    } // validation
 
45688
#endif
 
45689
 
 
45690
    return true;
 
45691
}
 
45692
 
 
45693
//---------------------------------------------------------------------
 
45694
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__normalize_enable( void* attributeData )
 
45695
{
 
45696
    profile_GLSL__technique__pass__states__normalize_enable__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__normalize_enable__AttributeData*>(attributeData);
 
45697
 
 
45698
    typedAttributeData->~profile_GLSL__technique__pass__states__normalize_enable__AttributeData();
 
45699
 
 
45700
    return true;
 
45701
}
 
45702
 
 
45703
//---------------------------------------------------------------------
 
45704
const profile_GLSL__technique__pass__states__point_smooth_enable__AttributeData profile_GLSL__technique__pass__states__point_smooth_enable__AttributeData::DEFAULT = {false, 0};
 
45705
 
 
45706
//---------------------------------------------------------------------
 
45707
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__point_smooth_enable( const ParserChar* text, size_t textLength )
 
45708
{
 
45709
    return true;
 
45710
}
 
45711
 
 
45712
//---------------------------------------------------------------------
 
45713
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__point_smooth_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
45714
{
 
45715
#ifdef GENERATEDSAXPARSER_VALIDATION
 
45716
    if ( mValidate )
 
45717
    {
 
45718
 
 
45719
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__point_smooth_enable( attributes, attributeDataPtr, validationDataPtr );
 
45720
        if ( !validationResult ) return false;
 
45721
 
 
45722
    } // validation
 
45723
#endif
 
45724
 
 
45725
profile_GLSL__technique__pass__states__point_smooth_enable__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__point_smooth_enable__AttributeData>(attributeDataPtr);
 
45726
 
 
45727
const ParserChar** attributeArray = attributes.attributes;
 
45728
if ( attributeArray )
 
45729
{
 
45730
    while (true)
 
45731
    {
 
45732
        const ParserChar * attribute = *attributeArray;
 
45733
        if ( !attribute )
 
45734
            break;
 
45735
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
45736
        attributeArray++;
 
45737
        if ( !attributeArray )
 
45738
            return false;
 
45739
        const ParserChar* attributeValue = *attributeArray;
 
45740
        attributeArray++;
 
45741
 
 
45742
 
 
45743
    switch ( hash )
 
45744
    {
 
45745
    case HASH_ATTRIBUTE_VALUE:
 
45746
    {
 
45747
bool failed;
 
45748
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
45749
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
45750
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
45751
        HASH_ELEMENT_POINT_SMOOTH_ENABLE,
 
45752
        HASH_ATTRIBUTE_VALUE,
 
45753
        attributeValue))
 
45754
{
 
45755
    return false;
 
45756
}
 
45757
 
 
45758
    break;
 
45759
    }
 
45760
    case HASH_ATTRIBUTE_PARAM:
 
45761
    {
 
45762
 
 
45763
attributeData->param = attributeValue;
 
45764
#ifdef GENERATEDSAXPARSER_VALIDATION
 
45765
    if ( mValidate )
 
45766
    {
 
45767
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
45768
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
45769
    {
 
45770
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
45771
            simpleTypeValidationResult,
 
45772
            HASH_ELEMENT_POINT_SMOOTH_ENABLE,
 
45773
            HASH_ATTRIBUTE_PARAM,
 
45774
            attributeValue) )
 
45775
        {
 
45776
            return false;
 
45777
        }
 
45778
    }
 
45779
    } // validation
 
45780
#endif
 
45781
 
 
45782
    break;
 
45783
    }
 
45784
    default:
 
45785
    {
 
45786
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_POINT_SMOOTH_ENABLE, attribute, attributeValue))
 
45787
            {return false;}
 
45788
    }
 
45789
    }
 
45790
    }
 
45791
}
 
45792
 
 
45793
 
 
45794
    return true;
 
45795
}
 
45796
 
 
45797
//---------------------------------------------------------------------
 
45798
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__point_smooth_enable()
 
45799
{
 
45800
#ifdef GENERATEDSAXPARSER_VALIDATION
 
45801
    if ( mValidate )
 
45802
    {
 
45803
 
 
45804
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__point_smooth_enable();
 
45805
        if ( !validationResult ) return false;
 
45806
 
 
45807
    } // validation
 
45808
#endif
 
45809
 
 
45810
    return true;
 
45811
}
 
45812
 
 
45813
//---------------------------------------------------------------------
 
45814
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__point_smooth_enable( void* attributeData )
 
45815
{
 
45816
    profile_GLSL__technique__pass__states__point_smooth_enable__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__point_smooth_enable__AttributeData*>(attributeData);
 
45817
 
 
45818
    typedAttributeData->~profile_GLSL__technique__pass__states__point_smooth_enable__AttributeData();
 
45819
 
 
45820
    return true;
 
45821
}
 
45822
 
 
45823
//---------------------------------------------------------------------
 
45824
const profile_GLSL__technique__pass__states__polygon_offset_fill_enable__AttributeData profile_GLSL__technique__pass__states__polygon_offset_fill_enable__AttributeData::DEFAULT = {false, 0};
 
45825
 
 
45826
//---------------------------------------------------------------------
 
45827
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__polygon_offset_fill_enable( const ParserChar* text, size_t textLength )
 
45828
{
 
45829
    return true;
 
45830
}
 
45831
 
 
45832
//---------------------------------------------------------------------
 
45833
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__polygon_offset_fill_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
45834
{
 
45835
#ifdef GENERATEDSAXPARSER_VALIDATION
 
45836
    if ( mValidate )
 
45837
    {
 
45838
 
 
45839
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__polygon_offset_fill_enable( attributes, attributeDataPtr, validationDataPtr );
 
45840
        if ( !validationResult ) return false;
 
45841
 
 
45842
    } // validation
 
45843
#endif
 
45844
 
 
45845
profile_GLSL__technique__pass__states__polygon_offset_fill_enable__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__polygon_offset_fill_enable__AttributeData>(attributeDataPtr);
 
45846
 
 
45847
const ParserChar** attributeArray = attributes.attributes;
 
45848
if ( attributeArray )
 
45849
{
 
45850
    while (true)
 
45851
    {
 
45852
        const ParserChar * attribute = *attributeArray;
 
45853
        if ( !attribute )
 
45854
            break;
 
45855
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
45856
        attributeArray++;
 
45857
        if ( !attributeArray )
 
45858
            return false;
 
45859
        const ParserChar* attributeValue = *attributeArray;
 
45860
        attributeArray++;
 
45861
 
 
45862
 
 
45863
    switch ( hash )
 
45864
    {
 
45865
    case HASH_ATTRIBUTE_VALUE:
 
45866
    {
 
45867
bool failed;
 
45868
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
45869
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
45870
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
45871
        HASH_ELEMENT_POLYGON_OFFSET_FILL_ENABLE,
 
45872
        HASH_ATTRIBUTE_VALUE,
 
45873
        attributeValue))
 
45874
{
 
45875
    return false;
 
45876
}
 
45877
 
 
45878
    break;
 
45879
    }
 
45880
    case HASH_ATTRIBUTE_PARAM:
 
45881
    {
 
45882
 
 
45883
attributeData->param = attributeValue;
 
45884
#ifdef GENERATEDSAXPARSER_VALIDATION
 
45885
    if ( mValidate )
 
45886
    {
 
45887
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
45888
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
45889
    {
 
45890
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
45891
            simpleTypeValidationResult,
 
45892
            HASH_ELEMENT_POLYGON_OFFSET_FILL_ENABLE,
 
45893
            HASH_ATTRIBUTE_PARAM,
 
45894
            attributeValue) )
 
45895
        {
 
45896
            return false;
 
45897
        }
 
45898
    }
 
45899
    } // validation
 
45900
#endif
 
45901
 
 
45902
    break;
 
45903
    }
 
45904
    default:
 
45905
    {
 
45906
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_POLYGON_OFFSET_FILL_ENABLE, attribute, attributeValue))
 
45907
            {return false;}
 
45908
    }
 
45909
    }
 
45910
    }
 
45911
}
 
45912
 
 
45913
 
 
45914
    return true;
 
45915
}
 
45916
 
 
45917
//---------------------------------------------------------------------
 
45918
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__polygon_offset_fill_enable()
 
45919
{
 
45920
#ifdef GENERATEDSAXPARSER_VALIDATION
 
45921
    if ( mValidate )
 
45922
    {
 
45923
 
 
45924
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__polygon_offset_fill_enable();
 
45925
        if ( !validationResult ) return false;
 
45926
 
 
45927
    } // validation
 
45928
#endif
 
45929
 
 
45930
    return true;
 
45931
}
 
45932
 
 
45933
//---------------------------------------------------------------------
 
45934
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__polygon_offset_fill_enable( void* attributeData )
 
45935
{
 
45936
    profile_GLSL__technique__pass__states__polygon_offset_fill_enable__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__polygon_offset_fill_enable__AttributeData*>(attributeData);
 
45937
 
 
45938
    typedAttributeData->~profile_GLSL__technique__pass__states__polygon_offset_fill_enable__AttributeData();
 
45939
 
 
45940
    return true;
 
45941
}
 
45942
 
 
45943
//---------------------------------------------------------------------
 
45944
const polygon_offset_line_enable__AttributeData polygon_offset_line_enable__AttributeData::DEFAULT = {false, 0};
 
45945
 
 
45946
//---------------------------------------------------------------------
 
45947
bool ColladaParserAutoGen15Private::_data__polygon_offset_line_enable( const ParserChar* text, size_t textLength )
 
45948
{
 
45949
    return true;
 
45950
}
 
45951
 
 
45952
//---------------------------------------------------------------------
 
45953
bool ColladaParserAutoGen15Private::_preBegin__polygon_offset_line_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
45954
{
 
45955
#ifdef GENERATEDSAXPARSER_VALIDATION
 
45956
    if ( mValidate )
 
45957
    {
 
45958
 
 
45959
        bool validationResult = _validateBegin__polygon_offset_line_enable( attributes, attributeDataPtr, validationDataPtr );
 
45960
        if ( !validationResult ) return false;
 
45961
 
 
45962
    } // validation
 
45963
#endif
 
45964
 
 
45965
polygon_offset_line_enable__AttributeData* attributeData = newData<polygon_offset_line_enable__AttributeData>(attributeDataPtr);
 
45966
 
 
45967
const ParserChar** attributeArray = attributes.attributes;
 
45968
if ( attributeArray )
 
45969
{
 
45970
    while (true)
 
45971
    {
 
45972
        const ParserChar * attribute = *attributeArray;
 
45973
        if ( !attribute )
 
45974
            break;
 
45975
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
45976
        attributeArray++;
 
45977
        if ( !attributeArray )
 
45978
            return false;
 
45979
        const ParserChar* attributeValue = *attributeArray;
 
45980
        attributeArray++;
 
45981
 
 
45982
 
 
45983
    switch ( hash )
 
45984
    {
 
45985
    case HASH_ATTRIBUTE_VALUE:
 
45986
    {
 
45987
bool failed;
 
45988
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
45989
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
45990
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
45991
        HASH_ELEMENT_POLYGON_OFFSET_LINE_ENABLE,
 
45992
        HASH_ATTRIBUTE_VALUE,
 
45993
        attributeValue))
 
45994
{
 
45995
    return false;
 
45996
}
 
45997
 
 
45998
    break;
 
45999
    }
 
46000
    case HASH_ATTRIBUTE_PARAM:
 
46001
    {
 
46002
 
 
46003
attributeData->param = attributeValue;
 
46004
#ifdef GENERATEDSAXPARSER_VALIDATION
 
46005
    if ( mValidate )
 
46006
    {
 
46007
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
46008
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
46009
    {
 
46010
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
46011
            simpleTypeValidationResult,
 
46012
            HASH_ELEMENT_POLYGON_OFFSET_LINE_ENABLE,
 
46013
            HASH_ATTRIBUTE_PARAM,
 
46014
            attributeValue) )
 
46015
        {
 
46016
            return false;
 
46017
        }
 
46018
    }
 
46019
    } // validation
 
46020
#endif
 
46021
 
 
46022
    break;
 
46023
    }
 
46024
    default:
 
46025
    {
 
46026
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_POLYGON_OFFSET_LINE_ENABLE, attribute, attributeValue))
 
46027
            {return false;}
 
46028
    }
 
46029
    }
 
46030
    }
 
46031
}
 
46032
 
 
46033
 
 
46034
    return true;
 
46035
}
 
46036
 
 
46037
//---------------------------------------------------------------------
 
46038
bool ColladaParserAutoGen15Private::_preEnd__polygon_offset_line_enable()
 
46039
{
 
46040
#ifdef GENERATEDSAXPARSER_VALIDATION
 
46041
    if ( mValidate )
 
46042
    {
 
46043
 
 
46044
        bool validationResult = _validateEnd__polygon_offset_line_enable();
 
46045
        if ( !validationResult ) return false;
 
46046
 
 
46047
    } // validation
 
46048
#endif
 
46049
 
 
46050
    return true;
 
46051
}
 
46052
 
 
46053
//---------------------------------------------------------------------
 
46054
bool ColladaParserAutoGen15Private::_freeAttributes__polygon_offset_line_enable( void* attributeData )
 
46055
{
 
46056
    polygon_offset_line_enable__AttributeData* typedAttributeData = static_cast<polygon_offset_line_enable__AttributeData*>(attributeData);
 
46057
 
 
46058
    typedAttributeData->~polygon_offset_line_enable__AttributeData();
 
46059
 
 
46060
    return true;
 
46061
}
 
46062
 
 
46063
//---------------------------------------------------------------------
 
46064
const polygon_offset_point_enable__AttributeData polygon_offset_point_enable__AttributeData::DEFAULT = {false, 0};
 
46065
 
 
46066
//---------------------------------------------------------------------
 
46067
bool ColladaParserAutoGen15Private::_data__polygon_offset_point_enable( const ParserChar* text, size_t textLength )
 
46068
{
 
46069
    return true;
 
46070
}
 
46071
 
 
46072
//---------------------------------------------------------------------
 
46073
bool ColladaParserAutoGen15Private::_preBegin__polygon_offset_point_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
46074
{
 
46075
#ifdef GENERATEDSAXPARSER_VALIDATION
 
46076
    if ( mValidate )
 
46077
    {
 
46078
 
 
46079
        bool validationResult = _validateBegin__polygon_offset_point_enable( attributes, attributeDataPtr, validationDataPtr );
 
46080
        if ( !validationResult ) return false;
 
46081
 
 
46082
    } // validation
 
46083
#endif
 
46084
 
 
46085
polygon_offset_point_enable__AttributeData* attributeData = newData<polygon_offset_point_enable__AttributeData>(attributeDataPtr);
 
46086
 
 
46087
const ParserChar** attributeArray = attributes.attributes;
 
46088
if ( attributeArray )
 
46089
{
 
46090
    while (true)
 
46091
    {
 
46092
        const ParserChar * attribute = *attributeArray;
 
46093
        if ( !attribute )
 
46094
            break;
 
46095
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
46096
        attributeArray++;
 
46097
        if ( !attributeArray )
 
46098
            return false;
 
46099
        const ParserChar* attributeValue = *attributeArray;
 
46100
        attributeArray++;
 
46101
 
 
46102
 
 
46103
    switch ( hash )
 
46104
    {
 
46105
    case HASH_ATTRIBUTE_VALUE:
 
46106
    {
 
46107
bool failed;
 
46108
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
46109
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
46110
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
46111
        HASH_ELEMENT_POLYGON_OFFSET_POINT_ENABLE,
 
46112
        HASH_ATTRIBUTE_VALUE,
 
46113
        attributeValue))
 
46114
{
 
46115
    return false;
 
46116
}
 
46117
 
 
46118
    break;
 
46119
    }
 
46120
    case HASH_ATTRIBUTE_PARAM:
 
46121
    {
 
46122
 
 
46123
attributeData->param = attributeValue;
 
46124
#ifdef GENERATEDSAXPARSER_VALIDATION
 
46125
    if ( mValidate )
 
46126
    {
 
46127
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
46128
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
46129
    {
 
46130
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
46131
            simpleTypeValidationResult,
 
46132
            HASH_ELEMENT_POLYGON_OFFSET_POINT_ENABLE,
 
46133
            HASH_ATTRIBUTE_PARAM,
 
46134
            attributeValue) )
 
46135
        {
 
46136
            return false;
 
46137
        }
 
46138
    }
 
46139
    } // validation
 
46140
#endif
 
46141
 
 
46142
    break;
 
46143
    }
 
46144
    default:
 
46145
    {
 
46146
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_POLYGON_OFFSET_POINT_ENABLE, attribute, attributeValue))
 
46147
            {return false;}
 
46148
    }
 
46149
    }
 
46150
    }
 
46151
}
 
46152
 
 
46153
 
 
46154
    return true;
 
46155
}
 
46156
 
 
46157
//---------------------------------------------------------------------
 
46158
bool ColladaParserAutoGen15Private::_preEnd__polygon_offset_point_enable()
 
46159
{
 
46160
#ifdef GENERATEDSAXPARSER_VALIDATION
 
46161
    if ( mValidate )
 
46162
    {
 
46163
 
 
46164
        bool validationResult = _validateEnd__polygon_offset_point_enable();
 
46165
        if ( !validationResult ) return false;
 
46166
 
 
46167
    } // validation
 
46168
#endif
 
46169
 
 
46170
    return true;
 
46171
}
 
46172
 
 
46173
//---------------------------------------------------------------------
 
46174
bool ColladaParserAutoGen15Private::_freeAttributes__polygon_offset_point_enable( void* attributeData )
 
46175
{
 
46176
    polygon_offset_point_enable__AttributeData* typedAttributeData = static_cast<polygon_offset_point_enable__AttributeData*>(attributeData);
 
46177
 
 
46178
    typedAttributeData->~polygon_offset_point_enable__AttributeData();
 
46179
 
 
46180
    return true;
 
46181
}
 
46182
 
 
46183
//---------------------------------------------------------------------
 
46184
const polygon_smooth_enable__AttributeData polygon_smooth_enable__AttributeData::DEFAULT = {false, 0};
 
46185
 
 
46186
//---------------------------------------------------------------------
 
46187
bool ColladaParserAutoGen15Private::_data__polygon_smooth_enable( const ParserChar* text, size_t textLength )
 
46188
{
 
46189
    return true;
 
46190
}
 
46191
 
 
46192
//---------------------------------------------------------------------
 
46193
bool ColladaParserAutoGen15Private::_preBegin__polygon_smooth_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
46194
{
 
46195
#ifdef GENERATEDSAXPARSER_VALIDATION
 
46196
    if ( mValidate )
 
46197
    {
 
46198
 
 
46199
        bool validationResult = _validateBegin__polygon_smooth_enable( attributes, attributeDataPtr, validationDataPtr );
 
46200
        if ( !validationResult ) return false;
 
46201
 
 
46202
    } // validation
 
46203
#endif
 
46204
 
 
46205
polygon_smooth_enable__AttributeData* attributeData = newData<polygon_smooth_enable__AttributeData>(attributeDataPtr);
 
46206
 
 
46207
const ParserChar** attributeArray = attributes.attributes;
 
46208
if ( attributeArray )
 
46209
{
 
46210
    while (true)
 
46211
    {
 
46212
        const ParserChar * attribute = *attributeArray;
 
46213
        if ( !attribute )
 
46214
            break;
 
46215
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
46216
        attributeArray++;
 
46217
        if ( !attributeArray )
 
46218
            return false;
 
46219
        const ParserChar* attributeValue = *attributeArray;
 
46220
        attributeArray++;
 
46221
 
 
46222
 
 
46223
    switch ( hash )
 
46224
    {
 
46225
    case HASH_ATTRIBUTE_VALUE:
 
46226
    {
 
46227
bool failed;
 
46228
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
46229
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
46230
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
46231
        HASH_ELEMENT_POLYGON_SMOOTH_ENABLE,
 
46232
        HASH_ATTRIBUTE_VALUE,
 
46233
        attributeValue))
 
46234
{
 
46235
    return false;
 
46236
}
 
46237
 
 
46238
    break;
 
46239
    }
 
46240
    case HASH_ATTRIBUTE_PARAM:
 
46241
    {
 
46242
 
 
46243
attributeData->param = attributeValue;
 
46244
#ifdef GENERATEDSAXPARSER_VALIDATION
 
46245
    if ( mValidate )
 
46246
    {
 
46247
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
46248
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
46249
    {
 
46250
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
46251
            simpleTypeValidationResult,
 
46252
            HASH_ELEMENT_POLYGON_SMOOTH_ENABLE,
 
46253
            HASH_ATTRIBUTE_PARAM,
 
46254
            attributeValue) )
 
46255
        {
 
46256
            return false;
 
46257
        }
 
46258
    }
 
46259
    } // validation
 
46260
#endif
 
46261
 
 
46262
    break;
 
46263
    }
 
46264
    default:
 
46265
    {
 
46266
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_POLYGON_SMOOTH_ENABLE, attribute, attributeValue))
 
46267
            {return false;}
 
46268
    }
 
46269
    }
 
46270
    }
 
46271
}
 
46272
 
 
46273
 
 
46274
    return true;
 
46275
}
 
46276
 
 
46277
//---------------------------------------------------------------------
 
46278
bool ColladaParserAutoGen15Private::_preEnd__polygon_smooth_enable()
 
46279
{
 
46280
#ifdef GENERATEDSAXPARSER_VALIDATION
 
46281
    if ( mValidate )
 
46282
    {
 
46283
 
 
46284
        bool validationResult = _validateEnd__polygon_smooth_enable();
 
46285
        if ( !validationResult ) return false;
 
46286
 
 
46287
    } // validation
 
46288
#endif
 
46289
 
 
46290
    return true;
 
46291
}
 
46292
 
 
46293
//---------------------------------------------------------------------
 
46294
bool ColladaParserAutoGen15Private::_freeAttributes__polygon_smooth_enable( void* attributeData )
 
46295
{
 
46296
    polygon_smooth_enable__AttributeData* typedAttributeData = static_cast<polygon_smooth_enable__AttributeData*>(attributeData);
 
46297
 
 
46298
    typedAttributeData->~polygon_smooth_enable__AttributeData();
 
46299
 
 
46300
    return true;
 
46301
}
 
46302
 
 
46303
//---------------------------------------------------------------------
 
46304
const polygon_stipple_enable__AttributeData polygon_stipple_enable__AttributeData::DEFAULT = {false, 0};
 
46305
 
 
46306
//---------------------------------------------------------------------
 
46307
bool ColladaParserAutoGen15Private::_data__polygon_stipple_enable( const ParserChar* text, size_t textLength )
 
46308
{
 
46309
    return true;
 
46310
}
 
46311
 
 
46312
//---------------------------------------------------------------------
 
46313
bool ColladaParserAutoGen15Private::_preBegin__polygon_stipple_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
46314
{
 
46315
#ifdef GENERATEDSAXPARSER_VALIDATION
 
46316
    if ( mValidate )
 
46317
    {
 
46318
 
 
46319
        bool validationResult = _validateBegin__polygon_stipple_enable( attributes, attributeDataPtr, validationDataPtr );
 
46320
        if ( !validationResult ) return false;
 
46321
 
 
46322
    } // validation
 
46323
#endif
 
46324
 
 
46325
polygon_stipple_enable__AttributeData* attributeData = newData<polygon_stipple_enable__AttributeData>(attributeDataPtr);
 
46326
 
 
46327
const ParserChar** attributeArray = attributes.attributes;
 
46328
if ( attributeArray )
 
46329
{
 
46330
    while (true)
 
46331
    {
 
46332
        const ParserChar * attribute = *attributeArray;
 
46333
        if ( !attribute )
 
46334
            break;
 
46335
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
46336
        attributeArray++;
 
46337
        if ( !attributeArray )
 
46338
            return false;
 
46339
        const ParserChar* attributeValue = *attributeArray;
 
46340
        attributeArray++;
 
46341
 
 
46342
 
 
46343
    switch ( hash )
 
46344
    {
 
46345
    case HASH_ATTRIBUTE_VALUE:
 
46346
    {
 
46347
bool failed;
 
46348
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
46349
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
46350
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
46351
        HASH_ELEMENT_POLYGON_STIPPLE_ENABLE,
 
46352
        HASH_ATTRIBUTE_VALUE,
 
46353
        attributeValue))
 
46354
{
 
46355
    return false;
 
46356
}
 
46357
 
 
46358
    break;
 
46359
    }
 
46360
    case HASH_ATTRIBUTE_PARAM:
 
46361
    {
 
46362
 
 
46363
attributeData->param = attributeValue;
 
46364
#ifdef GENERATEDSAXPARSER_VALIDATION
 
46365
    if ( mValidate )
 
46366
    {
 
46367
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
46368
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
46369
    {
 
46370
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
46371
            simpleTypeValidationResult,
 
46372
            HASH_ELEMENT_POLYGON_STIPPLE_ENABLE,
 
46373
            HASH_ATTRIBUTE_PARAM,
 
46374
            attributeValue) )
 
46375
        {
 
46376
            return false;
 
46377
        }
 
46378
    }
 
46379
    } // validation
 
46380
#endif
 
46381
 
 
46382
    break;
 
46383
    }
 
46384
    default:
 
46385
    {
 
46386
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_POLYGON_STIPPLE_ENABLE, attribute, attributeValue))
 
46387
            {return false;}
 
46388
    }
 
46389
    }
 
46390
    }
 
46391
}
 
46392
 
 
46393
 
 
46394
    return true;
 
46395
}
 
46396
 
 
46397
//---------------------------------------------------------------------
 
46398
bool ColladaParserAutoGen15Private::_preEnd__polygon_stipple_enable()
 
46399
{
 
46400
#ifdef GENERATEDSAXPARSER_VALIDATION
 
46401
    if ( mValidate )
 
46402
    {
 
46403
 
 
46404
        bool validationResult = _validateEnd__polygon_stipple_enable();
 
46405
        if ( !validationResult ) return false;
 
46406
 
 
46407
    } // validation
 
46408
#endif
 
46409
 
 
46410
    return true;
 
46411
}
 
46412
 
 
46413
//---------------------------------------------------------------------
 
46414
bool ColladaParserAutoGen15Private::_freeAttributes__polygon_stipple_enable( void* attributeData )
 
46415
{
 
46416
    polygon_stipple_enable__AttributeData* typedAttributeData = static_cast<polygon_stipple_enable__AttributeData*>(attributeData);
 
46417
 
 
46418
    typedAttributeData->~polygon_stipple_enable__AttributeData();
 
46419
 
 
46420
    return true;
 
46421
}
 
46422
 
 
46423
//---------------------------------------------------------------------
 
46424
const profile_GLSL__technique__pass__states__rescale_normal_enable__AttributeData profile_GLSL__technique__pass__states__rescale_normal_enable__AttributeData::DEFAULT = {false, 0};
 
46425
 
 
46426
//---------------------------------------------------------------------
 
46427
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__rescale_normal_enable( const ParserChar* text, size_t textLength )
 
46428
{
 
46429
    return true;
 
46430
}
 
46431
 
 
46432
//---------------------------------------------------------------------
 
46433
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__rescale_normal_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
46434
{
 
46435
#ifdef GENERATEDSAXPARSER_VALIDATION
 
46436
    if ( mValidate )
 
46437
    {
 
46438
 
 
46439
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__rescale_normal_enable( attributes, attributeDataPtr, validationDataPtr );
 
46440
        if ( !validationResult ) return false;
 
46441
 
 
46442
    } // validation
 
46443
#endif
 
46444
 
 
46445
profile_GLSL__technique__pass__states__rescale_normal_enable__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__rescale_normal_enable__AttributeData>(attributeDataPtr);
 
46446
 
 
46447
const ParserChar** attributeArray = attributes.attributes;
 
46448
if ( attributeArray )
 
46449
{
 
46450
    while (true)
 
46451
    {
 
46452
        const ParserChar * attribute = *attributeArray;
 
46453
        if ( !attribute )
 
46454
            break;
 
46455
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
46456
        attributeArray++;
 
46457
        if ( !attributeArray )
 
46458
            return false;
 
46459
        const ParserChar* attributeValue = *attributeArray;
 
46460
        attributeArray++;
 
46461
 
 
46462
 
 
46463
    switch ( hash )
 
46464
    {
 
46465
    case HASH_ATTRIBUTE_VALUE:
 
46466
    {
 
46467
bool failed;
 
46468
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
46469
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
46470
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
46471
        HASH_ELEMENT_RESCALE_NORMAL_ENABLE,
 
46472
        HASH_ATTRIBUTE_VALUE,
 
46473
        attributeValue))
 
46474
{
 
46475
    return false;
 
46476
}
 
46477
 
 
46478
    break;
 
46479
    }
 
46480
    case HASH_ATTRIBUTE_PARAM:
 
46481
    {
 
46482
 
 
46483
attributeData->param = attributeValue;
 
46484
#ifdef GENERATEDSAXPARSER_VALIDATION
 
46485
    if ( mValidate )
 
46486
    {
 
46487
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
46488
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
46489
    {
 
46490
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
46491
            simpleTypeValidationResult,
 
46492
            HASH_ELEMENT_RESCALE_NORMAL_ENABLE,
 
46493
            HASH_ATTRIBUTE_PARAM,
 
46494
            attributeValue) )
 
46495
        {
 
46496
            return false;
 
46497
        }
 
46498
    }
 
46499
    } // validation
 
46500
#endif
 
46501
 
 
46502
    break;
 
46503
    }
 
46504
    default:
 
46505
    {
 
46506
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_RESCALE_NORMAL_ENABLE, attribute, attributeValue))
 
46507
            {return false;}
 
46508
    }
 
46509
    }
 
46510
    }
 
46511
}
 
46512
 
 
46513
 
 
46514
    return true;
 
46515
}
 
46516
 
 
46517
//---------------------------------------------------------------------
 
46518
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__rescale_normal_enable()
 
46519
{
 
46520
#ifdef GENERATEDSAXPARSER_VALIDATION
 
46521
    if ( mValidate )
 
46522
    {
 
46523
 
 
46524
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__rescale_normal_enable();
 
46525
        if ( !validationResult ) return false;
 
46526
 
 
46527
    } // validation
 
46528
#endif
 
46529
 
 
46530
    return true;
 
46531
}
 
46532
 
 
46533
//---------------------------------------------------------------------
 
46534
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__rescale_normal_enable( void* attributeData )
 
46535
{
 
46536
    profile_GLSL__technique__pass__states__rescale_normal_enable__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__rescale_normal_enable__AttributeData*>(attributeData);
 
46537
 
 
46538
    typedAttributeData->~profile_GLSL__technique__pass__states__rescale_normal_enable__AttributeData();
 
46539
 
 
46540
    return true;
 
46541
}
 
46542
 
 
46543
//---------------------------------------------------------------------
 
46544
const profile_GLSL__technique__pass__states__sample_alpha_to_coverage_enable__AttributeData profile_GLSL__technique__pass__states__sample_alpha_to_coverage_enable__AttributeData::DEFAULT = {false, 0};
 
46545
 
 
46546
//---------------------------------------------------------------------
 
46547
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__sample_alpha_to_coverage_enable( const ParserChar* text, size_t textLength )
 
46548
{
 
46549
    return true;
 
46550
}
 
46551
 
 
46552
//---------------------------------------------------------------------
 
46553
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__sample_alpha_to_coverage_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
46554
{
 
46555
#ifdef GENERATEDSAXPARSER_VALIDATION
 
46556
    if ( mValidate )
 
46557
    {
 
46558
 
 
46559
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__sample_alpha_to_coverage_enable( attributes, attributeDataPtr, validationDataPtr );
 
46560
        if ( !validationResult ) return false;
 
46561
 
 
46562
    } // validation
 
46563
#endif
 
46564
 
 
46565
profile_GLSL__technique__pass__states__sample_alpha_to_coverage_enable__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__sample_alpha_to_coverage_enable__AttributeData>(attributeDataPtr);
 
46566
 
 
46567
const ParserChar** attributeArray = attributes.attributes;
 
46568
if ( attributeArray )
 
46569
{
 
46570
    while (true)
 
46571
    {
 
46572
        const ParserChar * attribute = *attributeArray;
 
46573
        if ( !attribute )
 
46574
            break;
 
46575
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
46576
        attributeArray++;
 
46577
        if ( !attributeArray )
 
46578
            return false;
 
46579
        const ParserChar* attributeValue = *attributeArray;
 
46580
        attributeArray++;
 
46581
 
 
46582
 
 
46583
    switch ( hash )
 
46584
    {
 
46585
    case HASH_ATTRIBUTE_VALUE:
 
46586
    {
 
46587
bool failed;
 
46588
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
46589
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
46590
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
46591
        HASH_ELEMENT_SAMPLE_ALPHA_TO_COVERAGE_ENABLE,
 
46592
        HASH_ATTRIBUTE_VALUE,
 
46593
        attributeValue))
 
46594
{
 
46595
    return false;
 
46596
}
 
46597
 
 
46598
    break;
 
46599
    }
 
46600
    case HASH_ATTRIBUTE_PARAM:
 
46601
    {
 
46602
 
 
46603
attributeData->param = attributeValue;
 
46604
#ifdef GENERATEDSAXPARSER_VALIDATION
 
46605
    if ( mValidate )
 
46606
    {
 
46607
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
46608
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
46609
    {
 
46610
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
46611
            simpleTypeValidationResult,
 
46612
            HASH_ELEMENT_SAMPLE_ALPHA_TO_COVERAGE_ENABLE,
 
46613
            HASH_ATTRIBUTE_PARAM,
 
46614
            attributeValue) )
 
46615
        {
 
46616
            return false;
 
46617
        }
 
46618
    }
 
46619
    } // validation
 
46620
#endif
 
46621
 
 
46622
    break;
 
46623
    }
 
46624
    default:
 
46625
    {
 
46626
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SAMPLE_ALPHA_TO_COVERAGE_ENABLE, attribute, attributeValue))
 
46627
            {return false;}
 
46628
    }
 
46629
    }
 
46630
    }
 
46631
}
 
46632
 
 
46633
 
 
46634
    return true;
 
46635
}
 
46636
 
 
46637
//---------------------------------------------------------------------
 
46638
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__sample_alpha_to_coverage_enable()
 
46639
{
 
46640
#ifdef GENERATEDSAXPARSER_VALIDATION
 
46641
    if ( mValidate )
 
46642
    {
 
46643
 
 
46644
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__sample_alpha_to_coverage_enable();
 
46645
        if ( !validationResult ) return false;
 
46646
 
 
46647
    } // validation
 
46648
#endif
 
46649
 
 
46650
    return true;
 
46651
}
 
46652
 
 
46653
//---------------------------------------------------------------------
 
46654
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__sample_alpha_to_coverage_enable( void* attributeData )
 
46655
{
 
46656
    profile_GLSL__technique__pass__states__sample_alpha_to_coverage_enable__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__sample_alpha_to_coverage_enable__AttributeData*>(attributeData);
 
46657
 
 
46658
    typedAttributeData->~profile_GLSL__technique__pass__states__sample_alpha_to_coverage_enable__AttributeData();
 
46659
 
 
46660
    return true;
 
46661
}
 
46662
 
 
46663
//---------------------------------------------------------------------
 
46664
const profile_GLSL__technique__pass__states__sample_alpha_to_one_enable__AttributeData profile_GLSL__technique__pass__states__sample_alpha_to_one_enable__AttributeData::DEFAULT = {false, 0};
 
46665
 
 
46666
//---------------------------------------------------------------------
 
46667
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__sample_alpha_to_one_enable( const ParserChar* text, size_t textLength )
 
46668
{
 
46669
    return true;
 
46670
}
 
46671
 
 
46672
//---------------------------------------------------------------------
 
46673
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__sample_alpha_to_one_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
46674
{
 
46675
#ifdef GENERATEDSAXPARSER_VALIDATION
 
46676
    if ( mValidate )
 
46677
    {
 
46678
 
 
46679
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__sample_alpha_to_one_enable( attributes, attributeDataPtr, validationDataPtr );
 
46680
        if ( !validationResult ) return false;
 
46681
 
 
46682
    } // validation
 
46683
#endif
 
46684
 
 
46685
profile_GLSL__technique__pass__states__sample_alpha_to_one_enable__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__sample_alpha_to_one_enable__AttributeData>(attributeDataPtr);
 
46686
 
 
46687
const ParserChar** attributeArray = attributes.attributes;
 
46688
if ( attributeArray )
 
46689
{
 
46690
    while (true)
 
46691
    {
 
46692
        const ParserChar * attribute = *attributeArray;
 
46693
        if ( !attribute )
 
46694
            break;
 
46695
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
46696
        attributeArray++;
 
46697
        if ( !attributeArray )
 
46698
            return false;
 
46699
        const ParserChar* attributeValue = *attributeArray;
 
46700
        attributeArray++;
 
46701
 
 
46702
 
 
46703
    switch ( hash )
 
46704
    {
 
46705
    case HASH_ATTRIBUTE_VALUE:
 
46706
    {
 
46707
bool failed;
 
46708
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
46709
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
46710
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
46711
        HASH_ELEMENT_SAMPLE_ALPHA_TO_ONE_ENABLE,
 
46712
        HASH_ATTRIBUTE_VALUE,
 
46713
        attributeValue))
 
46714
{
 
46715
    return false;
 
46716
}
 
46717
 
 
46718
    break;
 
46719
    }
 
46720
    case HASH_ATTRIBUTE_PARAM:
 
46721
    {
 
46722
 
 
46723
attributeData->param = attributeValue;
 
46724
#ifdef GENERATEDSAXPARSER_VALIDATION
 
46725
    if ( mValidate )
 
46726
    {
 
46727
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
46728
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
46729
    {
 
46730
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
46731
            simpleTypeValidationResult,
 
46732
            HASH_ELEMENT_SAMPLE_ALPHA_TO_ONE_ENABLE,
 
46733
            HASH_ATTRIBUTE_PARAM,
 
46734
            attributeValue) )
 
46735
        {
 
46736
            return false;
 
46737
        }
 
46738
    }
 
46739
    } // validation
 
46740
#endif
 
46741
 
 
46742
    break;
 
46743
    }
 
46744
    default:
 
46745
    {
 
46746
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SAMPLE_ALPHA_TO_ONE_ENABLE, attribute, attributeValue))
 
46747
            {return false;}
 
46748
    }
 
46749
    }
 
46750
    }
 
46751
}
 
46752
 
 
46753
 
 
46754
    return true;
 
46755
}
 
46756
 
 
46757
//---------------------------------------------------------------------
 
46758
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__sample_alpha_to_one_enable()
 
46759
{
 
46760
#ifdef GENERATEDSAXPARSER_VALIDATION
 
46761
    if ( mValidate )
 
46762
    {
 
46763
 
 
46764
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__sample_alpha_to_one_enable();
 
46765
        if ( !validationResult ) return false;
 
46766
 
 
46767
    } // validation
 
46768
#endif
 
46769
 
 
46770
    return true;
 
46771
}
 
46772
 
 
46773
//---------------------------------------------------------------------
 
46774
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__sample_alpha_to_one_enable( void* attributeData )
 
46775
{
 
46776
    profile_GLSL__technique__pass__states__sample_alpha_to_one_enable__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__sample_alpha_to_one_enable__AttributeData*>(attributeData);
 
46777
 
 
46778
    typedAttributeData->~profile_GLSL__technique__pass__states__sample_alpha_to_one_enable__AttributeData();
 
46779
 
 
46780
    return true;
 
46781
}
 
46782
 
 
46783
//---------------------------------------------------------------------
 
46784
const profile_GLSL__technique__pass__states__sample_coverage_enable__AttributeData profile_GLSL__technique__pass__states__sample_coverage_enable__AttributeData::DEFAULT = {false, 0};
 
46785
 
 
46786
//---------------------------------------------------------------------
 
46787
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__sample_coverage_enable( const ParserChar* text, size_t textLength )
 
46788
{
 
46789
    return true;
 
46790
}
 
46791
 
 
46792
//---------------------------------------------------------------------
 
46793
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__sample_coverage_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
46794
{
 
46795
#ifdef GENERATEDSAXPARSER_VALIDATION
 
46796
    if ( mValidate )
 
46797
    {
 
46798
 
 
46799
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__sample_coverage_enable( attributes, attributeDataPtr, validationDataPtr );
 
46800
        if ( !validationResult ) return false;
 
46801
 
 
46802
    } // validation
 
46803
#endif
 
46804
 
 
46805
profile_GLSL__technique__pass__states__sample_coverage_enable__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__sample_coverage_enable__AttributeData>(attributeDataPtr);
 
46806
 
 
46807
const ParserChar** attributeArray = attributes.attributes;
 
46808
if ( attributeArray )
 
46809
{
 
46810
    while (true)
 
46811
    {
 
46812
        const ParserChar * attribute = *attributeArray;
 
46813
        if ( !attribute )
 
46814
            break;
 
46815
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
46816
        attributeArray++;
 
46817
        if ( !attributeArray )
 
46818
            return false;
 
46819
        const ParserChar* attributeValue = *attributeArray;
 
46820
        attributeArray++;
 
46821
 
 
46822
 
 
46823
    switch ( hash )
 
46824
    {
 
46825
    case HASH_ATTRIBUTE_VALUE:
 
46826
    {
 
46827
bool failed;
 
46828
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
46829
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
46830
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
46831
        HASH_ELEMENT_SAMPLE_COVERAGE_ENABLE,
 
46832
        HASH_ATTRIBUTE_VALUE,
 
46833
        attributeValue))
 
46834
{
 
46835
    return false;
 
46836
}
 
46837
 
 
46838
    break;
 
46839
    }
 
46840
    case HASH_ATTRIBUTE_PARAM:
 
46841
    {
 
46842
 
 
46843
attributeData->param = attributeValue;
 
46844
#ifdef GENERATEDSAXPARSER_VALIDATION
 
46845
    if ( mValidate )
 
46846
    {
 
46847
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
46848
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
46849
    {
 
46850
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
46851
            simpleTypeValidationResult,
 
46852
            HASH_ELEMENT_SAMPLE_COVERAGE_ENABLE,
 
46853
            HASH_ATTRIBUTE_PARAM,
 
46854
            attributeValue) )
 
46855
        {
 
46856
            return false;
 
46857
        }
 
46858
    }
 
46859
    } // validation
 
46860
#endif
 
46861
 
 
46862
    break;
 
46863
    }
 
46864
    default:
 
46865
    {
 
46866
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SAMPLE_COVERAGE_ENABLE, attribute, attributeValue))
 
46867
            {return false;}
 
46868
    }
 
46869
    }
 
46870
    }
 
46871
}
 
46872
 
 
46873
 
 
46874
    return true;
 
46875
}
 
46876
 
 
46877
//---------------------------------------------------------------------
 
46878
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__sample_coverage_enable()
 
46879
{
 
46880
#ifdef GENERATEDSAXPARSER_VALIDATION
 
46881
    if ( mValidate )
 
46882
    {
 
46883
 
 
46884
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__sample_coverage_enable();
 
46885
        if ( !validationResult ) return false;
 
46886
 
 
46887
    } // validation
 
46888
#endif
 
46889
 
 
46890
    return true;
 
46891
}
 
46892
 
 
46893
//---------------------------------------------------------------------
 
46894
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__sample_coverage_enable( void* attributeData )
 
46895
{
 
46896
    profile_GLSL__technique__pass__states__sample_coverage_enable__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__sample_coverage_enable__AttributeData*>(attributeData);
 
46897
 
 
46898
    typedAttributeData->~profile_GLSL__technique__pass__states__sample_coverage_enable__AttributeData();
 
46899
 
 
46900
    return true;
 
46901
}
 
46902
 
 
46903
//---------------------------------------------------------------------
 
46904
const profile_GLSL__technique__pass__states__scissor_test_enable__AttributeData profile_GLSL__technique__pass__states__scissor_test_enable__AttributeData::DEFAULT = {false, 0};
 
46905
 
 
46906
//---------------------------------------------------------------------
 
46907
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__scissor_test_enable( const ParserChar* text, size_t textLength )
 
46908
{
 
46909
    return true;
 
46910
}
 
46911
 
 
46912
//---------------------------------------------------------------------
 
46913
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__scissor_test_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
46914
{
 
46915
#ifdef GENERATEDSAXPARSER_VALIDATION
 
46916
    if ( mValidate )
 
46917
    {
 
46918
 
 
46919
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__scissor_test_enable( attributes, attributeDataPtr, validationDataPtr );
 
46920
        if ( !validationResult ) return false;
 
46921
 
 
46922
    } // validation
 
46923
#endif
 
46924
 
 
46925
profile_GLSL__technique__pass__states__scissor_test_enable__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__scissor_test_enable__AttributeData>(attributeDataPtr);
 
46926
 
 
46927
const ParserChar** attributeArray = attributes.attributes;
 
46928
if ( attributeArray )
 
46929
{
 
46930
    while (true)
 
46931
    {
 
46932
        const ParserChar * attribute = *attributeArray;
 
46933
        if ( !attribute )
 
46934
            break;
 
46935
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
46936
        attributeArray++;
 
46937
        if ( !attributeArray )
 
46938
            return false;
 
46939
        const ParserChar* attributeValue = *attributeArray;
 
46940
        attributeArray++;
 
46941
 
 
46942
 
 
46943
    switch ( hash )
 
46944
    {
 
46945
    case HASH_ATTRIBUTE_VALUE:
 
46946
    {
 
46947
bool failed;
 
46948
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
46949
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
46950
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
46951
        HASH_ELEMENT_SCISSOR_TEST_ENABLE,
 
46952
        HASH_ATTRIBUTE_VALUE,
 
46953
        attributeValue))
 
46954
{
 
46955
    return false;
 
46956
}
 
46957
 
 
46958
    break;
 
46959
    }
 
46960
    case HASH_ATTRIBUTE_PARAM:
 
46961
    {
 
46962
 
 
46963
attributeData->param = attributeValue;
 
46964
#ifdef GENERATEDSAXPARSER_VALIDATION
 
46965
    if ( mValidate )
 
46966
    {
 
46967
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
46968
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
46969
    {
 
46970
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
46971
            simpleTypeValidationResult,
 
46972
            HASH_ELEMENT_SCISSOR_TEST_ENABLE,
 
46973
            HASH_ATTRIBUTE_PARAM,
 
46974
            attributeValue) )
 
46975
        {
 
46976
            return false;
 
46977
        }
 
46978
    }
 
46979
    } // validation
 
46980
#endif
 
46981
 
 
46982
    break;
 
46983
    }
 
46984
    default:
 
46985
    {
 
46986
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SCISSOR_TEST_ENABLE, attribute, attributeValue))
 
46987
            {return false;}
 
46988
    }
 
46989
    }
 
46990
    }
 
46991
}
 
46992
 
 
46993
 
 
46994
    return true;
 
46995
}
 
46996
 
 
46997
//---------------------------------------------------------------------
 
46998
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__scissor_test_enable()
 
46999
{
 
47000
#ifdef GENERATEDSAXPARSER_VALIDATION
 
47001
    if ( mValidate )
 
47002
    {
 
47003
 
 
47004
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__scissor_test_enable();
 
47005
        if ( !validationResult ) return false;
 
47006
 
 
47007
    } // validation
 
47008
#endif
 
47009
 
 
47010
    return true;
 
47011
}
 
47012
 
 
47013
//---------------------------------------------------------------------
 
47014
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__scissor_test_enable( void* attributeData )
 
47015
{
 
47016
    profile_GLSL__technique__pass__states__scissor_test_enable__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__scissor_test_enable__AttributeData*>(attributeData);
 
47017
 
 
47018
    typedAttributeData->~profile_GLSL__technique__pass__states__scissor_test_enable__AttributeData();
 
47019
 
 
47020
    return true;
 
47021
}
 
47022
 
 
47023
//---------------------------------------------------------------------
 
47024
const profile_GLSL__technique__pass__states__stencil_test_enable__AttributeData profile_GLSL__technique__pass__states__stencil_test_enable__AttributeData::DEFAULT = {false, 0};
 
47025
 
 
47026
//---------------------------------------------------------------------
 
47027
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__states__stencil_test_enable( const ParserChar* text, size_t textLength )
 
47028
{
 
47029
    return true;
 
47030
}
 
47031
 
 
47032
//---------------------------------------------------------------------
 
47033
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__states__stencil_test_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
47034
{
 
47035
#ifdef GENERATEDSAXPARSER_VALIDATION
 
47036
    if ( mValidate )
 
47037
    {
 
47038
 
 
47039
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__states__stencil_test_enable( attributes, attributeDataPtr, validationDataPtr );
 
47040
        if ( !validationResult ) return false;
 
47041
 
 
47042
    } // validation
 
47043
#endif
 
47044
 
 
47045
profile_GLSL__technique__pass__states__stencil_test_enable__AttributeData* attributeData = newData<profile_GLSL__technique__pass__states__stencil_test_enable__AttributeData>(attributeDataPtr);
 
47046
 
 
47047
const ParserChar** attributeArray = attributes.attributes;
 
47048
if ( attributeArray )
 
47049
{
 
47050
    while (true)
 
47051
    {
 
47052
        const ParserChar * attribute = *attributeArray;
 
47053
        if ( !attribute )
 
47054
            break;
 
47055
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
47056
        attributeArray++;
 
47057
        if ( !attributeArray )
 
47058
            return false;
 
47059
        const ParserChar* attributeValue = *attributeArray;
 
47060
        attributeArray++;
 
47061
 
 
47062
 
 
47063
    switch ( hash )
 
47064
    {
 
47065
    case HASH_ATTRIBUTE_VALUE:
 
47066
    {
 
47067
bool failed;
 
47068
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
47069
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
47070
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
47071
        HASH_ELEMENT_STENCIL_TEST_ENABLE,
 
47072
        HASH_ATTRIBUTE_VALUE,
 
47073
        attributeValue))
 
47074
{
 
47075
    return false;
 
47076
}
 
47077
 
 
47078
    break;
 
47079
    }
 
47080
    case HASH_ATTRIBUTE_PARAM:
 
47081
    {
 
47082
 
 
47083
attributeData->param = attributeValue;
 
47084
#ifdef GENERATEDSAXPARSER_VALIDATION
 
47085
    if ( mValidate )
 
47086
    {
 
47087
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
47088
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
47089
    {
 
47090
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
47091
            simpleTypeValidationResult,
 
47092
            HASH_ELEMENT_STENCIL_TEST_ENABLE,
 
47093
            HASH_ATTRIBUTE_PARAM,
 
47094
            attributeValue) )
 
47095
        {
 
47096
            return false;
 
47097
        }
 
47098
    }
 
47099
    } // validation
 
47100
#endif
 
47101
 
 
47102
    break;
 
47103
    }
 
47104
    default:
 
47105
    {
 
47106
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_STENCIL_TEST_ENABLE, attribute, attributeValue))
 
47107
            {return false;}
 
47108
    }
 
47109
    }
 
47110
    }
 
47111
}
 
47112
 
 
47113
 
 
47114
    return true;
 
47115
}
 
47116
 
 
47117
//---------------------------------------------------------------------
 
47118
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__states__stencil_test_enable()
 
47119
{
 
47120
#ifdef GENERATEDSAXPARSER_VALIDATION
 
47121
    if ( mValidate )
 
47122
    {
 
47123
 
 
47124
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__states__stencil_test_enable();
 
47125
        if ( !validationResult ) return false;
 
47126
 
 
47127
    } // validation
 
47128
#endif
 
47129
 
 
47130
    return true;
 
47131
}
 
47132
 
 
47133
//---------------------------------------------------------------------
 
47134
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__states__stencil_test_enable( void* attributeData )
 
47135
{
 
47136
    profile_GLSL__technique__pass__states__stencil_test_enable__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__states__stencil_test_enable__AttributeData*>(attributeData);
 
47137
 
 
47138
    typedAttributeData->~profile_GLSL__technique__pass__states__stencil_test_enable__AttributeData();
 
47139
 
 
47140
    return true;
 
47141
}
 
47142
 
 
47143
//---------------------------------------------------------------------
 
47144
bool ColladaParserAutoGen15Private::_data__program____glsl_program_type( const ParserChar* text, size_t textLength )
 
47145
{
 
47146
    return true;
 
47147
}
 
47148
 
 
47149
//---------------------------------------------------------------------
 
47150
bool ColladaParserAutoGen15Private::_preBegin__program____glsl_program_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
47151
{
 
47152
#ifdef GENERATEDSAXPARSER_VALIDATION
 
47153
    if ( mValidate )
 
47154
    {
 
47155
 
 
47156
        bool validationResult = _validateBegin__program____glsl_program_type( attributes, attributeDataPtr, validationDataPtr );
 
47157
        if ( !validationResult ) return false;
 
47158
 
 
47159
    } // validation
 
47160
#endif
 
47161
 
 
47162
    return true;
 
47163
}
 
47164
 
 
47165
//---------------------------------------------------------------------
 
47166
bool ColladaParserAutoGen15Private::_preEnd__program____glsl_program_type()
 
47167
{
 
47168
#ifdef GENERATEDSAXPARSER_VALIDATION
 
47169
    if ( mValidate )
 
47170
    {
 
47171
 
 
47172
        bool validationResult = _validateEnd__program____glsl_program_type();
 
47173
        if ( !validationResult ) return false;
 
47174
 
 
47175
    } // validation
 
47176
#endif
 
47177
 
 
47178
    return true;
 
47179
}
 
47180
 
 
47181
//---------------------------------------------------------------------
 
47182
bool ColladaParserAutoGen15Private::_freeAttributes__program____glsl_program_type( void* attributeData )
 
47183
{
 
47184
    return true;
 
47185
}
 
47186
 
 
47187
//---------------------------------------------------------------------
 
47188
const shader____glsl_shader_type__AttributeData shader____glsl_shader_type__AttributeData::DEFAULT = {ENUM__fx_pipeline_stage_enum__NOT_PRESENT};
 
47189
 
 
47190
//---------------------------------------------------------------------
 
47191
bool ColladaParserAutoGen15Private::_data__shader____glsl_shader_type( const ParserChar* text, size_t textLength )
 
47192
{
 
47193
    return true;
 
47194
}
 
47195
 
 
47196
//---------------------------------------------------------------------
 
47197
bool ColladaParserAutoGen15Private::_preBegin__shader____glsl_shader_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
47198
{
 
47199
#ifdef GENERATEDSAXPARSER_VALIDATION
 
47200
    if ( mValidate )
 
47201
    {
 
47202
 
 
47203
        bool validationResult = _validateBegin__shader____glsl_shader_type( attributes, attributeDataPtr, validationDataPtr );
 
47204
        if ( !validationResult ) return false;
 
47205
 
 
47206
    } // validation
 
47207
#endif
 
47208
 
 
47209
shader____glsl_shader_type__AttributeData* attributeData = newData<shader____glsl_shader_type__AttributeData>(attributeDataPtr);
 
47210
 
 
47211
const ParserChar** attributeArray = attributes.attributes;
 
47212
if ( attributeArray )
 
47213
{
 
47214
    while (true)
 
47215
    {
 
47216
        const ParserChar * attribute = *attributeArray;
 
47217
        if ( !attribute )
 
47218
            break;
 
47219
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
47220
        attributeArray++;
 
47221
        if ( !attributeArray )
 
47222
            return false;
 
47223
        const ParserChar* attributeValue = *attributeArray;
 
47224
        attributeArray++;
 
47225
 
 
47226
 
 
47227
    switch ( hash )
 
47228
    {
 
47229
    case HASH_ATTRIBUTE_STAGE:
 
47230
    {
 
47231
bool failed;
 
47232
attributeData->stage = Utils::toEnum<ENUM__fx_pipeline_stage_enum, StringHash, ENUM__fx_pipeline_stage_enum__COUNT>(attributeValue, failed, ENUM__fx_pipeline_stage_enumMap, Utils::calculateStringHash);
 
47233
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
47234
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
47235
        HASH_ELEMENT_SHADER,
 
47236
        HASH_ATTRIBUTE_STAGE,
 
47237
        attributeValue))
 
47238
{
 
47239
    return false;
 
47240
}
 
47241
 
 
47242
    break;
 
47243
    }
 
47244
    default:
 
47245
    {
 
47246
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SHADER, attribute, attributeValue))
 
47247
            {return false;}
 
47248
    }
 
47249
    }
 
47250
    }
 
47251
}
 
47252
if ( attributeData->stage == ENUM__fx_pipeline_stage_enum__NOT_PRESENT )
 
47253
{
 
47254
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_SHADER, HASH_ATTRIBUTE_STAGE, 0 ) )
 
47255
        return false;
 
47256
}
 
47257
 
 
47258
 
 
47259
    return true;
 
47260
}
 
47261
 
 
47262
//---------------------------------------------------------------------
 
47263
bool ColladaParserAutoGen15Private::_preEnd__shader____glsl_shader_type()
 
47264
{
 
47265
#ifdef GENERATEDSAXPARSER_VALIDATION
 
47266
    if ( mValidate )
 
47267
    {
 
47268
 
 
47269
        bool validationResult = _validateEnd__shader____glsl_shader_type();
 
47270
        if ( !validationResult ) return false;
 
47271
 
 
47272
    } // validation
 
47273
#endif
 
47274
 
 
47275
    return true;
 
47276
}
 
47277
 
 
47278
//---------------------------------------------------------------------
 
47279
bool ColladaParserAutoGen15Private::_freeAttributes__shader____glsl_shader_type( void* attributeData )
 
47280
{
 
47281
    shader____glsl_shader_type__AttributeData* typedAttributeData = static_cast<shader____glsl_shader_type__AttributeData*>(attributeData);
 
47282
 
 
47283
    typedAttributeData->~shader____glsl_shader_type__AttributeData();
 
47284
 
 
47285
    return true;
 
47286
}
 
47287
 
 
47288
//---------------------------------------------------------------------
 
47289
bool ColladaParserAutoGen15Private::_data__sources____fx_sources_type( const ParserChar* text, size_t textLength )
 
47290
{
 
47291
    return true;
 
47292
}
 
47293
 
 
47294
//---------------------------------------------------------------------
 
47295
bool ColladaParserAutoGen15Private::_preBegin__sources____fx_sources_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
47296
{
 
47297
#ifdef GENERATEDSAXPARSER_VALIDATION
 
47298
    if ( mValidate )
 
47299
    {
 
47300
 
 
47301
        bool validationResult = _validateBegin__sources____fx_sources_type( attributes, attributeDataPtr, validationDataPtr );
 
47302
        if ( !validationResult ) return false;
 
47303
 
 
47304
    } // validation
 
47305
#endif
 
47306
 
 
47307
    return true;
 
47308
}
 
47309
 
 
47310
//---------------------------------------------------------------------
 
47311
bool ColladaParserAutoGen15Private::_preEnd__sources____fx_sources_type()
 
47312
{
 
47313
#ifdef GENERATEDSAXPARSER_VALIDATION
 
47314
    if ( mValidate )
 
47315
    {
 
47316
 
 
47317
        bool validationResult = _validateEnd__sources____fx_sources_type();
 
47318
        if ( !validationResult ) return false;
 
47319
 
 
47320
    } // validation
 
47321
#endif
 
47322
 
 
47323
    return true;
 
47324
}
 
47325
 
 
47326
//---------------------------------------------------------------------
 
47327
bool ColladaParserAutoGen15Private::_freeAttributes__sources____fx_sources_type( void* attributeData )
 
47328
{
 
47329
    return true;
 
47330
}
 
47331
 
 
47332
//---------------------------------------------------------------------
 
47333
const glsl_program_type____bind_attribute__AttributeData glsl_program_type____bind_attribute__AttributeData::DEFAULT = {0};
 
47334
 
 
47335
//---------------------------------------------------------------------
 
47336
bool ColladaParserAutoGen15Private::_data__glsl_program_type____bind_attribute( const ParserChar* text, size_t textLength )
 
47337
{
 
47338
    return true;
 
47339
}
 
47340
 
 
47341
//---------------------------------------------------------------------
 
47342
bool ColladaParserAutoGen15Private::_preBegin__glsl_program_type____bind_attribute( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
47343
{
 
47344
#ifdef GENERATEDSAXPARSER_VALIDATION
 
47345
    if ( mValidate )
 
47346
    {
 
47347
 
 
47348
        bool validationResult = _validateBegin__glsl_program_type____bind_attribute( attributes, attributeDataPtr, validationDataPtr );
 
47349
        if ( !validationResult ) return false;
 
47350
 
 
47351
    } // validation
 
47352
#endif
 
47353
 
 
47354
glsl_program_type____bind_attribute__AttributeData* attributeData = newData<glsl_program_type____bind_attribute__AttributeData>(attributeDataPtr);
 
47355
 
 
47356
const ParserChar** attributeArray = attributes.attributes;
 
47357
if ( attributeArray )
 
47358
{
 
47359
    while (true)
 
47360
    {
 
47361
        const ParserChar * attribute = *attributeArray;
 
47362
        if ( !attribute )
 
47363
            break;
 
47364
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
47365
        attributeArray++;
 
47366
        if ( !attributeArray )
 
47367
            return false;
 
47368
        const ParserChar* attributeValue = *attributeArray;
 
47369
        attributeArray++;
 
47370
 
 
47371
 
 
47372
    switch ( hash )
 
47373
    {
 
47374
    case HASH_ATTRIBUTE_SYMBOL:
 
47375
    {
 
47376
 
 
47377
attributeData->symbol = attributeValue;
 
47378
 
 
47379
    break;
 
47380
    }
 
47381
    default:
 
47382
    {
 
47383
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_BIND_ATTRIBUTE, attribute, attributeValue))
 
47384
            {return false;}
 
47385
    }
 
47386
    }
 
47387
    }
 
47388
}
 
47389
if ( !attributeData->symbol )
 
47390
{
 
47391
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_BIND_ATTRIBUTE, HASH_ATTRIBUTE_SYMBOL, 0 ) )
 
47392
        return false;
 
47393
}
 
47394
 
 
47395
 
 
47396
    return true;
 
47397
}
 
47398
 
 
47399
//---------------------------------------------------------------------
 
47400
bool ColladaParserAutoGen15Private::_preEnd__glsl_program_type____bind_attribute()
 
47401
{
 
47402
#ifdef GENERATEDSAXPARSER_VALIDATION
 
47403
    if ( mValidate )
 
47404
    {
 
47405
 
 
47406
        bool validationResult = _validateEnd__glsl_program_type____bind_attribute();
 
47407
        if ( !validationResult ) return false;
 
47408
 
 
47409
    } // validation
 
47410
#endif
 
47411
 
 
47412
    return true;
 
47413
}
 
47414
 
 
47415
//---------------------------------------------------------------------
 
47416
bool ColladaParserAutoGen15Private::_freeAttributes__glsl_program_type____bind_attribute( void* attributeData )
 
47417
{
 
47418
    glsl_program_type____bind_attribute__AttributeData* typedAttributeData = static_cast<glsl_program_type____bind_attribute__AttributeData*>(attributeData);
 
47419
 
 
47420
    typedAttributeData->~glsl_program_type____bind_attribute__AttributeData();
 
47421
 
 
47422
    return true;
 
47423
}
 
47424
 
 
47425
//---------------------------------------------------------------------
 
47426
const glsl_program_type____bind_uniform__AttributeData glsl_program_type____bind_uniform__AttributeData::DEFAULT = {0};
 
47427
 
 
47428
//---------------------------------------------------------------------
 
47429
bool ColladaParserAutoGen15Private::_data__glsl_program_type____bind_uniform( const ParserChar* text, size_t textLength )
 
47430
{
 
47431
    return true;
 
47432
}
 
47433
 
 
47434
//---------------------------------------------------------------------
 
47435
bool ColladaParserAutoGen15Private::_preBegin__glsl_program_type____bind_uniform( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
47436
{
 
47437
#ifdef GENERATEDSAXPARSER_VALIDATION
 
47438
    if ( mValidate )
 
47439
    {
 
47440
 
 
47441
        bool validationResult = _validateBegin__glsl_program_type____bind_uniform( attributes, attributeDataPtr, validationDataPtr );
 
47442
        if ( !validationResult ) return false;
 
47443
 
 
47444
    } // validation
 
47445
#endif
 
47446
 
 
47447
glsl_program_type____bind_uniform__AttributeData* attributeData = newData<glsl_program_type____bind_uniform__AttributeData>(attributeDataPtr);
 
47448
 
 
47449
const ParserChar** attributeArray = attributes.attributes;
 
47450
if ( attributeArray )
 
47451
{
 
47452
    while (true)
 
47453
    {
 
47454
        const ParserChar * attribute = *attributeArray;
 
47455
        if ( !attribute )
 
47456
            break;
 
47457
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
47458
        attributeArray++;
 
47459
        if ( !attributeArray )
 
47460
            return false;
 
47461
        const ParserChar* attributeValue = *attributeArray;
 
47462
        attributeArray++;
 
47463
 
 
47464
 
 
47465
    switch ( hash )
 
47466
    {
 
47467
    case HASH_ATTRIBUTE_SYMBOL:
 
47468
    {
 
47469
 
 
47470
attributeData->symbol = attributeValue;
 
47471
 
 
47472
    break;
 
47473
    }
 
47474
    default:
 
47475
    {
 
47476
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_BIND_UNIFORM, attribute, attributeValue))
 
47477
            {return false;}
 
47478
    }
 
47479
    }
 
47480
    }
 
47481
}
 
47482
if ( !attributeData->symbol )
 
47483
{
 
47484
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_BIND_UNIFORM, HASH_ATTRIBUTE_SYMBOL, 0 ) )
 
47485
        return false;
 
47486
}
 
47487
 
 
47488
 
 
47489
    return true;
 
47490
}
 
47491
 
 
47492
//---------------------------------------------------------------------
 
47493
bool ColladaParserAutoGen15Private::_preEnd__glsl_program_type____bind_uniform()
 
47494
{
 
47495
#ifdef GENERATEDSAXPARSER_VALIDATION
 
47496
    if ( mValidate )
 
47497
    {
 
47498
 
 
47499
        bool validationResult = _validateEnd__glsl_program_type____bind_uniform();
 
47500
        if ( !validationResult ) return false;
 
47501
 
 
47502
    } // validation
 
47503
#endif
 
47504
 
 
47505
    return true;
 
47506
}
 
47507
 
 
47508
//---------------------------------------------------------------------
 
47509
bool ColladaParserAutoGen15Private::_freeAttributes__glsl_program_type____bind_uniform( void* attributeData )
 
47510
{
 
47511
    glsl_program_type____bind_uniform__AttributeData* typedAttributeData = static_cast<glsl_program_type____bind_uniform__AttributeData*>(attributeData);
 
47512
 
 
47513
    typedAttributeData->~glsl_program_type____bind_uniform__AttributeData();
 
47514
 
 
47515
    return true;
 
47516
}
 
47517
 
 
47518
//---------------------------------------------------------------------
 
47519
const profile_GLSL__technique__pass__program__bind_uniform__param__AttributeData profile_GLSL__technique__pass__program__bind_uniform__param__AttributeData::DEFAULT = {0};
 
47520
 
 
47521
//---------------------------------------------------------------------
 
47522
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__program__bind_uniform__param( const ParserChar* text, size_t textLength )
 
47523
{
 
47524
    return true;
 
47525
}
 
47526
 
 
47527
//---------------------------------------------------------------------
 
47528
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__program__bind_uniform__param( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
47529
{
 
47530
#ifdef GENERATEDSAXPARSER_VALIDATION
 
47531
    if ( mValidate )
 
47532
    {
 
47533
 
 
47534
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__program__bind_uniform__param( attributes, attributeDataPtr, validationDataPtr );
 
47535
        if ( !validationResult ) return false;
 
47536
 
 
47537
    } // validation
 
47538
#endif
 
47539
 
 
47540
profile_GLSL__technique__pass__program__bind_uniform__param__AttributeData* attributeData = newData<profile_GLSL__technique__pass__program__bind_uniform__param__AttributeData>(attributeDataPtr);
 
47541
 
 
47542
const ParserChar** attributeArray = attributes.attributes;
 
47543
if ( attributeArray )
 
47544
{
 
47545
    while (true)
 
47546
    {
 
47547
        const ParserChar * attribute = *attributeArray;
 
47548
        if ( !attribute )
 
47549
            break;
 
47550
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
47551
        attributeArray++;
 
47552
        if ( !attributeArray )
 
47553
            return false;
 
47554
        const ParserChar* attributeValue = *attributeArray;
 
47555
        attributeArray++;
 
47556
 
 
47557
 
 
47558
    switch ( hash )
 
47559
    {
 
47560
    case HASH_ATTRIBUTE_REF:
 
47561
    {
 
47562
 
 
47563
attributeData->ref = attributeValue;
 
47564
#ifdef GENERATEDSAXPARSER_VALIDATION
 
47565
    if ( mValidate )
 
47566
    {
 
47567
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->ref, strlen(attributeData->ref));
 
47568
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
47569
    {
 
47570
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
47571
            simpleTypeValidationResult,
 
47572
            HASH_ELEMENT_PARAM,
 
47573
            HASH_ATTRIBUTE_REF,
 
47574
            attributeValue) )
 
47575
        {
 
47576
            return false;
 
47577
        }
 
47578
    }
 
47579
    } // validation
 
47580
#endif
 
47581
 
 
47582
    break;
 
47583
    }
 
47584
    default:
 
47585
    {
 
47586
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_PARAM, attribute, attributeValue))
 
47587
            {return false;}
 
47588
    }
 
47589
    }
 
47590
    }
 
47591
}
 
47592
if ( !attributeData->ref )
 
47593
{
 
47594
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_PARAM, HASH_ATTRIBUTE_REF, 0 ) )
 
47595
        return false;
 
47596
}
 
47597
 
 
47598
 
 
47599
    return true;
 
47600
}
 
47601
 
 
47602
//---------------------------------------------------------------------
 
47603
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__program__bind_uniform__param()
 
47604
{
 
47605
#ifdef GENERATEDSAXPARSER_VALIDATION
 
47606
    if ( mValidate )
 
47607
    {
 
47608
 
 
47609
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__program__bind_uniform__param();
 
47610
        if ( !validationResult ) return false;
 
47611
 
 
47612
    } // validation
 
47613
#endif
 
47614
 
 
47615
    return true;
 
47616
}
 
47617
 
 
47618
//---------------------------------------------------------------------
 
47619
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__program__bind_uniform__param( void* attributeData )
 
47620
{
 
47621
    profile_GLSL__technique__pass__program__bind_uniform__param__AttributeData* typedAttributeData = static_cast<profile_GLSL__technique__pass__program__bind_uniform__param__AttributeData*>(attributeData);
 
47622
 
 
47623
    typedAttributeData->~profile_GLSL__technique__pass__program__bind_uniform__param__AttributeData();
 
47624
 
 
47625
    return true;
 
47626
}
 
47627
 
 
47628
//---------------------------------------------------------------------
 
47629
bool ColladaParserAutoGen15Private::_data__profile_GLSL__technique__pass__evaluate( const ParserChar* text, size_t textLength )
 
47630
{
 
47631
    return true;
 
47632
}
 
47633
 
 
47634
//---------------------------------------------------------------------
 
47635
bool ColladaParserAutoGen15Private::_preBegin__profile_GLSL__technique__pass__evaluate( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
47636
{
 
47637
#ifdef GENERATEDSAXPARSER_VALIDATION
 
47638
    if ( mValidate )
 
47639
    {
 
47640
 
 
47641
        bool validationResult = _validateBegin__profile_GLSL__technique__pass__evaluate( attributes, attributeDataPtr, validationDataPtr );
 
47642
        if ( !validationResult ) return false;
 
47643
 
 
47644
    } // validation
 
47645
#endif
 
47646
 
 
47647
    return true;
 
47648
}
 
47649
 
 
47650
//---------------------------------------------------------------------
 
47651
bool ColladaParserAutoGen15Private::_preEnd__profile_GLSL__technique__pass__evaluate()
 
47652
{
 
47653
#ifdef GENERATEDSAXPARSER_VALIDATION
 
47654
    if ( mValidate )
 
47655
    {
 
47656
 
 
47657
        bool validationResult = _validateEnd__profile_GLSL__technique__pass__evaluate();
 
47658
        if ( !validationResult ) return false;
 
47659
 
 
47660
    } // validation
 
47661
#endif
 
47662
 
 
47663
    return true;
 
47664
}
 
47665
 
 
47666
//---------------------------------------------------------------------
 
47667
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLSL__technique__pass__evaluate( void* attributeData )
 
47668
{
 
47669
    return true;
 
47670
}
 
47671
 
 
47672
//---------------------------------------------------------------------
 
47673
const profile_CG__AttributeData profile_CG__AttributeData::DEFAULT = {0, (const ParserChar*)"PC"};
 
47674
 
 
47675
//---------------------------------------------------------------------
 
47676
bool ColladaParserAutoGen15Private::_data__profile_CG( const ParserChar* text, size_t textLength )
 
47677
{
 
47678
    return true;
 
47679
}
 
47680
 
 
47681
//---------------------------------------------------------------------
 
47682
bool ColladaParserAutoGen15Private::_preBegin__profile_CG( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
47683
{
 
47684
#ifdef GENERATEDSAXPARSER_VALIDATION
 
47685
    if ( mValidate )
 
47686
    {
 
47687
 
 
47688
        bool validationResult = _validateBegin__profile_CG( attributes, attributeDataPtr, validationDataPtr );
 
47689
        if ( !validationResult ) return false;
 
47690
 
 
47691
    } // validation
 
47692
#endif
 
47693
 
 
47694
profile_CG__AttributeData* attributeData = newData<profile_CG__AttributeData>(attributeDataPtr);
 
47695
 
 
47696
const ParserChar** attributeArray = attributes.attributes;
 
47697
if ( attributeArray )
 
47698
{
 
47699
    while (true)
 
47700
    {
 
47701
        const ParserChar * attribute = *attributeArray;
 
47702
        if ( !attribute )
 
47703
            break;
 
47704
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
47705
        attributeArray++;
 
47706
        if ( !attributeArray )
 
47707
            return false;
 
47708
        const ParserChar* attributeValue = *attributeArray;
 
47709
        attributeArray++;
 
47710
 
 
47711
 
 
47712
    switch ( hash )
 
47713
    {
 
47714
    case HASH_ATTRIBUTE_ID:
 
47715
    {
 
47716
 
 
47717
attributeData->id = attributeValue;
 
47718
 
 
47719
    break;
 
47720
    }
 
47721
    case HASH_ATTRIBUTE_PLATFORM:
 
47722
    {
 
47723
 
 
47724
attributeData->platform = attributeValue;
 
47725
#ifdef GENERATEDSAXPARSER_VALIDATION
 
47726
    if ( mValidate )
 
47727
    {
 
47728
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->platform, strlen(attributeData->platform));
 
47729
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
47730
    {
 
47731
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
47732
            simpleTypeValidationResult,
 
47733
            HASH_ELEMENT_PROFILE_CG,
 
47734
            HASH_ATTRIBUTE_PLATFORM,
 
47735
            attributeValue) )
 
47736
        {
 
47737
            return false;
 
47738
        }
 
47739
    }
 
47740
    } // validation
 
47741
#endif
 
47742
 
 
47743
    break;
 
47744
    }
 
47745
    default:
 
47746
    {
 
47747
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_PROFILE_CG, attribute, attributeValue))
 
47748
            {return false;}
 
47749
    }
 
47750
    }
 
47751
    }
 
47752
}
 
47753
 
 
47754
 
 
47755
    return true;
 
47756
}
 
47757
 
 
47758
//---------------------------------------------------------------------
 
47759
bool ColladaParserAutoGen15Private::_preEnd__profile_CG()
 
47760
{
 
47761
#ifdef GENERATEDSAXPARSER_VALIDATION
 
47762
    if ( mValidate )
 
47763
    {
 
47764
 
 
47765
        bool validationResult = _validateEnd__profile_CG();
 
47766
        if ( !validationResult ) return false;
 
47767
 
 
47768
    } // validation
 
47769
#endif
 
47770
 
 
47771
    return true;
 
47772
}
 
47773
 
 
47774
//---------------------------------------------------------------------
 
47775
bool ColladaParserAutoGen15Private::_freeAttributes__profile_CG( void* attributeData )
 
47776
{
 
47777
    profile_CG__AttributeData* typedAttributeData = static_cast<profile_CG__AttributeData*>(attributeData);
 
47778
 
 
47779
    typedAttributeData->~profile_CG__AttributeData();
 
47780
 
 
47781
    return true;
 
47782
}
 
47783
 
 
47784
//---------------------------------------------------------------------
 
47785
const newparam____cg_newparam_type__AttributeData newparam____cg_newparam_type__AttributeData::DEFAULT = {0};
 
47786
 
 
47787
//---------------------------------------------------------------------
 
47788
bool ColladaParserAutoGen15Private::_data__newparam____cg_newparam_type( const ParserChar* text, size_t textLength )
 
47789
{
 
47790
    return true;
 
47791
}
 
47792
 
 
47793
//---------------------------------------------------------------------
 
47794
bool ColladaParserAutoGen15Private::_preBegin__newparam____cg_newparam_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
47795
{
 
47796
#ifdef GENERATEDSAXPARSER_VALIDATION
 
47797
    if ( mValidate )
 
47798
    {
 
47799
 
 
47800
        bool validationResult = _validateBegin__newparam____cg_newparam_type( attributes, attributeDataPtr, validationDataPtr );
 
47801
        if ( !validationResult ) return false;
 
47802
 
 
47803
    } // validation
 
47804
#endif
 
47805
 
 
47806
newparam____cg_newparam_type__AttributeData* attributeData = newData<newparam____cg_newparam_type__AttributeData>(attributeDataPtr);
 
47807
 
 
47808
const ParserChar** attributeArray = attributes.attributes;
 
47809
if ( attributeArray )
 
47810
{
 
47811
    while (true)
 
47812
    {
 
47813
        const ParserChar * attribute = *attributeArray;
 
47814
        if ( !attribute )
 
47815
            break;
 
47816
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
47817
        attributeArray++;
 
47818
        if ( !attributeArray )
 
47819
            return false;
 
47820
        const ParserChar* attributeValue = *attributeArray;
 
47821
        attributeArray++;
 
47822
 
 
47823
 
 
47824
    switch ( hash )
 
47825
    {
 
47826
    case HASH_ATTRIBUTE_SID:
 
47827
    {
 
47828
 
 
47829
attributeData->sid = attributeValue;
 
47830
#ifdef GENERATEDSAXPARSER_VALIDATION
 
47831
    if ( mValidate )
 
47832
    {
 
47833
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
47834
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
47835
    {
 
47836
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
47837
            simpleTypeValidationResult,
 
47838
            HASH_ELEMENT_NEWPARAM,
 
47839
            HASH_ATTRIBUTE_SID,
 
47840
            attributeValue) )
 
47841
        {
 
47842
            return false;
 
47843
        }
 
47844
    }
 
47845
    } // validation
 
47846
#endif
 
47847
 
 
47848
    break;
 
47849
    }
 
47850
    default:
 
47851
    {
 
47852
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_NEWPARAM, attribute, attributeValue))
 
47853
            {return false;}
 
47854
    }
 
47855
    }
 
47856
    }
 
47857
}
 
47858
if ( !attributeData->sid )
 
47859
{
 
47860
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_NEWPARAM, HASH_ATTRIBUTE_SID, 0 ) )
 
47861
        return false;
 
47862
}
 
47863
 
 
47864
    return true;
 
47865
}
 
47866
 
 
47867
//---------------------------------------------------------------------
 
47868
bool ColladaParserAutoGen15Private::_preEnd__newparam____cg_newparam_type()
 
47869
{
 
47870
#ifdef GENERATEDSAXPARSER_VALIDATION
 
47871
    if ( mValidate )
 
47872
    {
 
47873
 
 
47874
        bool validationResult = _validateEnd__newparam____cg_newparam_type();
 
47875
        if ( !validationResult ) return false;
 
47876
 
 
47877
    } // validation
 
47878
#endif
 
47879
 
 
47880
    return true;
 
47881
}
 
47882
 
 
47883
//---------------------------------------------------------------------
 
47884
bool ColladaParserAutoGen15Private::_freeAttributes__newparam____cg_newparam_type( void* attributeData )
 
47885
{
 
47886
    newparam____cg_newparam_type__AttributeData* typedAttributeData = static_cast<newparam____cg_newparam_type__AttributeData*>(attributeData);
 
47887
 
 
47888
    typedAttributeData->~newparam____cg_newparam_type__AttributeData();
 
47889
 
 
47890
    return true;
 
47891
}
 
47892
 
 
47893
//---------------------------------------------------------------------
 
47894
bool ColladaParserAutoGen15Private::_data__bool2x1( const ParserChar* text, size_t textLength )
 
47895
{
 
47896
#ifdef GENERATEDSAXPARSER_VALIDATION
 
47897
    if ( mValidate )
 
47898
    {
 
47899
        bool2__ValidationData* validationData = (bool2__ValidationData*)mValidationDataStack.top();
 
47900
        DISABLE_WARNING_UNUSED(validationData)
 
47901
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool2x1, &validate__bool2_type__stream, &validationData->validationWholeSize, 0);
 
47902
    }
 
47903
    else
 
47904
    {
 
47905
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool2x1);
 
47906
    }
 
47907
#else
 
47908
    {
 
47909
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool2x1);
 
47910
    } // validation
 
47911
#endif
 
47912
 
 
47913
}
 
47914
 
 
47915
//---------------------------------------------------------------------
 
47916
bool ColladaParserAutoGen15Private::_preBegin__bool2x1( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
47917
{
 
47918
#ifdef GENERATEDSAXPARSER_VALIDATION
 
47919
    if ( mValidate )
 
47920
    {
 
47921
 
 
47922
        bool validationResult = _validateBegin__bool2x1( attributes, attributeDataPtr, validationDataPtr );
 
47923
        if ( !validationResult ) return false;
 
47924
 
 
47925
    } // validation
 
47926
#endif
 
47927
 
 
47928
    return true;
 
47929
}
 
47930
 
 
47931
//---------------------------------------------------------------------
 
47932
bool ColladaParserAutoGen15Private::_preEnd__bool2x1()
 
47933
{
 
47934
#ifdef GENERATEDSAXPARSER_VALIDATION
 
47935
    if ( mValidate )
 
47936
    {
 
47937
 
 
47938
        bool validationResult = _validateEnd__bool2x1();
 
47939
        if ( !validationResult ) return false;
 
47940
 
 
47941
    } // validation
 
47942
#endif
 
47943
 
 
47944
#ifdef GENERATEDSAXPARSER_VALIDATION
 
47945
    if ( mValidate )
 
47946
    {
 
47947
        bool2__ValidationData* validationData = (bool2__ValidationData*)mValidationDataStack.top();
 
47948
        DISABLE_WARNING_UNUSED(validationData)
 
47949
bool returnValue = boolDataEnd( &ColladaParserAutoGen15::data__bool2x1, &validate__bool2_type__streamEnd, &validationData->validationWholeSize, 0 );
 
47950
        ParserError::ErrorType simpleTypeValidationResult = validate__bool2_type(0, (*(&validationData->validationWholeSize)));
 
47951
        mValidationDataStack.deleteObject();
 
47952
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
47953
        {
 
47954
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
47955
                simpleTypeValidationResult,
 
47956
                HASH_ELEMENT_BOOL2X1,
 
47957
                (ParserChar*)0, 0 ) )
 
47958
            {
 
47959
                return false;
 
47960
            }
 
47961
        }
 
47962
        return returnValue;
 
47963
    }
 
47964
    else
 
47965
    {
 
47966
return boolDataEnd( &ColladaParserAutoGen15::data__bool2x1 );
 
47967
    }
 
47968
#else
 
47969
    {
 
47970
return boolDataEnd( &ColladaParserAutoGen15::data__bool2x1 );
 
47971
    } // validation
 
47972
#endif
 
47973
 
 
47974
}
 
47975
 
 
47976
//---------------------------------------------------------------------
 
47977
bool ColladaParserAutoGen15Private::_freeAttributes__bool2x1( void* attributeData )
 
47978
{
 
47979
    return true;
 
47980
}
 
47981
 
 
47982
//---------------------------------------------------------------------
 
47983
bool ColladaParserAutoGen15Private::_data__bool2x2( const ParserChar* text, size_t textLength )
 
47984
{
 
47985
#ifdef GENERATEDSAXPARSER_VALIDATION
 
47986
    if ( mValidate )
 
47987
    {
 
47988
        bool2x2__ValidationData* validationData = (bool2x2__ValidationData*)mValidationDataStack.top();
 
47989
        DISABLE_WARNING_UNUSED(validationData)
 
47990
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool2x2, &validate__bool2x2_type__stream, &validationData->validationWholeSize, 0);
 
47991
    }
 
47992
    else
 
47993
    {
 
47994
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool2x2);
 
47995
    }
 
47996
#else
 
47997
    {
 
47998
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool2x2);
 
47999
    } // validation
 
48000
#endif
 
48001
 
 
48002
}
 
48003
 
 
48004
//---------------------------------------------------------------------
 
48005
bool ColladaParserAutoGen15Private::_preBegin__bool2x2( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
48006
{
 
48007
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48008
    if ( mValidate )
 
48009
    {
 
48010
 
 
48011
        bool validationResult = _validateBegin__bool2x2( attributes, attributeDataPtr, validationDataPtr );
 
48012
        if ( !validationResult ) return false;
 
48013
 
 
48014
    } // validation
 
48015
#endif
 
48016
 
 
48017
    return true;
 
48018
}
 
48019
 
 
48020
//---------------------------------------------------------------------
 
48021
bool ColladaParserAutoGen15Private::_preEnd__bool2x2()
 
48022
{
 
48023
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48024
    if ( mValidate )
 
48025
    {
 
48026
 
 
48027
        bool validationResult = _validateEnd__bool2x2();
 
48028
        if ( !validationResult ) return false;
 
48029
 
 
48030
    } // validation
 
48031
#endif
 
48032
 
 
48033
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48034
    if ( mValidate )
 
48035
    {
 
48036
        bool2x2__ValidationData* validationData = (bool2x2__ValidationData*)mValidationDataStack.top();
 
48037
        DISABLE_WARNING_UNUSED(validationData)
 
48038
bool returnValue = boolDataEnd( &ColladaParserAutoGen15::data__bool2x2, &validate__bool2x2_type__streamEnd, &validationData->validationWholeSize, 0 );
 
48039
        ParserError::ErrorType simpleTypeValidationResult = validate__bool2x2_type(0, (*(&validationData->validationWholeSize)));
 
48040
        mValidationDataStack.deleteObject();
 
48041
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
48042
        {
 
48043
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
48044
                simpleTypeValidationResult,
 
48045
                HASH_ELEMENT_BOOL2X2,
 
48046
                (ParserChar*)0, 0 ) )
 
48047
            {
 
48048
                return false;
 
48049
            }
 
48050
        }
 
48051
        return returnValue;
 
48052
    }
 
48053
    else
 
48054
    {
 
48055
return boolDataEnd( &ColladaParserAutoGen15::data__bool2x2 );
 
48056
    }
 
48057
#else
 
48058
    {
 
48059
return boolDataEnd( &ColladaParserAutoGen15::data__bool2x2 );
 
48060
    } // validation
 
48061
#endif
 
48062
 
 
48063
}
 
48064
 
 
48065
//---------------------------------------------------------------------
 
48066
bool ColladaParserAutoGen15Private::_freeAttributes__bool2x2( void* attributeData )
 
48067
{
 
48068
    return true;
 
48069
}
 
48070
 
 
48071
//---------------------------------------------------------------------
 
48072
bool ColladaParserAutoGen15Private::_data__bool2x3( const ParserChar* text, size_t textLength )
 
48073
{
 
48074
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48075
    if ( mValidate )
 
48076
    {
 
48077
        bool2x3__ValidationData* validationData = (bool2x3__ValidationData*)mValidationDataStack.top();
 
48078
        DISABLE_WARNING_UNUSED(validationData)
 
48079
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool2x3, &validate__bool2x3_type__stream, &validationData->validationWholeSize, 0);
 
48080
    }
 
48081
    else
 
48082
    {
 
48083
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool2x3);
 
48084
    }
 
48085
#else
 
48086
    {
 
48087
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool2x3);
 
48088
    } // validation
 
48089
#endif
 
48090
 
 
48091
}
 
48092
 
 
48093
//---------------------------------------------------------------------
 
48094
bool ColladaParserAutoGen15Private::_preBegin__bool2x3( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
48095
{
 
48096
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48097
    if ( mValidate )
 
48098
    {
 
48099
 
 
48100
        bool validationResult = _validateBegin__bool2x3( attributes, attributeDataPtr, validationDataPtr );
 
48101
        if ( !validationResult ) return false;
 
48102
 
 
48103
    } // validation
 
48104
#endif
 
48105
 
 
48106
    return true;
 
48107
}
 
48108
 
 
48109
//---------------------------------------------------------------------
 
48110
bool ColladaParserAutoGen15Private::_preEnd__bool2x3()
 
48111
{
 
48112
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48113
    if ( mValidate )
 
48114
    {
 
48115
 
 
48116
        bool validationResult = _validateEnd__bool2x3();
 
48117
        if ( !validationResult ) return false;
 
48118
 
 
48119
    } // validation
 
48120
#endif
 
48121
 
 
48122
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48123
    if ( mValidate )
 
48124
    {
 
48125
        bool2x3__ValidationData* validationData = (bool2x3__ValidationData*)mValidationDataStack.top();
 
48126
        DISABLE_WARNING_UNUSED(validationData)
 
48127
bool returnValue = boolDataEnd( &ColladaParserAutoGen15::data__bool2x3, &validate__bool2x3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
48128
        ParserError::ErrorType simpleTypeValidationResult = validate__bool2x3_type(0, (*(&validationData->validationWholeSize)));
 
48129
        mValidationDataStack.deleteObject();
 
48130
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
48131
        {
 
48132
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
48133
                simpleTypeValidationResult,
 
48134
                HASH_ELEMENT_BOOL2X3,
 
48135
                (ParserChar*)0, 0 ) )
 
48136
            {
 
48137
                return false;
 
48138
            }
 
48139
        }
 
48140
        return returnValue;
 
48141
    }
 
48142
    else
 
48143
    {
 
48144
return boolDataEnd( &ColladaParserAutoGen15::data__bool2x3 );
 
48145
    }
 
48146
#else
 
48147
    {
 
48148
return boolDataEnd( &ColladaParserAutoGen15::data__bool2x3 );
 
48149
    } // validation
 
48150
#endif
 
48151
 
 
48152
}
 
48153
 
 
48154
//---------------------------------------------------------------------
 
48155
bool ColladaParserAutoGen15Private::_freeAttributes__bool2x3( void* attributeData )
 
48156
{
 
48157
    return true;
 
48158
}
 
48159
 
 
48160
//---------------------------------------------------------------------
 
48161
bool ColladaParserAutoGen15Private::_data__bool2x4( const ParserChar* text, size_t textLength )
 
48162
{
 
48163
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48164
    if ( mValidate )
 
48165
    {
 
48166
        bool2x4__ValidationData* validationData = (bool2x4__ValidationData*)mValidationDataStack.top();
 
48167
        DISABLE_WARNING_UNUSED(validationData)
 
48168
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool2x4, &validate__bool2x4_type__stream, &validationData->validationWholeSize, 0);
 
48169
    }
 
48170
    else
 
48171
    {
 
48172
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool2x4);
 
48173
    }
 
48174
#else
 
48175
    {
 
48176
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool2x4);
 
48177
    } // validation
 
48178
#endif
 
48179
 
 
48180
}
 
48181
 
 
48182
//---------------------------------------------------------------------
 
48183
bool ColladaParserAutoGen15Private::_preBegin__bool2x4( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
48184
{
 
48185
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48186
    if ( mValidate )
 
48187
    {
 
48188
 
 
48189
        bool validationResult = _validateBegin__bool2x4( attributes, attributeDataPtr, validationDataPtr );
 
48190
        if ( !validationResult ) return false;
 
48191
 
 
48192
    } // validation
 
48193
#endif
 
48194
 
 
48195
    return true;
 
48196
}
 
48197
 
 
48198
//---------------------------------------------------------------------
 
48199
bool ColladaParserAutoGen15Private::_preEnd__bool2x4()
 
48200
{
 
48201
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48202
    if ( mValidate )
 
48203
    {
 
48204
 
 
48205
        bool validationResult = _validateEnd__bool2x4();
 
48206
        if ( !validationResult ) return false;
 
48207
 
 
48208
    } // validation
 
48209
#endif
 
48210
 
 
48211
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48212
    if ( mValidate )
 
48213
    {
 
48214
        bool2x4__ValidationData* validationData = (bool2x4__ValidationData*)mValidationDataStack.top();
 
48215
        DISABLE_WARNING_UNUSED(validationData)
 
48216
bool returnValue = boolDataEnd( &ColladaParserAutoGen15::data__bool2x4, &validate__bool2x4_type__streamEnd, &validationData->validationWholeSize, 0 );
 
48217
        ParserError::ErrorType simpleTypeValidationResult = validate__bool2x4_type(0, (*(&validationData->validationWholeSize)));
 
48218
        mValidationDataStack.deleteObject();
 
48219
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
48220
        {
 
48221
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
48222
                simpleTypeValidationResult,
 
48223
                HASH_ELEMENT_BOOL2X4,
 
48224
                (ParserChar*)0, 0 ) )
 
48225
            {
 
48226
                return false;
 
48227
            }
 
48228
        }
 
48229
        return returnValue;
 
48230
    }
 
48231
    else
 
48232
    {
 
48233
return boolDataEnd( &ColladaParserAutoGen15::data__bool2x4 );
 
48234
    }
 
48235
#else
 
48236
    {
 
48237
return boolDataEnd( &ColladaParserAutoGen15::data__bool2x4 );
 
48238
    } // validation
 
48239
#endif
 
48240
 
 
48241
}
 
48242
 
 
48243
//---------------------------------------------------------------------
 
48244
bool ColladaParserAutoGen15Private::_freeAttributes__bool2x4( void* attributeData )
 
48245
{
 
48246
    return true;
 
48247
}
 
48248
 
 
48249
//---------------------------------------------------------------------
 
48250
bool ColladaParserAutoGen15Private::_data__bool3x1( const ParserChar* text, size_t textLength )
 
48251
{
 
48252
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48253
    if ( mValidate )
 
48254
    {
 
48255
        bool3__ValidationData* validationData = (bool3__ValidationData*)mValidationDataStack.top();
 
48256
        DISABLE_WARNING_UNUSED(validationData)
 
48257
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool3x1, &validate__bool3_type__stream, &validationData->validationWholeSize, 0);
 
48258
    }
 
48259
    else
 
48260
    {
 
48261
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool3x1);
 
48262
    }
 
48263
#else
 
48264
    {
 
48265
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool3x1);
 
48266
    } // validation
 
48267
#endif
 
48268
 
 
48269
}
 
48270
 
 
48271
//---------------------------------------------------------------------
 
48272
bool ColladaParserAutoGen15Private::_preBegin__bool3x1( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
48273
{
 
48274
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48275
    if ( mValidate )
 
48276
    {
 
48277
 
 
48278
        bool validationResult = _validateBegin__bool3x1( attributes, attributeDataPtr, validationDataPtr );
 
48279
        if ( !validationResult ) return false;
 
48280
 
 
48281
    } // validation
 
48282
#endif
 
48283
 
 
48284
    return true;
 
48285
}
 
48286
 
 
48287
//---------------------------------------------------------------------
 
48288
bool ColladaParserAutoGen15Private::_preEnd__bool3x1()
 
48289
{
 
48290
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48291
    if ( mValidate )
 
48292
    {
 
48293
 
 
48294
        bool validationResult = _validateEnd__bool3x1();
 
48295
        if ( !validationResult ) return false;
 
48296
 
 
48297
    } // validation
 
48298
#endif
 
48299
 
 
48300
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48301
    if ( mValidate )
 
48302
    {
 
48303
        bool3__ValidationData* validationData = (bool3__ValidationData*)mValidationDataStack.top();
 
48304
        DISABLE_WARNING_UNUSED(validationData)
 
48305
bool returnValue = boolDataEnd( &ColladaParserAutoGen15::data__bool3x1, &validate__bool3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
48306
        ParserError::ErrorType simpleTypeValidationResult = validate__bool3_type(0, (*(&validationData->validationWholeSize)));
 
48307
        mValidationDataStack.deleteObject();
 
48308
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
48309
        {
 
48310
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
48311
                simpleTypeValidationResult,
 
48312
                HASH_ELEMENT_BOOL3X1,
 
48313
                (ParserChar*)0, 0 ) )
 
48314
            {
 
48315
                return false;
 
48316
            }
 
48317
        }
 
48318
        return returnValue;
 
48319
    }
 
48320
    else
 
48321
    {
 
48322
return boolDataEnd( &ColladaParserAutoGen15::data__bool3x1 );
 
48323
    }
 
48324
#else
 
48325
    {
 
48326
return boolDataEnd( &ColladaParserAutoGen15::data__bool3x1 );
 
48327
    } // validation
 
48328
#endif
 
48329
 
 
48330
}
 
48331
 
 
48332
//---------------------------------------------------------------------
 
48333
bool ColladaParserAutoGen15Private::_freeAttributes__bool3x1( void* attributeData )
 
48334
{
 
48335
    return true;
 
48336
}
 
48337
 
 
48338
//---------------------------------------------------------------------
 
48339
bool ColladaParserAutoGen15Private::_data__bool3x2( const ParserChar* text, size_t textLength )
 
48340
{
 
48341
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48342
    if ( mValidate )
 
48343
    {
 
48344
        bool3x2__ValidationData* validationData = (bool3x2__ValidationData*)mValidationDataStack.top();
 
48345
        DISABLE_WARNING_UNUSED(validationData)
 
48346
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool3x2, &validate__bool3x2_type__stream, &validationData->validationWholeSize, 0);
 
48347
    }
 
48348
    else
 
48349
    {
 
48350
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool3x2);
 
48351
    }
 
48352
#else
 
48353
    {
 
48354
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool3x2);
 
48355
    } // validation
 
48356
#endif
 
48357
 
 
48358
}
 
48359
 
 
48360
//---------------------------------------------------------------------
 
48361
bool ColladaParserAutoGen15Private::_preBegin__bool3x2( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
48362
{
 
48363
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48364
    if ( mValidate )
 
48365
    {
 
48366
 
 
48367
        bool validationResult = _validateBegin__bool3x2( attributes, attributeDataPtr, validationDataPtr );
 
48368
        if ( !validationResult ) return false;
 
48369
 
 
48370
    } // validation
 
48371
#endif
 
48372
 
 
48373
    return true;
 
48374
}
 
48375
 
 
48376
//---------------------------------------------------------------------
 
48377
bool ColladaParserAutoGen15Private::_preEnd__bool3x2()
 
48378
{
 
48379
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48380
    if ( mValidate )
 
48381
    {
 
48382
 
 
48383
        bool validationResult = _validateEnd__bool3x2();
 
48384
        if ( !validationResult ) return false;
 
48385
 
 
48386
    } // validation
 
48387
#endif
 
48388
 
 
48389
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48390
    if ( mValidate )
 
48391
    {
 
48392
        bool3x2__ValidationData* validationData = (bool3x2__ValidationData*)mValidationDataStack.top();
 
48393
        DISABLE_WARNING_UNUSED(validationData)
 
48394
bool returnValue = boolDataEnd( &ColladaParserAutoGen15::data__bool3x2, &validate__bool3x2_type__streamEnd, &validationData->validationWholeSize, 0 );
 
48395
        ParserError::ErrorType simpleTypeValidationResult = validate__bool3x2_type(0, (*(&validationData->validationWholeSize)));
 
48396
        mValidationDataStack.deleteObject();
 
48397
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
48398
        {
 
48399
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
48400
                simpleTypeValidationResult,
 
48401
                HASH_ELEMENT_BOOL3X2,
 
48402
                (ParserChar*)0, 0 ) )
 
48403
            {
 
48404
                return false;
 
48405
            }
 
48406
        }
 
48407
        return returnValue;
 
48408
    }
 
48409
    else
 
48410
    {
 
48411
return boolDataEnd( &ColladaParserAutoGen15::data__bool3x2 );
 
48412
    }
 
48413
#else
 
48414
    {
 
48415
return boolDataEnd( &ColladaParserAutoGen15::data__bool3x2 );
 
48416
    } // validation
 
48417
#endif
 
48418
 
 
48419
}
 
48420
 
 
48421
//---------------------------------------------------------------------
 
48422
bool ColladaParserAutoGen15Private::_freeAttributes__bool3x2( void* attributeData )
 
48423
{
 
48424
    return true;
 
48425
}
 
48426
 
 
48427
//---------------------------------------------------------------------
 
48428
bool ColladaParserAutoGen15Private::_data__bool3x3( const ParserChar* text, size_t textLength )
 
48429
{
 
48430
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48431
    if ( mValidate )
 
48432
    {
 
48433
        bool3x3__ValidationData* validationData = (bool3x3__ValidationData*)mValidationDataStack.top();
 
48434
        DISABLE_WARNING_UNUSED(validationData)
 
48435
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool3x3, &validate__bool3x3_type__stream, &validationData->validationWholeSize, 0);
 
48436
    }
 
48437
    else
 
48438
    {
 
48439
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool3x3);
 
48440
    }
 
48441
#else
 
48442
    {
 
48443
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool3x3);
 
48444
    } // validation
 
48445
#endif
 
48446
 
 
48447
}
 
48448
 
 
48449
//---------------------------------------------------------------------
 
48450
bool ColladaParserAutoGen15Private::_preBegin__bool3x3( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
48451
{
 
48452
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48453
    if ( mValidate )
 
48454
    {
 
48455
 
 
48456
        bool validationResult = _validateBegin__bool3x3( attributes, attributeDataPtr, validationDataPtr );
 
48457
        if ( !validationResult ) return false;
 
48458
 
 
48459
    } // validation
 
48460
#endif
 
48461
 
 
48462
    return true;
 
48463
}
 
48464
 
 
48465
//---------------------------------------------------------------------
 
48466
bool ColladaParserAutoGen15Private::_preEnd__bool3x3()
 
48467
{
 
48468
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48469
    if ( mValidate )
 
48470
    {
 
48471
 
 
48472
        bool validationResult = _validateEnd__bool3x3();
 
48473
        if ( !validationResult ) return false;
 
48474
 
 
48475
    } // validation
 
48476
#endif
 
48477
 
 
48478
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48479
    if ( mValidate )
 
48480
    {
 
48481
        bool3x3__ValidationData* validationData = (bool3x3__ValidationData*)mValidationDataStack.top();
 
48482
        DISABLE_WARNING_UNUSED(validationData)
 
48483
bool returnValue = boolDataEnd( &ColladaParserAutoGen15::data__bool3x3, &validate__bool3x3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
48484
        ParserError::ErrorType simpleTypeValidationResult = validate__bool3x3_type(0, (*(&validationData->validationWholeSize)));
 
48485
        mValidationDataStack.deleteObject();
 
48486
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
48487
        {
 
48488
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
48489
                simpleTypeValidationResult,
 
48490
                HASH_ELEMENT_BOOL3X3,
 
48491
                (ParserChar*)0, 0 ) )
 
48492
            {
 
48493
                return false;
 
48494
            }
 
48495
        }
 
48496
        return returnValue;
 
48497
    }
 
48498
    else
 
48499
    {
 
48500
return boolDataEnd( &ColladaParserAutoGen15::data__bool3x3 );
 
48501
    }
 
48502
#else
 
48503
    {
 
48504
return boolDataEnd( &ColladaParserAutoGen15::data__bool3x3 );
 
48505
    } // validation
 
48506
#endif
 
48507
 
 
48508
}
 
48509
 
 
48510
//---------------------------------------------------------------------
 
48511
bool ColladaParserAutoGen15Private::_freeAttributes__bool3x3( void* attributeData )
 
48512
{
 
48513
    return true;
 
48514
}
 
48515
 
 
48516
//---------------------------------------------------------------------
 
48517
bool ColladaParserAutoGen15Private::_data__bool3x4( const ParserChar* text, size_t textLength )
 
48518
{
 
48519
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48520
    if ( mValidate )
 
48521
    {
 
48522
        bool3x4__ValidationData* validationData = (bool3x4__ValidationData*)mValidationDataStack.top();
 
48523
        DISABLE_WARNING_UNUSED(validationData)
 
48524
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool3x4, &validate__bool3x4_type__stream, &validationData->validationWholeSize, 0);
 
48525
    }
 
48526
    else
 
48527
    {
 
48528
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool3x4);
 
48529
    }
 
48530
#else
 
48531
    {
 
48532
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool3x4);
 
48533
    } // validation
 
48534
#endif
 
48535
 
 
48536
}
 
48537
 
 
48538
//---------------------------------------------------------------------
 
48539
bool ColladaParserAutoGen15Private::_preBegin__bool3x4( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
48540
{
 
48541
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48542
    if ( mValidate )
 
48543
    {
 
48544
 
 
48545
        bool validationResult = _validateBegin__bool3x4( attributes, attributeDataPtr, validationDataPtr );
 
48546
        if ( !validationResult ) return false;
 
48547
 
 
48548
    } // validation
 
48549
#endif
 
48550
 
 
48551
    return true;
 
48552
}
 
48553
 
 
48554
//---------------------------------------------------------------------
 
48555
bool ColladaParserAutoGen15Private::_preEnd__bool3x4()
 
48556
{
 
48557
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48558
    if ( mValidate )
 
48559
    {
 
48560
 
 
48561
        bool validationResult = _validateEnd__bool3x4();
 
48562
        if ( !validationResult ) return false;
 
48563
 
 
48564
    } // validation
 
48565
#endif
 
48566
 
 
48567
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48568
    if ( mValidate )
 
48569
    {
 
48570
        bool3x4__ValidationData* validationData = (bool3x4__ValidationData*)mValidationDataStack.top();
 
48571
        DISABLE_WARNING_UNUSED(validationData)
 
48572
bool returnValue = boolDataEnd( &ColladaParserAutoGen15::data__bool3x4, &validate__bool3x4_type__streamEnd, &validationData->validationWholeSize, 0 );
 
48573
        ParserError::ErrorType simpleTypeValidationResult = validate__bool3x4_type(0, (*(&validationData->validationWholeSize)));
 
48574
        mValidationDataStack.deleteObject();
 
48575
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
48576
        {
 
48577
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
48578
                simpleTypeValidationResult,
 
48579
                HASH_ELEMENT_BOOL3X4,
 
48580
                (ParserChar*)0, 0 ) )
 
48581
            {
 
48582
                return false;
 
48583
            }
 
48584
        }
 
48585
        return returnValue;
 
48586
    }
 
48587
    else
 
48588
    {
 
48589
return boolDataEnd( &ColladaParserAutoGen15::data__bool3x4 );
 
48590
    }
 
48591
#else
 
48592
    {
 
48593
return boolDataEnd( &ColladaParserAutoGen15::data__bool3x4 );
 
48594
    } // validation
 
48595
#endif
 
48596
 
 
48597
}
 
48598
 
 
48599
//---------------------------------------------------------------------
 
48600
bool ColladaParserAutoGen15Private::_freeAttributes__bool3x4( void* attributeData )
 
48601
{
 
48602
    return true;
 
48603
}
 
48604
 
 
48605
//---------------------------------------------------------------------
 
48606
bool ColladaParserAutoGen15Private::_data__bool4x1( const ParserChar* text, size_t textLength )
 
48607
{
 
48608
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48609
    if ( mValidate )
 
48610
    {
 
48611
        bool4__ValidationData* validationData = (bool4__ValidationData*)mValidationDataStack.top();
 
48612
        DISABLE_WARNING_UNUSED(validationData)
 
48613
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool4x1, &validate__bool4_type__stream, &validationData->validationWholeSize, 0);
 
48614
    }
 
48615
    else
 
48616
    {
 
48617
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool4x1);
 
48618
    }
 
48619
#else
 
48620
    {
 
48621
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool4x1);
 
48622
    } // validation
 
48623
#endif
 
48624
 
 
48625
}
 
48626
 
 
48627
//---------------------------------------------------------------------
 
48628
bool ColladaParserAutoGen15Private::_preBegin__bool4x1( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
48629
{
 
48630
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48631
    if ( mValidate )
 
48632
    {
 
48633
 
 
48634
        bool validationResult = _validateBegin__bool4x1( attributes, attributeDataPtr, validationDataPtr );
 
48635
        if ( !validationResult ) return false;
 
48636
 
 
48637
    } // validation
 
48638
#endif
 
48639
 
 
48640
    return true;
 
48641
}
 
48642
 
 
48643
//---------------------------------------------------------------------
 
48644
bool ColladaParserAutoGen15Private::_preEnd__bool4x1()
 
48645
{
 
48646
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48647
    if ( mValidate )
 
48648
    {
 
48649
 
 
48650
        bool validationResult = _validateEnd__bool4x1();
 
48651
        if ( !validationResult ) return false;
 
48652
 
 
48653
    } // validation
 
48654
#endif
 
48655
 
 
48656
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48657
    if ( mValidate )
 
48658
    {
 
48659
        bool4__ValidationData* validationData = (bool4__ValidationData*)mValidationDataStack.top();
 
48660
        DISABLE_WARNING_UNUSED(validationData)
 
48661
bool returnValue = boolDataEnd( &ColladaParserAutoGen15::data__bool4x1, &validate__bool4_type__streamEnd, &validationData->validationWholeSize, 0 );
 
48662
        ParserError::ErrorType simpleTypeValidationResult = validate__bool4_type(0, (*(&validationData->validationWholeSize)));
 
48663
        mValidationDataStack.deleteObject();
 
48664
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
48665
        {
 
48666
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
48667
                simpleTypeValidationResult,
 
48668
                HASH_ELEMENT_BOOL4X1,
 
48669
                (ParserChar*)0, 0 ) )
 
48670
            {
 
48671
                return false;
 
48672
            }
 
48673
        }
 
48674
        return returnValue;
 
48675
    }
 
48676
    else
 
48677
    {
 
48678
return boolDataEnd( &ColladaParserAutoGen15::data__bool4x1 );
 
48679
    }
 
48680
#else
 
48681
    {
 
48682
return boolDataEnd( &ColladaParserAutoGen15::data__bool4x1 );
 
48683
    } // validation
 
48684
#endif
 
48685
 
 
48686
}
 
48687
 
 
48688
//---------------------------------------------------------------------
 
48689
bool ColladaParserAutoGen15Private::_freeAttributes__bool4x1( void* attributeData )
 
48690
{
 
48691
    return true;
 
48692
}
 
48693
 
 
48694
//---------------------------------------------------------------------
 
48695
bool ColladaParserAutoGen15Private::_data__bool4x2( const ParserChar* text, size_t textLength )
 
48696
{
 
48697
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48698
    if ( mValidate )
 
48699
    {
 
48700
        bool4x2__ValidationData* validationData = (bool4x2__ValidationData*)mValidationDataStack.top();
 
48701
        DISABLE_WARNING_UNUSED(validationData)
 
48702
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool4x2, &validate__bool4x2_type__stream, &validationData->validationWholeSize, 0);
 
48703
    }
 
48704
    else
 
48705
    {
 
48706
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool4x2);
 
48707
    }
 
48708
#else
 
48709
    {
 
48710
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool4x2);
 
48711
    } // validation
 
48712
#endif
 
48713
 
 
48714
}
 
48715
 
 
48716
//---------------------------------------------------------------------
 
48717
bool ColladaParserAutoGen15Private::_preBegin__bool4x2( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
48718
{
 
48719
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48720
    if ( mValidate )
 
48721
    {
 
48722
 
 
48723
        bool validationResult = _validateBegin__bool4x2( attributes, attributeDataPtr, validationDataPtr );
 
48724
        if ( !validationResult ) return false;
 
48725
 
 
48726
    } // validation
 
48727
#endif
 
48728
 
 
48729
    return true;
 
48730
}
 
48731
 
 
48732
//---------------------------------------------------------------------
 
48733
bool ColladaParserAutoGen15Private::_preEnd__bool4x2()
 
48734
{
 
48735
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48736
    if ( mValidate )
 
48737
    {
 
48738
 
 
48739
        bool validationResult = _validateEnd__bool4x2();
 
48740
        if ( !validationResult ) return false;
 
48741
 
 
48742
    } // validation
 
48743
#endif
 
48744
 
 
48745
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48746
    if ( mValidate )
 
48747
    {
 
48748
        bool4x2__ValidationData* validationData = (bool4x2__ValidationData*)mValidationDataStack.top();
 
48749
        DISABLE_WARNING_UNUSED(validationData)
 
48750
bool returnValue = boolDataEnd( &ColladaParserAutoGen15::data__bool4x2, &validate__bool4x2_type__streamEnd, &validationData->validationWholeSize, 0 );
 
48751
        ParserError::ErrorType simpleTypeValidationResult = validate__bool4x2_type(0, (*(&validationData->validationWholeSize)));
 
48752
        mValidationDataStack.deleteObject();
 
48753
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
48754
        {
 
48755
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
48756
                simpleTypeValidationResult,
 
48757
                HASH_ELEMENT_BOOL4X2,
 
48758
                (ParserChar*)0, 0 ) )
 
48759
            {
 
48760
                return false;
 
48761
            }
 
48762
        }
 
48763
        return returnValue;
 
48764
    }
 
48765
    else
 
48766
    {
 
48767
return boolDataEnd( &ColladaParserAutoGen15::data__bool4x2 );
 
48768
    }
 
48769
#else
 
48770
    {
 
48771
return boolDataEnd( &ColladaParserAutoGen15::data__bool4x2 );
 
48772
    } // validation
 
48773
#endif
 
48774
 
 
48775
}
 
48776
 
 
48777
//---------------------------------------------------------------------
 
48778
bool ColladaParserAutoGen15Private::_freeAttributes__bool4x2( void* attributeData )
 
48779
{
 
48780
    return true;
 
48781
}
 
48782
 
 
48783
//---------------------------------------------------------------------
 
48784
bool ColladaParserAutoGen15Private::_data__bool4x3( const ParserChar* text, size_t textLength )
 
48785
{
 
48786
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48787
    if ( mValidate )
 
48788
    {
 
48789
        bool4x3__ValidationData* validationData = (bool4x3__ValidationData*)mValidationDataStack.top();
 
48790
        DISABLE_WARNING_UNUSED(validationData)
 
48791
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool4x3, &validate__bool4x3_type__stream, &validationData->validationWholeSize, 0);
 
48792
    }
 
48793
    else
 
48794
    {
 
48795
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool4x3);
 
48796
    }
 
48797
#else
 
48798
    {
 
48799
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool4x3);
 
48800
    } // validation
 
48801
#endif
 
48802
 
 
48803
}
 
48804
 
 
48805
//---------------------------------------------------------------------
 
48806
bool ColladaParserAutoGen15Private::_preBegin__bool4x3( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
48807
{
 
48808
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48809
    if ( mValidate )
 
48810
    {
 
48811
 
 
48812
        bool validationResult = _validateBegin__bool4x3( attributes, attributeDataPtr, validationDataPtr );
 
48813
        if ( !validationResult ) return false;
 
48814
 
 
48815
    } // validation
 
48816
#endif
 
48817
 
 
48818
    return true;
 
48819
}
 
48820
 
 
48821
//---------------------------------------------------------------------
 
48822
bool ColladaParserAutoGen15Private::_preEnd__bool4x3()
 
48823
{
 
48824
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48825
    if ( mValidate )
 
48826
    {
 
48827
 
 
48828
        bool validationResult = _validateEnd__bool4x3();
 
48829
        if ( !validationResult ) return false;
 
48830
 
 
48831
    } // validation
 
48832
#endif
 
48833
 
 
48834
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48835
    if ( mValidate )
 
48836
    {
 
48837
        bool4x3__ValidationData* validationData = (bool4x3__ValidationData*)mValidationDataStack.top();
 
48838
        DISABLE_WARNING_UNUSED(validationData)
 
48839
bool returnValue = boolDataEnd( &ColladaParserAutoGen15::data__bool4x3, &validate__bool4x3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
48840
        ParserError::ErrorType simpleTypeValidationResult = validate__bool4x3_type(0, (*(&validationData->validationWholeSize)));
 
48841
        mValidationDataStack.deleteObject();
 
48842
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
48843
        {
 
48844
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
48845
                simpleTypeValidationResult,
 
48846
                HASH_ELEMENT_BOOL4X3,
 
48847
                (ParserChar*)0, 0 ) )
 
48848
            {
 
48849
                return false;
 
48850
            }
 
48851
        }
 
48852
        return returnValue;
 
48853
    }
 
48854
    else
 
48855
    {
 
48856
return boolDataEnd( &ColladaParserAutoGen15::data__bool4x3 );
 
48857
    }
 
48858
#else
 
48859
    {
 
48860
return boolDataEnd( &ColladaParserAutoGen15::data__bool4x3 );
 
48861
    } // validation
 
48862
#endif
 
48863
 
 
48864
}
 
48865
 
 
48866
//---------------------------------------------------------------------
 
48867
bool ColladaParserAutoGen15Private::_freeAttributes__bool4x3( void* attributeData )
 
48868
{
 
48869
    return true;
 
48870
}
 
48871
 
 
48872
//---------------------------------------------------------------------
 
48873
bool ColladaParserAutoGen15Private::_data__bool4x4( const ParserChar* text, size_t textLength )
 
48874
{
 
48875
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48876
    if ( mValidate )
 
48877
    {
 
48878
        bool4x4__ValidationData* validationData = (bool4x4__ValidationData*)mValidationDataStack.top();
 
48879
        DISABLE_WARNING_UNUSED(validationData)
 
48880
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool4x4, &validate__bool4x4_type__stream, &validationData->validationWholeSize, 0);
 
48881
    }
 
48882
    else
 
48883
    {
 
48884
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool4x4);
 
48885
    }
 
48886
#else
 
48887
    {
 
48888
return characterData2BoolData(text, textLength, &ColladaParserAutoGen15::data__bool4x4);
 
48889
    } // validation
 
48890
#endif
 
48891
 
 
48892
}
 
48893
 
 
48894
//---------------------------------------------------------------------
 
48895
bool ColladaParserAutoGen15Private::_preBegin__bool4x4( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
48896
{
 
48897
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48898
    if ( mValidate )
 
48899
    {
 
48900
 
 
48901
        bool validationResult = _validateBegin__bool4x4( attributes, attributeDataPtr, validationDataPtr );
 
48902
        if ( !validationResult ) return false;
 
48903
 
 
48904
    } // validation
 
48905
#endif
 
48906
 
 
48907
    return true;
 
48908
}
 
48909
 
 
48910
//---------------------------------------------------------------------
 
48911
bool ColladaParserAutoGen15Private::_preEnd__bool4x4()
 
48912
{
 
48913
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48914
    if ( mValidate )
 
48915
    {
 
48916
 
 
48917
        bool validationResult = _validateEnd__bool4x4();
 
48918
        if ( !validationResult ) return false;
 
48919
 
 
48920
    } // validation
 
48921
#endif
 
48922
 
 
48923
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48924
    if ( mValidate )
 
48925
    {
 
48926
        bool4x4__ValidationData* validationData = (bool4x4__ValidationData*)mValidationDataStack.top();
 
48927
        DISABLE_WARNING_UNUSED(validationData)
 
48928
bool returnValue = boolDataEnd( &ColladaParserAutoGen15::data__bool4x4, &validate__bool4x4_type__streamEnd, &validationData->validationWholeSize, 0 );
 
48929
        ParserError::ErrorType simpleTypeValidationResult = validate__bool4x4_type(0, (*(&validationData->validationWholeSize)));
 
48930
        mValidationDataStack.deleteObject();
 
48931
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
48932
        {
 
48933
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
48934
                simpleTypeValidationResult,
 
48935
                HASH_ELEMENT_BOOL4X4,
 
48936
                (ParserChar*)0, 0 ) )
 
48937
            {
 
48938
                return false;
 
48939
            }
 
48940
        }
 
48941
        return returnValue;
 
48942
    }
 
48943
    else
 
48944
    {
 
48945
return boolDataEnd( &ColladaParserAutoGen15::data__bool4x4 );
 
48946
    }
 
48947
#else
 
48948
    {
 
48949
return boolDataEnd( &ColladaParserAutoGen15::data__bool4x4 );
 
48950
    } // validation
 
48951
#endif
 
48952
 
 
48953
}
 
48954
 
 
48955
//---------------------------------------------------------------------
 
48956
bool ColladaParserAutoGen15Private::_freeAttributes__bool4x4( void* attributeData )
 
48957
{
 
48958
    return true;
 
48959
}
 
48960
 
 
48961
//---------------------------------------------------------------------
 
48962
bool ColladaParserAutoGen15Private::_data__int2x1( const ParserChar* text, size_t textLength )
 
48963
{
 
48964
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48965
    if ( mValidate )
 
48966
    {
 
48967
        int2__ValidationData* validationData = (int2__ValidationData*)mValidationDataStack.top();
 
48968
        DISABLE_WARNING_UNUSED(validationData)
 
48969
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int2x1, &validate__int2_type__stream, &validationData->validationWholeSize, 0);
 
48970
    }
 
48971
    else
 
48972
    {
 
48973
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int2x1);
 
48974
    }
 
48975
#else
 
48976
    {
 
48977
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int2x1);
 
48978
    } // validation
 
48979
#endif
 
48980
 
 
48981
}
 
48982
 
 
48983
//---------------------------------------------------------------------
 
48984
bool ColladaParserAutoGen15Private::_preBegin__int2x1( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
48985
{
 
48986
#ifdef GENERATEDSAXPARSER_VALIDATION
 
48987
    if ( mValidate )
 
48988
    {
 
48989
 
 
48990
        bool validationResult = _validateBegin__int2x1( attributes, attributeDataPtr, validationDataPtr );
 
48991
        if ( !validationResult ) return false;
 
48992
 
 
48993
    } // validation
 
48994
#endif
 
48995
 
 
48996
    return true;
 
48997
}
 
48998
 
 
48999
//---------------------------------------------------------------------
 
49000
bool ColladaParserAutoGen15Private::_preEnd__int2x1()
 
49001
{
 
49002
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49003
    if ( mValidate )
 
49004
    {
 
49005
 
 
49006
        bool validationResult = _validateEnd__int2x1();
 
49007
        if ( !validationResult ) return false;
 
49008
 
 
49009
    } // validation
 
49010
#endif
 
49011
 
 
49012
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49013
    if ( mValidate )
 
49014
    {
 
49015
        int2__ValidationData* validationData = (int2__ValidationData*)mValidationDataStack.top();
 
49016
        DISABLE_WARNING_UNUSED(validationData)
 
49017
bool returnValue = sint64DataEnd( &ColladaParserAutoGen15::data__int2x1, &validate__int2_type__streamEnd, &validationData->validationWholeSize, 0 );
 
49018
        ParserError::ErrorType simpleTypeValidationResult = validate__int2_type(0, (*(&validationData->validationWholeSize)));
 
49019
        mValidationDataStack.deleteObject();
 
49020
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
49021
        {
 
49022
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
49023
                simpleTypeValidationResult,
 
49024
                HASH_ELEMENT_INT2X1,
 
49025
                (ParserChar*)0, 0 ) )
 
49026
            {
 
49027
                return false;
 
49028
            }
 
49029
        }
 
49030
        return returnValue;
 
49031
    }
 
49032
    else
 
49033
    {
 
49034
return sint64DataEnd( &ColladaParserAutoGen15::data__int2x1 );
 
49035
    }
 
49036
#else
 
49037
    {
 
49038
return sint64DataEnd( &ColladaParserAutoGen15::data__int2x1 );
 
49039
    } // validation
 
49040
#endif
 
49041
 
 
49042
}
 
49043
 
 
49044
//---------------------------------------------------------------------
 
49045
bool ColladaParserAutoGen15Private::_freeAttributes__int2x1( void* attributeData )
 
49046
{
 
49047
    return true;
 
49048
}
 
49049
 
 
49050
//---------------------------------------------------------------------
 
49051
bool ColladaParserAutoGen15Private::_data__int2x2( const ParserChar* text, size_t textLength )
 
49052
{
 
49053
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49054
    if ( mValidate )
 
49055
    {
 
49056
        int2x2__ValidationData* validationData = (int2x2__ValidationData*)mValidationDataStack.top();
 
49057
        DISABLE_WARNING_UNUSED(validationData)
 
49058
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int2x2, &validate__int2x2_type__stream, &validationData->validationWholeSize, 0);
 
49059
    }
 
49060
    else
 
49061
    {
 
49062
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int2x2);
 
49063
    }
 
49064
#else
 
49065
    {
 
49066
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int2x2);
 
49067
    } // validation
 
49068
#endif
 
49069
 
 
49070
}
 
49071
 
 
49072
//---------------------------------------------------------------------
 
49073
bool ColladaParserAutoGen15Private::_preBegin__int2x2( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
49074
{
 
49075
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49076
    if ( mValidate )
 
49077
    {
 
49078
 
 
49079
        bool validationResult = _validateBegin__int2x2( attributes, attributeDataPtr, validationDataPtr );
 
49080
        if ( !validationResult ) return false;
 
49081
 
 
49082
    } // validation
 
49083
#endif
 
49084
 
 
49085
    return true;
 
49086
}
 
49087
 
 
49088
//---------------------------------------------------------------------
 
49089
bool ColladaParserAutoGen15Private::_preEnd__int2x2()
 
49090
{
 
49091
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49092
    if ( mValidate )
 
49093
    {
 
49094
 
 
49095
        bool validationResult = _validateEnd__int2x2();
 
49096
        if ( !validationResult ) return false;
 
49097
 
 
49098
    } // validation
 
49099
#endif
 
49100
 
 
49101
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49102
    if ( mValidate )
 
49103
    {
 
49104
        int2x2__ValidationData* validationData = (int2x2__ValidationData*)mValidationDataStack.top();
 
49105
        DISABLE_WARNING_UNUSED(validationData)
 
49106
bool returnValue = sint64DataEnd( &ColladaParserAutoGen15::data__int2x2, &validate__int2x2_type__streamEnd, &validationData->validationWholeSize, 0 );
 
49107
        ParserError::ErrorType simpleTypeValidationResult = validate__int2x2_type(0, (*(&validationData->validationWholeSize)));
 
49108
        mValidationDataStack.deleteObject();
 
49109
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
49110
        {
 
49111
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
49112
                simpleTypeValidationResult,
 
49113
                HASH_ELEMENT_INT2X2,
 
49114
                (ParserChar*)0, 0 ) )
 
49115
            {
 
49116
                return false;
 
49117
            }
 
49118
        }
 
49119
        return returnValue;
 
49120
    }
 
49121
    else
 
49122
    {
 
49123
return sint64DataEnd( &ColladaParserAutoGen15::data__int2x2 );
 
49124
    }
 
49125
#else
 
49126
    {
 
49127
return sint64DataEnd( &ColladaParserAutoGen15::data__int2x2 );
 
49128
    } // validation
 
49129
#endif
 
49130
 
 
49131
}
 
49132
 
 
49133
//---------------------------------------------------------------------
 
49134
bool ColladaParserAutoGen15Private::_freeAttributes__int2x2( void* attributeData )
 
49135
{
 
49136
    return true;
 
49137
}
 
49138
 
 
49139
//---------------------------------------------------------------------
 
49140
bool ColladaParserAutoGen15Private::_data__int2x3( const ParserChar* text, size_t textLength )
 
49141
{
 
49142
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49143
    if ( mValidate )
 
49144
    {
 
49145
        int2x3__ValidationData* validationData = (int2x3__ValidationData*)mValidationDataStack.top();
 
49146
        DISABLE_WARNING_UNUSED(validationData)
 
49147
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int2x3, &validate__int2x3_type__stream, &validationData->validationWholeSize, 0);
 
49148
    }
 
49149
    else
 
49150
    {
 
49151
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int2x3);
 
49152
    }
 
49153
#else
 
49154
    {
 
49155
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int2x3);
 
49156
    } // validation
 
49157
#endif
 
49158
 
 
49159
}
 
49160
 
 
49161
//---------------------------------------------------------------------
 
49162
bool ColladaParserAutoGen15Private::_preBegin__int2x3( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
49163
{
 
49164
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49165
    if ( mValidate )
 
49166
    {
 
49167
 
 
49168
        bool validationResult = _validateBegin__int2x3( attributes, attributeDataPtr, validationDataPtr );
 
49169
        if ( !validationResult ) return false;
 
49170
 
 
49171
    } // validation
 
49172
#endif
 
49173
 
 
49174
    return true;
 
49175
}
 
49176
 
 
49177
//---------------------------------------------------------------------
 
49178
bool ColladaParserAutoGen15Private::_preEnd__int2x3()
 
49179
{
 
49180
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49181
    if ( mValidate )
 
49182
    {
 
49183
 
 
49184
        bool validationResult = _validateEnd__int2x3();
 
49185
        if ( !validationResult ) return false;
 
49186
 
 
49187
    } // validation
 
49188
#endif
 
49189
 
 
49190
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49191
    if ( mValidate )
 
49192
    {
 
49193
        int2x3__ValidationData* validationData = (int2x3__ValidationData*)mValidationDataStack.top();
 
49194
        DISABLE_WARNING_UNUSED(validationData)
 
49195
bool returnValue = sint64DataEnd( &ColladaParserAutoGen15::data__int2x3, &validate__int2x3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
49196
        ParserError::ErrorType simpleTypeValidationResult = validate__int2x3_type(0, (*(&validationData->validationWholeSize)));
 
49197
        mValidationDataStack.deleteObject();
 
49198
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
49199
        {
 
49200
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
49201
                simpleTypeValidationResult,
 
49202
                HASH_ELEMENT_INT2X3,
 
49203
                (ParserChar*)0, 0 ) )
 
49204
            {
 
49205
                return false;
 
49206
            }
 
49207
        }
 
49208
        return returnValue;
 
49209
    }
 
49210
    else
 
49211
    {
 
49212
return sint64DataEnd( &ColladaParserAutoGen15::data__int2x3 );
 
49213
    }
 
49214
#else
 
49215
    {
 
49216
return sint64DataEnd( &ColladaParserAutoGen15::data__int2x3 );
 
49217
    } // validation
 
49218
#endif
 
49219
 
 
49220
}
 
49221
 
 
49222
//---------------------------------------------------------------------
 
49223
bool ColladaParserAutoGen15Private::_freeAttributes__int2x3( void* attributeData )
 
49224
{
 
49225
    return true;
 
49226
}
 
49227
 
 
49228
//---------------------------------------------------------------------
 
49229
bool ColladaParserAutoGen15Private::_data__int2x4( const ParserChar* text, size_t textLength )
 
49230
{
 
49231
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49232
    if ( mValidate )
 
49233
    {
 
49234
        int2x4__ValidationData* validationData = (int2x4__ValidationData*)mValidationDataStack.top();
 
49235
        DISABLE_WARNING_UNUSED(validationData)
 
49236
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int2x4, &validate__int2x4_type__stream, &validationData->validationWholeSize, 0);
 
49237
    }
 
49238
    else
 
49239
    {
 
49240
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int2x4);
 
49241
    }
 
49242
#else
 
49243
    {
 
49244
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int2x4);
 
49245
    } // validation
 
49246
#endif
 
49247
 
 
49248
}
 
49249
 
 
49250
//---------------------------------------------------------------------
 
49251
bool ColladaParserAutoGen15Private::_preBegin__int2x4( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
49252
{
 
49253
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49254
    if ( mValidate )
 
49255
    {
 
49256
 
 
49257
        bool validationResult = _validateBegin__int2x4( attributes, attributeDataPtr, validationDataPtr );
 
49258
        if ( !validationResult ) return false;
 
49259
 
 
49260
    } // validation
 
49261
#endif
 
49262
 
 
49263
    return true;
 
49264
}
 
49265
 
 
49266
//---------------------------------------------------------------------
 
49267
bool ColladaParserAutoGen15Private::_preEnd__int2x4()
 
49268
{
 
49269
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49270
    if ( mValidate )
 
49271
    {
 
49272
 
 
49273
        bool validationResult = _validateEnd__int2x4();
 
49274
        if ( !validationResult ) return false;
 
49275
 
 
49276
    } // validation
 
49277
#endif
 
49278
 
 
49279
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49280
    if ( mValidate )
 
49281
    {
 
49282
        int2x4__ValidationData* validationData = (int2x4__ValidationData*)mValidationDataStack.top();
 
49283
        DISABLE_WARNING_UNUSED(validationData)
 
49284
bool returnValue = sint64DataEnd( &ColladaParserAutoGen15::data__int2x4, &validate__int2x4_type__streamEnd, &validationData->validationWholeSize, 0 );
 
49285
        ParserError::ErrorType simpleTypeValidationResult = validate__int2x4_type(0, (*(&validationData->validationWholeSize)));
 
49286
        mValidationDataStack.deleteObject();
 
49287
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
49288
        {
 
49289
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
49290
                simpleTypeValidationResult,
 
49291
                HASH_ELEMENT_INT2X4,
 
49292
                (ParserChar*)0, 0 ) )
 
49293
            {
 
49294
                return false;
 
49295
            }
 
49296
        }
 
49297
        return returnValue;
 
49298
    }
 
49299
    else
 
49300
    {
 
49301
return sint64DataEnd( &ColladaParserAutoGen15::data__int2x4 );
 
49302
    }
 
49303
#else
 
49304
    {
 
49305
return sint64DataEnd( &ColladaParserAutoGen15::data__int2x4 );
 
49306
    } // validation
 
49307
#endif
 
49308
 
 
49309
}
 
49310
 
 
49311
//---------------------------------------------------------------------
 
49312
bool ColladaParserAutoGen15Private::_freeAttributes__int2x4( void* attributeData )
 
49313
{
 
49314
    return true;
 
49315
}
 
49316
 
 
49317
//---------------------------------------------------------------------
 
49318
bool ColladaParserAutoGen15Private::_data__int3x1( const ParserChar* text, size_t textLength )
 
49319
{
 
49320
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49321
    if ( mValidate )
 
49322
    {
 
49323
        int3__ValidationData* validationData = (int3__ValidationData*)mValidationDataStack.top();
 
49324
        DISABLE_WARNING_UNUSED(validationData)
 
49325
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int3x1, &validate__int3_type__stream, &validationData->validationWholeSize, 0);
 
49326
    }
 
49327
    else
 
49328
    {
 
49329
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int3x1);
 
49330
    }
 
49331
#else
 
49332
    {
 
49333
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int3x1);
 
49334
    } // validation
 
49335
#endif
 
49336
 
 
49337
}
 
49338
 
 
49339
//---------------------------------------------------------------------
 
49340
bool ColladaParserAutoGen15Private::_preBegin__int3x1( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
49341
{
 
49342
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49343
    if ( mValidate )
 
49344
    {
 
49345
 
 
49346
        bool validationResult = _validateBegin__int3x1( attributes, attributeDataPtr, validationDataPtr );
 
49347
        if ( !validationResult ) return false;
 
49348
 
 
49349
    } // validation
 
49350
#endif
 
49351
 
 
49352
    return true;
 
49353
}
 
49354
 
 
49355
//---------------------------------------------------------------------
 
49356
bool ColladaParserAutoGen15Private::_preEnd__int3x1()
 
49357
{
 
49358
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49359
    if ( mValidate )
 
49360
    {
 
49361
 
 
49362
        bool validationResult = _validateEnd__int3x1();
 
49363
        if ( !validationResult ) return false;
 
49364
 
 
49365
    } // validation
 
49366
#endif
 
49367
 
 
49368
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49369
    if ( mValidate )
 
49370
    {
 
49371
        int3__ValidationData* validationData = (int3__ValidationData*)mValidationDataStack.top();
 
49372
        DISABLE_WARNING_UNUSED(validationData)
 
49373
bool returnValue = sint64DataEnd( &ColladaParserAutoGen15::data__int3x1, &validate__int3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
49374
        ParserError::ErrorType simpleTypeValidationResult = validate__int3_type(0, (*(&validationData->validationWholeSize)));
 
49375
        mValidationDataStack.deleteObject();
 
49376
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
49377
        {
 
49378
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
49379
                simpleTypeValidationResult,
 
49380
                HASH_ELEMENT_INT3X1,
 
49381
                (ParserChar*)0, 0 ) )
 
49382
            {
 
49383
                return false;
 
49384
            }
 
49385
        }
 
49386
        return returnValue;
 
49387
    }
 
49388
    else
 
49389
    {
 
49390
return sint64DataEnd( &ColladaParserAutoGen15::data__int3x1 );
 
49391
    }
 
49392
#else
 
49393
    {
 
49394
return sint64DataEnd( &ColladaParserAutoGen15::data__int3x1 );
 
49395
    } // validation
 
49396
#endif
 
49397
 
 
49398
}
 
49399
 
 
49400
//---------------------------------------------------------------------
 
49401
bool ColladaParserAutoGen15Private::_freeAttributes__int3x1( void* attributeData )
 
49402
{
 
49403
    return true;
 
49404
}
 
49405
 
 
49406
//---------------------------------------------------------------------
 
49407
bool ColladaParserAutoGen15Private::_data__int3x2( const ParserChar* text, size_t textLength )
 
49408
{
 
49409
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49410
    if ( mValidate )
 
49411
    {
 
49412
        int3x2__ValidationData* validationData = (int3x2__ValidationData*)mValidationDataStack.top();
 
49413
        DISABLE_WARNING_UNUSED(validationData)
 
49414
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int3x2, &validate__int3x2_type__stream, &validationData->validationWholeSize, 0);
 
49415
    }
 
49416
    else
 
49417
    {
 
49418
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int3x2);
 
49419
    }
 
49420
#else
 
49421
    {
 
49422
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int3x2);
 
49423
    } // validation
 
49424
#endif
 
49425
 
 
49426
}
 
49427
 
 
49428
//---------------------------------------------------------------------
 
49429
bool ColladaParserAutoGen15Private::_preBegin__int3x2( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
49430
{
 
49431
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49432
    if ( mValidate )
 
49433
    {
 
49434
 
 
49435
        bool validationResult = _validateBegin__int3x2( attributes, attributeDataPtr, validationDataPtr );
 
49436
        if ( !validationResult ) return false;
 
49437
 
 
49438
    } // validation
 
49439
#endif
 
49440
 
 
49441
    return true;
 
49442
}
 
49443
 
 
49444
//---------------------------------------------------------------------
 
49445
bool ColladaParserAutoGen15Private::_preEnd__int3x2()
 
49446
{
 
49447
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49448
    if ( mValidate )
 
49449
    {
 
49450
 
 
49451
        bool validationResult = _validateEnd__int3x2();
 
49452
        if ( !validationResult ) return false;
 
49453
 
 
49454
    } // validation
 
49455
#endif
 
49456
 
 
49457
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49458
    if ( mValidate )
 
49459
    {
 
49460
        int3x2__ValidationData* validationData = (int3x2__ValidationData*)mValidationDataStack.top();
 
49461
        DISABLE_WARNING_UNUSED(validationData)
 
49462
bool returnValue = sint64DataEnd( &ColladaParserAutoGen15::data__int3x2, &validate__int3x2_type__streamEnd, &validationData->validationWholeSize, 0 );
 
49463
        ParserError::ErrorType simpleTypeValidationResult = validate__int3x2_type(0, (*(&validationData->validationWholeSize)));
 
49464
        mValidationDataStack.deleteObject();
 
49465
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
49466
        {
 
49467
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
49468
                simpleTypeValidationResult,
 
49469
                HASH_ELEMENT_INT3X2,
 
49470
                (ParserChar*)0, 0 ) )
 
49471
            {
 
49472
                return false;
 
49473
            }
 
49474
        }
 
49475
        return returnValue;
 
49476
    }
 
49477
    else
 
49478
    {
 
49479
return sint64DataEnd( &ColladaParserAutoGen15::data__int3x2 );
 
49480
    }
 
49481
#else
 
49482
    {
 
49483
return sint64DataEnd( &ColladaParserAutoGen15::data__int3x2 );
 
49484
    } // validation
 
49485
#endif
 
49486
 
 
49487
}
 
49488
 
 
49489
//---------------------------------------------------------------------
 
49490
bool ColladaParserAutoGen15Private::_freeAttributes__int3x2( void* attributeData )
 
49491
{
 
49492
    return true;
 
49493
}
 
49494
 
 
49495
//---------------------------------------------------------------------
 
49496
bool ColladaParserAutoGen15Private::_data__int3x3( const ParserChar* text, size_t textLength )
 
49497
{
 
49498
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49499
    if ( mValidate )
 
49500
    {
 
49501
        int3x3__ValidationData* validationData = (int3x3__ValidationData*)mValidationDataStack.top();
 
49502
        DISABLE_WARNING_UNUSED(validationData)
 
49503
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int3x3, &validate__int3x3_type__stream, &validationData->validationWholeSize, 0);
 
49504
    }
 
49505
    else
 
49506
    {
 
49507
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int3x3);
 
49508
    }
 
49509
#else
 
49510
    {
 
49511
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int3x3);
 
49512
    } // validation
 
49513
#endif
 
49514
 
 
49515
}
 
49516
 
 
49517
//---------------------------------------------------------------------
 
49518
bool ColladaParserAutoGen15Private::_preBegin__int3x3( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
49519
{
 
49520
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49521
    if ( mValidate )
 
49522
    {
 
49523
 
 
49524
        bool validationResult = _validateBegin__int3x3( attributes, attributeDataPtr, validationDataPtr );
 
49525
        if ( !validationResult ) return false;
 
49526
 
 
49527
    } // validation
 
49528
#endif
 
49529
 
 
49530
    return true;
 
49531
}
 
49532
 
 
49533
//---------------------------------------------------------------------
 
49534
bool ColladaParserAutoGen15Private::_preEnd__int3x3()
 
49535
{
 
49536
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49537
    if ( mValidate )
 
49538
    {
 
49539
 
 
49540
        bool validationResult = _validateEnd__int3x3();
 
49541
        if ( !validationResult ) return false;
 
49542
 
 
49543
    } // validation
 
49544
#endif
 
49545
 
 
49546
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49547
    if ( mValidate )
 
49548
    {
 
49549
        int3x3__ValidationData* validationData = (int3x3__ValidationData*)mValidationDataStack.top();
 
49550
        DISABLE_WARNING_UNUSED(validationData)
 
49551
bool returnValue = sint64DataEnd( &ColladaParserAutoGen15::data__int3x3, &validate__int3x3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
49552
        ParserError::ErrorType simpleTypeValidationResult = validate__int3x3_type(0, (*(&validationData->validationWholeSize)));
 
49553
        mValidationDataStack.deleteObject();
 
49554
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
49555
        {
 
49556
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
49557
                simpleTypeValidationResult,
 
49558
                HASH_ELEMENT_INT3X3,
 
49559
                (ParserChar*)0, 0 ) )
 
49560
            {
 
49561
                return false;
 
49562
            }
 
49563
        }
 
49564
        return returnValue;
 
49565
    }
 
49566
    else
 
49567
    {
 
49568
return sint64DataEnd( &ColladaParserAutoGen15::data__int3x3 );
 
49569
    }
 
49570
#else
 
49571
    {
 
49572
return sint64DataEnd( &ColladaParserAutoGen15::data__int3x3 );
 
49573
    } // validation
 
49574
#endif
 
49575
 
 
49576
}
 
49577
 
 
49578
//---------------------------------------------------------------------
 
49579
bool ColladaParserAutoGen15Private::_freeAttributes__int3x3( void* attributeData )
 
49580
{
 
49581
    return true;
 
49582
}
 
49583
 
 
49584
//---------------------------------------------------------------------
 
49585
bool ColladaParserAutoGen15Private::_data__int3x4( const ParserChar* text, size_t textLength )
 
49586
{
 
49587
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49588
    if ( mValidate )
 
49589
    {
 
49590
        int3x4__ValidationData* validationData = (int3x4__ValidationData*)mValidationDataStack.top();
 
49591
        DISABLE_WARNING_UNUSED(validationData)
 
49592
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int3x4, &validate__int3x4_type__stream, &validationData->validationWholeSize, 0);
 
49593
    }
 
49594
    else
 
49595
    {
 
49596
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int3x4);
 
49597
    }
 
49598
#else
 
49599
    {
 
49600
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int3x4);
 
49601
    } // validation
 
49602
#endif
 
49603
 
 
49604
}
 
49605
 
 
49606
//---------------------------------------------------------------------
 
49607
bool ColladaParserAutoGen15Private::_preBegin__int3x4( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
49608
{
 
49609
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49610
    if ( mValidate )
 
49611
    {
 
49612
 
 
49613
        bool validationResult = _validateBegin__int3x4( attributes, attributeDataPtr, validationDataPtr );
 
49614
        if ( !validationResult ) return false;
 
49615
 
 
49616
    } // validation
 
49617
#endif
 
49618
 
 
49619
    return true;
 
49620
}
 
49621
 
 
49622
//---------------------------------------------------------------------
 
49623
bool ColladaParserAutoGen15Private::_preEnd__int3x4()
 
49624
{
 
49625
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49626
    if ( mValidate )
 
49627
    {
 
49628
 
 
49629
        bool validationResult = _validateEnd__int3x4();
 
49630
        if ( !validationResult ) return false;
 
49631
 
 
49632
    } // validation
 
49633
#endif
 
49634
 
 
49635
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49636
    if ( mValidate )
 
49637
    {
 
49638
        int3x4__ValidationData* validationData = (int3x4__ValidationData*)mValidationDataStack.top();
 
49639
        DISABLE_WARNING_UNUSED(validationData)
 
49640
bool returnValue = sint64DataEnd( &ColladaParserAutoGen15::data__int3x4, &validate__int3x4_type__streamEnd, &validationData->validationWholeSize, 0 );
 
49641
        ParserError::ErrorType simpleTypeValidationResult = validate__int3x4_type(0, (*(&validationData->validationWholeSize)));
 
49642
        mValidationDataStack.deleteObject();
 
49643
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
49644
        {
 
49645
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
49646
                simpleTypeValidationResult,
 
49647
                HASH_ELEMENT_INT3X4,
 
49648
                (ParserChar*)0, 0 ) )
 
49649
            {
 
49650
                return false;
 
49651
            }
 
49652
        }
 
49653
        return returnValue;
 
49654
    }
 
49655
    else
 
49656
    {
 
49657
return sint64DataEnd( &ColladaParserAutoGen15::data__int3x4 );
 
49658
    }
 
49659
#else
 
49660
    {
 
49661
return sint64DataEnd( &ColladaParserAutoGen15::data__int3x4 );
 
49662
    } // validation
 
49663
#endif
 
49664
 
 
49665
}
 
49666
 
 
49667
//---------------------------------------------------------------------
 
49668
bool ColladaParserAutoGen15Private::_freeAttributes__int3x4( void* attributeData )
 
49669
{
 
49670
    return true;
 
49671
}
 
49672
 
 
49673
//---------------------------------------------------------------------
 
49674
bool ColladaParserAutoGen15Private::_data__int4x1( const ParserChar* text, size_t textLength )
 
49675
{
 
49676
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49677
    if ( mValidate )
 
49678
    {
 
49679
        int4__ValidationData* validationData = (int4__ValidationData*)mValidationDataStack.top();
 
49680
        DISABLE_WARNING_UNUSED(validationData)
 
49681
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int4x1, &validate__int4_type__stream, &validationData->validationWholeSize, 0);
 
49682
    }
 
49683
    else
 
49684
    {
 
49685
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int4x1);
 
49686
    }
 
49687
#else
 
49688
    {
 
49689
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int4x1);
 
49690
    } // validation
 
49691
#endif
 
49692
 
 
49693
}
 
49694
 
 
49695
//---------------------------------------------------------------------
 
49696
bool ColladaParserAutoGen15Private::_preBegin__int4x1( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
49697
{
 
49698
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49699
    if ( mValidate )
 
49700
    {
 
49701
 
 
49702
        bool validationResult = _validateBegin__int4x1( attributes, attributeDataPtr, validationDataPtr );
 
49703
        if ( !validationResult ) return false;
 
49704
 
 
49705
    } // validation
 
49706
#endif
 
49707
 
 
49708
    return true;
 
49709
}
 
49710
 
 
49711
//---------------------------------------------------------------------
 
49712
bool ColladaParserAutoGen15Private::_preEnd__int4x1()
 
49713
{
 
49714
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49715
    if ( mValidate )
 
49716
    {
 
49717
 
 
49718
        bool validationResult = _validateEnd__int4x1();
 
49719
        if ( !validationResult ) return false;
 
49720
 
 
49721
    } // validation
 
49722
#endif
 
49723
 
 
49724
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49725
    if ( mValidate )
 
49726
    {
 
49727
        int4__ValidationData* validationData = (int4__ValidationData*)mValidationDataStack.top();
 
49728
        DISABLE_WARNING_UNUSED(validationData)
 
49729
bool returnValue = sint64DataEnd( &ColladaParserAutoGen15::data__int4x1, &validate__int4_type__streamEnd, &validationData->validationWholeSize, 0 );
 
49730
        ParserError::ErrorType simpleTypeValidationResult = validate__int4_type(0, (*(&validationData->validationWholeSize)));
 
49731
        mValidationDataStack.deleteObject();
 
49732
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
49733
        {
 
49734
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
49735
                simpleTypeValidationResult,
 
49736
                HASH_ELEMENT_INT4X1,
 
49737
                (ParserChar*)0, 0 ) )
 
49738
            {
 
49739
                return false;
 
49740
            }
 
49741
        }
 
49742
        return returnValue;
 
49743
    }
 
49744
    else
 
49745
    {
 
49746
return sint64DataEnd( &ColladaParserAutoGen15::data__int4x1 );
 
49747
    }
 
49748
#else
 
49749
    {
 
49750
return sint64DataEnd( &ColladaParserAutoGen15::data__int4x1 );
 
49751
    } // validation
 
49752
#endif
 
49753
 
 
49754
}
 
49755
 
 
49756
//---------------------------------------------------------------------
 
49757
bool ColladaParserAutoGen15Private::_freeAttributes__int4x1( void* attributeData )
 
49758
{
 
49759
    return true;
 
49760
}
 
49761
 
 
49762
//---------------------------------------------------------------------
 
49763
bool ColladaParserAutoGen15Private::_data__int4x2( const ParserChar* text, size_t textLength )
 
49764
{
 
49765
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49766
    if ( mValidate )
 
49767
    {
 
49768
        int4x2__ValidationData* validationData = (int4x2__ValidationData*)mValidationDataStack.top();
 
49769
        DISABLE_WARNING_UNUSED(validationData)
 
49770
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int4x2, &validate__int4x2_type__stream, &validationData->validationWholeSize, 0);
 
49771
    }
 
49772
    else
 
49773
    {
 
49774
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int4x2);
 
49775
    }
 
49776
#else
 
49777
    {
 
49778
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int4x2);
 
49779
    } // validation
 
49780
#endif
 
49781
 
 
49782
}
 
49783
 
 
49784
//---------------------------------------------------------------------
 
49785
bool ColladaParserAutoGen15Private::_preBegin__int4x2( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
49786
{
 
49787
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49788
    if ( mValidate )
 
49789
    {
 
49790
 
 
49791
        bool validationResult = _validateBegin__int4x2( attributes, attributeDataPtr, validationDataPtr );
 
49792
        if ( !validationResult ) return false;
 
49793
 
 
49794
    } // validation
 
49795
#endif
 
49796
 
 
49797
    return true;
 
49798
}
 
49799
 
 
49800
//---------------------------------------------------------------------
 
49801
bool ColladaParserAutoGen15Private::_preEnd__int4x2()
 
49802
{
 
49803
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49804
    if ( mValidate )
 
49805
    {
 
49806
 
 
49807
        bool validationResult = _validateEnd__int4x2();
 
49808
        if ( !validationResult ) return false;
 
49809
 
 
49810
    } // validation
 
49811
#endif
 
49812
 
 
49813
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49814
    if ( mValidate )
 
49815
    {
 
49816
        int4x2__ValidationData* validationData = (int4x2__ValidationData*)mValidationDataStack.top();
 
49817
        DISABLE_WARNING_UNUSED(validationData)
 
49818
bool returnValue = sint64DataEnd( &ColladaParserAutoGen15::data__int4x2, &validate__int4x2_type__streamEnd, &validationData->validationWholeSize, 0 );
 
49819
        ParserError::ErrorType simpleTypeValidationResult = validate__int4x2_type(0, (*(&validationData->validationWholeSize)));
 
49820
        mValidationDataStack.deleteObject();
 
49821
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
49822
        {
 
49823
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
49824
                simpleTypeValidationResult,
 
49825
                HASH_ELEMENT_INT4X2,
 
49826
                (ParserChar*)0, 0 ) )
 
49827
            {
 
49828
                return false;
 
49829
            }
 
49830
        }
 
49831
        return returnValue;
 
49832
    }
 
49833
    else
 
49834
    {
 
49835
return sint64DataEnd( &ColladaParserAutoGen15::data__int4x2 );
 
49836
    }
 
49837
#else
 
49838
    {
 
49839
return sint64DataEnd( &ColladaParserAutoGen15::data__int4x2 );
 
49840
    } // validation
 
49841
#endif
 
49842
 
 
49843
}
 
49844
 
 
49845
//---------------------------------------------------------------------
 
49846
bool ColladaParserAutoGen15Private::_freeAttributes__int4x2( void* attributeData )
 
49847
{
 
49848
    return true;
 
49849
}
 
49850
 
 
49851
//---------------------------------------------------------------------
 
49852
bool ColladaParserAutoGen15Private::_data__int4x3( const ParserChar* text, size_t textLength )
 
49853
{
 
49854
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49855
    if ( mValidate )
 
49856
    {
 
49857
        int4x3__ValidationData* validationData = (int4x3__ValidationData*)mValidationDataStack.top();
 
49858
        DISABLE_WARNING_UNUSED(validationData)
 
49859
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int4x3, &validate__int4x3_type__stream, &validationData->validationWholeSize, 0);
 
49860
    }
 
49861
    else
 
49862
    {
 
49863
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int4x3);
 
49864
    }
 
49865
#else
 
49866
    {
 
49867
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int4x3);
 
49868
    } // validation
 
49869
#endif
 
49870
 
 
49871
}
 
49872
 
 
49873
//---------------------------------------------------------------------
 
49874
bool ColladaParserAutoGen15Private::_preBegin__int4x3( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
49875
{
 
49876
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49877
    if ( mValidate )
 
49878
    {
 
49879
 
 
49880
        bool validationResult = _validateBegin__int4x3( attributes, attributeDataPtr, validationDataPtr );
 
49881
        if ( !validationResult ) return false;
 
49882
 
 
49883
    } // validation
 
49884
#endif
 
49885
 
 
49886
    return true;
 
49887
}
 
49888
 
 
49889
//---------------------------------------------------------------------
 
49890
bool ColladaParserAutoGen15Private::_preEnd__int4x3()
 
49891
{
 
49892
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49893
    if ( mValidate )
 
49894
    {
 
49895
 
 
49896
        bool validationResult = _validateEnd__int4x3();
 
49897
        if ( !validationResult ) return false;
 
49898
 
 
49899
    } // validation
 
49900
#endif
 
49901
 
 
49902
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49903
    if ( mValidate )
 
49904
    {
 
49905
        int4x3__ValidationData* validationData = (int4x3__ValidationData*)mValidationDataStack.top();
 
49906
        DISABLE_WARNING_UNUSED(validationData)
 
49907
bool returnValue = sint64DataEnd( &ColladaParserAutoGen15::data__int4x3, &validate__int4x3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
49908
        ParserError::ErrorType simpleTypeValidationResult = validate__int4x3_type(0, (*(&validationData->validationWholeSize)));
 
49909
        mValidationDataStack.deleteObject();
 
49910
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
49911
        {
 
49912
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
49913
                simpleTypeValidationResult,
 
49914
                HASH_ELEMENT_INT4X3,
 
49915
                (ParserChar*)0, 0 ) )
 
49916
            {
 
49917
                return false;
 
49918
            }
 
49919
        }
 
49920
        return returnValue;
 
49921
    }
 
49922
    else
 
49923
    {
 
49924
return sint64DataEnd( &ColladaParserAutoGen15::data__int4x3 );
 
49925
    }
 
49926
#else
 
49927
    {
 
49928
return sint64DataEnd( &ColladaParserAutoGen15::data__int4x3 );
 
49929
    } // validation
 
49930
#endif
 
49931
 
 
49932
}
 
49933
 
 
49934
//---------------------------------------------------------------------
 
49935
bool ColladaParserAutoGen15Private::_freeAttributes__int4x3( void* attributeData )
 
49936
{
 
49937
    return true;
 
49938
}
 
49939
 
 
49940
//---------------------------------------------------------------------
 
49941
bool ColladaParserAutoGen15Private::_data__int4x4( const ParserChar* text, size_t textLength )
 
49942
{
 
49943
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49944
    if ( mValidate )
 
49945
    {
 
49946
        int4x4__ValidationData* validationData = (int4x4__ValidationData*)mValidationDataStack.top();
 
49947
        DISABLE_WARNING_UNUSED(validationData)
 
49948
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int4x4, &validate__int4x4_type__stream, &validationData->validationWholeSize, 0);
 
49949
    }
 
49950
    else
 
49951
    {
 
49952
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int4x4);
 
49953
    }
 
49954
#else
 
49955
    {
 
49956
return characterData2Sint64Data(text, textLength, &ColladaParserAutoGen15::data__int4x4);
 
49957
    } // validation
 
49958
#endif
 
49959
 
 
49960
}
 
49961
 
 
49962
//---------------------------------------------------------------------
 
49963
bool ColladaParserAutoGen15Private::_preBegin__int4x4( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
49964
{
 
49965
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49966
    if ( mValidate )
 
49967
    {
 
49968
 
 
49969
        bool validationResult = _validateBegin__int4x4( attributes, attributeDataPtr, validationDataPtr );
 
49970
        if ( !validationResult ) return false;
 
49971
 
 
49972
    } // validation
 
49973
#endif
 
49974
 
 
49975
    return true;
 
49976
}
 
49977
 
 
49978
//---------------------------------------------------------------------
 
49979
bool ColladaParserAutoGen15Private::_preEnd__int4x4()
 
49980
{
 
49981
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49982
    if ( mValidate )
 
49983
    {
 
49984
 
 
49985
        bool validationResult = _validateEnd__int4x4();
 
49986
        if ( !validationResult ) return false;
 
49987
 
 
49988
    } // validation
 
49989
#endif
 
49990
 
 
49991
#ifdef GENERATEDSAXPARSER_VALIDATION
 
49992
    if ( mValidate )
 
49993
    {
 
49994
        int4x4__ValidationData* validationData = (int4x4__ValidationData*)mValidationDataStack.top();
 
49995
        DISABLE_WARNING_UNUSED(validationData)
 
49996
bool returnValue = sint64DataEnd( &ColladaParserAutoGen15::data__int4x4, &validate__int4x4_type__streamEnd, &validationData->validationWholeSize, 0 );
 
49997
        ParserError::ErrorType simpleTypeValidationResult = validate__int4x4_type(0, (*(&validationData->validationWholeSize)));
 
49998
        mValidationDataStack.deleteObject();
 
49999
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
50000
        {
 
50001
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
50002
                simpleTypeValidationResult,
 
50003
                HASH_ELEMENT_INT4X4,
 
50004
                (ParserChar*)0, 0 ) )
 
50005
            {
 
50006
                return false;
 
50007
            }
 
50008
        }
 
50009
        return returnValue;
 
50010
    }
 
50011
    else
 
50012
    {
 
50013
return sint64DataEnd( &ColladaParserAutoGen15::data__int4x4 );
 
50014
    }
 
50015
#else
 
50016
    {
 
50017
return sint64DataEnd( &ColladaParserAutoGen15::data__int4x4 );
 
50018
    } // validation
 
50019
#endif
 
50020
 
 
50021
}
 
50022
 
 
50023
//---------------------------------------------------------------------
 
50024
bool ColladaParserAutoGen15Private::_freeAttributes__int4x4( void* attributeData )
 
50025
{
 
50026
    return true;
 
50027
}
 
50028
 
 
50029
//---------------------------------------------------------------------
 
50030
bool ColladaParserAutoGen15Private::_data__half( const ParserChar* text, size_t textLength )
 
50031
{
 
50032
if (!mLastIncompleteFragmentInCharacterData)
 
50033
{
 
50034
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
50035
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
50036
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
50037
}
 
50038
else
 
50039
{
 
50040
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
50041
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
50042
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
50043
        mLastIncompleteFragmentInCharacterData = tmp;
 
50044
    }
 
50045
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
50046
    mEndOfDataInCurrentObjectOnStack += textLength;
 
50047
}
 
50048
return true;
 
50049
}
 
50050
 
 
50051
//---------------------------------------------------------------------
 
50052
bool ColladaParserAutoGen15Private::_preBegin__half( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
50053
{
 
50054
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50055
    if ( mValidate )
 
50056
    {
 
50057
 
 
50058
        bool validationResult = _validateBegin__half( attributes, attributeDataPtr, validationDataPtr );
 
50059
        if ( !validationResult ) return false;
 
50060
 
 
50061
    } // validation
 
50062
#endif
 
50063
 
 
50064
    return true;
 
50065
}
 
50066
 
 
50067
//---------------------------------------------------------------------
 
50068
bool ColladaParserAutoGen15Private::_preEnd__half()
 
50069
{
 
50070
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50071
    if ( mValidate )
 
50072
    {
 
50073
 
 
50074
        bool validationResult = _validateEnd__half();
 
50075
        if ( !validationResult ) return false;
 
50076
 
 
50077
    } // validation
 
50078
#endif
 
50079
 
 
50080
bool failed;
 
50081
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
50082
DISABLE_WARNING_UNUSED(ptrForErr)
 
50083
float parameter = GeneratedSaxParser::Utils::toFloat((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
50084
bool returnValue;
 
50085
if (!failed)
 
50086
{
 
50087
    returnValue = mImpl->data__half(parameter);
 
50088
}
 
50089
else
 
50090
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_HALF, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
50091
if (mLastIncompleteFragmentInCharacterData)
 
50092
    mStackMemoryManager.deleteObject();
 
50093
mLastIncompleteFragmentInCharacterData = 0;
 
50094
mEndOfDataInCurrentObjectOnStack = 0;
 
50095
return returnValue;
 
50096
}
 
50097
 
 
50098
//---------------------------------------------------------------------
 
50099
bool ColladaParserAutoGen15Private::_freeAttributes__half( void* attributeData )
 
50100
{
 
50101
    return true;
 
50102
}
 
50103
 
 
50104
//---------------------------------------------------------------------
 
50105
bool ColladaParserAutoGen15Private::_data__half2( const ParserChar* text, size_t textLength )
 
50106
{
 
50107
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50108
    if ( mValidate )
 
50109
    {
 
50110
        radius____float2_type__ValidationData* validationData = (radius____float2_type__ValidationData*)mValidationDataStack.top();
 
50111
        DISABLE_WARNING_UNUSED(validationData)
 
50112
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half2, &validate__float2_type__stream, &validationData->validationWholeSize, 0);
 
50113
    }
 
50114
    else
 
50115
    {
 
50116
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half2);
 
50117
    }
 
50118
#else
 
50119
    {
 
50120
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half2);
 
50121
    } // validation
 
50122
#endif
 
50123
 
 
50124
}
 
50125
 
 
50126
//---------------------------------------------------------------------
 
50127
bool ColladaParserAutoGen15Private::_preBegin__half2( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
50128
{
 
50129
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50130
    if ( mValidate )
 
50131
    {
 
50132
 
 
50133
        bool validationResult = _validateBegin__half2( attributes, attributeDataPtr, validationDataPtr );
 
50134
        if ( !validationResult ) return false;
 
50135
 
 
50136
    } // validation
 
50137
#endif
 
50138
 
 
50139
    return true;
 
50140
}
 
50141
 
 
50142
//---------------------------------------------------------------------
 
50143
bool ColladaParserAutoGen15Private::_preEnd__half2()
 
50144
{
 
50145
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50146
    if ( mValidate )
 
50147
    {
 
50148
 
 
50149
        bool validationResult = _validateEnd__half2();
 
50150
        if ( !validationResult ) return false;
 
50151
 
 
50152
    } // validation
 
50153
#endif
 
50154
 
 
50155
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50156
    if ( mValidate )
 
50157
    {
 
50158
        radius____float2_type__ValidationData* validationData = (radius____float2_type__ValidationData*)mValidationDataStack.top();
 
50159
        DISABLE_WARNING_UNUSED(validationData)
 
50160
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__half2, &validate__float2_type__streamEnd, &validationData->validationWholeSize, 0 );
 
50161
        ParserError::ErrorType simpleTypeValidationResult = validate__float2_type(0, (*(&validationData->validationWholeSize)));
 
50162
        mValidationDataStack.deleteObject();
 
50163
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
50164
        {
 
50165
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
50166
                simpleTypeValidationResult,
 
50167
                HASH_ELEMENT_HALF2,
 
50168
                (ParserChar*)0, 0 ) )
 
50169
            {
 
50170
                return false;
 
50171
            }
 
50172
        }
 
50173
        return returnValue;
 
50174
    }
 
50175
    else
 
50176
    {
 
50177
return floatDataEnd( &ColladaParserAutoGen15::data__half2 );
 
50178
    }
 
50179
#else
 
50180
    {
 
50181
return floatDataEnd( &ColladaParserAutoGen15::data__half2 );
 
50182
    } // validation
 
50183
#endif
 
50184
 
 
50185
}
 
50186
 
 
50187
//---------------------------------------------------------------------
 
50188
bool ColladaParserAutoGen15Private::_freeAttributes__half2( void* attributeData )
 
50189
{
 
50190
    return true;
 
50191
}
 
50192
 
 
50193
//---------------------------------------------------------------------
 
50194
bool ColladaParserAutoGen15Private::_data__half3( const ParserChar* text, size_t textLength )
 
50195
{
 
50196
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50197
    if ( mValidate )
 
50198
    {
 
50199
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
50200
        DISABLE_WARNING_UNUSED(validationData)
 
50201
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half3, &validate__float3_type__stream, &validationData->validationWholeSize, 0);
 
50202
    }
 
50203
    else
 
50204
    {
 
50205
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half3);
 
50206
    }
 
50207
#else
 
50208
    {
 
50209
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half3);
 
50210
    } // validation
 
50211
#endif
 
50212
 
 
50213
}
 
50214
 
 
50215
//---------------------------------------------------------------------
 
50216
bool ColladaParserAutoGen15Private::_preBegin__half3( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
50217
{
 
50218
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50219
    if ( mValidate )
 
50220
    {
 
50221
 
 
50222
        bool validationResult = _validateBegin__half3( attributes, attributeDataPtr, validationDataPtr );
 
50223
        if ( !validationResult ) return false;
 
50224
 
 
50225
    } // validation
 
50226
#endif
 
50227
 
 
50228
    return true;
 
50229
}
 
50230
 
 
50231
//---------------------------------------------------------------------
 
50232
bool ColladaParserAutoGen15Private::_preEnd__half3()
 
50233
{
 
50234
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50235
    if ( mValidate )
 
50236
    {
 
50237
 
 
50238
        bool validationResult = _validateEnd__half3();
 
50239
        if ( !validationResult ) return false;
 
50240
 
 
50241
    } // validation
 
50242
#endif
 
50243
 
 
50244
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50245
    if ( mValidate )
 
50246
    {
 
50247
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
50248
        DISABLE_WARNING_UNUSED(validationData)
 
50249
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__half3, &validate__float3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
50250
        ParserError::ErrorType simpleTypeValidationResult = validate__float3_type(0, (*(&validationData->validationWholeSize)));
 
50251
        mValidationDataStack.deleteObject();
 
50252
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
50253
        {
 
50254
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
50255
                simpleTypeValidationResult,
 
50256
                HASH_ELEMENT_HALF3,
 
50257
                (ParserChar*)0, 0 ) )
 
50258
            {
 
50259
                return false;
 
50260
            }
 
50261
        }
 
50262
        return returnValue;
 
50263
    }
 
50264
    else
 
50265
    {
 
50266
return floatDataEnd( &ColladaParserAutoGen15::data__half3 );
 
50267
    }
 
50268
#else
 
50269
    {
 
50270
return floatDataEnd( &ColladaParserAutoGen15::data__half3 );
 
50271
    } // validation
 
50272
#endif
 
50273
 
 
50274
}
 
50275
 
 
50276
//---------------------------------------------------------------------
 
50277
bool ColladaParserAutoGen15Private::_freeAttributes__half3( void* attributeData )
 
50278
{
 
50279
    return true;
 
50280
}
 
50281
 
 
50282
//---------------------------------------------------------------------
 
50283
bool ColladaParserAutoGen15Private::_data__half4( const ParserChar* text, size_t textLength )
 
50284
{
 
50285
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50286
    if ( mValidate )
 
50287
    {
 
50288
        orient__ValidationData* validationData = (orient__ValidationData*)mValidationDataStack.top();
 
50289
        DISABLE_WARNING_UNUSED(validationData)
 
50290
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half4, &validate__float4_type__stream, &validationData->validationWholeSize, 0);
 
50291
    }
 
50292
    else
 
50293
    {
 
50294
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half4);
 
50295
    }
 
50296
#else
 
50297
    {
 
50298
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half4);
 
50299
    } // validation
 
50300
#endif
 
50301
 
 
50302
}
 
50303
 
 
50304
//---------------------------------------------------------------------
 
50305
bool ColladaParserAutoGen15Private::_preBegin__half4( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
50306
{
 
50307
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50308
    if ( mValidate )
 
50309
    {
 
50310
 
 
50311
        bool validationResult = _validateBegin__half4( attributes, attributeDataPtr, validationDataPtr );
 
50312
        if ( !validationResult ) return false;
 
50313
 
 
50314
    } // validation
 
50315
#endif
 
50316
 
 
50317
    return true;
 
50318
}
 
50319
 
 
50320
//---------------------------------------------------------------------
 
50321
bool ColladaParserAutoGen15Private::_preEnd__half4()
 
50322
{
 
50323
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50324
    if ( mValidate )
 
50325
    {
 
50326
 
 
50327
        bool validationResult = _validateEnd__half4();
 
50328
        if ( !validationResult ) return false;
 
50329
 
 
50330
    } // validation
 
50331
#endif
 
50332
 
 
50333
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50334
    if ( mValidate )
 
50335
    {
 
50336
        orient__ValidationData* validationData = (orient__ValidationData*)mValidationDataStack.top();
 
50337
        DISABLE_WARNING_UNUSED(validationData)
 
50338
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__half4, &validate__float4_type__streamEnd, &validationData->validationWholeSize, 0 );
 
50339
        ParserError::ErrorType simpleTypeValidationResult = validate__float4_type(0, (*(&validationData->validationWholeSize)));
 
50340
        mValidationDataStack.deleteObject();
 
50341
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
50342
        {
 
50343
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
50344
                simpleTypeValidationResult,
 
50345
                HASH_ELEMENT_HALF4,
 
50346
                (ParserChar*)0, 0 ) )
 
50347
            {
 
50348
                return false;
 
50349
            }
 
50350
        }
 
50351
        return returnValue;
 
50352
    }
 
50353
    else
 
50354
    {
 
50355
return floatDataEnd( &ColladaParserAutoGen15::data__half4 );
 
50356
    }
 
50357
#else
 
50358
    {
 
50359
return floatDataEnd( &ColladaParserAutoGen15::data__half4 );
 
50360
    } // validation
 
50361
#endif
 
50362
 
 
50363
}
 
50364
 
 
50365
//---------------------------------------------------------------------
 
50366
bool ColladaParserAutoGen15Private::_freeAttributes__half4( void* attributeData )
 
50367
{
 
50368
    return true;
 
50369
}
 
50370
 
 
50371
//---------------------------------------------------------------------
 
50372
bool ColladaParserAutoGen15Private::_data__half2x1( const ParserChar* text, size_t textLength )
 
50373
{
 
50374
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50375
    if ( mValidate )
 
50376
    {
 
50377
        radius____float2_type__ValidationData* validationData = (radius____float2_type__ValidationData*)mValidationDataStack.top();
 
50378
        DISABLE_WARNING_UNUSED(validationData)
 
50379
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half2x1, &validate__float2_type__stream, &validationData->validationWholeSize, 0);
 
50380
    }
 
50381
    else
 
50382
    {
 
50383
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half2x1);
 
50384
    }
 
50385
#else
 
50386
    {
 
50387
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half2x1);
 
50388
    } // validation
 
50389
#endif
 
50390
 
 
50391
}
 
50392
 
 
50393
//---------------------------------------------------------------------
 
50394
bool ColladaParserAutoGen15Private::_preBegin__half2x1( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
50395
{
 
50396
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50397
    if ( mValidate )
 
50398
    {
 
50399
 
 
50400
        bool validationResult = _validateBegin__half2x1( attributes, attributeDataPtr, validationDataPtr );
 
50401
        if ( !validationResult ) return false;
 
50402
 
 
50403
    } // validation
 
50404
#endif
 
50405
 
 
50406
    return true;
 
50407
}
 
50408
 
 
50409
//---------------------------------------------------------------------
 
50410
bool ColladaParserAutoGen15Private::_preEnd__half2x1()
 
50411
{
 
50412
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50413
    if ( mValidate )
 
50414
    {
 
50415
 
 
50416
        bool validationResult = _validateEnd__half2x1();
 
50417
        if ( !validationResult ) return false;
 
50418
 
 
50419
    } // validation
 
50420
#endif
 
50421
 
 
50422
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50423
    if ( mValidate )
 
50424
    {
 
50425
        radius____float2_type__ValidationData* validationData = (radius____float2_type__ValidationData*)mValidationDataStack.top();
 
50426
        DISABLE_WARNING_UNUSED(validationData)
 
50427
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__half2x1, &validate__float2_type__streamEnd, &validationData->validationWholeSize, 0 );
 
50428
        ParserError::ErrorType simpleTypeValidationResult = validate__float2_type(0, (*(&validationData->validationWholeSize)));
 
50429
        mValidationDataStack.deleteObject();
 
50430
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
50431
        {
 
50432
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
50433
                simpleTypeValidationResult,
 
50434
                HASH_ELEMENT_HALF2X1,
 
50435
                (ParserChar*)0, 0 ) )
 
50436
            {
 
50437
                return false;
 
50438
            }
 
50439
        }
 
50440
        return returnValue;
 
50441
    }
 
50442
    else
 
50443
    {
 
50444
return floatDataEnd( &ColladaParserAutoGen15::data__half2x1 );
 
50445
    }
 
50446
#else
 
50447
    {
 
50448
return floatDataEnd( &ColladaParserAutoGen15::data__half2x1 );
 
50449
    } // validation
 
50450
#endif
 
50451
 
 
50452
}
 
50453
 
 
50454
//---------------------------------------------------------------------
 
50455
bool ColladaParserAutoGen15Private::_freeAttributes__half2x1( void* attributeData )
 
50456
{
 
50457
    return true;
 
50458
}
 
50459
 
 
50460
//---------------------------------------------------------------------
 
50461
bool ColladaParserAutoGen15Private::_data__half2x2( const ParserChar* text, size_t textLength )
 
50462
{
 
50463
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50464
    if ( mValidate )
 
50465
    {
 
50466
        float2x2__ValidationData* validationData = (float2x2__ValidationData*)mValidationDataStack.top();
 
50467
        DISABLE_WARNING_UNUSED(validationData)
 
50468
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half2x2, &validate__float2x2_type__stream, &validationData->validationWholeSize, 0);
 
50469
    }
 
50470
    else
 
50471
    {
 
50472
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half2x2);
 
50473
    }
 
50474
#else
 
50475
    {
 
50476
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half2x2);
 
50477
    } // validation
 
50478
#endif
 
50479
 
 
50480
}
 
50481
 
 
50482
//---------------------------------------------------------------------
 
50483
bool ColladaParserAutoGen15Private::_preBegin__half2x2( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
50484
{
 
50485
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50486
    if ( mValidate )
 
50487
    {
 
50488
 
 
50489
        bool validationResult = _validateBegin__half2x2( attributes, attributeDataPtr, validationDataPtr );
 
50490
        if ( !validationResult ) return false;
 
50491
 
 
50492
    } // validation
 
50493
#endif
 
50494
 
 
50495
    return true;
 
50496
}
 
50497
 
 
50498
//---------------------------------------------------------------------
 
50499
bool ColladaParserAutoGen15Private::_preEnd__half2x2()
 
50500
{
 
50501
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50502
    if ( mValidate )
 
50503
    {
 
50504
 
 
50505
        bool validationResult = _validateEnd__half2x2();
 
50506
        if ( !validationResult ) return false;
 
50507
 
 
50508
    } // validation
 
50509
#endif
 
50510
 
 
50511
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50512
    if ( mValidate )
 
50513
    {
 
50514
        float2x2__ValidationData* validationData = (float2x2__ValidationData*)mValidationDataStack.top();
 
50515
        DISABLE_WARNING_UNUSED(validationData)
 
50516
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__half2x2, &validate__float2x2_type__streamEnd, &validationData->validationWholeSize, 0 );
 
50517
        ParserError::ErrorType simpleTypeValidationResult = validate__float2x2_type(0, (*(&validationData->validationWholeSize)));
 
50518
        mValidationDataStack.deleteObject();
 
50519
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
50520
        {
 
50521
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
50522
                simpleTypeValidationResult,
 
50523
                HASH_ELEMENT_HALF2X2,
 
50524
                (ParserChar*)0, 0 ) )
 
50525
            {
 
50526
                return false;
 
50527
            }
 
50528
        }
 
50529
        return returnValue;
 
50530
    }
 
50531
    else
 
50532
    {
 
50533
return floatDataEnd( &ColladaParserAutoGen15::data__half2x2 );
 
50534
    }
 
50535
#else
 
50536
    {
 
50537
return floatDataEnd( &ColladaParserAutoGen15::data__half2x2 );
 
50538
    } // validation
 
50539
#endif
 
50540
 
 
50541
}
 
50542
 
 
50543
//---------------------------------------------------------------------
 
50544
bool ColladaParserAutoGen15Private::_freeAttributes__half2x2( void* attributeData )
 
50545
{
 
50546
    return true;
 
50547
}
 
50548
 
 
50549
//---------------------------------------------------------------------
 
50550
bool ColladaParserAutoGen15Private::_data__half2x3( const ParserChar* text, size_t textLength )
 
50551
{
 
50552
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50553
    if ( mValidate )
 
50554
    {
 
50555
        float2x3__ValidationData* validationData = (float2x3__ValidationData*)mValidationDataStack.top();
 
50556
        DISABLE_WARNING_UNUSED(validationData)
 
50557
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half2x3, &validate__float2x3_type__stream, &validationData->validationWholeSize, 0);
 
50558
    }
 
50559
    else
 
50560
    {
 
50561
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half2x3);
 
50562
    }
 
50563
#else
 
50564
    {
 
50565
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half2x3);
 
50566
    } // validation
 
50567
#endif
 
50568
 
 
50569
}
 
50570
 
 
50571
//---------------------------------------------------------------------
 
50572
bool ColladaParserAutoGen15Private::_preBegin__half2x3( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
50573
{
 
50574
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50575
    if ( mValidate )
 
50576
    {
 
50577
 
 
50578
        bool validationResult = _validateBegin__half2x3( attributes, attributeDataPtr, validationDataPtr );
 
50579
        if ( !validationResult ) return false;
 
50580
 
 
50581
    } // validation
 
50582
#endif
 
50583
 
 
50584
    return true;
 
50585
}
 
50586
 
 
50587
//---------------------------------------------------------------------
 
50588
bool ColladaParserAutoGen15Private::_preEnd__half2x3()
 
50589
{
 
50590
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50591
    if ( mValidate )
 
50592
    {
 
50593
 
 
50594
        bool validationResult = _validateEnd__half2x3();
 
50595
        if ( !validationResult ) return false;
 
50596
 
 
50597
    } // validation
 
50598
#endif
 
50599
 
 
50600
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50601
    if ( mValidate )
 
50602
    {
 
50603
        float2x3__ValidationData* validationData = (float2x3__ValidationData*)mValidationDataStack.top();
 
50604
        DISABLE_WARNING_UNUSED(validationData)
 
50605
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__half2x3, &validate__float2x3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
50606
        ParserError::ErrorType simpleTypeValidationResult = validate__float2x3_type(0, (*(&validationData->validationWholeSize)));
 
50607
        mValidationDataStack.deleteObject();
 
50608
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
50609
        {
 
50610
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
50611
                simpleTypeValidationResult,
 
50612
                HASH_ELEMENT_HALF2X3,
 
50613
                (ParserChar*)0, 0 ) )
 
50614
            {
 
50615
                return false;
 
50616
            }
 
50617
        }
 
50618
        return returnValue;
 
50619
    }
 
50620
    else
 
50621
    {
 
50622
return floatDataEnd( &ColladaParserAutoGen15::data__half2x3 );
 
50623
    }
 
50624
#else
 
50625
    {
 
50626
return floatDataEnd( &ColladaParserAutoGen15::data__half2x3 );
 
50627
    } // validation
 
50628
#endif
 
50629
 
 
50630
}
 
50631
 
 
50632
//---------------------------------------------------------------------
 
50633
bool ColladaParserAutoGen15Private::_freeAttributes__half2x3( void* attributeData )
 
50634
{
 
50635
    return true;
 
50636
}
 
50637
 
 
50638
//---------------------------------------------------------------------
 
50639
bool ColladaParserAutoGen15Private::_data__half2x4( const ParserChar* text, size_t textLength )
 
50640
{
 
50641
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50642
    if ( mValidate )
 
50643
    {
 
50644
        float2x4__ValidationData* validationData = (float2x4__ValidationData*)mValidationDataStack.top();
 
50645
        DISABLE_WARNING_UNUSED(validationData)
 
50646
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half2x4, &validate__float2x4_type__stream, &validationData->validationWholeSize, 0);
 
50647
    }
 
50648
    else
 
50649
    {
 
50650
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half2x4);
 
50651
    }
 
50652
#else
 
50653
    {
 
50654
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half2x4);
 
50655
    } // validation
 
50656
#endif
 
50657
 
 
50658
}
 
50659
 
 
50660
//---------------------------------------------------------------------
 
50661
bool ColladaParserAutoGen15Private::_preBegin__half2x4( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
50662
{
 
50663
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50664
    if ( mValidate )
 
50665
    {
 
50666
 
 
50667
        bool validationResult = _validateBegin__half2x4( attributes, attributeDataPtr, validationDataPtr );
 
50668
        if ( !validationResult ) return false;
 
50669
 
 
50670
    } // validation
 
50671
#endif
 
50672
 
 
50673
    return true;
 
50674
}
 
50675
 
 
50676
//---------------------------------------------------------------------
 
50677
bool ColladaParserAutoGen15Private::_preEnd__half2x4()
 
50678
{
 
50679
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50680
    if ( mValidate )
 
50681
    {
 
50682
 
 
50683
        bool validationResult = _validateEnd__half2x4();
 
50684
        if ( !validationResult ) return false;
 
50685
 
 
50686
    } // validation
 
50687
#endif
 
50688
 
 
50689
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50690
    if ( mValidate )
 
50691
    {
 
50692
        float2x4__ValidationData* validationData = (float2x4__ValidationData*)mValidationDataStack.top();
 
50693
        DISABLE_WARNING_UNUSED(validationData)
 
50694
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__half2x4, &validate__float2x4_type__streamEnd, &validationData->validationWholeSize, 0 );
 
50695
        ParserError::ErrorType simpleTypeValidationResult = validate__float2x4_type(0, (*(&validationData->validationWholeSize)));
 
50696
        mValidationDataStack.deleteObject();
 
50697
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
50698
        {
 
50699
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
50700
                simpleTypeValidationResult,
 
50701
                HASH_ELEMENT_HALF2X4,
 
50702
                (ParserChar*)0, 0 ) )
 
50703
            {
 
50704
                return false;
 
50705
            }
 
50706
        }
 
50707
        return returnValue;
 
50708
    }
 
50709
    else
 
50710
    {
 
50711
return floatDataEnd( &ColladaParserAutoGen15::data__half2x4 );
 
50712
    }
 
50713
#else
 
50714
    {
 
50715
return floatDataEnd( &ColladaParserAutoGen15::data__half2x4 );
 
50716
    } // validation
 
50717
#endif
 
50718
 
 
50719
}
 
50720
 
 
50721
//---------------------------------------------------------------------
 
50722
bool ColladaParserAutoGen15Private::_freeAttributes__half2x4( void* attributeData )
 
50723
{
 
50724
    return true;
 
50725
}
 
50726
 
 
50727
//---------------------------------------------------------------------
 
50728
bool ColladaParserAutoGen15Private::_data__half3x1( const ParserChar* text, size_t textLength )
 
50729
{
 
50730
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50731
    if ( mValidate )
 
50732
    {
 
50733
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
50734
        DISABLE_WARNING_UNUSED(validationData)
 
50735
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half3x1, &validate__float3_type__stream, &validationData->validationWholeSize, 0);
 
50736
    }
 
50737
    else
 
50738
    {
 
50739
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half3x1);
 
50740
    }
 
50741
#else
 
50742
    {
 
50743
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half3x1);
 
50744
    } // validation
 
50745
#endif
 
50746
 
 
50747
}
 
50748
 
 
50749
//---------------------------------------------------------------------
 
50750
bool ColladaParserAutoGen15Private::_preBegin__half3x1( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
50751
{
 
50752
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50753
    if ( mValidate )
 
50754
    {
 
50755
 
 
50756
        bool validationResult = _validateBegin__half3x1( attributes, attributeDataPtr, validationDataPtr );
 
50757
        if ( !validationResult ) return false;
 
50758
 
 
50759
    } // validation
 
50760
#endif
 
50761
 
 
50762
    return true;
 
50763
}
 
50764
 
 
50765
//---------------------------------------------------------------------
 
50766
bool ColladaParserAutoGen15Private::_preEnd__half3x1()
 
50767
{
 
50768
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50769
    if ( mValidate )
 
50770
    {
 
50771
 
 
50772
        bool validationResult = _validateEnd__half3x1();
 
50773
        if ( !validationResult ) return false;
 
50774
 
 
50775
    } // validation
 
50776
#endif
 
50777
 
 
50778
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50779
    if ( mValidate )
 
50780
    {
 
50781
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
50782
        DISABLE_WARNING_UNUSED(validationData)
 
50783
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__half3x1, &validate__float3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
50784
        ParserError::ErrorType simpleTypeValidationResult = validate__float3_type(0, (*(&validationData->validationWholeSize)));
 
50785
        mValidationDataStack.deleteObject();
 
50786
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
50787
        {
 
50788
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
50789
                simpleTypeValidationResult,
 
50790
                HASH_ELEMENT_HALF3X1,
 
50791
                (ParserChar*)0, 0 ) )
 
50792
            {
 
50793
                return false;
 
50794
            }
 
50795
        }
 
50796
        return returnValue;
 
50797
    }
 
50798
    else
 
50799
    {
 
50800
return floatDataEnd( &ColladaParserAutoGen15::data__half3x1 );
 
50801
    }
 
50802
#else
 
50803
    {
 
50804
return floatDataEnd( &ColladaParserAutoGen15::data__half3x1 );
 
50805
    } // validation
 
50806
#endif
 
50807
 
 
50808
}
 
50809
 
 
50810
//---------------------------------------------------------------------
 
50811
bool ColladaParserAutoGen15Private::_freeAttributes__half3x1( void* attributeData )
 
50812
{
 
50813
    return true;
 
50814
}
 
50815
 
 
50816
//---------------------------------------------------------------------
 
50817
bool ColladaParserAutoGen15Private::_data__half3x2( const ParserChar* text, size_t textLength )
 
50818
{
 
50819
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50820
    if ( mValidate )
 
50821
    {
 
50822
        float3x2__ValidationData* validationData = (float3x2__ValidationData*)mValidationDataStack.top();
 
50823
        DISABLE_WARNING_UNUSED(validationData)
 
50824
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half3x2, &validate__float3x2_type__stream, &validationData->validationWholeSize, 0);
 
50825
    }
 
50826
    else
 
50827
    {
 
50828
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half3x2);
 
50829
    }
 
50830
#else
 
50831
    {
 
50832
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half3x2);
 
50833
    } // validation
 
50834
#endif
 
50835
 
 
50836
}
 
50837
 
 
50838
//---------------------------------------------------------------------
 
50839
bool ColladaParserAutoGen15Private::_preBegin__half3x2( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
50840
{
 
50841
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50842
    if ( mValidate )
 
50843
    {
 
50844
 
 
50845
        bool validationResult = _validateBegin__half3x2( attributes, attributeDataPtr, validationDataPtr );
 
50846
        if ( !validationResult ) return false;
 
50847
 
 
50848
    } // validation
 
50849
#endif
 
50850
 
 
50851
    return true;
 
50852
}
 
50853
 
 
50854
//---------------------------------------------------------------------
 
50855
bool ColladaParserAutoGen15Private::_preEnd__half3x2()
 
50856
{
 
50857
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50858
    if ( mValidate )
 
50859
    {
 
50860
 
 
50861
        bool validationResult = _validateEnd__half3x2();
 
50862
        if ( !validationResult ) return false;
 
50863
 
 
50864
    } // validation
 
50865
#endif
 
50866
 
 
50867
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50868
    if ( mValidate )
 
50869
    {
 
50870
        float3x2__ValidationData* validationData = (float3x2__ValidationData*)mValidationDataStack.top();
 
50871
        DISABLE_WARNING_UNUSED(validationData)
 
50872
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__half3x2, &validate__float3x2_type__streamEnd, &validationData->validationWholeSize, 0 );
 
50873
        ParserError::ErrorType simpleTypeValidationResult = validate__float3x2_type(0, (*(&validationData->validationWholeSize)));
 
50874
        mValidationDataStack.deleteObject();
 
50875
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
50876
        {
 
50877
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
50878
                simpleTypeValidationResult,
 
50879
                HASH_ELEMENT_HALF3X2,
 
50880
                (ParserChar*)0, 0 ) )
 
50881
            {
 
50882
                return false;
 
50883
            }
 
50884
        }
 
50885
        return returnValue;
 
50886
    }
 
50887
    else
 
50888
    {
 
50889
return floatDataEnd( &ColladaParserAutoGen15::data__half3x2 );
 
50890
    }
 
50891
#else
 
50892
    {
 
50893
return floatDataEnd( &ColladaParserAutoGen15::data__half3x2 );
 
50894
    } // validation
 
50895
#endif
 
50896
 
 
50897
}
 
50898
 
 
50899
//---------------------------------------------------------------------
 
50900
bool ColladaParserAutoGen15Private::_freeAttributes__half3x2( void* attributeData )
 
50901
{
 
50902
    return true;
 
50903
}
 
50904
 
 
50905
//---------------------------------------------------------------------
 
50906
bool ColladaParserAutoGen15Private::_data__half3x3( const ParserChar* text, size_t textLength )
 
50907
{
 
50908
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50909
    if ( mValidate )
 
50910
    {
 
50911
        float3x3__ValidationData* validationData = (float3x3__ValidationData*)mValidationDataStack.top();
 
50912
        DISABLE_WARNING_UNUSED(validationData)
 
50913
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half3x3, &validate__float3x3_type__stream, &validationData->validationWholeSize, 0);
 
50914
    }
 
50915
    else
 
50916
    {
 
50917
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half3x3);
 
50918
    }
 
50919
#else
 
50920
    {
 
50921
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half3x3);
 
50922
    } // validation
 
50923
#endif
 
50924
 
 
50925
}
 
50926
 
 
50927
//---------------------------------------------------------------------
 
50928
bool ColladaParserAutoGen15Private::_preBegin__half3x3( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
50929
{
 
50930
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50931
    if ( mValidate )
 
50932
    {
 
50933
 
 
50934
        bool validationResult = _validateBegin__half3x3( attributes, attributeDataPtr, validationDataPtr );
 
50935
        if ( !validationResult ) return false;
 
50936
 
 
50937
    } // validation
 
50938
#endif
 
50939
 
 
50940
    return true;
 
50941
}
 
50942
 
 
50943
//---------------------------------------------------------------------
 
50944
bool ColladaParserAutoGen15Private::_preEnd__half3x3()
 
50945
{
 
50946
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50947
    if ( mValidate )
 
50948
    {
 
50949
 
 
50950
        bool validationResult = _validateEnd__half3x3();
 
50951
        if ( !validationResult ) return false;
 
50952
 
 
50953
    } // validation
 
50954
#endif
 
50955
 
 
50956
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50957
    if ( mValidate )
 
50958
    {
 
50959
        float3x3__ValidationData* validationData = (float3x3__ValidationData*)mValidationDataStack.top();
 
50960
        DISABLE_WARNING_UNUSED(validationData)
 
50961
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__half3x3, &validate__float3x3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
50962
        ParserError::ErrorType simpleTypeValidationResult = validate__float3x3_type(0, (*(&validationData->validationWholeSize)));
 
50963
        mValidationDataStack.deleteObject();
 
50964
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
50965
        {
 
50966
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
50967
                simpleTypeValidationResult,
 
50968
                HASH_ELEMENT_HALF3X3,
 
50969
                (ParserChar*)0, 0 ) )
 
50970
            {
 
50971
                return false;
 
50972
            }
 
50973
        }
 
50974
        return returnValue;
 
50975
    }
 
50976
    else
 
50977
    {
 
50978
return floatDataEnd( &ColladaParserAutoGen15::data__half3x3 );
 
50979
    }
 
50980
#else
 
50981
    {
 
50982
return floatDataEnd( &ColladaParserAutoGen15::data__half3x3 );
 
50983
    } // validation
 
50984
#endif
 
50985
 
 
50986
}
 
50987
 
 
50988
//---------------------------------------------------------------------
 
50989
bool ColladaParserAutoGen15Private::_freeAttributes__half3x3( void* attributeData )
 
50990
{
 
50991
    return true;
 
50992
}
 
50993
 
 
50994
//---------------------------------------------------------------------
 
50995
bool ColladaParserAutoGen15Private::_data__half3x4( const ParserChar* text, size_t textLength )
 
50996
{
 
50997
#ifdef GENERATEDSAXPARSER_VALIDATION
 
50998
    if ( mValidate )
 
50999
    {
 
51000
        float3x4__ValidationData* validationData = (float3x4__ValidationData*)mValidationDataStack.top();
 
51001
        DISABLE_WARNING_UNUSED(validationData)
 
51002
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half3x4, &validate__float3x4_type__stream, &validationData->validationWholeSize, 0);
 
51003
    }
 
51004
    else
 
51005
    {
 
51006
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half3x4);
 
51007
    }
 
51008
#else
 
51009
    {
 
51010
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half3x4);
 
51011
    } // validation
 
51012
#endif
 
51013
 
 
51014
}
 
51015
 
 
51016
//---------------------------------------------------------------------
 
51017
bool ColladaParserAutoGen15Private::_preBegin__half3x4( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
51018
{
 
51019
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51020
    if ( mValidate )
 
51021
    {
 
51022
 
 
51023
        bool validationResult = _validateBegin__half3x4( attributes, attributeDataPtr, validationDataPtr );
 
51024
        if ( !validationResult ) return false;
 
51025
 
 
51026
    } // validation
 
51027
#endif
 
51028
 
 
51029
    return true;
 
51030
}
 
51031
 
 
51032
//---------------------------------------------------------------------
 
51033
bool ColladaParserAutoGen15Private::_preEnd__half3x4()
 
51034
{
 
51035
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51036
    if ( mValidate )
 
51037
    {
 
51038
 
 
51039
        bool validationResult = _validateEnd__half3x4();
 
51040
        if ( !validationResult ) return false;
 
51041
 
 
51042
    } // validation
 
51043
#endif
 
51044
 
 
51045
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51046
    if ( mValidate )
 
51047
    {
 
51048
        float3x4__ValidationData* validationData = (float3x4__ValidationData*)mValidationDataStack.top();
 
51049
        DISABLE_WARNING_UNUSED(validationData)
 
51050
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__half3x4, &validate__float3x4_type__streamEnd, &validationData->validationWholeSize, 0 );
 
51051
        ParserError::ErrorType simpleTypeValidationResult = validate__float3x4_type(0, (*(&validationData->validationWholeSize)));
 
51052
        mValidationDataStack.deleteObject();
 
51053
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
51054
        {
 
51055
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
51056
                simpleTypeValidationResult,
 
51057
                HASH_ELEMENT_HALF3X4,
 
51058
                (ParserChar*)0, 0 ) )
 
51059
            {
 
51060
                return false;
 
51061
            }
 
51062
        }
 
51063
        return returnValue;
 
51064
    }
 
51065
    else
 
51066
    {
 
51067
return floatDataEnd( &ColladaParserAutoGen15::data__half3x4 );
 
51068
    }
 
51069
#else
 
51070
    {
 
51071
return floatDataEnd( &ColladaParserAutoGen15::data__half3x4 );
 
51072
    } // validation
 
51073
#endif
 
51074
 
 
51075
}
 
51076
 
 
51077
//---------------------------------------------------------------------
 
51078
bool ColladaParserAutoGen15Private::_freeAttributes__half3x4( void* attributeData )
 
51079
{
 
51080
    return true;
 
51081
}
 
51082
 
 
51083
//---------------------------------------------------------------------
 
51084
bool ColladaParserAutoGen15Private::_data__half4x1( const ParserChar* text, size_t textLength )
 
51085
{
 
51086
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51087
    if ( mValidate )
 
51088
    {
 
51089
        orient__ValidationData* validationData = (orient__ValidationData*)mValidationDataStack.top();
 
51090
        DISABLE_WARNING_UNUSED(validationData)
 
51091
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half4x1, &validate__float4_type__stream, &validationData->validationWholeSize, 0);
 
51092
    }
 
51093
    else
 
51094
    {
 
51095
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half4x1);
 
51096
    }
 
51097
#else
 
51098
    {
 
51099
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half4x1);
 
51100
    } // validation
 
51101
#endif
 
51102
 
 
51103
}
 
51104
 
 
51105
//---------------------------------------------------------------------
 
51106
bool ColladaParserAutoGen15Private::_preBegin__half4x1( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
51107
{
 
51108
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51109
    if ( mValidate )
 
51110
    {
 
51111
 
 
51112
        bool validationResult = _validateBegin__half4x1( attributes, attributeDataPtr, validationDataPtr );
 
51113
        if ( !validationResult ) return false;
 
51114
 
 
51115
    } // validation
 
51116
#endif
 
51117
 
 
51118
    return true;
 
51119
}
 
51120
 
 
51121
//---------------------------------------------------------------------
 
51122
bool ColladaParserAutoGen15Private::_preEnd__half4x1()
 
51123
{
 
51124
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51125
    if ( mValidate )
 
51126
    {
 
51127
 
 
51128
        bool validationResult = _validateEnd__half4x1();
 
51129
        if ( !validationResult ) return false;
 
51130
 
 
51131
    } // validation
 
51132
#endif
 
51133
 
 
51134
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51135
    if ( mValidate )
 
51136
    {
 
51137
        orient__ValidationData* validationData = (orient__ValidationData*)mValidationDataStack.top();
 
51138
        DISABLE_WARNING_UNUSED(validationData)
 
51139
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__half4x1, &validate__float4_type__streamEnd, &validationData->validationWholeSize, 0 );
 
51140
        ParserError::ErrorType simpleTypeValidationResult = validate__float4_type(0, (*(&validationData->validationWholeSize)));
 
51141
        mValidationDataStack.deleteObject();
 
51142
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
51143
        {
 
51144
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
51145
                simpleTypeValidationResult,
 
51146
                HASH_ELEMENT_HALF4X1,
 
51147
                (ParserChar*)0, 0 ) )
 
51148
            {
 
51149
                return false;
 
51150
            }
 
51151
        }
 
51152
        return returnValue;
 
51153
    }
 
51154
    else
 
51155
    {
 
51156
return floatDataEnd( &ColladaParserAutoGen15::data__half4x1 );
 
51157
    }
 
51158
#else
 
51159
    {
 
51160
return floatDataEnd( &ColladaParserAutoGen15::data__half4x1 );
 
51161
    } // validation
 
51162
#endif
 
51163
 
 
51164
}
 
51165
 
 
51166
//---------------------------------------------------------------------
 
51167
bool ColladaParserAutoGen15Private::_freeAttributes__half4x1( void* attributeData )
 
51168
{
 
51169
    return true;
 
51170
}
 
51171
 
 
51172
//---------------------------------------------------------------------
 
51173
bool ColladaParserAutoGen15Private::_data__half4x2( const ParserChar* text, size_t textLength )
 
51174
{
 
51175
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51176
    if ( mValidate )
 
51177
    {
 
51178
        float4x2__ValidationData* validationData = (float4x2__ValidationData*)mValidationDataStack.top();
 
51179
        DISABLE_WARNING_UNUSED(validationData)
 
51180
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half4x2, &validate__float4x2_type__stream, &validationData->validationWholeSize, 0);
 
51181
    }
 
51182
    else
 
51183
    {
 
51184
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half4x2);
 
51185
    }
 
51186
#else
 
51187
    {
 
51188
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half4x2);
 
51189
    } // validation
 
51190
#endif
 
51191
 
 
51192
}
 
51193
 
 
51194
//---------------------------------------------------------------------
 
51195
bool ColladaParserAutoGen15Private::_preBegin__half4x2( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
51196
{
 
51197
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51198
    if ( mValidate )
 
51199
    {
 
51200
 
 
51201
        bool validationResult = _validateBegin__half4x2( attributes, attributeDataPtr, validationDataPtr );
 
51202
        if ( !validationResult ) return false;
 
51203
 
 
51204
    } // validation
 
51205
#endif
 
51206
 
 
51207
    return true;
 
51208
}
 
51209
 
 
51210
//---------------------------------------------------------------------
 
51211
bool ColladaParserAutoGen15Private::_preEnd__half4x2()
 
51212
{
 
51213
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51214
    if ( mValidate )
 
51215
    {
 
51216
 
 
51217
        bool validationResult = _validateEnd__half4x2();
 
51218
        if ( !validationResult ) return false;
 
51219
 
 
51220
    } // validation
 
51221
#endif
 
51222
 
 
51223
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51224
    if ( mValidate )
 
51225
    {
 
51226
        float4x2__ValidationData* validationData = (float4x2__ValidationData*)mValidationDataStack.top();
 
51227
        DISABLE_WARNING_UNUSED(validationData)
 
51228
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__half4x2, &validate__float4x2_type__streamEnd, &validationData->validationWholeSize, 0 );
 
51229
        ParserError::ErrorType simpleTypeValidationResult = validate__float4x2_type(0, (*(&validationData->validationWholeSize)));
 
51230
        mValidationDataStack.deleteObject();
 
51231
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
51232
        {
 
51233
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
51234
                simpleTypeValidationResult,
 
51235
                HASH_ELEMENT_HALF4X2,
 
51236
                (ParserChar*)0, 0 ) )
 
51237
            {
 
51238
                return false;
 
51239
            }
 
51240
        }
 
51241
        return returnValue;
 
51242
    }
 
51243
    else
 
51244
    {
 
51245
return floatDataEnd( &ColladaParserAutoGen15::data__half4x2 );
 
51246
    }
 
51247
#else
 
51248
    {
 
51249
return floatDataEnd( &ColladaParserAutoGen15::data__half4x2 );
 
51250
    } // validation
 
51251
#endif
 
51252
 
 
51253
}
 
51254
 
 
51255
//---------------------------------------------------------------------
 
51256
bool ColladaParserAutoGen15Private::_freeAttributes__half4x2( void* attributeData )
 
51257
{
 
51258
    return true;
 
51259
}
 
51260
 
 
51261
//---------------------------------------------------------------------
 
51262
bool ColladaParserAutoGen15Private::_data__half4x3( const ParserChar* text, size_t textLength )
 
51263
{
 
51264
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51265
    if ( mValidate )
 
51266
    {
 
51267
        float4x3__ValidationData* validationData = (float4x3__ValidationData*)mValidationDataStack.top();
 
51268
        DISABLE_WARNING_UNUSED(validationData)
 
51269
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half4x3, &validate__float4x3_type__stream, &validationData->validationWholeSize, 0);
 
51270
    }
 
51271
    else
 
51272
    {
 
51273
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half4x3);
 
51274
    }
 
51275
#else
 
51276
    {
 
51277
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half4x3);
 
51278
    } // validation
 
51279
#endif
 
51280
 
 
51281
}
 
51282
 
 
51283
//---------------------------------------------------------------------
 
51284
bool ColladaParserAutoGen15Private::_preBegin__half4x3( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
51285
{
 
51286
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51287
    if ( mValidate )
 
51288
    {
 
51289
 
 
51290
        bool validationResult = _validateBegin__half4x3( attributes, attributeDataPtr, validationDataPtr );
 
51291
        if ( !validationResult ) return false;
 
51292
 
 
51293
    } // validation
 
51294
#endif
 
51295
 
 
51296
    return true;
 
51297
}
 
51298
 
 
51299
//---------------------------------------------------------------------
 
51300
bool ColladaParserAutoGen15Private::_preEnd__half4x3()
 
51301
{
 
51302
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51303
    if ( mValidate )
 
51304
    {
 
51305
 
 
51306
        bool validationResult = _validateEnd__half4x3();
 
51307
        if ( !validationResult ) return false;
 
51308
 
 
51309
    } // validation
 
51310
#endif
 
51311
 
 
51312
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51313
    if ( mValidate )
 
51314
    {
 
51315
        float4x3__ValidationData* validationData = (float4x3__ValidationData*)mValidationDataStack.top();
 
51316
        DISABLE_WARNING_UNUSED(validationData)
 
51317
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__half4x3, &validate__float4x3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
51318
        ParserError::ErrorType simpleTypeValidationResult = validate__float4x3_type(0, (*(&validationData->validationWholeSize)));
 
51319
        mValidationDataStack.deleteObject();
 
51320
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
51321
        {
 
51322
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
51323
                simpleTypeValidationResult,
 
51324
                HASH_ELEMENT_HALF4X3,
 
51325
                (ParserChar*)0, 0 ) )
 
51326
            {
 
51327
                return false;
 
51328
            }
 
51329
        }
 
51330
        return returnValue;
 
51331
    }
 
51332
    else
 
51333
    {
 
51334
return floatDataEnd( &ColladaParserAutoGen15::data__half4x3 );
 
51335
    }
 
51336
#else
 
51337
    {
 
51338
return floatDataEnd( &ColladaParserAutoGen15::data__half4x3 );
 
51339
    } // validation
 
51340
#endif
 
51341
 
 
51342
}
 
51343
 
 
51344
//---------------------------------------------------------------------
 
51345
bool ColladaParserAutoGen15Private::_freeAttributes__half4x3( void* attributeData )
 
51346
{
 
51347
    return true;
 
51348
}
 
51349
 
 
51350
//---------------------------------------------------------------------
 
51351
bool ColladaParserAutoGen15Private::_data__half4x4( const ParserChar* text, size_t textLength )
 
51352
{
 
51353
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51354
    if ( mValidate )
 
51355
    {
 
51356
        bind_shape_matrix__ValidationData* validationData = (bind_shape_matrix__ValidationData*)mValidationDataStack.top();
 
51357
        DISABLE_WARNING_UNUSED(validationData)
 
51358
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half4x4, &validate__float4x4_type__stream, &validationData->validationWholeSize, 0);
 
51359
    }
 
51360
    else
 
51361
    {
 
51362
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half4x4);
 
51363
    }
 
51364
#else
 
51365
    {
 
51366
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half4x4);
 
51367
    } // validation
 
51368
#endif
 
51369
 
 
51370
}
 
51371
 
 
51372
//---------------------------------------------------------------------
 
51373
bool ColladaParserAutoGen15Private::_preBegin__half4x4( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
51374
{
 
51375
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51376
    if ( mValidate )
 
51377
    {
 
51378
 
 
51379
        bool validationResult = _validateBegin__half4x4( attributes, attributeDataPtr, validationDataPtr );
 
51380
        if ( !validationResult ) return false;
 
51381
 
 
51382
    } // validation
 
51383
#endif
 
51384
 
 
51385
    return true;
 
51386
}
 
51387
 
 
51388
//---------------------------------------------------------------------
 
51389
bool ColladaParserAutoGen15Private::_preEnd__half4x4()
 
51390
{
 
51391
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51392
    if ( mValidate )
 
51393
    {
 
51394
 
 
51395
        bool validationResult = _validateEnd__half4x4();
 
51396
        if ( !validationResult ) return false;
 
51397
 
 
51398
    } // validation
 
51399
#endif
 
51400
 
 
51401
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51402
    if ( mValidate )
 
51403
    {
 
51404
        bind_shape_matrix__ValidationData* validationData = (bind_shape_matrix__ValidationData*)mValidationDataStack.top();
 
51405
        DISABLE_WARNING_UNUSED(validationData)
 
51406
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__half4x4, &validate__float4x4_type__streamEnd, &validationData->validationWholeSize, 0 );
 
51407
        ParserError::ErrorType simpleTypeValidationResult = validate__float4x4_type(0, (*(&validationData->validationWholeSize)));
 
51408
        mValidationDataStack.deleteObject();
 
51409
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
51410
        {
 
51411
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
51412
                simpleTypeValidationResult,
 
51413
                HASH_ELEMENT_HALF4X4,
 
51414
                (ParserChar*)0, 0 ) )
 
51415
            {
 
51416
                return false;
 
51417
            }
 
51418
        }
 
51419
        return returnValue;
 
51420
    }
 
51421
    else
 
51422
    {
 
51423
return floatDataEnd( &ColladaParserAutoGen15::data__half4x4 );
 
51424
    }
 
51425
#else
 
51426
    {
 
51427
return floatDataEnd( &ColladaParserAutoGen15::data__half4x4 );
 
51428
    } // validation
 
51429
#endif
 
51430
 
 
51431
}
 
51432
 
 
51433
//---------------------------------------------------------------------
 
51434
bool ColladaParserAutoGen15Private::_freeAttributes__half4x4( void* attributeData )
 
51435
{
 
51436
    return true;
 
51437
}
 
51438
 
 
51439
//---------------------------------------------------------------------
 
51440
bool ColladaParserAutoGen15Private::_data__fixed( const ParserChar* text, size_t textLength )
 
51441
{
 
51442
if (!mLastIncompleteFragmentInCharacterData)
 
51443
{
 
51444
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
51445
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
51446
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
51447
}
 
51448
else
 
51449
{
 
51450
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
51451
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
51452
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
51453
        mLastIncompleteFragmentInCharacterData = tmp;
 
51454
    }
 
51455
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
51456
    mEndOfDataInCurrentObjectOnStack += textLength;
 
51457
}
 
51458
return true;
 
51459
}
 
51460
 
 
51461
//---------------------------------------------------------------------
 
51462
bool ColladaParserAutoGen15Private::_preBegin__fixed( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
51463
{
 
51464
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51465
    if ( mValidate )
 
51466
    {
 
51467
 
 
51468
        bool validationResult = _validateBegin__fixed( attributes, attributeDataPtr, validationDataPtr );
 
51469
        if ( !validationResult ) return false;
 
51470
 
 
51471
    } // validation
 
51472
#endif
 
51473
 
 
51474
    return true;
 
51475
}
 
51476
 
 
51477
//---------------------------------------------------------------------
 
51478
bool ColladaParserAutoGen15Private::_preEnd__fixed()
 
51479
{
 
51480
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51481
    if ( mValidate )
 
51482
    {
 
51483
 
 
51484
        bool validationResult = _validateEnd__fixed();
 
51485
        if ( !validationResult ) return false;
 
51486
 
 
51487
    } // validation
 
51488
#endif
 
51489
 
 
51490
bool failed;
 
51491
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
51492
DISABLE_WARNING_UNUSED(ptrForErr)
 
51493
float parameter = GeneratedSaxParser::Utils::toFloat((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
51494
bool returnValue;
 
51495
if (!failed)
 
51496
{
 
51497
    returnValue = mImpl->data__fixed(parameter);
 
51498
}
 
51499
else
 
51500
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_FIXED, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
51501
if (mLastIncompleteFragmentInCharacterData)
 
51502
    mStackMemoryManager.deleteObject();
 
51503
mLastIncompleteFragmentInCharacterData = 0;
 
51504
mEndOfDataInCurrentObjectOnStack = 0;
 
51505
return returnValue;
 
51506
}
 
51507
 
 
51508
//---------------------------------------------------------------------
 
51509
bool ColladaParserAutoGen15Private::_freeAttributes__fixed( void* attributeData )
 
51510
{
 
51511
    return true;
 
51512
}
 
51513
 
 
51514
//---------------------------------------------------------------------
 
51515
bool ColladaParserAutoGen15Private::_data__fixed2( const ParserChar* text, size_t textLength )
 
51516
{
 
51517
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51518
    if ( mValidate )
 
51519
    {
 
51520
        radius____float2_type__ValidationData* validationData = (radius____float2_type__ValidationData*)mValidationDataStack.top();
 
51521
        DISABLE_WARNING_UNUSED(validationData)
 
51522
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed2, &validate__float2_type__stream, &validationData->validationWholeSize, 0);
 
51523
    }
 
51524
    else
 
51525
    {
 
51526
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed2);
 
51527
    }
 
51528
#else
 
51529
    {
 
51530
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed2);
 
51531
    } // validation
 
51532
#endif
 
51533
 
 
51534
}
 
51535
 
 
51536
//---------------------------------------------------------------------
 
51537
bool ColladaParserAutoGen15Private::_preBegin__fixed2( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
51538
{
 
51539
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51540
    if ( mValidate )
 
51541
    {
 
51542
 
 
51543
        bool validationResult = _validateBegin__fixed2( attributes, attributeDataPtr, validationDataPtr );
 
51544
        if ( !validationResult ) return false;
 
51545
 
 
51546
    } // validation
 
51547
#endif
 
51548
 
 
51549
    return true;
 
51550
}
 
51551
 
 
51552
//---------------------------------------------------------------------
 
51553
bool ColladaParserAutoGen15Private::_preEnd__fixed2()
 
51554
{
 
51555
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51556
    if ( mValidate )
 
51557
    {
 
51558
 
 
51559
        bool validationResult = _validateEnd__fixed2();
 
51560
        if ( !validationResult ) return false;
 
51561
 
 
51562
    } // validation
 
51563
#endif
 
51564
 
 
51565
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51566
    if ( mValidate )
 
51567
    {
 
51568
        radius____float2_type__ValidationData* validationData = (radius____float2_type__ValidationData*)mValidationDataStack.top();
 
51569
        DISABLE_WARNING_UNUSED(validationData)
 
51570
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__fixed2, &validate__float2_type__streamEnd, &validationData->validationWholeSize, 0 );
 
51571
        ParserError::ErrorType simpleTypeValidationResult = validate__float2_type(0, (*(&validationData->validationWholeSize)));
 
51572
        mValidationDataStack.deleteObject();
 
51573
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
51574
        {
 
51575
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
51576
                simpleTypeValidationResult,
 
51577
                HASH_ELEMENT_FIXED2,
 
51578
                (ParserChar*)0, 0 ) )
 
51579
            {
 
51580
                return false;
 
51581
            }
 
51582
        }
 
51583
        return returnValue;
 
51584
    }
 
51585
    else
 
51586
    {
 
51587
return floatDataEnd( &ColladaParserAutoGen15::data__fixed2 );
 
51588
    }
 
51589
#else
 
51590
    {
 
51591
return floatDataEnd( &ColladaParserAutoGen15::data__fixed2 );
 
51592
    } // validation
 
51593
#endif
 
51594
 
 
51595
}
 
51596
 
 
51597
//---------------------------------------------------------------------
 
51598
bool ColladaParserAutoGen15Private::_freeAttributes__fixed2( void* attributeData )
 
51599
{
 
51600
    return true;
 
51601
}
 
51602
 
 
51603
//---------------------------------------------------------------------
 
51604
bool ColladaParserAutoGen15Private::_data__fixed3( const ParserChar* text, size_t textLength )
 
51605
{
 
51606
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51607
    if ( mValidate )
 
51608
    {
 
51609
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
51610
        DISABLE_WARNING_UNUSED(validationData)
 
51611
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed3, &validate__float3_type__stream, &validationData->validationWholeSize, 0);
 
51612
    }
 
51613
    else
 
51614
    {
 
51615
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed3);
 
51616
    }
 
51617
#else
 
51618
    {
 
51619
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed3);
 
51620
    } // validation
 
51621
#endif
 
51622
 
 
51623
}
 
51624
 
 
51625
//---------------------------------------------------------------------
 
51626
bool ColladaParserAutoGen15Private::_preBegin__fixed3( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
51627
{
 
51628
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51629
    if ( mValidate )
 
51630
    {
 
51631
 
 
51632
        bool validationResult = _validateBegin__fixed3( attributes, attributeDataPtr, validationDataPtr );
 
51633
        if ( !validationResult ) return false;
 
51634
 
 
51635
    } // validation
 
51636
#endif
 
51637
 
 
51638
    return true;
 
51639
}
 
51640
 
 
51641
//---------------------------------------------------------------------
 
51642
bool ColladaParserAutoGen15Private::_preEnd__fixed3()
 
51643
{
 
51644
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51645
    if ( mValidate )
 
51646
    {
 
51647
 
 
51648
        bool validationResult = _validateEnd__fixed3();
 
51649
        if ( !validationResult ) return false;
 
51650
 
 
51651
    } // validation
 
51652
#endif
 
51653
 
 
51654
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51655
    if ( mValidate )
 
51656
    {
 
51657
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
51658
        DISABLE_WARNING_UNUSED(validationData)
 
51659
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__fixed3, &validate__float3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
51660
        ParserError::ErrorType simpleTypeValidationResult = validate__float3_type(0, (*(&validationData->validationWholeSize)));
 
51661
        mValidationDataStack.deleteObject();
 
51662
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
51663
        {
 
51664
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
51665
                simpleTypeValidationResult,
 
51666
                HASH_ELEMENT_FIXED3,
 
51667
                (ParserChar*)0, 0 ) )
 
51668
            {
 
51669
                return false;
 
51670
            }
 
51671
        }
 
51672
        return returnValue;
 
51673
    }
 
51674
    else
 
51675
    {
 
51676
return floatDataEnd( &ColladaParserAutoGen15::data__fixed3 );
 
51677
    }
 
51678
#else
 
51679
    {
 
51680
return floatDataEnd( &ColladaParserAutoGen15::data__fixed3 );
 
51681
    } // validation
 
51682
#endif
 
51683
 
 
51684
}
 
51685
 
 
51686
//---------------------------------------------------------------------
 
51687
bool ColladaParserAutoGen15Private::_freeAttributes__fixed3( void* attributeData )
 
51688
{
 
51689
    return true;
 
51690
}
 
51691
 
 
51692
//---------------------------------------------------------------------
 
51693
bool ColladaParserAutoGen15Private::_data__fixed4( const ParserChar* text, size_t textLength )
 
51694
{
 
51695
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51696
    if ( mValidate )
 
51697
    {
 
51698
        orient__ValidationData* validationData = (orient__ValidationData*)mValidationDataStack.top();
 
51699
        DISABLE_WARNING_UNUSED(validationData)
 
51700
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed4, &validate__float4_type__stream, &validationData->validationWholeSize, 0);
 
51701
    }
 
51702
    else
 
51703
    {
 
51704
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed4);
 
51705
    }
 
51706
#else
 
51707
    {
 
51708
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed4);
 
51709
    } // validation
 
51710
#endif
 
51711
 
 
51712
}
 
51713
 
 
51714
//---------------------------------------------------------------------
 
51715
bool ColladaParserAutoGen15Private::_preBegin__fixed4( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
51716
{
 
51717
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51718
    if ( mValidate )
 
51719
    {
 
51720
 
 
51721
        bool validationResult = _validateBegin__fixed4( attributes, attributeDataPtr, validationDataPtr );
 
51722
        if ( !validationResult ) return false;
 
51723
 
 
51724
    } // validation
 
51725
#endif
 
51726
 
 
51727
    return true;
 
51728
}
 
51729
 
 
51730
//---------------------------------------------------------------------
 
51731
bool ColladaParserAutoGen15Private::_preEnd__fixed4()
 
51732
{
 
51733
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51734
    if ( mValidate )
 
51735
    {
 
51736
 
 
51737
        bool validationResult = _validateEnd__fixed4();
 
51738
        if ( !validationResult ) return false;
 
51739
 
 
51740
    } // validation
 
51741
#endif
 
51742
 
 
51743
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51744
    if ( mValidate )
 
51745
    {
 
51746
        orient__ValidationData* validationData = (orient__ValidationData*)mValidationDataStack.top();
 
51747
        DISABLE_WARNING_UNUSED(validationData)
 
51748
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__fixed4, &validate__float4_type__streamEnd, &validationData->validationWholeSize, 0 );
 
51749
        ParserError::ErrorType simpleTypeValidationResult = validate__float4_type(0, (*(&validationData->validationWholeSize)));
 
51750
        mValidationDataStack.deleteObject();
 
51751
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
51752
        {
 
51753
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
51754
                simpleTypeValidationResult,
 
51755
                HASH_ELEMENT_FIXED4,
 
51756
                (ParserChar*)0, 0 ) )
 
51757
            {
 
51758
                return false;
 
51759
            }
 
51760
        }
 
51761
        return returnValue;
 
51762
    }
 
51763
    else
 
51764
    {
 
51765
return floatDataEnd( &ColladaParserAutoGen15::data__fixed4 );
 
51766
    }
 
51767
#else
 
51768
    {
 
51769
return floatDataEnd( &ColladaParserAutoGen15::data__fixed4 );
 
51770
    } // validation
 
51771
#endif
 
51772
 
 
51773
}
 
51774
 
 
51775
//---------------------------------------------------------------------
 
51776
bool ColladaParserAutoGen15Private::_freeAttributes__fixed4( void* attributeData )
 
51777
{
 
51778
    return true;
 
51779
}
 
51780
 
 
51781
//---------------------------------------------------------------------
 
51782
bool ColladaParserAutoGen15Private::_data__fixed2x1( const ParserChar* text, size_t textLength )
 
51783
{
 
51784
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51785
    if ( mValidate )
 
51786
    {
 
51787
        radius____float2_type__ValidationData* validationData = (radius____float2_type__ValidationData*)mValidationDataStack.top();
 
51788
        DISABLE_WARNING_UNUSED(validationData)
 
51789
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed2x1, &validate__float2_type__stream, &validationData->validationWholeSize, 0);
 
51790
    }
 
51791
    else
 
51792
    {
 
51793
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed2x1);
 
51794
    }
 
51795
#else
 
51796
    {
 
51797
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed2x1);
 
51798
    } // validation
 
51799
#endif
 
51800
 
 
51801
}
 
51802
 
 
51803
//---------------------------------------------------------------------
 
51804
bool ColladaParserAutoGen15Private::_preBegin__fixed2x1( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
51805
{
 
51806
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51807
    if ( mValidate )
 
51808
    {
 
51809
 
 
51810
        bool validationResult = _validateBegin__fixed2x1( attributes, attributeDataPtr, validationDataPtr );
 
51811
        if ( !validationResult ) return false;
 
51812
 
 
51813
    } // validation
 
51814
#endif
 
51815
 
 
51816
    return true;
 
51817
}
 
51818
 
 
51819
//---------------------------------------------------------------------
 
51820
bool ColladaParserAutoGen15Private::_preEnd__fixed2x1()
 
51821
{
 
51822
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51823
    if ( mValidate )
 
51824
    {
 
51825
 
 
51826
        bool validationResult = _validateEnd__fixed2x1();
 
51827
        if ( !validationResult ) return false;
 
51828
 
 
51829
    } // validation
 
51830
#endif
 
51831
 
 
51832
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51833
    if ( mValidate )
 
51834
    {
 
51835
        radius____float2_type__ValidationData* validationData = (radius____float2_type__ValidationData*)mValidationDataStack.top();
 
51836
        DISABLE_WARNING_UNUSED(validationData)
 
51837
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__fixed2x1, &validate__float2_type__streamEnd, &validationData->validationWholeSize, 0 );
 
51838
        ParserError::ErrorType simpleTypeValidationResult = validate__float2_type(0, (*(&validationData->validationWholeSize)));
 
51839
        mValidationDataStack.deleteObject();
 
51840
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
51841
        {
 
51842
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
51843
                simpleTypeValidationResult,
 
51844
                HASH_ELEMENT_FIXED2X1,
 
51845
                (ParserChar*)0, 0 ) )
 
51846
            {
 
51847
                return false;
 
51848
            }
 
51849
        }
 
51850
        return returnValue;
 
51851
    }
 
51852
    else
 
51853
    {
 
51854
return floatDataEnd( &ColladaParserAutoGen15::data__fixed2x1 );
 
51855
    }
 
51856
#else
 
51857
    {
 
51858
return floatDataEnd( &ColladaParserAutoGen15::data__fixed2x1 );
 
51859
    } // validation
 
51860
#endif
 
51861
 
 
51862
}
 
51863
 
 
51864
//---------------------------------------------------------------------
 
51865
bool ColladaParserAutoGen15Private::_freeAttributes__fixed2x1( void* attributeData )
 
51866
{
 
51867
    return true;
 
51868
}
 
51869
 
 
51870
//---------------------------------------------------------------------
 
51871
bool ColladaParserAutoGen15Private::_data__fixed2x2( const ParserChar* text, size_t textLength )
 
51872
{
 
51873
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51874
    if ( mValidate )
 
51875
    {
 
51876
        float2x2__ValidationData* validationData = (float2x2__ValidationData*)mValidationDataStack.top();
 
51877
        DISABLE_WARNING_UNUSED(validationData)
 
51878
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed2x2, &validate__float2x2_type__stream, &validationData->validationWholeSize, 0);
 
51879
    }
 
51880
    else
 
51881
    {
 
51882
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed2x2);
 
51883
    }
 
51884
#else
 
51885
    {
 
51886
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed2x2);
 
51887
    } // validation
 
51888
#endif
 
51889
 
 
51890
}
 
51891
 
 
51892
//---------------------------------------------------------------------
 
51893
bool ColladaParserAutoGen15Private::_preBegin__fixed2x2( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
51894
{
 
51895
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51896
    if ( mValidate )
 
51897
    {
 
51898
 
 
51899
        bool validationResult = _validateBegin__fixed2x2( attributes, attributeDataPtr, validationDataPtr );
 
51900
        if ( !validationResult ) return false;
 
51901
 
 
51902
    } // validation
 
51903
#endif
 
51904
 
 
51905
    return true;
 
51906
}
 
51907
 
 
51908
//---------------------------------------------------------------------
 
51909
bool ColladaParserAutoGen15Private::_preEnd__fixed2x2()
 
51910
{
 
51911
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51912
    if ( mValidate )
 
51913
    {
 
51914
 
 
51915
        bool validationResult = _validateEnd__fixed2x2();
 
51916
        if ( !validationResult ) return false;
 
51917
 
 
51918
    } // validation
 
51919
#endif
 
51920
 
 
51921
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51922
    if ( mValidate )
 
51923
    {
 
51924
        float2x2__ValidationData* validationData = (float2x2__ValidationData*)mValidationDataStack.top();
 
51925
        DISABLE_WARNING_UNUSED(validationData)
 
51926
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__fixed2x2, &validate__float2x2_type__streamEnd, &validationData->validationWholeSize, 0 );
 
51927
        ParserError::ErrorType simpleTypeValidationResult = validate__float2x2_type(0, (*(&validationData->validationWholeSize)));
 
51928
        mValidationDataStack.deleteObject();
 
51929
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
51930
        {
 
51931
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
51932
                simpleTypeValidationResult,
 
51933
                HASH_ELEMENT_FIXED2X2,
 
51934
                (ParserChar*)0, 0 ) )
 
51935
            {
 
51936
                return false;
 
51937
            }
 
51938
        }
 
51939
        return returnValue;
 
51940
    }
 
51941
    else
 
51942
    {
 
51943
return floatDataEnd( &ColladaParserAutoGen15::data__fixed2x2 );
 
51944
    }
 
51945
#else
 
51946
    {
 
51947
return floatDataEnd( &ColladaParserAutoGen15::data__fixed2x2 );
 
51948
    } // validation
 
51949
#endif
 
51950
 
 
51951
}
 
51952
 
 
51953
//---------------------------------------------------------------------
 
51954
bool ColladaParserAutoGen15Private::_freeAttributes__fixed2x2( void* attributeData )
 
51955
{
 
51956
    return true;
 
51957
}
 
51958
 
 
51959
//---------------------------------------------------------------------
 
51960
bool ColladaParserAutoGen15Private::_data__fixed2x3( const ParserChar* text, size_t textLength )
 
51961
{
 
51962
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51963
    if ( mValidate )
 
51964
    {
 
51965
        float2x3__ValidationData* validationData = (float2x3__ValidationData*)mValidationDataStack.top();
 
51966
        DISABLE_WARNING_UNUSED(validationData)
 
51967
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed2x3, &validate__float2x3_type__stream, &validationData->validationWholeSize, 0);
 
51968
    }
 
51969
    else
 
51970
    {
 
51971
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed2x3);
 
51972
    }
 
51973
#else
 
51974
    {
 
51975
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed2x3);
 
51976
    } // validation
 
51977
#endif
 
51978
 
 
51979
}
 
51980
 
 
51981
//---------------------------------------------------------------------
 
51982
bool ColladaParserAutoGen15Private::_preBegin__fixed2x3( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
51983
{
 
51984
#ifdef GENERATEDSAXPARSER_VALIDATION
 
51985
    if ( mValidate )
 
51986
    {
 
51987
 
 
51988
        bool validationResult = _validateBegin__fixed2x3( attributes, attributeDataPtr, validationDataPtr );
 
51989
        if ( !validationResult ) return false;
 
51990
 
 
51991
    } // validation
 
51992
#endif
 
51993
 
 
51994
    return true;
 
51995
}
 
51996
 
 
51997
//---------------------------------------------------------------------
 
51998
bool ColladaParserAutoGen15Private::_preEnd__fixed2x3()
 
51999
{
 
52000
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52001
    if ( mValidate )
 
52002
    {
 
52003
 
 
52004
        bool validationResult = _validateEnd__fixed2x3();
 
52005
        if ( !validationResult ) return false;
 
52006
 
 
52007
    } // validation
 
52008
#endif
 
52009
 
 
52010
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52011
    if ( mValidate )
 
52012
    {
 
52013
        float2x3__ValidationData* validationData = (float2x3__ValidationData*)mValidationDataStack.top();
 
52014
        DISABLE_WARNING_UNUSED(validationData)
 
52015
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__fixed2x3, &validate__float2x3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
52016
        ParserError::ErrorType simpleTypeValidationResult = validate__float2x3_type(0, (*(&validationData->validationWholeSize)));
 
52017
        mValidationDataStack.deleteObject();
 
52018
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
52019
        {
 
52020
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
52021
                simpleTypeValidationResult,
 
52022
                HASH_ELEMENT_FIXED2X3,
 
52023
                (ParserChar*)0, 0 ) )
 
52024
            {
 
52025
                return false;
 
52026
            }
 
52027
        }
 
52028
        return returnValue;
 
52029
    }
 
52030
    else
 
52031
    {
 
52032
return floatDataEnd( &ColladaParserAutoGen15::data__fixed2x3 );
 
52033
    }
 
52034
#else
 
52035
    {
 
52036
return floatDataEnd( &ColladaParserAutoGen15::data__fixed2x3 );
 
52037
    } // validation
 
52038
#endif
 
52039
 
 
52040
}
 
52041
 
 
52042
//---------------------------------------------------------------------
 
52043
bool ColladaParserAutoGen15Private::_freeAttributes__fixed2x3( void* attributeData )
 
52044
{
 
52045
    return true;
 
52046
}
 
52047
 
 
52048
//---------------------------------------------------------------------
 
52049
bool ColladaParserAutoGen15Private::_data__fixed2x4( const ParserChar* text, size_t textLength )
 
52050
{
 
52051
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52052
    if ( mValidate )
 
52053
    {
 
52054
        float2x4__ValidationData* validationData = (float2x4__ValidationData*)mValidationDataStack.top();
 
52055
        DISABLE_WARNING_UNUSED(validationData)
 
52056
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed2x4, &validate__float2x4_type__stream, &validationData->validationWholeSize, 0);
 
52057
    }
 
52058
    else
 
52059
    {
 
52060
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed2x4);
 
52061
    }
 
52062
#else
 
52063
    {
 
52064
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed2x4);
 
52065
    } // validation
 
52066
#endif
 
52067
 
 
52068
}
 
52069
 
 
52070
//---------------------------------------------------------------------
 
52071
bool ColladaParserAutoGen15Private::_preBegin__fixed2x4( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
52072
{
 
52073
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52074
    if ( mValidate )
 
52075
    {
 
52076
 
 
52077
        bool validationResult = _validateBegin__fixed2x4( attributes, attributeDataPtr, validationDataPtr );
 
52078
        if ( !validationResult ) return false;
 
52079
 
 
52080
    } // validation
 
52081
#endif
 
52082
 
 
52083
    return true;
 
52084
}
 
52085
 
 
52086
//---------------------------------------------------------------------
 
52087
bool ColladaParserAutoGen15Private::_preEnd__fixed2x4()
 
52088
{
 
52089
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52090
    if ( mValidate )
 
52091
    {
 
52092
 
 
52093
        bool validationResult = _validateEnd__fixed2x4();
 
52094
        if ( !validationResult ) return false;
 
52095
 
 
52096
    } // validation
 
52097
#endif
 
52098
 
 
52099
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52100
    if ( mValidate )
 
52101
    {
 
52102
        float2x4__ValidationData* validationData = (float2x4__ValidationData*)mValidationDataStack.top();
 
52103
        DISABLE_WARNING_UNUSED(validationData)
 
52104
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__fixed2x4, &validate__float2x4_type__streamEnd, &validationData->validationWholeSize, 0 );
 
52105
        ParserError::ErrorType simpleTypeValidationResult = validate__float2x4_type(0, (*(&validationData->validationWholeSize)));
 
52106
        mValidationDataStack.deleteObject();
 
52107
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
52108
        {
 
52109
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
52110
                simpleTypeValidationResult,
 
52111
                HASH_ELEMENT_FIXED2X4,
 
52112
                (ParserChar*)0, 0 ) )
 
52113
            {
 
52114
                return false;
 
52115
            }
 
52116
        }
 
52117
        return returnValue;
 
52118
    }
 
52119
    else
 
52120
    {
 
52121
return floatDataEnd( &ColladaParserAutoGen15::data__fixed2x4 );
 
52122
    }
 
52123
#else
 
52124
    {
 
52125
return floatDataEnd( &ColladaParserAutoGen15::data__fixed2x4 );
 
52126
    } // validation
 
52127
#endif
 
52128
 
 
52129
}
 
52130
 
 
52131
//---------------------------------------------------------------------
 
52132
bool ColladaParserAutoGen15Private::_freeAttributes__fixed2x4( void* attributeData )
 
52133
{
 
52134
    return true;
 
52135
}
 
52136
 
 
52137
//---------------------------------------------------------------------
 
52138
bool ColladaParserAutoGen15Private::_data__fixed3x1( const ParserChar* text, size_t textLength )
 
52139
{
 
52140
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52141
    if ( mValidate )
 
52142
    {
 
52143
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
52144
        DISABLE_WARNING_UNUSED(validationData)
 
52145
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed3x1, &validate__float3_type__stream, &validationData->validationWholeSize, 0);
 
52146
    }
 
52147
    else
 
52148
    {
 
52149
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed3x1);
 
52150
    }
 
52151
#else
 
52152
    {
 
52153
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed3x1);
 
52154
    } // validation
 
52155
#endif
 
52156
 
 
52157
}
 
52158
 
 
52159
//---------------------------------------------------------------------
 
52160
bool ColladaParserAutoGen15Private::_preBegin__fixed3x1( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
52161
{
 
52162
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52163
    if ( mValidate )
 
52164
    {
 
52165
 
 
52166
        bool validationResult = _validateBegin__fixed3x1( attributes, attributeDataPtr, validationDataPtr );
 
52167
        if ( !validationResult ) return false;
 
52168
 
 
52169
    } // validation
 
52170
#endif
 
52171
 
 
52172
    return true;
 
52173
}
 
52174
 
 
52175
//---------------------------------------------------------------------
 
52176
bool ColladaParserAutoGen15Private::_preEnd__fixed3x1()
 
52177
{
 
52178
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52179
    if ( mValidate )
 
52180
    {
 
52181
 
 
52182
        bool validationResult = _validateEnd__fixed3x1();
 
52183
        if ( !validationResult ) return false;
 
52184
 
 
52185
    } // validation
 
52186
#endif
 
52187
 
 
52188
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52189
    if ( mValidate )
 
52190
    {
 
52191
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
52192
        DISABLE_WARNING_UNUSED(validationData)
 
52193
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__fixed3x1, &validate__float3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
52194
        ParserError::ErrorType simpleTypeValidationResult = validate__float3_type(0, (*(&validationData->validationWholeSize)));
 
52195
        mValidationDataStack.deleteObject();
 
52196
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
52197
        {
 
52198
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
52199
                simpleTypeValidationResult,
 
52200
                HASH_ELEMENT_FIXED3X1,
 
52201
                (ParserChar*)0, 0 ) )
 
52202
            {
 
52203
                return false;
 
52204
            }
 
52205
        }
 
52206
        return returnValue;
 
52207
    }
 
52208
    else
 
52209
    {
 
52210
return floatDataEnd( &ColladaParserAutoGen15::data__fixed3x1 );
 
52211
    }
 
52212
#else
 
52213
    {
 
52214
return floatDataEnd( &ColladaParserAutoGen15::data__fixed3x1 );
 
52215
    } // validation
 
52216
#endif
 
52217
 
 
52218
}
 
52219
 
 
52220
//---------------------------------------------------------------------
 
52221
bool ColladaParserAutoGen15Private::_freeAttributes__fixed3x1( void* attributeData )
 
52222
{
 
52223
    return true;
 
52224
}
 
52225
 
 
52226
//---------------------------------------------------------------------
 
52227
bool ColladaParserAutoGen15Private::_data__fixed3x2( const ParserChar* text, size_t textLength )
 
52228
{
 
52229
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52230
    if ( mValidate )
 
52231
    {
 
52232
        float3x2__ValidationData* validationData = (float3x2__ValidationData*)mValidationDataStack.top();
 
52233
        DISABLE_WARNING_UNUSED(validationData)
 
52234
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed3x2, &validate__float3x2_type__stream, &validationData->validationWholeSize, 0);
 
52235
    }
 
52236
    else
 
52237
    {
 
52238
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed3x2);
 
52239
    }
 
52240
#else
 
52241
    {
 
52242
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed3x2);
 
52243
    } // validation
 
52244
#endif
 
52245
 
 
52246
}
 
52247
 
 
52248
//---------------------------------------------------------------------
 
52249
bool ColladaParserAutoGen15Private::_preBegin__fixed3x2( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
52250
{
 
52251
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52252
    if ( mValidate )
 
52253
    {
 
52254
 
 
52255
        bool validationResult = _validateBegin__fixed3x2( attributes, attributeDataPtr, validationDataPtr );
 
52256
        if ( !validationResult ) return false;
 
52257
 
 
52258
    } // validation
 
52259
#endif
 
52260
 
 
52261
    return true;
 
52262
}
 
52263
 
 
52264
//---------------------------------------------------------------------
 
52265
bool ColladaParserAutoGen15Private::_preEnd__fixed3x2()
 
52266
{
 
52267
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52268
    if ( mValidate )
 
52269
    {
 
52270
 
 
52271
        bool validationResult = _validateEnd__fixed3x2();
 
52272
        if ( !validationResult ) return false;
 
52273
 
 
52274
    } // validation
 
52275
#endif
 
52276
 
 
52277
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52278
    if ( mValidate )
 
52279
    {
 
52280
        float3x2__ValidationData* validationData = (float3x2__ValidationData*)mValidationDataStack.top();
 
52281
        DISABLE_WARNING_UNUSED(validationData)
 
52282
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__fixed3x2, &validate__float3x2_type__streamEnd, &validationData->validationWholeSize, 0 );
 
52283
        ParserError::ErrorType simpleTypeValidationResult = validate__float3x2_type(0, (*(&validationData->validationWholeSize)));
 
52284
        mValidationDataStack.deleteObject();
 
52285
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
52286
        {
 
52287
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
52288
                simpleTypeValidationResult,
 
52289
                HASH_ELEMENT_FIXED3X2,
 
52290
                (ParserChar*)0, 0 ) )
 
52291
            {
 
52292
                return false;
 
52293
            }
 
52294
        }
 
52295
        return returnValue;
 
52296
    }
 
52297
    else
 
52298
    {
 
52299
return floatDataEnd( &ColladaParserAutoGen15::data__fixed3x2 );
 
52300
    }
 
52301
#else
 
52302
    {
 
52303
return floatDataEnd( &ColladaParserAutoGen15::data__fixed3x2 );
 
52304
    } // validation
 
52305
#endif
 
52306
 
 
52307
}
 
52308
 
 
52309
//---------------------------------------------------------------------
 
52310
bool ColladaParserAutoGen15Private::_freeAttributes__fixed3x2( void* attributeData )
 
52311
{
 
52312
    return true;
 
52313
}
 
52314
 
 
52315
//---------------------------------------------------------------------
 
52316
bool ColladaParserAutoGen15Private::_data__fixed3x3( const ParserChar* text, size_t textLength )
 
52317
{
 
52318
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52319
    if ( mValidate )
 
52320
    {
 
52321
        float3x3__ValidationData* validationData = (float3x3__ValidationData*)mValidationDataStack.top();
 
52322
        DISABLE_WARNING_UNUSED(validationData)
 
52323
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed3x3, &validate__float3x3_type__stream, &validationData->validationWholeSize, 0);
 
52324
    }
 
52325
    else
 
52326
    {
 
52327
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed3x3);
 
52328
    }
 
52329
#else
 
52330
    {
 
52331
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed3x3);
 
52332
    } // validation
 
52333
#endif
 
52334
 
 
52335
}
 
52336
 
 
52337
//---------------------------------------------------------------------
 
52338
bool ColladaParserAutoGen15Private::_preBegin__fixed3x3( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
52339
{
 
52340
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52341
    if ( mValidate )
 
52342
    {
 
52343
 
 
52344
        bool validationResult = _validateBegin__fixed3x3( attributes, attributeDataPtr, validationDataPtr );
 
52345
        if ( !validationResult ) return false;
 
52346
 
 
52347
    } // validation
 
52348
#endif
 
52349
 
 
52350
    return true;
 
52351
}
 
52352
 
 
52353
//---------------------------------------------------------------------
 
52354
bool ColladaParserAutoGen15Private::_preEnd__fixed3x3()
 
52355
{
 
52356
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52357
    if ( mValidate )
 
52358
    {
 
52359
 
 
52360
        bool validationResult = _validateEnd__fixed3x3();
 
52361
        if ( !validationResult ) return false;
 
52362
 
 
52363
    } // validation
 
52364
#endif
 
52365
 
 
52366
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52367
    if ( mValidate )
 
52368
    {
 
52369
        float3x3__ValidationData* validationData = (float3x3__ValidationData*)mValidationDataStack.top();
 
52370
        DISABLE_WARNING_UNUSED(validationData)
 
52371
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__fixed3x3, &validate__float3x3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
52372
        ParserError::ErrorType simpleTypeValidationResult = validate__float3x3_type(0, (*(&validationData->validationWholeSize)));
 
52373
        mValidationDataStack.deleteObject();
 
52374
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
52375
        {
 
52376
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
52377
                simpleTypeValidationResult,
 
52378
                HASH_ELEMENT_FIXED3X3,
 
52379
                (ParserChar*)0, 0 ) )
 
52380
            {
 
52381
                return false;
 
52382
            }
 
52383
        }
 
52384
        return returnValue;
 
52385
    }
 
52386
    else
 
52387
    {
 
52388
return floatDataEnd( &ColladaParserAutoGen15::data__fixed3x3 );
 
52389
    }
 
52390
#else
 
52391
    {
 
52392
return floatDataEnd( &ColladaParserAutoGen15::data__fixed3x3 );
 
52393
    } // validation
 
52394
#endif
 
52395
 
 
52396
}
 
52397
 
 
52398
//---------------------------------------------------------------------
 
52399
bool ColladaParserAutoGen15Private::_freeAttributes__fixed3x3( void* attributeData )
 
52400
{
 
52401
    return true;
 
52402
}
 
52403
 
 
52404
//---------------------------------------------------------------------
 
52405
bool ColladaParserAutoGen15Private::_data__fixed3x4( const ParserChar* text, size_t textLength )
 
52406
{
 
52407
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52408
    if ( mValidate )
 
52409
    {
 
52410
        float3x4__ValidationData* validationData = (float3x4__ValidationData*)mValidationDataStack.top();
 
52411
        DISABLE_WARNING_UNUSED(validationData)
 
52412
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed3x4, &validate__float3x4_type__stream, &validationData->validationWholeSize, 0);
 
52413
    }
 
52414
    else
 
52415
    {
 
52416
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed3x4);
 
52417
    }
 
52418
#else
 
52419
    {
 
52420
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed3x4);
 
52421
    } // validation
 
52422
#endif
 
52423
 
 
52424
}
 
52425
 
 
52426
//---------------------------------------------------------------------
 
52427
bool ColladaParserAutoGen15Private::_preBegin__fixed3x4( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
52428
{
 
52429
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52430
    if ( mValidate )
 
52431
    {
 
52432
 
 
52433
        bool validationResult = _validateBegin__fixed3x4( attributes, attributeDataPtr, validationDataPtr );
 
52434
        if ( !validationResult ) return false;
 
52435
 
 
52436
    } // validation
 
52437
#endif
 
52438
 
 
52439
    return true;
 
52440
}
 
52441
 
 
52442
//---------------------------------------------------------------------
 
52443
bool ColladaParserAutoGen15Private::_preEnd__fixed3x4()
 
52444
{
 
52445
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52446
    if ( mValidate )
 
52447
    {
 
52448
 
 
52449
        bool validationResult = _validateEnd__fixed3x4();
 
52450
        if ( !validationResult ) return false;
 
52451
 
 
52452
    } // validation
 
52453
#endif
 
52454
 
 
52455
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52456
    if ( mValidate )
 
52457
    {
 
52458
        float3x4__ValidationData* validationData = (float3x4__ValidationData*)mValidationDataStack.top();
 
52459
        DISABLE_WARNING_UNUSED(validationData)
 
52460
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__fixed3x4, &validate__float3x4_type__streamEnd, &validationData->validationWholeSize, 0 );
 
52461
        ParserError::ErrorType simpleTypeValidationResult = validate__float3x4_type(0, (*(&validationData->validationWholeSize)));
 
52462
        mValidationDataStack.deleteObject();
 
52463
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
52464
        {
 
52465
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
52466
                simpleTypeValidationResult,
 
52467
                HASH_ELEMENT_FIXED3X4,
 
52468
                (ParserChar*)0, 0 ) )
 
52469
            {
 
52470
                return false;
 
52471
            }
 
52472
        }
 
52473
        return returnValue;
 
52474
    }
 
52475
    else
 
52476
    {
 
52477
return floatDataEnd( &ColladaParserAutoGen15::data__fixed3x4 );
 
52478
    }
 
52479
#else
 
52480
    {
 
52481
return floatDataEnd( &ColladaParserAutoGen15::data__fixed3x4 );
 
52482
    } // validation
 
52483
#endif
 
52484
 
 
52485
}
 
52486
 
 
52487
//---------------------------------------------------------------------
 
52488
bool ColladaParserAutoGen15Private::_freeAttributes__fixed3x4( void* attributeData )
 
52489
{
 
52490
    return true;
 
52491
}
 
52492
 
 
52493
//---------------------------------------------------------------------
 
52494
bool ColladaParserAutoGen15Private::_data__fixed4x1( const ParserChar* text, size_t textLength )
 
52495
{
 
52496
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52497
    if ( mValidate )
 
52498
    {
 
52499
        orient__ValidationData* validationData = (orient__ValidationData*)mValidationDataStack.top();
 
52500
        DISABLE_WARNING_UNUSED(validationData)
 
52501
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed4x1, &validate__float4_type__stream, &validationData->validationWholeSize, 0);
 
52502
    }
 
52503
    else
 
52504
    {
 
52505
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed4x1);
 
52506
    }
 
52507
#else
 
52508
    {
 
52509
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed4x1);
 
52510
    } // validation
 
52511
#endif
 
52512
 
 
52513
}
 
52514
 
 
52515
//---------------------------------------------------------------------
 
52516
bool ColladaParserAutoGen15Private::_preBegin__fixed4x1( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
52517
{
 
52518
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52519
    if ( mValidate )
 
52520
    {
 
52521
 
 
52522
        bool validationResult = _validateBegin__fixed4x1( attributes, attributeDataPtr, validationDataPtr );
 
52523
        if ( !validationResult ) return false;
 
52524
 
 
52525
    } // validation
 
52526
#endif
 
52527
 
 
52528
    return true;
 
52529
}
 
52530
 
 
52531
//---------------------------------------------------------------------
 
52532
bool ColladaParserAutoGen15Private::_preEnd__fixed4x1()
 
52533
{
 
52534
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52535
    if ( mValidate )
 
52536
    {
 
52537
 
 
52538
        bool validationResult = _validateEnd__fixed4x1();
 
52539
        if ( !validationResult ) return false;
 
52540
 
 
52541
    } // validation
 
52542
#endif
 
52543
 
 
52544
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52545
    if ( mValidate )
 
52546
    {
 
52547
        orient__ValidationData* validationData = (orient__ValidationData*)mValidationDataStack.top();
 
52548
        DISABLE_WARNING_UNUSED(validationData)
 
52549
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__fixed4x1, &validate__float4_type__streamEnd, &validationData->validationWholeSize, 0 );
 
52550
        ParserError::ErrorType simpleTypeValidationResult = validate__float4_type(0, (*(&validationData->validationWholeSize)));
 
52551
        mValidationDataStack.deleteObject();
 
52552
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
52553
        {
 
52554
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
52555
                simpleTypeValidationResult,
 
52556
                HASH_ELEMENT_FIXED4X1,
 
52557
                (ParserChar*)0, 0 ) )
 
52558
            {
 
52559
                return false;
 
52560
            }
 
52561
        }
 
52562
        return returnValue;
 
52563
    }
 
52564
    else
 
52565
    {
 
52566
return floatDataEnd( &ColladaParserAutoGen15::data__fixed4x1 );
 
52567
    }
 
52568
#else
 
52569
    {
 
52570
return floatDataEnd( &ColladaParserAutoGen15::data__fixed4x1 );
 
52571
    } // validation
 
52572
#endif
 
52573
 
 
52574
}
 
52575
 
 
52576
//---------------------------------------------------------------------
 
52577
bool ColladaParserAutoGen15Private::_freeAttributes__fixed4x1( void* attributeData )
 
52578
{
 
52579
    return true;
 
52580
}
 
52581
 
 
52582
//---------------------------------------------------------------------
 
52583
bool ColladaParserAutoGen15Private::_data__fixed4x2( const ParserChar* text, size_t textLength )
 
52584
{
 
52585
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52586
    if ( mValidate )
 
52587
    {
 
52588
        float4x2__ValidationData* validationData = (float4x2__ValidationData*)mValidationDataStack.top();
 
52589
        DISABLE_WARNING_UNUSED(validationData)
 
52590
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed4x2, &validate__float4x2_type__stream, &validationData->validationWholeSize, 0);
 
52591
    }
 
52592
    else
 
52593
    {
 
52594
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed4x2);
 
52595
    }
 
52596
#else
 
52597
    {
 
52598
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed4x2);
 
52599
    } // validation
 
52600
#endif
 
52601
 
 
52602
}
 
52603
 
 
52604
//---------------------------------------------------------------------
 
52605
bool ColladaParserAutoGen15Private::_preBegin__fixed4x2( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
52606
{
 
52607
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52608
    if ( mValidate )
 
52609
    {
 
52610
 
 
52611
        bool validationResult = _validateBegin__fixed4x2( attributes, attributeDataPtr, validationDataPtr );
 
52612
        if ( !validationResult ) return false;
 
52613
 
 
52614
    } // validation
 
52615
#endif
 
52616
 
 
52617
    return true;
 
52618
}
 
52619
 
 
52620
//---------------------------------------------------------------------
 
52621
bool ColladaParserAutoGen15Private::_preEnd__fixed4x2()
 
52622
{
 
52623
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52624
    if ( mValidate )
 
52625
    {
 
52626
 
 
52627
        bool validationResult = _validateEnd__fixed4x2();
 
52628
        if ( !validationResult ) return false;
 
52629
 
 
52630
    } // validation
 
52631
#endif
 
52632
 
 
52633
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52634
    if ( mValidate )
 
52635
    {
 
52636
        float4x2__ValidationData* validationData = (float4x2__ValidationData*)mValidationDataStack.top();
 
52637
        DISABLE_WARNING_UNUSED(validationData)
 
52638
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__fixed4x2, &validate__float4x2_type__streamEnd, &validationData->validationWholeSize, 0 );
 
52639
        ParserError::ErrorType simpleTypeValidationResult = validate__float4x2_type(0, (*(&validationData->validationWholeSize)));
 
52640
        mValidationDataStack.deleteObject();
 
52641
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
52642
        {
 
52643
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
52644
                simpleTypeValidationResult,
 
52645
                HASH_ELEMENT_FIXED4X2,
 
52646
                (ParserChar*)0, 0 ) )
 
52647
            {
 
52648
                return false;
 
52649
            }
 
52650
        }
 
52651
        return returnValue;
 
52652
    }
 
52653
    else
 
52654
    {
 
52655
return floatDataEnd( &ColladaParserAutoGen15::data__fixed4x2 );
 
52656
    }
 
52657
#else
 
52658
    {
 
52659
return floatDataEnd( &ColladaParserAutoGen15::data__fixed4x2 );
 
52660
    } // validation
 
52661
#endif
 
52662
 
 
52663
}
 
52664
 
 
52665
//---------------------------------------------------------------------
 
52666
bool ColladaParserAutoGen15Private::_freeAttributes__fixed4x2( void* attributeData )
 
52667
{
 
52668
    return true;
 
52669
}
 
52670
 
 
52671
//---------------------------------------------------------------------
 
52672
bool ColladaParserAutoGen15Private::_data__fixed4x3( const ParserChar* text, size_t textLength )
 
52673
{
 
52674
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52675
    if ( mValidate )
 
52676
    {
 
52677
        float4x3__ValidationData* validationData = (float4x3__ValidationData*)mValidationDataStack.top();
 
52678
        DISABLE_WARNING_UNUSED(validationData)
 
52679
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed4x3, &validate__float4x3_type__stream, &validationData->validationWholeSize, 0);
 
52680
    }
 
52681
    else
 
52682
    {
 
52683
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed4x3);
 
52684
    }
 
52685
#else
 
52686
    {
 
52687
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed4x3);
 
52688
    } // validation
 
52689
#endif
 
52690
 
 
52691
}
 
52692
 
 
52693
//---------------------------------------------------------------------
 
52694
bool ColladaParserAutoGen15Private::_preBegin__fixed4x3( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
52695
{
 
52696
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52697
    if ( mValidate )
 
52698
    {
 
52699
 
 
52700
        bool validationResult = _validateBegin__fixed4x3( attributes, attributeDataPtr, validationDataPtr );
 
52701
        if ( !validationResult ) return false;
 
52702
 
 
52703
    } // validation
 
52704
#endif
 
52705
 
 
52706
    return true;
 
52707
}
 
52708
 
 
52709
//---------------------------------------------------------------------
 
52710
bool ColladaParserAutoGen15Private::_preEnd__fixed4x3()
 
52711
{
 
52712
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52713
    if ( mValidate )
 
52714
    {
 
52715
 
 
52716
        bool validationResult = _validateEnd__fixed4x3();
 
52717
        if ( !validationResult ) return false;
 
52718
 
 
52719
    } // validation
 
52720
#endif
 
52721
 
 
52722
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52723
    if ( mValidate )
 
52724
    {
 
52725
        float4x3__ValidationData* validationData = (float4x3__ValidationData*)mValidationDataStack.top();
 
52726
        DISABLE_WARNING_UNUSED(validationData)
 
52727
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__fixed4x3, &validate__float4x3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
52728
        ParserError::ErrorType simpleTypeValidationResult = validate__float4x3_type(0, (*(&validationData->validationWholeSize)));
 
52729
        mValidationDataStack.deleteObject();
 
52730
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
52731
        {
 
52732
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
52733
                simpleTypeValidationResult,
 
52734
                HASH_ELEMENT_FIXED4X3,
 
52735
                (ParserChar*)0, 0 ) )
 
52736
            {
 
52737
                return false;
 
52738
            }
 
52739
        }
 
52740
        return returnValue;
 
52741
    }
 
52742
    else
 
52743
    {
 
52744
return floatDataEnd( &ColladaParserAutoGen15::data__fixed4x3 );
 
52745
    }
 
52746
#else
 
52747
    {
 
52748
return floatDataEnd( &ColladaParserAutoGen15::data__fixed4x3 );
 
52749
    } // validation
 
52750
#endif
 
52751
 
 
52752
}
 
52753
 
 
52754
//---------------------------------------------------------------------
 
52755
bool ColladaParserAutoGen15Private::_freeAttributes__fixed4x3( void* attributeData )
 
52756
{
 
52757
    return true;
 
52758
}
 
52759
 
 
52760
//---------------------------------------------------------------------
 
52761
bool ColladaParserAutoGen15Private::_data__fixed4x4( const ParserChar* text, size_t textLength )
 
52762
{
 
52763
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52764
    if ( mValidate )
 
52765
    {
 
52766
        bind_shape_matrix__ValidationData* validationData = (bind_shape_matrix__ValidationData*)mValidationDataStack.top();
 
52767
        DISABLE_WARNING_UNUSED(validationData)
 
52768
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed4x4, &validate__float4x4_type__stream, &validationData->validationWholeSize, 0);
 
52769
    }
 
52770
    else
 
52771
    {
 
52772
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed4x4);
 
52773
    }
 
52774
#else
 
52775
    {
 
52776
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__fixed4x4);
 
52777
    } // validation
 
52778
#endif
 
52779
 
 
52780
}
 
52781
 
 
52782
//---------------------------------------------------------------------
 
52783
bool ColladaParserAutoGen15Private::_preBegin__fixed4x4( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
52784
{
 
52785
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52786
    if ( mValidate )
 
52787
    {
 
52788
 
 
52789
        bool validationResult = _validateBegin__fixed4x4( attributes, attributeDataPtr, validationDataPtr );
 
52790
        if ( !validationResult ) return false;
 
52791
 
 
52792
    } // validation
 
52793
#endif
 
52794
 
 
52795
    return true;
 
52796
}
 
52797
 
 
52798
//---------------------------------------------------------------------
 
52799
bool ColladaParserAutoGen15Private::_preEnd__fixed4x4()
 
52800
{
 
52801
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52802
    if ( mValidate )
 
52803
    {
 
52804
 
 
52805
        bool validationResult = _validateEnd__fixed4x4();
 
52806
        if ( !validationResult ) return false;
 
52807
 
 
52808
    } // validation
 
52809
#endif
 
52810
 
 
52811
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52812
    if ( mValidate )
 
52813
    {
 
52814
        bind_shape_matrix__ValidationData* validationData = (bind_shape_matrix__ValidationData*)mValidationDataStack.top();
 
52815
        DISABLE_WARNING_UNUSED(validationData)
 
52816
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__fixed4x4, &validate__float4x4_type__streamEnd, &validationData->validationWholeSize, 0 );
 
52817
        ParserError::ErrorType simpleTypeValidationResult = validate__float4x4_type(0, (*(&validationData->validationWholeSize)));
 
52818
        mValidationDataStack.deleteObject();
 
52819
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
52820
        {
 
52821
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
52822
                simpleTypeValidationResult,
 
52823
                HASH_ELEMENT_FIXED4X4,
 
52824
                (ParserChar*)0, 0 ) )
 
52825
            {
 
52826
                return false;
 
52827
            }
 
52828
        }
 
52829
        return returnValue;
 
52830
    }
 
52831
    else
 
52832
    {
 
52833
return floatDataEnd( &ColladaParserAutoGen15::data__fixed4x4 );
 
52834
    }
 
52835
#else
 
52836
    {
 
52837
return floatDataEnd( &ColladaParserAutoGen15::data__fixed4x4 );
 
52838
    } // validation
 
52839
#endif
 
52840
 
 
52841
}
 
52842
 
 
52843
//---------------------------------------------------------------------
 
52844
bool ColladaParserAutoGen15Private::_freeAttributes__fixed4x4( void* attributeData )
 
52845
{
 
52846
    return true;
 
52847
}
 
52848
 
 
52849
//---------------------------------------------------------------------
 
52850
const array____cg_array_type__AttributeData array____cg_array_type__AttributeData::DEFAULT = {0, 0, false};
 
52851
 
 
52852
//---------------------------------------------------------------------
 
52853
bool ColladaParserAutoGen15Private::_data__array____cg_array_type( const ParserChar* text, size_t textLength )
 
52854
{
 
52855
    return true;
 
52856
}
 
52857
 
 
52858
//---------------------------------------------------------------------
 
52859
bool ColladaParserAutoGen15Private::_preBegin__array____cg_array_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
52860
{
 
52861
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52862
    if ( mValidate )
 
52863
    {
 
52864
 
 
52865
        bool validationResult = _validateBegin__array____cg_array_type( attributes, attributeDataPtr, validationDataPtr );
 
52866
        if ( !validationResult ) return false;
 
52867
 
 
52868
    } // validation
 
52869
#endif
 
52870
 
 
52871
array____cg_array_type__AttributeData* attributeData = newData<array____cg_array_type__AttributeData>(attributeDataPtr);
 
52872
 
 
52873
const ParserChar** attributeArray = attributes.attributes;
 
52874
if ( attributeArray )
 
52875
{
 
52876
    while (true)
 
52877
    {
 
52878
        const ParserChar * attribute = *attributeArray;
 
52879
        if ( !attribute )
 
52880
            break;
 
52881
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
52882
        attributeArray++;
 
52883
        if ( !attributeArray )
 
52884
            return false;
 
52885
        const ParserChar* attributeValue = *attributeArray;
 
52886
        attributeArray++;
 
52887
 
 
52888
 
 
52889
    switch ( hash )
 
52890
    {
 
52891
    case HASH_ATTRIBUTE_LENGTH:
 
52892
    {
 
52893
bool failed;
 
52894
attributeData->length = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
52895
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
52896
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
52897
        HASH_ELEMENT_ARRAY,
 
52898
        HASH_ATTRIBUTE_LENGTH,
 
52899
        attributeValue))
 
52900
{
 
52901
    return false;
 
52902
}
 
52903
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52904
    if ( mValidate )
 
52905
    {
 
52906
    ParserError::ErrorType simpleTypeValidationResult = validate__positiveInteger(attributeData->length);
 
52907
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
52908
    {
 
52909
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
52910
            simpleTypeValidationResult,
 
52911
            HASH_ELEMENT_ARRAY,
 
52912
            HASH_ATTRIBUTE_LENGTH,
 
52913
            attributeValue) )
 
52914
        {
 
52915
            return false;
 
52916
        }
 
52917
    }
 
52918
    } // validation
 
52919
#endif
 
52920
if ( !failed )
 
52921
    attributeData->present_attributes |= array____cg_array_type__AttributeData::ATTRIBUTE_LENGTH_PRESENT;
 
52922
 
 
52923
    break;
 
52924
    }
 
52925
    case HASH_ATTRIBUTE_RESIZABLE:
 
52926
    {
 
52927
bool failed;
 
52928
attributeData->resizable = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
52929
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
52930
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
52931
        HASH_ELEMENT_ARRAY,
 
52932
        HASH_ATTRIBUTE_RESIZABLE,
 
52933
        attributeValue))
 
52934
{
 
52935
    return false;
 
52936
}
 
52937
 
 
52938
    break;
 
52939
    }
 
52940
    default:
 
52941
    {
 
52942
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_ARRAY, attribute, attributeValue))
 
52943
            {return false;}
 
52944
    }
 
52945
    }
 
52946
    }
 
52947
}
 
52948
if ( (attributeData->present_attributes & array____cg_array_type__AttributeData::ATTRIBUTE_LENGTH_PRESENT) == 0 )
 
52949
{
 
52950
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_ARRAY, HASH_ATTRIBUTE_LENGTH, 0 ) )
 
52951
        return false;
 
52952
}
 
52953
 
 
52954
 
 
52955
    return true;
 
52956
}
 
52957
 
 
52958
//---------------------------------------------------------------------
 
52959
bool ColladaParserAutoGen15Private::_preEnd__array____cg_array_type()
 
52960
{
 
52961
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52962
    if ( mValidate )
 
52963
    {
 
52964
 
 
52965
        bool validationResult = _validateEnd__array____cg_array_type();
 
52966
        if ( !validationResult ) return false;
 
52967
 
 
52968
    } // validation
 
52969
#endif
 
52970
 
 
52971
    return true;
 
52972
}
 
52973
 
 
52974
//---------------------------------------------------------------------
 
52975
bool ColladaParserAutoGen15Private::_freeAttributes__array____cg_array_type( void* attributeData )
 
52976
{
 
52977
    array____cg_array_type__AttributeData* typedAttributeData = static_cast<array____cg_array_type__AttributeData*>(attributeData);
 
52978
 
 
52979
    typedAttributeData->~array____cg_array_type__AttributeData();
 
52980
 
 
52981
    return true;
 
52982
}
 
52983
 
 
52984
//---------------------------------------------------------------------
 
52985
const usertype____cg_user_type__AttributeData usertype____cg_user_type__AttributeData::DEFAULT = {0, 0};
 
52986
 
 
52987
//---------------------------------------------------------------------
 
52988
bool ColladaParserAutoGen15Private::_data__usertype____cg_user_type( const ParserChar* text, size_t textLength )
 
52989
{
 
52990
    return true;
 
52991
}
 
52992
 
 
52993
//---------------------------------------------------------------------
 
52994
bool ColladaParserAutoGen15Private::_preBegin__usertype____cg_user_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
52995
{
 
52996
#ifdef GENERATEDSAXPARSER_VALIDATION
 
52997
    if ( mValidate )
 
52998
    {
 
52999
 
 
53000
        bool validationResult = _validateBegin__usertype____cg_user_type( attributes, attributeDataPtr, validationDataPtr );
 
53001
        if ( !validationResult ) return false;
 
53002
 
 
53003
    } // validation
 
53004
#endif
 
53005
 
 
53006
usertype____cg_user_type__AttributeData* attributeData = newData<usertype____cg_user_type__AttributeData>(attributeDataPtr);
 
53007
 
 
53008
const ParserChar** attributeArray = attributes.attributes;
 
53009
if ( attributeArray )
 
53010
{
 
53011
    while (true)
 
53012
    {
 
53013
        const ParserChar * attribute = *attributeArray;
 
53014
        if ( !attribute )
 
53015
            break;
 
53016
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
53017
        attributeArray++;
 
53018
        if ( !attributeArray )
 
53019
            return false;
 
53020
        const ParserChar* attributeValue = *attributeArray;
 
53021
        attributeArray++;
 
53022
 
 
53023
 
 
53024
    switch ( hash )
 
53025
    {
 
53026
    case HASH_ATTRIBUTE_TYPENAME:
 
53027
    {
 
53028
 
 
53029
attributeData->_typename = attributeValue;
 
53030
 
 
53031
    break;
 
53032
    }
 
53033
    case HASH_ATTRIBUTE_SOURCE:
 
53034
    {
 
53035
 
 
53036
attributeData->source = attributeValue;
 
53037
#ifdef GENERATEDSAXPARSER_VALIDATION
 
53038
    if ( mValidate )
 
53039
    {
 
53040
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->source, strlen(attributeData->source));
 
53041
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
53042
    {
 
53043
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
53044
            simpleTypeValidationResult,
 
53045
            HASH_ELEMENT_USERTYPE,
 
53046
            HASH_ATTRIBUTE_SOURCE,
 
53047
            attributeValue) )
 
53048
        {
 
53049
            return false;
 
53050
        }
 
53051
    }
 
53052
    } // validation
 
53053
#endif
 
53054
 
 
53055
    break;
 
53056
    }
 
53057
    default:
 
53058
    {
 
53059
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_USERTYPE, attribute, attributeValue))
 
53060
            {return false;}
 
53061
    }
 
53062
    }
 
53063
    }
 
53064
}
 
53065
if ( !attributeData->_typename )
 
53066
{
 
53067
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_USERTYPE, HASH_ATTRIBUTE_TYPENAME, 0 ) )
 
53068
        return false;
 
53069
}
 
53070
 
 
53071
 
 
53072
    return true;
 
53073
}
 
53074
 
 
53075
//---------------------------------------------------------------------
 
53076
bool ColladaParserAutoGen15Private::_preEnd__usertype____cg_user_type()
 
53077
{
 
53078
#ifdef GENERATEDSAXPARSER_VALIDATION
 
53079
    if ( mValidate )
 
53080
    {
 
53081
 
 
53082
        bool validationResult = _validateEnd__usertype____cg_user_type();
 
53083
        if ( !validationResult ) return false;
 
53084
 
 
53085
    } // validation
 
53086
#endif
 
53087
 
 
53088
    return true;
 
53089
}
 
53090
 
 
53091
//---------------------------------------------------------------------
 
53092
bool ColladaParserAutoGen15Private::_freeAttributes__usertype____cg_user_type( void* attributeData )
 
53093
{
 
53094
    usertype____cg_user_type__AttributeData* typedAttributeData = static_cast<usertype____cg_user_type__AttributeData*>(attributeData);
 
53095
 
 
53096
    typedAttributeData->~usertype____cg_user_type__AttributeData();
 
53097
 
 
53098
    return true;
 
53099
}
 
53100
 
 
53101
//---------------------------------------------------------------------
 
53102
const setparam____cg_setparam_type__AttributeData setparam____cg_setparam_type__AttributeData::DEFAULT = {0};
 
53103
 
 
53104
//---------------------------------------------------------------------
 
53105
bool ColladaParserAutoGen15Private::_data__setparam____cg_setparam_type( const ParserChar* text, size_t textLength )
 
53106
{
 
53107
    return true;
 
53108
}
 
53109
 
 
53110
//---------------------------------------------------------------------
 
53111
bool ColladaParserAutoGen15Private::_preBegin__setparam____cg_setparam_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
53112
{
 
53113
#ifdef GENERATEDSAXPARSER_VALIDATION
 
53114
    if ( mValidate )
 
53115
    {
 
53116
 
 
53117
        bool validationResult = _validateBegin__setparam____cg_setparam_type( attributes, attributeDataPtr, validationDataPtr );
 
53118
        if ( !validationResult ) return false;
 
53119
 
 
53120
    } // validation
 
53121
#endif
 
53122
 
 
53123
setparam____cg_setparam_type__AttributeData* attributeData = newData<setparam____cg_setparam_type__AttributeData>(attributeDataPtr);
 
53124
 
 
53125
const ParserChar** attributeArray = attributes.attributes;
 
53126
if ( attributeArray )
 
53127
{
 
53128
    while (true)
 
53129
    {
 
53130
        const ParserChar * attribute = *attributeArray;
 
53131
        if ( !attribute )
 
53132
            break;
 
53133
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
53134
        attributeArray++;
 
53135
        if ( !attributeArray )
 
53136
            return false;
 
53137
        const ParserChar* attributeValue = *attributeArray;
 
53138
        attributeArray++;
 
53139
 
 
53140
 
 
53141
    switch ( hash )
 
53142
    {
 
53143
    case HASH_ATTRIBUTE_REF:
 
53144
    {
 
53145
 
 
53146
attributeData->ref = attributeValue;
 
53147
 
 
53148
    break;
 
53149
    }
 
53150
    default:
 
53151
    {
 
53152
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SETPARAM, attribute, attributeValue))
 
53153
            {return false;}
 
53154
    }
 
53155
    }
 
53156
    }
 
53157
}
 
53158
if ( !attributeData->ref )
 
53159
{
 
53160
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_SETPARAM, HASH_ATTRIBUTE_REF, 0 ) )
 
53161
        return false;
 
53162
}
 
53163
 
 
53164
 
 
53165
    return true;
 
53166
}
 
53167
 
 
53168
//---------------------------------------------------------------------
 
53169
bool ColladaParserAutoGen15Private::_preEnd__setparam____cg_setparam_type()
 
53170
{
 
53171
#ifdef GENERATEDSAXPARSER_VALIDATION
 
53172
    if ( mValidate )
 
53173
    {
 
53174
 
 
53175
        bool validationResult = _validateEnd__setparam____cg_setparam_type();
 
53176
        if ( !validationResult ) return false;
 
53177
 
 
53178
    } // validation
 
53179
#endif
 
53180
 
 
53181
    return true;
 
53182
}
 
53183
 
 
53184
//---------------------------------------------------------------------
 
53185
bool ColladaParserAutoGen15Private::_freeAttributes__setparam____cg_setparam_type( void* attributeData )
 
53186
{
 
53187
    setparam____cg_setparam_type__AttributeData* typedAttributeData = static_cast<setparam____cg_setparam_type__AttributeData*>(attributeData);
 
53188
 
 
53189
    typedAttributeData->~setparam____cg_setparam_type__AttributeData();
 
53190
 
 
53191
    return true;
 
53192
}
 
53193
 
 
53194
//---------------------------------------------------------------------
 
53195
const profile_cg_type____technique__AttributeData profile_cg_type____technique__AttributeData::DEFAULT = {0, 0};
 
53196
 
 
53197
//---------------------------------------------------------------------
 
53198
bool ColladaParserAutoGen15Private::_data__profile_cg_type____technique( const ParserChar* text, size_t textLength )
 
53199
{
 
53200
    return true;
 
53201
}
 
53202
 
 
53203
//---------------------------------------------------------------------
 
53204
bool ColladaParserAutoGen15Private::_preBegin__profile_cg_type____technique( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
53205
{
 
53206
#ifdef GENERATEDSAXPARSER_VALIDATION
 
53207
    if ( mValidate )
 
53208
    {
 
53209
 
 
53210
        bool validationResult = _validateBegin__profile_cg_type____technique( attributes, attributeDataPtr, validationDataPtr );
 
53211
        if ( !validationResult ) return false;
 
53212
 
 
53213
    } // validation
 
53214
#endif
 
53215
 
 
53216
profile_cg_type____technique__AttributeData* attributeData = newData<profile_cg_type____technique__AttributeData>(attributeDataPtr);
 
53217
 
 
53218
const ParserChar** attributeArray = attributes.attributes;
 
53219
if ( attributeArray )
 
53220
{
 
53221
    while (true)
 
53222
    {
 
53223
        const ParserChar * attribute = *attributeArray;
 
53224
        if ( !attribute )
 
53225
            break;
 
53226
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
53227
        attributeArray++;
 
53228
        if ( !attributeArray )
 
53229
            return false;
 
53230
        const ParserChar* attributeValue = *attributeArray;
 
53231
        attributeArray++;
 
53232
 
 
53233
 
 
53234
    switch ( hash )
 
53235
    {
 
53236
    case HASH_ATTRIBUTE_ID:
 
53237
    {
 
53238
 
 
53239
attributeData->id = attributeValue;
 
53240
 
 
53241
    break;
 
53242
    }
 
53243
    case HASH_ATTRIBUTE_SID:
 
53244
    {
 
53245
 
 
53246
attributeData->sid = attributeValue;
 
53247
#ifdef GENERATEDSAXPARSER_VALIDATION
 
53248
    if ( mValidate )
 
53249
    {
 
53250
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
53251
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
53252
    {
 
53253
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
53254
            simpleTypeValidationResult,
 
53255
            HASH_ELEMENT_TECHNIQUE,
 
53256
            HASH_ATTRIBUTE_SID,
 
53257
            attributeValue) )
 
53258
        {
 
53259
            return false;
 
53260
        }
 
53261
    }
 
53262
    } // validation
 
53263
#endif
 
53264
 
 
53265
    break;
 
53266
    }
 
53267
    default:
 
53268
    {
 
53269
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_TECHNIQUE, attribute, attributeValue))
 
53270
            {return false;}
 
53271
    }
 
53272
    }
 
53273
    }
 
53274
}
 
53275
if ( !attributeData->sid )
 
53276
{
 
53277
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_TECHNIQUE, HASH_ATTRIBUTE_SID, 0 ) )
 
53278
        return false;
 
53279
}
 
53280
 
 
53281
 
 
53282
    return true;
 
53283
}
 
53284
 
 
53285
//---------------------------------------------------------------------
 
53286
bool ColladaParserAutoGen15Private::_preEnd__profile_cg_type____technique()
 
53287
{
 
53288
#ifdef GENERATEDSAXPARSER_VALIDATION
 
53289
    if ( mValidate )
 
53290
    {
 
53291
 
 
53292
        bool validationResult = _validateEnd__profile_cg_type____technique();
 
53293
        if ( !validationResult ) return false;
 
53294
 
 
53295
    } // validation
 
53296
#endif
 
53297
 
 
53298
    return true;
 
53299
}
 
53300
 
 
53301
//---------------------------------------------------------------------
 
53302
bool ColladaParserAutoGen15Private::_freeAttributes__profile_cg_type____technique( void* attributeData )
 
53303
{
 
53304
    profile_cg_type____technique__AttributeData* typedAttributeData = static_cast<profile_cg_type____technique__AttributeData*>(attributeData);
 
53305
 
 
53306
    typedAttributeData->~profile_cg_type____technique__AttributeData();
 
53307
 
 
53308
    return true;
 
53309
}
 
53310
 
 
53311
//---------------------------------------------------------------------
 
53312
const pass____cg_pass_type__AttributeData pass____cg_pass_type__AttributeData::DEFAULT = {0};
 
53313
 
 
53314
//---------------------------------------------------------------------
 
53315
bool ColladaParserAutoGen15Private::_data__pass____cg_pass_type( const ParserChar* text, size_t textLength )
 
53316
{
 
53317
    return true;
 
53318
}
 
53319
 
 
53320
//---------------------------------------------------------------------
 
53321
bool ColladaParserAutoGen15Private::_preBegin__pass____cg_pass_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
53322
{
 
53323
#ifdef GENERATEDSAXPARSER_VALIDATION
 
53324
    if ( mValidate )
 
53325
    {
 
53326
 
 
53327
        bool validationResult = _validateBegin__pass____cg_pass_type( attributes, attributeDataPtr, validationDataPtr );
 
53328
        if ( !validationResult ) return false;
 
53329
 
 
53330
    } // validation
 
53331
#endif
 
53332
 
 
53333
pass____cg_pass_type__AttributeData* attributeData = newData<pass____cg_pass_type__AttributeData>(attributeDataPtr);
 
53334
 
 
53335
const ParserChar** attributeArray = attributes.attributes;
 
53336
if ( attributeArray )
 
53337
{
 
53338
    while (true)
 
53339
    {
 
53340
        const ParserChar * attribute = *attributeArray;
 
53341
        if ( !attribute )
 
53342
            break;
 
53343
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
53344
        attributeArray++;
 
53345
        if ( !attributeArray )
 
53346
            return false;
 
53347
        const ParserChar* attributeValue = *attributeArray;
 
53348
        attributeArray++;
 
53349
 
 
53350
 
 
53351
    switch ( hash )
 
53352
    {
 
53353
    case HASH_ATTRIBUTE_SID:
 
53354
    {
 
53355
 
 
53356
attributeData->sid = attributeValue;
 
53357
#ifdef GENERATEDSAXPARSER_VALIDATION
 
53358
    if ( mValidate )
 
53359
    {
 
53360
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
53361
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
53362
    {
 
53363
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
53364
            simpleTypeValidationResult,
 
53365
            HASH_ELEMENT_PASS,
 
53366
            HASH_ATTRIBUTE_SID,
 
53367
            attributeValue) )
 
53368
        {
 
53369
            return false;
 
53370
        }
 
53371
    }
 
53372
    } // validation
 
53373
#endif
 
53374
 
 
53375
    break;
 
53376
    }
 
53377
    default:
 
53378
    {
 
53379
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_PASS, attribute, attributeValue))
 
53380
            {return false;}
 
53381
    }
 
53382
    }
 
53383
    }
 
53384
}
 
53385
 
 
53386
 
 
53387
    return true;
 
53388
}
 
53389
 
 
53390
//---------------------------------------------------------------------
 
53391
bool ColladaParserAutoGen15Private::_preEnd__pass____cg_pass_type()
 
53392
{
 
53393
#ifdef GENERATEDSAXPARSER_VALIDATION
 
53394
    if ( mValidate )
 
53395
    {
 
53396
 
 
53397
        bool validationResult = _validateEnd__pass____cg_pass_type();
 
53398
        if ( !validationResult ) return false;
 
53399
 
 
53400
    } // validation
 
53401
#endif
 
53402
 
 
53403
    return true;
 
53404
}
 
53405
 
 
53406
//---------------------------------------------------------------------
 
53407
bool ColladaParserAutoGen15Private::_freeAttributes__pass____cg_pass_type( void* attributeData )
 
53408
{
 
53409
    pass____cg_pass_type__AttributeData* typedAttributeData = static_cast<pass____cg_pass_type__AttributeData*>(attributeData);
 
53410
 
 
53411
    typedAttributeData->~pass____cg_pass_type__AttributeData();
 
53412
 
 
53413
    return true;
 
53414
}
 
53415
 
 
53416
//---------------------------------------------------------------------
 
53417
bool ColladaParserAutoGen15Private::_data__cg_pass_type____states( const ParserChar* text, size_t textLength )
 
53418
{
 
53419
    return true;
 
53420
}
 
53421
 
 
53422
//---------------------------------------------------------------------
 
53423
bool ColladaParserAutoGen15Private::_preBegin__cg_pass_type____states( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
53424
{
 
53425
#ifdef GENERATEDSAXPARSER_VALIDATION
 
53426
    if ( mValidate )
 
53427
    {
 
53428
 
 
53429
        bool validationResult = _validateBegin__cg_pass_type____states( attributes, attributeDataPtr, validationDataPtr );
 
53430
        if ( !validationResult ) return false;
 
53431
 
 
53432
    } // validation
 
53433
#endif
 
53434
 
 
53435
    return true;
 
53436
}
 
53437
 
 
53438
//---------------------------------------------------------------------
 
53439
bool ColladaParserAutoGen15Private::_preEnd__cg_pass_type____states()
 
53440
{
 
53441
#ifdef GENERATEDSAXPARSER_VALIDATION
 
53442
    if ( mValidate )
 
53443
    {
 
53444
 
 
53445
        bool validationResult = _validateEnd__cg_pass_type____states();
 
53446
        if ( !validationResult ) return false;
 
53447
 
 
53448
    } // validation
 
53449
#endif
 
53450
 
 
53451
    return true;
 
53452
}
 
53453
 
 
53454
//---------------------------------------------------------------------
 
53455
bool ColladaParserAutoGen15Private::_freeAttributes__cg_pass_type____states( void* attributeData )
 
53456
{
 
53457
    return true;
 
53458
}
 
53459
 
 
53460
//---------------------------------------------------------------------
 
53461
bool ColladaParserAutoGen15Private::_data__cg_pass_type____program( const ParserChar* text, size_t textLength )
 
53462
{
 
53463
    return true;
 
53464
}
 
53465
 
 
53466
//---------------------------------------------------------------------
 
53467
bool ColladaParserAutoGen15Private::_preBegin__cg_pass_type____program( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
53468
{
 
53469
#ifdef GENERATEDSAXPARSER_VALIDATION
 
53470
    if ( mValidate )
 
53471
    {
 
53472
 
 
53473
        bool validationResult = _validateBegin__cg_pass_type____program( attributes, attributeDataPtr, validationDataPtr );
 
53474
        if ( !validationResult ) return false;
 
53475
 
 
53476
    } // validation
 
53477
#endif
 
53478
 
 
53479
    return true;
 
53480
}
 
53481
 
 
53482
//---------------------------------------------------------------------
 
53483
bool ColladaParserAutoGen15Private::_preEnd__cg_pass_type____program()
 
53484
{
 
53485
#ifdef GENERATEDSAXPARSER_VALIDATION
 
53486
    if ( mValidate )
 
53487
    {
 
53488
 
 
53489
        bool validationResult = _validateEnd__cg_pass_type____program();
 
53490
        if ( !validationResult ) return false;
 
53491
 
 
53492
    } // validation
 
53493
#endif
 
53494
 
 
53495
    return true;
 
53496
}
 
53497
 
 
53498
//---------------------------------------------------------------------
 
53499
bool ColladaParserAutoGen15Private::_freeAttributes__cg_pass_type____program( void* attributeData )
 
53500
{
 
53501
    return true;
 
53502
}
 
53503
 
 
53504
//---------------------------------------------------------------------
 
53505
const profile_CG__technique__pass__program__shader__AttributeData profile_CG__technique__pass__program__shader__AttributeData::DEFAULT = {ENUM__fx_pipeline_stage_enum__NOT_PRESENT};
 
53506
 
 
53507
//---------------------------------------------------------------------
 
53508
bool ColladaParserAutoGen15Private::_data__profile_CG__technique__pass__program__shader( const ParserChar* text, size_t textLength )
 
53509
{
 
53510
    return true;
 
53511
}
 
53512
 
 
53513
//---------------------------------------------------------------------
 
53514
bool ColladaParserAutoGen15Private::_preBegin__profile_CG__technique__pass__program__shader( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
53515
{
 
53516
#ifdef GENERATEDSAXPARSER_VALIDATION
 
53517
    if ( mValidate )
 
53518
    {
 
53519
 
 
53520
        bool validationResult = _validateBegin__profile_CG__technique__pass__program__shader( attributes, attributeDataPtr, validationDataPtr );
 
53521
        if ( !validationResult ) return false;
 
53522
 
 
53523
    } // validation
 
53524
#endif
 
53525
 
 
53526
profile_CG__technique__pass__program__shader__AttributeData* attributeData = newData<profile_CG__technique__pass__program__shader__AttributeData>(attributeDataPtr);
 
53527
 
 
53528
const ParserChar** attributeArray = attributes.attributes;
 
53529
if ( attributeArray )
 
53530
{
 
53531
    while (true)
 
53532
    {
 
53533
        const ParserChar * attribute = *attributeArray;
 
53534
        if ( !attribute )
 
53535
            break;
 
53536
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
53537
        attributeArray++;
 
53538
        if ( !attributeArray )
 
53539
            return false;
 
53540
        const ParserChar* attributeValue = *attributeArray;
 
53541
        attributeArray++;
 
53542
 
 
53543
 
 
53544
    switch ( hash )
 
53545
    {
 
53546
    case HASH_ATTRIBUTE_STAGE:
 
53547
    {
 
53548
bool failed;
 
53549
attributeData->stage = Utils::toEnum<ENUM__fx_pipeline_stage_enum, StringHash, ENUM__fx_pipeline_stage_enum__COUNT>(attributeValue, failed, ENUM__fx_pipeline_stage_enumMap, Utils::calculateStringHash);
 
53550
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
53551
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
53552
        HASH_ELEMENT_SHADER,
 
53553
        HASH_ATTRIBUTE_STAGE,
 
53554
        attributeValue))
 
53555
{
 
53556
    return false;
 
53557
}
 
53558
 
 
53559
    break;
 
53560
    }
 
53561
    default:
 
53562
    {
 
53563
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SHADER, attribute, attributeValue))
 
53564
            {return false;}
 
53565
    }
 
53566
    }
 
53567
    }
 
53568
}
 
53569
if ( attributeData->stage == ENUM__fx_pipeline_stage_enum__NOT_PRESENT )
 
53570
{
 
53571
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_SHADER, HASH_ATTRIBUTE_STAGE, 0 ) )
 
53572
        return false;
 
53573
}
 
53574
 
 
53575
 
 
53576
    return true;
 
53577
}
 
53578
 
 
53579
//---------------------------------------------------------------------
 
53580
bool ColladaParserAutoGen15Private::_preEnd__profile_CG__technique__pass__program__shader()
 
53581
{
 
53582
#ifdef GENERATEDSAXPARSER_VALIDATION
 
53583
    if ( mValidate )
 
53584
    {
 
53585
 
 
53586
        bool validationResult = _validateEnd__profile_CG__technique__pass__program__shader();
 
53587
        if ( !validationResult ) return false;
 
53588
 
 
53589
    } // validation
 
53590
#endif
 
53591
 
 
53592
    return true;
 
53593
}
 
53594
 
 
53595
//---------------------------------------------------------------------
 
53596
bool ColladaParserAutoGen15Private::_freeAttributes__profile_CG__technique__pass__program__shader( void* attributeData )
 
53597
{
 
53598
    profile_CG__technique__pass__program__shader__AttributeData* typedAttributeData = static_cast<profile_CG__technique__pass__program__shader__AttributeData*>(attributeData);
 
53599
 
 
53600
    typedAttributeData->~profile_CG__technique__pass__program__shader__AttributeData();
 
53601
 
 
53602
    return true;
 
53603
}
 
53604
 
 
53605
//---------------------------------------------------------------------
 
53606
const profile_CG__technique__pass__program__shader__sources__AttributeData profile_CG__technique__pass__program__shader__sources__AttributeData::DEFAULT = {0};
 
53607
 
 
53608
//---------------------------------------------------------------------
 
53609
bool ColladaParserAutoGen15Private::_data__profile_CG__technique__pass__program__shader__sources( const ParserChar* text, size_t textLength )
 
53610
{
 
53611
    return true;
 
53612
}
 
53613
 
 
53614
//---------------------------------------------------------------------
 
53615
bool ColladaParserAutoGen15Private::_preBegin__profile_CG__technique__pass__program__shader__sources( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
53616
{
 
53617
#ifdef GENERATEDSAXPARSER_VALIDATION
 
53618
    if ( mValidate )
 
53619
    {
 
53620
 
 
53621
        bool validationResult = _validateBegin__profile_CG__technique__pass__program__shader__sources( attributes, attributeDataPtr, validationDataPtr );
 
53622
        if ( !validationResult ) return false;
 
53623
 
 
53624
    } // validation
 
53625
#endif
 
53626
 
 
53627
profile_CG__technique__pass__program__shader__sources__AttributeData* attributeData = newData<profile_CG__technique__pass__program__shader__sources__AttributeData>(attributeDataPtr);
 
53628
 
 
53629
const ParserChar** attributeArray = attributes.attributes;
 
53630
if ( attributeArray )
 
53631
{
 
53632
    while (true)
 
53633
    {
 
53634
        const ParserChar * attribute = *attributeArray;
 
53635
        if ( !attribute )
 
53636
            break;
 
53637
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
53638
        attributeArray++;
 
53639
        if ( !attributeArray )
 
53640
            return false;
 
53641
        const ParserChar* attributeValue = *attributeArray;
 
53642
        attributeArray++;
 
53643
 
 
53644
 
 
53645
    switch ( hash )
 
53646
    {
 
53647
    case HASH_ATTRIBUTE_ENTRY:
 
53648
    {
 
53649
 
 
53650
attributeData->entry = attributeValue;
 
53651
 
 
53652
    break;
 
53653
    }
 
53654
    default:
 
53655
    {
 
53656
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SOURCES, attribute, attributeValue))
 
53657
            {return false;}
 
53658
    }
 
53659
    }
 
53660
    }
 
53661
}
 
53662
if ( !attributeData->entry )
 
53663
{
 
53664
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_SOURCES, HASH_ATTRIBUTE_ENTRY, 0 ) )
 
53665
        return false;
 
53666
}
 
53667
 
 
53668
 
 
53669
    return true;
 
53670
}
 
53671
 
 
53672
//---------------------------------------------------------------------
 
53673
bool ColladaParserAutoGen15Private::_preEnd__profile_CG__technique__pass__program__shader__sources()
 
53674
{
 
53675
#ifdef GENERATEDSAXPARSER_VALIDATION
 
53676
    if ( mValidate )
 
53677
    {
 
53678
 
 
53679
        bool validationResult = _validateEnd__profile_CG__technique__pass__program__shader__sources();
 
53680
        if ( !validationResult ) return false;
 
53681
 
 
53682
    } // validation
 
53683
#endif
 
53684
 
 
53685
    return true;
 
53686
}
 
53687
 
 
53688
//---------------------------------------------------------------------
 
53689
bool ColladaParserAutoGen15Private::_freeAttributes__profile_CG__technique__pass__program__shader__sources( void* attributeData )
 
53690
{
 
53691
    profile_CG__technique__pass__program__shader__sources__AttributeData* typedAttributeData = static_cast<profile_CG__technique__pass__program__shader__sources__AttributeData*>(attributeData);
 
53692
 
 
53693
    typedAttributeData->~profile_CG__technique__pass__program__shader__sources__AttributeData();
 
53694
 
 
53695
    return true;
 
53696
}
 
53697
 
 
53698
//---------------------------------------------------------------------
 
53699
const profile_CG__technique__pass__program__shader__bind_uniform__AttributeData profile_CG__technique__pass__program__shader__bind_uniform__AttributeData::DEFAULT = {0};
 
53700
 
 
53701
//---------------------------------------------------------------------
 
53702
bool ColladaParserAutoGen15Private::_data__profile_CG__technique__pass__program__shader__bind_uniform( const ParserChar* text, size_t textLength )
 
53703
{
 
53704
    return true;
 
53705
}
 
53706
 
 
53707
//---------------------------------------------------------------------
 
53708
bool ColladaParserAutoGen15Private::_preBegin__profile_CG__technique__pass__program__shader__bind_uniform( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
53709
{
 
53710
#ifdef GENERATEDSAXPARSER_VALIDATION
 
53711
    if ( mValidate )
 
53712
    {
 
53713
 
 
53714
        bool validationResult = _validateBegin__profile_CG__technique__pass__program__shader__bind_uniform( attributes, attributeDataPtr, validationDataPtr );
 
53715
        if ( !validationResult ) return false;
 
53716
 
 
53717
    } // validation
 
53718
#endif
 
53719
 
 
53720
profile_CG__technique__pass__program__shader__bind_uniform__AttributeData* attributeData = newData<profile_CG__technique__pass__program__shader__bind_uniform__AttributeData>(attributeDataPtr);
 
53721
 
 
53722
const ParserChar** attributeArray = attributes.attributes;
 
53723
if ( attributeArray )
 
53724
{
 
53725
    while (true)
 
53726
    {
 
53727
        const ParserChar * attribute = *attributeArray;
 
53728
        if ( !attribute )
 
53729
            break;
 
53730
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
53731
        attributeArray++;
 
53732
        if ( !attributeArray )
 
53733
            return false;
 
53734
        const ParserChar* attributeValue = *attributeArray;
 
53735
        attributeArray++;
 
53736
 
 
53737
 
 
53738
    switch ( hash )
 
53739
    {
 
53740
    case HASH_ATTRIBUTE_SYMBOL:
 
53741
    {
 
53742
 
 
53743
attributeData->symbol = attributeValue;
 
53744
#ifdef GENERATEDSAXPARSER_VALIDATION
 
53745
    if ( mValidate )
 
53746
    {
 
53747
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->symbol, strlen(attributeData->symbol));
 
53748
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
53749
    {
 
53750
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
53751
            simpleTypeValidationResult,
 
53752
            HASH_ELEMENT_BIND_UNIFORM,
 
53753
            HASH_ATTRIBUTE_SYMBOL,
 
53754
            attributeValue) )
 
53755
        {
 
53756
            return false;
 
53757
        }
 
53758
    }
 
53759
    } // validation
 
53760
#endif
 
53761
 
 
53762
    break;
 
53763
    }
 
53764
    default:
 
53765
    {
 
53766
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_BIND_UNIFORM, attribute, attributeValue))
 
53767
            {return false;}
 
53768
    }
 
53769
    }
 
53770
    }
 
53771
}
 
53772
if ( !attributeData->symbol )
 
53773
{
 
53774
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_BIND_UNIFORM, HASH_ATTRIBUTE_SYMBOL, 0 ) )
 
53775
        return false;
 
53776
}
 
53777
 
 
53778
 
 
53779
    return true;
 
53780
}
 
53781
 
 
53782
//---------------------------------------------------------------------
 
53783
bool ColladaParserAutoGen15Private::_preEnd__profile_CG__technique__pass__program__shader__bind_uniform()
 
53784
{
 
53785
#ifdef GENERATEDSAXPARSER_VALIDATION
 
53786
    if ( mValidate )
 
53787
    {
 
53788
 
 
53789
        bool validationResult = _validateEnd__profile_CG__technique__pass__program__shader__bind_uniform();
 
53790
        if ( !validationResult ) return false;
 
53791
 
 
53792
    } // validation
 
53793
#endif
 
53794
 
 
53795
    return true;
 
53796
}
 
53797
 
 
53798
//---------------------------------------------------------------------
 
53799
bool ColladaParserAutoGen15Private::_freeAttributes__profile_CG__technique__pass__program__shader__bind_uniform( void* attributeData )
 
53800
{
 
53801
    profile_CG__technique__pass__program__shader__bind_uniform__AttributeData* typedAttributeData = static_cast<profile_CG__technique__pass__program__shader__bind_uniform__AttributeData*>(attributeData);
 
53802
 
 
53803
    typedAttributeData->~profile_CG__technique__pass__program__shader__bind_uniform__AttributeData();
 
53804
 
 
53805
    return true;
 
53806
}
 
53807
 
 
53808
//---------------------------------------------------------------------
 
53809
const profile_CG__technique__pass__program__shader__bind_uniform__param__AttributeData profile_CG__technique__pass__program__shader__bind_uniform__param__AttributeData::DEFAULT = {0};
 
53810
 
 
53811
//---------------------------------------------------------------------
 
53812
bool ColladaParserAutoGen15Private::_data__profile_CG__technique__pass__program__shader__bind_uniform__param( const ParserChar* text, size_t textLength )
 
53813
{
 
53814
    return true;
 
53815
}
 
53816
 
 
53817
//---------------------------------------------------------------------
 
53818
bool ColladaParserAutoGen15Private::_preBegin__profile_CG__technique__pass__program__shader__bind_uniform__param( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
53819
{
 
53820
#ifdef GENERATEDSAXPARSER_VALIDATION
 
53821
    if ( mValidate )
 
53822
    {
 
53823
 
 
53824
        bool validationResult = _validateBegin__profile_CG__technique__pass__program__shader__bind_uniform__param( attributes, attributeDataPtr, validationDataPtr );
 
53825
        if ( !validationResult ) return false;
 
53826
 
 
53827
    } // validation
 
53828
#endif
 
53829
 
 
53830
profile_CG__technique__pass__program__shader__bind_uniform__param__AttributeData* attributeData = newData<profile_CG__technique__pass__program__shader__bind_uniform__param__AttributeData>(attributeDataPtr);
 
53831
 
 
53832
const ParserChar** attributeArray = attributes.attributes;
 
53833
if ( attributeArray )
 
53834
{
 
53835
    while (true)
 
53836
    {
 
53837
        const ParserChar * attribute = *attributeArray;
 
53838
        if ( !attribute )
 
53839
            break;
 
53840
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
53841
        attributeArray++;
 
53842
        if ( !attributeArray )
 
53843
            return false;
 
53844
        const ParserChar* attributeValue = *attributeArray;
 
53845
        attributeArray++;
 
53846
 
 
53847
 
 
53848
    switch ( hash )
 
53849
    {
 
53850
    case HASH_ATTRIBUTE_REF:
 
53851
    {
 
53852
 
 
53853
attributeData->ref = attributeValue;
 
53854
#ifdef GENERATEDSAXPARSER_VALIDATION
 
53855
    if ( mValidate )
 
53856
    {
 
53857
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->ref, strlen(attributeData->ref));
 
53858
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
53859
    {
 
53860
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
53861
            simpleTypeValidationResult,
 
53862
            HASH_ELEMENT_PARAM,
 
53863
            HASH_ATTRIBUTE_REF,
 
53864
            attributeValue) )
 
53865
        {
 
53866
            return false;
 
53867
        }
 
53868
    }
 
53869
    } // validation
 
53870
#endif
 
53871
 
 
53872
    break;
 
53873
    }
 
53874
    default:
 
53875
    {
 
53876
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_PARAM, attribute, attributeValue))
 
53877
            {return false;}
 
53878
    }
 
53879
    }
 
53880
    }
 
53881
}
 
53882
if ( !attributeData->ref )
 
53883
{
 
53884
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_PARAM, HASH_ATTRIBUTE_REF, 0 ) )
 
53885
        return false;
 
53886
}
 
53887
 
 
53888
 
 
53889
    return true;
 
53890
}
 
53891
 
 
53892
//---------------------------------------------------------------------
 
53893
bool ColladaParserAutoGen15Private::_preEnd__profile_CG__technique__pass__program__shader__bind_uniform__param()
 
53894
{
 
53895
#ifdef GENERATEDSAXPARSER_VALIDATION
 
53896
    if ( mValidate )
 
53897
    {
 
53898
 
 
53899
        bool validationResult = _validateEnd__profile_CG__technique__pass__program__shader__bind_uniform__param();
 
53900
        if ( !validationResult ) return false;
 
53901
 
 
53902
    } // validation
 
53903
#endif
 
53904
 
 
53905
    return true;
 
53906
}
 
53907
 
 
53908
//---------------------------------------------------------------------
 
53909
bool ColladaParserAutoGen15Private::_freeAttributes__profile_CG__technique__pass__program__shader__bind_uniform__param( void* attributeData )
 
53910
{
 
53911
    profile_CG__technique__pass__program__shader__bind_uniform__param__AttributeData* typedAttributeData = static_cast<profile_CG__technique__pass__program__shader__bind_uniform__param__AttributeData*>(attributeData);
 
53912
 
 
53913
    typedAttributeData->~profile_CG__technique__pass__program__shader__bind_uniform__param__AttributeData();
 
53914
 
 
53915
    return true;
 
53916
}
 
53917
 
 
53918
//---------------------------------------------------------------------
 
53919
bool ColladaParserAutoGen15Private::_data__cg_pass_type____evaluate( const ParserChar* text, size_t textLength )
 
53920
{
 
53921
    return true;
 
53922
}
 
53923
 
 
53924
//---------------------------------------------------------------------
 
53925
bool ColladaParserAutoGen15Private::_preBegin__cg_pass_type____evaluate( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
53926
{
 
53927
#ifdef GENERATEDSAXPARSER_VALIDATION
 
53928
    if ( mValidate )
 
53929
    {
 
53930
 
 
53931
        bool validationResult = _validateBegin__cg_pass_type____evaluate( attributes, attributeDataPtr, validationDataPtr );
 
53932
        if ( !validationResult ) return false;
 
53933
 
 
53934
    } // validation
 
53935
#endif
 
53936
 
 
53937
    return true;
 
53938
}
 
53939
 
 
53940
//---------------------------------------------------------------------
 
53941
bool ColladaParserAutoGen15Private::_preEnd__cg_pass_type____evaluate()
 
53942
{
 
53943
#ifdef GENERATEDSAXPARSER_VALIDATION
 
53944
    if ( mValidate )
 
53945
    {
 
53946
 
 
53947
        bool validationResult = _validateEnd__cg_pass_type____evaluate();
 
53948
        if ( !validationResult ) return false;
 
53949
 
 
53950
    } // validation
 
53951
#endif
 
53952
 
 
53953
    return true;
 
53954
}
 
53955
 
 
53956
//---------------------------------------------------------------------
 
53957
bool ColladaParserAutoGen15Private::_freeAttributes__cg_pass_type____evaluate( void* attributeData )
 
53958
{
 
53959
    return true;
 
53960
}
 
53961
 
 
53962
//---------------------------------------------------------------------
 
53963
const profile_GLES__AttributeData profile_GLES__AttributeData::DEFAULT = {0, (const ParserChar*)"PC"};
 
53964
 
 
53965
//---------------------------------------------------------------------
 
53966
bool ColladaParserAutoGen15Private::_data__profile_GLES( const ParserChar* text, size_t textLength )
 
53967
{
 
53968
    return true;
 
53969
}
 
53970
 
 
53971
//---------------------------------------------------------------------
 
53972
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
53973
{
 
53974
#ifdef GENERATEDSAXPARSER_VALIDATION
 
53975
    if ( mValidate )
 
53976
    {
 
53977
 
 
53978
        bool validationResult = _validateBegin__profile_GLES( attributes, attributeDataPtr, validationDataPtr );
 
53979
        if ( !validationResult ) return false;
 
53980
 
 
53981
    } // validation
 
53982
#endif
 
53983
 
 
53984
profile_GLES__AttributeData* attributeData = newData<profile_GLES__AttributeData>(attributeDataPtr);
 
53985
 
 
53986
const ParserChar** attributeArray = attributes.attributes;
 
53987
if ( attributeArray )
 
53988
{
 
53989
    while (true)
 
53990
    {
 
53991
        const ParserChar * attribute = *attributeArray;
 
53992
        if ( !attribute )
 
53993
            break;
 
53994
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
53995
        attributeArray++;
 
53996
        if ( !attributeArray )
 
53997
            return false;
 
53998
        const ParserChar* attributeValue = *attributeArray;
 
53999
        attributeArray++;
 
54000
 
 
54001
 
 
54002
    switch ( hash )
 
54003
    {
 
54004
    case HASH_ATTRIBUTE_ID:
 
54005
    {
 
54006
 
 
54007
attributeData->id = attributeValue;
 
54008
 
 
54009
    break;
 
54010
    }
 
54011
    case HASH_ATTRIBUTE_PLATFORM:
 
54012
    {
 
54013
 
 
54014
attributeData->platform = attributeValue;
 
54015
#ifdef GENERATEDSAXPARSER_VALIDATION
 
54016
    if ( mValidate )
 
54017
    {
 
54018
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->platform, strlen(attributeData->platform));
 
54019
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
54020
    {
 
54021
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
54022
            simpleTypeValidationResult,
 
54023
            HASH_ELEMENT_PROFILE_GLES,
 
54024
            HASH_ATTRIBUTE_PLATFORM,
 
54025
            attributeValue) )
 
54026
        {
 
54027
            return false;
 
54028
        }
 
54029
    }
 
54030
    } // validation
 
54031
#endif
 
54032
 
 
54033
    break;
 
54034
    }
 
54035
    default:
 
54036
    {
 
54037
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_PROFILE_GLES, attribute, attributeValue))
 
54038
            {return false;}
 
54039
    }
 
54040
    }
 
54041
    }
 
54042
}
 
54043
 
 
54044
 
 
54045
    return true;
 
54046
}
 
54047
 
 
54048
//---------------------------------------------------------------------
 
54049
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES()
 
54050
{
 
54051
#ifdef GENERATEDSAXPARSER_VALIDATION
 
54052
    if ( mValidate )
 
54053
    {
 
54054
 
 
54055
        bool validationResult = _validateEnd__profile_GLES();
 
54056
        if ( !validationResult ) return false;
 
54057
 
 
54058
    } // validation
 
54059
#endif
 
54060
 
 
54061
    return true;
 
54062
}
 
54063
 
 
54064
//---------------------------------------------------------------------
 
54065
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES( void* attributeData )
 
54066
{
 
54067
    profile_GLES__AttributeData* typedAttributeData = static_cast<profile_GLES__AttributeData*>(attributeData);
 
54068
 
 
54069
    typedAttributeData->~profile_GLES__AttributeData();
 
54070
 
 
54071
    return true;
 
54072
}
 
54073
 
 
54074
//---------------------------------------------------------------------
 
54075
const newparam____gles_newparam_type__AttributeData newparam____gles_newparam_type__AttributeData::DEFAULT = {0};
 
54076
 
 
54077
//---------------------------------------------------------------------
 
54078
bool ColladaParserAutoGen15Private::_data__newparam____gles_newparam_type( const ParserChar* text, size_t textLength )
 
54079
{
 
54080
    return true;
 
54081
}
 
54082
 
 
54083
//---------------------------------------------------------------------
 
54084
bool ColladaParserAutoGen15Private::_preBegin__newparam____gles_newparam_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
54085
{
 
54086
#ifdef GENERATEDSAXPARSER_VALIDATION
 
54087
    if ( mValidate )
 
54088
    {
 
54089
 
 
54090
        bool validationResult = _validateBegin__newparam____gles_newparam_type( attributes, attributeDataPtr, validationDataPtr );
 
54091
        if ( !validationResult ) return false;
 
54092
 
 
54093
    } // validation
 
54094
#endif
 
54095
 
 
54096
newparam____gles_newparam_type__AttributeData* attributeData = newData<newparam____gles_newparam_type__AttributeData>(attributeDataPtr);
 
54097
 
 
54098
const ParserChar** attributeArray = attributes.attributes;
 
54099
if ( attributeArray )
 
54100
{
 
54101
    while (true)
 
54102
    {
 
54103
        const ParserChar * attribute = *attributeArray;
 
54104
        if ( !attribute )
 
54105
            break;
 
54106
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
54107
        attributeArray++;
 
54108
        if ( !attributeArray )
 
54109
            return false;
 
54110
        const ParserChar* attributeValue = *attributeArray;
 
54111
        attributeArray++;
 
54112
 
 
54113
 
 
54114
    switch ( hash )
 
54115
    {
 
54116
    case HASH_ATTRIBUTE_SID:
 
54117
    {
 
54118
 
 
54119
attributeData->sid = attributeValue;
 
54120
#ifdef GENERATEDSAXPARSER_VALIDATION
 
54121
    if ( mValidate )
 
54122
    {
 
54123
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
54124
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
54125
    {
 
54126
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
54127
            simpleTypeValidationResult,
 
54128
            HASH_ELEMENT_NEWPARAM,
 
54129
            HASH_ATTRIBUTE_SID,
 
54130
            attributeValue) )
 
54131
        {
 
54132
            return false;
 
54133
        }
 
54134
    }
 
54135
    } // validation
 
54136
#endif
 
54137
 
 
54138
    break;
 
54139
    }
 
54140
    default:
 
54141
    {
 
54142
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_NEWPARAM, attribute, attributeValue))
 
54143
            {return false;}
 
54144
    }
 
54145
    }
 
54146
    }
 
54147
}
 
54148
if ( !attributeData->sid )
 
54149
{
 
54150
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_NEWPARAM, HASH_ATTRIBUTE_SID, 0 ) )
 
54151
        return false;
 
54152
}
 
54153
 
 
54154
 
 
54155
    return true;
 
54156
}
 
54157
 
 
54158
//---------------------------------------------------------------------
 
54159
bool ColladaParserAutoGen15Private::_preEnd__newparam____gles_newparam_type()
 
54160
{
 
54161
#ifdef GENERATEDSAXPARSER_VALIDATION
 
54162
    if ( mValidate )
 
54163
    {
 
54164
 
 
54165
        bool validationResult = _validateEnd__newparam____gles_newparam_type();
 
54166
        if ( !validationResult ) return false;
 
54167
 
 
54168
    } // validation
 
54169
#endif
 
54170
 
 
54171
    return true;
 
54172
}
 
54173
 
 
54174
//---------------------------------------------------------------------
 
54175
bool ColladaParserAutoGen15Private::_freeAttributes__newparam____gles_newparam_type( void* attributeData )
 
54176
{
 
54177
    newparam____gles_newparam_type__AttributeData* typedAttributeData = static_cast<newparam____gles_newparam_type__AttributeData*>(attributeData);
 
54178
 
 
54179
    typedAttributeData->~newparam____gles_newparam_type__AttributeData();
 
54180
 
 
54181
    return true;
 
54182
}
 
54183
 
 
54184
//---------------------------------------------------------------------
 
54185
bool ColladaParserAutoGen15Private::_data__float1x1( const ParserChar* text, size_t textLength )
 
54186
{
 
54187
if (!mLastIncompleteFragmentInCharacterData)
 
54188
{
 
54189
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
54190
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
54191
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
54192
}
 
54193
else
 
54194
{
 
54195
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
54196
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
54197
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
54198
        mLastIncompleteFragmentInCharacterData = tmp;
 
54199
    }
 
54200
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
54201
    mEndOfDataInCurrentObjectOnStack += textLength;
 
54202
}
 
54203
return true;
 
54204
}
 
54205
 
 
54206
//---------------------------------------------------------------------
 
54207
bool ColladaParserAutoGen15Private::_preBegin__float1x1( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
54208
{
 
54209
#ifdef GENERATEDSAXPARSER_VALIDATION
 
54210
    if ( mValidate )
 
54211
    {
 
54212
 
 
54213
        bool validationResult = _validateBegin__float1x1( attributes, attributeDataPtr, validationDataPtr );
 
54214
        if ( !validationResult ) return false;
 
54215
 
 
54216
    } // validation
 
54217
#endif
 
54218
 
 
54219
    return true;
 
54220
}
 
54221
 
 
54222
//---------------------------------------------------------------------
 
54223
bool ColladaParserAutoGen15Private::_preEnd__float1x1()
 
54224
{
 
54225
#ifdef GENERATEDSAXPARSER_VALIDATION
 
54226
    if ( mValidate )
 
54227
    {
 
54228
 
 
54229
        bool validationResult = _validateEnd__float1x1();
 
54230
        if ( !validationResult ) return false;
 
54231
 
 
54232
    } // validation
 
54233
#endif
 
54234
 
 
54235
bool failed;
 
54236
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
54237
DISABLE_WARNING_UNUSED(ptrForErr)
 
54238
float parameter = GeneratedSaxParser::Utils::toFloat((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
54239
bool returnValue;
 
54240
if (!failed)
 
54241
{
 
54242
    returnValue = mImpl->data__float1x1(parameter);
 
54243
}
 
54244
else
 
54245
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_FLOAT1X1, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
54246
if (mLastIncompleteFragmentInCharacterData)
 
54247
    mStackMemoryManager.deleteObject();
 
54248
mLastIncompleteFragmentInCharacterData = 0;
 
54249
mEndOfDataInCurrentObjectOnStack = 0;
 
54250
return returnValue;
 
54251
}
 
54252
 
 
54253
//---------------------------------------------------------------------
 
54254
bool ColladaParserAutoGen15Private::_freeAttributes__float1x1( void* attributeData )
 
54255
{
 
54256
    return true;
 
54257
}
 
54258
 
 
54259
//---------------------------------------------------------------------
 
54260
bool ColladaParserAutoGen15Private::_data__float1x2( const ParserChar* text, size_t textLength )
 
54261
{
 
54262
#ifdef GENERATEDSAXPARSER_VALIDATION
 
54263
    if ( mValidate )
 
54264
    {
 
54265
        radius____float2_type__ValidationData* validationData = (radius____float2_type__ValidationData*)mValidationDataStack.top();
 
54266
        DISABLE_WARNING_UNUSED(validationData)
 
54267
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float1x2, &validate__float2_type__stream, &validationData->validationWholeSize, 0);
 
54268
    }
 
54269
    else
 
54270
    {
 
54271
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float1x2);
 
54272
    }
 
54273
#else
 
54274
    {
 
54275
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float1x2);
 
54276
    } // validation
 
54277
#endif
 
54278
 
 
54279
}
 
54280
 
 
54281
//---------------------------------------------------------------------
 
54282
bool ColladaParserAutoGen15Private::_preBegin__float1x2( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
54283
{
 
54284
#ifdef GENERATEDSAXPARSER_VALIDATION
 
54285
    if ( mValidate )
 
54286
    {
 
54287
 
 
54288
        bool validationResult = _validateBegin__float1x2( attributes, attributeDataPtr, validationDataPtr );
 
54289
        if ( !validationResult ) return false;
 
54290
 
 
54291
    } // validation
 
54292
#endif
 
54293
 
 
54294
    return true;
 
54295
}
 
54296
 
 
54297
//---------------------------------------------------------------------
 
54298
bool ColladaParserAutoGen15Private::_preEnd__float1x2()
 
54299
{
 
54300
#ifdef GENERATEDSAXPARSER_VALIDATION
 
54301
    if ( mValidate )
 
54302
    {
 
54303
 
 
54304
        bool validationResult = _validateEnd__float1x2();
 
54305
        if ( !validationResult ) return false;
 
54306
 
 
54307
    } // validation
 
54308
#endif
 
54309
 
 
54310
#ifdef GENERATEDSAXPARSER_VALIDATION
 
54311
    if ( mValidate )
 
54312
    {
 
54313
        radius____float2_type__ValidationData* validationData = (radius____float2_type__ValidationData*)mValidationDataStack.top();
 
54314
        DISABLE_WARNING_UNUSED(validationData)
 
54315
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__float1x2, &validate__float2_type__streamEnd, &validationData->validationWholeSize, 0 );
 
54316
        ParserError::ErrorType simpleTypeValidationResult = validate__float2_type(0, (*(&validationData->validationWholeSize)));
 
54317
        mValidationDataStack.deleteObject();
 
54318
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
54319
        {
 
54320
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
54321
                simpleTypeValidationResult,
 
54322
                HASH_ELEMENT_FLOAT1X2,
 
54323
                (ParserChar*)0, 0 ) )
 
54324
            {
 
54325
                return false;
 
54326
            }
 
54327
        }
 
54328
        return returnValue;
 
54329
    }
 
54330
    else
 
54331
    {
 
54332
return floatDataEnd( &ColladaParserAutoGen15::data__float1x2 );
 
54333
    }
 
54334
#else
 
54335
    {
 
54336
return floatDataEnd( &ColladaParserAutoGen15::data__float1x2 );
 
54337
    } // validation
 
54338
#endif
 
54339
 
 
54340
}
 
54341
 
 
54342
//---------------------------------------------------------------------
 
54343
bool ColladaParserAutoGen15Private::_freeAttributes__float1x2( void* attributeData )
 
54344
{
 
54345
    return true;
 
54346
}
 
54347
 
 
54348
//---------------------------------------------------------------------
 
54349
bool ColladaParserAutoGen15Private::_data__float1x3( const ParserChar* text, size_t textLength )
 
54350
{
 
54351
#ifdef GENERATEDSAXPARSER_VALIDATION
 
54352
    if ( mValidate )
 
54353
    {
 
54354
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
54355
        DISABLE_WARNING_UNUSED(validationData)
 
54356
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float1x3, &validate__float3_type__stream, &validationData->validationWholeSize, 0);
 
54357
    }
 
54358
    else
 
54359
    {
 
54360
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float1x3);
 
54361
    }
 
54362
#else
 
54363
    {
 
54364
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float1x3);
 
54365
    } // validation
 
54366
#endif
 
54367
 
 
54368
}
 
54369
 
 
54370
//---------------------------------------------------------------------
 
54371
bool ColladaParserAutoGen15Private::_preBegin__float1x3( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
54372
{
 
54373
#ifdef GENERATEDSAXPARSER_VALIDATION
 
54374
    if ( mValidate )
 
54375
    {
 
54376
 
 
54377
        bool validationResult = _validateBegin__float1x3( attributes, attributeDataPtr, validationDataPtr );
 
54378
        if ( !validationResult ) return false;
 
54379
 
 
54380
    } // validation
 
54381
#endif
 
54382
 
 
54383
    return true;
 
54384
}
 
54385
 
 
54386
//---------------------------------------------------------------------
 
54387
bool ColladaParserAutoGen15Private::_preEnd__float1x3()
 
54388
{
 
54389
#ifdef GENERATEDSAXPARSER_VALIDATION
 
54390
    if ( mValidate )
 
54391
    {
 
54392
 
 
54393
        bool validationResult = _validateEnd__float1x3();
 
54394
        if ( !validationResult ) return false;
 
54395
 
 
54396
    } // validation
 
54397
#endif
 
54398
 
 
54399
#ifdef GENERATEDSAXPARSER_VALIDATION
 
54400
    if ( mValidate )
 
54401
    {
 
54402
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
54403
        DISABLE_WARNING_UNUSED(validationData)
 
54404
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__float1x3, &validate__float3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
54405
        ParserError::ErrorType simpleTypeValidationResult = validate__float3_type(0, (*(&validationData->validationWholeSize)));
 
54406
        mValidationDataStack.deleteObject();
 
54407
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
54408
        {
 
54409
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
54410
                simpleTypeValidationResult,
 
54411
                HASH_ELEMENT_FLOAT1X3,
 
54412
                (ParserChar*)0, 0 ) )
 
54413
            {
 
54414
                return false;
 
54415
            }
 
54416
        }
 
54417
        return returnValue;
 
54418
    }
 
54419
    else
 
54420
    {
 
54421
return floatDataEnd( &ColladaParserAutoGen15::data__float1x3 );
 
54422
    }
 
54423
#else
 
54424
    {
 
54425
return floatDataEnd( &ColladaParserAutoGen15::data__float1x3 );
 
54426
    } // validation
 
54427
#endif
 
54428
 
 
54429
}
 
54430
 
 
54431
//---------------------------------------------------------------------
 
54432
bool ColladaParserAutoGen15Private::_freeAttributes__float1x3( void* attributeData )
 
54433
{
 
54434
    return true;
 
54435
}
 
54436
 
 
54437
//---------------------------------------------------------------------
 
54438
bool ColladaParserAutoGen15Private::_data__float1x4( const ParserChar* text, size_t textLength )
 
54439
{
 
54440
#ifdef GENERATEDSAXPARSER_VALIDATION
 
54441
    if ( mValidate )
 
54442
    {
 
54443
        orient__ValidationData* validationData = (orient__ValidationData*)mValidationDataStack.top();
 
54444
        DISABLE_WARNING_UNUSED(validationData)
 
54445
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float1x4, &validate__float4_type__stream, &validationData->validationWholeSize, 0);
 
54446
    }
 
54447
    else
 
54448
    {
 
54449
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float1x4);
 
54450
    }
 
54451
#else
 
54452
    {
 
54453
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__float1x4);
 
54454
    } // validation
 
54455
#endif
 
54456
 
 
54457
}
 
54458
 
 
54459
//---------------------------------------------------------------------
 
54460
bool ColladaParserAutoGen15Private::_preBegin__float1x4( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
54461
{
 
54462
#ifdef GENERATEDSAXPARSER_VALIDATION
 
54463
    if ( mValidate )
 
54464
    {
 
54465
 
 
54466
        bool validationResult = _validateBegin__float1x4( attributes, attributeDataPtr, validationDataPtr );
 
54467
        if ( !validationResult ) return false;
 
54468
 
 
54469
    } // validation
 
54470
#endif
 
54471
 
 
54472
    return true;
 
54473
}
 
54474
 
 
54475
//---------------------------------------------------------------------
 
54476
bool ColladaParserAutoGen15Private::_preEnd__float1x4()
 
54477
{
 
54478
#ifdef GENERATEDSAXPARSER_VALIDATION
 
54479
    if ( mValidate )
 
54480
    {
 
54481
 
 
54482
        bool validationResult = _validateEnd__float1x4();
 
54483
        if ( !validationResult ) return false;
 
54484
 
 
54485
    } // validation
 
54486
#endif
 
54487
 
 
54488
#ifdef GENERATEDSAXPARSER_VALIDATION
 
54489
    if ( mValidate )
 
54490
    {
 
54491
        orient__ValidationData* validationData = (orient__ValidationData*)mValidationDataStack.top();
 
54492
        DISABLE_WARNING_UNUSED(validationData)
 
54493
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__float1x4, &validate__float4_type__streamEnd, &validationData->validationWholeSize, 0 );
 
54494
        ParserError::ErrorType simpleTypeValidationResult = validate__float4_type(0, (*(&validationData->validationWholeSize)));
 
54495
        mValidationDataStack.deleteObject();
 
54496
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
54497
        {
 
54498
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
54499
                simpleTypeValidationResult,
 
54500
                HASH_ELEMENT_FLOAT1X4,
 
54501
                (ParserChar*)0, 0 ) )
 
54502
            {
 
54503
                return false;
 
54504
            }
 
54505
        }
 
54506
        return returnValue;
 
54507
    }
 
54508
    else
 
54509
    {
 
54510
return floatDataEnd( &ColladaParserAutoGen15::data__float1x4 );
 
54511
    }
 
54512
#else
 
54513
    {
 
54514
return floatDataEnd( &ColladaParserAutoGen15::data__float1x4 );
 
54515
    } // validation
 
54516
#endif
 
54517
 
 
54518
}
 
54519
 
 
54520
//---------------------------------------------------------------------
 
54521
bool ColladaParserAutoGen15Private::_freeAttributes__float1x4( void* attributeData )
 
54522
{
 
54523
    return true;
 
54524
}
 
54525
 
 
54526
//---------------------------------------------------------------------
 
54527
bool ColladaParserAutoGen15Private::_data__sampler2D____gles_sampler_type( const ParserChar* text, size_t textLength )
 
54528
{
 
54529
    return true;
 
54530
}
 
54531
 
 
54532
//---------------------------------------------------------------------
 
54533
bool ColladaParserAutoGen15Private::_preBegin__sampler2D____gles_sampler_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
54534
{
 
54535
#ifdef GENERATEDSAXPARSER_VALIDATION
 
54536
    if ( mValidate )
 
54537
    {
 
54538
 
 
54539
        bool validationResult = _validateBegin__sampler2D____gles_sampler_type( attributes, attributeDataPtr, validationDataPtr );
 
54540
        if ( !validationResult ) return false;
 
54541
 
 
54542
    } // validation
 
54543
#endif
 
54544
 
 
54545
    return true;
 
54546
}
 
54547
 
 
54548
//---------------------------------------------------------------------
 
54549
bool ColladaParserAutoGen15Private::_preEnd__sampler2D____gles_sampler_type()
 
54550
{
 
54551
#ifdef GENERATEDSAXPARSER_VALIDATION
 
54552
    if ( mValidate )
 
54553
    {
 
54554
 
 
54555
        bool validationResult = _validateEnd__sampler2D____gles_sampler_type();
 
54556
        if ( !validationResult ) return false;
 
54557
 
 
54558
    } // validation
 
54559
#endif
 
54560
 
 
54561
    return true;
 
54562
}
 
54563
 
 
54564
//---------------------------------------------------------------------
 
54565
bool ColladaParserAutoGen15Private::_freeAttributes__sampler2D____gles_sampler_type( void* attributeData )
 
54566
{
 
54567
    return true;
 
54568
}
 
54569
 
 
54570
//---------------------------------------------------------------------
 
54571
const texcoord__AttributeData texcoord__AttributeData::DEFAULT = {0};
 
54572
 
 
54573
//---------------------------------------------------------------------
 
54574
bool ColladaParserAutoGen15Private::_data__texcoord( const ParserChar* text, size_t textLength )
 
54575
{
 
54576
    return true;
 
54577
}
 
54578
 
 
54579
//---------------------------------------------------------------------
 
54580
bool ColladaParserAutoGen15Private::_preBegin__texcoord( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
54581
{
 
54582
#ifdef GENERATEDSAXPARSER_VALIDATION
 
54583
    if ( mValidate )
 
54584
    {
 
54585
 
 
54586
        bool validationResult = _validateBegin__texcoord( attributes, attributeDataPtr, validationDataPtr );
 
54587
        if ( !validationResult ) return false;
 
54588
 
 
54589
    } // validation
 
54590
#endif
 
54591
 
 
54592
texcoord__AttributeData* attributeData = newData<texcoord__AttributeData>(attributeDataPtr);
 
54593
 
 
54594
const ParserChar** attributeArray = attributes.attributes;
 
54595
if ( attributeArray )
 
54596
{
 
54597
    while (true)
 
54598
    {
 
54599
        const ParserChar * attribute = *attributeArray;
 
54600
        if ( !attribute )
 
54601
            break;
 
54602
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
54603
        attributeArray++;
 
54604
        if ( !attributeArray )
 
54605
            return false;
 
54606
        const ParserChar* attributeValue = *attributeArray;
 
54607
        attributeArray++;
 
54608
 
 
54609
 
 
54610
    switch ( hash )
 
54611
    {
 
54612
    case HASH_ATTRIBUTE_SEMANTIC:
 
54613
    {
 
54614
 
 
54615
attributeData->semantic = attributeValue;
 
54616
#ifdef GENERATEDSAXPARSER_VALIDATION
 
54617
    if ( mValidate )
 
54618
    {
 
54619
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->semantic, strlen(attributeData->semantic));
 
54620
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
54621
    {
 
54622
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
54623
            simpleTypeValidationResult,
 
54624
            HASH_ELEMENT_TEXCOORD,
 
54625
            HASH_ATTRIBUTE_SEMANTIC,
 
54626
            attributeValue) )
 
54627
        {
 
54628
            return false;
 
54629
        }
 
54630
    }
 
54631
    } // validation
 
54632
#endif
 
54633
 
 
54634
    break;
 
54635
    }
 
54636
    default:
 
54637
    {
 
54638
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_TEXCOORD, attribute, attributeValue))
 
54639
            {return false;}
 
54640
    }
 
54641
    }
 
54642
    }
 
54643
}
 
54644
 
 
54645
 
 
54646
    return true;
 
54647
}
 
54648
 
 
54649
//---------------------------------------------------------------------
 
54650
bool ColladaParserAutoGen15Private::_preEnd__texcoord()
 
54651
{
 
54652
#ifdef GENERATEDSAXPARSER_VALIDATION
 
54653
    if ( mValidate )
 
54654
    {
 
54655
 
 
54656
        bool validationResult = _validateEnd__texcoord();
 
54657
        if ( !validationResult ) return false;
 
54658
 
 
54659
    } // validation
 
54660
#endif
 
54661
 
 
54662
    return true;
 
54663
}
 
54664
 
 
54665
//---------------------------------------------------------------------
 
54666
bool ColladaParserAutoGen15Private::_freeAttributes__texcoord( void* attributeData )
 
54667
{
 
54668
    texcoord__AttributeData* typedAttributeData = static_cast<texcoord__AttributeData*>(attributeData);
 
54669
 
 
54670
    typedAttributeData->~texcoord__AttributeData();
 
54671
 
 
54672
    return true;
 
54673
}
 
54674
 
 
54675
//---------------------------------------------------------------------
 
54676
bool ColladaParserAutoGen15Private::_data__wrap_s____gles_sampler_wrap_enum( const ParserChar* text, size_t textLength )
 
54677
{
 
54678
if (!mLastIncompleteFragmentInCharacterData)
 
54679
{
 
54680
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
54681
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
54682
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
54683
}
 
54684
else
 
54685
{
 
54686
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
54687
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
54688
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
54689
        mLastIncompleteFragmentInCharacterData = tmp;
 
54690
    }
 
54691
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
54692
    mEndOfDataInCurrentObjectOnStack += textLength;
 
54693
}
 
54694
return true;
 
54695
}
 
54696
 
 
54697
//---------------------------------------------------------------------
 
54698
bool ColladaParserAutoGen15Private::_preBegin__wrap_s____gles_sampler_wrap_enum( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
54699
{
 
54700
#ifdef GENERATEDSAXPARSER_VALIDATION
 
54701
    if ( mValidate )
 
54702
    {
 
54703
 
 
54704
        bool validationResult = _validateBegin__wrap_s____gles_sampler_wrap_enum( attributes, attributeDataPtr, validationDataPtr );
 
54705
        if ( !validationResult ) return false;
 
54706
 
 
54707
    } // validation
 
54708
#endif
 
54709
 
 
54710
    return true;
 
54711
}
 
54712
 
 
54713
//---------------------------------------------------------------------
 
54714
bool ColladaParserAutoGen15Private::_preEnd__wrap_s____gles_sampler_wrap_enum()
 
54715
{
 
54716
#ifdef GENERATEDSAXPARSER_VALIDATION
 
54717
    if ( mValidate )
 
54718
    {
 
54719
 
 
54720
        bool validationResult = _validateEnd__wrap_s____gles_sampler_wrap_enum();
 
54721
        if ( !validationResult ) return false;
 
54722
 
 
54723
    } // validation
 
54724
#endif
 
54725
 
 
54726
bool failed;
 
54727
ENUM__gles_sampler_wrap_enum parameter = Utils::toEnum<ENUM__gles_sampler_wrap_enum, StringHash, ENUM__gles_sampler_wrap_enum__COUNT>((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed, ENUM__gles_sampler_wrap_enumMap, Utils::calculateStringHash);
 
54728
bool returnValue;
 
54729
if (!failed)
 
54730
{
 
54731
    returnValue = mImpl->data__wrap_s____gles_sampler_wrap_enum(parameter);
 
54732
}
 
54733
else
 
54734
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_WRAP_S, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
54735
if (mLastIncompleteFragmentInCharacterData)
 
54736
    mStackMemoryManager.deleteObject();
 
54737
mLastIncompleteFragmentInCharacterData = 0;
 
54738
mEndOfDataInCurrentObjectOnStack = 0;
 
54739
return returnValue;
 
54740
 
 
54741
}
 
54742
 
 
54743
//---------------------------------------------------------------------
 
54744
bool ColladaParserAutoGen15Private::_freeAttributes__wrap_s____gles_sampler_wrap_enum( void* attributeData )
 
54745
{
 
54746
    return true;
 
54747
}
 
54748
 
 
54749
//---------------------------------------------------------------------
 
54750
ENUM__gles_sampler_wrap_enum ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gles_sampler_wrap_enum (
 
54751
    const ParserChar* prefixedBuffer,
 
54752
    const ParserChar* prefixedBufferEnd,
 
54753
    const ParserChar** buffer,
 
54754
    const ParserChar* bufferEnd,
 
54755
    bool& failed,
 
54756
    const std::pair<StringHash, ENUM__gles_sampler_wrap_enum>* enumMap,
 
54757
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
54758
)
 
54759
{
 
54760
    return toEnumDataPrefix<ENUM__gles_sampler_wrap_enum, StringHash, ENUM__gles_sampler_wrap_enum__COUNT, &toEnum_ENUM__gles_sampler_wrap_enum>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
54761
}
 
54762
 
 
54763
//---------------------------------------------------------------------
 
54764
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__gles_sampler_wrap_enum (
 
54765
    const ParserChar* text,
 
54766
    size_t textLength,
 
54767
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gles_sampler_wrap_enum*, size_t ),
 
54768
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
54769
)
 
54770
{
 
54771
    return characterData2EnumData<ENUM__gles_sampler_wrap_enum, StringHash, ENUM__gles_sampler_wrap_enum__COUNT>(text, textLength, dataFunction, ENUM__gles_sampler_wrap_enumMap, baseConversionFunc, &toEnum_ENUM__gles_sampler_wrap_enum, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gles_sampler_wrap_enum);
 
54772
}
 
54773
 
 
54774
//---------------------------------------------------------------------
 
54775
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__gles_sampler_wrap_enum (
 
54776
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gles_sampler_wrap_enum*, size_t ),
 
54777
    const std::pair<StringHash, ENUM__gles_sampler_wrap_enum>* enumMap,
 
54778
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
54779
    ENUM__gles_sampler_wrap_enum (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__gles_sampler_wrap_enum>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
54780
)
 
54781
{
 
54782
    return dataEnumEnd<ENUM__gles_sampler_wrap_enum, StringHash, ENUM__gles_sampler_wrap_enum__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
54783
}
 
54784
 
 
54785
//---------------------------------------------------------------------
 
54786
bool ColladaParserAutoGen15Private::_data__wrap_t____gles_sampler_wrap_enum( const ParserChar* text, size_t textLength )
 
54787
{
 
54788
if (!mLastIncompleteFragmentInCharacterData)
 
54789
{
 
54790
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
54791
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
54792
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
54793
}
 
54794
else
 
54795
{
 
54796
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
54797
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
54798
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
54799
        mLastIncompleteFragmentInCharacterData = tmp;
 
54800
    }
 
54801
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
54802
    mEndOfDataInCurrentObjectOnStack += textLength;
 
54803
}
 
54804
return true;
 
54805
}
 
54806
 
 
54807
//---------------------------------------------------------------------
 
54808
bool ColladaParserAutoGen15Private::_preBegin__wrap_t____gles_sampler_wrap_enum( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
54809
{
 
54810
#ifdef GENERATEDSAXPARSER_VALIDATION
 
54811
    if ( mValidate )
 
54812
    {
 
54813
 
 
54814
        bool validationResult = _validateBegin__wrap_t____gles_sampler_wrap_enum( attributes, attributeDataPtr, validationDataPtr );
 
54815
        if ( !validationResult ) return false;
 
54816
 
 
54817
    } // validation
 
54818
#endif
 
54819
 
 
54820
    return true;
 
54821
}
 
54822
 
 
54823
//---------------------------------------------------------------------
 
54824
bool ColladaParserAutoGen15Private::_preEnd__wrap_t____gles_sampler_wrap_enum()
 
54825
{
 
54826
#ifdef GENERATEDSAXPARSER_VALIDATION
 
54827
    if ( mValidate )
 
54828
    {
 
54829
 
 
54830
        bool validationResult = _validateEnd__wrap_t____gles_sampler_wrap_enum();
 
54831
        if ( !validationResult ) return false;
 
54832
 
 
54833
    } // validation
 
54834
#endif
 
54835
 
 
54836
bool failed;
 
54837
ENUM__gles_sampler_wrap_enum parameter = Utils::toEnum<ENUM__gles_sampler_wrap_enum, StringHash, ENUM__gles_sampler_wrap_enum__COUNT>((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed, ENUM__gles_sampler_wrap_enumMap, Utils::calculateStringHash);
 
54838
bool returnValue;
 
54839
if (!failed)
 
54840
{
 
54841
    returnValue = mImpl->data__wrap_t____gles_sampler_wrap_enum(parameter);
 
54842
}
 
54843
else
 
54844
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_WRAP_T, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
54845
if (mLastIncompleteFragmentInCharacterData)
 
54846
    mStackMemoryManager.deleteObject();
 
54847
mLastIncompleteFragmentInCharacterData = 0;
 
54848
mEndOfDataInCurrentObjectOnStack = 0;
 
54849
return returnValue;
 
54850
 
 
54851
}
 
54852
 
 
54853
//---------------------------------------------------------------------
 
54854
bool ColladaParserAutoGen15Private::_freeAttributes__wrap_t____gles_sampler_wrap_enum( void* attributeData )
 
54855
{
 
54856
    return true;
 
54857
}
 
54858
 
 
54859
//---------------------------------------------------------------------
 
54860
bool ColladaParserAutoGen15Private::_data__enum____gles_enumeration_type( const ParserChar* text, size_t textLength )
 
54861
{
 
54862
if (!mLastIncompleteFragmentInCharacterData)
 
54863
{
 
54864
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
54865
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
54866
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
54867
}
 
54868
else
 
54869
{
 
54870
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
54871
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
54872
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
54873
        mLastIncompleteFragmentInCharacterData = tmp;
 
54874
    }
 
54875
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
54876
    mEndOfDataInCurrentObjectOnStack += textLength;
 
54877
}
 
54878
return true;
 
54879
}
 
54880
 
 
54881
//---------------------------------------------------------------------
 
54882
bool ColladaParserAutoGen15Private::_preBegin__enum____gles_enumeration_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
54883
{
 
54884
#ifdef GENERATEDSAXPARSER_VALIDATION
 
54885
    if ( mValidate )
 
54886
    {
 
54887
 
 
54888
        bool validationResult = _validateBegin__enum____gles_enumeration_type( attributes, attributeDataPtr, validationDataPtr );
 
54889
        if ( !validationResult ) return false;
 
54890
 
 
54891
    } // validation
 
54892
#endif
 
54893
 
 
54894
    return true;
 
54895
}
 
54896
 
 
54897
//---------------------------------------------------------------------
 
54898
bool ColladaParserAutoGen15Private::_preEnd__enum____gles_enumeration_type()
 
54899
{
 
54900
#ifdef GENERATEDSAXPARSER_VALIDATION
 
54901
    if ( mValidate )
 
54902
    {
 
54903
 
 
54904
        bool validationResult = _validateEnd__enum____gles_enumeration_type();
 
54905
        if ( !validationResult ) return false;
 
54906
 
 
54907
    } // validation
 
54908
#endif
 
54909
 
 
54910
bool failed;
 
54911
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
54912
DISABLE_WARNING_UNUSED(ptrForErr)
 
54913
UNION__gles_enumeration_type parameter = toUnion_UNION__gles_enumeration_type( mLastIncompleteFragmentInCharacterData, (size_t)(mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData), failed );
 
54914
bool returnValue;
 
54915
if (!failed)
 
54916
{
 
54917
    returnValue = mImpl->data__enum____gles_enumeration_type(parameter);
 
54918
}
 
54919
else
 
54920
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_ENUM, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
54921
if (mLastIncompleteFragmentInCharacterData)
 
54922
    mStackMemoryManager.deleteObject();
 
54923
mLastIncompleteFragmentInCharacterData = 0;
 
54924
mEndOfDataInCurrentObjectOnStack = 0;
 
54925
return returnValue;
 
54926
 
 
54927
}
 
54928
 
 
54929
//---------------------------------------------------------------------
 
54930
bool ColladaParserAutoGen15Private::_freeAttributes__enum____gles_enumeration_type( void* attributeData )
 
54931
{
 
54932
    return true;
 
54933
}
 
54934
 
 
54935
//---------------------------------------------------------------------
 
54936
UNION__gles_enumeration_type ColladaParserAutoGen15Private::toUnionPrefix_UNION__gles_enumeration_type (
 
54937
    const ParserChar* prefixedBuffer,
 
54938
    const ParserChar* prefixedBufferEnd,
 
54939
    const ParserChar** buffer,
 
54940
    const ParserChar* bufferEnd,
 
54941
    bool& failed
 
54942
)
 
54943
{
 
54944
    return toDataPrefix<UNION__gles_enumeration_type>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, toUnion_UNION__gles_enumeration_type);
 
54945
}
 
54946
 
 
54947
//---------------------------------------------------------------------
 
54948
const profile_gles_type____technique__AttributeData profile_gles_type____technique__AttributeData::DEFAULT = {0, 0};
 
54949
 
 
54950
//---------------------------------------------------------------------
 
54951
bool ColladaParserAutoGen15Private::_data__profile_gles_type____technique( const ParserChar* text, size_t textLength )
 
54952
{
 
54953
    return true;
 
54954
}
 
54955
 
 
54956
//---------------------------------------------------------------------
 
54957
bool ColladaParserAutoGen15Private::_preBegin__profile_gles_type____technique( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
54958
{
 
54959
#ifdef GENERATEDSAXPARSER_VALIDATION
 
54960
    if ( mValidate )
 
54961
    {
 
54962
 
 
54963
        bool validationResult = _validateBegin__profile_gles_type____technique( attributes, attributeDataPtr, validationDataPtr );
 
54964
        if ( !validationResult ) return false;
 
54965
 
 
54966
    } // validation
 
54967
#endif
 
54968
 
 
54969
profile_gles_type____technique__AttributeData* attributeData = newData<profile_gles_type____technique__AttributeData>(attributeDataPtr);
 
54970
 
 
54971
const ParserChar** attributeArray = attributes.attributes;
 
54972
if ( attributeArray )
 
54973
{
 
54974
    while (true)
 
54975
    {
 
54976
        const ParserChar * attribute = *attributeArray;
 
54977
        if ( !attribute )
 
54978
            break;
 
54979
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
54980
        attributeArray++;
 
54981
        if ( !attributeArray )
 
54982
            return false;
 
54983
        const ParserChar* attributeValue = *attributeArray;
 
54984
        attributeArray++;
 
54985
 
 
54986
 
 
54987
    switch ( hash )
 
54988
    {
 
54989
    case HASH_ATTRIBUTE_ID:
 
54990
    {
 
54991
 
 
54992
attributeData->id = attributeValue;
 
54993
 
 
54994
    break;
 
54995
    }
 
54996
    case HASH_ATTRIBUTE_SID:
 
54997
    {
 
54998
 
 
54999
attributeData->sid = attributeValue;
 
55000
#ifdef GENERATEDSAXPARSER_VALIDATION
 
55001
    if ( mValidate )
 
55002
    {
 
55003
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
55004
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
55005
    {
 
55006
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
55007
            simpleTypeValidationResult,
 
55008
            HASH_ELEMENT_TECHNIQUE,
 
55009
            HASH_ATTRIBUTE_SID,
 
55010
            attributeValue) )
 
55011
        {
 
55012
            return false;
 
55013
        }
 
55014
    }
 
55015
    } // validation
 
55016
#endif
 
55017
 
 
55018
    break;
 
55019
    }
 
55020
    default:
 
55021
    {
 
55022
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_TECHNIQUE, attribute, attributeValue))
 
55023
            {return false;}
 
55024
    }
 
55025
    }
 
55026
    }
 
55027
}
 
55028
if ( !attributeData->sid )
 
55029
{
 
55030
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_TECHNIQUE, HASH_ATTRIBUTE_SID, 0 ) )
 
55031
        return false;
 
55032
}
 
55033
 
 
55034
 
 
55035
    return true;
 
55036
}
 
55037
 
 
55038
//---------------------------------------------------------------------
 
55039
bool ColladaParserAutoGen15Private::_preEnd__profile_gles_type____technique()
 
55040
{
 
55041
#ifdef GENERATEDSAXPARSER_VALIDATION
 
55042
    if ( mValidate )
 
55043
    {
 
55044
 
 
55045
        bool validationResult = _validateEnd__profile_gles_type____technique();
 
55046
        if ( !validationResult ) return false;
 
55047
 
 
55048
    } // validation
 
55049
#endif
 
55050
 
 
55051
    return true;
 
55052
}
 
55053
 
 
55054
//---------------------------------------------------------------------
 
55055
bool ColladaParserAutoGen15Private::_freeAttributes__profile_gles_type____technique( void* attributeData )
 
55056
{
 
55057
    profile_gles_type____technique__AttributeData* typedAttributeData = static_cast<profile_gles_type____technique__AttributeData*>(attributeData);
 
55058
 
 
55059
    typedAttributeData->~profile_gles_type____technique__AttributeData();
 
55060
 
 
55061
    return true;
 
55062
}
 
55063
 
 
55064
//---------------------------------------------------------------------
 
55065
const profile_GLES__technique__pass__AttributeData profile_GLES__technique__pass__AttributeData::DEFAULT = {0};
 
55066
 
 
55067
//---------------------------------------------------------------------
 
55068
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass( const ParserChar* text, size_t textLength )
 
55069
{
 
55070
    return true;
 
55071
}
 
55072
 
 
55073
//---------------------------------------------------------------------
 
55074
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
55075
{
 
55076
#ifdef GENERATEDSAXPARSER_VALIDATION
 
55077
    if ( mValidate )
 
55078
    {
 
55079
 
 
55080
        bool validationResult = _validateBegin__profile_GLES__technique__pass( attributes, attributeDataPtr, validationDataPtr );
 
55081
        if ( !validationResult ) return false;
 
55082
 
 
55083
    } // validation
 
55084
#endif
 
55085
 
 
55086
profile_GLES__technique__pass__AttributeData* attributeData = newData<profile_GLES__technique__pass__AttributeData>(attributeDataPtr);
 
55087
 
 
55088
const ParserChar** attributeArray = attributes.attributes;
 
55089
if ( attributeArray )
 
55090
{
 
55091
    while (true)
 
55092
    {
 
55093
        const ParserChar * attribute = *attributeArray;
 
55094
        if ( !attribute )
 
55095
            break;
 
55096
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
55097
        attributeArray++;
 
55098
        if ( !attributeArray )
 
55099
            return false;
 
55100
        const ParserChar* attributeValue = *attributeArray;
 
55101
        attributeArray++;
 
55102
 
 
55103
 
 
55104
    switch ( hash )
 
55105
    {
 
55106
    case HASH_ATTRIBUTE_SID:
 
55107
    {
 
55108
 
 
55109
attributeData->sid = attributeValue;
 
55110
#ifdef GENERATEDSAXPARSER_VALIDATION
 
55111
    if ( mValidate )
 
55112
    {
 
55113
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
55114
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
55115
    {
 
55116
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
55117
            simpleTypeValidationResult,
 
55118
            HASH_ELEMENT_PASS,
 
55119
            HASH_ATTRIBUTE_SID,
 
55120
            attributeValue) )
 
55121
        {
 
55122
            return false;
 
55123
        }
 
55124
    }
 
55125
    } // validation
 
55126
#endif
 
55127
 
 
55128
    break;
 
55129
    }
 
55130
    default:
 
55131
    {
 
55132
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_PASS, attribute, attributeValue))
 
55133
            {return false;}
 
55134
    }
 
55135
    }
 
55136
    }
 
55137
}
 
55138
 
 
55139
 
 
55140
    return true;
 
55141
}
 
55142
 
 
55143
//---------------------------------------------------------------------
 
55144
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass()
 
55145
{
 
55146
#ifdef GENERATEDSAXPARSER_VALIDATION
 
55147
    if ( mValidate )
 
55148
    {
 
55149
 
 
55150
        bool validationResult = _validateEnd__profile_GLES__technique__pass();
 
55151
        if ( !validationResult ) return false;
 
55152
 
 
55153
    } // validation
 
55154
#endif
 
55155
 
 
55156
    return true;
 
55157
}
 
55158
 
 
55159
//---------------------------------------------------------------------
 
55160
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass( void* attributeData )
 
55161
{
 
55162
    profile_GLES__technique__pass__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__AttributeData*>(attributeData);
 
55163
 
 
55164
    typedAttributeData->~profile_GLES__technique__pass__AttributeData();
 
55165
 
 
55166
    return true;
 
55167
}
 
55168
 
 
55169
//---------------------------------------------------------------------
 
55170
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states( const ParserChar* text, size_t textLength )
 
55171
{
 
55172
    return true;
 
55173
}
 
55174
 
 
55175
//---------------------------------------------------------------------
 
55176
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
55177
{
 
55178
#ifdef GENERATEDSAXPARSER_VALIDATION
 
55179
    if ( mValidate )
 
55180
    {
 
55181
 
 
55182
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states( attributes, attributeDataPtr, validationDataPtr );
 
55183
        if ( !validationResult ) return false;
 
55184
 
 
55185
    } // validation
 
55186
#endif
 
55187
 
 
55188
    return true;
 
55189
}
 
55190
 
 
55191
//---------------------------------------------------------------------
 
55192
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states()
 
55193
{
 
55194
#ifdef GENERATEDSAXPARSER_VALIDATION
 
55195
    if ( mValidate )
 
55196
    {
 
55197
 
 
55198
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states();
 
55199
        if ( !validationResult ) return false;
 
55200
 
 
55201
    } // validation
 
55202
#endif
 
55203
 
 
55204
    return true;
 
55205
}
 
55206
 
 
55207
//---------------------------------------------------------------------
 
55208
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states( void* attributeData )
 
55209
{
 
55210
    return true;
 
55211
}
 
55212
 
 
55213
//---------------------------------------------------------------------
 
55214
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__alpha_func( const ParserChar* text, size_t textLength )
 
55215
{
 
55216
    return true;
 
55217
}
 
55218
 
 
55219
//---------------------------------------------------------------------
 
55220
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__alpha_func( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
55221
{
 
55222
#ifdef GENERATEDSAXPARSER_VALIDATION
 
55223
    if ( mValidate )
 
55224
    {
 
55225
 
 
55226
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__alpha_func( attributes, attributeDataPtr, validationDataPtr );
 
55227
        if ( !validationResult ) return false;
 
55228
 
 
55229
    } // validation
 
55230
#endif
 
55231
 
 
55232
    return true;
 
55233
}
 
55234
 
 
55235
//---------------------------------------------------------------------
 
55236
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__alpha_func()
 
55237
{
 
55238
#ifdef GENERATEDSAXPARSER_VALIDATION
 
55239
    if ( mValidate )
 
55240
    {
 
55241
 
 
55242
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__alpha_func();
 
55243
        if ( !validationResult ) return false;
 
55244
 
 
55245
    } // validation
 
55246
#endif
 
55247
 
 
55248
    return true;
 
55249
}
 
55250
 
 
55251
//---------------------------------------------------------------------
 
55252
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__alpha_func( void* attributeData )
 
55253
{
 
55254
    return true;
 
55255
}
 
55256
 
 
55257
//---------------------------------------------------------------------
 
55258
const profile_GLES__technique__pass__states__alpha_func__func__AttributeData profile_GLES__technique__pass__states__alpha_func__func__AttributeData::DEFAULT = {ENUM__gl_func_enum__ALWAYS, 0};
 
55259
 
 
55260
//---------------------------------------------------------------------
 
55261
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__alpha_func__func( const ParserChar* text, size_t textLength )
 
55262
{
 
55263
    return true;
 
55264
}
 
55265
 
 
55266
//---------------------------------------------------------------------
 
55267
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__alpha_func__func( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
55268
{
 
55269
#ifdef GENERATEDSAXPARSER_VALIDATION
 
55270
    if ( mValidate )
 
55271
    {
 
55272
 
 
55273
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__alpha_func__func( attributes, attributeDataPtr, validationDataPtr );
 
55274
        if ( !validationResult ) return false;
 
55275
 
 
55276
    } // validation
 
55277
#endif
 
55278
 
 
55279
profile_GLES__technique__pass__states__alpha_func__func__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__alpha_func__func__AttributeData>(attributeDataPtr);
 
55280
 
 
55281
const ParserChar** attributeArray = attributes.attributes;
 
55282
if ( attributeArray )
 
55283
{
 
55284
    while (true)
 
55285
    {
 
55286
        const ParserChar * attribute = *attributeArray;
 
55287
        if ( !attribute )
 
55288
            break;
 
55289
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
55290
        attributeArray++;
 
55291
        if ( !attributeArray )
 
55292
            return false;
 
55293
        const ParserChar* attributeValue = *attributeArray;
 
55294
        attributeArray++;
 
55295
 
 
55296
 
 
55297
    switch ( hash )
 
55298
    {
 
55299
    case HASH_ATTRIBUTE_VALUE:
 
55300
    {
 
55301
bool failed;
 
55302
attributeData->value = Utils::toEnum<ENUM__gl_func_enum, StringHash, ENUM__gl_func_enum__COUNT>(attributeValue, failed, ENUM__gl_func_enumMap, Utils::calculateStringHash);
 
55303
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
55304
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
55305
        HASH_ELEMENT_FUNC,
 
55306
        HASH_ATTRIBUTE_VALUE,
 
55307
        attributeValue))
 
55308
{
 
55309
    return false;
 
55310
}
 
55311
 
 
55312
    break;
 
55313
    }
 
55314
    case HASH_ATTRIBUTE_PARAM:
 
55315
    {
 
55316
 
 
55317
attributeData->param = attributeValue;
 
55318
#ifdef GENERATEDSAXPARSER_VALIDATION
 
55319
    if ( mValidate )
 
55320
    {
 
55321
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
55322
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
55323
    {
 
55324
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
55325
            simpleTypeValidationResult,
 
55326
            HASH_ELEMENT_FUNC,
 
55327
            HASH_ATTRIBUTE_PARAM,
 
55328
            attributeValue) )
 
55329
        {
 
55330
            return false;
 
55331
        }
 
55332
    }
 
55333
    } // validation
 
55334
#endif
 
55335
 
 
55336
    break;
 
55337
    }
 
55338
    default:
 
55339
    {
 
55340
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FUNC, attribute, attributeValue))
 
55341
            {return false;}
 
55342
    }
 
55343
    }
 
55344
    }
 
55345
}
 
55346
 
 
55347
 
 
55348
    return true;
 
55349
}
 
55350
 
 
55351
//---------------------------------------------------------------------
 
55352
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__alpha_func__func()
 
55353
{
 
55354
#ifdef GENERATEDSAXPARSER_VALIDATION
 
55355
    if ( mValidate )
 
55356
    {
 
55357
 
 
55358
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__alpha_func__func();
 
55359
        if ( !validationResult ) return false;
 
55360
 
 
55361
    } // validation
 
55362
#endif
 
55363
 
 
55364
    return true;
 
55365
}
 
55366
 
 
55367
//---------------------------------------------------------------------
 
55368
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__alpha_func__func( void* attributeData )
 
55369
{
 
55370
    profile_GLES__technique__pass__states__alpha_func__func__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__alpha_func__func__AttributeData*>(attributeData);
 
55371
 
 
55372
    typedAttributeData->~profile_GLES__technique__pass__states__alpha_func__func__AttributeData();
 
55373
 
 
55374
    return true;
 
55375
}
 
55376
 
 
55377
//---------------------------------------------------------------------
 
55378
const profile_GLES__technique__pass__states__alpha_func__value__AttributeData profile_GLES__technique__pass__states__alpha_func__value__AttributeData::DEFAULT = {0.0E1, 0};
 
55379
 
 
55380
//---------------------------------------------------------------------
 
55381
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__alpha_func__value( const ParserChar* text, size_t textLength )
 
55382
{
 
55383
    return true;
 
55384
}
 
55385
 
 
55386
//---------------------------------------------------------------------
 
55387
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__alpha_func__value( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
55388
{
 
55389
#ifdef GENERATEDSAXPARSER_VALIDATION
 
55390
    if ( mValidate )
 
55391
    {
 
55392
 
 
55393
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__alpha_func__value( attributes, attributeDataPtr, validationDataPtr );
 
55394
        if ( !validationResult ) return false;
 
55395
 
 
55396
    } // validation
 
55397
#endif
 
55398
 
 
55399
profile_GLES__technique__pass__states__alpha_func__value__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__alpha_func__value__AttributeData>(attributeDataPtr);
 
55400
 
 
55401
const ParserChar** attributeArray = attributes.attributes;
 
55402
if ( attributeArray )
 
55403
{
 
55404
    while (true)
 
55405
    {
 
55406
        const ParserChar * attribute = *attributeArray;
 
55407
        if ( !attribute )
 
55408
            break;
 
55409
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
55410
        attributeArray++;
 
55411
        if ( !attributeArray )
 
55412
            return false;
 
55413
        const ParserChar* attributeValue = *attributeArray;
 
55414
        attributeArray++;
 
55415
 
 
55416
 
 
55417
    switch ( hash )
 
55418
    {
 
55419
    case HASH_ATTRIBUTE_VALUE:
 
55420
    {
 
55421
bool failed;
 
55422
attributeData->value = GeneratedSaxParser::Utils::toFloat(attributeValue, failed);
 
55423
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
55424
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
55425
        HASH_ELEMENT_VALUE,
 
55426
        HASH_ATTRIBUTE_VALUE,
 
55427
        attributeValue))
 
55428
{
 
55429
    return false;
 
55430
}
 
55431
#ifdef GENERATEDSAXPARSER_VALIDATION
 
55432
    if ( mValidate )
 
55433
    {
 
55434
    ParserError::ErrorType simpleTypeValidationResult = validate__gl_alpha_value_type(attributeData->value);
 
55435
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
55436
    {
 
55437
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
55438
            simpleTypeValidationResult,
 
55439
            HASH_ELEMENT_VALUE,
 
55440
            HASH_ATTRIBUTE_VALUE,
 
55441
            attributeValue) )
 
55442
        {
 
55443
            return false;
 
55444
        }
 
55445
    }
 
55446
    } // validation
 
55447
#endif
 
55448
 
 
55449
    break;
 
55450
    }
 
55451
    case HASH_ATTRIBUTE_PARAM:
 
55452
    {
 
55453
 
 
55454
attributeData->param = attributeValue;
 
55455
#ifdef GENERATEDSAXPARSER_VALIDATION
 
55456
    if ( mValidate )
 
55457
    {
 
55458
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
55459
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
55460
    {
 
55461
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
55462
            simpleTypeValidationResult,
 
55463
            HASH_ELEMENT_VALUE,
 
55464
            HASH_ATTRIBUTE_PARAM,
 
55465
            attributeValue) )
 
55466
        {
 
55467
            return false;
 
55468
        }
 
55469
    }
 
55470
    } // validation
 
55471
#endif
 
55472
 
 
55473
    break;
 
55474
    }
 
55475
    default:
 
55476
    {
 
55477
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_VALUE, attribute, attributeValue))
 
55478
            {return false;}
 
55479
    }
 
55480
    }
 
55481
    }
 
55482
}
 
55483
 
 
55484
 
 
55485
    return true;
 
55486
}
 
55487
 
 
55488
//---------------------------------------------------------------------
 
55489
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__alpha_func__value()
 
55490
{
 
55491
#ifdef GENERATEDSAXPARSER_VALIDATION
 
55492
    if ( mValidate )
 
55493
    {
 
55494
 
 
55495
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__alpha_func__value();
 
55496
        if ( !validationResult ) return false;
 
55497
 
 
55498
    } // validation
 
55499
#endif
 
55500
 
 
55501
    return true;
 
55502
}
 
55503
 
 
55504
//---------------------------------------------------------------------
 
55505
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__alpha_func__value( void* attributeData )
 
55506
{
 
55507
    profile_GLES__technique__pass__states__alpha_func__value__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__alpha_func__value__AttributeData*>(attributeData);
 
55508
 
 
55509
    typedAttributeData->~profile_GLES__technique__pass__states__alpha_func__value__AttributeData();
 
55510
 
 
55511
    return true;
 
55512
}
 
55513
 
 
55514
//---------------------------------------------------------------------
 
55515
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__blend_func( const ParserChar* text, size_t textLength )
 
55516
{
 
55517
    return true;
 
55518
}
 
55519
 
 
55520
//---------------------------------------------------------------------
 
55521
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__blend_func( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
55522
{
 
55523
#ifdef GENERATEDSAXPARSER_VALIDATION
 
55524
    if ( mValidate )
 
55525
    {
 
55526
 
 
55527
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__blend_func( attributes, attributeDataPtr, validationDataPtr );
 
55528
        if ( !validationResult ) return false;
 
55529
 
 
55530
    } // validation
 
55531
#endif
 
55532
 
 
55533
    return true;
 
55534
}
 
55535
 
 
55536
//---------------------------------------------------------------------
 
55537
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__blend_func()
 
55538
{
 
55539
#ifdef GENERATEDSAXPARSER_VALIDATION
 
55540
    if ( mValidate )
 
55541
    {
 
55542
 
 
55543
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__blend_func();
 
55544
        if ( !validationResult ) return false;
 
55545
 
 
55546
    } // validation
 
55547
#endif
 
55548
 
 
55549
    return true;
 
55550
}
 
55551
 
 
55552
//---------------------------------------------------------------------
 
55553
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__blend_func( void* attributeData )
 
55554
{
 
55555
    return true;
 
55556
}
 
55557
 
 
55558
//---------------------------------------------------------------------
 
55559
const profile_GLES__technique__pass__states__blend_func__src__AttributeData profile_GLES__technique__pass__states__blend_func__src__AttributeData::DEFAULT = {ENUM__gl_blend_enum__ONE, 0};
 
55560
 
 
55561
//---------------------------------------------------------------------
 
55562
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__blend_func__src( const ParserChar* text, size_t textLength )
 
55563
{
 
55564
    return true;
 
55565
}
 
55566
 
 
55567
//---------------------------------------------------------------------
 
55568
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__blend_func__src( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
55569
{
 
55570
#ifdef GENERATEDSAXPARSER_VALIDATION
 
55571
    if ( mValidate )
 
55572
    {
 
55573
 
 
55574
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__blend_func__src( attributes, attributeDataPtr, validationDataPtr );
 
55575
        if ( !validationResult ) return false;
 
55576
 
 
55577
    } // validation
 
55578
#endif
 
55579
 
 
55580
profile_GLES__technique__pass__states__blend_func__src__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__blend_func__src__AttributeData>(attributeDataPtr);
 
55581
 
 
55582
const ParserChar** attributeArray = attributes.attributes;
 
55583
if ( attributeArray )
 
55584
{
 
55585
    while (true)
 
55586
    {
 
55587
        const ParserChar * attribute = *attributeArray;
 
55588
        if ( !attribute )
 
55589
            break;
 
55590
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
55591
        attributeArray++;
 
55592
        if ( !attributeArray )
 
55593
            return false;
 
55594
        const ParserChar* attributeValue = *attributeArray;
 
55595
        attributeArray++;
 
55596
 
 
55597
 
 
55598
    switch ( hash )
 
55599
    {
 
55600
    case HASH_ATTRIBUTE_VALUE:
 
55601
    {
 
55602
bool failed;
 
55603
attributeData->value = Utils::toEnum<ENUM__gl_blend_enum, StringHash, ENUM__gl_blend_enum__COUNT>(attributeValue, failed, ENUM__gl_blend_enumMap, Utils::calculateStringHash);
 
55604
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
55605
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
55606
        HASH_ELEMENT_SRC,
 
55607
        HASH_ATTRIBUTE_VALUE,
 
55608
        attributeValue))
 
55609
{
 
55610
    return false;
 
55611
}
 
55612
 
 
55613
    break;
 
55614
    }
 
55615
    case HASH_ATTRIBUTE_PARAM:
 
55616
    {
 
55617
 
 
55618
attributeData->param = attributeValue;
 
55619
#ifdef GENERATEDSAXPARSER_VALIDATION
 
55620
    if ( mValidate )
 
55621
    {
 
55622
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
55623
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
55624
    {
 
55625
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
55626
            simpleTypeValidationResult,
 
55627
            HASH_ELEMENT_SRC,
 
55628
            HASH_ATTRIBUTE_PARAM,
 
55629
            attributeValue) )
 
55630
        {
 
55631
            return false;
 
55632
        }
 
55633
    }
 
55634
    } // validation
 
55635
#endif
 
55636
 
 
55637
    break;
 
55638
    }
 
55639
    default:
 
55640
    {
 
55641
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SRC, attribute, attributeValue))
 
55642
            {return false;}
 
55643
    }
 
55644
    }
 
55645
    }
 
55646
}
 
55647
 
 
55648
 
 
55649
    return true;
 
55650
}
 
55651
 
 
55652
//---------------------------------------------------------------------
 
55653
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__blend_func__src()
 
55654
{
 
55655
#ifdef GENERATEDSAXPARSER_VALIDATION
 
55656
    if ( mValidate )
 
55657
    {
 
55658
 
 
55659
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__blend_func__src();
 
55660
        if ( !validationResult ) return false;
 
55661
 
 
55662
    } // validation
 
55663
#endif
 
55664
 
 
55665
    return true;
 
55666
}
 
55667
 
 
55668
//---------------------------------------------------------------------
 
55669
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__blend_func__src( void* attributeData )
 
55670
{
 
55671
    profile_GLES__technique__pass__states__blend_func__src__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__blend_func__src__AttributeData*>(attributeData);
 
55672
 
 
55673
    typedAttributeData->~profile_GLES__technique__pass__states__blend_func__src__AttributeData();
 
55674
 
 
55675
    return true;
 
55676
}
 
55677
 
 
55678
//---------------------------------------------------------------------
 
55679
const profile_GLES__technique__pass__states__blend_func__dest__AttributeData profile_GLES__technique__pass__states__blend_func__dest__AttributeData::DEFAULT = {ENUM__gl_blend_enum__ZERO, 0};
 
55680
 
 
55681
//---------------------------------------------------------------------
 
55682
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__blend_func__dest( const ParserChar* text, size_t textLength )
 
55683
{
 
55684
    return true;
 
55685
}
 
55686
 
 
55687
//---------------------------------------------------------------------
 
55688
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__blend_func__dest( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
55689
{
 
55690
#ifdef GENERATEDSAXPARSER_VALIDATION
 
55691
    if ( mValidate )
 
55692
    {
 
55693
 
 
55694
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__blend_func__dest( attributes, attributeDataPtr, validationDataPtr );
 
55695
        if ( !validationResult ) return false;
 
55696
 
 
55697
    } // validation
 
55698
#endif
 
55699
 
 
55700
profile_GLES__technique__pass__states__blend_func__dest__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__blend_func__dest__AttributeData>(attributeDataPtr);
 
55701
 
 
55702
const ParserChar** attributeArray = attributes.attributes;
 
55703
if ( attributeArray )
 
55704
{
 
55705
    while (true)
 
55706
    {
 
55707
        const ParserChar * attribute = *attributeArray;
 
55708
        if ( !attribute )
 
55709
            break;
 
55710
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
55711
        attributeArray++;
 
55712
        if ( !attributeArray )
 
55713
            return false;
 
55714
        const ParserChar* attributeValue = *attributeArray;
 
55715
        attributeArray++;
 
55716
 
 
55717
 
 
55718
    switch ( hash )
 
55719
    {
 
55720
    case HASH_ATTRIBUTE_VALUE:
 
55721
    {
 
55722
bool failed;
 
55723
attributeData->value = Utils::toEnum<ENUM__gl_blend_enum, StringHash, ENUM__gl_blend_enum__COUNT>(attributeValue, failed, ENUM__gl_blend_enumMap, Utils::calculateStringHash);
 
55724
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
55725
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
55726
        HASH_ELEMENT_DEST,
 
55727
        HASH_ATTRIBUTE_VALUE,
 
55728
        attributeValue))
 
55729
{
 
55730
    return false;
 
55731
}
 
55732
 
 
55733
    break;
 
55734
    }
 
55735
    case HASH_ATTRIBUTE_PARAM:
 
55736
    {
 
55737
 
 
55738
attributeData->param = attributeValue;
 
55739
#ifdef GENERATEDSAXPARSER_VALIDATION
 
55740
    if ( mValidate )
 
55741
    {
 
55742
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
55743
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
55744
    {
 
55745
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
55746
            simpleTypeValidationResult,
 
55747
            HASH_ELEMENT_DEST,
 
55748
            HASH_ATTRIBUTE_PARAM,
 
55749
            attributeValue) )
 
55750
        {
 
55751
            return false;
 
55752
        }
 
55753
    }
 
55754
    } // validation
 
55755
#endif
 
55756
 
 
55757
    break;
 
55758
    }
 
55759
    default:
 
55760
    {
 
55761
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_DEST, attribute, attributeValue))
 
55762
            {return false;}
 
55763
    }
 
55764
    }
 
55765
    }
 
55766
}
 
55767
 
 
55768
 
 
55769
    return true;
 
55770
}
 
55771
 
 
55772
//---------------------------------------------------------------------
 
55773
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__blend_func__dest()
 
55774
{
 
55775
#ifdef GENERATEDSAXPARSER_VALIDATION
 
55776
    if ( mValidate )
 
55777
    {
 
55778
 
 
55779
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__blend_func__dest();
 
55780
        if ( !validationResult ) return false;
 
55781
 
 
55782
    } // validation
 
55783
#endif
 
55784
 
 
55785
    return true;
 
55786
}
 
55787
 
 
55788
//---------------------------------------------------------------------
 
55789
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__blend_func__dest( void* attributeData )
 
55790
{
 
55791
    profile_GLES__technique__pass__states__blend_func__dest__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__blend_func__dest__AttributeData*>(attributeData);
 
55792
 
 
55793
    typedAttributeData->~profile_GLES__technique__pass__states__blend_func__dest__AttributeData();
 
55794
 
 
55795
    return true;
 
55796
}
 
55797
 
 
55798
//---------------------------------------------------------------------
 
55799
const profile_GLES__technique__pass__states__clip_plane__AttributeData profile_GLES__technique__pass__states__clip_plane__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<bool>(), 0, 0};
 
55800
 
 
55801
//---------------------------------------------------------------------
 
55802
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__clip_plane( const ParserChar* text, size_t textLength )
 
55803
{
 
55804
    return true;
 
55805
}
 
55806
 
 
55807
//---------------------------------------------------------------------
 
55808
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__clip_plane( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
55809
{
 
55810
#ifdef GENERATEDSAXPARSER_VALIDATION
 
55811
    if ( mValidate )
 
55812
    {
 
55813
 
 
55814
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__clip_plane( attributes, attributeDataPtr, validationDataPtr );
 
55815
        if ( !validationResult ) return false;
 
55816
 
 
55817
    } // validation
 
55818
#endif
 
55819
 
 
55820
profile_GLES__technique__pass__states__clip_plane__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__clip_plane__AttributeData>(attributeDataPtr);
 
55821
 
 
55822
const ParserChar** attributeArray = attributes.attributes;
 
55823
if ( attributeArray )
 
55824
{
 
55825
    while (true)
 
55826
    {
 
55827
        const ParserChar * attribute = *attributeArray;
 
55828
        if ( !attribute )
 
55829
            break;
 
55830
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
55831
        attributeArray++;
 
55832
        if ( !attributeArray )
 
55833
            return false;
 
55834
        const ParserChar* attributeValue = *attributeArray;
 
55835
        attributeArray++;
 
55836
 
 
55837
 
 
55838
    switch ( hash )
 
55839
    {
 
55840
    case HASH_ATTRIBUTE_VALUE:
 
55841
    {
 
55842
bool failed;
 
55843
#ifdef GENERATEDSAXPARSER_VALIDATION
 
55844
    if ( mValidate )
 
55845
    {
 
55846
failed = !characterData2BoolList(attributeValue, attributeData->value, 0, HASH_ELEMENT_CLIP_PLANE, HASH_ATTRIBUTE_VALUE);
 
55847
    }
 
55848
    else
 
55849
    {
 
55850
failed = !characterData2BoolList(attributeValue, attributeData->value);
 
55851
    }
 
55852
#else
 
55853
    {
 
55854
failed = !characterData2BoolList(attributeValue, attributeData->value);
 
55855
    } // validation
 
55856
#endif
 
55857
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
55858
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
55859
        HASH_ELEMENT_CLIP_PLANE,
 
55860
        HASH_ATTRIBUTE_VALUE,
 
55861
        attributeValue))
 
55862
{
 
55863
    return false;
 
55864
}
 
55865
#ifdef GENERATEDSAXPARSER_VALIDATION
 
55866
    if ( mValidate )
 
55867
    {
 
55868
    ParserError::ErrorType simpleTypeValidationResult = validate__bool4_type(attributeData->value.data, attributeData->value.size);
 
55869
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
55870
    {
 
55871
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
55872
            simpleTypeValidationResult,
 
55873
            HASH_ELEMENT_CLIP_PLANE,
 
55874
            HASH_ATTRIBUTE_VALUE,
 
55875
            attributeValue) )
 
55876
        {
 
55877
            return false;
 
55878
        }
 
55879
    }
 
55880
    } // validation
 
55881
#endif
 
55882
 
 
55883
if ( !failed )
 
55884
    attributeData->present_attributes |= profile_GLES__technique__pass__states__clip_plane__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
55885
 
 
55886
    break;
 
55887
    }
 
55888
    case HASH_ATTRIBUTE_PARAM:
 
55889
    {
 
55890
 
 
55891
attributeData->param = attributeValue;
 
55892
#ifdef GENERATEDSAXPARSER_VALIDATION
 
55893
    if ( mValidate )
 
55894
    {
 
55895
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
55896
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
55897
    {
 
55898
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
55899
            simpleTypeValidationResult,
 
55900
            HASH_ELEMENT_CLIP_PLANE,
 
55901
            HASH_ATTRIBUTE_PARAM,
 
55902
            attributeValue) )
 
55903
        {
 
55904
            return false;
 
55905
        }
 
55906
    }
 
55907
    } // validation
 
55908
#endif
 
55909
 
 
55910
    break;
 
55911
    }
 
55912
    case HASH_ATTRIBUTE_INDEX:
 
55913
    {
 
55914
bool failed;
 
55915
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
55916
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
55917
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
55918
        HASH_ELEMENT_CLIP_PLANE,
 
55919
        HASH_ATTRIBUTE_INDEX,
 
55920
        attributeValue))
 
55921
{
 
55922
    return false;
 
55923
}
 
55924
#ifdef GENERATEDSAXPARSER_VALIDATION
 
55925
    if ( mValidate )
 
55926
    {
 
55927
    ParserError::ErrorType simpleTypeValidationResult = validate__gles_max_clip_planes_index_type(attributeData->index);
 
55928
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
55929
    {
 
55930
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
55931
            simpleTypeValidationResult,
 
55932
            HASH_ELEMENT_CLIP_PLANE,
 
55933
            HASH_ATTRIBUTE_INDEX,
 
55934
            attributeValue) )
 
55935
        {
 
55936
            return false;
 
55937
        }
 
55938
    }
 
55939
    } // validation
 
55940
#endif
 
55941
if ( !failed )
 
55942
    attributeData->present_attributes |= profile_GLES__technique__pass__states__clip_plane__AttributeData::ATTRIBUTE_INDEX_PRESENT;
 
55943
 
 
55944
    break;
 
55945
    }
 
55946
    default:
 
55947
    {
 
55948
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_CLIP_PLANE, attribute, attributeValue))
 
55949
            {return false;}
 
55950
    }
 
55951
    }
 
55952
    }
 
55953
}
 
55954
if ((attributeData->present_attributes & profile_GLES__technique__pass__states__clip_plane__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
55955
{
 
55956
    attributeData->value = GeneratedSaxParser::XSList<bool>();
 
55957
}
 
55958
if ( (attributeData->present_attributes & profile_GLES__technique__pass__states__clip_plane__AttributeData::ATTRIBUTE_INDEX_PRESENT) == 0 )
 
55959
{
 
55960
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_CLIP_PLANE, HASH_ATTRIBUTE_INDEX, 0 ) )
 
55961
        return false;
 
55962
}
 
55963
 
 
55964
 
 
55965
    return true;
 
55966
}
 
55967
 
 
55968
//---------------------------------------------------------------------
 
55969
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__clip_plane()
 
55970
{
 
55971
#ifdef GENERATEDSAXPARSER_VALIDATION
 
55972
    if ( mValidate )
 
55973
    {
 
55974
 
 
55975
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__clip_plane();
 
55976
        if ( !validationResult ) return false;
 
55977
 
 
55978
    } // validation
 
55979
#endif
 
55980
 
 
55981
    return true;
 
55982
}
 
55983
 
 
55984
//---------------------------------------------------------------------
 
55985
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__clip_plane( void* attributeData )
 
55986
{
 
55987
    profile_GLES__technique__pass__states__clip_plane__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__clip_plane__AttributeData*>(attributeData);
 
55988
    if (typedAttributeData->value.data)
 
55989
    {
 
55990
        mStackMemoryManager.deleteObject();
 
55991
    }
 
55992
 
 
55993
 
 
55994
    typedAttributeData->~profile_GLES__technique__pass__states__clip_plane__AttributeData();
 
55995
 
 
55996
    return true;
 
55997
}
 
55998
 
 
55999
//---------------------------------------------------------------------
 
56000
const profile_GLES__technique__pass__states__color_mask__AttributeData profile_GLES__technique__pass__states__color_mask__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<bool>(), 0};
 
56001
 
 
56002
//---------------------------------------------------------------------
 
56003
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__color_mask( const ParserChar* text, size_t textLength )
 
56004
{
 
56005
    return true;
 
56006
}
 
56007
 
 
56008
//---------------------------------------------------------------------
 
56009
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__color_mask( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
56010
{
 
56011
#ifdef GENERATEDSAXPARSER_VALIDATION
 
56012
    if ( mValidate )
 
56013
    {
 
56014
 
 
56015
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__color_mask( attributes, attributeDataPtr, validationDataPtr );
 
56016
        if ( !validationResult ) return false;
 
56017
 
 
56018
    } // validation
 
56019
#endif
 
56020
 
 
56021
profile_GLES__technique__pass__states__color_mask__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__color_mask__AttributeData>(attributeDataPtr);
 
56022
 
 
56023
const ParserChar** attributeArray = attributes.attributes;
 
56024
if ( attributeArray )
 
56025
{
 
56026
    while (true)
 
56027
    {
 
56028
        const ParserChar * attribute = *attributeArray;
 
56029
        if ( !attribute )
 
56030
            break;
 
56031
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
56032
        attributeArray++;
 
56033
        if ( !attributeArray )
 
56034
            return false;
 
56035
        const ParserChar* attributeValue = *attributeArray;
 
56036
        attributeArray++;
 
56037
 
 
56038
 
 
56039
    switch ( hash )
 
56040
    {
 
56041
    case HASH_ATTRIBUTE_VALUE:
 
56042
    {
 
56043
bool failed;
 
56044
#ifdef GENERATEDSAXPARSER_VALIDATION
 
56045
    if ( mValidate )
 
56046
    {
 
56047
failed = !characterData2BoolList(attributeValue, attributeData->value, 0, HASH_ELEMENT_COLOR_MASK, HASH_ATTRIBUTE_VALUE);
 
56048
    }
 
56049
    else
 
56050
    {
 
56051
failed = !characterData2BoolList(attributeValue, attributeData->value);
 
56052
    }
 
56053
#else
 
56054
    {
 
56055
failed = !characterData2BoolList(attributeValue, attributeData->value);
 
56056
    } // validation
 
56057
#endif
 
56058
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
56059
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
56060
        HASH_ELEMENT_COLOR_MASK,
 
56061
        HASH_ATTRIBUTE_VALUE,
 
56062
        attributeValue))
 
56063
{
 
56064
    return false;
 
56065
}
 
56066
#ifdef GENERATEDSAXPARSER_VALIDATION
 
56067
    if ( mValidate )
 
56068
    {
 
56069
    ParserError::ErrorType simpleTypeValidationResult = validate__bool4_type(attributeData->value.data, attributeData->value.size);
 
56070
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
56071
    {
 
56072
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
56073
            simpleTypeValidationResult,
 
56074
            HASH_ELEMENT_COLOR_MASK,
 
56075
            HASH_ATTRIBUTE_VALUE,
 
56076
            attributeValue) )
 
56077
        {
 
56078
            return false;
 
56079
        }
 
56080
    }
 
56081
    } // validation
 
56082
#endif
 
56083
 
 
56084
if ( !failed )
 
56085
    attributeData->present_attributes |= profile_GLES__technique__pass__states__color_mask__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
56086
 
 
56087
    break;
 
56088
    }
 
56089
    case HASH_ATTRIBUTE_PARAM:
 
56090
    {
 
56091
 
 
56092
attributeData->param = attributeValue;
 
56093
#ifdef GENERATEDSAXPARSER_VALIDATION
 
56094
    if ( mValidate )
 
56095
    {
 
56096
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
56097
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
56098
    {
 
56099
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
56100
            simpleTypeValidationResult,
 
56101
            HASH_ELEMENT_COLOR_MASK,
 
56102
            HASH_ATTRIBUTE_PARAM,
 
56103
            attributeValue) )
 
56104
        {
 
56105
            return false;
 
56106
        }
 
56107
    }
 
56108
    } // validation
 
56109
#endif
 
56110
 
 
56111
    break;
 
56112
    }
 
56113
    default:
 
56114
    {
 
56115
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_COLOR_MASK, attribute, attributeValue))
 
56116
            {return false;}
 
56117
    }
 
56118
    }
 
56119
    }
 
56120
}
 
56121
if ((attributeData->present_attributes & profile_GLES__technique__pass__states__color_mask__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
56122
{
 
56123
    attributeData->value = GeneratedSaxParser::XSList<bool>();
 
56124
}
 
56125
 
 
56126
 
 
56127
    return true;
 
56128
}
 
56129
 
 
56130
//---------------------------------------------------------------------
 
56131
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__color_mask()
 
56132
{
 
56133
#ifdef GENERATEDSAXPARSER_VALIDATION
 
56134
    if ( mValidate )
 
56135
    {
 
56136
 
 
56137
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__color_mask();
 
56138
        if ( !validationResult ) return false;
 
56139
 
 
56140
    } // validation
 
56141
#endif
 
56142
 
 
56143
    return true;
 
56144
}
 
56145
 
 
56146
//---------------------------------------------------------------------
 
56147
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__color_mask( void* attributeData )
 
56148
{
 
56149
    profile_GLES__technique__pass__states__color_mask__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__color_mask__AttributeData*>(attributeData);
 
56150
    if (typedAttributeData->value.data)
 
56151
    {
 
56152
        mStackMemoryManager.deleteObject();
 
56153
    }
 
56154
 
 
56155
 
 
56156
    typedAttributeData->~profile_GLES__technique__pass__states__color_mask__AttributeData();
 
56157
 
 
56158
    return true;
 
56159
}
 
56160
 
 
56161
//---------------------------------------------------------------------
 
56162
const profile_GLES__technique__pass__states__cull_face__AttributeData profile_GLES__technique__pass__states__cull_face__AttributeData::DEFAULT = {ENUM__gl_face_enum__BACK, 0};
 
56163
 
 
56164
//---------------------------------------------------------------------
 
56165
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__cull_face( const ParserChar* text, size_t textLength )
 
56166
{
 
56167
    return true;
 
56168
}
 
56169
 
 
56170
//---------------------------------------------------------------------
 
56171
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__cull_face( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
56172
{
 
56173
#ifdef GENERATEDSAXPARSER_VALIDATION
 
56174
    if ( mValidate )
 
56175
    {
 
56176
 
 
56177
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__cull_face( attributes, attributeDataPtr, validationDataPtr );
 
56178
        if ( !validationResult ) return false;
 
56179
 
 
56180
    } // validation
 
56181
#endif
 
56182
 
 
56183
profile_GLES__technique__pass__states__cull_face__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__cull_face__AttributeData>(attributeDataPtr);
 
56184
 
 
56185
const ParserChar** attributeArray = attributes.attributes;
 
56186
if ( attributeArray )
 
56187
{
 
56188
    while (true)
 
56189
    {
 
56190
        const ParserChar * attribute = *attributeArray;
 
56191
        if ( !attribute )
 
56192
            break;
 
56193
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
56194
        attributeArray++;
 
56195
        if ( !attributeArray )
 
56196
            return false;
 
56197
        const ParserChar* attributeValue = *attributeArray;
 
56198
        attributeArray++;
 
56199
 
 
56200
 
 
56201
    switch ( hash )
 
56202
    {
 
56203
    case HASH_ATTRIBUTE_VALUE:
 
56204
    {
 
56205
bool failed;
 
56206
attributeData->value = Utils::toEnum<ENUM__gl_face_enum, StringHash, ENUM__gl_face_enum__COUNT>(attributeValue, failed, ENUM__gl_face_enumMap, Utils::calculateStringHash);
 
56207
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
56208
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
56209
        HASH_ELEMENT_CULL_FACE,
 
56210
        HASH_ATTRIBUTE_VALUE,
 
56211
        attributeValue))
 
56212
{
 
56213
    return false;
 
56214
}
 
56215
 
 
56216
    break;
 
56217
    }
 
56218
    case HASH_ATTRIBUTE_PARAM:
 
56219
    {
 
56220
 
 
56221
attributeData->param = attributeValue;
 
56222
#ifdef GENERATEDSAXPARSER_VALIDATION
 
56223
    if ( mValidate )
 
56224
    {
 
56225
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
56226
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
56227
    {
 
56228
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
56229
            simpleTypeValidationResult,
 
56230
            HASH_ELEMENT_CULL_FACE,
 
56231
            HASH_ATTRIBUTE_PARAM,
 
56232
            attributeValue) )
 
56233
        {
 
56234
            return false;
 
56235
        }
 
56236
    }
 
56237
    } // validation
 
56238
#endif
 
56239
 
 
56240
    break;
 
56241
    }
 
56242
    default:
 
56243
    {
 
56244
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_CULL_FACE, attribute, attributeValue))
 
56245
            {return false;}
 
56246
    }
 
56247
    }
 
56248
    }
 
56249
}
 
56250
 
 
56251
 
 
56252
    return true;
 
56253
}
 
56254
 
 
56255
//---------------------------------------------------------------------
 
56256
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__cull_face()
 
56257
{
 
56258
#ifdef GENERATEDSAXPARSER_VALIDATION
 
56259
    if ( mValidate )
 
56260
    {
 
56261
 
 
56262
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__cull_face();
 
56263
        if ( !validationResult ) return false;
 
56264
 
 
56265
    } // validation
 
56266
#endif
 
56267
 
 
56268
    return true;
 
56269
}
 
56270
 
 
56271
//---------------------------------------------------------------------
 
56272
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__cull_face( void* attributeData )
 
56273
{
 
56274
    profile_GLES__technique__pass__states__cull_face__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__cull_face__AttributeData*>(attributeData);
 
56275
 
 
56276
    typedAttributeData->~profile_GLES__technique__pass__states__cull_face__AttributeData();
 
56277
 
 
56278
    return true;
 
56279
}
 
56280
 
 
56281
//---------------------------------------------------------------------
 
56282
const profile_GLES__technique__pass__states__depth_func__AttributeData profile_GLES__technique__pass__states__depth_func__AttributeData::DEFAULT = {ENUM__gl_func_enum__ALWAYS, 0};
 
56283
 
 
56284
//---------------------------------------------------------------------
 
56285
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__depth_func( const ParserChar* text, size_t textLength )
 
56286
{
 
56287
    return true;
 
56288
}
 
56289
 
 
56290
//---------------------------------------------------------------------
 
56291
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__depth_func( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
56292
{
 
56293
#ifdef GENERATEDSAXPARSER_VALIDATION
 
56294
    if ( mValidate )
 
56295
    {
 
56296
 
 
56297
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__depth_func( attributes, attributeDataPtr, validationDataPtr );
 
56298
        if ( !validationResult ) return false;
 
56299
 
 
56300
    } // validation
 
56301
#endif
 
56302
 
 
56303
profile_GLES__technique__pass__states__depth_func__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__depth_func__AttributeData>(attributeDataPtr);
 
56304
 
 
56305
const ParserChar** attributeArray = attributes.attributes;
 
56306
if ( attributeArray )
 
56307
{
 
56308
    while (true)
 
56309
    {
 
56310
        const ParserChar * attribute = *attributeArray;
 
56311
        if ( !attribute )
 
56312
            break;
 
56313
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
56314
        attributeArray++;
 
56315
        if ( !attributeArray )
 
56316
            return false;
 
56317
        const ParserChar* attributeValue = *attributeArray;
 
56318
        attributeArray++;
 
56319
 
 
56320
 
 
56321
    switch ( hash )
 
56322
    {
 
56323
    case HASH_ATTRIBUTE_VALUE:
 
56324
    {
 
56325
bool failed;
 
56326
attributeData->value = Utils::toEnum<ENUM__gl_func_enum, StringHash, ENUM__gl_func_enum__COUNT>(attributeValue, failed, ENUM__gl_func_enumMap, Utils::calculateStringHash);
 
56327
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
56328
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
56329
        HASH_ELEMENT_DEPTH_FUNC,
 
56330
        HASH_ATTRIBUTE_VALUE,
 
56331
        attributeValue))
 
56332
{
 
56333
    return false;
 
56334
}
 
56335
 
 
56336
    break;
 
56337
    }
 
56338
    case HASH_ATTRIBUTE_PARAM:
 
56339
    {
 
56340
 
 
56341
attributeData->param = attributeValue;
 
56342
#ifdef GENERATEDSAXPARSER_VALIDATION
 
56343
    if ( mValidate )
 
56344
    {
 
56345
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
56346
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
56347
    {
 
56348
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
56349
            simpleTypeValidationResult,
 
56350
            HASH_ELEMENT_DEPTH_FUNC,
 
56351
            HASH_ATTRIBUTE_PARAM,
 
56352
            attributeValue) )
 
56353
        {
 
56354
            return false;
 
56355
        }
 
56356
    }
 
56357
    } // validation
 
56358
#endif
 
56359
 
 
56360
    break;
 
56361
    }
 
56362
    default:
 
56363
    {
 
56364
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_DEPTH_FUNC, attribute, attributeValue))
 
56365
            {return false;}
 
56366
    }
 
56367
    }
 
56368
    }
 
56369
}
 
56370
 
 
56371
 
 
56372
    return true;
 
56373
}
 
56374
 
 
56375
//---------------------------------------------------------------------
 
56376
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__depth_func()
 
56377
{
 
56378
#ifdef GENERATEDSAXPARSER_VALIDATION
 
56379
    if ( mValidate )
 
56380
    {
 
56381
 
 
56382
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__depth_func();
 
56383
        if ( !validationResult ) return false;
 
56384
 
 
56385
    } // validation
 
56386
#endif
 
56387
 
 
56388
    return true;
 
56389
}
 
56390
 
 
56391
//---------------------------------------------------------------------
 
56392
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__depth_func( void* attributeData )
 
56393
{
 
56394
    profile_GLES__technique__pass__states__depth_func__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__depth_func__AttributeData*>(attributeData);
 
56395
 
 
56396
    typedAttributeData->~profile_GLES__technique__pass__states__depth_func__AttributeData();
 
56397
 
 
56398
    return true;
 
56399
}
 
56400
 
 
56401
//---------------------------------------------------------------------
 
56402
const profile_GLES__technique__pass__states__depth_mask__AttributeData profile_GLES__technique__pass__states__depth_mask__AttributeData::DEFAULT = {false, 0};
 
56403
 
 
56404
//---------------------------------------------------------------------
 
56405
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__depth_mask( const ParserChar* text, size_t textLength )
 
56406
{
 
56407
    return true;
 
56408
}
 
56409
 
 
56410
//---------------------------------------------------------------------
 
56411
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__depth_mask( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
56412
{
 
56413
#ifdef GENERATEDSAXPARSER_VALIDATION
 
56414
    if ( mValidate )
 
56415
    {
 
56416
 
 
56417
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__depth_mask( attributes, attributeDataPtr, validationDataPtr );
 
56418
        if ( !validationResult ) return false;
 
56419
 
 
56420
    } // validation
 
56421
#endif
 
56422
 
 
56423
profile_GLES__technique__pass__states__depth_mask__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__depth_mask__AttributeData>(attributeDataPtr);
 
56424
 
 
56425
const ParserChar** attributeArray = attributes.attributes;
 
56426
if ( attributeArray )
 
56427
{
 
56428
    while (true)
 
56429
    {
 
56430
        const ParserChar * attribute = *attributeArray;
 
56431
        if ( !attribute )
 
56432
            break;
 
56433
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
56434
        attributeArray++;
 
56435
        if ( !attributeArray )
 
56436
            return false;
 
56437
        const ParserChar* attributeValue = *attributeArray;
 
56438
        attributeArray++;
 
56439
 
 
56440
 
 
56441
    switch ( hash )
 
56442
    {
 
56443
    case HASH_ATTRIBUTE_VALUE:
 
56444
    {
 
56445
bool failed;
 
56446
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
56447
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
56448
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
56449
        HASH_ELEMENT_DEPTH_MASK,
 
56450
        HASH_ATTRIBUTE_VALUE,
 
56451
        attributeValue))
 
56452
{
 
56453
    return false;
 
56454
}
 
56455
 
 
56456
    break;
 
56457
    }
 
56458
    case HASH_ATTRIBUTE_PARAM:
 
56459
    {
 
56460
 
 
56461
attributeData->param = attributeValue;
 
56462
#ifdef GENERATEDSAXPARSER_VALIDATION
 
56463
    if ( mValidate )
 
56464
    {
 
56465
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
56466
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
56467
    {
 
56468
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
56469
            simpleTypeValidationResult,
 
56470
            HASH_ELEMENT_DEPTH_MASK,
 
56471
            HASH_ATTRIBUTE_PARAM,
 
56472
            attributeValue) )
 
56473
        {
 
56474
            return false;
 
56475
        }
 
56476
    }
 
56477
    } // validation
 
56478
#endif
 
56479
 
 
56480
    break;
 
56481
    }
 
56482
    default:
 
56483
    {
 
56484
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_DEPTH_MASK, attribute, attributeValue))
 
56485
            {return false;}
 
56486
    }
 
56487
    }
 
56488
    }
 
56489
}
 
56490
 
 
56491
 
 
56492
    return true;
 
56493
}
 
56494
 
 
56495
//---------------------------------------------------------------------
 
56496
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__depth_mask()
 
56497
{
 
56498
#ifdef GENERATEDSAXPARSER_VALIDATION
 
56499
    if ( mValidate )
 
56500
    {
 
56501
 
 
56502
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__depth_mask();
 
56503
        if ( !validationResult ) return false;
 
56504
 
 
56505
    } // validation
 
56506
#endif
 
56507
 
 
56508
    return true;
 
56509
}
 
56510
 
 
56511
//---------------------------------------------------------------------
 
56512
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__depth_mask( void* attributeData )
 
56513
{
 
56514
    profile_GLES__technique__pass__states__depth_mask__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__depth_mask__AttributeData*>(attributeData);
 
56515
 
 
56516
    typedAttributeData->~profile_GLES__technique__pass__states__depth_mask__AttributeData();
 
56517
 
 
56518
    return true;
 
56519
}
 
56520
 
 
56521
//---------------------------------------------------------------------
 
56522
const profile_GLES__technique__pass__states__depth_range__AttributeData profile_GLES__technique__pass__states__depth_range__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<float>(), 0};
 
56523
 
 
56524
//---------------------------------------------------------------------
 
56525
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__depth_range( const ParserChar* text, size_t textLength )
 
56526
{
 
56527
    return true;
 
56528
}
 
56529
 
 
56530
//---------------------------------------------------------------------
 
56531
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__depth_range( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
56532
{
 
56533
#ifdef GENERATEDSAXPARSER_VALIDATION
 
56534
    if ( mValidate )
 
56535
    {
 
56536
 
 
56537
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__depth_range( attributes, attributeDataPtr, validationDataPtr );
 
56538
        if ( !validationResult ) return false;
 
56539
 
 
56540
    } // validation
 
56541
#endif
 
56542
 
 
56543
profile_GLES__technique__pass__states__depth_range__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__depth_range__AttributeData>(attributeDataPtr);
 
56544
 
 
56545
const ParserChar** attributeArray = attributes.attributes;
 
56546
if ( attributeArray )
 
56547
{
 
56548
    while (true)
 
56549
    {
 
56550
        const ParserChar * attribute = *attributeArray;
 
56551
        if ( !attribute )
 
56552
            break;
 
56553
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
56554
        attributeArray++;
 
56555
        if ( !attributeArray )
 
56556
            return false;
 
56557
        const ParserChar* attributeValue = *attributeArray;
 
56558
        attributeArray++;
 
56559
 
 
56560
 
 
56561
    switch ( hash )
 
56562
    {
 
56563
    case HASH_ATTRIBUTE_VALUE:
 
56564
    {
 
56565
bool failed;
 
56566
#ifdef GENERATEDSAXPARSER_VALIDATION
 
56567
    if ( mValidate )
 
56568
    {
 
56569
failed = !characterData2FloatList(attributeValue, attributeData->value, 0, HASH_ELEMENT_DEPTH_RANGE, HASH_ATTRIBUTE_VALUE);
 
56570
    }
 
56571
    else
 
56572
    {
 
56573
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
56574
    }
 
56575
#else
 
56576
    {
 
56577
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
56578
    } // validation
 
56579
#endif
 
56580
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
56581
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
56582
        HASH_ELEMENT_DEPTH_RANGE,
 
56583
        HASH_ATTRIBUTE_VALUE,
 
56584
        attributeValue))
 
56585
{
 
56586
    return false;
 
56587
}
 
56588
#ifdef GENERATEDSAXPARSER_VALIDATION
 
56589
    if ( mValidate )
 
56590
    {
 
56591
    ParserError::ErrorType simpleTypeValidationResult = validate__float2_type(attributeData->value.data, attributeData->value.size);
 
56592
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
56593
    {
 
56594
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
56595
            simpleTypeValidationResult,
 
56596
            HASH_ELEMENT_DEPTH_RANGE,
 
56597
            HASH_ATTRIBUTE_VALUE,
 
56598
            attributeValue) )
 
56599
        {
 
56600
            return false;
 
56601
        }
 
56602
    }
 
56603
    } // validation
 
56604
#endif
 
56605
 
 
56606
if ( !failed )
 
56607
    attributeData->present_attributes |= profile_GLES__technique__pass__states__depth_range__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
56608
 
 
56609
    break;
 
56610
    }
 
56611
    case HASH_ATTRIBUTE_PARAM:
 
56612
    {
 
56613
 
 
56614
attributeData->param = attributeValue;
 
56615
#ifdef GENERATEDSAXPARSER_VALIDATION
 
56616
    if ( mValidate )
 
56617
    {
 
56618
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
56619
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
56620
    {
 
56621
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
56622
            simpleTypeValidationResult,
 
56623
            HASH_ELEMENT_DEPTH_RANGE,
 
56624
            HASH_ATTRIBUTE_PARAM,
 
56625
            attributeValue) )
 
56626
        {
 
56627
            return false;
 
56628
        }
 
56629
    }
 
56630
    } // validation
 
56631
#endif
 
56632
 
 
56633
    break;
 
56634
    }
 
56635
    default:
 
56636
    {
 
56637
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_DEPTH_RANGE, attribute, attributeValue))
 
56638
            {return false;}
 
56639
    }
 
56640
    }
 
56641
    }
 
56642
}
 
56643
if ((attributeData->present_attributes & profile_GLES__technique__pass__states__depth_range__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
56644
{
 
56645
    bool failed;
 
56646
    failed = !characterData2FloatList("0.0E1 1.0E0", attributeData->value);
 
56647
    if ( !failed )
 
56648
    attributeData->present_attributes |= profile_GLES__technique__pass__states__depth_range__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
56649
}
 
56650
 
 
56651
 
 
56652
    return true;
 
56653
}
 
56654
 
 
56655
//---------------------------------------------------------------------
 
56656
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__depth_range()
 
56657
{
 
56658
#ifdef GENERATEDSAXPARSER_VALIDATION
 
56659
    if ( mValidate )
 
56660
    {
 
56661
 
 
56662
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__depth_range();
 
56663
        if ( !validationResult ) return false;
 
56664
 
 
56665
    } // validation
 
56666
#endif
 
56667
 
 
56668
    return true;
 
56669
}
 
56670
 
 
56671
//---------------------------------------------------------------------
 
56672
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__depth_range( void* attributeData )
 
56673
{
 
56674
    profile_GLES__technique__pass__states__depth_range__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__depth_range__AttributeData*>(attributeData);
 
56675
    if (typedAttributeData->value.data)
 
56676
    {
 
56677
        mStackMemoryManager.deleteObject();
 
56678
    }
 
56679
 
 
56680
 
 
56681
    typedAttributeData->~profile_GLES__technique__pass__states__depth_range__AttributeData();
 
56682
 
 
56683
    return true;
 
56684
}
 
56685
 
 
56686
//---------------------------------------------------------------------
 
56687
const profile_GLES__technique__pass__states__fog_color__AttributeData profile_GLES__technique__pass__states__fog_color__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<float>(), 0};
 
56688
 
 
56689
//---------------------------------------------------------------------
 
56690
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__fog_color( const ParserChar* text, size_t textLength )
 
56691
{
 
56692
    return true;
 
56693
}
 
56694
 
 
56695
//---------------------------------------------------------------------
 
56696
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__fog_color( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
56697
{
 
56698
#ifdef GENERATEDSAXPARSER_VALIDATION
 
56699
    if ( mValidate )
 
56700
    {
 
56701
 
 
56702
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__fog_color( attributes, attributeDataPtr, validationDataPtr );
 
56703
        if ( !validationResult ) return false;
 
56704
 
 
56705
    } // validation
 
56706
#endif
 
56707
 
 
56708
profile_GLES__technique__pass__states__fog_color__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__fog_color__AttributeData>(attributeDataPtr);
 
56709
 
 
56710
const ParserChar** attributeArray = attributes.attributes;
 
56711
if ( attributeArray )
 
56712
{
 
56713
    while (true)
 
56714
    {
 
56715
        const ParserChar * attribute = *attributeArray;
 
56716
        if ( !attribute )
 
56717
            break;
 
56718
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
56719
        attributeArray++;
 
56720
        if ( !attributeArray )
 
56721
            return false;
 
56722
        const ParserChar* attributeValue = *attributeArray;
 
56723
        attributeArray++;
 
56724
 
 
56725
 
 
56726
    switch ( hash )
 
56727
    {
 
56728
    case HASH_ATTRIBUTE_VALUE:
 
56729
    {
 
56730
bool failed;
 
56731
#ifdef GENERATEDSAXPARSER_VALIDATION
 
56732
    if ( mValidate )
 
56733
    {
 
56734
failed = !characterData2FloatList(attributeValue, attributeData->value, 0, HASH_ELEMENT_FOG_COLOR, HASH_ATTRIBUTE_VALUE);
 
56735
    }
 
56736
    else
 
56737
    {
 
56738
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
56739
    }
 
56740
#else
 
56741
    {
 
56742
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
56743
    } // validation
 
56744
#endif
 
56745
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
56746
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
56747
        HASH_ELEMENT_FOG_COLOR,
 
56748
        HASH_ATTRIBUTE_VALUE,
 
56749
        attributeValue))
 
56750
{
 
56751
    return false;
 
56752
}
 
56753
#ifdef GENERATEDSAXPARSER_VALIDATION
 
56754
    if ( mValidate )
 
56755
    {
 
56756
    ParserError::ErrorType simpleTypeValidationResult = validate__float4_type(attributeData->value.data, attributeData->value.size);
 
56757
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
56758
    {
 
56759
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
56760
            simpleTypeValidationResult,
 
56761
            HASH_ELEMENT_FOG_COLOR,
 
56762
            HASH_ATTRIBUTE_VALUE,
 
56763
            attributeValue) )
 
56764
        {
 
56765
            return false;
 
56766
        }
 
56767
    }
 
56768
    } // validation
 
56769
#endif
 
56770
 
 
56771
if ( !failed )
 
56772
    attributeData->present_attributes |= profile_GLES__technique__pass__states__fog_color__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
56773
 
 
56774
    break;
 
56775
    }
 
56776
    case HASH_ATTRIBUTE_PARAM:
 
56777
    {
 
56778
 
 
56779
attributeData->param = attributeValue;
 
56780
#ifdef GENERATEDSAXPARSER_VALIDATION
 
56781
    if ( mValidate )
 
56782
    {
 
56783
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
56784
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
56785
    {
 
56786
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
56787
            simpleTypeValidationResult,
 
56788
            HASH_ELEMENT_FOG_COLOR,
 
56789
            HASH_ATTRIBUTE_PARAM,
 
56790
            attributeValue) )
 
56791
        {
 
56792
            return false;
 
56793
        }
 
56794
    }
 
56795
    } // validation
 
56796
#endif
 
56797
 
 
56798
    break;
 
56799
    }
 
56800
    default:
 
56801
    {
 
56802
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FOG_COLOR, attribute, attributeValue))
 
56803
            {return false;}
 
56804
    }
 
56805
    }
 
56806
    }
 
56807
}
 
56808
if ((attributeData->present_attributes & profile_GLES__technique__pass__states__fog_color__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
56809
{
 
56810
    bool failed;
 
56811
    failed = !characterData2FloatList("0.0E1 0.0E1 0.0E1 0.0E1", attributeData->value);
 
56812
    if ( !failed )
 
56813
    attributeData->present_attributes |= profile_GLES__technique__pass__states__fog_color__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
56814
}
 
56815
 
 
56816
 
 
56817
    return true;
 
56818
}
 
56819
 
 
56820
//---------------------------------------------------------------------
 
56821
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__fog_color()
 
56822
{
 
56823
#ifdef GENERATEDSAXPARSER_VALIDATION
 
56824
    if ( mValidate )
 
56825
    {
 
56826
 
 
56827
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__fog_color();
 
56828
        if ( !validationResult ) return false;
 
56829
 
 
56830
    } // validation
 
56831
#endif
 
56832
 
 
56833
    return true;
 
56834
}
 
56835
 
 
56836
//---------------------------------------------------------------------
 
56837
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__fog_color( void* attributeData )
 
56838
{
 
56839
    profile_GLES__technique__pass__states__fog_color__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__fog_color__AttributeData*>(attributeData);
 
56840
    if (typedAttributeData->value.data)
 
56841
    {
 
56842
        mStackMemoryManager.deleteObject();
 
56843
    }
 
56844
 
 
56845
 
 
56846
    typedAttributeData->~profile_GLES__technique__pass__states__fog_color__AttributeData();
 
56847
 
 
56848
    return true;
 
56849
}
 
56850
 
 
56851
//---------------------------------------------------------------------
 
56852
const profile_GLES__technique__pass__states__fog_density__AttributeData profile_GLES__technique__pass__states__fog_density__AttributeData::DEFAULT = {1.0E0, 0};
 
56853
 
 
56854
//---------------------------------------------------------------------
 
56855
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__fog_density( const ParserChar* text, size_t textLength )
 
56856
{
 
56857
    return true;
 
56858
}
 
56859
 
 
56860
//---------------------------------------------------------------------
 
56861
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__fog_density( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
56862
{
 
56863
#ifdef GENERATEDSAXPARSER_VALIDATION
 
56864
    if ( mValidate )
 
56865
    {
 
56866
 
 
56867
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__fog_density( attributes, attributeDataPtr, validationDataPtr );
 
56868
        if ( !validationResult ) return false;
 
56869
 
 
56870
    } // validation
 
56871
#endif
 
56872
 
 
56873
profile_GLES__technique__pass__states__fog_density__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__fog_density__AttributeData>(attributeDataPtr);
 
56874
 
 
56875
const ParserChar** attributeArray = attributes.attributes;
 
56876
if ( attributeArray )
 
56877
{
 
56878
    while (true)
 
56879
    {
 
56880
        const ParserChar * attribute = *attributeArray;
 
56881
        if ( !attribute )
 
56882
            break;
 
56883
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
56884
        attributeArray++;
 
56885
        if ( !attributeArray )
 
56886
            return false;
 
56887
        const ParserChar* attributeValue = *attributeArray;
 
56888
        attributeArray++;
 
56889
 
 
56890
 
 
56891
    switch ( hash )
 
56892
    {
 
56893
    case HASH_ATTRIBUTE_VALUE:
 
56894
    {
 
56895
bool failed;
 
56896
attributeData->value = GeneratedSaxParser::Utils::toFloat(attributeValue, failed);
 
56897
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
56898
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
56899
        HASH_ELEMENT_FOG_DENSITY,
 
56900
        HASH_ATTRIBUTE_VALUE,
 
56901
        attributeValue))
 
56902
{
 
56903
    return false;
 
56904
}
 
56905
 
 
56906
    break;
 
56907
    }
 
56908
    case HASH_ATTRIBUTE_PARAM:
 
56909
    {
 
56910
 
 
56911
attributeData->param = attributeValue;
 
56912
#ifdef GENERATEDSAXPARSER_VALIDATION
 
56913
    if ( mValidate )
 
56914
    {
 
56915
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
56916
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
56917
    {
 
56918
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
56919
            simpleTypeValidationResult,
 
56920
            HASH_ELEMENT_FOG_DENSITY,
 
56921
            HASH_ATTRIBUTE_PARAM,
 
56922
            attributeValue) )
 
56923
        {
 
56924
            return false;
 
56925
        }
 
56926
    }
 
56927
    } // validation
 
56928
#endif
 
56929
 
 
56930
    break;
 
56931
    }
 
56932
    default:
 
56933
    {
 
56934
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FOG_DENSITY, attribute, attributeValue))
 
56935
            {return false;}
 
56936
    }
 
56937
    }
 
56938
    }
 
56939
}
 
56940
 
 
56941
 
 
56942
    return true;
 
56943
}
 
56944
 
 
56945
//---------------------------------------------------------------------
 
56946
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__fog_density()
 
56947
{
 
56948
#ifdef GENERATEDSAXPARSER_VALIDATION
 
56949
    if ( mValidate )
 
56950
    {
 
56951
 
 
56952
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__fog_density();
 
56953
        if ( !validationResult ) return false;
 
56954
 
 
56955
    } // validation
 
56956
#endif
 
56957
 
 
56958
    return true;
 
56959
}
 
56960
 
 
56961
//---------------------------------------------------------------------
 
56962
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__fog_density( void* attributeData )
 
56963
{
 
56964
    profile_GLES__technique__pass__states__fog_density__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__fog_density__AttributeData*>(attributeData);
 
56965
 
 
56966
    typedAttributeData->~profile_GLES__technique__pass__states__fog_density__AttributeData();
 
56967
 
 
56968
    return true;
 
56969
}
 
56970
 
 
56971
//---------------------------------------------------------------------
 
56972
const profile_GLES__technique__pass__states__fog_mode__AttributeData profile_GLES__technique__pass__states__fog_mode__AttributeData::DEFAULT = {ENUM__gl_fog_enum__EXP, 0};
 
56973
 
 
56974
//---------------------------------------------------------------------
 
56975
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__fog_mode( const ParserChar* text, size_t textLength )
 
56976
{
 
56977
    return true;
 
56978
}
 
56979
 
 
56980
//---------------------------------------------------------------------
 
56981
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__fog_mode( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
56982
{
 
56983
#ifdef GENERATEDSAXPARSER_VALIDATION
 
56984
    if ( mValidate )
 
56985
    {
 
56986
 
 
56987
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__fog_mode( attributes, attributeDataPtr, validationDataPtr );
 
56988
        if ( !validationResult ) return false;
 
56989
 
 
56990
    } // validation
 
56991
#endif
 
56992
 
 
56993
profile_GLES__technique__pass__states__fog_mode__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__fog_mode__AttributeData>(attributeDataPtr);
 
56994
 
 
56995
const ParserChar** attributeArray = attributes.attributes;
 
56996
if ( attributeArray )
 
56997
{
 
56998
    while (true)
 
56999
    {
 
57000
        const ParserChar * attribute = *attributeArray;
 
57001
        if ( !attribute )
 
57002
            break;
 
57003
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
57004
        attributeArray++;
 
57005
        if ( !attributeArray )
 
57006
            return false;
 
57007
        const ParserChar* attributeValue = *attributeArray;
 
57008
        attributeArray++;
 
57009
 
 
57010
 
 
57011
    switch ( hash )
 
57012
    {
 
57013
    case HASH_ATTRIBUTE_VALUE:
 
57014
    {
 
57015
bool failed;
 
57016
attributeData->value = Utils::toEnum<ENUM__gl_fog_enum, StringHash, ENUM__gl_fog_enum__COUNT>(attributeValue, failed, ENUM__gl_fog_enumMap, Utils::calculateStringHash);
 
57017
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
57018
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
57019
        HASH_ELEMENT_FOG_MODE,
 
57020
        HASH_ATTRIBUTE_VALUE,
 
57021
        attributeValue))
 
57022
{
 
57023
    return false;
 
57024
}
 
57025
 
 
57026
    break;
 
57027
    }
 
57028
    case HASH_ATTRIBUTE_PARAM:
 
57029
    {
 
57030
 
 
57031
attributeData->param = attributeValue;
 
57032
#ifdef GENERATEDSAXPARSER_VALIDATION
 
57033
    if ( mValidate )
 
57034
    {
 
57035
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
57036
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
57037
    {
 
57038
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
57039
            simpleTypeValidationResult,
 
57040
            HASH_ELEMENT_FOG_MODE,
 
57041
            HASH_ATTRIBUTE_PARAM,
 
57042
            attributeValue) )
 
57043
        {
 
57044
            return false;
 
57045
        }
 
57046
    }
 
57047
    } // validation
 
57048
#endif
 
57049
 
 
57050
    break;
 
57051
    }
 
57052
    default:
 
57053
    {
 
57054
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FOG_MODE, attribute, attributeValue))
 
57055
            {return false;}
 
57056
    }
 
57057
    }
 
57058
    }
 
57059
}
 
57060
 
 
57061
 
 
57062
    return true;
 
57063
}
 
57064
 
 
57065
//---------------------------------------------------------------------
 
57066
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__fog_mode()
 
57067
{
 
57068
#ifdef GENERATEDSAXPARSER_VALIDATION
 
57069
    if ( mValidate )
 
57070
    {
 
57071
 
 
57072
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__fog_mode();
 
57073
        if ( !validationResult ) return false;
 
57074
 
 
57075
    } // validation
 
57076
#endif
 
57077
 
 
57078
    return true;
 
57079
}
 
57080
 
 
57081
//---------------------------------------------------------------------
 
57082
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__fog_mode( void* attributeData )
 
57083
{
 
57084
    profile_GLES__technique__pass__states__fog_mode__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__fog_mode__AttributeData*>(attributeData);
 
57085
 
 
57086
    typedAttributeData->~profile_GLES__technique__pass__states__fog_mode__AttributeData();
 
57087
 
 
57088
    return true;
 
57089
}
 
57090
 
 
57091
//---------------------------------------------------------------------
 
57092
const profile_GLES__technique__pass__states__fog_start__AttributeData profile_GLES__technique__pass__states__fog_start__AttributeData::DEFAULT = {0.0E1, 0};
 
57093
 
 
57094
//---------------------------------------------------------------------
 
57095
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__fog_start( const ParserChar* text, size_t textLength )
 
57096
{
 
57097
    return true;
 
57098
}
 
57099
 
 
57100
//---------------------------------------------------------------------
 
57101
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__fog_start( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
57102
{
 
57103
#ifdef GENERATEDSAXPARSER_VALIDATION
 
57104
    if ( mValidate )
 
57105
    {
 
57106
 
 
57107
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__fog_start( attributes, attributeDataPtr, validationDataPtr );
 
57108
        if ( !validationResult ) return false;
 
57109
 
 
57110
    } // validation
 
57111
#endif
 
57112
 
 
57113
profile_GLES__technique__pass__states__fog_start__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__fog_start__AttributeData>(attributeDataPtr);
 
57114
 
 
57115
const ParserChar** attributeArray = attributes.attributes;
 
57116
if ( attributeArray )
 
57117
{
 
57118
    while (true)
 
57119
    {
 
57120
        const ParserChar * attribute = *attributeArray;
 
57121
        if ( !attribute )
 
57122
            break;
 
57123
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
57124
        attributeArray++;
 
57125
        if ( !attributeArray )
 
57126
            return false;
 
57127
        const ParserChar* attributeValue = *attributeArray;
 
57128
        attributeArray++;
 
57129
 
 
57130
 
 
57131
    switch ( hash )
 
57132
    {
 
57133
    case HASH_ATTRIBUTE_VALUE:
 
57134
    {
 
57135
bool failed;
 
57136
attributeData->value = GeneratedSaxParser::Utils::toFloat(attributeValue, failed);
 
57137
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
57138
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
57139
        HASH_ELEMENT_FOG_START,
 
57140
        HASH_ATTRIBUTE_VALUE,
 
57141
        attributeValue))
 
57142
{
 
57143
    return false;
 
57144
}
 
57145
 
 
57146
    break;
 
57147
    }
 
57148
    case HASH_ATTRIBUTE_PARAM:
 
57149
    {
 
57150
 
 
57151
attributeData->param = attributeValue;
 
57152
#ifdef GENERATEDSAXPARSER_VALIDATION
 
57153
    if ( mValidate )
 
57154
    {
 
57155
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
57156
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
57157
    {
 
57158
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
57159
            simpleTypeValidationResult,
 
57160
            HASH_ELEMENT_FOG_START,
 
57161
            HASH_ATTRIBUTE_PARAM,
 
57162
            attributeValue) )
 
57163
        {
 
57164
            return false;
 
57165
        }
 
57166
    }
 
57167
    } // validation
 
57168
#endif
 
57169
 
 
57170
    break;
 
57171
    }
 
57172
    default:
 
57173
    {
 
57174
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FOG_START, attribute, attributeValue))
 
57175
            {return false;}
 
57176
    }
 
57177
    }
 
57178
    }
 
57179
}
 
57180
 
 
57181
 
 
57182
    return true;
 
57183
}
 
57184
 
 
57185
//---------------------------------------------------------------------
 
57186
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__fog_start()
 
57187
{
 
57188
#ifdef GENERATEDSAXPARSER_VALIDATION
 
57189
    if ( mValidate )
 
57190
    {
 
57191
 
 
57192
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__fog_start();
 
57193
        if ( !validationResult ) return false;
 
57194
 
 
57195
    } // validation
 
57196
#endif
 
57197
 
 
57198
    return true;
 
57199
}
 
57200
 
 
57201
//---------------------------------------------------------------------
 
57202
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__fog_start( void* attributeData )
 
57203
{
 
57204
    profile_GLES__technique__pass__states__fog_start__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__fog_start__AttributeData*>(attributeData);
 
57205
 
 
57206
    typedAttributeData->~profile_GLES__technique__pass__states__fog_start__AttributeData();
 
57207
 
 
57208
    return true;
 
57209
}
 
57210
 
 
57211
//---------------------------------------------------------------------
 
57212
const profile_GLES__technique__pass__states__fog_end__AttributeData profile_GLES__technique__pass__states__fog_end__AttributeData::DEFAULT = {1.0E0, 0};
 
57213
 
 
57214
//---------------------------------------------------------------------
 
57215
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__fog_end( const ParserChar* text, size_t textLength )
 
57216
{
 
57217
    return true;
 
57218
}
 
57219
 
 
57220
//---------------------------------------------------------------------
 
57221
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__fog_end( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
57222
{
 
57223
#ifdef GENERATEDSAXPARSER_VALIDATION
 
57224
    if ( mValidate )
 
57225
    {
 
57226
 
 
57227
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__fog_end( attributes, attributeDataPtr, validationDataPtr );
 
57228
        if ( !validationResult ) return false;
 
57229
 
 
57230
    } // validation
 
57231
#endif
 
57232
 
 
57233
profile_GLES__technique__pass__states__fog_end__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__fog_end__AttributeData>(attributeDataPtr);
 
57234
 
 
57235
const ParserChar** attributeArray = attributes.attributes;
 
57236
if ( attributeArray )
 
57237
{
 
57238
    while (true)
 
57239
    {
 
57240
        const ParserChar * attribute = *attributeArray;
 
57241
        if ( !attribute )
 
57242
            break;
 
57243
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
57244
        attributeArray++;
 
57245
        if ( !attributeArray )
 
57246
            return false;
 
57247
        const ParserChar* attributeValue = *attributeArray;
 
57248
        attributeArray++;
 
57249
 
 
57250
 
 
57251
    switch ( hash )
 
57252
    {
 
57253
    case HASH_ATTRIBUTE_VALUE:
 
57254
    {
 
57255
bool failed;
 
57256
attributeData->value = GeneratedSaxParser::Utils::toFloat(attributeValue, failed);
 
57257
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
57258
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
57259
        HASH_ELEMENT_FOG_END,
 
57260
        HASH_ATTRIBUTE_VALUE,
 
57261
        attributeValue))
 
57262
{
 
57263
    return false;
 
57264
}
 
57265
 
 
57266
    break;
 
57267
    }
 
57268
    case HASH_ATTRIBUTE_PARAM:
 
57269
    {
 
57270
 
 
57271
attributeData->param = attributeValue;
 
57272
#ifdef GENERATEDSAXPARSER_VALIDATION
 
57273
    if ( mValidate )
 
57274
    {
 
57275
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
57276
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
57277
    {
 
57278
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
57279
            simpleTypeValidationResult,
 
57280
            HASH_ELEMENT_FOG_END,
 
57281
            HASH_ATTRIBUTE_PARAM,
 
57282
            attributeValue) )
 
57283
        {
 
57284
            return false;
 
57285
        }
 
57286
    }
 
57287
    } // validation
 
57288
#endif
 
57289
 
 
57290
    break;
 
57291
    }
 
57292
    default:
 
57293
    {
 
57294
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FOG_END, attribute, attributeValue))
 
57295
            {return false;}
 
57296
    }
 
57297
    }
 
57298
    }
 
57299
}
 
57300
 
 
57301
 
 
57302
    return true;
 
57303
}
 
57304
 
 
57305
//---------------------------------------------------------------------
 
57306
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__fog_end()
 
57307
{
 
57308
#ifdef GENERATEDSAXPARSER_VALIDATION
 
57309
    if ( mValidate )
 
57310
    {
 
57311
 
 
57312
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__fog_end();
 
57313
        if ( !validationResult ) return false;
 
57314
 
 
57315
    } // validation
 
57316
#endif
 
57317
 
 
57318
    return true;
 
57319
}
 
57320
 
 
57321
//---------------------------------------------------------------------
 
57322
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__fog_end( void* attributeData )
 
57323
{
 
57324
    profile_GLES__technique__pass__states__fog_end__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__fog_end__AttributeData*>(attributeData);
 
57325
 
 
57326
    typedAttributeData->~profile_GLES__technique__pass__states__fog_end__AttributeData();
 
57327
 
 
57328
    return true;
 
57329
}
 
57330
 
 
57331
//---------------------------------------------------------------------
 
57332
const profile_GLES__technique__pass__states__front_face__AttributeData profile_GLES__technique__pass__states__front_face__AttributeData::DEFAULT = {ENUM__gl_front_face_enum__CCW, 0};
 
57333
 
 
57334
//---------------------------------------------------------------------
 
57335
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__front_face( const ParserChar* text, size_t textLength )
 
57336
{
 
57337
    return true;
 
57338
}
 
57339
 
 
57340
//---------------------------------------------------------------------
 
57341
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__front_face( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
57342
{
 
57343
#ifdef GENERATEDSAXPARSER_VALIDATION
 
57344
    if ( mValidate )
 
57345
    {
 
57346
 
 
57347
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__front_face( attributes, attributeDataPtr, validationDataPtr );
 
57348
        if ( !validationResult ) return false;
 
57349
 
 
57350
    } // validation
 
57351
#endif
 
57352
 
 
57353
profile_GLES__technique__pass__states__front_face__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__front_face__AttributeData>(attributeDataPtr);
 
57354
 
 
57355
const ParserChar** attributeArray = attributes.attributes;
 
57356
if ( attributeArray )
 
57357
{
 
57358
    while (true)
 
57359
    {
 
57360
        const ParserChar * attribute = *attributeArray;
 
57361
        if ( !attribute )
 
57362
            break;
 
57363
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
57364
        attributeArray++;
 
57365
        if ( !attributeArray )
 
57366
            return false;
 
57367
        const ParserChar* attributeValue = *attributeArray;
 
57368
        attributeArray++;
 
57369
 
 
57370
 
 
57371
    switch ( hash )
 
57372
    {
 
57373
    case HASH_ATTRIBUTE_VALUE:
 
57374
    {
 
57375
bool failed;
 
57376
attributeData->value = Utils::toEnum<ENUM__gl_front_face_enum, StringHash, ENUM__gl_front_face_enum__COUNT>(attributeValue, failed, ENUM__gl_front_face_enumMap, Utils::calculateStringHash);
 
57377
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
57378
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
57379
        HASH_ELEMENT_FRONT_FACE,
 
57380
        HASH_ATTRIBUTE_VALUE,
 
57381
        attributeValue))
 
57382
{
 
57383
    return false;
 
57384
}
 
57385
 
 
57386
    break;
 
57387
    }
 
57388
    case HASH_ATTRIBUTE_PARAM:
 
57389
    {
 
57390
 
 
57391
attributeData->param = attributeValue;
 
57392
#ifdef GENERATEDSAXPARSER_VALIDATION
 
57393
    if ( mValidate )
 
57394
    {
 
57395
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
57396
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
57397
    {
 
57398
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
57399
            simpleTypeValidationResult,
 
57400
            HASH_ELEMENT_FRONT_FACE,
 
57401
            HASH_ATTRIBUTE_PARAM,
 
57402
            attributeValue) )
 
57403
        {
 
57404
            return false;
 
57405
        }
 
57406
    }
 
57407
    } // validation
 
57408
#endif
 
57409
 
 
57410
    break;
 
57411
    }
 
57412
    default:
 
57413
    {
 
57414
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FRONT_FACE, attribute, attributeValue))
 
57415
            {return false;}
 
57416
    }
 
57417
    }
 
57418
    }
 
57419
}
 
57420
 
 
57421
 
 
57422
    return true;
 
57423
}
 
57424
 
 
57425
//---------------------------------------------------------------------
 
57426
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__front_face()
 
57427
{
 
57428
#ifdef GENERATEDSAXPARSER_VALIDATION
 
57429
    if ( mValidate )
 
57430
    {
 
57431
 
 
57432
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__front_face();
 
57433
        if ( !validationResult ) return false;
 
57434
 
 
57435
    } // validation
 
57436
#endif
 
57437
 
 
57438
    return true;
 
57439
}
 
57440
 
 
57441
//---------------------------------------------------------------------
 
57442
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__front_face( void* attributeData )
 
57443
{
 
57444
    profile_GLES__technique__pass__states__front_face__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__front_face__AttributeData*>(attributeData);
 
57445
 
 
57446
    typedAttributeData->~profile_GLES__technique__pass__states__front_face__AttributeData();
 
57447
 
 
57448
    return true;
 
57449
}
 
57450
 
 
57451
//---------------------------------------------------------------------
 
57452
const profile_GLES__technique__pass__states__logic_op__AttributeData profile_GLES__technique__pass__states__logic_op__AttributeData::DEFAULT = {ENUM__gl_logic_op_enum__COPY, 0};
 
57453
 
 
57454
//---------------------------------------------------------------------
 
57455
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__logic_op( const ParserChar* text, size_t textLength )
 
57456
{
 
57457
    return true;
 
57458
}
 
57459
 
 
57460
//---------------------------------------------------------------------
 
57461
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__logic_op( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
57462
{
 
57463
#ifdef GENERATEDSAXPARSER_VALIDATION
 
57464
    if ( mValidate )
 
57465
    {
 
57466
 
 
57467
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__logic_op( attributes, attributeDataPtr, validationDataPtr );
 
57468
        if ( !validationResult ) return false;
 
57469
 
 
57470
    } // validation
 
57471
#endif
 
57472
 
 
57473
profile_GLES__technique__pass__states__logic_op__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__logic_op__AttributeData>(attributeDataPtr);
 
57474
 
 
57475
const ParserChar** attributeArray = attributes.attributes;
 
57476
if ( attributeArray )
 
57477
{
 
57478
    while (true)
 
57479
    {
 
57480
        const ParserChar * attribute = *attributeArray;
 
57481
        if ( !attribute )
 
57482
            break;
 
57483
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
57484
        attributeArray++;
 
57485
        if ( !attributeArray )
 
57486
            return false;
 
57487
        const ParserChar* attributeValue = *attributeArray;
 
57488
        attributeArray++;
 
57489
 
 
57490
 
 
57491
    switch ( hash )
 
57492
    {
 
57493
    case HASH_ATTRIBUTE_VALUE:
 
57494
    {
 
57495
bool failed;
 
57496
attributeData->value = Utils::toEnum<ENUM__gl_logic_op_enum, StringHash, ENUM__gl_logic_op_enum__COUNT>(attributeValue, failed, ENUM__gl_logic_op_enumMap, Utils::calculateStringHash);
 
57497
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
57498
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
57499
        HASH_ELEMENT_LOGIC_OP,
 
57500
        HASH_ATTRIBUTE_VALUE,
 
57501
        attributeValue))
 
57502
{
 
57503
    return false;
 
57504
}
 
57505
 
 
57506
    break;
 
57507
    }
 
57508
    case HASH_ATTRIBUTE_PARAM:
 
57509
    {
 
57510
 
 
57511
attributeData->param = attributeValue;
 
57512
#ifdef GENERATEDSAXPARSER_VALIDATION
 
57513
    if ( mValidate )
 
57514
    {
 
57515
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
57516
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
57517
    {
 
57518
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
57519
            simpleTypeValidationResult,
 
57520
            HASH_ELEMENT_LOGIC_OP,
 
57521
            HASH_ATTRIBUTE_PARAM,
 
57522
            attributeValue) )
 
57523
        {
 
57524
            return false;
 
57525
        }
 
57526
    }
 
57527
    } // validation
 
57528
#endif
 
57529
 
 
57530
    break;
 
57531
    }
 
57532
    default:
 
57533
    {
 
57534
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LOGIC_OP, attribute, attributeValue))
 
57535
            {return false;}
 
57536
    }
 
57537
    }
 
57538
    }
 
57539
}
 
57540
 
 
57541
 
 
57542
    return true;
 
57543
}
 
57544
 
 
57545
//---------------------------------------------------------------------
 
57546
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__logic_op()
 
57547
{
 
57548
#ifdef GENERATEDSAXPARSER_VALIDATION
 
57549
    if ( mValidate )
 
57550
    {
 
57551
 
 
57552
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__logic_op();
 
57553
        if ( !validationResult ) return false;
 
57554
 
 
57555
    } // validation
 
57556
#endif
 
57557
 
 
57558
    return true;
 
57559
}
 
57560
 
 
57561
//---------------------------------------------------------------------
 
57562
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__logic_op( void* attributeData )
 
57563
{
 
57564
    profile_GLES__technique__pass__states__logic_op__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__logic_op__AttributeData*>(attributeData);
 
57565
 
 
57566
    typedAttributeData->~profile_GLES__technique__pass__states__logic_op__AttributeData();
 
57567
 
 
57568
    return true;
 
57569
}
 
57570
 
 
57571
//---------------------------------------------------------------------
 
57572
const profile_GLES__technique__pass__states__light_ambient__AttributeData profile_GLES__technique__pass__states__light_ambient__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<float>(), 0, 0};
 
57573
 
 
57574
//---------------------------------------------------------------------
 
57575
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__light_ambient( const ParserChar* text, size_t textLength )
 
57576
{
 
57577
    return true;
 
57578
}
 
57579
 
 
57580
//---------------------------------------------------------------------
 
57581
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__light_ambient( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
57582
{
 
57583
#ifdef GENERATEDSAXPARSER_VALIDATION
 
57584
    if ( mValidate )
 
57585
    {
 
57586
 
 
57587
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__light_ambient( attributes, attributeDataPtr, validationDataPtr );
 
57588
        if ( !validationResult ) return false;
 
57589
 
 
57590
    } // validation
 
57591
#endif
 
57592
 
 
57593
profile_GLES__technique__pass__states__light_ambient__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__light_ambient__AttributeData>(attributeDataPtr);
 
57594
 
 
57595
const ParserChar** attributeArray = attributes.attributes;
 
57596
if ( attributeArray )
 
57597
{
 
57598
    while (true)
 
57599
    {
 
57600
        const ParserChar * attribute = *attributeArray;
 
57601
        if ( !attribute )
 
57602
            break;
 
57603
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
57604
        attributeArray++;
 
57605
        if ( !attributeArray )
 
57606
            return false;
 
57607
        const ParserChar* attributeValue = *attributeArray;
 
57608
        attributeArray++;
 
57609
 
 
57610
 
 
57611
    switch ( hash )
 
57612
    {
 
57613
    case HASH_ATTRIBUTE_VALUE:
 
57614
    {
 
57615
bool failed;
 
57616
#ifdef GENERATEDSAXPARSER_VALIDATION
 
57617
    if ( mValidate )
 
57618
    {
 
57619
failed = !characterData2FloatList(attributeValue, attributeData->value, 0, HASH_ELEMENT_LIGHT_AMBIENT, HASH_ATTRIBUTE_VALUE);
 
57620
    }
 
57621
    else
 
57622
    {
 
57623
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
57624
    }
 
57625
#else
 
57626
    {
 
57627
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
57628
    } // validation
 
57629
#endif
 
57630
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
57631
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
57632
        HASH_ELEMENT_LIGHT_AMBIENT,
 
57633
        HASH_ATTRIBUTE_VALUE,
 
57634
        attributeValue))
 
57635
{
 
57636
    return false;
 
57637
}
 
57638
#ifdef GENERATEDSAXPARSER_VALIDATION
 
57639
    if ( mValidate )
 
57640
    {
 
57641
    ParserError::ErrorType simpleTypeValidationResult = validate__float4_type(attributeData->value.data, attributeData->value.size);
 
57642
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
57643
    {
 
57644
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
57645
            simpleTypeValidationResult,
 
57646
            HASH_ELEMENT_LIGHT_AMBIENT,
 
57647
            HASH_ATTRIBUTE_VALUE,
 
57648
            attributeValue) )
 
57649
        {
 
57650
            return false;
 
57651
        }
 
57652
    }
 
57653
    } // validation
 
57654
#endif
 
57655
 
 
57656
if ( !failed )
 
57657
    attributeData->present_attributes |= profile_GLES__technique__pass__states__light_ambient__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
57658
 
 
57659
    break;
 
57660
    }
 
57661
    case HASH_ATTRIBUTE_PARAM:
 
57662
    {
 
57663
 
 
57664
attributeData->param = attributeValue;
 
57665
#ifdef GENERATEDSAXPARSER_VALIDATION
 
57666
    if ( mValidate )
 
57667
    {
 
57668
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
57669
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
57670
    {
 
57671
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
57672
            simpleTypeValidationResult,
 
57673
            HASH_ELEMENT_LIGHT_AMBIENT,
 
57674
            HASH_ATTRIBUTE_PARAM,
 
57675
            attributeValue) )
 
57676
        {
 
57677
            return false;
 
57678
        }
 
57679
    }
 
57680
    } // validation
 
57681
#endif
 
57682
 
 
57683
    break;
 
57684
    }
 
57685
    case HASH_ATTRIBUTE_INDEX:
 
57686
    {
 
57687
bool failed;
 
57688
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
57689
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
57690
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
57691
        HASH_ELEMENT_LIGHT_AMBIENT,
 
57692
        HASH_ATTRIBUTE_INDEX,
 
57693
        attributeValue))
 
57694
{
 
57695
    return false;
 
57696
}
 
57697
#ifdef GENERATEDSAXPARSER_VALIDATION
 
57698
    if ( mValidate )
 
57699
    {
 
57700
    ParserError::ErrorType simpleTypeValidationResult = validate__gles_max_lights_index_type(attributeData->index);
 
57701
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
57702
    {
 
57703
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
57704
            simpleTypeValidationResult,
 
57705
            HASH_ELEMENT_LIGHT_AMBIENT,
 
57706
            HASH_ATTRIBUTE_INDEX,
 
57707
            attributeValue) )
 
57708
        {
 
57709
            return false;
 
57710
        }
 
57711
    }
 
57712
    } // validation
 
57713
#endif
 
57714
if ( !failed )
 
57715
    attributeData->present_attributes |= profile_GLES__technique__pass__states__light_ambient__AttributeData::ATTRIBUTE_INDEX_PRESENT;
 
57716
 
 
57717
    break;
 
57718
    }
 
57719
    default:
 
57720
    {
 
57721
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIGHT_AMBIENT, attribute, attributeValue))
 
57722
            {return false;}
 
57723
    }
 
57724
    }
 
57725
    }
 
57726
}
 
57727
if ((attributeData->present_attributes & profile_GLES__technique__pass__states__light_ambient__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
57728
{
 
57729
    bool failed;
 
57730
    failed = !characterData2FloatList("0.0E1 0.0E1 0.0E1 1.0E0", attributeData->value);
 
57731
    if ( !failed )
 
57732
    attributeData->present_attributes |= profile_GLES__technique__pass__states__light_ambient__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
57733
}
 
57734
if ( (attributeData->present_attributes & profile_GLES__technique__pass__states__light_ambient__AttributeData::ATTRIBUTE_INDEX_PRESENT) == 0 )
 
57735
{
 
57736
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_LIGHT_AMBIENT, HASH_ATTRIBUTE_INDEX, 0 ) )
 
57737
        return false;
 
57738
}
 
57739
 
 
57740
 
 
57741
    return true;
 
57742
}
 
57743
 
 
57744
//---------------------------------------------------------------------
 
57745
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__light_ambient()
 
57746
{
 
57747
#ifdef GENERATEDSAXPARSER_VALIDATION
 
57748
    if ( mValidate )
 
57749
    {
 
57750
 
 
57751
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__light_ambient();
 
57752
        if ( !validationResult ) return false;
 
57753
 
 
57754
    } // validation
 
57755
#endif
 
57756
 
 
57757
    return true;
 
57758
}
 
57759
 
 
57760
//---------------------------------------------------------------------
 
57761
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__light_ambient( void* attributeData )
 
57762
{
 
57763
    profile_GLES__technique__pass__states__light_ambient__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__light_ambient__AttributeData*>(attributeData);
 
57764
    if (typedAttributeData->value.data)
 
57765
    {
 
57766
        mStackMemoryManager.deleteObject();
 
57767
    }
 
57768
 
 
57769
 
 
57770
    typedAttributeData->~profile_GLES__technique__pass__states__light_ambient__AttributeData();
 
57771
 
 
57772
    return true;
 
57773
}
 
57774
 
 
57775
//---------------------------------------------------------------------
 
57776
const profile_GLES__technique__pass__states__light_diffuse__AttributeData profile_GLES__technique__pass__states__light_diffuse__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<float>(), 0, 0};
 
57777
 
 
57778
//---------------------------------------------------------------------
 
57779
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__light_diffuse( const ParserChar* text, size_t textLength )
 
57780
{
 
57781
    return true;
 
57782
}
 
57783
 
 
57784
//---------------------------------------------------------------------
 
57785
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__light_diffuse( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
57786
{
 
57787
#ifdef GENERATEDSAXPARSER_VALIDATION
 
57788
    if ( mValidate )
 
57789
    {
 
57790
 
 
57791
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__light_diffuse( attributes, attributeDataPtr, validationDataPtr );
 
57792
        if ( !validationResult ) return false;
 
57793
 
 
57794
    } // validation
 
57795
#endif
 
57796
 
 
57797
profile_GLES__technique__pass__states__light_diffuse__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__light_diffuse__AttributeData>(attributeDataPtr);
 
57798
 
 
57799
const ParserChar** attributeArray = attributes.attributes;
 
57800
if ( attributeArray )
 
57801
{
 
57802
    while (true)
 
57803
    {
 
57804
        const ParserChar * attribute = *attributeArray;
 
57805
        if ( !attribute )
 
57806
            break;
 
57807
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
57808
        attributeArray++;
 
57809
        if ( !attributeArray )
 
57810
            return false;
 
57811
        const ParserChar* attributeValue = *attributeArray;
 
57812
        attributeArray++;
 
57813
 
 
57814
 
 
57815
    switch ( hash )
 
57816
    {
 
57817
    case HASH_ATTRIBUTE_VALUE:
 
57818
    {
 
57819
bool failed;
 
57820
#ifdef GENERATEDSAXPARSER_VALIDATION
 
57821
    if ( mValidate )
 
57822
    {
 
57823
failed = !characterData2FloatList(attributeValue, attributeData->value, 0, HASH_ELEMENT_LIGHT_DIFFUSE, HASH_ATTRIBUTE_VALUE);
 
57824
    }
 
57825
    else
 
57826
    {
 
57827
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
57828
    }
 
57829
#else
 
57830
    {
 
57831
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
57832
    } // validation
 
57833
#endif
 
57834
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
57835
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
57836
        HASH_ELEMENT_LIGHT_DIFFUSE,
 
57837
        HASH_ATTRIBUTE_VALUE,
 
57838
        attributeValue))
 
57839
{
 
57840
    return false;
 
57841
}
 
57842
#ifdef GENERATEDSAXPARSER_VALIDATION
 
57843
    if ( mValidate )
 
57844
    {
 
57845
    ParserError::ErrorType simpleTypeValidationResult = validate__float4_type(attributeData->value.data, attributeData->value.size);
 
57846
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
57847
    {
 
57848
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
57849
            simpleTypeValidationResult,
 
57850
            HASH_ELEMENT_LIGHT_DIFFUSE,
 
57851
            HASH_ATTRIBUTE_VALUE,
 
57852
            attributeValue) )
 
57853
        {
 
57854
            return false;
 
57855
        }
 
57856
    }
 
57857
    } // validation
 
57858
#endif
 
57859
 
 
57860
if ( !failed )
 
57861
    attributeData->present_attributes |= profile_GLES__technique__pass__states__light_diffuse__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
57862
 
 
57863
    break;
 
57864
    }
 
57865
    case HASH_ATTRIBUTE_PARAM:
 
57866
    {
 
57867
 
 
57868
attributeData->param = attributeValue;
 
57869
#ifdef GENERATEDSAXPARSER_VALIDATION
 
57870
    if ( mValidate )
 
57871
    {
 
57872
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
57873
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
57874
    {
 
57875
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
57876
            simpleTypeValidationResult,
 
57877
            HASH_ELEMENT_LIGHT_DIFFUSE,
 
57878
            HASH_ATTRIBUTE_PARAM,
 
57879
            attributeValue) )
 
57880
        {
 
57881
            return false;
 
57882
        }
 
57883
    }
 
57884
    } // validation
 
57885
#endif
 
57886
 
 
57887
    break;
 
57888
    }
 
57889
    case HASH_ATTRIBUTE_INDEX:
 
57890
    {
 
57891
bool failed;
 
57892
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
57893
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
57894
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
57895
        HASH_ELEMENT_LIGHT_DIFFUSE,
 
57896
        HASH_ATTRIBUTE_INDEX,
 
57897
        attributeValue))
 
57898
{
 
57899
    return false;
 
57900
}
 
57901
#ifdef GENERATEDSAXPARSER_VALIDATION
 
57902
    if ( mValidate )
 
57903
    {
 
57904
    ParserError::ErrorType simpleTypeValidationResult = validate__gles_max_lights_index_type(attributeData->index);
 
57905
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
57906
    {
 
57907
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
57908
            simpleTypeValidationResult,
 
57909
            HASH_ELEMENT_LIGHT_DIFFUSE,
 
57910
            HASH_ATTRIBUTE_INDEX,
 
57911
            attributeValue) )
 
57912
        {
 
57913
            return false;
 
57914
        }
 
57915
    }
 
57916
    } // validation
 
57917
#endif
 
57918
if ( !failed )
 
57919
    attributeData->present_attributes |= profile_GLES__technique__pass__states__light_diffuse__AttributeData::ATTRIBUTE_INDEX_PRESENT;
 
57920
 
 
57921
    break;
 
57922
    }
 
57923
    default:
 
57924
    {
 
57925
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIGHT_DIFFUSE, attribute, attributeValue))
 
57926
            {return false;}
 
57927
    }
 
57928
    }
 
57929
    }
 
57930
}
 
57931
if ((attributeData->present_attributes & profile_GLES__technique__pass__states__light_diffuse__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
57932
{
 
57933
    bool failed;
 
57934
    failed = !characterData2FloatList("0.0E1 0.0E1 0.0E1 0.0E1", attributeData->value);
 
57935
    if ( !failed )
 
57936
    attributeData->present_attributes |= profile_GLES__technique__pass__states__light_diffuse__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
57937
}
 
57938
if ( (attributeData->present_attributes & profile_GLES__technique__pass__states__light_diffuse__AttributeData::ATTRIBUTE_INDEX_PRESENT) == 0 )
 
57939
{
 
57940
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_LIGHT_DIFFUSE, HASH_ATTRIBUTE_INDEX, 0 ) )
 
57941
        return false;
 
57942
}
 
57943
 
 
57944
 
 
57945
    return true;
 
57946
}
 
57947
 
 
57948
//---------------------------------------------------------------------
 
57949
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__light_diffuse()
 
57950
{
 
57951
#ifdef GENERATEDSAXPARSER_VALIDATION
 
57952
    if ( mValidate )
 
57953
    {
 
57954
 
 
57955
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__light_diffuse();
 
57956
        if ( !validationResult ) return false;
 
57957
 
 
57958
    } // validation
 
57959
#endif
 
57960
 
 
57961
    return true;
 
57962
}
 
57963
 
 
57964
//---------------------------------------------------------------------
 
57965
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__light_diffuse( void* attributeData )
 
57966
{
 
57967
    profile_GLES__technique__pass__states__light_diffuse__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__light_diffuse__AttributeData*>(attributeData);
 
57968
    if (typedAttributeData->value.data)
 
57969
    {
 
57970
        mStackMemoryManager.deleteObject();
 
57971
    }
 
57972
 
 
57973
 
 
57974
    typedAttributeData->~profile_GLES__technique__pass__states__light_diffuse__AttributeData();
 
57975
 
 
57976
    return true;
 
57977
}
 
57978
 
 
57979
//---------------------------------------------------------------------
 
57980
const profile_GLES__technique__pass__states__light_specular__AttributeData profile_GLES__technique__pass__states__light_specular__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<float>(), 0, 0};
 
57981
 
 
57982
//---------------------------------------------------------------------
 
57983
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__light_specular( const ParserChar* text, size_t textLength )
 
57984
{
 
57985
    return true;
 
57986
}
 
57987
 
 
57988
//---------------------------------------------------------------------
 
57989
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__light_specular( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
57990
{
 
57991
#ifdef GENERATEDSAXPARSER_VALIDATION
 
57992
    if ( mValidate )
 
57993
    {
 
57994
 
 
57995
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__light_specular( attributes, attributeDataPtr, validationDataPtr );
 
57996
        if ( !validationResult ) return false;
 
57997
 
 
57998
    } // validation
 
57999
#endif
 
58000
 
 
58001
profile_GLES__technique__pass__states__light_specular__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__light_specular__AttributeData>(attributeDataPtr);
 
58002
 
 
58003
const ParserChar** attributeArray = attributes.attributes;
 
58004
if ( attributeArray )
 
58005
{
 
58006
    while (true)
 
58007
    {
 
58008
        const ParserChar * attribute = *attributeArray;
 
58009
        if ( !attribute )
 
58010
            break;
 
58011
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
58012
        attributeArray++;
 
58013
        if ( !attributeArray )
 
58014
            return false;
 
58015
        const ParserChar* attributeValue = *attributeArray;
 
58016
        attributeArray++;
 
58017
 
 
58018
 
 
58019
    switch ( hash )
 
58020
    {
 
58021
    case HASH_ATTRIBUTE_VALUE:
 
58022
    {
 
58023
bool failed;
 
58024
#ifdef GENERATEDSAXPARSER_VALIDATION
 
58025
    if ( mValidate )
 
58026
    {
 
58027
failed = !characterData2FloatList(attributeValue, attributeData->value, 0, HASH_ELEMENT_LIGHT_SPECULAR, HASH_ATTRIBUTE_VALUE);
 
58028
    }
 
58029
    else
 
58030
    {
 
58031
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
58032
    }
 
58033
#else
 
58034
    {
 
58035
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
58036
    } // validation
 
58037
#endif
 
58038
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
58039
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
58040
        HASH_ELEMENT_LIGHT_SPECULAR,
 
58041
        HASH_ATTRIBUTE_VALUE,
 
58042
        attributeValue))
 
58043
{
 
58044
    return false;
 
58045
}
 
58046
#ifdef GENERATEDSAXPARSER_VALIDATION
 
58047
    if ( mValidate )
 
58048
    {
 
58049
    ParserError::ErrorType simpleTypeValidationResult = validate__float4_type(attributeData->value.data, attributeData->value.size);
 
58050
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
58051
    {
 
58052
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
58053
            simpleTypeValidationResult,
 
58054
            HASH_ELEMENT_LIGHT_SPECULAR,
 
58055
            HASH_ATTRIBUTE_VALUE,
 
58056
            attributeValue) )
 
58057
        {
 
58058
            return false;
 
58059
        }
 
58060
    }
 
58061
    } // validation
 
58062
#endif
 
58063
 
 
58064
if ( !failed )
 
58065
    attributeData->present_attributes |= profile_GLES__technique__pass__states__light_specular__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
58066
 
 
58067
    break;
 
58068
    }
 
58069
    case HASH_ATTRIBUTE_PARAM:
 
58070
    {
 
58071
 
 
58072
attributeData->param = attributeValue;
 
58073
#ifdef GENERATEDSAXPARSER_VALIDATION
 
58074
    if ( mValidate )
 
58075
    {
 
58076
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
58077
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
58078
    {
 
58079
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
58080
            simpleTypeValidationResult,
 
58081
            HASH_ELEMENT_LIGHT_SPECULAR,
 
58082
            HASH_ATTRIBUTE_PARAM,
 
58083
            attributeValue) )
 
58084
        {
 
58085
            return false;
 
58086
        }
 
58087
    }
 
58088
    } // validation
 
58089
#endif
 
58090
 
 
58091
    break;
 
58092
    }
 
58093
    case HASH_ATTRIBUTE_INDEX:
 
58094
    {
 
58095
bool failed;
 
58096
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
58097
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
58098
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
58099
        HASH_ELEMENT_LIGHT_SPECULAR,
 
58100
        HASH_ATTRIBUTE_INDEX,
 
58101
        attributeValue))
 
58102
{
 
58103
    return false;
 
58104
}
 
58105
#ifdef GENERATEDSAXPARSER_VALIDATION
 
58106
    if ( mValidate )
 
58107
    {
 
58108
    ParserError::ErrorType simpleTypeValidationResult = validate__gles_max_lights_index_type(attributeData->index);
 
58109
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
58110
    {
 
58111
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
58112
            simpleTypeValidationResult,
 
58113
            HASH_ELEMENT_LIGHT_SPECULAR,
 
58114
            HASH_ATTRIBUTE_INDEX,
 
58115
            attributeValue) )
 
58116
        {
 
58117
            return false;
 
58118
        }
 
58119
    }
 
58120
    } // validation
 
58121
#endif
 
58122
if ( !failed )
 
58123
    attributeData->present_attributes |= profile_GLES__technique__pass__states__light_specular__AttributeData::ATTRIBUTE_INDEX_PRESENT;
 
58124
 
 
58125
    break;
 
58126
    }
 
58127
    default:
 
58128
    {
 
58129
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIGHT_SPECULAR, attribute, attributeValue))
 
58130
            {return false;}
 
58131
    }
 
58132
    }
 
58133
    }
 
58134
}
 
58135
if ((attributeData->present_attributes & profile_GLES__technique__pass__states__light_specular__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
58136
{
 
58137
    bool failed;
 
58138
    failed = !characterData2FloatList("0.0E1 0.0E1 0.0E1 0.0E1", attributeData->value);
 
58139
    if ( !failed )
 
58140
    attributeData->present_attributes |= profile_GLES__technique__pass__states__light_specular__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
58141
}
 
58142
if ( (attributeData->present_attributes & profile_GLES__technique__pass__states__light_specular__AttributeData::ATTRIBUTE_INDEX_PRESENT) == 0 )
 
58143
{
 
58144
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_LIGHT_SPECULAR, HASH_ATTRIBUTE_INDEX, 0 ) )
 
58145
        return false;
 
58146
}
 
58147
 
 
58148
 
 
58149
    return true;
 
58150
}
 
58151
 
 
58152
//---------------------------------------------------------------------
 
58153
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__light_specular()
 
58154
{
 
58155
#ifdef GENERATEDSAXPARSER_VALIDATION
 
58156
    if ( mValidate )
 
58157
    {
 
58158
 
 
58159
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__light_specular();
 
58160
        if ( !validationResult ) return false;
 
58161
 
 
58162
    } // validation
 
58163
#endif
 
58164
 
 
58165
    return true;
 
58166
}
 
58167
 
 
58168
//---------------------------------------------------------------------
 
58169
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__light_specular( void* attributeData )
 
58170
{
 
58171
    profile_GLES__technique__pass__states__light_specular__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__light_specular__AttributeData*>(attributeData);
 
58172
    if (typedAttributeData->value.data)
 
58173
    {
 
58174
        mStackMemoryManager.deleteObject();
 
58175
    }
 
58176
 
 
58177
 
 
58178
    typedAttributeData->~profile_GLES__technique__pass__states__light_specular__AttributeData();
 
58179
 
 
58180
    return true;
 
58181
}
 
58182
 
 
58183
//---------------------------------------------------------------------
 
58184
const profile_GLES__technique__pass__states__light_position__AttributeData profile_GLES__technique__pass__states__light_position__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<float>(), 0, 0};
 
58185
 
 
58186
//---------------------------------------------------------------------
 
58187
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__light_position( const ParserChar* text, size_t textLength )
 
58188
{
 
58189
    return true;
 
58190
}
 
58191
 
 
58192
//---------------------------------------------------------------------
 
58193
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__light_position( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
58194
{
 
58195
#ifdef GENERATEDSAXPARSER_VALIDATION
 
58196
    if ( mValidate )
 
58197
    {
 
58198
 
 
58199
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__light_position( attributes, attributeDataPtr, validationDataPtr );
 
58200
        if ( !validationResult ) return false;
 
58201
 
 
58202
    } // validation
 
58203
#endif
 
58204
 
 
58205
profile_GLES__technique__pass__states__light_position__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__light_position__AttributeData>(attributeDataPtr);
 
58206
 
 
58207
const ParserChar** attributeArray = attributes.attributes;
 
58208
if ( attributeArray )
 
58209
{
 
58210
    while (true)
 
58211
    {
 
58212
        const ParserChar * attribute = *attributeArray;
 
58213
        if ( !attribute )
 
58214
            break;
 
58215
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
58216
        attributeArray++;
 
58217
        if ( !attributeArray )
 
58218
            return false;
 
58219
        const ParserChar* attributeValue = *attributeArray;
 
58220
        attributeArray++;
 
58221
 
 
58222
 
 
58223
    switch ( hash )
 
58224
    {
 
58225
    case HASH_ATTRIBUTE_VALUE:
 
58226
    {
 
58227
bool failed;
 
58228
#ifdef GENERATEDSAXPARSER_VALIDATION
 
58229
    if ( mValidate )
 
58230
    {
 
58231
failed = !characterData2FloatList(attributeValue, attributeData->value, 0, HASH_ELEMENT_LIGHT_POSITION, HASH_ATTRIBUTE_VALUE);
 
58232
    }
 
58233
    else
 
58234
    {
 
58235
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
58236
    }
 
58237
#else
 
58238
    {
 
58239
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
58240
    } // validation
 
58241
#endif
 
58242
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
58243
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
58244
        HASH_ELEMENT_LIGHT_POSITION,
 
58245
        HASH_ATTRIBUTE_VALUE,
 
58246
        attributeValue))
 
58247
{
 
58248
    return false;
 
58249
}
 
58250
#ifdef GENERATEDSAXPARSER_VALIDATION
 
58251
    if ( mValidate )
 
58252
    {
 
58253
    ParserError::ErrorType simpleTypeValidationResult = validate__float4_type(attributeData->value.data, attributeData->value.size);
 
58254
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
58255
    {
 
58256
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
58257
            simpleTypeValidationResult,
 
58258
            HASH_ELEMENT_LIGHT_POSITION,
 
58259
            HASH_ATTRIBUTE_VALUE,
 
58260
            attributeValue) )
 
58261
        {
 
58262
            return false;
 
58263
        }
 
58264
    }
 
58265
    } // validation
 
58266
#endif
 
58267
 
 
58268
if ( !failed )
 
58269
    attributeData->present_attributes |= profile_GLES__technique__pass__states__light_position__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
58270
 
 
58271
    break;
 
58272
    }
 
58273
    case HASH_ATTRIBUTE_PARAM:
 
58274
    {
 
58275
 
 
58276
attributeData->param = attributeValue;
 
58277
#ifdef GENERATEDSAXPARSER_VALIDATION
 
58278
    if ( mValidate )
 
58279
    {
 
58280
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
58281
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
58282
    {
 
58283
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
58284
            simpleTypeValidationResult,
 
58285
            HASH_ELEMENT_LIGHT_POSITION,
 
58286
            HASH_ATTRIBUTE_PARAM,
 
58287
            attributeValue) )
 
58288
        {
 
58289
            return false;
 
58290
        }
 
58291
    }
 
58292
    } // validation
 
58293
#endif
 
58294
 
 
58295
    break;
 
58296
    }
 
58297
    case HASH_ATTRIBUTE_INDEX:
 
58298
    {
 
58299
bool failed;
 
58300
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
58301
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
58302
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
58303
        HASH_ELEMENT_LIGHT_POSITION,
 
58304
        HASH_ATTRIBUTE_INDEX,
 
58305
        attributeValue))
 
58306
{
 
58307
    return false;
 
58308
}
 
58309
#ifdef GENERATEDSAXPARSER_VALIDATION
 
58310
    if ( mValidate )
 
58311
    {
 
58312
    ParserError::ErrorType simpleTypeValidationResult = validate__gles_max_lights_index_type(attributeData->index);
 
58313
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
58314
    {
 
58315
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
58316
            simpleTypeValidationResult,
 
58317
            HASH_ELEMENT_LIGHT_POSITION,
 
58318
            HASH_ATTRIBUTE_INDEX,
 
58319
            attributeValue) )
 
58320
        {
 
58321
            return false;
 
58322
        }
 
58323
    }
 
58324
    } // validation
 
58325
#endif
 
58326
if ( !failed )
 
58327
    attributeData->present_attributes |= profile_GLES__technique__pass__states__light_position__AttributeData::ATTRIBUTE_INDEX_PRESENT;
 
58328
 
 
58329
    break;
 
58330
    }
 
58331
    default:
 
58332
    {
 
58333
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIGHT_POSITION, attribute, attributeValue))
 
58334
            {return false;}
 
58335
    }
 
58336
    }
 
58337
    }
 
58338
}
 
58339
if ((attributeData->present_attributes & profile_GLES__technique__pass__states__light_position__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
58340
{
 
58341
    bool failed;
 
58342
    failed = !characterData2FloatList("0.0E1 0.0E1 1.0E0 0.0E1", attributeData->value);
 
58343
    if ( !failed )
 
58344
    attributeData->present_attributes |= profile_GLES__technique__pass__states__light_position__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
58345
}
 
58346
if ( (attributeData->present_attributes & profile_GLES__technique__pass__states__light_position__AttributeData::ATTRIBUTE_INDEX_PRESENT) == 0 )
 
58347
{
 
58348
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_LIGHT_POSITION, HASH_ATTRIBUTE_INDEX, 0 ) )
 
58349
        return false;
 
58350
}
 
58351
 
 
58352
 
 
58353
    return true;
 
58354
}
 
58355
 
 
58356
//---------------------------------------------------------------------
 
58357
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__light_position()
 
58358
{
 
58359
#ifdef GENERATEDSAXPARSER_VALIDATION
 
58360
    if ( mValidate )
 
58361
    {
 
58362
 
 
58363
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__light_position();
 
58364
        if ( !validationResult ) return false;
 
58365
 
 
58366
    } // validation
 
58367
#endif
 
58368
 
 
58369
    return true;
 
58370
}
 
58371
 
 
58372
//---------------------------------------------------------------------
 
58373
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__light_position( void* attributeData )
 
58374
{
 
58375
    profile_GLES__technique__pass__states__light_position__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__light_position__AttributeData*>(attributeData);
 
58376
    if (typedAttributeData->value.data)
 
58377
    {
 
58378
        mStackMemoryManager.deleteObject();
 
58379
    }
 
58380
 
 
58381
 
 
58382
    typedAttributeData->~profile_GLES__technique__pass__states__light_position__AttributeData();
 
58383
 
 
58384
    return true;
 
58385
}
 
58386
 
 
58387
//---------------------------------------------------------------------
 
58388
const profile_GLES__technique__pass__states__light_constant_attenuation__AttributeData profile_GLES__technique__pass__states__light_constant_attenuation__AttributeData::DEFAULT = {0, 1.0E0, 0, 0};
 
58389
 
 
58390
//---------------------------------------------------------------------
 
58391
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__light_constant_attenuation( const ParserChar* text, size_t textLength )
 
58392
{
 
58393
    return true;
 
58394
}
 
58395
 
 
58396
//---------------------------------------------------------------------
 
58397
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__light_constant_attenuation( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
58398
{
 
58399
#ifdef GENERATEDSAXPARSER_VALIDATION
 
58400
    if ( mValidate )
 
58401
    {
 
58402
 
 
58403
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__light_constant_attenuation( attributes, attributeDataPtr, validationDataPtr );
 
58404
        if ( !validationResult ) return false;
 
58405
 
 
58406
    } // validation
 
58407
#endif
 
58408
 
 
58409
profile_GLES__technique__pass__states__light_constant_attenuation__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__light_constant_attenuation__AttributeData>(attributeDataPtr);
 
58410
 
 
58411
const ParserChar** attributeArray = attributes.attributes;
 
58412
if ( attributeArray )
 
58413
{
 
58414
    while (true)
 
58415
    {
 
58416
        const ParserChar * attribute = *attributeArray;
 
58417
        if ( !attribute )
 
58418
            break;
 
58419
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
58420
        attributeArray++;
 
58421
        if ( !attributeArray )
 
58422
            return false;
 
58423
        const ParserChar* attributeValue = *attributeArray;
 
58424
        attributeArray++;
 
58425
 
 
58426
 
 
58427
    switch ( hash )
 
58428
    {
 
58429
    case HASH_ATTRIBUTE_VALUE:
 
58430
    {
 
58431
bool failed;
 
58432
attributeData->value = GeneratedSaxParser::Utils::toFloat(attributeValue, failed);
 
58433
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
58434
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
58435
        HASH_ELEMENT_LIGHT_CONSTANT_ATTENUATION,
 
58436
        HASH_ATTRIBUTE_VALUE,
 
58437
        attributeValue))
 
58438
{
 
58439
    return false;
 
58440
}
 
58441
 
 
58442
    break;
 
58443
    }
 
58444
    case HASH_ATTRIBUTE_PARAM:
 
58445
    {
 
58446
 
 
58447
attributeData->param = attributeValue;
 
58448
#ifdef GENERATEDSAXPARSER_VALIDATION
 
58449
    if ( mValidate )
 
58450
    {
 
58451
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
58452
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
58453
    {
 
58454
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
58455
            simpleTypeValidationResult,
 
58456
            HASH_ELEMENT_LIGHT_CONSTANT_ATTENUATION,
 
58457
            HASH_ATTRIBUTE_PARAM,
 
58458
            attributeValue) )
 
58459
        {
 
58460
            return false;
 
58461
        }
 
58462
    }
 
58463
    } // validation
 
58464
#endif
 
58465
 
 
58466
    break;
 
58467
    }
 
58468
    case HASH_ATTRIBUTE_INDEX:
 
58469
    {
 
58470
bool failed;
 
58471
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
58472
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
58473
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
58474
        HASH_ELEMENT_LIGHT_CONSTANT_ATTENUATION,
 
58475
        HASH_ATTRIBUTE_INDEX,
 
58476
        attributeValue))
 
58477
{
 
58478
    return false;
 
58479
}
 
58480
#ifdef GENERATEDSAXPARSER_VALIDATION
 
58481
    if ( mValidate )
 
58482
    {
 
58483
    ParserError::ErrorType simpleTypeValidationResult = validate__gles_max_lights_index_type(attributeData->index);
 
58484
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
58485
    {
 
58486
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
58487
            simpleTypeValidationResult,
 
58488
            HASH_ELEMENT_LIGHT_CONSTANT_ATTENUATION,
 
58489
            HASH_ATTRIBUTE_INDEX,
 
58490
            attributeValue) )
 
58491
        {
 
58492
            return false;
 
58493
        }
 
58494
    }
 
58495
    } // validation
 
58496
#endif
 
58497
if ( !failed )
 
58498
    attributeData->present_attributes |= profile_GLES__technique__pass__states__light_constant_attenuation__AttributeData::ATTRIBUTE_INDEX_PRESENT;
 
58499
 
 
58500
    break;
 
58501
    }
 
58502
    default:
 
58503
    {
 
58504
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIGHT_CONSTANT_ATTENUATION, attribute, attributeValue))
 
58505
            {return false;}
 
58506
    }
 
58507
    }
 
58508
    }
 
58509
}
 
58510
if ( (attributeData->present_attributes & profile_GLES__technique__pass__states__light_constant_attenuation__AttributeData::ATTRIBUTE_INDEX_PRESENT) == 0 )
 
58511
{
 
58512
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_LIGHT_CONSTANT_ATTENUATION, HASH_ATTRIBUTE_INDEX, 0 ) )
 
58513
        return false;
 
58514
}
 
58515
 
 
58516
 
 
58517
    return true;
 
58518
}
 
58519
 
 
58520
//---------------------------------------------------------------------
 
58521
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__light_constant_attenuation()
 
58522
{
 
58523
#ifdef GENERATEDSAXPARSER_VALIDATION
 
58524
    if ( mValidate )
 
58525
    {
 
58526
 
 
58527
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__light_constant_attenuation();
 
58528
        if ( !validationResult ) return false;
 
58529
 
 
58530
    } // validation
 
58531
#endif
 
58532
 
 
58533
    return true;
 
58534
}
 
58535
 
 
58536
//---------------------------------------------------------------------
 
58537
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__light_constant_attenuation( void* attributeData )
 
58538
{
 
58539
    profile_GLES__technique__pass__states__light_constant_attenuation__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__light_constant_attenuation__AttributeData*>(attributeData);
 
58540
 
 
58541
    typedAttributeData->~profile_GLES__technique__pass__states__light_constant_attenuation__AttributeData();
 
58542
 
 
58543
    return true;
 
58544
}
 
58545
 
 
58546
//---------------------------------------------------------------------
 
58547
const profile_GLES__technique__pass__states__light_linear_attenuation__AttributeData profile_GLES__technique__pass__states__light_linear_attenuation__AttributeData::DEFAULT = {0, 1.0E0, 0, 0};
 
58548
 
 
58549
//---------------------------------------------------------------------
 
58550
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__light_linear_attenuation( const ParserChar* text, size_t textLength )
 
58551
{
 
58552
    return true;
 
58553
}
 
58554
 
 
58555
//---------------------------------------------------------------------
 
58556
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__light_linear_attenuation( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
58557
{
 
58558
#ifdef GENERATEDSAXPARSER_VALIDATION
 
58559
    if ( mValidate )
 
58560
    {
 
58561
 
 
58562
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__light_linear_attenuation( attributes, attributeDataPtr, validationDataPtr );
 
58563
        if ( !validationResult ) return false;
 
58564
 
 
58565
    } // validation
 
58566
#endif
 
58567
 
 
58568
profile_GLES__technique__pass__states__light_linear_attenuation__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__light_linear_attenuation__AttributeData>(attributeDataPtr);
 
58569
 
 
58570
const ParserChar** attributeArray = attributes.attributes;
 
58571
if ( attributeArray )
 
58572
{
 
58573
    while (true)
 
58574
    {
 
58575
        const ParserChar * attribute = *attributeArray;
 
58576
        if ( !attribute )
 
58577
            break;
 
58578
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
58579
        attributeArray++;
 
58580
        if ( !attributeArray )
 
58581
            return false;
 
58582
        const ParserChar* attributeValue = *attributeArray;
 
58583
        attributeArray++;
 
58584
 
 
58585
 
 
58586
    switch ( hash )
 
58587
    {
 
58588
    case HASH_ATTRIBUTE_VALUE:
 
58589
    {
 
58590
bool failed;
 
58591
attributeData->value = GeneratedSaxParser::Utils::toFloat(attributeValue, failed);
 
58592
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
58593
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
58594
        HASH_ELEMENT_LIGHT_LINEAR_ATTENUATION,
 
58595
        HASH_ATTRIBUTE_VALUE,
 
58596
        attributeValue))
 
58597
{
 
58598
    return false;
 
58599
}
 
58600
 
 
58601
    break;
 
58602
    }
 
58603
    case HASH_ATTRIBUTE_PARAM:
 
58604
    {
 
58605
 
 
58606
attributeData->param = attributeValue;
 
58607
#ifdef GENERATEDSAXPARSER_VALIDATION
 
58608
    if ( mValidate )
 
58609
    {
 
58610
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
58611
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
58612
    {
 
58613
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
58614
            simpleTypeValidationResult,
 
58615
            HASH_ELEMENT_LIGHT_LINEAR_ATTENUATION,
 
58616
            HASH_ATTRIBUTE_PARAM,
 
58617
            attributeValue) )
 
58618
        {
 
58619
            return false;
 
58620
        }
 
58621
    }
 
58622
    } // validation
 
58623
#endif
 
58624
 
 
58625
    break;
 
58626
    }
 
58627
    case HASH_ATTRIBUTE_INDEX:
 
58628
    {
 
58629
bool failed;
 
58630
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
58631
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
58632
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
58633
        HASH_ELEMENT_LIGHT_LINEAR_ATTENUATION,
 
58634
        HASH_ATTRIBUTE_INDEX,
 
58635
        attributeValue))
 
58636
{
 
58637
    return false;
 
58638
}
 
58639
#ifdef GENERATEDSAXPARSER_VALIDATION
 
58640
    if ( mValidate )
 
58641
    {
 
58642
    ParserError::ErrorType simpleTypeValidationResult = validate__gles_max_lights_index_type(attributeData->index);
 
58643
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
58644
    {
 
58645
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
58646
            simpleTypeValidationResult,
 
58647
            HASH_ELEMENT_LIGHT_LINEAR_ATTENUATION,
 
58648
            HASH_ATTRIBUTE_INDEX,
 
58649
            attributeValue) )
 
58650
        {
 
58651
            return false;
 
58652
        }
 
58653
    }
 
58654
    } // validation
 
58655
#endif
 
58656
if ( !failed )
 
58657
    attributeData->present_attributes |= profile_GLES__technique__pass__states__light_linear_attenuation__AttributeData::ATTRIBUTE_INDEX_PRESENT;
 
58658
 
 
58659
    break;
 
58660
    }
 
58661
    default:
 
58662
    {
 
58663
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIGHT_LINEAR_ATTENUATION, attribute, attributeValue))
 
58664
            {return false;}
 
58665
    }
 
58666
    }
 
58667
    }
 
58668
}
 
58669
if ( (attributeData->present_attributes & profile_GLES__technique__pass__states__light_linear_attenuation__AttributeData::ATTRIBUTE_INDEX_PRESENT) == 0 )
 
58670
{
 
58671
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_LIGHT_LINEAR_ATTENUATION, HASH_ATTRIBUTE_INDEX, 0 ) )
 
58672
        return false;
 
58673
}
 
58674
 
 
58675
 
 
58676
    return true;
 
58677
}
 
58678
 
 
58679
//---------------------------------------------------------------------
 
58680
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__light_linear_attenuation()
 
58681
{
 
58682
#ifdef GENERATEDSAXPARSER_VALIDATION
 
58683
    if ( mValidate )
 
58684
    {
 
58685
 
 
58686
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__light_linear_attenuation();
 
58687
        if ( !validationResult ) return false;
 
58688
 
 
58689
    } // validation
 
58690
#endif
 
58691
 
 
58692
    return true;
 
58693
}
 
58694
 
 
58695
//---------------------------------------------------------------------
 
58696
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__light_linear_attenuation( void* attributeData )
 
58697
{
 
58698
    profile_GLES__technique__pass__states__light_linear_attenuation__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__light_linear_attenuation__AttributeData*>(attributeData);
 
58699
 
 
58700
    typedAttributeData->~profile_GLES__technique__pass__states__light_linear_attenuation__AttributeData();
 
58701
 
 
58702
    return true;
 
58703
}
 
58704
 
 
58705
//---------------------------------------------------------------------
 
58706
const profile_GLES__technique__pass__states__light_quadratic_attenuation__AttributeData profile_GLES__technique__pass__states__light_quadratic_attenuation__AttributeData::DEFAULT = {0, 1.0E0, 0, 0};
 
58707
 
 
58708
//---------------------------------------------------------------------
 
58709
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__light_quadratic_attenuation( const ParserChar* text, size_t textLength )
 
58710
{
 
58711
    return true;
 
58712
}
 
58713
 
 
58714
//---------------------------------------------------------------------
 
58715
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__light_quadratic_attenuation( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
58716
{
 
58717
#ifdef GENERATEDSAXPARSER_VALIDATION
 
58718
    if ( mValidate )
 
58719
    {
 
58720
 
 
58721
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__light_quadratic_attenuation( attributes, attributeDataPtr, validationDataPtr );
 
58722
        if ( !validationResult ) return false;
 
58723
 
 
58724
    } // validation
 
58725
#endif
 
58726
 
 
58727
profile_GLES__technique__pass__states__light_quadratic_attenuation__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__light_quadratic_attenuation__AttributeData>(attributeDataPtr);
 
58728
 
 
58729
const ParserChar** attributeArray = attributes.attributes;
 
58730
if ( attributeArray )
 
58731
{
 
58732
    while (true)
 
58733
    {
 
58734
        const ParserChar * attribute = *attributeArray;
 
58735
        if ( !attribute )
 
58736
            break;
 
58737
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
58738
        attributeArray++;
 
58739
        if ( !attributeArray )
 
58740
            return false;
 
58741
        const ParserChar* attributeValue = *attributeArray;
 
58742
        attributeArray++;
 
58743
 
 
58744
 
 
58745
    switch ( hash )
 
58746
    {
 
58747
    case HASH_ATTRIBUTE_VALUE:
 
58748
    {
 
58749
bool failed;
 
58750
attributeData->value = GeneratedSaxParser::Utils::toFloat(attributeValue, failed);
 
58751
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
58752
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
58753
        HASH_ELEMENT_LIGHT_QUADRATIC_ATTENUATION,
 
58754
        HASH_ATTRIBUTE_VALUE,
 
58755
        attributeValue))
 
58756
{
 
58757
    return false;
 
58758
}
 
58759
 
 
58760
    break;
 
58761
    }
 
58762
    case HASH_ATTRIBUTE_PARAM:
 
58763
    {
 
58764
 
 
58765
attributeData->param = attributeValue;
 
58766
#ifdef GENERATEDSAXPARSER_VALIDATION
 
58767
    if ( mValidate )
 
58768
    {
 
58769
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
58770
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
58771
    {
 
58772
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
58773
            simpleTypeValidationResult,
 
58774
            HASH_ELEMENT_LIGHT_QUADRATIC_ATTENUATION,
 
58775
            HASH_ATTRIBUTE_PARAM,
 
58776
            attributeValue) )
 
58777
        {
 
58778
            return false;
 
58779
        }
 
58780
    }
 
58781
    } // validation
 
58782
#endif
 
58783
 
 
58784
    break;
 
58785
    }
 
58786
    case HASH_ATTRIBUTE_INDEX:
 
58787
    {
 
58788
bool failed;
 
58789
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
58790
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
58791
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
58792
        HASH_ELEMENT_LIGHT_QUADRATIC_ATTENUATION,
 
58793
        HASH_ATTRIBUTE_INDEX,
 
58794
        attributeValue))
 
58795
{
 
58796
    return false;
 
58797
}
 
58798
#ifdef GENERATEDSAXPARSER_VALIDATION
 
58799
    if ( mValidate )
 
58800
    {
 
58801
    ParserError::ErrorType simpleTypeValidationResult = validate__gles_max_lights_index_type(attributeData->index);
 
58802
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
58803
    {
 
58804
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
58805
            simpleTypeValidationResult,
 
58806
            HASH_ELEMENT_LIGHT_QUADRATIC_ATTENUATION,
 
58807
            HASH_ATTRIBUTE_INDEX,
 
58808
            attributeValue) )
 
58809
        {
 
58810
            return false;
 
58811
        }
 
58812
    }
 
58813
    } // validation
 
58814
#endif
 
58815
if ( !failed )
 
58816
    attributeData->present_attributes |= profile_GLES__technique__pass__states__light_quadratic_attenuation__AttributeData::ATTRIBUTE_INDEX_PRESENT;
 
58817
 
 
58818
    break;
 
58819
    }
 
58820
    default:
 
58821
    {
 
58822
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIGHT_QUADRATIC_ATTENUATION, attribute, attributeValue))
 
58823
            {return false;}
 
58824
    }
 
58825
    }
 
58826
    }
 
58827
}
 
58828
if ( (attributeData->present_attributes & profile_GLES__technique__pass__states__light_quadratic_attenuation__AttributeData::ATTRIBUTE_INDEX_PRESENT) == 0 )
 
58829
{
 
58830
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_LIGHT_QUADRATIC_ATTENUATION, HASH_ATTRIBUTE_INDEX, 0 ) )
 
58831
        return false;
 
58832
}
 
58833
 
 
58834
 
 
58835
    return true;
 
58836
}
 
58837
 
 
58838
//---------------------------------------------------------------------
 
58839
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__light_quadratic_attenuation()
 
58840
{
 
58841
#ifdef GENERATEDSAXPARSER_VALIDATION
 
58842
    if ( mValidate )
 
58843
    {
 
58844
 
 
58845
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__light_quadratic_attenuation();
 
58846
        if ( !validationResult ) return false;
 
58847
 
 
58848
    } // validation
 
58849
#endif
 
58850
 
 
58851
    return true;
 
58852
}
 
58853
 
 
58854
//---------------------------------------------------------------------
 
58855
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__light_quadratic_attenuation( void* attributeData )
 
58856
{
 
58857
    profile_GLES__technique__pass__states__light_quadratic_attenuation__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__light_quadratic_attenuation__AttributeData*>(attributeData);
 
58858
 
 
58859
    typedAttributeData->~profile_GLES__technique__pass__states__light_quadratic_attenuation__AttributeData();
 
58860
 
 
58861
    return true;
 
58862
}
 
58863
 
 
58864
//---------------------------------------------------------------------
 
58865
const profile_GLES__technique__pass__states__light_spot_cutoff__AttributeData profile_GLES__technique__pass__states__light_spot_cutoff__AttributeData::DEFAULT = {0, 1.8E2, 0, 0};
 
58866
 
 
58867
//---------------------------------------------------------------------
 
58868
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__light_spot_cutoff( const ParserChar* text, size_t textLength )
 
58869
{
 
58870
    return true;
 
58871
}
 
58872
 
 
58873
//---------------------------------------------------------------------
 
58874
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__light_spot_cutoff( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
58875
{
 
58876
#ifdef GENERATEDSAXPARSER_VALIDATION
 
58877
    if ( mValidate )
 
58878
    {
 
58879
 
 
58880
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__light_spot_cutoff( attributes, attributeDataPtr, validationDataPtr );
 
58881
        if ( !validationResult ) return false;
 
58882
 
 
58883
    } // validation
 
58884
#endif
 
58885
 
 
58886
profile_GLES__technique__pass__states__light_spot_cutoff__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__light_spot_cutoff__AttributeData>(attributeDataPtr);
 
58887
 
 
58888
const ParserChar** attributeArray = attributes.attributes;
 
58889
if ( attributeArray )
 
58890
{
 
58891
    while (true)
 
58892
    {
 
58893
        const ParserChar * attribute = *attributeArray;
 
58894
        if ( !attribute )
 
58895
            break;
 
58896
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
58897
        attributeArray++;
 
58898
        if ( !attributeArray )
 
58899
            return false;
 
58900
        const ParserChar* attributeValue = *attributeArray;
 
58901
        attributeArray++;
 
58902
 
 
58903
 
 
58904
    switch ( hash )
 
58905
    {
 
58906
    case HASH_ATTRIBUTE_VALUE:
 
58907
    {
 
58908
bool failed;
 
58909
attributeData->value = GeneratedSaxParser::Utils::toFloat(attributeValue, failed);
 
58910
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
58911
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
58912
        HASH_ELEMENT_LIGHT_SPOT_CUTOFF,
 
58913
        HASH_ATTRIBUTE_VALUE,
 
58914
        attributeValue))
 
58915
{
 
58916
    return false;
 
58917
}
 
58918
 
 
58919
    break;
 
58920
    }
 
58921
    case HASH_ATTRIBUTE_PARAM:
 
58922
    {
 
58923
 
 
58924
attributeData->param = attributeValue;
 
58925
#ifdef GENERATEDSAXPARSER_VALIDATION
 
58926
    if ( mValidate )
 
58927
    {
 
58928
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
58929
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
58930
    {
 
58931
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
58932
            simpleTypeValidationResult,
 
58933
            HASH_ELEMENT_LIGHT_SPOT_CUTOFF,
 
58934
            HASH_ATTRIBUTE_PARAM,
 
58935
            attributeValue) )
 
58936
        {
 
58937
            return false;
 
58938
        }
 
58939
    }
 
58940
    } // validation
 
58941
#endif
 
58942
 
 
58943
    break;
 
58944
    }
 
58945
    case HASH_ATTRIBUTE_INDEX:
 
58946
    {
 
58947
bool failed;
 
58948
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
58949
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
58950
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
58951
        HASH_ELEMENT_LIGHT_SPOT_CUTOFF,
 
58952
        HASH_ATTRIBUTE_INDEX,
 
58953
        attributeValue))
 
58954
{
 
58955
    return false;
 
58956
}
 
58957
#ifdef GENERATEDSAXPARSER_VALIDATION
 
58958
    if ( mValidate )
 
58959
    {
 
58960
    ParserError::ErrorType simpleTypeValidationResult = validate__gles_max_lights_index_type(attributeData->index);
 
58961
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
58962
    {
 
58963
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
58964
            simpleTypeValidationResult,
 
58965
            HASH_ELEMENT_LIGHT_SPOT_CUTOFF,
 
58966
            HASH_ATTRIBUTE_INDEX,
 
58967
            attributeValue) )
 
58968
        {
 
58969
            return false;
 
58970
        }
 
58971
    }
 
58972
    } // validation
 
58973
#endif
 
58974
if ( !failed )
 
58975
    attributeData->present_attributes |= profile_GLES__technique__pass__states__light_spot_cutoff__AttributeData::ATTRIBUTE_INDEX_PRESENT;
 
58976
 
 
58977
    break;
 
58978
    }
 
58979
    default:
 
58980
    {
 
58981
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIGHT_SPOT_CUTOFF, attribute, attributeValue))
 
58982
            {return false;}
 
58983
    }
 
58984
    }
 
58985
    }
 
58986
}
 
58987
if ( (attributeData->present_attributes & profile_GLES__technique__pass__states__light_spot_cutoff__AttributeData::ATTRIBUTE_INDEX_PRESENT) == 0 )
 
58988
{
 
58989
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_LIGHT_SPOT_CUTOFF, HASH_ATTRIBUTE_INDEX, 0 ) )
 
58990
        return false;
 
58991
}
 
58992
 
 
58993
 
 
58994
    return true;
 
58995
}
 
58996
 
 
58997
//---------------------------------------------------------------------
 
58998
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__light_spot_cutoff()
 
58999
{
 
59000
#ifdef GENERATEDSAXPARSER_VALIDATION
 
59001
    if ( mValidate )
 
59002
    {
 
59003
 
 
59004
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__light_spot_cutoff();
 
59005
        if ( !validationResult ) return false;
 
59006
 
 
59007
    } // validation
 
59008
#endif
 
59009
 
 
59010
    return true;
 
59011
}
 
59012
 
 
59013
//---------------------------------------------------------------------
 
59014
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__light_spot_cutoff( void* attributeData )
 
59015
{
 
59016
    profile_GLES__technique__pass__states__light_spot_cutoff__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__light_spot_cutoff__AttributeData*>(attributeData);
 
59017
 
 
59018
    typedAttributeData->~profile_GLES__technique__pass__states__light_spot_cutoff__AttributeData();
 
59019
 
 
59020
    return true;
 
59021
}
 
59022
 
 
59023
//---------------------------------------------------------------------
 
59024
const profile_GLES__technique__pass__states__light_spot_direction__AttributeData profile_GLES__technique__pass__states__light_spot_direction__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<float>(), 0, 0};
 
59025
 
 
59026
//---------------------------------------------------------------------
 
59027
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__light_spot_direction( const ParserChar* text, size_t textLength )
 
59028
{
 
59029
    return true;
 
59030
}
 
59031
 
 
59032
//---------------------------------------------------------------------
 
59033
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__light_spot_direction( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
59034
{
 
59035
#ifdef GENERATEDSAXPARSER_VALIDATION
 
59036
    if ( mValidate )
 
59037
    {
 
59038
 
 
59039
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__light_spot_direction( attributes, attributeDataPtr, validationDataPtr );
 
59040
        if ( !validationResult ) return false;
 
59041
 
 
59042
    } // validation
 
59043
#endif
 
59044
 
 
59045
profile_GLES__technique__pass__states__light_spot_direction__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__light_spot_direction__AttributeData>(attributeDataPtr);
 
59046
 
 
59047
const ParserChar** attributeArray = attributes.attributes;
 
59048
if ( attributeArray )
 
59049
{
 
59050
    while (true)
 
59051
    {
 
59052
        const ParserChar * attribute = *attributeArray;
 
59053
        if ( !attribute )
 
59054
            break;
 
59055
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
59056
        attributeArray++;
 
59057
        if ( !attributeArray )
 
59058
            return false;
 
59059
        const ParserChar* attributeValue = *attributeArray;
 
59060
        attributeArray++;
 
59061
 
 
59062
 
 
59063
    switch ( hash )
 
59064
    {
 
59065
    case HASH_ATTRIBUTE_VALUE:
 
59066
    {
 
59067
bool failed;
 
59068
#ifdef GENERATEDSAXPARSER_VALIDATION
 
59069
    if ( mValidate )
 
59070
    {
 
59071
failed = !characterData2FloatList(attributeValue, attributeData->value, 0, HASH_ELEMENT_LIGHT_SPOT_DIRECTION, HASH_ATTRIBUTE_VALUE);
 
59072
    }
 
59073
    else
 
59074
    {
 
59075
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
59076
    }
 
59077
#else
 
59078
    {
 
59079
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
59080
    } // validation
 
59081
#endif
 
59082
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
59083
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
59084
        HASH_ELEMENT_LIGHT_SPOT_DIRECTION,
 
59085
        HASH_ATTRIBUTE_VALUE,
 
59086
        attributeValue))
 
59087
{
 
59088
    return false;
 
59089
}
 
59090
#ifdef GENERATEDSAXPARSER_VALIDATION
 
59091
    if ( mValidate )
 
59092
    {
 
59093
    ParserError::ErrorType simpleTypeValidationResult = validate__float3_type(attributeData->value.data, attributeData->value.size);
 
59094
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
59095
    {
 
59096
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
59097
            simpleTypeValidationResult,
 
59098
            HASH_ELEMENT_LIGHT_SPOT_DIRECTION,
 
59099
            HASH_ATTRIBUTE_VALUE,
 
59100
            attributeValue) )
 
59101
        {
 
59102
            return false;
 
59103
        }
 
59104
    }
 
59105
    } // validation
 
59106
#endif
 
59107
 
 
59108
if ( !failed )
 
59109
    attributeData->present_attributes |= profile_GLES__technique__pass__states__light_spot_direction__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
59110
 
 
59111
    break;
 
59112
    }
 
59113
    case HASH_ATTRIBUTE_PARAM:
 
59114
    {
 
59115
 
 
59116
attributeData->param = attributeValue;
 
59117
#ifdef GENERATEDSAXPARSER_VALIDATION
 
59118
    if ( mValidate )
 
59119
    {
 
59120
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
59121
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
59122
    {
 
59123
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
59124
            simpleTypeValidationResult,
 
59125
            HASH_ELEMENT_LIGHT_SPOT_DIRECTION,
 
59126
            HASH_ATTRIBUTE_PARAM,
 
59127
            attributeValue) )
 
59128
        {
 
59129
            return false;
 
59130
        }
 
59131
    }
 
59132
    } // validation
 
59133
#endif
 
59134
 
 
59135
    break;
 
59136
    }
 
59137
    case HASH_ATTRIBUTE_INDEX:
 
59138
    {
 
59139
bool failed;
 
59140
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
59141
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
59142
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
59143
        HASH_ELEMENT_LIGHT_SPOT_DIRECTION,
 
59144
        HASH_ATTRIBUTE_INDEX,
 
59145
        attributeValue))
 
59146
{
 
59147
    return false;
 
59148
}
 
59149
#ifdef GENERATEDSAXPARSER_VALIDATION
 
59150
    if ( mValidate )
 
59151
    {
 
59152
    ParserError::ErrorType simpleTypeValidationResult = validate__gles_max_lights_index_type(attributeData->index);
 
59153
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
59154
    {
 
59155
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
59156
            simpleTypeValidationResult,
 
59157
            HASH_ELEMENT_LIGHT_SPOT_DIRECTION,
 
59158
            HASH_ATTRIBUTE_INDEX,
 
59159
            attributeValue) )
 
59160
        {
 
59161
            return false;
 
59162
        }
 
59163
    }
 
59164
    } // validation
 
59165
#endif
 
59166
if ( !failed )
 
59167
    attributeData->present_attributes |= profile_GLES__technique__pass__states__light_spot_direction__AttributeData::ATTRIBUTE_INDEX_PRESENT;
 
59168
 
 
59169
    break;
 
59170
    }
 
59171
    default:
 
59172
    {
 
59173
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIGHT_SPOT_DIRECTION, attribute, attributeValue))
 
59174
            {return false;}
 
59175
    }
 
59176
    }
 
59177
    }
 
59178
}
 
59179
if ((attributeData->present_attributes & profile_GLES__technique__pass__states__light_spot_direction__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
59180
{
 
59181
    bool failed;
 
59182
    failed = !characterData2FloatList("0.0E1 0.0E1 -1.0E0", attributeData->value);
 
59183
    if ( !failed )
 
59184
    attributeData->present_attributes |= profile_GLES__technique__pass__states__light_spot_direction__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
59185
}
 
59186
if ( (attributeData->present_attributes & profile_GLES__technique__pass__states__light_spot_direction__AttributeData::ATTRIBUTE_INDEX_PRESENT) == 0 )
 
59187
{
 
59188
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_LIGHT_SPOT_DIRECTION, HASH_ATTRIBUTE_INDEX, 0 ) )
 
59189
        return false;
 
59190
}
 
59191
 
 
59192
 
 
59193
    return true;
 
59194
}
 
59195
 
 
59196
//---------------------------------------------------------------------
 
59197
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__light_spot_direction()
 
59198
{
 
59199
#ifdef GENERATEDSAXPARSER_VALIDATION
 
59200
    if ( mValidate )
 
59201
    {
 
59202
 
 
59203
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__light_spot_direction();
 
59204
        if ( !validationResult ) return false;
 
59205
 
 
59206
    } // validation
 
59207
#endif
 
59208
 
 
59209
    return true;
 
59210
}
 
59211
 
 
59212
//---------------------------------------------------------------------
 
59213
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__light_spot_direction( void* attributeData )
 
59214
{
 
59215
    profile_GLES__technique__pass__states__light_spot_direction__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__light_spot_direction__AttributeData*>(attributeData);
 
59216
    if (typedAttributeData->value.data)
 
59217
    {
 
59218
        mStackMemoryManager.deleteObject();
 
59219
    }
 
59220
 
 
59221
 
 
59222
    typedAttributeData->~profile_GLES__technique__pass__states__light_spot_direction__AttributeData();
 
59223
 
 
59224
    return true;
 
59225
}
 
59226
 
 
59227
//---------------------------------------------------------------------
 
59228
const profile_GLES__technique__pass__states__light_spot_exponent__AttributeData profile_GLES__technique__pass__states__light_spot_exponent__AttributeData::DEFAULT = {0, 0.0E1, 0, 0};
 
59229
 
 
59230
//---------------------------------------------------------------------
 
59231
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__light_spot_exponent( const ParserChar* text, size_t textLength )
 
59232
{
 
59233
    return true;
 
59234
}
 
59235
 
 
59236
//---------------------------------------------------------------------
 
59237
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__light_spot_exponent( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
59238
{
 
59239
#ifdef GENERATEDSAXPARSER_VALIDATION
 
59240
    if ( mValidate )
 
59241
    {
 
59242
 
 
59243
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__light_spot_exponent( attributes, attributeDataPtr, validationDataPtr );
 
59244
        if ( !validationResult ) return false;
 
59245
 
 
59246
    } // validation
 
59247
#endif
 
59248
 
 
59249
profile_GLES__technique__pass__states__light_spot_exponent__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__light_spot_exponent__AttributeData>(attributeDataPtr);
 
59250
 
 
59251
const ParserChar** attributeArray = attributes.attributes;
 
59252
if ( attributeArray )
 
59253
{
 
59254
    while (true)
 
59255
    {
 
59256
        const ParserChar * attribute = *attributeArray;
 
59257
        if ( !attribute )
 
59258
            break;
 
59259
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
59260
        attributeArray++;
 
59261
        if ( !attributeArray )
 
59262
            return false;
 
59263
        const ParserChar* attributeValue = *attributeArray;
 
59264
        attributeArray++;
 
59265
 
 
59266
 
 
59267
    switch ( hash )
 
59268
    {
 
59269
    case HASH_ATTRIBUTE_VALUE:
 
59270
    {
 
59271
bool failed;
 
59272
attributeData->value = GeneratedSaxParser::Utils::toFloat(attributeValue, failed);
 
59273
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
59274
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
59275
        HASH_ELEMENT_LIGHT_SPOT_EXPONENT,
 
59276
        HASH_ATTRIBUTE_VALUE,
 
59277
        attributeValue))
 
59278
{
 
59279
    return false;
 
59280
}
 
59281
 
 
59282
    break;
 
59283
    }
 
59284
    case HASH_ATTRIBUTE_PARAM:
 
59285
    {
 
59286
 
 
59287
attributeData->param = attributeValue;
 
59288
#ifdef GENERATEDSAXPARSER_VALIDATION
 
59289
    if ( mValidate )
 
59290
    {
 
59291
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
59292
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
59293
    {
 
59294
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
59295
            simpleTypeValidationResult,
 
59296
            HASH_ELEMENT_LIGHT_SPOT_EXPONENT,
 
59297
            HASH_ATTRIBUTE_PARAM,
 
59298
            attributeValue) )
 
59299
        {
 
59300
            return false;
 
59301
        }
 
59302
    }
 
59303
    } // validation
 
59304
#endif
 
59305
 
 
59306
    break;
 
59307
    }
 
59308
    case HASH_ATTRIBUTE_INDEX:
 
59309
    {
 
59310
bool failed;
 
59311
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
59312
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
59313
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
59314
        HASH_ELEMENT_LIGHT_SPOT_EXPONENT,
 
59315
        HASH_ATTRIBUTE_INDEX,
 
59316
        attributeValue))
 
59317
{
 
59318
    return false;
 
59319
}
 
59320
#ifdef GENERATEDSAXPARSER_VALIDATION
 
59321
    if ( mValidate )
 
59322
    {
 
59323
    ParserError::ErrorType simpleTypeValidationResult = validate__gles_max_lights_index_type(attributeData->index);
 
59324
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
59325
    {
 
59326
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
59327
            simpleTypeValidationResult,
 
59328
            HASH_ELEMENT_LIGHT_SPOT_EXPONENT,
 
59329
            HASH_ATTRIBUTE_INDEX,
 
59330
            attributeValue) )
 
59331
        {
 
59332
            return false;
 
59333
        }
 
59334
    }
 
59335
    } // validation
 
59336
#endif
 
59337
if ( !failed )
 
59338
    attributeData->present_attributes |= profile_GLES__technique__pass__states__light_spot_exponent__AttributeData::ATTRIBUTE_INDEX_PRESENT;
 
59339
 
 
59340
    break;
 
59341
    }
 
59342
    default:
 
59343
    {
 
59344
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIGHT_SPOT_EXPONENT, attribute, attributeValue))
 
59345
            {return false;}
 
59346
    }
 
59347
    }
 
59348
    }
 
59349
}
 
59350
if ( (attributeData->present_attributes & profile_GLES__technique__pass__states__light_spot_exponent__AttributeData::ATTRIBUTE_INDEX_PRESENT) == 0 )
 
59351
{
 
59352
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_LIGHT_SPOT_EXPONENT, HASH_ATTRIBUTE_INDEX, 0 ) )
 
59353
        return false;
 
59354
}
 
59355
 
 
59356
 
 
59357
    return true;
 
59358
}
 
59359
 
 
59360
//---------------------------------------------------------------------
 
59361
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__light_spot_exponent()
 
59362
{
 
59363
#ifdef GENERATEDSAXPARSER_VALIDATION
 
59364
    if ( mValidate )
 
59365
    {
 
59366
 
 
59367
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__light_spot_exponent();
 
59368
        if ( !validationResult ) return false;
 
59369
 
 
59370
    } // validation
 
59371
#endif
 
59372
 
 
59373
    return true;
 
59374
}
 
59375
 
 
59376
//---------------------------------------------------------------------
 
59377
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__light_spot_exponent( void* attributeData )
 
59378
{
 
59379
    profile_GLES__technique__pass__states__light_spot_exponent__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__light_spot_exponent__AttributeData*>(attributeData);
 
59380
 
 
59381
    typedAttributeData->~profile_GLES__technique__pass__states__light_spot_exponent__AttributeData();
 
59382
 
 
59383
    return true;
 
59384
}
 
59385
 
 
59386
//---------------------------------------------------------------------
 
59387
const profile_GLES__technique__pass__states__light_model_ambient__AttributeData profile_GLES__technique__pass__states__light_model_ambient__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<float>(), 0};
 
59388
 
 
59389
//---------------------------------------------------------------------
 
59390
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__light_model_ambient( const ParserChar* text, size_t textLength )
 
59391
{
 
59392
    return true;
 
59393
}
 
59394
 
 
59395
//---------------------------------------------------------------------
 
59396
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__light_model_ambient( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
59397
{
 
59398
#ifdef GENERATEDSAXPARSER_VALIDATION
 
59399
    if ( mValidate )
 
59400
    {
 
59401
 
 
59402
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__light_model_ambient( attributes, attributeDataPtr, validationDataPtr );
 
59403
        if ( !validationResult ) return false;
 
59404
 
 
59405
    } // validation
 
59406
#endif
 
59407
 
 
59408
profile_GLES__technique__pass__states__light_model_ambient__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__light_model_ambient__AttributeData>(attributeDataPtr);
 
59409
 
 
59410
const ParserChar** attributeArray = attributes.attributes;
 
59411
if ( attributeArray )
 
59412
{
 
59413
    while (true)
 
59414
    {
 
59415
        const ParserChar * attribute = *attributeArray;
 
59416
        if ( !attribute )
 
59417
            break;
 
59418
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
59419
        attributeArray++;
 
59420
        if ( !attributeArray )
 
59421
            return false;
 
59422
        const ParserChar* attributeValue = *attributeArray;
 
59423
        attributeArray++;
 
59424
 
 
59425
 
 
59426
    switch ( hash )
 
59427
    {
 
59428
    case HASH_ATTRIBUTE_VALUE:
 
59429
    {
 
59430
bool failed;
 
59431
#ifdef GENERATEDSAXPARSER_VALIDATION
 
59432
    if ( mValidate )
 
59433
    {
 
59434
failed = !characterData2FloatList(attributeValue, attributeData->value, 0, HASH_ELEMENT_LIGHT_MODEL_AMBIENT, HASH_ATTRIBUTE_VALUE);
 
59435
    }
 
59436
    else
 
59437
    {
 
59438
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
59439
    }
 
59440
#else
 
59441
    {
 
59442
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
59443
    } // validation
 
59444
#endif
 
59445
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
59446
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
59447
        HASH_ELEMENT_LIGHT_MODEL_AMBIENT,
 
59448
        HASH_ATTRIBUTE_VALUE,
 
59449
        attributeValue))
 
59450
{
 
59451
    return false;
 
59452
}
 
59453
#ifdef GENERATEDSAXPARSER_VALIDATION
 
59454
    if ( mValidate )
 
59455
    {
 
59456
    ParserError::ErrorType simpleTypeValidationResult = validate__float4_type(attributeData->value.data, attributeData->value.size);
 
59457
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
59458
    {
 
59459
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
59460
            simpleTypeValidationResult,
 
59461
            HASH_ELEMENT_LIGHT_MODEL_AMBIENT,
 
59462
            HASH_ATTRIBUTE_VALUE,
 
59463
            attributeValue) )
 
59464
        {
 
59465
            return false;
 
59466
        }
 
59467
    }
 
59468
    } // validation
 
59469
#endif
 
59470
 
 
59471
if ( !failed )
 
59472
    attributeData->present_attributes |= profile_GLES__technique__pass__states__light_model_ambient__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
59473
 
 
59474
    break;
 
59475
    }
 
59476
    case HASH_ATTRIBUTE_PARAM:
 
59477
    {
 
59478
 
 
59479
attributeData->param = attributeValue;
 
59480
#ifdef GENERATEDSAXPARSER_VALIDATION
 
59481
    if ( mValidate )
 
59482
    {
 
59483
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
59484
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
59485
    {
 
59486
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
59487
            simpleTypeValidationResult,
 
59488
            HASH_ELEMENT_LIGHT_MODEL_AMBIENT,
 
59489
            HASH_ATTRIBUTE_PARAM,
 
59490
            attributeValue) )
 
59491
        {
 
59492
            return false;
 
59493
        }
 
59494
    }
 
59495
    } // validation
 
59496
#endif
 
59497
 
 
59498
    break;
 
59499
    }
 
59500
    default:
 
59501
    {
 
59502
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIGHT_MODEL_AMBIENT, attribute, attributeValue))
 
59503
            {return false;}
 
59504
    }
 
59505
    }
 
59506
    }
 
59507
}
 
59508
if ((attributeData->present_attributes & profile_GLES__technique__pass__states__light_model_ambient__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
59509
{
 
59510
    bool failed;
 
59511
    failed = !characterData2FloatList("2.0E-1 2.0E-1 2.0E-1 1.0E0", attributeData->value);
 
59512
    if ( !failed )
 
59513
    attributeData->present_attributes |= profile_GLES__technique__pass__states__light_model_ambient__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
59514
}
 
59515
 
 
59516
 
 
59517
    return true;
 
59518
}
 
59519
 
 
59520
//---------------------------------------------------------------------
 
59521
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__light_model_ambient()
 
59522
{
 
59523
#ifdef GENERATEDSAXPARSER_VALIDATION
 
59524
    if ( mValidate )
 
59525
    {
 
59526
 
 
59527
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__light_model_ambient();
 
59528
        if ( !validationResult ) return false;
 
59529
 
 
59530
    } // validation
 
59531
#endif
 
59532
 
 
59533
    return true;
 
59534
}
 
59535
 
 
59536
//---------------------------------------------------------------------
 
59537
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__light_model_ambient( void* attributeData )
 
59538
{
 
59539
    profile_GLES__technique__pass__states__light_model_ambient__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__light_model_ambient__AttributeData*>(attributeData);
 
59540
    if (typedAttributeData->value.data)
 
59541
    {
 
59542
        mStackMemoryManager.deleteObject();
 
59543
    }
 
59544
 
 
59545
 
 
59546
    typedAttributeData->~profile_GLES__technique__pass__states__light_model_ambient__AttributeData();
 
59547
 
 
59548
    return true;
 
59549
}
 
59550
 
 
59551
//---------------------------------------------------------------------
 
59552
const profile_GLES__technique__pass__states__line_width__AttributeData profile_GLES__technique__pass__states__line_width__AttributeData::DEFAULT = {1.0E0, 0};
 
59553
 
 
59554
//---------------------------------------------------------------------
 
59555
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__line_width( const ParserChar* text, size_t textLength )
 
59556
{
 
59557
    return true;
 
59558
}
 
59559
 
 
59560
//---------------------------------------------------------------------
 
59561
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__line_width( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
59562
{
 
59563
#ifdef GENERATEDSAXPARSER_VALIDATION
 
59564
    if ( mValidate )
 
59565
    {
 
59566
 
 
59567
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__line_width( attributes, attributeDataPtr, validationDataPtr );
 
59568
        if ( !validationResult ) return false;
 
59569
 
 
59570
    } // validation
 
59571
#endif
 
59572
 
 
59573
profile_GLES__technique__pass__states__line_width__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__line_width__AttributeData>(attributeDataPtr);
 
59574
 
 
59575
const ParserChar** attributeArray = attributes.attributes;
 
59576
if ( attributeArray )
 
59577
{
 
59578
    while (true)
 
59579
    {
 
59580
        const ParserChar * attribute = *attributeArray;
 
59581
        if ( !attribute )
 
59582
            break;
 
59583
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
59584
        attributeArray++;
 
59585
        if ( !attributeArray )
 
59586
            return false;
 
59587
        const ParserChar* attributeValue = *attributeArray;
 
59588
        attributeArray++;
 
59589
 
 
59590
 
 
59591
    switch ( hash )
 
59592
    {
 
59593
    case HASH_ATTRIBUTE_VALUE:
 
59594
    {
 
59595
bool failed;
 
59596
attributeData->value = GeneratedSaxParser::Utils::toFloat(attributeValue, failed);
 
59597
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
59598
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
59599
        HASH_ELEMENT_LINE_WIDTH,
 
59600
        HASH_ATTRIBUTE_VALUE,
 
59601
        attributeValue))
 
59602
{
 
59603
    return false;
 
59604
}
 
59605
 
 
59606
    break;
 
59607
    }
 
59608
    case HASH_ATTRIBUTE_PARAM:
 
59609
    {
 
59610
 
 
59611
attributeData->param = attributeValue;
 
59612
#ifdef GENERATEDSAXPARSER_VALIDATION
 
59613
    if ( mValidate )
 
59614
    {
 
59615
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
59616
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
59617
    {
 
59618
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
59619
            simpleTypeValidationResult,
 
59620
            HASH_ELEMENT_LINE_WIDTH,
 
59621
            HASH_ATTRIBUTE_PARAM,
 
59622
            attributeValue) )
 
59623
        {
 
59624
            return false;
 
59625
        }
 
59626
    }
 
59627
    } // validation
 
59628
#endif
 
59629
 
 
59630
    break;
 
59631
    }
 
59632
    default:
 
59633
    {
 
59634
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LINE_WIDTH, attribute, attributeValue))
 
59635
            {return false;}
 
59636
    }
 
59637
    }
 
59638
    }
 
59639
}
 
59640
 
 
59641
 
 
59642
    return true;
 
59643
}
 
59644
 
 
59645
//---------------------------------------------------------------------
 
59646
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__line_width()
 
59647
{
 
59648
#ifdef GENERATEDSAXPARSER_VALIDATION
 
59649
    if ( mValidate )
 
59650
    {
 
59651
 
 
59652
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__line_width();
 
59653
        if ( !validationResult ) return false;
 
59654
 
 
59655
    } // validation
 
59656
#endif
 
59657
 
 
59658
    return true;
 
59659
}
 
59660
 
 
59661
//---------------------------------------------------------------------
 
59662
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__line_width( void* attributeData )
 
59663
{
 
59664
    profile_GLES__technique__pass__states__line_width__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__line_width__AttributeData*>(attributeData);
 
59665
 
 
59666
    typedAttributeData->~profile_GLES__technique__pass__states__line_width__AttributeData();
 
59667
 
 
59668
    return true;
 
59669
}
 
59670
 
 
59671
//---------------------------------------------------------------------
 
59672
const profile_GLES__technique__pass__states__material_ambient__AttributeData profile_GLES__technique__pass__states__material_ambient__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<float>(), 0};
 
59673
 
 
59674
//---------------------------------------------------------------------
 
59675
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__material_ambient( const ParserChar* text, size_t textLength )
 
59676
{
 
59677
    return true;
 
59678
}
 
59679
 
 
59680
//---------------------------------------------------------------------
 
59681
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__material_ambient( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
59682
{
 
59683
#ifdef GENERATEDSAXPARSER_VALIDATION
 
59684
    if ( mValidate )
 
59685
    {
 
59686
 
 
59687
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__material_ambient( attributes, attributeDataPtr, validationDataPtr );
 
59688
        if ( !validationResult ) return false;
 
59689
 
 
59690
    } // validation
 
59691
#endif
 
59692
 
 
59693
profile_GLES__technique__pass__states__material_ambient__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__material_ambient__AttributeData>(attributeDataPtr);
 
59694
 
 
59695
const ParserChar** attributeArray = attributes.attributes;
 
59696
if ( attributeArray )
 
59697
{
 
59698
    while (true)
 
59699
    {
 
59700
        const ParserChar * attribute = *attributeArray;
 
59701
        if ( !attribute )
 
59702
            break;
 
59703
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
59704
        attributeArray++;
 
59705
        if ( !attributeArray )
 
59706
            return false;
 
59707
        const ParserChar* attributeValue = *attributeArray;
 
59708
        attributeArray++;
 
59709
 
 
59710
 
 
59711
    switch ( hash )
 
59712
    {
 
59713
    case HASH_ATTRIBUTE_VALUE:
 
59714
    {
 
59715
bool failed;
 
59716
#ifdef GENERATEDSAXPARSER_VALIDATION
 
59717
    if ( mValidate )
 
59718
    {
 
59719
failed = !characterData2FloatList(attributeValue, attributeData->value, 0, HASH_ELEMENT_MATERIAL_AMBIENT, HASH_ATTRIBUTE_VALUE);
 
59720
    }
 
59721
    else
 
59722
    {
 
59723
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
59724
    }
 
59725
#else
 
59726
    {
 
59727
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
59728
    } // validation
 
59729
#endif
 
59730
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
59731
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
59732
        HASH_ELEMENT_MATERIAL_AMBIENT,
 
59733
        HASH_ATTRIBUTE_VALUE,
 
59734
        attributeValue))
 
59735
{
 
59736
    return false;
 
59737
}
 
59738
#ifdef GENERATEDSAXPARSER_VALIDATION
 
59739
    if ( mValidate )
 
59740
    {
 
59741
    ParserError::ErrorType simpleTypeValidationResult = validate__float4_type(attributeData->value.data, attributeData->value.size);
 
59742
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
59743
    {
 
59744
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
59745
            simpleTypeValidationResult,
 
59746
            HASH_ELEMENT_MATERIAL_AMBIENT,
 
59747
            HASH_ATTRIBUTE_VALUE,
 
59748
            attributeValue) )
 
59749
        {
 
59750
            return false;
 
59751
        }
 
59752
    }
 
59753
    } // validation
 
59754
#endif
 
59755
 
 
59756
if ( !failed )
 
59757
    attributeData->present_attributes |= profile_GLES__technique__pass__states__material_ambient__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
59758
 
 
59759
    break;
 
59760
    }
 
59761
    case HASH_ATTRIBUTE_PARAM:
 
59762
    {
 
59763
 
 
59764
attributeData->param = attributeValue;
 
59765
#ifdef GENERATEDSAXPARSER_VALIDATION
 
59766
    if ( mValidate )
 
59767
    {
 
59768
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
59769
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
59770
    {
 
59771
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
59772
            simpleTypeValidationResult,
 
59773
            HASH_ELEMENT_MATERIAL_AMBIENT,
 
59774
            HASH_ATTRIBUTE_PARAM,
 
59775
            attributeValue) )
 
59776
        {
 
59777
            return false;
 
59778
        }
 
59779
    }
 
59780
    } // validation
 
59781
#endif
 
59782
 
 
59783
    break;
 
59784
    }
 
59785
    default:
 
59786
    {
 
59787
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_MATERIAL_AMBIENT, attribute, attributeValue))
 
59788
            {return false;}
 
59789
    }
 
59790
    }
 
59791
    }
 
59792
}
 
59793
if ((attributeData->present_attributes & profile_GLES__technique__pass__states__material_ambient__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
59794
{
 
59795
    bool failed;
 
59796
    failed = !characterData2FloatList("2.0E-1 2.0E-1 2.0E-1 1.0E0", attributeData->value);
 
59797
    if ( !failed )
 
59798
    attributeData->present_attributes |= profile_GLES__technique__pass__states__material_ambient__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
59799
}
 
59800
 
 
59801
 
 
59802
    return true;
 
59803
}
 
59804
 
 
59805
//---------------------------------------------------------------------
 
59806
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__material_ambient()
 
59807
{
 
59808
#ifdef GENERATEDSAXPARSER_VALIDATION
 
59809
    if ( mValidate )
 
59810
    {
 
59811
 
 
59812
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__material_ambient();
 
59813
        if ( !validationResult ) return false;
 
59814
 
 
59815
    } // validation
 
59816
#endif
 
59817
 
 
59818
    return true;
 
59819
}
 
59820
 
 
59821
//---------------------------------------------------------------------
 
59822
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__material_ambient( void* attributeData )
 
59823
{
 
59824
    profile_GLES__technique__pass__states__material_ambient__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__material_ambient__AttributeData*>(attributeData);
 
59825
    if (typedAttributeData->value.data)
 
59826
    {
 
59827
        mStackMemoryManager.deleteObject();
 
59828
    }
 
59829
 
 
59830
 
 
59831
    typedAttributeData->~profile_GLES__technique__pass__states__material_ambient__AttributeData();
 
59832
 
 
59833
    return true;
 
59834
}
 
59835
 
 
59836
//---------------------------------------------------------------------
 
59837
const profile_GLES__technique__pass__states__material_diffuse__AttributeData profile_GLES__technique__pass__states__material_diffuse__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<float>(), 0};
 
59838
 
 
59839
//---------------------------------------------------------------------
 
59840
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__material_diffuse( const ParserChar* text, size_t textLength )
 
59841
{
 
59842
    return true;
 
59843
}
 
59844
 
 
59845
//---------------------------------------------------------------------
 
59846
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__material_diffuse( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
59847
{
 
59848
#ifdef GENERATEDSAXPARSER_VALIDATION
 
59849
    if ( mValidate )
 
59850
    {
 
59851
 
 
59852
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__material_diffuse( attributes, attributeDataPtr, validationDataPtr );
 
59853
        if ( !validationResult ) return false;
 
59854
 
 
59855
    } // validation
 
59856
#endif
 
59857
 
 
59858
profile_GLES__technique__pass__states__material_diffuse__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__material_diffuse__AttributeData>(attributeDataPtr);
 
59859
 
 
59860
const ParserChar** attributeArray = attributes.attributes;
 
59861
if ( attributeArray )
 
59862
{
 
59863
    while (true)
 
59864
    {
 
59865
        const ParserChar * attribute = *attributeArray;
 
59866
        if ( !attribute )
 
59867
            break;
 
59868
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
59869
        attributeArray++;
 
59870
        if ( !attributeArray )
 
59871
            return false;
 
59872
        const ParserChar* attributeValue = *attributeArray;
 
59873
        attributeArray++;
 
59874
 
 
59875
 
 
59876
    switch ( hash )
 
59877
    {
 
59878
    case HASH_ATTRIBUTE_VALUE:
 
59879
    {
 
59880
bool failed;
 
59881
#ifdef GENERATEDSAXPARSER_VALIDATION
 
59882
    if ( mValidate )
 
59883
    {
 
59884
failed = !characterData2FloatList(attributeValue, attributeData->value, 0, HASH_ELEMENT_MATERIAL_DIFFUSE, HASH_ATTRIBUTE_VALUE);
 
59885
    }
 
59886
    else
 
59887
    {
 
59888
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
59889
    }
 
59890
#else
 
59891
    {
 
59892
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
59893
    } // validation
 
59894
#endif
 
59895
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
59896
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
59897
        HASH_ELEMENT_MATERIAL_DIFFUSE,
 
59898
        HASH_ATTRIBUTE_VALUE,
 
59899
        attributeValue))
 
59900
{
 
59901
    return false;
 
59902
}
 
59903
#ifdef GENERATEDSAXPARSER_VALIDATION
 
59904
    if ( mValidate )
 
59905
    {
 
59906
    ParserError::ErrorType simpleTypeValidationResult = validate__float4_type(attributeData->value.data, attributeData->value.size);
 
59907
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
59908
    {
 
59909
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
59910
            simpleTypeValidationResult,
 
59911
            HASH_ELEMENT_MATERIAL_DIFFUSE,
 
59912
            HASH_ATTRIBUTE_VALUE,
 
59913
            attributeValue) )
 
59914
        {
 
59915
            return false;
 
59916
        }
 
59917
    }
 
59918
    } // validation
 
59919
#endif
 
59920
 
 
59921
if ( !failed )
 
59922
    attributeData->present_attributes |= profile_GLES__technique__pass__states__material_diffuse__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
59923
 
 
59924
    break;
 
59925
    }
 
59926
    case HASH_ATTRIBUTE_PARAM:
 
59927
    {
 
59928
 
 
59929
attributeData->param = attributeValue;
 
59930
#ifdef GENERATEDSAXPARSER_VALIDATION
 
59931
    if ( mValidate )
 
59932
    {
 
59933
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
59934
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
59935
    {
 
59936
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
59937
            simpleTypeValidationResult,
 
59938
            HASH_ELEMENT_MATERIAL_DIFFUSE,
 
59939
            HASH_ATTRIBUTE_PARAM,
 
59940
            attributeValue) )
 
59941
        {
 
59942
            return false;
 
59943
        }
 
59944
    }
 
59945
    } // validation
 
59946
#endif
 
59947
 
 
59948
    break;
 
59949
    }
 
59950
    default:
 
59951
    {
 
59952
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_MATERIAL_DIFFUSE, attribute, attributeValue))
 
59953
            {return false;}
 
59954
    }
 
59955
    }
 
59956
    }
 
59957
}
 
59958
if ((attributeData->present_attributes & profile_GLES__technique__pass__states__material_diffuse__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
59959
{
 
59960
    bool failed;
 
59961
    failed = !characterData2FloatList("8.0E-1 8.0E-1 8.0E-1 1.0E0", attributeData->value);
 
59962
    if ( !failed )
 
59963
    attributeData->present_attributes |= profile_GLES__technique__pass__states__material_diffuse__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
59964
}
 
59965
 
 
59966
 
 
59967
    return true;
 
59968
}
 
59969
 
 
59970
//---------------------------------------------------------------------
 
59971
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__material_diffuse()
 
59972
{
 
59973
#ifdef GENERATEDSAXPARSER_VALIDATION
 
59974
    if ( mValidate )
 
59975
    {
 
59976
 
 
59977
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__material_diffuse();
 
59978
        if ( !validationResult ) return false;
 
59979
 
 
59980
    } // validation
 
59981
#endif
 
59982
 
 
59983
    return true;
 
59984
}
 
59985
 
 
59986
//---------------------------------------------------------------------
 
59987
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__material_diffuse( void* attributeData )
 
59988
{
 
59989
    profile_GLES__technique__pass__states__material_diffuse__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__material_diffuse__AttributeData*>(attributeData);
 
59990
    if (typedAttributeData->value.data)
 
59991
    {
 
59992
        mStackMemoryManager.deleteObject();
 
59993
    }
 
59994
 
 
59995
 
 
59996
    typedAttributeData->~profile_GLES__technique__pass__states__material_diffuse__AttributeData();
 
59997
 
 
59998
    return true;
 
59999
}
 
60000
 
 
60001
//---------------------------------------------------------------------
 
60002
const profile_GLES__technique__pass__states__material_emission__AttributeData profile_GLES__technique__pass__states__material_emission__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<float>(), 0};
 
60003
 
 
60004
//---------------------------------------------------------------------
 
60005
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__material_emission( const ParserChar* text, size_t textLength )
 
60006
{
 
60007
    return true;
 
60008
}
 
60009
 
 
60010
//---------------------------------------------------------------------
 
60011
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__material_emission( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
60012
{
 
60013
#ifdef GENERATEDSAXPARSER_VALIDATION
 
60014
    if ( mValidate )
 
60015
    {
 
60016
 
 
60017
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__material_emission( attributes, attributeDataPtr, validationDataPtr );
 
60018
        if ( !validationResult ) return false;
 
60019
 
 
60020
    } // validation
 
60021
#endif
 
60022
 
 
60023
profile_GLES__technique__pass__states__material_emission__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__material_emission__AttributeData>(attributeDataPtr);
 
60024
 
 
60025
const ParserChar** attributeArray = attributes.attributes;
 
60026
if ( attributeArray )
 
60027
{
 
60028
    while (true)
 
60029
    {
 
60030
        const ParserChar * attribute = *attributeArray;
 
60031
        if ( !attribute )
 
60032
            break;
 
60033
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
60034
        attributeArray++;
 
60035
        if ( !attributeArray )
 
60036
            return false;
 
60037
        const ParserChar* attributeValue = *attributeArray;
 
60038
        attributeArray++;
 
60039
 
 
60040
 
 
60041
    switch ( hash )
 
60042
    {
 
60043
    case HASH_ATTRIBUTE_VALUE:
 
60044
    {
 
60045
bool failed;
 
60046
#ifdef GENERATEDSAXPARSER_VALIDATION
 
60047
    if ( mValidate )
 
60048
    {
 
60049
failed = !characterData2FloatList(attributeValue, attributeData->value, 0, HASH_ELEMENT_MATERIAL_EMISSION, HASH_ATTRIBUTE_VALUE);
 
60050
    }
 
60051
    else
 
60052
    {
 
60053
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
60054
    }
 
60055
#else
 
60056
    {
 
60057
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
60058
    } // validation
 
60059
#endif
 
60060
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
60061
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
60062
        HASH_ELEMENT_MATERIAL_EMISSION,
 
60063
        HASH_ATTRIBUTE_VALUE,
 
60064
        attributeValue))
 
60065
{
 
60066
    return false;
 
60067
}
 
60068
#ifdef GENERATEDSAXPARSER_VALIDATION
 
60069
    if ( mValidate )
 
60070
    {
 
60071
    ParserError::ErrorType simpleTypeValidationResult = validate__float4_type(attributeData->value.data, attributeData->value.size);
 
60072
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
60073
    {
 
60074
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
60075
            simpleTypeValidationResult,
 
60076
            HASH_ELEMENT_MATERIAL_EMISSION,
 
60077
            HASH_ATTRIBUTE_VALUE,
 
60078
            attributeValue) )
 
60079
        {
 
60080
            return false;
 
60081
        }
 
60082
    }
 
60083
    } // validation
 
60084
#endif
 
60085
 
 
60086
if ( !failed )
 
60087
    attributeData->present_attributes |= profile_GLES__technique__pass__states__material_emission__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
60088
 
 
60089
    break;
 
60090
    }
 
60091
    case HASH_ATTRIBUTE_PARAM:
 
60092
    {
 
60093
 
 
60094
attributeData->param = attributeValue;
 
60095
#ifdef GENERATEDSAXPARSER_VALIDATION
 
60096
    if ( mValidate )
 
60097
    {
 
60098
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
60099
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
60100
    {
 
60101
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
60102
            simpleTypeValidationResult,
 
60103
            HASH_ELEMENT_MATERIAL_EMISSION,
 
60104
            HASH_ATTRIBUTE_PARAM,
 
60105
            attributeValue) )
 
60106
        {
 
60107
            return false;
 
60108
        }
 
60109
    }
 
60110
    } // validation
 
60111
#endif
 
60112
 
 
60113
    break;
 
60114
    }
 
60115
    default:
 
60116
    {
 
60117
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_MATERIAL_EMISSION, attribute, attributeValue))
 
60118
            {return false;}
 
60119
    }
 
60120
    }
 
60121
    }
 
60122
}
 
60123
if ((attributeData->present_attributes & profile_GLES__technique__pass__states__material_emission__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
60124
{
 
60125
    bool failed;
 
60126
    failed = !characterData2FloatList("0.0E1 0.0E1 0.0E1 1.0E0", attributeData->value);
 
60127
    if ( !failed )
 
60128
    attributeData->present_attributes |= profile_GLES__technique__pass__states__material_emission__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
60129
}
 
60130
 
 
60131
 
 
60132
    return true;
 
60133
}
 
60134
 
 
60135
//---------------------------------------------------------------------
 
60136
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__material_emission()
 
60137
{
 
60138
#ifdef GENERATEDSAXPARSER_VALIDATION
 
60139
    if ( mValidate )
 
60140
    {
 
60141
 
 
60142
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__material_emission();
 
60143
        if ( !validationResult ) return false;
 
60144
 
 
60145
    } // validation
 
60146
#endif
 
60147
 
 
60148
    return true;
 
60149
}
 
60150
 
 
60151
//---------------------------------------------------------------------
 
60152
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__material_emission( void* attributeData )
 
60153
{
 
60154
    profile_GLES__technique__pass__states__material_emission__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__material_emission__AttributeData*>(attributeData);
 
60155
    if (typedAttributeData->value.data)
 
60156
    {
 
60157
        mStackMemoryManager.deleteObject();
 
60158
    }
 
60159
 
 
60160
 
 
60161
    typedAttributeData->~profile_GLES__technique__pass__states__material_emission__AttributeData();
 
60162
 
 
60163
    return true;
 
60164
}
 
60165
 
 
60166
//---------------------------------------------------------------------
 
60167
const profile_GLES__technique__pass__states__material_shininess__AttributeData profile_GLES__technique__pass__states__material_shininess__AttributeData::DEFAULT = {0.0E1, 0};
 
60168
 
 
60169
//---------------------------------------------------------------------
 
60170
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__material_shininess( const ParserChar* text, size_t textLength )
 
60171
{
 
60172
    return true;
 
60173
}
 
60174
 
 
60175
//---------------------------------------------------------------------
 
60176
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__material_shininess( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
60177
{
 
60178
#ifdef GENERATEDSAXPARSER_VALIDATION
 
60179
    if ( mValidate )
 
60180
    {
 
60181
 
 
60182
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__material_shininess( attributes, attributeDataPtr, validationDataPtr );
 
60183
        if ( !validationResult ) return false;
 
60184
 
 
60185
    } // validation
 
60186
#endif
 
60187
 
 
60188
profile_GLES__technique__pass__states__material_shininess__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__material_shininess__AttributeData>(attributeDataPtr);
 
60189
 
 
60190
const ParserChar** attributeArray = attributes.attributes;
 
60191
if ( attributeArray )
 
60192
{
 
60193
    while (true)
 
60194
    {
 
60195
        const ParserChar * attribute = *attributeArray;
 
60196
        if ( !attribute )
 
60197
            break;
 
60198
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
60199
        attributeArray++;
 
60200
        if ( !attributeArray )
 
60201
            return false;
 
60202
        const ParserChar* attributeValue = *attributeArray;
 
60203
        attributeArray++;
 
60204
 
 
60205
 
 
60206
    switch ( hash )
 
60207
    {
 
60208
    case HASH_ATTRIBUTE_VALUE:
 
60209
    {
 
60210
bool failed;
 
60211
attributeData->value = GeneratedSaxParser::Utils::toFloat(attributeValue, failed);
 
60212
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
60213
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
60214
        HASH_ELEMENT_MATERIAL_SHININESS,
 
60215
        HASH_ATTRIBUTE_VALUE,
 
60216
        attributeValue))
 
60217
{
 
60218
    return false;
 
60219
}
 
60220
 
 
60221
    break;
 
60222
    }
 
60223
    case HASH_ATTRIBUTE_PARAM:
 
60224
    {
 
60225
 
 
60226
attributeData->param = attributeValue;
 
60227
#ifdef GENERATEDSAXPARSER_VALIDATION
 
60228
    if ( mValidate )
 
60229
    {
 
60230
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
60231
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
60232
    {
 
60233
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
60234
            simpleTypeValidationResult,
 
60235
            HASH_ELEMENT_MATERIAL_SHININESS,
 
60236
            HASH_ATTRIBUTE_PARAM,
 
60237
            attributeValue) )
 
60238
        {
 
60239
            return false;
 
60240
        }
 
60241
    }
 
60242
    } // validation
 
60243
#endif
 
60244
 
 
60245
    break;
 
60246
    }
 
60247
    default:
 
60248
    {
 
60249
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_MATERIAL_SHININESS, attribute, attributeValue))
 
60250
            {return false;}
 
60251
    }
 
60252
    }
 
60253
    }
 
60254
}
 
60255
 
 
60256
 
 
60257
    return true;
 
60258
}
 
60259
 
 
60260
//---------------------------------------------------------------------
 
60261
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__material_shininess()
 
60262
{
 
60263
#ifdef GENERATEDSAXPARSER_VALIDATION
 
60264
    if ( mValidate )
 
60265
    {
 
60266
 
 
60267
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__material_shininess();
 
60268
        if ( !validationResult ) return false;
 
60269
 
 
60270
    } // validation
 
60271
#endif
 
60272
 
 
60273
    return true;
 
60274
}
 
60275
 
 
60276
//---------------------------------------------------------------------
 
60277
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__material_shininess( void* attributeData )
 
60278
{
 
60279
    profile_GLES__technique__pass__states__material_shininess__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__material_shininess__AttributeData*>(attributeData);
 
60280
 
 
60281
    typedAttributeData->~profile_GLES__technique__pass__states__material_shininess__AttributeData();
 
60282
 
 
60283
    return true;
 
60284
}
 
60285
 
 
60286
//---------------------------------------------------------------------
 
60287
const profile_GLES__technique__pass__states__material_specular__AttributeData profile_GLES__technique__pass__states__material_specular__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<float>(), 0};
 
60288
 
 
60289
//---------------------------------------------------------------------
 
60290
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__material_specular( const ParserChar* text, size_t textLength )
 
60291
{
 
60292
    return true;
 
60293
}
 
60294
 
 
60295
//---------------------------------------------------------------------
 
60296
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__material_specular( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
60297
{
 
60298
#ifdef GENERATEDSAXPARSER_VALIDATION
 
60299
    if ( mValidate )
 
60300
    {
 
60301
 
 
60302
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__material_specular( attributes, attributeDataPtr, validationDataPtr );
 
60303
        if ( !validationResult ) return false;
 
60304
 
 
60305
    } // validation
 
60306
#endif
 
60307
 
 
60308
profile_GLES__technique__pass__states__material_specular__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__material_specular__AttributeData>(attributeDataPtr);
 
60309
 
 
60310
const ParserChar** attributeArray = attributes.attributes;
 
60311
if ( attributeArray )
 
60312
{
 
60313
    while (true)
 
60314
    {
 
60315
        const ParserChar * attribute = *attributeArray;
 
60316
        if ( !attribute )
 
60317
            break;
 
60318
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
60319
        attributeArray++;
 
60320
        if ( !attributeArray )
 
60321
            return false;
 
60322
        const ParserChar* attributeValue = *attributeArray;
 
60323
        attributeArray++;
 
60324
 
 
60325
 
 
60326
    switch ( hash )
 
60327
    {
 
60328
    case HASH_ATTRIBUTE_VALUE:
 
60329
    {
 
60330
bool failed;
 
60331
#ifdef GENERATEDSAXPARSER_VALIDATION
 
60332
    if ( mValidate )
 
60333
    {
 
60334
failed = !characterData2FloatList(attributeValue, attributeData->value, 0, HASH_ELEMENT_MATERIAL_SPECULAR, HASH_ATTRIBUTE_VALUE);
 
60335
    }
 
60336
    else
 
60337
    {
 
60338
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
60339
    }
 
60340
#else
 
60341
    {
 
60342
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
60343
    } // validation
 
60344
#endif
 
60345
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
60346
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
60347
        HASH_ELEMENT_MATERIAL_SPECULAR,
 
60348
        HASH_ATTRIBUTE_VALUE,
 
60349
        attributeValue))
 
60350
{
 
60351
    return false;
 
60352
}
 
60353
#ifdef GENERATEDSAXPARSER_VALIDATION
 
60354
    if ( mValidate )
 
60355
    {
 
60356
    ParserError::ErrorType simpleTypeValidationResult = validate__float4_type(attributeData->value.data, attributeData->value.size);
 
60357
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
60358
    {
 
60359
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
60360
            simpleTypeValidationResult,
 
60361
            HASH_ELEMENT_MATERIAL_SPECULAR,
 
60362
            HASH_ATTRIBUTE_VALUE,
 
60363
            attributeValue) )
 
60364
        {
 
60365
            return false;
 
60366
        }
 
60367
    }
 
60368
    } // validation
 
60369
#endif
 
60370
 
 
60371
if ( !failed )
 
60372
    attributeData->present_attributes |= profile_GLES__technique__pass__states__material_specular__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
60373
 
 
60374
    break;
 
60375
    }
 
60376
    case HASH_ATTRIBUTE_PARAM:
 
60377
    {
 
60378
 
 
60379
attributeData->param = attributeValue;
 
60380
#ifdef GENERATEDSAXPARSER_VALIDATION
 
60381
    if ( mValidate )
 
60382
    {
 
60383
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
60384
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
60385
    {
 
60386
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
60387
            simpleTypeValidationResult,
 
60388
            HASH_ELEMENT_MATERIAL_SPECULAR,
 
60389
            HASH_ATTRIBUTE_PARAM,
 
60390
            attributeValue) )
 
60391
        {
 
60392
            return false;
 
60393
        }
 
60394
    }
 
60395
    } // validation
 
60396
#endif
 
60397
 
 
60398
    break;
 
60399
    }
 
60400
    default:
 
60401
    {
 
60402
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_MATERIAL_SPECULAR, attribute, attributeValue))
 
60403
            {return false;}
 
60404
    }
 
60405
    }
 
60406
    }
 
60407
}
 
60408
if ((attributeData->present_attributes & profile_GLES__technique__pass__states__material_specular__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
60409
{
 
60410
    bool failed;
 
60411
    failed = !characterData2FloatList("0.0E1 0.0E1 0.0E1 1.0E0", attributeData->value);
 
60412
    if ( !failed )
 
60413
    attributeData->present_attributes |= profile_GLES__technique__pass__states__material_specular__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
60414
}
 
60415
 
 
60416
 
 
60417
    return true;
 
60418
}
 
60419
 
 
60420
//---------------------------------------------------------------------
 
60421
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__material_specular()
 
60422
{
 
60423
#ifdef GENERATEDSAXPARSER_VALIDATION
 
60424
    if ( mValidate )
 
60425
    {
 
60426
 
 
60427
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__material_specular();
 
60428
        if ( !validationResult ) return false;
 
60429
 
 
60430
    } // validation
 
60431
#endif
 
60432
 
 
60433
    return true;
 
60434
}
 
60435
 
 
60436
//---------------------------------------------------------------------
 
60437
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__material_specular( void* attributeData )
 
60438
{
 
60439
    profile_GLES__technique__pass__states__material_specular__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__material_specular__AttributeData*>(attributeData);
 
60440
    if (typedAttributeData->value.data)
 
60441
    {
 
60442
        mStackMemoryManager.deleteObject();
 
60443
    }
 
60444
 
 
60445
 
 
60446
    typedAttributeData->~profile_GLES__technique__pass__states__material_specular__AttributeData();
 
60447
 
 
60448
    return true;
 
60449
}
 
60450
 
 
60451
//---------------------------------------------------------------------
 
60452
const profile_GLES__technique__pass__states__model_view_matrix__AttributeData profile_GLES__technique__pass__states__model_view_matrix__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<float>(), 0};
 
60453
 
 
60454
//---------------------------------------------------------------------
 
60455
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__model_view_matrix( const ParserChar* text, size_t textLength )
 
60456
{
 
60457
    return true;
 
60458
}
 
60459
 
 
60460
//---------------------------------------------------------------------
 
60461
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__model_view_matrix( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
60462
{
 
60463
#ifdef GENERATEDSAXPARSER_VALIDATION
 
60464
    if ( mValidate )
 
60465
    {
 
60466
 
 
60467
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__model_view_matrix( attributes, attributeDataPtr, validationDataPtr );
 
60468
        if ( !validationResult ) return false;
 
60469
 
 
60470
    } // validation
 
60471
#endif
 
60472
 
 
60473
profile_GLES__technique__pass__states__model_view_matrix__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__model_view_matrix__AttributeData>(attributeDataPtr);
 
60474
 
 
60475
const ParserChar** attributeArray = attributes.attributes;
 
60476
if ( attributeArray )
 
60477
{
 
60478
    while (true)
 
60479
    {
 
60480
        const ParserChar * attribute = *attributeArray;
 
60481
        if ( !attribute )
 
60482
            break;
 
60483
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
60484
        attributeArray++;
 
60485
        if ( !attributeArray )
 
60486
            return false;
 
60487
        const ParserChar* attributeValue = *attributeArray;
 
60488
        attributeArray++;
 
60489
 
 
60490
 
 
60491
    switch ( hash )
 
60492
    {
 
60493
    case HASH_ATTRIBUTE_VALUE:
 
60494
    {
 
60495
bool failed;
 
60496
#ifdef GENERATEDSAXPARSER_VALIDATION
 
60497
    if ( mValidate )
 
60498
    {
 
60499
failed = !characterData2FloatList(attributeValue, attributeData->value, 0, HASH_ELEMENT_MODEL_VIEW_MATRIX, HASH_ATTRIBUTE_VALUE);
 
60500
    }
 
60501
    else
 
60502
    {
 
60503
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
60504
    }
 
60505
#else
 
60506
    {
 
60507
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
60508
    } // validation
 
60509
#endif
 
60510
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
60511
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
60512
        HASH_ELEMENT_MODEL_VIEW_MATRIX,
 
60513
        HASH_ATTRIBUTE_VALUE,
 
60514
        attributeValue))
 
60515
{
 
60516
    return false;
 
60517
}
 
60518
#ifdef GENERATEDSAXPARSER_VALIDATION
 
60519
    if ( mValidate )
 
60520
    {
 
60521
    ParserError::ErrorType simpleTypeValidationResult = validate__float4x4_type(attributeData->value.data, attributeData->value.size);
 
60522
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
60523
    {
 
60524
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
60525
            simpleTypeValidationResult,
 
60526
            HASH_ELEMENT_MODEL_VIEW_MATRIX,
 
60527
            HASH_ATTRIBUTE_VALUE,
 
60528
            attributeValue) )
 
60529
        {
 
60530
            return false;
 
60531
        }
 
60532
    }
 
60533
    } // validation
 
60534
#endif
 
60535
 
 
60536
if ( !failed )
 
60537
    attributeData->present_attributes |= profile_GLES__technique__pass__states__model_view_matrix__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
60538
 
 
60539
    break;
 
60540
    }
 
60541
    case HASH_ATTRIBUTE_PARAM:
 
60542
    {
 
60543
 
 
60544
attributeData->param = attributeValue;
 
60545
#ifdef GENERATEDSAXPARSER_VALIDATION
 
60546
    if ( mValidate )
 
60547
    {
 
60548
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
60549
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
60550
    {
 
60551
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
60552
            simpleTypeValidationResult,
 
60553
            HASH_ELEMENT_MODEL_VIEW_MATRIX,
 
60554
            HASH_ATTRIBUTE_PARAM,
 
60555
            attributeValue) )
 
60556
        {
 
60557
            return false;
 
60558
        }
 
60559
    }
 
60560
    } // validation
 
60561
#endif
 
60562
 
 
60563
    break;
 
60564
    }
 
60565
    default:
 
60566
    {
 
60567
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_MODEL_VIEW_MATRIX, attribute, attributeValue))
 
60568
            {return false;}
 
60569
    }
 
60570
    }
 
60571
    }
 
60572
}
 
60573
if ((attributeData->present_attributes & profile_GLES__technique__pass__states__model_view_matrix__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
60574
{
 
60575
    bool failed;
 
60576
    failed = !characterData2FloatList("1.0E0 0.0E1 0.0E1 0.0E1 0.0E1 1.0E0 0.0E1 0.0E1 0.0E1 0.0E1 1.0E0 0.0E1 0.0E1 0.0E1 0.0E1 1.0E0", attributeData->value);
 
60577
    if ( !failed )
 
60578
    attributeData->present_attributes |= profile_GLES__technique__pass__states__model_view_matrix__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
60579
}
 
60580
 
 
60581
 
 
60582
    return true;
 
60583
}
 
60584
 
 
60585
//---------------------------------------------------------------------
 
60586
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__model_view_matrix()
 
60587
{
 
60588
#ifdef GENERATEDSAXPARSER_VALIDATION
 
60589
    if ( mValidate )
 
60590
    {
 
60591
 
 
60592
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__model_view_matrix();
 
60593
        if ( !validationResult ) return false;
 
60594
 
 
60595
    } // validation
 
60596
#endif
 
60597
 
 
60598
    return true;
 
60599
}
 
60600
 
 
60601
//---------------------------------------------------------------------
 
60602
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__model_view_matrix( void* attributeData )
 
60603
{
 
60604
    profile_GLES__technique__pass__states__model_view_matrix__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__model_view_matrix__AttributeData*>(attributeData);
 
60605
    if (typedAttributeData->value.data)
 
60606
    {
 
60607
        mStackMemoryManager.deleteObject();
 
60608
    }
 
60609
 
 
60610
 
 
60611
    typedAttributeData->~profile_GLES__technique__pass__states__model_view_matrix__AttributeData();
 
60612
 
 
60613
    return true;
 
60614
}
 
60615
 
 
60616
//---------------------------------------------------------------------
 
60617
const profile_GLES__technique__pass__states__point_distance_attenuation__AttributeData profile_GLES__technique__pass__states__point_distance_attenuation__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<float>(), 0};
 
60618
 
 
60619
//---------------------------------------------------------------------
 
60620
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__point_distance_attenuation( const ParserChar* text, size_t textLength )
 
60621
{
 
60622
    return true;
 
60623
}
 
60624
 
 
60625
//---------------------------------------------------------------------
 
60626
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__point_distance_attenuation( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
60627
{
 
60628
#ifdef GENERATEDSAXPARSER_VALIDATION
 
60629
    if ( mValidate )
 
60630
    {
 
60631
 
 
60632
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__point_distance_attenuation( attributes, attributeDataPtr, validationDataPtr );
 
60633
        if ( !validationResult ) return false;
 
60634
 
 
60635
    } // validation
 
60636
#endif
 
60637
 
 
60638
profile_GLES__technique__pass__states__point_distance_attenuation__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__point_distance_attenuation__AttributeData>(attributeDataPtr);
 
60639
 
 
60640
const ParserChar** attributeArray = attributes.attributes;
 
60641
if ( attributeArray )
 
60642
{
 
60643
    while (true)
 
60644
    {
 
60645
        const ParserChar * attribute = *attributeArray;
 
60646
        if ( !attribute )
 
60647
            break;
 
60648
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
60649
        attributeArray++;
 
60650
        if ( !attributeArray )
 
60651
            return false;
 
60652
        const ParserChar* attributeValue = *attributeArray;
 
60653
        attributeArray++;
 
60654
 
 
60655
 
 
60656
    switch ( hash )
 
60657
    {
 
60658
    case HASH_ATTRIBUTE_VALUE:
 
60659
    {
 
60660
bool failed;
 
60661
#ifdef GENERATEDSAXPARSER_VALIDATION
 
60662
    if ( mValidate )
 
60663
    {
 
60664
failed = !characterData2FloatList(attributeValue, attributeData->value, 0, HASH_ELEMENT_POINT_DISTANCE_ATTENUATION, HASH_ATTRIBUTE_VALUE);
 
60665
    }
 
60666
    else
 
60667
    {
 
60668
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
60669
    }
 
60670
#else
 
60671
    {
 
60672
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
60673
    } // validation
 
60674
#endif
 
60675
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
60676
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
60677
        HASH_ELEMENT_POINT_DISTANCE_ATTENUATION,
 
60678
        HASH_ATTRIBUTE_VALUE,
 
60679
        attributeValue))
 
60680
{
 
60681
    return false;
 
60682
}
 
60683
#ifdef GENERATEDSAXPARSER_VALIDATION
 
60684
    if ( mValidate )
 
60685
    {
 
60686
    ParserError::ErrorType simpleTypeValidationResult = validate__float3_type(attributeData->value.data, attributeData->value.size);
 
60687
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
60688
    {
 
60689
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
60690
            simpleTypeValidationResult,
 
60691
            HASH_ELEMENT_POINT_DISTANCE_ATTENUATION,
 
60692
            HASH_ATTRIBUTE_VALUE,
 
60693
            attributeValue) )
 
60694
        {
 
60695
            return false;
 
60696
        }
 
60697
    }
 
60698
    } // validation
 
60699
#endif
 
60700
 
 
60701
if ( !failed )
 
60702
    attributeData->present_attributes |= profile_GLES__technique__pass__states__point_distance_attenuation__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
60703
 
 
60704
    break;
 
60705
    }
 
60706
    case HASH_ATTRIBUTE_PARAM:
 
60707
    {
 
60708
 
 
60709
attributeData->param = attributeValue;
 
60710
#ifdef GENERATEDSAXPARSER_VALIDATION
 
60711
    if ( mValidate )
 
60712
    {
 
60713
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
60714
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
60715
    {
 
60716
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
60717
            simpleTypeValidationResult,
 
60718
            HASH_ELEMENT_POINT_DISTANCE_ATTENUATION,
 
60719
            HASH_ATTRIBUTE_PARAM,
 
60720
            attributeValue) )
 
60721
        {
 
60722
            return false;
 
60723
        }
 
60724
    }
 
60725
    } // validation
 
60726
#endif
 
60727
 
 
60728
    break;
 
60729
    }
 
60730
    default:
 
60731
    {
 
60732
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_POINT_DISTANCE_ATTENUATION, attribute, attributeValue))
 
60733
            {return false;}
 
60734
    }
 
60735
    }
 
60736
    }
 
60737
}
 
60738
if ((attributeData->present_attributes & profile_GLES__technique__pass__states__point_distance_attenuation__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
60739
{
 
60740
    bool failed;
 
60741
    failed = !characterData2FloatList("1.0E0 0.0E1 0.0E1", attributeData->value);
 
60742
    if ( !failed )
 
60743
    attributeData->present_attributes |= profile_GLES__technique__pass__states__point_distance_attenuation__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
60744
}
 
60745
 
 
60746
 
 
60747
    return true;
 
60748
}
 
60749
 
 
60750
//---------------------------------------------------------------------
 
60751
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__point_distance_attenuation()
 
60752
{
 
60753
#ifdef GENERATEDSAXPARSER_VALIDATION
 
60754
    if ( mValidate )
 
60755
    {
 
60756
 
 
60757
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__point_distance_attenuation();
 
60758
        if ( !validationResult ) return false;
 
60759
 
 
60760
    } // validation
 
60761
#endif
 
60762
 
 
60763
    return true;
 
60764
}
 
60765
 
 
60766
//---------------------------------------------------------------------
 
60767
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__point_distance_attenuation( void* attributeData )
 
60768
{
 
60769
    profile_GLES__technique__pass__states__point_distance_attenuation__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__point_distance_attenuation__AttributeData*>(attributeData);
 
60770
    if (typedAttributeData->value.data)
 
60771
    {
 
60772
        mStackMemoryManager.deleteObject();
 
60773
    }
 
60774
 
 
60775
 
 
60776
    typedAttributeData->~profile_GLES__technique__pass__states__point_distance_attenuation__AttributeData();
 
60777
 
 
60778
    return true;
 
60779
}
 
60780
 
 
60781
//---------------------------------------------------------------------
 
60782
const profile_GLES__technique__pass__states__point_fade_threshold_size__AttributeData profile_GLES__technique__pass__states__point_fade_threshold_size__AttributeData::DEFAULT = {1.0E0, 0};
 
60783
 
 
60784
//---------------------------------------------------------------------
 
60785
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__point_fade_threshold_size( const ParserChar* text, size_t textLength )
 
60786
{
 
60787
    return true;
 
60788
}
 
60789
 
 
60790
//---------------------------------------------------------------------
 
60791
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__point_fade_threshold_size( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
60792
{
 
60793
#ifdef GENERATEDSAXPARSER_VALIDATION
 
60794
    if ( mValidate )
 
60795
    {
 
60796
 
 
60797
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__point_fade_threshold_size( attributes, attributeDataPtr, validationDataPtr );
 
60798
        if ( !validationResult ) return false;
 
60799
 
 
60800
    } // validation
 
60801
#endif
 
60802
 
 
60803
profile_GLES__technique__pass__states__point_fade_threshold_size__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__point_fade_threshold_size__AttributeData>(attributeDataPtr);
 
60804
 
 
60805
const ParserChar** attributeArray = attributes.attributes;
 
60806
if ( attributeArray )
 
60807
{
 
60808
    while (true)
 
60809
    {
 
60810
        const ParserChar * attribute = *attributeArray;
 
60811
        if ( !attribute )
 
60812
            break;
 
60813
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
60814
        attributeArray++;
 
60815
        if ( !attributeArray )
 
60816
            return false;
 
60817
        const ParserChar* attributeValue = *attributeArray;
 
60818
        attributeArray++;
 
60819
 
 
60820
 
 
60821
    switch ( hash )
 
60822
    {
 
60823
    case HASH_ATTRIBUTE_VALUE:
 
60824
    {
 
60825
bool failed;
 
60826
attributeData->value = GeneratedSaxParser::Utils::toFloat(attributeValue, failed);
 
60827
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
60828
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
60829
        HASH_ELEMENT_POINT_FADE_THRESHOLD_SIZE,
 
60830
        HASH_ATTRIBUTE_VALUE,
 
60831
        attributeValue))
 
60832
{
 
60833
    return false;
 
60834
}
 
60835
 
 
60836
    break;
 
60837
    }
 
60838
    case HASH_ATTRIBUTE_PARAM:
 
60839
    {
 
60840
 
 
60841
attributeData->param = attributeValue;
 
60842
#ifdef GENERATEDSAXPARSER_VALIDATION
 
60843
    if ( mValidate )
 
60844
    {
 
60845
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
60846
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
60847
    {
 
60848
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
60849
            simpleTypeValidationResult,
 
60850
            HASH_ELEMENT_POINT_FADE_THRESHOLD_SIZE,
 
60851
            HASH_ATTRIBUTE_PARAM,
 
60852
            attributeValue) )
 
60853
        {
 
60854
            return false;
 
60855
        }
 
60856
    }
 
60857
    } // validation
 
60858
#endif
 
60859
 
 
60860
    break;
 
60861
    }
 
60862
    default:
 
60863
    {
 
60864
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_POINT_FADE_THRESHOLD_SIZE, attribute, attributeValue))
 
60865
            {return false;}
 
60866
    }
 
60867
    }
 
60868
    }
 
60869
}
 
60870
 
 
60871
 
 
60872
    return true;
 
60873
}
 
60874
 
 
60875
//---------------------------------------------------------------------
 
60876
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__point_fade_threshold_size()
 
60877
{
 
60878
#ifdef GENERATEDSAXPARSER_VALIDATION
 
60879
    if ( mValidate )
 
60880
    {
 
60881
 
 
60882
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__point_fade_threshold_size();
 
60883
        if ( !validationResult ) return false;
 
60884
 
 
60885
    } // validation
 
60886
#endif
 
60887
 
 
60888
    return true;
 
60889
}
 
60890
 
 
60891
//---------------------------------------------------------------------
 
60892
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__point_fade_threshold_size( void* attributeData )
 
60893
{
 
60894
    profile_GLES__technique__pass__states__point_fade_threshold_size__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__point_fade_threshold_size__AttributeData*>(attributeData);
 
60895
 
 
60896
    typedAttributeData->~profile_GLES__technique__pass__states__point_fade_threshold_size__AttributeData();
 
60897
 
 
60898
    return true;
 
60899
}
 
60900
 
 
60901
//---------------------------------------------------------------------
 
60902
const profile_GLES__technique__pass__states__point_size__AttributeData profile_GLES__technique__pass__states__point_size__AttributeData::DEFAULT = {1.0E0, 0};
 
60903
 
 
60904
//---------------------------------------------------------------------
 
60905
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__point_size( const ParserChar* text, size_t textLength )
 
60906
{
 
60907
    return true;
 
60908
}
 
60909
 
 
60910
//---------------------------------------------------------------------
 
60911
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__point_size( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
60912
{
 
60913
#ifdef GENERATEDSAXPARSER_VALIDATION
 
60914
    if ( mValidate )
 
60915
    {
 
60916
 
 
60917
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__point_size( attributes, attributeDataPtr, validationDataPtr );
 
60918
        if ( !validationResult ) return false;
 
60919
 
 
60920
    } // validation
 
60921
#endif
 
60922
 
 
60923
profile_GLES__technique__pass__states__point_size__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__point_size__AttributeData>(attributeDataPtr);
 
60924
 
 
60925
const ParserChar** attributeArray = attributes.attributes;
 
60926
if ( attributeArray )
 
60927
{
 
60928
    while (true)
 
60929
    {
 
60930
        const ParserChar * attribute = *attributeArray;
 
60931
        if ( !attribute )
 
60932
            break;
 
60933
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
60934
        attributeArray++;
 
60935
        if ( !attributeArray )
 
60936
            return false;
 
60937
        const ParserChar* attributeValue = *attributeArray;
 
60938
        attributeArray++;
 
60939
 
 
60940
 
 
60941
    switch ( hash )
 
60942
    {
 
60943
    case HASH_ATTRIBUTE_VALUE:
 
60944
    {
 
60945
bool failed;
 
60946
attributeData->value = GeneratedSaxParser::Utils::toFloat(attributeValue, failed);
 
60947
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
60948
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
60949
        HASH_ELEMENT_POINT_SIZE,
 
60950
        HASH_ATTRIBUTE_VALUE,
 
60951
        attributeValue))
 
60952
{
 
60953
    return false;
 
60954
}
 
60955
 
 
60956
    break;
 
60957
    }
 
60958
    case HASH_ATTRIBUTE_PARAM:
 
60959
    {
 
60960
 
 
60961
attributeData->param = attributeValue;
 
60962
#ifdef GENERATEDSAXPARSER_VALIDATION
 
60963
    if ( mValidate )
 
60964
    {
 
60965
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
60966
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
60967
    {
 
60968
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
60969
            simpleTypeValidationResult,
 
60970
            HASH_ELEMENT_POINT_SIZE,
 
60971
            HASH_ATTRIBUTE_PARAM,
 
60972
            attributeValue) )
 
60973
        {
 
60974
            return false;
 
60975
        }
 
60976
    }
 
60977
    } // validation
 
60978
#endif
 
60979
 
 
60980
    break;
 
60981
    }
 
60982
    default:
 
60983
    {
 
60984
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_POINT_SIZE, attribute, attributeValue))
 
60985
            {return false;}
 
60986
    }
 
60987
    }
 
60988
    }
 
60989
}
 
60990
 
 
60991
 
 
60992
    return true;
 
60993
}
 
60994
 
 
60995
//---------------------------------------------------------------------
 
60996
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__point_size()
 
60997
{
 
60998
#ifdef GENERATEDSAXPARSER_VALIDATION
 
60999
    if ( mValidate )
 
61000
    {
 
61001
 
 
61002
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__point_size();
 
61003
        if ( !validationResult ) return false;
 
61004
 
 
61005
    } // validation
 
61006
#endif
 
61007
 
 
61008
    return true;
 
61009
}
 
61010
 
 
61011
//---------------------------------------------------------------------
 
61012
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__point_size( void* attributeData )
 
61013
{
 
61014
    profile_GLES__technique__pass__states__point_size__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__point_size__AttributeData*>(attributeData);
 
61015
 
 
61016
    typedAttributeData->~profile_GLES__technique__pass__states__point_size__AttributeData();
 
61017
 
 
61018
    return true;
 
61019
}
 
61020
 
 
61021
//---------------------------------------------------------------------
 
61022
const profile_GLES__technique__pass__states__point_size_min__AttributeData profile_GLES__technique__pass__states__point_size_min__AttributeData::DEFAULT = {0.0E1, 0};
 
61023
 
 
61024
//---------------------------------------------------------------------
 
61025
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__point_size_min( const ParserChar* text, size_t textLength )
 
61026
{
 
61027
    return true;
 
61028
}
 
61029
 
 
61030
//---------------------------------------------------------------------
 
61031
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__point_size_min( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
61032
{
 
61033
#ifdef GENERATEDSAXPARSER_VALIDATION
 
61034
    if ( mValidate )
 
61035
    {
 
61036
 
 
61037
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__point_size_min( attributes, attributeDataPtr, validationDataPtr );
 
61038
        if ( !validationResult ) return false;
 
61039
 
 
61040
    } // validation
 
61041
#endif
 
61042
 
 
61043
profile_GLES__technique__pass__states__point_size_min__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__point_size_min__AttributeData>(attributeDataPtr);
 
61044
 
 
61045
const ParserChar** attributeArray = attributes.attributes;
 
61046
if ( attributeArray )
 
61047
{
 
61048
    while (true)
 
61049
    {
 
61050
        const ParserChar * attribute = *attributeArray;
 
61051
        if ( !attribute )
 
61052
            break;
 
61053
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
61054
        attributeArray++;
 
61055
        if ( !attributeArray )
 
61056
            return false;
 
61057
        const ParserChar* attributeValue = *attributeArray;
 
61058
        attributeArray++;
 
61059
 
 
61060
 
 
61061
    switch ( hash )
 
61062
    {
 
61063
    case HASH_ATTRIBUTE_VALUE:
 
61064
    {
 
61065
bool failed;
 
61066
attributeData->value = GeneratedSaxParser::Utils::toFloat(attributeValue, failed);
 
61067
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
61068
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
61069
        HASH_ELEMENT_POINT_SIZE_MIN,
 
61070
        HASH_ATTRIBUTE_VALUE,
 
61071
        attributeValue))
 
61072
{
 
61073
    return false;
 
61074
}
 
61075
 
 
61076
    break;
 
61077
    }
 
61078
    case HASH_ATTRIBUTE_PARAM:
 
61079
    {
 
61080
 
 
61081
attributeData->param = attributeValue;
 
61082
#ifdef GENERATEDSAXPARSER_VALIDATION
 
61083
    if ( mValidate )
 
61084
    {
 
61085
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
61086
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
61087
    {
 
61088
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
61089
            simpleTypeValidationResult,
 
61090
            HASH_ELEMENT_POINT_SIZE_MIN,
 
61091
            HASH_ATTRIBUTE_PARAM,
 
61092
            attributeValue) )
 
61093
        {
 
61094
            return false;
 
61095
        }
 
61096
    }
 
61097
    } // validation
 
61098
#endif
 
61099
 
 
61100
    break;
 
61101
    }
 
61102
    default:
 
61103
    {
 
61104
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_POINT_SIZE_MIN, attribute, attributeValue))
 
61105
            {return false;}
 
61106
    }
 
61107
    }
 
61108
    }
 
61109
}
 
61110
 
 
61111
 
 
61112
    return true;
 
61113
}
 
61114
 
 
61115
//---------------------------------------------------------------------
 
61116
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__point_size_min()
 
61117
{
 
61118
#ifdef GENERATEDSAXPARSER_VALIDATION
 
61119
    if ( mValidate )
 
61120
    {
 
61121
 
 
61122
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__point_size_min();
 
61123
        if ( !validationResult ) return false;
 
61124
 
 
61125
    } // validation
 
61126
#endif
 
61127
 
 
61128
    return true;
 
61129
}
 
61130
 
 
61131
//---------------------------------------------------------------------
 
61132
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__point_size_min( void* attributeData )
 
61133
{
 
61134
    profile_GLES__technique__pass__states__point_size_min__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__point_size_min__AttributeData*>(attributeData);
 
61135
 
 
61136
    typedAttributeData->~profile_GLES__technique__pass__states__point_size_min__AttributeData();
 
61137
 
 
61138
    return true;
 
61139
}
 
61140
 
 
61141
//---------------------------------------------------------------------
 
61142
const profile_GLES__technique__pass__states__point_size_max__AttributeData profile_GLES__technique__pass__states__point_size_max__AttributeData::DEFAULT = {1.0E0, 0};
 
61143
 
 
61144
//---------------------------------------------------------------------
 
61145
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__point_size_max( const ParserChar* text, size_t textLength )
 
61146
{
 
61147
    return true;
 
61148
}
 
61149
 
 
61150
//---------------------------------------------------------------------
 
61151
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__point_size_max( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
61152
{
 
61153
#ifdef GENERATEDSAXPARSER_VALIDATION
 
61154
    if ( mValidate )
 
61155
    {
 
61156
 
 
61157
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__point_size_max( attributes, attributeDataPtr, validationDataPtr );
 
61158
        if ( !validationResult ) return false;
 
61159
 
 
61160
    } // validation
 
61161
#endif
 
61162
 
 
61163
profile_GLES__technique__pass__states__point_size_max__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__point_size_max__AttributeData>(attributeDataPtr);
 
61164
 
 
61165
const ParserChar** attributeArray = attributes.attributes;
 
61166
if ( attributeArray )
 
61167
{
 
61168
    while (true)
 
61169
    {
 
61170
        const ParserChar * attribute = *attributeArray;
 
61171
        if ( !attribute )
 
61172
            break;
 
61173
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
61174
        attributeArray++;
 
61175
        if ( !attributeArray )
 
61176
            return false;
 
61177
        const ParserChar* attributeValue = *attributeArray;
 
61178
        attributeArray++;
 
61179
 
 
61180
 
 
61181
    switch ( hash )
 
61182
    {
 
61183
    case HASH_ATTRIBUTE_VALUE:
 
61184
    {
 
61185
bool failed;
 
61186
attributeData->value = GeneratedSaxParser::Utils::toFloat(attributeValue, failed);
 
61187
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
61188
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
61189
        HASH_ELEMENT_POINT_SIZE_MAX,
 
61190
        HASH_ATTRIBUTE_VALUE,
 
61191
        attributeValue))
 
61192
{
 
61193
    return false;
 
61194
}
 
61195
 
 
61196
    break;
 
61197
    }
 
61198
    case HASH_ATTRIBUTE_PARAM:
 
61199
    {
 
61200
 
 
61201
attributeData->param = attributeValue;
 
61202
#ifdef GENERATEDSAXPARSER_VALIDATION
 
61203
    if ( mValidate )
 
61204
    {
 
61205
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
61206
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
61207
    {
 
61208
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
61209
            simpleTypeValidationResult,
 
61210
            HASH_ELEMENT_POINT_SIZE_MAX,
 
61211
            HASH_ATTRIBUTE_PARAM,
 
61212
            attributeValue) )
 
61213
        {
 
61214
            return false;
 
61215
        }
 
61216
    }
 
61217
    } // validation
 
61218
#endif
 
61219
 
 
61220
    break;
 
61221
    }
 
61222
    default:
 
61223
    {
 
61224
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_POINT_SIZE_MAX, attribute, attributeValue))
 
61225
            {return false;}
 
61226
    }
 
61227
    }
 
61228
    }
 
61229
}
 
61230
 
 
61231
 
 
61232
    return true;
 
61233
}
 
61234
 
 
61235
//---------------------------------------------------------------------
 
61236
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__point_size_max()
 
61237
{
 
61238
#ifdef GENERATEDSAXPARSER_VALIDATION
 
61239
    if ( mValidate )
 
61240
    {
 
61241
 
 
61242
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__point_size_max();
 
61243
        if ( !validationResult ) return false;
 
61244
 
 
61245
    } // validation
 
61246
#endif
 
61247
 
 
61248
    return true;
 
61249
}
 
61250
 
 
61251
//---------------------------------------------------------------------
 
61252
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__point_size_max( void* attributeData )
 
61253
{
 
61254
    profile_GLES__technique__pass__states__point_size_max__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__point_size_max__AttributeData*>(attributeData);
 
61255
 
 
61256
    typedAttributeData->~profile_GLES__technique__pass__states__point_size_max__AttributeData();
 
61257
 
 
61258
    return true;
 
61259
}
 
61260
 
 
61261
//---------------------------------------------------------------------
 
61262
const profile_GLES__technique__pass__states__polygon_offset__AttributeData profile_GLES__technique__pass__states__polygon_offset__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<float>(), 0};
 
61263
 
 
61264
//---------------------------------------------------------------------
 
61265
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__polygon_offset( const ParserChar* text, size_t textLength )
 
61266
{
 
61267
    return true;
 
61268
}
 
61269
 
 
61270
//---------------------------------------------------------------------
 
61271
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__polygon_offset( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
61272
{
 
61273
#ifdef GENERATEDSAXPARSER_VALIDATION
 
61274
    if ( mValidate )
 
61275
    {
 
61276
 
 
61277
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__polygon_offset( attributes, attributeDataPtr, validationDataPtr );
 
61278
        if ( !validationResult ) return false;
 
61279
 
 
61280
    } // validation
 
61281
#endif
 
61282
 
 
61283
profile_GLES__technique__pass__states__polygon_offset__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__polygon_offset__AttributeData>(attributeDataPtr);
 
61284
 
 
61285
const ParserChar** attributeArray = attributes.attributes;
 
61286
if ( attributeArray )
 
61287
{
 
61288
    while (true)
 
61289
    {
 
61290
        const ParserChar * attribute = *attributeArray;
 
61291
        if ( !attribute )
 
61292
            break;
 
61293
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
61294
        attributeArray++;
 
61295
        if ( !attributeArray )
 
61296
            return false;
 
61297
        const ParserChar* attributeValue = *attributeArray;
 
61298
        attributeArray++;
 
61299
 
 
61300
 
 
61301
    switch ( hash )
 
61302
    {
 
61303
    case HASH_ATTRIBUTE_VALUE:
 
61304
    {
 
61305
bool failed;
 
61306
#ifdef GENERATEDSAXPARSER_VALIDATION
 
61307
    if ( mValidate )
 
61308
    {
 
61309
failed = !characterData2FloatList(attributeValue, attributeData->value, 0, HASH_ELEMENT_POLYGON_OFFSET, HASH_ATTRIBUTE_VALUE);
 
61310
    }
 
61311
    else
 
61312
    {
 
61313
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
61314
    }
 
61315
#else
 
61316
    {
 
61317
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
61318
    } // validation
 
61319
#endif
 
61320
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
61321
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
61322
        HASH_ELEMENT_POLYGON_OFFSET,
 
61323
        HASH_ATTRIBUTE_VALUE,
 
61324
        attributeValue))
 
61325
{
 
61326
    return false;
 
61327
}
 
61328
#ifdef GENERATEDSAXPARSER_VALIDATION
 
61329
    if ( mValidate )
 
61330
    {
 
61331
    ParserError::ErrorType simpleTypeValidationResult = validate__float2_type(attributeData->value.data, attributeData->value.size);
 
61332
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
61333
    {
 
61334
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
61335
            simpleTypeValidationResult,
 
61336
            HASH_ELEMENT_POLYGON_OFFSET,
 
61337
            HASH_ATTRIBUTE_VALUE,
 
61338
            attributeValue) )
 
61339
        {
 
61340
            return false;
 
61341
        }
 
61342
    }
 
61343
    } // validation
 
61344
#endif
 
61345
 
 
61346
if ( !failed )
 
61347
    attributeData->present_attributes |= profile_GLES__technique__pass__states__polygon_offset__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
61348
 
 
61349
    break;
 
61350
    }
 
61351
    case HASH_ATTRIBUTE_PARAM:
 
61352
    {
 
61353
 
 
61354
attributeData->param = attributeValue;
 
61355
#ifdef GENERATEDSAXPARSER_VALIDATION
 
61356
    if ( mValidate )
 
61357
    {
 
61358
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
61359
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
61360
    {
 
61361
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
61362
            simpleTypeValidationResult,
 
61363
            HASH_ELEMENT_POLYGON_OFFSET,
 
61364
            HASH_ATTRIBUTE_PARAM,
 
61365
            attributeValue) )
 
61366
        {
 
61367
            return false;
 
61368
        }
 
61369
    }
 
61370
    } // validation
 
61371
#endif
 
61372
 
 
61373
    break;
 
61374
    }
 
61375
    default:
 
61376
    {
 
61377
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_POLYGON_OFFSET, attribute, attributeValue))
 
61378
            {return false;}
 
61379
    }
 
61380
    }
 
61381
    }
 
61382
}
 
61383
if ((attributeData->present_attributes & profile_GLES__technique__pass__states__polygon_offset__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
61384
{
 
61385
    bool failed;
 
61386
    failed = !characterData2FloatList("0.0E1 0.0E1", attributeData->value);
 
61387
    if ( !failed )
 
61388
    attributeData->present_attributes |= profile_GLES__technique__pass__states__polygon_offset__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
61389
}
 
61390
 
 
61391
 
 
61392
    return true;
 
61393
}
 
61394
 
 
61395
//---------------------------------------------------------------------
 
61396
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__polygon_offset()
 
61397
{
 
61398
#ifdef GENERATEDSAXPARSER_VALIDATION
 
61399
    if ( mValidate )
 
61400
    {
 
61401
 
 
61402
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__polygon_offset();
 
61403
        if ( !validationResult ) return false;
 
61404
 
 
61405
    } // validation
 
61406
#endif
 
61407
 
 
61408
    return true;
 
61409
}
 
61410
 
 
61411
//---------------------------------------------------------------------
 
61412
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__polygon_offset( void* attributeData )
 
61413
{
 
61414
    profile_GLES__technique__pass__states__polygon_offset__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__polygon_offset__AttributeData*>(attributeData);
 
61415
    if (typedAttributeData->value.data)
 
61416
    {
 
61417
        mStackMemoryManager.deleteObject();
 
61418
    }
 
61419
 
 
61420
 
 
61421
    typedAttributeData->~profile_GLES__technique__pass__states__polygon_offset__AttributeData();
 
61422
 
 
61423
    return true;
 
61424
}
 
61425
 
 
61426
//---------------------------------------------------------------------
 
61427
const profile_GLES__technique__pass__states__projection_matrix__AttributeData profile_GLES__technique__pass__states__projection_matrix__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<float>(), 0};
 
61428
 
 
61429
//---------------------------------------------------------------------
 
61430
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__projection_matrix( const ParserChar* text, size_t textLength )
 
61431
{
 
61432
    return true;
 
61433
}
 
61434
 
 
61435
//---------------------------------------------------------------------
 
61436
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__projection_matrix( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
61437
{
 
61438
#ifdef GENERATEDSAXPARSER_VALIDATION
 
61439
    if ( mValidate )
 
61440
    {
 
61441
 
 
61442
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__projection_matrix( attributes, attributeDataPtr, validationDataPtr );
 
61443
        if ( !validationResult ) return false;
 
61444
 
 
61445
    } // validation
 
61446
#endif
 
61447
 
 
61448
profile_GLES__technique__pass__states__projection_matrix__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__projection_matrix__AttributeData>(attributeDataPtr);
 
61449
 
 
61450
const ParserChar** attributeArray = attributes.attributes;
 
61451
if ( attributeArray )
 
61452
{
 
61453
    while (true)
 
61454
    {
 
61455
        const ParserChar * attribute = *attributeArray;
 
61456
        if ( !attribute )
 
61457
            break;
 
61458
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
61459
        attributeArray++;
 
61460
        if ( !attributeArray )
 
61461
            return false;
 
61462
        const ParserChar* attributeValue = *attributeArray;
 
61463
        attributeArray++;
 
61464
 
 
61465
 
 
61466
    switch ( hash )
 
61467
    {
 
61468
    case HASH_ATTRIBUTE_VALUE:
 
61469
    {
 
61470
bool failed;
 
61471
#ifdef GENERATEDSAXPARSER_VALIDATION
 
61472
    if ( mValidate )
 
61473
    {
 
61474
failed = !characterData2FloatList(attributeValue, attributeData->value, 0, HASH_ELEMENT_PROJECTION_MATRIX, HASH_ATTRIBUTE_VALUE);
 
61475
    }
 
61476
    else
 
61477
    {
 
61478
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
61479
    }
 
61480
#else
 
61481
    {
 
61482
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
61483
    } // validation
 
61484
#endif
 
61485
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
61486
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
61487
        HASH_ELEMENT_PROJECTION_MATRIX,
 
61488
        HASH_ATTRIBUTE_VALUE,
 
61489
        attributeValue))
 
61490
{
 
61491
    return false;
 
61492
}
 
61493
#ifdef GENERATEDSAXPARSER_VALIDATION
 
61494
    if ( mValidate )
 
61495
    {
 
61496
    ParserError::ErrorType simpleTypeValidationResult = validate__float4x4_type(attributeData->value.data, attributeData->value.size);
 
61497
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
61498
    {
 
61499
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
61500
            simpleTypeValidationResult,
 
61501
            HASH_ELEMENT_PROJECTION_MATRIX,
 
61502
            HASH_ATTRIBUTE_VALUE,
 
61503
            attributeValue) )
 
61504
        {
 
61505
            return false;
 
61506
        }
 
61507
    }
 
61508
    } // validation
 
61509
#endif
 
61510
 
 
61511
if ( !failed )
 
61512
    attributeData->present_attributes |= profile_GLES__technique__pass__states__projection_matrix__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
61513
 
 
61514
    break;
 
61515
    }
 
61516
    case HASH_ATTRIBUTE_PARAM:
 
61517
    {
 
61518
 
 
61519
attributeData->param = attributeValue;
 
61520
#ifdef GENERATEDSAXPARSER_VALIDATION
 
61521
    if ( mValidate )
 
61522
    {
 
61523
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
61524
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
61525
    {
 
61526
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
61527
            simpleTypeValidationResult,
 
61528
            HASH_ELEMENT_PROJECTION_MATRIX,
 
61529
            HASH_ATTRIBUTE_PARAM,
 
61530
            attributeValue) )
 
61531
        {
 
61532
            return false;
 
61533
        }
 
61534
    }
 
61535
    } // validation
 
61536
#endif
 
61537
 
 
61538
    break;
 
61539
    }
 
61540
    default:
 
61541
    {
 
61542
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_PROJECTION_MATRIX, attribute, attributeValue))
 
61543
            {return false;}
 
61544
    }
 
61545
    }
 
61546
    }
 
61547
}
 
61548
if ((attributeData->present_attributes & profile_GLES__technique__pass__states__projection_matrix__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
61549
{
 
61550
    bool failed;
 
61551
    failed = !characterData2FloatList("1.0E0 0.0E1 0.0E1 0.0E1 0.0E1 1.0E0 0.0E1 0.0E1 0.0E1 0.0E1 1.0E0 0.0E1 0.0E1 0.0E1 0.0E1 1.0E0", attributeData->value);
 
61552
    if ( !failed )
 
61553
    attributeData->present_attributes |= profile_GLES__technique__pass__states__projection_matrix__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
61554
}
 
61555
 
 
61556
 
 
61557
    return true;
 
61558
}
 
61559
 
 
61560
//---------------------------------------------------------------------
 
61561
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__projection_matrix()
 
61562
{
 
61563
#ifdef GENERATEDSAXPARSER_VALIDATION
 
61564
    if ( mValidate )
 
61565
    {
 
61566
 
 
61567
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__projection_matrix();
 
61568
        if ( !validationResult ) return false;
 
61569
 
 
61570
    } // validation
 
61571
#endif
 
61572
 
 
61573
    return true;
 
61574
}
 
61575
 
 
61576
//---------------------------------------------------------------------
 
61577
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__projection_matrix( void* attributeData )
 
61578
{
 
61579
    profile_GLES__technique__pass__states__projection_matrix__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__projection_matrix__AttributeData*>(attributeData);
 
61580
    if (typedAttributeData->value.data)
 
61581
    {
 
61582
        mStackMemoryManager.deleteObject();
 
61583
    }
 
61584
 
 
61585
 
 
61586
    typedAttributeData->~profile_GLES__technique__pass__states__projection_matrix__AttributeData();
 
61587
 
 
61588
    return true;
 
61589
}
 
61590
 
 
61591
//---------------------------------------------------------------------
 
61592
const profile_GLES__technique__pass__states__scissor__AttributeData profile_GLES__technique__pass__states__scissor__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<sint64>(), 0};
 
61593
 
 
61594
//---------------------------------------------------------------------
 
61595
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__scissor( const ParserChar* text, size_t textLength )
 
61596
{
 
61597
    return true;
 
61598
}
 
61599
 
 
61600
//---------------------------------------------------------------------
 
61601
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__scissor( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
61602
{
 
61603
#ifdef GENERATEDSAXPARSER_VALIDATION
 
61604
    if ( mValidate )
 
61605
    {
 
61606
 
 
61607
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__scissor( attributes, attributeDataPtr, validationDataPtr );
 
61608
        if ( !validationResult ) return false;
 
61609
 
 
61610
    } // validation
 
61611
#endif
 
61612
 
 
61613
profile_GLES__technique__pass__states__scissor__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__scissor__AttributeData>(attributeDataPtr);
 
61614
 
 
61615
const ParserChar** attributeArray = attributes.attributes;
 
61616
if ( attributeArray )
 
61617
{
 
61618
    while (true)
 
61619
    {
 
61620
        const ParserChar * attribute = *attributeArray;
 
61621
        if ( !attribute )
 
61622
            break;
 
61623
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
61624
        attributeArray++;
 
61625
        if ( !attributeArray )
 
61626
            return false;
 
61627
        const ParserChar* attributeValue = *attributeArray;
 
61628
        attributeArray++;
 
61629
 
 
61630
 
 
61631
    switch ( hash )
 
61632
    {
 
61633
    case HASH_ATTRIBUTE_VALUE:
 
61634
    {
 
61635
bool failed;
 
61636
#ifdef GENERATEDSAXPARSER_VALIDATION
 
61637
    if ( mValidate )
 
61638
    {
 
61639
failed = !characterData2Sint64List(attributeValue, attributeData->value, 0, HASH_ELEMENT_SCISSOR, HASH_ATTRIBUTE_VALUE);
 
61640
    }
 
61641
    else
 
61642
    {
 
61643
failed = !characterData2Sint64List(attributeValue, attributeData->value);
 
61644
    }
 
61645
#else
 
61646
    {
 
61647
failed = !characterData2Sint64List(attributeValue, attributeData->value);
 
61648
    } // validation
 
61649
#endif
 
61650
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
61651
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
61652
        HASH_ELEMENT_SCISSOR,
 
61653
        HASH_ATTRIBUTE_VALUE,
 
61654
        attributeValue))
 
61655
{
 
61656
    return false;
 
61657
}
 
61658
#ifdef GENERATEDSAXPARSER_VALIDATION
 
61659
    if ( mValidate )
 
61660
    {
 
61661
    ParserError::ErrorType simpleTypeValidationResult = validate__int4_type(attributeData->value.data, attributeData->value.size);
 
61662
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
61663
    {
 
61664
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
61665
            simpleTypeValidationResult,
 
61666
            HASH_ELEMENT_SCISSOR,
 
61667
            HASH_ATTRIBUTE_VALUE,
 
61668
            attributeValue) )
 
61669
        {
 
61670
            return false;
 
61671
        }
 
61672
    }
 
61673
    } // validation
 
61674
#endif
 
61675
 
 
61676
if ( !failed )
 
61677
    attributeData->present_attributes |= profile_GLES__technique__pass__states__scissor__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
61678
 
 
61679
    break;
 
61680
    }
 
61681
    case HASH_ATTRIBUTE_PARAM:
 
61682
    {
 
61683
 
 
61684
attributeData->param = attributeValue;
 
61685
#ifdef GENERATEDSAXPARSER_VALIDATION
 
61686
    if ( mValidate )
 
61687
    {
 
61688
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
61689
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
61690
    {
 
61691
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
61692
            simpleTypeValidationResult,
 
61693
            HASH_ELEMENT_SCISSOR,
 
61694
            HASH_ATTRIBUTE_PARAM,
 
61695
            attributeValue) )
 
61696
        {
 
61697
            return false;
 
61698
        }
 
61699
    }
 
61700
    } // validation
 
61701
#endif
 
61702
 
 
61703
    break;
 
61704
    }
 
61705
    default:
 
61706
    {
 
61707
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SCISSOR, attribute, attributeValue))
 
61708
            {return false;}
 
61709
    }
 
61710
    }
 
61711
    }
 
61712
}
 
61713
if ((attributeData->present_attributes & profile_GLES__technique__pass__states__scissor__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
61714
{
 
61715
    attributeData->value = GeneratedSaxParser::XSList<sint64>();
 
61716
}
 
61717
 
 
61718
 
 
61719
    return true;
 
61720
}
 
61721
 
 
61722
//---------------------------------------------------------------------
 
61723
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__scissor()
 
61724
{
 
61725
#ifdef GENERATEDSAXPARSER_VALIDATION
 
61726
    if ( mValidate )
 
61727
    {
 
61728
 
 
61729
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__scissor();
 
61730
        if ( !validationResult ) return false;
 
61731
 
 
61732
    } // validation
 
61733
#endif
 
61734
 
 
61735
    return true;
 
61736
}
 
61737
 
 
61738
//---------------------------------------------------------------------
 
61739
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__scissor( void* attributeData )
 
61740
{
 
61741
    profile_GLES__technique__pass__states__scissor__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__scissor__AttributeData*>(attributeData);
 
61742
    if (typedAttributeData->value.data)
 
61743
    {
 
61744
        mStackMemoryManager.deleteObject();
 
61745
    }
 
61746
 
 
61747
 
 
61748
    typedAttributeData->~profile_GLES__technique__pass__states__scissor__AttributeData();
 
61749
 
 
61750
    return true;
 
61751
}
 
61752
 
 
61753
//---------------------------------------------------------------------
 
61754
const profile_GLES__technique__pass__states__shade_model__AttributeData profile_GLES__technique__pass__states__shade_model__AttributeData::DEFAULT = {ENUM__gl_shade_model_enum__SMOOTH, 0};
 
61755
 
 
61756
//---------------------------------------------------------------------
 
61757
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__shade_model( const ParserChar* text, size_t textLength )
 
61758
{
 
61759
    return true;
 
61760
}
 
61761
 
 
61762
//---------------------------------------------------------------------
 
61763
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__shade_model( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
61764
{
 
61765
#ifdef GENERATEDSAXPARSER_VALIDATION
 
61766
    if ( mValidate )
 
61767
    {
 
61768
 
 
61769
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__shade_model( attributes, attributeDataPtr, validationDataPtr );
 
61770
        if ( !validationResult ) return false;
 
61771
 
 
61772
    } // validation
 
61773
#endif
 
61774
 
 
61775
profile_GLES__technique__pass__states__shade_model__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__shade_model__AttributeData>(attributeDataPtr);
 
61776
 
 
61777
const ParserChar** attributeArray = attributes.attributes;
 
61778
if ( attributeArray )
 
61779
{
 
61780
    while (true)
 
61781
    {
 
61782
        const ParserChar * attribute = *attributeArray;
 
61783
        if ( !attribute )
 
61784
            break;
 
61785
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
61786
        attributeArray++;
 
61787
        if ( !attributeArray )
 
61788
            return false;
 
61789
        const ParserChar* attributeValue = *attributeArray;
 
61790
        attributeArray++;
 
61791
 
 
61792
 
 
61793
    switch ( hash )
 
61794
    {
 
61795
    case HASH_ATTRIBUTE_VALUE:
 
61796
    {
 
61797
bool failed;
 
61798
attributeData->value = Utils::toEnum<ENUM__gl_shade_model_enum, StringHash, ENUM__gl_shade_model_enum__COUNT>(attributeValue, failed, ENUM__gl_shade_model_enumMap, Utils::calculateStringHash);
 
61799
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
61800
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
61801
        HASH_ELEMENT_SHADE_MODEL,
 
61802
        HASH_ATTRIBUTE_VALUE,
 
61803
        attributeValue))
 
61804
{
 
61805
    return false;
 
61806
}
 
61807
 
 
61808
    break;
 
61809
    }
 
61810
    case HASH_ATTRIBUTE_PARAM:
 
61811
    {
 
61812
 
 
61813
attributeData->param = attributeValue;
 
61814
#ifdef GENERATEDSAXPARSER_VALIDATION
 
61815
    if ( mValidate )
 
61816
    {
 
61817
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
61818
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
61819
    {
 
61820
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
61821
            simpleTypeValidationResult,
 
61822
            HASH_ELEMENT_SHADE_MODEL,
 
61823
            HASH_ATTRIBUTE_PARAM,
 
61824
            attributeValue) )
 
61825
        {
 
61826
            return false;
 
61827
        }
 
61828
    }
 
61829
    } // validation
 
61830
#endif
 
61831
 
 
61832
    break;
 
61833
    }
 
61834
    default:
 
61835
    {
 
61836
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SHADE_MODEL, attribute, attributeValue))
 
61837
            {return false;}
 
61838
    }
 
61839
    }
 
61840
    }
 
61841
}
 
61842
 
 
61843
 
 
61844
    return true;
 
61845
}
 
61846
 
 
61847
//---------------------------------------------------------------------
 
61848
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__shade_model()
 
61849
{
 
61850
#ifdef GENERATEDSAXPARSER_VALIDATION
 
61851
    if ( mValidate )
 
61852
    {
 
61853
 
 
61854
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__shade_model();
 
61855
        if ( !validationResult ) return false;
 
61856
 
 
61857
    } // validation
 
61858
#endif
 
61859
 
 
61860
    return true;
 
61861
}
 
61862
 
 
61863
//---------------------------------------------------------------------
 
61864
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__shade_model( void* attributeData )
 
61865
{
 
61866
    profile_GLES__technique__pass__states__shade_model__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__shade_model__AttributeData*>(attributeData);
 
61867
 
 
61868
    typedAttributeData->~profile_GLES__technique__pass__states__shade_model__AttributeData();
 
61869
 
 
61870
    return true;
 
61871
}
 
61872
 
 
61873
//---------------------------------------------------------------------
 
61874
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__stencil_func( const ParserChar* text, size_t textLength )
 
61875
{
 
61876
    return true;
 
61877
}
 
61878
 
 
61879
//---------------------------------------------------------------------
 
61880
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__stencil_func( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
61881
{
 
61882
#ifdef GENERATEDSAXPARSER_VALIDATION
 
61883
    if ( mValidate )
 
61884
    {
 
61885
 
 
61886
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__stencil_func( attributes, attributeDataPtr, validationDataPtr );
 
61887
        if ( !validationResult ) return false;
 
61888
 
 
61889
    } // validation
 
61890
#endif
 
61891
 
 
61892
    return true;
 
61893
}
 
61894
 
 
61895
//---------------------------------------------------------------------
 
61896
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__stencil_func()
 
61897
{
 
61898
#ifdef GENERATEDSAXPARSER_VALIDATION
 
61899
    if ( mValidate )
 
61900
    {
 
61901
 
 
61902
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__stencil_func();
 
61903
        if ( !validationResult ) return false;
 
61904
 
 
61905
    } // validation
 
61906
#endif
 
61907
 
 
61908
    return true;
 
61909
}
 
61910
 
 
61911
//---------------------------------------------------------------------
 
61912
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__stencil_func( void* attributeData )
 
61913
{
 
61914
    return true;
 
61915
}
 
61916
 
 
61917
//---------------------------------------------------------------------
 
61918
const profile_GLES__technique__pass__states__stencil_func__func__AttributeData profile_GLES__technique__pass__states__stencil_func__func__AttributeData::DEFAULT = {ENUM__gl_func_enum__ALWAYS, 0};
 
61919
 
 
61920
//---------------------------------------------------------------------
 
61921
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__stencil_func__func( const ParserChar* text, size_t textLength )
 
61922
{
 
61923
    return true;
 
61924
}
 
61925
 
 
61926
//---------------------------------------------------------------------
 
61927
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__stencil_func__func( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
61928
{
 
61929
#ifdef GENERATEDSAXPARSER_VALIDATION
 
61930
    if ( mValidate )
 
61931
    {
 
61932
 
 
61933
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__stencil_func__func( attributes, attributeDataPtr, validationDataPtr );
 
61934
        if ( !validationResult ) return false;
 
61935
 
 
61936
    } // validation
 
61937
#endif
 
61938
 
 
61939
profile_GLES__technique__pass__states__stencil_func__func__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__stencil_func__func__AttributeData>(attributeDataPtr);
 
61940
 
 
61941
const ParserChar** attributeArray = attributes.attributes;
 
61942
if ( attributeArray )
 
61943
{
 
61944
    while (true)
 
61945
    {
 
61946
        const ParserChar * attribute = *attributeArray;
 
61947
        if ( !attribute )
 
61948
            break;
 
61949
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
61950
        attributeArray++;
 
61951
        if ( !attributeArray )
 
61952
            return false;
 
61953
        const ParserChar* attributeValue = *attributeArray;
 
61954
        attributeArray++;
 
61955
 
 
61956
 
 
61957
    switch ( hash )
 
61958
    {
 
61959
    case HASH_ATTRIBUTE_VALUE:
 
61960
    {
 
61961
bool failed;
 
61962
attributeData->value = Utils::toEnum<ENUM__gl_func_enum, StringHash, ENUM__gl_func_enum__COUNT>(attributeValue, failed, ENUM__gl_func_enumMap, Utils::calculateStringHash);
 
61963
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
61964
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
61965
        HASH_ELEMENT_FUNC,
 
61966
        HASH_ATTRIBUTE_VALUE,
 
61967
        attributeValue))
 
61968
{
 
61969
    return false;
 
61970
}
 
61971
 
 
61972
    break;
 
61973
    }
 
61974
    case HASH_ATTRIBUTE_PARAM:
 
61975
    {
 
61976
 
 
61977
attributeData->param = attributeValue;
 
61978
#ifdef GENERATEDSAXPARSER_VALIDATION
 
61979
    if ( mValidate )
 
61980
    {
 
61981
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
61982
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
61983
    {
 
61984
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
61985
            simpleTypeValidationResult,
 
61986
            HASH_ELEMENT_FUNC,
 
61987
            HASH_ATTRIBUTE_PARAM,
 
61988
            attributeValue) )
 
61989
        {
 
61990
            return false;
 
61991
        }
 
61992
    }
 
61993
    } // validation
 
61994
#endif
 
61995
 
 
61996
    break;
 
61997
    }
 
61998
    default:
 
61999
    {
 
62000
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FUNC, attribute, attributeValue))
 
62001
            {return false;}
 
62002
    }
 
62003
    }
 
62004
    }
 
62005
}
 
62006
 
 
62007
 
 
62008
    return true;
 
62009
}
 
62010
 
 
62011
//---------------------------------------------------------------------
 
62012
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__stencil_func__func()
 
62013
{
 
62014
#ifdef GENERATEDSAXPARSER_VALIDATION
 
62015
    if ( mValidate )
 
62016
    {
 
62017
 
 
62018
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__stencil_func__func();
 
62019
        if ( !validationResult ) return false;
 
62020
 
 
62021
    } // validation
 
62022
#endif
 
62023
 
 
62024
    return true;
 
62025
}
 
62026
 
 
62027
//---------------------------------------------------------------------
 
62028
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__stencil_func__func( void* attributeData )
 
62029
{
 
62030
    profile_GLES__technique__pass__states__stencil_func__func__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__stencil_func__func__AttributeData*>(attributeData);
 
62031
 
 
62032
    typedAttributeData->~profile_GLES__technique__pass__states__stencil_func__func__AttributeData();
 
62033
 
 
62034
    return true;
 
62035
}
 
62036
 
 
62037
//---------------------------------------------------------------------
 
62038
const profile_GLES__technique__pass__states__stencil_func__ref__AttributeData profile_GLES__technique__pass__states__stencil_func__ref__AttributeData::DEFAULT = {0, 0};
 
62039
 
 
62040
//---------------------------------------------------------------------
 
62041
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__stencil_func__ref( const ParserChar* text, size_t textLength )
 
62042
{
 
62043
    return true;
 
62044
}
 
62045
 
 
62046
//---------------------------------------------------------------------
 
62047
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__stencil_func__ref( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
62048
{
 
62049
#ifdef GENERATEDSAXPARSER_VALIDATION
 
62050
    if ( mValidate )
 
62051
    {
 
62052
 
 
62053
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__stencil_func__ref( attributes, attributeDataPtr, validationDataPtr );
 
62054
        if ( !validationResult ) return false;
 
62055
 
 
62056
    } // validation
 
62057
#endif
 
62058
 
 
62059
profile_GLES__technique__pass__states__stencil_func__ref__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__stencil_func__ref__AttributeData>(attributeDataPtr);
 
62060
 
 
62061
const ParserChar** attributeArray = attributes.attributes;
 
62062
if ( attributeArray )
 
62063
{
 
62064
    while (true)
 
62065
    {
 
62066
        const ParserChar * attribute = *attributeArray;
 
62067
        if ( !attribute )
 
62068
            break;
 
62069
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
62070
        attributeArray++;
 
62071
        if ( !attributeArray )
 
62072
            return false;
 
62073
        const ParserChar* attributeValue = *attributeArray;
 
62074
        attributeArray++;
 
62075
 
 
62076
 
 
62077
    switch ( hash )
 
62078
    {
 
62079
    case HASH_ATTRIBUTE_VALUE:
 
62080
    {
 
62081
bool failed;
 
62082
attributeData->value = GeneratedSaxParser::Utils::toUint8(attributeValue, failed);
 
62083
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
62084
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
62085
        HASH_ELEMENT_REF,
 
62086
        HASH_ATTRIBUTE_VALUE,
 
62087
        attributeValue))
 
62088
{
 
62089
    return false;
 
62090
}
 
62091
 
 
62092
    break;
 
62093
    }
 
62094
    case HASH_ATTRIBUTE_PARAM:
 
62095
    {
 
62096
 
 
62097
attributeData->param = attributeValue;
 
62098
#ifdef GENERATEDSAXPARSER_VALIDATION
 
62099
    if ( mValidate )
 
62100
    {
 
62101
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
62102
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
62103
    {
 
62104
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
62105
            simpleTypeValidationResult,
 
62106
            HASH_ELEMENT_REF,
 
62107
            HASH_ATTRIBUTE_PARAM,
 
62108
            attributeValue) )
 
62109
        {
 
62110
            return false;
 
62111
        }
 
62112
    }
 
62113
    } // validation
 
62114
#endif
 
62115
 
 
62116
    break;
 
62117
    }
 
62118
    default:
 
62119
    {
 
62120
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_REF, attribute, attributeValue))
 
62121
            {return false;}
 
62122
    }
 
62123
    }
 
62124
    }
 
62125
}
 
62126
 
 
62127
 
 
62128
    return true;
 
62129
}
 
62130
 
 
62131
//---------------------------------------------------------------------
 
62132
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__stencil_func__ref()
 
62133
{
 
62134
#ifdef GENERATEDSAXPARSER_VALIDATION
 
62135
    if ( mValidate )
 
62136
    {
 
62137
 
 
62138
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__stencil_func__ref();
 
62139
        if ( !validationResult ) return false;
 
62140
 
 
62141
    } // validation
 
62142
#endif
 
62143
 
 
62144
    return true;
 
62145
}
 
62146
 
 
62147
//---------------------------------------------------------------------
 
62148
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__stencil_func__ref( void* attributeData )
 
62149
{
 
62150
    profile_GLES__technique__pass__states__stencil_func__ref__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__stencil_func__ref__AttributeData*>(attributeData);
 
62151
 
 
62152
    typedAttributeData->~profile_GLES__technique__pass__states__stencil_func__ref__AttributeData();
 
62153
 
 
62154
    return true;
 
62155
}
 
62156
 
 
62157
//---------------------------------------------------------------------
 
62158
const profile_GLES__technique__pass__states__stencil_func__mask__AttributeData profile_GLES__technique__pass__states__stencil_func__mask__AttributeData::DEFAULT = {255, 0};
 
62159
 
 
62160
//---------------------------------------------------------------------
 
62161
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__stencil_func__mask( const ParserChar* text, size_t textLength )
 
62162
{
 
62163
    return true;
 
62164
}
 
62165
 
 
62166
//---------------------------------------------------------------------
 
62167
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__stencil_func__mask( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
62168
{
 
62169
#ifdef GENERATEDSAXPARSER_VALIDATION
 
62170
    if ( mValidate )
 
62171
    {
 
62172
 
 
62173
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__stencil_func__mask( attributes, attributeDataPtr, validationDataPtr );
 
62174
        if ( !validationResult ) return false;
 
62175
 
 
62176
    } // validation
 
62177
#endif
 
62178
 
 
62179
profile_GLES__technique__pass__states__stencil_func__mask__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__stencil_func__mask__AttributeData>(attributeDataPtr);
 
62180
 
 
62181
const ParserChar** attributeArray = attributes.attributes;
 
62182
if ( attributeArray )
 
62183
{
 
62184
    while (true)
 
62185
    {
 
62186
        const ParserChar * attribute = *attributeArray;
 
62187
        if ( !attribute )
 
62188
            break;
 
62189
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
62190
        attributeArray++;
 
62191
        if ( !attributeArray )
 
62192
            return false;
 
62193
        const ParserChar* attributeValue = *attributeArray;
 
62194
        attributeArray++;
 
62195
 
 
62196
 
 
62197
    switch ( hash )
 
62198
    {
 
62199
    case HASH_ATTRIBUTE_VALUE:
 
62200
    {
 
62201
bool failed;
 
62202
attributeData->value = GeneratedSaxParser::Utils::toUint8(attributeValue, failed);
 
62203
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
62204
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
62205
        HASH_ELEMENT_MASK,
 
62206
        HASH_ATTRIBUTE_VALUE,
 
62207
        attributeValue))
 
62208
{
 
62209
    return false;
 
62210
}
 
62211
 
 
62212
    break;
 
62213
    }
 
62214
    case HASH_ATTRIBUTE_PARAM:
 
62215
    {
 
62216
 
 
62217
attributeData->param = attributeValue;
 
62218
#ifdef GENERATEDSAXPARSER_VALIDATION
 
62219
    if ( mValidate )
 
62220
    {
 
62221
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
62222
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
62223
    {
 
62224
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
62225
            simpleTypeValidationResult,
 
62226
            HASH_ELEMENT_MASK,
 
62227
            HASH_ATTRIBUTE_PARAM,
 
62228
            attributeValue) )
 
62229
        {
 
62230
            return false;
 
62231
        }
 
62232
    }
 
62233
    } // validation
 
62234
#endif
 
62235
 
 
62236
    break;
 
62237
    }
 
62238
    default:
 
62239
    {
 
62240
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_MASK, attribute, attributeValue))
 
62241
            {return false;}
 
62242
    }
 
62243
    }
 
62244
    }
 
62245
}
 
62246
 
 
62247
 
 
62248
    return true;
 
62249
}
 
62250
 
 
62251
//---------------------------------------------------------------------
 
62252
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__stencil_func__mask()
 
62253
{
 
62254
#ifdef GENERATEDSAXPARSER_VALIDATION
 
62255
    if ( mValidate )
 
62256
    {
 
62257
 
 
62258
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__stencil_func__mask();
 
62259
        if ( !validationResult ) return false;
 
62260
 
 
62261
    } // validation
 
62262
#endif
 
62263
 
 
62264
    return true;
 
62265
}
 
62266
 
 
62267
//---------------------------------------------------------------------
 
62268
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__stencil_func__mask( void* attributeData )
 
62269
{
 
62270
    profile_GLES__technique__pass__states__stencil_func__mask__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__stencil_func__mask__AttributeData*>(attributeData);
 
62271
 
 
62272
    typedAttributeData->~profile_GLES__technique__pass__states__stencil_func__mask__AttributeData();
 
62273
 
 
62274
    return true;
 
62275
}
 
62276
 
 
62277
//---------------------------------------------------------------------
 
62278
const profile_GLES__technique__pass__states__stencil_mask__AttributeData profile_GLES__technique__pass__states__stencil_mask__AttributeData::DEFAULT = {4294967295ULL, 0};
 
62279
 
 
62280
//---------------------------------------------------------------------
 
62281
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__stencil_mask( const ParserChar* text, size_t textLength )
 
62282
{
 
62283
    return true;
 
62284
}
 
62285
 
 
62286
//---------------------------------------------------------------------
 
62287
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__stencil_mask( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
62288
{
 
62289
#ifdef GENERATEDSAXPARSER_VALIDATION
 
62290
    if ( mValidate )
 
62291
    {
 
62292
 
 
62293
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__stencil_mask( attributes, attributeDataPtr, validationDataPtr );
 
62294
        if ( !validationResult ) return false;
 
62295
 
 
62296
    } // validation
 
62297
#endif
 
62298
 
 
62299
profile_GLES__technique__pass__states__stencil_mask__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__stencil_mask__AttributeData>(attributeDataPtr);
 
62300
 
 
62301
const ParserChar** attributeArray = attributes.attributes;
 
62302
if ( attributeArray )
 
62303
{
 
62304
    while (true)
 
62305
    {
 
62306
        const ParserChar * attribute = *attributeArray;
 
62307
        if ( !attribute )
 
62308
            break;
 
62309
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
62310
        attributeArray++;
 
62311
        if ( !attributeArray )
 
62312
            return false;
 
62313
        const ParserChar* attributeValue = *attributeArray;
 
62314
        attributeArray++;
 
62315
 
 
62316
 
 
62317
    switch ( hash )
 
62318
    {
 
62319
    case HASH_ATTRIBUTE_VALUE:
 
62320
    {
 
62321
bool failed;
 
62322
attributeData->value = GeneratedSaxParser::Utils::toSint64(attributeValue, failed);
 
62323
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
62324
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
62325
        HASH_ELEMENT_STENCIL_MASK,
 
62326
        HASH_ATTRIBUTE_VALUE,
 
62327
        attributeValue))
 
62328
{
 
62329
    return false;
 
62330
}
 
62331
 
 
62332
    break;
 
62333
    }
 
62334
    case HASH_ATTRIBUTE_PARAM:
 
62335
    {
 
62336
 
 
62337
attributeData->param = attributeValue;
 
62338
#ifdef GENERATEDSAXPARSER_VALIDATION
 
62339
    if ( mValidate )
 
62340
    {
 
62341
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
62342
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
62343
    {
 
62344
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
62345
            simpleTypeValidationResult,
 
62346
            HASH_ELEMENT_STENCIL_MASK,
 
62347
            HASH_ATTRIBUTE_PARAM,
 
62348
            attributeValue) )
 
62349
        {
 
62350
            return false;
 
62351
        }
 
62352
    }
 
62353
    } // validation
 
62354
#endif
 
62355
 
 
62356
    break;
 
62357
    }
 
62358
    default:
 
62359
    {
 
62360
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_STENCIL_MASK, attribute, attributeValue))
 
62361
            {return false;}
 
62362
    }
 
62363
    }
 
62364
    }
 
62365
}
 
62366
 
 
62367
 
 
62368
    return true;
 
62369
}
 
62370
 
 
62371
//---------------------------------------------------------------------
 
62372
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__stencil_mask()
 
62373
{
 
62374
#ifdef GENERATEDSAXPARSER_VALIDATION
 
62375
    if ( mValidate )
 
62376
    {
 
62377
 
 
62378
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__stencil_mask();
 
62379
        if ( !validationResult ) return false;
 
62380
 
 
62381
    } // validation
 
62382
#endif
 
62383
 
 
62384
    return true;
 
62385
}
 
62386
 
 
62387
//---------------------------------------------------------------------
 
62388
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__stencil_mask( void* attributeData )
 
62389
{
 
62390
    profile_GLES__technique__pass__states__stencil_mask__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__stencil_mask__AttributeData*>(attributeData);
 
62391
 
 
62392
    typedAttributeData->~profile_GLES__technique__pass__states__stencil_mask__AttributeData();
 
62393
 
 
62394
    return true;
 
62395
}
 
62396
 
 
62397
//---------------------------------------------------------------------
 
62398
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__stencil_op( const ParserChar* text, size_t textLength )
 
62399
{
 
62400
    return true;
 
62401
}
 
62402
 
 
62403
//---------------------------------------------------------------------
 
62404
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__stencil_op( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
62405
{
 
62406
#ifdef GENERATEDSAXPARSER_VALIDATION
 
62407
    if ( mValidate )
 
62408
    {
 
62409
 
 
62410
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__stencil_op( attributes, attributeDataPtr, validationDataPtr );
 
62411
        if ( !validationResult ) return false;
 
62412
 
 
62413
    } // validation
 
62414
#endif
 
62415
 
 
62416
    return true;
 
62417
}
 
62418
 
 
62419
//---------------------------------------------------------------------
 
62420
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__stencil_op()
 
62421
{
 
62422
#ifdef GENERATEDSAXPARSER_VALIDATION
 
62423
    if ( mValidate )
 
62424
    {
 
62425
 
 
62426
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__stencil_op();
 
62427
        if ( !validationResult ) return false;
 
62428
 
 
62429
    } // validation
 
62430
#endif
 
62431
 
 
62432
    return true;
 
62433
}
 
62434
 
 
62435
//---------------------------------------------------------------------
 
62436
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__stencil_op( void* attributeData )
 
62437
{
 
62438
    return true;
 
62439
}
 
62440
 
 
62441
//---------------------------------------------------------------------
 
62442
const profile_GLES__technique__pass__states__stencil_op__fail__AttributeData profile_GLES__technique__pass__states__stencil_op__fail__AttributeData::DEFAULT = {ENUM__gles_stencil_op_enum__KEEP, 0};
 
62443
 
 
62444
//---------------------------------------------------------------------
 
62445
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__stencil_op__fail( const ParserChar* text, size_t textLength )
 
62446
{
 
62447
    return true;
 
62448
}
 
62449
 
 
62450
//---------------------------------------------------------------------
 
62451
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__stencil_op__fail( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
62452
{
 
62453
#ifdef GENERATEDSAXPARSER_VALIDATION
 
62454
    if ( mValidate )
 
62455
    {
 
62456
 
 
62457
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__stencil_op__fail( attributes, attributeDataPtr, validationDataPtr );
 
62458
        if ( !validationResult ) return false;
 
62459
 
 
62460
    } // validation
 
62461
#endif
 
62462
 
 
62463
profile_GLES__technique__pass__states__stencil_op__fail__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__stencil_op__fail__AttributeData>(attributeDataPtr);
 
62464
 
 
62465
const ParserChar** attributeArray = attributes.attributes;
 
62466
if ( attributeArray )
 
62467
{
 
62468
    while (true)
 
62469
    {
 
62470
        const ParserChar * attribute = *attributeArray;
 
62471
        if ( !attribute )
 
62472
            break;
 
62473
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
62474
        attributeArray++;
 
62475
        if ( !attributeArray )
 
62476
            return false;
 
62477
        const ParserChar* attributeValue = *attributeArray;
 
62478
        attributeArray++;
 
62479
 
 
62480
 
 
62481
    switch ( hash )
 
62482
    {
 
62483
    case HASH_ATTRIBUTE_VALUE:
 
62484
    {
 
62485
bool failed;
 
62486
attributeData->value = Utils::toEnum<ENUM__gles_stencil_op_enum, StringHash, ENUM__gles_stencil_op_enum__COUNT>(attributeValue, failed, ENUM__gles_stencil_op_enumMap, Utils::calculateStringHash);
 
62487
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
62488
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
62489
        HASH_ELEMENT_FAIL,
 
62490
        HASH_ATTRIBUTE_VALUE,
 
62491
        attributeValue))
 
62492
{
 
62493
    return false;
 
62494
}
 
62495
 
 
62496
    break;
 
62497
    }
 
62498
    case HASH_ATTRIBUTE_PARAM:
 
62499
    {
 
62500
 
 
62501
attributeData->param = attributeValue;
 
62502
#ifdef GENERATEDSAXPARSER_VALIDATION
 
62503
    if ( mValidate )
 
62504
    {
 
62505
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
62506
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
62507
    {
 
62508
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
62509
            simpleTypeValidationResult,
 
62510
            HASH_ELEMENT_FAIL,
 
62511
            HASH_ATTRIBUTE_PARAM,
 
62512
            attributeValue) )
 
62513
        {
 
62514
            return false;
 
62515
        }
 
62516
    }
 
62517
    } // validation
 
62518
#endif
 
62519
 
 
62520
    break;
 
62521
    }
 
62522
    default:
 
62523
    {
 
62524
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FAIL, attribute, attributeValue))
 
62525
            {return false;}
 
62526
    }
 
62527
    }
 
62528
    }
 
62529
}
 
62530
 
 
62531
 
 
62532
    return true;
 
62533
}
 
62534
 
 
62535
//---------------------------------------------------------------------
 
62536
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__stencil_op__fail()
 
62537
{
 
62538
#ifdef GENERATEDSAXPARSER_VALIDATION
 
62539
    if ( mValidate )
 
62540
    {
 
62541
 
 
62542
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__stencil_op__fail();
 
62543
        if ( !validationResult ) return false;
 
62544
 
 
62545
    } // validation
 
62546
#endif
 
62547
 
 
62548
    return true;
 
62549
}
 
62550
 
 
62551
//---------------------------------------------------------------------
 
62552
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__stencil_op__fail( void* attributeData )
 
62553
{
 
62554
    profile_GLES__technique__pass__states__stencil_op__fail__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__stencil_op__fail__AttributeData*>(attributeData);
 
62555
 
 
62556
    typedAttributeData->~profile_GLES__technique__pass__states__stencil_op__fail__AttributeData();
 
62557
 
 
62558
    return true;
 
62559
}
 
62560
 
 
62561
//---------------------------------------------------------------------
 
62562
ENUM__gles_stencil_op_enum ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gles_stencil_op_enum (
 
62563
    const ParserChar* prefixedBuffer,
 
62564
    const ParserChar* prefixedBufferEnd,
 
62565
    const ParserChar** buffer,
 
62566
    const ParserChar* bufferEnd,
 
62567
    bool& failed,
 
62568
    const std::pair<StringHash, ENUM__gles_stencil_op_enum>* enumMap,
 
62569
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
62570
)
 
62571
{
 
62572
    return toEnumDataPrefix<ENUM__gles_stencil_op_enum, StringHash, ENUM__gles_stencil_op_enum__COUNT, &toEnum_ENUM__gles_stencil_op_enum>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
62573
}
 
62574
 
 
62575
//---------------------------------------------------------------------
 
62576
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__gles_stencil_op_enum (
 
62577
    const ParserChar* text,
 
62578
    size_t textLength,
 
62579
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gles_stencil_op_enum*, size_t ),
 
62580
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
62581
)
 
62582
{
 
62583
    return characterData2EnumData<ENUM__gles_stencil_op_enum, StringHash, ENUM__gles_stencil_op_enum__COUNT>(text, textLength, dataFunction, ENUM__gles_stencil_op_enumMap, baseConversionFunc, &toEnum_ENUM__gles_stencil_op_enum, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gles_stencil_op_enum);
 
62584
}
 
62585
 
 
62586
//---------------------------------------------------------------------
 
62587
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__gles_stencil_op_enum (
 
62588
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gles_stencil_op_enum*, size_t ),
 
62589
    const std::pair<StringHash, ENUM__gles_stencil_op_enum>* enumMap,
 
62590
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
62591
    ENUM__gles_stencil_op_enum (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__gles_stencil_op_enum>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
62592
)
 
62593
{
 
62594
    return dataEnumEnd<ENUM__gles_stencil_op_enum, StringHash, ENUM__gles_stencil_op_enum__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
62595
}
 
62596
 
 
62597
//---------------------------------------------------------------------
 
62598
const profile_GLES__technique__pass__states__stencil_op__zfail__AttributeData profile_GLES__technique__pass__states__stencil_op__zfail__AttributeData::DEFAULT = {ENUM__gles_stencil_op_enum__KEEP, 0};
 
62599
 
 
62600
//---------------------------------------------------------------------
 
62601
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__stencil_op__zfail( const ParserChar* text, size_t textLength )
 
62602
{
 
62603
    return true;
 
62604
}
 
62605
 
 
62606
//---------------------------------------------------------------------
 
62607
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__stencil_op__zfail( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
62608
{
 
62609
#ifdef GENERATEDSAXPARSER_VALIDATION
 
62610
    if ( mValidate )
 
62611
    {
 
62612
 
 
62613
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__stencil_op__zfail( attributes, attributeDataPtr, validationDataPtr );
 
62614
        if ( !validationResult ) return false;
 
62615
 
 
62616
    } // validation
 
62617
#endif
 
62618
 
 
62619
profile_GLES__technique__pass__states__stencil_op__zfail__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__stencil_op__zfail__AttributeData>(attributeDataPtr);
 
62620
 
 
62621
const ParserChar** attributeArray = attributes.attributes;
 
62622
if ( attributeArray )
 
62623
{
 
62624
    while (true)
 
62625
    {
 
62626
        const ParserChar * attribute = *attributeArray;
 
62627
        if ( !attribute )
 
62628
            break;
 
62629
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
62630
        attributeArray++;
 
62631
        if ( !attributeArray )
 
62632
            return false;
 
62633
        const ParserChar* attributeValue = *attributeArray;
 
62634
        attributeArray++;
 
62635
 
 
62636
 
 
62637
    switch ( hash )
 
62638
    {
 
62639
    case HASH_ATTRIBUTE_VALUE:
 
62640
    {
 
62641
bool failed;
 
62642
attributeData->value = Utils::toEnum<ENUM__gles_stencil_op_enum, StringHash, ENUM__gles_stencil_op_enum__COUNT>(attributeValue, failed, ENUM__gles_stencil_op_enumMap, Utils::calculateStringHash);
 
62643
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
62644
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
62645
        HASH_ELEMENT_ZFAIL,
 
62646
        HASH_ATTRIBUTE_VALUE,
 
62647
        attributeValue))
 
62648
{
 
62649
    return false;
 
62650
}
 
62651
 
 
62652
    break;
 
62653
    }
 
62654
    case HASH_ATTRIBUTE_PARAM:
 
62655
    {
 
62656
 
 
62657
attributeData->param = attributeValue;
 
62658
#ifdef GENERATEDSAXPARSER_VALIDATION
 
62659
    if ( mValidate )
 
62660
    {
 
62661
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
62662
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
62663
    {
 
62664
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
62665
            simpleTypeValidationResult,
 
62666
            HASH_ELEMENT_ZFAIL,
 
62667
            HASH_ATTRIBUTE_PARAM,
 
62668
            attributeValue) )
 
62669
        {
 
62670
            return false;
 
62671
        }
 
62672
    }
 
62673
    } // validation
 
62674
#endif
 
62675
 
 
62676
    break;
 
62677
    }
 
62678
    default:
 
62679
    {
 
62680
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_ZFAIL, attribute, attributeValue))
 
62681
            {return false;}
 
62682
    }
 
62683
    }
 
62684
    }
 
62685
}
 
62686
 
 
62687
 
 
62688
    return true;
 
62689
}
 
62690
 
 
62691
//---------------------------------------------------------------------
 
62692
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__stencil_op__zfail()
 
62693
{
 
62694
#ifdef GENERATEDSAXPARSER_VALIDATION
 
62695
    if ( mValidate )
 
62696
    {
 
62697
 
 
62698
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__stencil_op__zfail();
 
62699
        if ( !validationResult ) return false;
 
62700
 
 
62701
    } // validation
 
62702
#endif
 
62703
 
 
62704
    return true;
 
62705
}
 
62706
 
 
62707
//---------------------------------------------------------------------
 
62708
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__stencil_op__zfail( void* attributeData )
 
62709
{
 
62710
    profile_GLES__technique__pass__states__stencil_op__zfail__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__stencil_op__zfail__AttributeData*>(attributeData);
 
62711
 
 
62712
    typedAttributeData->~profile_GLES__technique__pass__states__stencil_op__zfail__AttributeData();
 
62713
 
 
62714
    return true;
 
62715
}
 
62716
 
 
62717
//---------------------------------------------------------------------
 
62718
const profile_GLES__technique__pass__states__stencil_op__zpass__AttributeData profile_GLES__technique__pass__states__stencil_op__zpass__AttributeData::DEFAULT = {ENUM__gles_stencil_op_enum__KEEP, 0};
 
62719
 
 
62720
//---------------------------------------------------------------------
 
62721
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__stencil_op__zpass( const ParserChar* text, size_t textLength )
 
62722
{
 
62723
    return true;
 
62724
}
 
62725
 
 
62726
//---------------------------------------------------------------------
 
62727
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__stencil_op__zpass( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
62728
{
 
62729
#ifdef GENERATEDSAXPARSER_VALIDATION
 
62730
    if ( mValidate )
 
62731
    {
 
62732
 
 
62733
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__stencil_op__zpass( attributes, attributeDataPtr, validationDataPtr );
 
62734
        if ( !validationResult ) return false;
 
62735
 
 
62736
    } // validation
 
62737
#endif
 
62738
 
 
62739
profile_GLES__technique__pass__states__stencil_op__zpass__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__stencil_op__zpass__AttributeData>(attributeDataPtr);
 
62740
 
 
62741
const ParserChar** attributeArray = attributes.attributes;
 
62742
if ( attributeArray )
 
62743
{
 
62744
    while (true)
 
62745
    {
 
62746
        const ParserChar * attribute = *attributeArray;
 
62747
        if ( !attribute )
 
62748
            break;
 
62749
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
62750
        attributeArray++;
 
62751
        if ( !attributeArray )
 
62752
            return false;
 
62753
        const ParserChar* attributeValue = *attributeArray;
 
62754
        attributeArray++;
 
62755
 
 
62756
 
 
62757
    switch ( hash )
 
62758
    {
 
62759
    case HASH_ATTRIBUTE_VALUE:
 
62760
    {
 
62761
bool failed;
 
62762
attributeData->value = Utils::toEnum<ENUM__gles_stencil_op_enum, StringHash, ENUM__gles_stencil_op_enum__COUNT>(attributeValue, failed, ENUM__gles_stencil_op_enumMap, Utils::calculateStringHash);
 
62763
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
62764
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
62765
        HASH_ELEMENT_ZPASS,
 
62766
        HASH_ATTRIBUTE_VALUE,
 
62767
        attributeValue))
 
62768
{
 
62769
    return false;
 
62770
}
 
62771
 
 
62772
    break;
 
62773
    }
 
62774
    case HASH_ATTRIBUTE_PARAM:
 
62775
    {
 
62776
 
 
62777
attributeData->param = attributeValue;
 
62778
#ifdef GENERATEDSAXPARSER_VALIDATION
 
62779
    if ( mValidate )
 
62780
    {
 
62781
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
62782
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
62783
    {
 
62784
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
62785
            simpleTypeValidationResult,
 
62786
            HASH_ELEMENT_ZPASS,
 
62787
            HASH_ATTRIBUTE_PARAM,
 
62788
            attributeValue) )
 
62789
        {
 
62790
            return false;
 
62791
        }
 
62792
    }
 
62793
    } // validation
 
62794
#endif
 
62795
 
 
62796
    break;
 
62797
    }
 
62798
    default:
 
62799
    {
 
62800
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_ZPASS, attribute, attributeValue))
 
62801
            {return false;}
 
62802
    }
 
62803
    }
 
62804
    }
 
62805
}
 
62806
 
 
62807
 
 
62808
    return true;
 
62809
}
 
62810
 
 
62811
//---------------------------------------------------------------------
 
62812
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__stencil_op__zpass()
 
62813
{
 
62814
#ifdef GENERATEDSAXPARSER_VALIDATION
 
62815
    if ( mValidate )
 
62816
    {
 
62817
 
 
62818
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__stencil_op__zpass();
 
62819
        if ( !validationResult ) return false;
 
62820
 
 
62821
    } // validation
 
62822
#endif
 
62823
 
 
62824
    return true;
 
62825
}
 
62826
 
 
62827
//---------------------------------------------------------------------
 
62828
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__stencil_op__zpass( void* attributeData )
 
62829
{
 
62830
    profile_GLES__technique__pass__states__stencil_op__zpass__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__stencil_op__zpass__AttributeData*>(attributeData);
 
62831
 
 
62832
    typedAttributeData->~profile_GLES__technique__pass__states__stencil_op__zpass__AttributeData();
 
62833
 
 
62834
    return true;
 
62835
}
 
62836
 
 
62837
//---------------------------------------------------------------------
 
62838
bool ColladaParserAutoGen15Private::_data__texture_pipeline( const ParserChar* text, size_t textLength )
 
62839
{
 
62840
    return true;
 
62841
}
 
62842
 
 
62843
//---------------------------------------------------------------------
 
62844
bool ColladaParserAutoGen15Private::_preBegin__texture_pipeline( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
62845
{
 
62846
#ifdef GENERATEDSAXPARSER_VALIDATION
 
62847
    if ( mValidate )
 
62848
    {
 
62849
 
 
62850
        bool validationResult = _validateBegin__texture_pipeline( attributes, attributeDataPtr, validationDataPtr );
 
62851
        if ( !validationResult ) return false;
 
62852
 
 
62853
    } // validation
 
62854
#endif
 
62855
 
 
62856
    return true;
 
62857
}
 
62858
 
 
62859
//---------------------------------------------------------------------
 
62860
bool ColladaParserAutoGen15Private::_preEnd__texture_pipeline()
 
62861
{
 
62862
#ifdef GENERATEDSAXPARSER_VALIDATION
 
62863
    if ( mValidate )
 
62864
    {
 
62865
 
 
62866
        bool validationResult = _validateEnd__texture_pipeline();
 
62867
        if ( !validationResult ) return false;
 
62868
 
 
62869
    } // validation
 
62870
#endif
 
62871
 
 
62872
    return true;
 
62873
}
 
62874
 
 
62875
//---------------------------------------------------------------------
 
62876
bool ColladaParserAutoGen15Private::_freeAttributes__texture_pipeline( void* attributeData )
 
62877
{
 
62878
    return true;
 
62879
}
 
62880
 
 
62881
//---------------------------------------------------------------------
 
62882
const value____gles_texture_pipeline_type__AttributeData value____gles_texture_pipeline_type__AttributeData::DEFAULT = {0};
 
62883
 
 
62884
//---------------------------------------------------------------------
 
62885
bool ColladaParserAutoGen15Private::_data__value____gles_texture_pipeline_type( const ParserChar* text, size_t textLength )
 
62886
{
 
62887
    return true;
 
62888
}
 
62889
 
 
62890
//---------------------------------------------------------------------
 
62891
bool ColladaParserAutoGen15Private::_preBegin__value____gles_texture_pipeline_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
62892
{
 
62893
#ifdef GENERATEDSAXPARSER_VALIDATION
 
62894
    if ( mValidate )
 
62895
    {
 
62896
 
 
62897
        bool validationResult = _validateBegin__value____gles_texture_pipeline_type( attributes, attributeDataPtr, validationDataPtr );
 
62898
        if ( !validationResult ) return false;
 
62899
 
 
62900
    } // validation
 
62901
#endif
 
62902
 
 
62903
value____gles_texture_pipeline_type__AttributeData* attributeData = newData<value____gles_texture_pipeline_type__AttributeData>(attributeDataPtr);
 
62904
 
 
62905
const ParserChar** attributeArray = attributes.attributes;
 
62906
if ( attributeArray )
 
62907
{
 
62908
    while (true)
 
62909
    {
 
62910
        const ParserChar * attribute = *attributeArray;
 
62911
        if ( !attribute )
 
62912
            break;
 
62913
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
62914
        attributeArray++;
 
62915
        if ( !attributeArray )
 
62916
            return false;
 
62917
        const ParserChar* attributeValue = *attributeArray;
 
62918
        attributeArray++;
 
62919
 
 
62920
 
 
62921
    switch ( hash )
 
62922
    {
 
62923
    case HASH_ATTRIBUTE_SID:
 
62924
    {
 
62925
 
 
62926
attributeData->sid = attributeValue;
 
62927
#ifdef GENERATEDSAXPARSER_VALIDATION
 
62928
    if ( mValidate )
 
62929
    {
 
62930
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
62931
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
62932
    {
 
62933
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
62934
            simpleTypeValidationResult,
 
62935
            HASH_ELEMENT_VALUE,
 
62936
            HASH_ATTRIBUTE_SID,
 
62937
            attributeValue) )
 
62938
        {
 
62939
            return false;
 
62940
        }
 
62941
    }
 
62942
    } // validation
 
62943
#endif
 
62944
 
 
62945
    break;
 
62946
    }
 
62947
    default:
 
62948
    {
 
62949
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_VALUE, attribute, attributeValue))
 
62950
            {return false;}
 
62951
    }
 
62952
    }
 
62953
    }
 
62954
}
 
62955
 
 
62956
 
 
62957
    return true;
 
62958
}
 
62959
 
 
62960
//---------------------------------------------------------------------
 
62961
bool ColladaParserAutoGen15Private::_preEnd__value____gles_texture_pipeline_type()
 
62962
{
 
62963
#ifdef GENERATEDSAXPARSER_VALIDATION
 
62964
    if ( mValidate )
 
62965
    {
 
62966
 
 
62967
        bool validationResult = _validateEnd__value____gles_texture_pipeline_type();
 
62968
        if ( !validationResult ) return false;
 
62969
 
 
62970
    } // validation
 
62971
#endif
 
62972
 
 
62973
    return true;
 
62974
}
 
62975
 
 
62976
//---------------------------------------------------------------------
 
62977
bool ColladaParserAutoGen15Private::_freeAttributes__value____gles_texture_pipeline_type( void* attributeData )
 
62978
{
 
62979
    value____gles_texture_pipeline_type__AttributeData* typedAttributeData = static_cast<value____gles_texture_pipeline_type__AttributeData*>(attributeData);
 
62980
 
 
62981
    typedAttributeData->~value____gles_texture_pipeline_type__AttributeData();
 
62982
 
 
62983
    return true;
 
62984
}
 
62985
 
 
62986
//---------------------------------------------------------------------
 
62987
bool ColladaParserAutoGen15Private::_data__texcombiner( const ParserChar* text, size_t textLength )
 
62988
{
 
62989
    return true;
 
62990
}
 
62991
 
 
62992
//---------------------------------------------------------------------
 
62993
bool ColladaParserAutoGen15Private::_preBegin__texcombiner( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
62994
{
 
62995
#ifdef GENERATEDSAXPARSER_VALIDATION
 
62996
    if ( mValidate )
 
62997
    {
 
62998
 
 
62999
        bool validationResult = _validateBegin__texcombiner( attributes, attributeDataPtr, validationDataPtr );
 
63000
        if ( !validationResult ) return false;
 
63001
 
 
63002
    } // validation
 
63003
#endif
 
63004
 
 
63005
    return true;
 
63006
}
 
63007
 
 
63008
//---------------------------------------------------------------------
 
63009
bool ColladaParserAutoGen15Private::_preEnd__texcombiner()
 
63010
{
 
63011
#ifdef GENERATEDSAXPARSER_VALIDATION
 
63012
    if ( mValidate )
 
63013
    {
 
63014
 
 
63015
        bool validationResult = _validateEnd__texcombiner();
 
63016
        if ( !validationResult ) return false;
 
63017
 
 
63018
    } // validation
 
63019
#endif
 
63020
 
 
63021
    return true;
 
63022
}
 
63023
 
 
63024
//---------------------------------------------------------------------
 
63025
bool ColladaParserAutoGen15Private::_freeAttributes__texcombiner( void* attributeData )
 
63026
{
 
63027
    return true;
 
63028
}
 
63029
 
 
63030
//---------------------------------------------------------------------
 
63031
const constant____gles_texture_constant_type__AttributeData constant____gles_texture_constant_type__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<float>(), 0};
 
63032
 
 
63033
//---------------------------------------------------------------------
 
63034
bool ColladaParserAutoGen15Private::_data__constant____gles_texture_constant_type( const ParserChar* text, size_t textLength )
 
63035
{
 
63036
    return true;
 
63037
}
 
63038
 
 
63039
//---------------------------------------------------------------------
 
63040
bool ColladaParserAutoGen15Private::_preBegin__constant____gles_texture_constant_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
63041
{
 
63042
#ifdef GENERATEDSAXPARSER_VALIDATION
 
63043
    if ( mValidate )
 
63044
    {
 
63045
 
 
63046
        bool validationResult = _validateBegin__constant____gles_texture_constant_type( attributes, attributeDataPtr, validationDataPtr );
 
63047
        if ( !validationResult ) return false;
 
63048
 
 
63049
    } // validation
 
63050
#endif
 
63051
 
 
63052
constant____gles_texture_constant_type__AttributeData* attributeData = newData<constant____gles_texture_constant_type__AttributeData>(attributeDataPtr);
 
63053
 
 
63054
const ParserChar** attributeArray = attributes.attributes;
 
63055
if ( attributeArray )
 
63056
{
 
63057
    while (true)
 
63058
    {
 
63059
        const ParserChar * attribute = *attributeArray;
 
63060
        if ( !attribute )
 
63061
            break;
 
63062
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
63063
        attributeArray++;
 
63064
        if ( !attributeArray )
 
63065
            return false;
 
63066
        const ParserChar* attributeValue = *attributeArray;
 
63067
        attributeArray++;
 
63068
 
 
63069
 
 
63070
    switch ( hash )
 
63071
    {
 
63072
    case HASH_ATTRIBUTE_VALUE:
 
63073
    {
 
63074
bool failed;
 
63075
#ifdef GENERATEDSAXPARSER_VALIDATION
 
63076
    if ( mValidate )
 
63077
    {
 
63078
failed = !characterData2FloatList(attributeValue, attributeData->value, 0, HASH_ELEMENT_CONSTANT, HASH_ATTRIBUTE_VALUE);
 
63079
    }
 
63080
    else
 
63081
    {
 
63082
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
63083
    }
 
63084
#else
 
63085
    {
 
63086
failed = !characterData2FloatList(attributeValue, attributeData->value);
 
63087
    } // validation
 
63088
#endif
 
63089
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
63090
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
63091
        HASH_ELEMENT_CONSTANT,
 
63092
        HASH_ATTRIBUTE_VALUE,
 
63093
        attributeValue))
 
63094
{
 
63095
    return false;
 
63096
}
 
63097
#ifdef GENERATEDSAXPARSER_VALIDATION
 
63098
    if ( mValidate )
 
63099
    {
 
63100
    ParserError::ErrorType simpleTypeValidationResult = validate__float4_type(attributeData->value.data, attributeData->value.size);
 
63101
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
63102
    {
 
63103
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
63104
            simpleTypeValidationResult,
 
63105
            HASH_ELEMENT_CONSTANT,
 
63106
            HASH_ATTRIBUTE_VALUE,
 
63107
            attributeValue) )
 
63108
        {
 
63109
            return false;
 
63110
        }
 
63111
    }
 
63112
    } // validation
 
63113
#endif
 
63114
 
 
63115
if ( !failed )
 
63116
    attributeData->present_attributes |= constant____gles_texture_constant_type__AttributeData::ATTRIBUTE_VALUE_PRESENT;
 
63117
 
 
63118
    break;
 
63119
    }
 
63120
    case HASH_ATTRIBUTE_PARAM:
 
63121
    {
 
63122
 
 
63123
attributeData->param = attributeValue;
 
63124
#ifdef GENERATEDSAXPARSER_VALIDATION
 
63125
    if ( mValidate )
 
63126
    {
 
63127
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
63128
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
63129
    {
 
63130
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
63131
            simpleTypeValidationResult,
 
63132
            HASH_ELEMENT_CONSTANT,
 
63133
            HASH_ATTRIBUTE_PARAM,
 
63134
            attributeValue) )
 
63135
        {
 
63136
            return false;
 
63137
        }
 
63138
    }
 
63139
    } // validation
 
63140
#endif
 
63141
 
 
63142
    break;
 
63143
    }
 
63144
    default:
 
63145
    {
 
63146
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_CONSTANT, attribute, attributeValue))
 
63147
            {return false;}
 
63148
    }
 
63149
    }
 
63150
    }
 
63151
}
 
63152
if ((attributeData->present_attributes & constant____gles_texture_constant_type__AttributeData::ATTRIBUTE_VALUE_PRESENT) == 0)
 
63153
{
 
63154
    attributeData->value = GeneratedSaxParser::XSList<float>();
 
63155
}
 
63156
 
 
63157
 
 
63158
    return true;
 
63159
}
 
63160
 
 
63161
//---------------------------------------------------------------------
 
63162
bool ColladaParserAutoGen15Private::_preEnd__constant____gles_texture_constant_type()
 
63163
{
 
63164
#ifdef GENERATEDSAXPARSER_VALIDATION
 
63165
    if ( mValidate )
 
63166
    {
 
63167
 
 
63168
        bool validationResult = _validateEnd__constant____gles_texture_constant_type();
 
63169
        if ( !validationResult ) return false;
 
63170
 
 
63171
    } // validation
 
63172
#endif
 
63173
 
 
63174
    return true;
 
63175
}
 
63176
 
 
63177
//---------------------------------------------------------------------
 
63178
bool ColladaParserAutoGen15Private::_freeAttributes__constant____gles_texture_constant_type( void* attributeData )
 
63179
{
 
63180
    constant____gles_texture_constant_type__AttributeData* typedAttributeData = static_cast<constant____gles_texture_constant_type__AttributeData*>(attributeData);
 
63181
    if (typedAttributeData->value.data)
 
63182
    {
 
63183
        mStackMemoryManager.deleteObject();
 
63184
    }
 
63185
 
 
63186
 
 
63187
    typedAttributeData->~constant____gles_texture_constant_type__AttributeData();
 
63188
 
 
63189
    return true;
 
63190
}
 
63191
 
 
63192
//---------------------------------------------------------------------
 
63193
const RGB__AttributeData RGB__AttributeData::DEFAULT = {0, ENUM__gles_texcombiner_operator_rgb_enum__NOT_PRESENT, 0};
 
63194
 
 
63195
//---------------------------------------------------------------------
 
63196
bool ColladaParserAutoGen15Private::_data__RGB( const ParserChar* text, size_t textLength )
 
63197
{
 
63198
    return true;
 
63199
}
 
63200
 
 
63201
//---------------------------------------------------------------------
 
63202
bool ColladaParserAutoGen15Private::_preBegin__RGB( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
63203
{
 
63204
#ifdef GENERATEDSAXPARSER_VALIDATION
 
63205
    if ( mValidate )
 
63206
    {
 
63207
 
 
63208
        bool validationResult = _validateBegin__RGB( attributes, attributeDataPtr, validationDataPtr );
 
63209
        if ( !validationResult ) return false;
 
63210
 
 
63211
    } // validation
 
63212
#endif
 
63213
 
 
63214
RGB__AttributeData* attributeData = newData<RGB__AttributeData>(attributeDataPtr);
 
63215
 
 
63216
const ParserChar** attributeArray = attributes.attributes;
 
63217
if ( attributeArray )
 
63218
{
 
63219
    while (true)
 
63220
    {
 
63221
        const ParserChar * attribute = *attributeArray;
 
63222
        if ( !attribute )
 
63223
            break;
 
63224
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
63225
        attributeArray++;
 
63226
        if ( !attributeArray )
 
63227
            return false;
 
63228
        const ParserChar* attributeValue = *attributeArray;
 
63229
        attributeArray++;
 
63230
 
 
63231
 
 
63232
    switch ( hash )
 
63233
    {
 
63234
    case HASH_ATTRIBUTE_OPERATOR:
 
63235
    {
 
63236
bool failed;
 
63237
attributeData->_operator = Utils::toEnum<ENUM__gles_texcombiner_operator_rgb_enum, StringHash, ENUM__gles_texcombiner_operator_rgb_enum__COUNT>(attributeValue, failed, ENUM__gles_texcombiner_operator_rgb_enumMap, Utils::calculateStringHash);
 
63238
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
63239
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
63240
        HASH_ELEMENT_RGB,
 
63241
        HASH_ATTRIBUTE_OPERATOR,
 
63242
        attributeValue))
 
63243
{
 
63244
    return false;
 
63245
}
 
63246
 
 
63247
    break;
 
63248
    }
 
63249
    case HASH_ATTRIBUTE_SCALE:
 
63250
    {
 
63251
bool failed;
 
63252
attributeData->scale = GeneratedSaxParser::Utils::toFloat(attributeValue, failed);
 
63253
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
63254
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
63255
        HASH_ELEMENT_RGB,
 
63256
        HASH_ATTRIBUTE_SCALE,
 
63257
        attributeValue))
 
63258
{
 
63259
    return false;
 
63260
}
 
63261
if ( !failed )
 
63262
    attributeData->present_attributes |= RGB__AttributeData::ATTRIBUTE_SCALE_PRESENT;
 
63263
 
 
63264
    break;
 
63265
    }
 
63266
    default:
 
63267
    {
 
63268
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_RGB, attribute, attributeValue))
 
63269
            {return false;}
 
63270
    }
 
63271
    }
 
63272
    }
 
63273
}
 
63274
 
 
63275
 
 
63276
    return true;
 
63277
}
 
63278
 
 
63279
//---------------------------------------------------------------------
 
63280
bool ColladaParserAutoGen15Private::_preEnd__RGB()
 
63281
{
 
63282
#ifdef GENERATEDSAXPARSER_VALIDATION
 
63283
    if ( mValidate )
 
63284
    {
 
63285
 
 
63286
        bool validationResult = _validateEnd__RGB();
 
63287
        if ( !validationResult ) return false;
 
63288
 
 
63289
    } // validation
 
63290
#endif
 
63291
 
 
63292
    return true;
 
63293
}
 
63294
 
 
63295
//---------------------------------------------------------------------
 
63296
bool ColladaParserAutoGen15Private::_freeAttributes__RGB( void* attributeData )
 
63297
{
 
63298
    RGB__AttributeData* typedAttributeData = static_cast<RGB__AttributeData*>(attributeData);
 
63299
 
 
63300
    typedAttributeData->~RGB__AttributeData();
 
63301
 
 
63302
    return true;
 
63303
}
 
63304
 
 
63305
//---------------------------------------------------------------------
 
63306
ENUM__gles_texcombiner_operator_rgb_enum ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gles_texcombiner_operator_rgb_enum (
 
63307
    const ParserChar* prefixedBuffer,
 
63308
    const ParserChar* prefixedBufferEnd,
 
63309
    const ParserChar** buffer,
 
63310
    const ParserChar* bufferEnd,
 
63311
    bool& failed,
 
63312
    const std::pair<StringHash, ENUM__gles_texcombiner_operator_rgb_enum>* enumMap,
 
63313
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
63314
)
 
63315
{
 
63316
    return toEnumDataPrefix<ENUM__gles_texcombiner_operator_rgb_enum, StringHash, ENUM__gles_texcombiner_operator_rgb_enum__COUNT, &toEnum_ENUM__gles_texcombiner_operator_rgb_enum>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
63317
}
 
63318
 
 
63319
//---------------------------------------------------------------------
 
63320
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__gles_texcombiner_operator_rgb_enum (
 
63321
    const ParserChar* text,
 
63322
    size_t textLength,
 
63323
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gles_texcombiner_operator_rgb_enum*, size_t ),
 
63324
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
63325
)
 
63326
{
 
63327
    return characterData2EnumData<ENUM__gles_texcombiner_operator_rgb_enum, StringHash, ENUM__gles_texcombiner_operator_rgb_enum__COUNT>(text, textLength, dataFunction, ENUM__gles_texcombiner_operator_rgb_enumMap, baseConversionFunc, &toEnum_ENUM__gles_texcombiner_operator_rgb_enum, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gles_texcombiner_operator_rgb_enum);
 
63328
}
 
63329
 
 
63330
//---------------------------------------------------------------------
 
63331
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__gles_texcombiner_operator_rgb_enum (
 
63332
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gles_texcombiner_operator_rgb_enum*, size_t ),
 
63333
    const std::pair<StringHash, ENUM__gles_texcombiner_operator_rgb_enum>* enumMap,
 
63334
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
63335
    ENUM__gles_texcombiner_operator_rgb_enum (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__gles_texcombiner_operator_rgb_enum>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
63336
)
 
63337
{
 
63338
    return dataEnumEnd<ENUM__gles_texcombiner_operator_rgb_enum, StringHash, ENUM__gles_texcombiner_operator_rgb_enum__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
63339
}
 
63340
 
 
63341
//---------------------------------------------------------------------
 
63342
const argument____gles_texcombiner_argument_rgb_type__AttributeData argument____gles_texcombiner_argument_rgb_type__AttributeData::DEFAULT = {ENUM__gles_texcombiner_source_enum__NOT_PRESENT, ENUM__gles_texcombiner_operand_rgb_enum__SRC_COLOR, 0};
 
63343
 
 
63344
//---------------------------------------------------------------------
 
63345
bool ColladaParserAutoGen15Private::_data__argument____gles_texcombiner_argument_rgb_type( const ParserChar* text, size_t textLength )
 
63346
{
 
63347
    return true;
 
63348
}
 
63349
 
 
63350
//---------------------------------------------------------------------
 
63351
bool ColladaParserAutoGen15Private::_preBegin__argument____gles_texcombiner_argument_rgb_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
63352
{
 
63353
#ifdef GENERATEDSAXPARSER_VALIDATION
 
63354
    if ( mValidate )
 
63355
    {
 
63356
 
 
63357
        bool validationResult = _validateBegin__argument____gles_texcombiner_argument_rgb_type( attributes, attributeDataPtr, validationDataPtr );
 
63358
        if ( !validationResult ) return false;
 
63359
 
 
63360
    } // validation
 
63361
#endif
 
63362
 
 
63363
argument____gles_texcombiner_argument_rgb_type__AttributeData* attributeData = newData<argument____gles_texcombiner_argument_rgb_type__AttributeData>(attributeDataPtr);
 
63364
 
 
63365
const ParserChar** attributeArray = attributes.attributes;
 
63366
if ( attributeArray )
 
63367
{
 
63368
    while (true)
 
63369
    {
 
63370
        const ParserChar * attribute = *attributeArray;
 
63371
        if ( !attribute )
 
63372
            break;
 
63373
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
63374
        attributeArray++;
 
63375
        if ( !attributeArray )
 
63376
            return false;
 
63377
        const ParserChar* attributeValue = *attributeArray;
 
63378
        attributeArray++;
 
63379
 
 
63380
 
 
63381
    switch ( hash )
 
63382
    {
 
63383
    case HASH_ATTRIBUTE_SOURCE:
 
63384
    {
 
63385
bool failed;
 
63386
attributeData->source = Utils::toEnum<ENUM__gles_texcombiner_source_enum, StringHash, ENUM__gles_texcombiner_source_enum__COUNT>(attributeValue, failed, ENUM__gles_texcombiner_source_enumMap, Utils::calculateStringHash);
 
63387
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
63388
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
63389
        HASH_ELEMENT_ARGUMENT,
 
63390
        HASH_ATTRIBUTE_SOURCE,
 
63391
        attributeValue))
 
63392
{
 
63393
    return false;
 
63394
}
 
63395
 
 
63396
    break;
 
63397
    }
 
63398
    case HASH_ATTRIBUTE_OPERAND:
 
63399
    {
 
63400
bool failed;
 
63401
attributeData->operand = Utils::toEnum<ENUM__gles_texcombiner_operand_rgb_enum, StringHash, ENUM__gles_texcombiner_operand_rgb_enum__COUNT>(attributeValue, failed, ENUM__gles_texcombiner_operand_rgb_enumMap, Utils::calculateStringHash);
 
63402
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
63403
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
63404
        HASH_ELEMENT_ARGUMENT,
 
63405
        HASH_ATTRIBUTE_OPERAND,
 
63406
        attributeValue))
 
63407
{
 
63408
    return false;
 
63409
}
 
63410
 
 
63411
    break;
 
63412
    }
 
63413
    case HASH_ATTRIBUTE_SAMPLER:
 
63414
    {
 
63415
 
 
63416
attributeData->sampler = attributeValue;
 
63417
#ifdef GENERATEDSAXPARSER_VALIDATION
 
63418
    if ( mValidate )
 
63419
    {
 
63420
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->sampler, strlen(attributeData->sampler));
 
63421
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
63422
    {
 
63423
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
63424
            simpleTypeValidationResult,
 
63425
            HASH_ELEMENT_ARGUMENT,
 
63426
            HASH_ATTRIBUTE_SAMPLER,
 
63427
            attributeValue) )
 
63428
        {
 
63429
            return false;
 
63430
        }
 
63431
    }
 
63432
    } // validation
 
63433
#endif
 
63434
 
 
63435
    break;
 
63436
    }
 
63437
    default:
 
63438
    {
 
63439
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_ARGUMENT, attribute, attributeValue))
 
63440
            {return false;}
 
63441
    }
 
63442
    }
 
63443
    }
 
63444
}
 
63445
 
 
63446
 
 
63447
    return true;
 
63448
}
 
63449
 
 
63450
//---------------------------------------------------------------------
 
63451
bool ColladaParserAutoGen15Private::_preEnd__argument____gles_texcombiner_argument_rgb_type()
 
63452
{
 
63453
#ifdef GENERATEDSAXPARSER_VALIDATION
 
63454
    if ( mValidate )
 
63455
    {
 
63456
 
 
63457
        bool validationResult = _validateEnd__argument____gles_texcombiner_argument_rgb_type();
 
63458
        if ( !validationResult ) return false;
 
63459
 
 
63460
    } // validation
 
63461
#endif
 
63462
 
 
63463
    return true;
 
63464
}
 
63465
 
 
63466
//---------------------------------------------------------------------
 
63467
bool ColladaParserAutoGen15Private::_freeAttributes__argument____gles_texcombiner_argument_rgb_type( void* attributeData )
 
63468
{
 
63469
    argument____gles_texcombiner_argument_rgb_type__AttributeData* typedAttributeData = static_cast<argument____gles_texcombiner_argument_rgb_type__AttributeData*>(attributeData);
 
63470
 
 
63471
    typedAttributeData->~argument____gles_texcombiner_argument_rgb_type__AttributeData();
 
63472
 
 
63473
    return true;
 
63474
}
 
63475
 
 
63476
//---------------------------------------------------------------------
 
63477
ENUM__gles_texcombiner_source_enum ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gles_texcombiner_source_enum (
 
63478
    const ParserChar* prefixedBuffer,
 
63479
    const ParserChar* prefixedBufferEnd,
 
63480
    const ParserChar** buffer,
 
63481
    const ParserChar* bufferEnd,
 
63482
    bool& failed,
 
63483
    const std::pair<StringHash, ENUM__gles_texcombiner_source_enum>* enumMap,
 
63484
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
63485
)
 
63486
{
 
63487
    return toEnumDataPrefix<ENUM__gles_texcombiner_source_enum, StringHash, ENUM__gles_texcombiner_source_enum__COUNT, &toEnum_ENUM__gles_texcombiner_source_enum>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
63488
}
 
63489
 
 
63490
//---------------------------------------------------------------------
 
63491
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__gles_texcombiner_source_enum (
 
63492
    const ParserChar* text,
 
63493
    size_t textLength,
 
63494
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gles_texcombiner_source_enum*, size_t ),
 
63495
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
63496
)
 
63497
{
 
63498
    return characterData2EnumData<ENUM__gles_texcombiner_source_enum, StringHash, ENUM__gles_texcombiner_source_enum__COUNT>(text, textLength, dataFunction, ENUM__gles_texcombiner_source_enumMap, baseConversionFunc, &toEnum_ENUM__gles_texcombiner_source_enum, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gles_texcombiner_source_enum);
 
63499
}
 
63500
 
 
63501
//---------------------------------------------------------------------
 
63502
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__gles_texcombiner_source_enum (
 
63503
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gles_texcombiner_source_enum*, size_t ),
 
63504
    const std::pair<StringHash, ENUM__gles_texcombiner_source_enum>* enumMap,
 
63505
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
63506
    ENUM__gles_texcombiner_source_enum (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__gles_texcombiner_source_enum>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
63507
)
 
63508
{
 
63509
    return dataEnumEnd<ENUM__gles_texcombiner_source_enum, StringHash, ENUM__gles_texcombiner_source_enum__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
63510
}
 
63511
 
 
63512
//---------------------------------------------------------------------
 
63513
ENUM__gles_texcombiner_operand_rgb_enum ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gles_texcombiner_operand_rgb_enum (
 
63514
    const ParserChar* prefixedBuffer,
 
63515
    const ParserChar* prefixedBufferEnd,
 
63516
    const ParserChar** buffer,
 
63517
    const ParserChar* bufferEnd,
 
63518
    bool& failed,
 
63519
    const std::pair<StringHash, ENUM__gles_texcombiner_operand_rgb_enum>* enumMap,
 
63520
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
63521
)
 
63522
{
 
63523
    return toEnumDataPrefix<ENUM__gles_texcombiner_operand_rgb_enum, StringHash, ENUM__gles_texcombiner_operand_rgb_enum__COUNT, &toEnum_ENUM__gles_texcombiner_operand_rgb_enum>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
63524
}
 
63525
 
 
63526
//---------------------------------------------------------------------
 
63527
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__gles_texcombiner_operand_rgb_enum (
 
63528
    const ParserChar* text,
 
63529
    size_t textLength,
 
63530
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gles_texcombiner_operand_rgb_enum*, size_t ),
 
63531
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
63532
)
 
63533
{
 
63534
    return characterData2EnumData<ENUM__gles_texcombiner_operand_rgb_enum, StringHash, ENUM__gles_texcombiner_operand_rgb_enum__COUNT>(text, textLength, dataFunction, ENUM__gles_texcombiner_operand_rgb_enumMap, baseConversionFunc, &toEnum_ENUM__gles_texcombiner_operand_rgb_enum, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gles_texcombiner_operand_rgb_enum);
 
63535
}
 
63536
 
 
63537
//---------------------------------------------------------------------
 
63538
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__gles_texcombiner_operand_rgb_enum (
 
63539
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gles_texcombiner_operand_rgb_enum*, size_t ),
 
63540
    const std::pair<StringHash, ENUM__gles_texcombiner_operand_rgb_enum>* enumMap,
 
63541
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
63542
    ENUM__gles_texcombiner_operand_rgb_enum (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__gles_texcombiner_operand_rgb_enum>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
63543
)
 
63544
{
 
63545
    return dataEnumEnd<ENUM__gles_texcombiner_operand_rgb_enum, StringHash, ENUM__gles_texcombiner_operand_rgb_enum__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
63546
}
 
63547
 
 
63548
//---------------------------------------------------------------------
 
63549
const alpha____gles_texcombiner_command_alpha_type__AttributeData alpha____gles_texcombiner_command_alpha_type__AttributeData::DEFAULT = {0, ENUM__gles_texcombiner_operator_alpha_enum__NOT_PRESENT, 0};
 
63550
 
 
63551
//---------------------------------------------------------------------
 
63552
bool ColladaParserAutoGen15Private::_data__alpha____gles_texcombiner_command_alpha_type( const ParserChar* text, size_t textLength )
 
63553
{
 
63554
    return true;
 
63555
}
 
63556
 
 
63557
//---------------------------------------------------------------------
 
63558
bool ColladaParserAutoGen15Private::_preBegin__alpha____gles_texcombiner_command_alpha_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
63559
{
 
63560
#ifdef GENERATEDSAXPARSER_VALIDATION
 
63561
    if ( mValidate )
 
63562
    {
 
63563
 
 
63564
        bool validationResult = _validateBegin__alpha____gles_texcombiner_command_alpha_type( attributes, attributeDataPtr, validationDataPtr );
 
63565
        if ( !validationResult ) return false;
 
63566
 
 
63567
    } // validation
 
63568
#endif
 
63569
 
 
63570
alpha____gles_texcombiner_command_alpha_type__AttributeData* attributeData = newData<alpha____gles_texcombiner_command_alpha_type__AttributeData>(attributeDataPtr);
 
63571
 
 
63572
const ParserChar** attributeArray = attributes.attributes;
 
63573
if ( attributeArray )
 
63574
{
 
63575
    while (true)
 
63576
    {
 
63577
        const ParserChar * attribute = *attributeArray;
 
63578
        if ( !attribute )
 
63579
            break;
 
63580
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
63581
        attributeArray++;
 
63582
        if ( !attributeArray )
 
63583
            return false;
 
63584
        const ParserChar* attributeValue = *attributeArray;
 
63585
        attributeArray++;
 
63586
 
 
63587
 
 
63588
    switch ( hash )
 
63589
    {
 
63590
    case HASH_ATTRIBUTE_OPERATOR:
 
63591
    {
 
63592
bool failed;
 
63593
attributeData->_operator = Utils::toEnum<ENUM__gles_texcombiner_operator_alpha_enum, StringHash, ENUM__gles_texcombiner_operator_alpha_enum__COUNT>(attributeValue, failed, ENUM__gles_texcombiner_operator_alpha_enumMap, Utils::calculateStringHash);
 
63594
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
63595
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
63596
        HASH_ELEMENT_ALPHA,
 
63597
        HASH_ATTRIBUTE_OPERATOR,
 
63598
        attributeValue))
 
63599
{
 
63600
    return false;
 
63601
}
 
63602
 
 
63603
    break;
 
63604
    }
 
63605
    case HASH_ATTRIBUTE_SCALE:
 
63606
    {
 
63607
bool failed;
 
63608
attributeData->scale = GeneratedSaxParser::Utils::toFloat(attributeValue, failed);
 
63609
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
63610
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
63611
        HASH_ELEMENT_ALPHA,
 
63612
        HASH_ATTRIBUTE_SCALE,
 
63613
        attributeValue))
 
63614
{
 
63615
    return false;
 
63616
}
 
63617
if ( !failed )
 
63618
    attributeData->present_attributes |= alpha____gles_texcombiner_command_alpha_type__AttributeData::ATTRIBUTE_SCALE_PRESENT;
 
63619
 
 
63620
    break;
 
63621
    }
 
63622
    default:
 
63623
    {
 
63624
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_ALPHA, attribute, attributeValue))
 
63625
            {return false;}
 
63626
    }
 
63627
    }
 
63628
    }
 
63629
}
 
63630
 
 
63631
 
 
63632
    return true;
 
63633
}
 
63634
 
 
63635
//---------------------------------------------------------------------
 
63636
bool ColladaParserAutoGen15Private::_preEnd__alpha____gles_texcombiner_command_alpha_type()
 
63637
{
 
63638
#ifdef GENERATEDSAXPARSER_VALIDATION
 
63639
    if ( mValidate )
 
63640
    {
 
63641
 
 
63642
        bool validationResult = _validateEnd__alpha____gles_texcombiner_command_alpha_type();
 
63643
        if ( !validationResult ) return false;
 
63644
 
 
63645
    } // validation
 
63646
#endif
 
63647
 
 
63648
    return true;
 
63649
}
 
63650
 
 
63651
//---------------------------------------------------------------------
 
63652
bool ColladaParserAutoGen15Private::_freeAttributes__alpha____gles_texcombiner_command_alpha_type( void* attributeData )
 
63653
{
 
63654
    alpha____gles_texcombiner_command_alpha_type__AttributeData* typedAttributeData = static_cast<alpha____gles_texcombiner_command_alpha_type__AttributeData*>(attributeData);
 
63655
 
 
63656
    typedAttributeData->~alpha____gles_texcombiner_command_alpha_type__AttributeData();
 
63657
 
 
63658
    return true;
 
63659
}
 
63660
 
 
63661
//---------------------------------------------------------------------
 
63662
ENUM__gles_texcombiner_operator_alpha_enum ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gles_texcombiner_operator_alpha_enum (
 
63663
    const ParserChar* prefixedBuffer,
 
63664
    const ParserChar* prefixedBufferEnd,
 
63665
    const ParserChar** buffer,
 
63666
    const ParserChar* bufferEnd,
 
63667
    bool& failed,
 
63668
    const std::pair<StringHash, ENUM__gles_texcombiner_operator_alpha_enum>* enumMap,
 
63669
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
63670
)
 
63671
{
 
63672
    return toEnumDataPrefix<ENUM__gles_texcombiner_operator_alpha_enum, StringHash, ENUM__gles_texcombiner_operator_alpha_enum__COUNT, &toEnum_ENUM__gles_texcombiner_operator_alpha_enum>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
63673
}
 
63674
 
 
63675
//---------------------------------------------------------------------
 
63676
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__gles_texcombiner_operator_alpha_enum (
 
63677
    const ParserChar* text,
 
63678
    size_t textLength,
 
63679
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gles_texcombiner_operator_alpha_enum*, size_t ),
 
63680
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
63681
)
 
63682
{
 
63683
    return characterData2EnumData<ENUM__gles_texcombiner_operator_alpha_enum, StringHash, ENUM__gles_texcombiner_operator_alpha_enum__COUNT>(text, textLength, dataFunction, ENUM__gles_texcombiner_operator_alpha_enumMap, baseConversionFunc, &toEnum_ENUM__gles_texcombiner_operator_alpha_enum, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gles_texcombiner_operator_alpha_enum);
 
63684
}
 
63685
 
 
63686
//---------------------------------------------------------------------
 
63687
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__gles_texcombiner_operator_alpha_enum (
 
63688
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gles_texcombiner_operator_alpha_enum*, size_t ),
 
63689
    const std::pair<StringHash, ENUM__gles_texcombiner_operator_alpha_enum>* enumMap,
 
63690
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
63691
    ENUM__gles_texcombiner_operator_alpha_enum (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__gles_texcombiner_operator_alpha_enum>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
63692
)
 
63693
{
 
63694
    return dataEnumEnd<ENUM__gles_texcombiner_operator_alpha_enum, StringHash, ENUM__gles_texcombiner_operator_alpha_enum__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
63695
}
 
63696
 
 
63697
//---------------------------------------------------------------------
 
63698
const argument____gles_texcombiner_argument_alpha_type__AttributeData argument____gles_texcombiner_argument_alpha_type__AttributeData::DEFAULT = {ENUM__gles_texcombiner_source_enum__NOT_PRESENT, ENUM__gles_texcombiner_operand_alpha_enum__SRC_ALPHA, 0};
 
63699
 
 
63700
//---------------------------------------------------------------------
 
63701
bool ColladaParserAutoGen15Private::_data__argument____gles_texcombiner_argument_alpha_type( const ParserChar* text, size_t textLength )
 
63702
{
 
63703
    return true;
 
63704
}
 
63705
 
 
63706
//---------------------------------------------------------------------
 
63707
bool ColladaParserAutoGen15Private::_preBegin__argument____gles_texcombiner_argument_alpha_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
63708
{
 
63709
#ifdef GENERATEDSAXPARSER_VALIDATION
 
63710
    if ( mValidate )
 
63711
    {
 
63712
 
 
63713
        bool validationResult = _validateBegin__argument____gles_texcombiner_argument_alpha_type( attributes, attributeDataPtr, validationDataPtr );
 
63714
        if ( !validationResult ) return false;
 
63715
 
 
63716
    } // validation
 
63717
#endif
 
63718
 
 
63719
argument____gles_texcombiner_argument_alpha_type__AttributeData* attributeData = newData<argument____gles_texcombiner_argument_alpha_type__AttributeData>(attributeDataPtr);
 
63720
 
 
63721
const ParserChar** attributeArray = attributes.attributes;
 
63722
if ( attributeArray )
 
63723
{
 
63724
    while (true)
 
63725
    {
 
63726
        const ParserChar * attribute = *attributeArray;
 
63727
        if ( !attribute )
 
63728
            break;
 
63729
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
63730
        attributeArray++;
 
63731
        if ( !attributeArray )
 
63732
            return false;
 
63733
        const ParserChar* attributeValue = *attributeArray;
 
63734
        attributeArray++;
 
63735
 
 
63736
 
 
63737
    switch ( hash )
 
63738
    {
 
63739
    case HASH_ATTRIBUTE_SOURCE:
 
63740
    {
 
63741
bool failed;
 
63742
attributeData->source = Utils::toEnum<ENUM__gles_texcombiner_source_enum, StringHash, ENUM__gles_texcombiner_source_enum__COUNT>(attributeValue, failed, ENUM__gles_texcombiner_source_enumMap, Utils::calculateStringHash);
 
63743
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
63744
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
63745
        HASH_ELEMENT_ARGUMENT,
 
63746
        HASH_ATTRIBUTE_SOURCE,
 
63747
        attributeValue))
 
63748
{
 
63749
    return false;
 
63750
}
 
63751
 
 
63752
    break;
 
63753
    }
 
63754
    case HASH_ATTRIBUTE_OPERAND:
 
63755
    {
 
63756
bool failed;
 
63757
attributeData->operand = Utils::toEnum<ENUM__gles_texcombiner_operand_alpha_enum, StringHash, ENUM__gles_texcombiner_operand_alpha_enum__COUNT>(attributeValue, failed, ENUM__gles_texcombiner_operand_alpha_enumMap, Utils::calculateStringHash);
 
63758
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
63759
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
63760
        HASH_ELEMENT_ARGUMENT,
 
63761
        HASH_ATTRIBUTE_OPERAND,
 
63762
        attributeValue))
 
63763
{
 
63764
    return false;
 
63765
}
 
63766
 
 
63767
    break;
 
63768
    }
 
63769
    case HASH_ATTRIBUTE_SAMPLER:
 
63770
    {
 
63771
 
 
63772
attributeData->sampler = attributeValue;
 
63773
#ifdef GENERATEDSAXPARSER_VALIDATION
 
63774
    if ( mValidate )
 
63775
    {
 
63776
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->sampler, strlen(attributeData->sampler));
 
63777
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
63778
    {
 
63779
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
63780
            simpleTypeValidationResult,
 
63781
            HASH_ELEMENT_ARGUMENT,
 
63782
            HASH_ATTRIBUTE_SAMPLER,
 
63783
            attributeValue) )
 
63784
        {
 
63785
            return false;
 
63786
        }
 
63787
    }
 
63788
    } // validation
 
63789
#endif
 
63790
 
 
63791
    break;
 
63792
    }
 
63793
    default:
 
63794
    {
 
63795
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_ARGUMENT, attribute, attributeValue))
 
63796
            {return false;}
 
63797
    }
 
63798
    }
 
63799
    }
 
63800
}
 
63801
 
 
63802
 
 
63803
    return true;
 
63804
}
 
63805
 
 
63806
//---------------------------------------------------------------------
 
63807
bool ColladaParserAutoGen15Private::_preEnd__argument____gles_texcombiner_argument_alpha_type()
 
63808
{
 
63809
#ifdef GENERATEDSAXPARSER_VALIDATION
 
63810
    if ( mValidate )
 
63811
    {
 
63812
 
 
63813
        bool validationResult = _validateEnd__argument____gles_texcombiner_argument_alpha_type();
 
63814
        if ( !validationResult ) return false;
 
63815
 
 
63816
    } // validation
 
63817
#endif
 
63818
 
 
63819
    return true;
 
63820
}
 
63821
 
 
63822
//---------------------------------------------------------------------
 
63823
bool ColladaParserAutoGen15Private::_freeAttributes__argument____gles_texcombiner_argument_alpha_type( void* attributeData )
 
63824
{
 
63825
    argument____gles_texcombiner_argument_alpha_type__AttributeData* typedAttributeData = static_cast<argument____gles_texcombiner_argument_alpha_type__AttributeData*>(attributeData);
 
63826
 
 
63827
    typedAttributeData->~argument____gles_texcombiner_argument_alpha_type__AttributeData();
 
63828
 
 
63829
    return true;
 
63830
}
 
63831
 
 
63832
//---------------------------------------------------------------------
 
63833
ENUM__gles_texcombiner_operand_alpha_enum ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gles_texcombiner_operand_alpha_enum (
 
63834
    const ParserChar* prefixedBuffer,
 
63835
    const ParserChar* prefixedBufferEnd,
 
63836
    const ParserChar** buffer,
 
63837
    const ParserChar* bufferEnd,
 
63838
    bool& failed,
 
63839
    const std::pair<StringHash, ENUM__gles_texcombiner_operand_alpha_enum>* enumMap,
 
63840
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
63841
)
 
63842
{
 
63843
    return toEnumDataPrefix<ENUM__gles_texcombiner_operand_alpha_enum, StringHash, ENUM__gles_texcombiner_operand_alpha_enum__COUNT, &toEnum_ENUM__gles_texcombiner_operand_alpha_enum>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
63844
}
 
63845
 
 
63846
//---------------------------------------------------------------------
 
63847
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__gles_texcombiner_operand_alpha_enum (
 
63848
    const ParserChar* text,
 
63849
    size_t textLength,
 
63850
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gles_texcombiner_operand_alpha_enum*, size_t ),
 
63851
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
63852
)
 
63853
{
 
63854
    return characterData2EnumData<ENUM__gles_texcombiner_operand_alpha_enum, StringHash, ENUM__gles_texcombiner_operand_alpha_enum__COUNT>(text, textLength, dataFunction, ENUM__gles_texcombiner_operand_alpha_enumMap, baseConversionFunc, &toEnum_ENUM__gles_texcombiner_operand_alpha_enum, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gles_texcombiner_operand_alpha_enum);
 
63855
}
 
63856
 
 
63857
//---------------------------------------------------------------------
 
63858
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__gles_texcombiner_operand_alpha_enum (
 
63859
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gles_texcombiner_operand_alpha_enum*, size_t ),
 
63860
    const std::pair<StringHash, ENUM__gles_texcombiner_operand_alpha_enum>* enumMap,
 
63861
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
63862
    ENUM__gles_texcombiner_operand_alpha_enum (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__gles_texcombiner_operand_alpha_enum>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
63863
)
 
63864
{
 
63865
    return dataEnumEnd<ENUM__gles_texcombiner_operand_alpha_enum, StringHash, ENUM__gles_texcombiner_operand_alpha_enum__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
63866
}
 
63867
 
 
63868
//---------------------------------------------------------------------
 
63869
const texenv__AttributeData texenv__AttributeData::DEFAULT = {ENUM__gles_texenv_mode_enum__NOT_PRESENT, 0};
 
63870
 
 
63871
//---------------------------------------------------------------------
 
63872
bool ColladaParserAutoGen15Private::_data__texenv( const ParserChar* text, size_t textLength )
 
63873
{
 
63874
    return true;
 
63875
}
 
63876
 
 
63877
//---------------------------------------------------------------------
 
63878
bool ColladaParserAutoGen15Private::_preBegin__texenv( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
63879
{
 
63880
#ifdef GENERATEDSAXPARSER_VALIDATION
 
63881
    if ( mValidate )
 
63882
    {
 
63883
 
 
63884
        bool validationResult = _validateBegin__texenv( attributes, attributeDataPtr, validationDataPtr );
 
63885
        if ( !validationResult ) return false;
 
63886
 
 
63887
    } // validation
 
63888
#endif
 
63889
 
 
63890
texenv__AttributeData* attributeData = newData<texenv__AttributeData>(attributeDataPtr);
 
63891
 
 
63892
const ParserChar** attributeArray = attributes.attributes;
 
63893
if ( attributeArray )
 
63894
{
 
63895
    while (true)
 
63896
    {
 
63897
        const ParserChar * attribute = *attributeArray;
 
63898
        if ( !attribute )
 
63899
            break;
 
63900
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
63901
        attributeArray++;
 
63902
        if ( !attributeArray )
 
63903
            return false;
 
63904
        const ParserChar* attributeValue = *attributeArray;
 
63905
        attributeArray++;
 
63906
 
 
63907
 
 
63908
    switch ( hash )
 
63909
    {
 
63910
    case HASH_ATTRIBUTE_OPERATOR:
 
63911
    {
 
63912
bool failed;
 
63913
attributeData->_operator = Utils::toEnum<ENUM__gles_texenv_mode_enum, StringHash, ENUM__gles_texenv_mode_enum__COUNT>(attributeValue, failed, ENUM__gles_texenv_mode_enumMap, Utils::calculateStringHash);
 
63914
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
63915
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
63916
        HASH_ELEMENT_TEXENV,
 
63917
        HASH_ATTRIBUTE_OPERATOR,
 
63918
        attributeValue))
 
63919
{
 
63920
    return false;
 
63921
}
 
63922
 
 
63923
    break;
 
63924
    }
 
63925
    case HASH_ATTRIBUTE_SAMPLER:
 
63926
    {
 
63927
 
 
63928
attributeData->sampler = attributeValue;
 
63929
#ifdef GENERATEDSAXPARSER_VALIDATION
 
63930
    if ( mValidate )
 
63931
    {
 
63932
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->sampler, strlen(attributeData->sampler));
 
63933
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
63934
    {
 
63935
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
63936
            simpleTypeValidationResult,
 
63937
            HASH_ELEMENT_TEXENV,
 
63938
            HASH_ATTRIBUTE_SAMPLER,
 
63939
            attributeValue) )
 
63940
        {
 
63941
            return false;
 
63942
        }
 
63943
    }
 
63944
    } // validation
 
63945
#endif
 
63946
 
 
63947
    break;
 
63948
    }
 
63949
    default:
 
63950
    {
 
63951
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_TEXENV, attribute, attributeValue))
 
63952
            {return false;}
 
63953
    }
 
63954
    }
 
63955
    }
 
63956
}
 
63957
 
 
63958
 
 
63959
    return true;
 
63960
}
 
63961
 
 
63962
//---------------------------------------------------------------------
 
63963
bool ColladaParserAutoGen15Private::_preEnd__texenv()
 
63964
{
 
63965
#ifdef GENERATEDSAXPARSER_VALIDATION
 
63966
    if ( mValidate )
 
63967
    {
 
63968
 
 
63969
        bool validationResult = _validateEnd__texenv();
 
63970
        if ( !validationResult ) return false;
 
63971
 
 
63972
    } // validation
 
63973
#endif
 
63974
 
 
63975
    return true;
 
63976
}
 
63977
 
 
63978
//---------------------------------------------------------------------
 
63979
bool ColladaParserAutoGen15Private::_freeAttributes__texenv( void* attributeData )
 
63980
{
 
63981
    texenv__AttributeData* typedAttributeData = static_cast<texenv__AttributeData*>(attributeData);
 
63982
 
 
63983
    typedAttributeData->~texenv__AttributeData();
 
63984
 
 
63985
    return true;
 
63986
}
 
63987
 
 
63988
//---------------------------------------------------------------------
 
63989
ENUM__gles_texenv_mode_enum ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gles_texenv_mode_enum (
 
63990
    const ParserChar* prefixedBuffer,
 
63991
    const ParserChar* prefixedBufferEnd,
 
63992
    const ParserChar** buffer,
 
63993
    const ParserChar* bufferEnd,
 
63994
    bool& failed,
 
63995
    const std::pair<StringHash, ENUM__gles_texenv_mode_enum>* enumMap,
 
63996
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
63997
)
 
63998
{
 
63999
    return toEnumDataPrefix<ENUM__gles_texenv_mode_enum, StringHash, ENUM__gles_texenv_mode_enum__COUNT, &toEnum_ENUM__gles_texenv_mode_enum>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
64000
}
 
64001
 
 
64002
//---------------------------------------------------------------------
 
64003
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__gles_texenv_mode_enum (
 
64004
    const ParserChar* text,
 
64005
    size_t textLength,
 
64006
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gles_texenv_mode_enum*, size_t ),
 
64007
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
64008
)
 
64009
{
 
64010
    return characterData2EnumData<ENUM__gles_texenv_mode_enum, StringHash, ENUM__gles_texenv_mode_enum__COUNT>(text, textLength, dataFunction, ENUM__gles_texenv_mode_enumMap, baseConversionFunc, &toEnum_ENUM__gles_texenv_mode_enum, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__gles_texenv_mode_enum);
 
64011
}
 
64012
 
 
64013
//---------------------------------------------------------------------
 
64014
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__gles_texenv_mode_enum (
 
64015
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__gles_texenv_mode_enum*, size_t ),
 
64016
    const std::pair<StringHash, ENUM__gles_texenv_mode_enum>* enumMap,
 
64017
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
64018
    ENUM__gles_texenv_mode_enum (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__gles_texenv_mode_enum>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
64019
)
 
64020
{
 
64021
    return dataEnumEnd<ENUM__gles_texenv_mode_enum, StringHash, ENUM__gles_texenv_mode_enum__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
64022
}
 
64023
 
 
64024
//---------------------------------------------------------------------
 
64025
const profile_GLES__technique__pass__states__alpha_test_enable__AttributeData profile_GLES__technique__pass__states__alpha_test_enable__AttributeData::DEFAULT = {false, 0};
 
64026
 
 
64027
//---------------------------------------------------------------------
 
64028
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__alpha_test_enable( const ParserChar* text, size_t textLength )
 
64029
{
 
64030
    return true;
 
64031
}
 
64032
 
 
64033
//---------------------------------------------------------------------
 
64034
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__alpha_test_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
64035
{
 
64036
#ifdef GENERATEDSAXPARSER_VALIDATION
 
64037
    if ( mValidate )
 
64038
    {
 
64039
 
 
64040
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__alpha_test_enable( attributes, attributeDataPtr, validationDataPtr );
 
64041
        if ( !validationResult ) return false;
 
64042
 
 
64043
    } // validation
 
64044
#endif
 
64045
 
 
64046
profile_GLES__technique__pass__states__alpha_test_enable__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__alpha_test_enable__AttributeData>(attributeDataPtr);
 
64047
 
 
64048
const ParserChar** attributeArray = attributes.attributes;
 
64049
if ( attributeArray )
 
64050
{
 
64051
    while (true)
 
64052
    {
 
64053
        const ParserChar * attribute = *attributeArray;
 
64054
        if ( !attribute )
 
64055
            break;
 
64056
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
64057
        attributeArray++;
 
64058
        if ( !attributeArray )
 
64059
            return false;
 
64060
        const ParserChar* attributeValue = *attributeArray;
 
64061
        attributeArray++;
 
64062
 
 
64063
 
 
64064
    switch ( hash )
 
64065
    {
 
64066
    case HASH_ATTRIBUTE_VALUE:
 
64067
    {
 
64068
bool failed;
 
64069
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
64070
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
64071
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
64072
        HASH_ELEMENT_ALPHA_TEST_ENABLE,
 
64073
        HASH_ATTRIBUTE_VALUE,
 
64074
        attributeValue))
 
64075
{
 
64076
    return false;
 
64077
}
 
64078
 
 
64079
    break;
 
64080
    }
 
64081
    case HASH_ATTRIBUTE_PARAM:
 
64082
    {
 
64083
 
 
64084
attributeData->param = attributeValue;
 
64085
#ifdef GENERATEDSAXPARSER_VALIDATION
 
64086
    if ( mValidate )
 
64087
    {
 
64088
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
64089
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
64090
    {
 
64091
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
64092
            simpleTypeValidationResult,
 
64093
            HASH_ELEMENT_ALPHA_TEST_ENABLE,
 
64094
            HASH_ATTRIBUTE_PARAM,
 
64095
            attributeValue) )
 
64096
        {
 
64097
            return false;
 
64098
        }
 
64099
    }
 
64100
    } // validation
 
64101
#endif
 
64102
 
 
64103
    break;
 
64104
    }
 
64105
    default:
 
64106
    {
 
64107
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_ALPHA_TEST_ENABLE, attribute, attributeValue))
 
64108
            {return false;}
 
64109
    }
 
64110
    }
 
64111
    }
 
64112
}
 
64113
 
 
64114
 
 
64115
    return true;
 
64116
}
 
64117
 
 
64118
//---------------------------------------------------------------------
 
64119
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__alpha_test_enable()
 
64120
{
 
64121
#ifdef GENERATEDSAXPARSER_VALIDATION
 
64122
    if ( mValidate )
 
64123
    {
 
64124
 
 
64125
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__alpha_test_enable();
 
64126
        if ( !validationResult ) return false;
 
64127
 
 
64128
    } // validation
 
64129
#endif
 
64130
 
 
64131
    return true;
 
64132
}
 
64133
 
 
64134
//---------------------------------------------------------------------
 
64135
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__alpha_test_enable( void* attributeData )
 
64136
{
 
64137
    profile_GLES__technique__pass__states__alpha_test_enable__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__alpha_test_enable__AttributeData*>(attributeData);
 
64138
 
 
64139
    typedAttributeData->~profile_GLES__technique__pass__states__alpha_test_enable__AttributeData();
 
64140
 
 
64141
    return true;
 
64142
}
 
64143
 
 
64144
//---------------------------------------------------------------------
 
64145
const profile_GLES__technique__pass__states__blend_enable__AttributeData profile_GLES__technique__pass__states__blend_enable__AttributeData::DEFAULT = {false, 0};
 
64146
 
 
64147
//---------------------------------------------------------------------
 
64148
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__blend_enable( const ParserChar* text, size_t textLength )
 
64149
{
 
64150
    return true;
 
64151
}
 
64152
 
 
64153
//---------------------------------------------------------------------
 
64154
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__blend_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
64155
{
 
64156
#ifdef GENERATEDSAXPARSER_VALIDATION
 
64157
    if ( mValidate )
 
64158
    {
 
64159
 
 
64160
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__blend_enable( attributes, attributeDataPtr, validationDataPtr );
 
64161
        if ( !validationResult ) return false;
 
64162
 
 
64163
    } // validation
 
64164
#endif
 
64165
 
 
64166
profile_GLES__technique__pass__states__blend_enable__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__blend_enable__AttributeData>(attributeDataPtr);
 
64167
 
 
64168
const ParserChar** attributeArray = attributes.attributes;
 
64169
if ( attributeArray )
 
64170
{
 
64171
    while (true)
 
64172
    {
 
64173
        const ParserChar * attribute = *attributeArray;
 
64174
        if ( !attribute )
 
64175
            break;
 
64176
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
64177
        attributeArray++;
 
64178
        if ( !attributeArray )
 
64179
            return false;
 
64180
        const ParserChar* attributeValue = *attributeArray;
 
64181
        attributeArray++;
 
64182
 
 
64183
 
 
64184
    switch ( hash )
 
64185
    {
 
64186
    case HASH_ATTRIBUTE_VALUE:
 
64187
    {
 
64188
bool failed;
 
64189
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
64190
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
64191
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
64192
        HASH_ELEMENT_BLEND_ENABLE,
 
64193
        HASH_ATTRIBUTE_VALUE,
 
64194
        attributeValue))
 
64195
{
 
64196
    return false;
 
64197
}
 
64198
 
 
64199
    break;
 
64200
    }
 
64201
    case HASH_ATTRIBUTE_PARAM:
 
64202
    {
 
64203
 
 
64204
attributeData->param = attributeValue;
 
64205
#ifdef GENERATEDSAXPARSER_VALIDATION
 
64206
    if ( mValidate )
 
64207
    {
 
64208
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
64209
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
64210
    {
 
64211
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
64212
            simpleTypeValidationResult,
 
64213
            HASH_ELEMENT_BLEND_ENABLE,
 
64214
            HASH_ATTRIBUTE_PARAM,
 
64215
            attributeValue) )
 
64216
        {
 
64217
            return false;
 
64218
        }
 
64219
    }
 
64220
    } // validation
 
64221
#endif
 
64222
 
 
64223
    break;
 
64224
    }
 
64225
    default:
 
64226
    {
 
64227
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_BLEND_ENABLE, attribute, attributeValue))
 
64228
            {return false;}
 
64229
    }
 
64230
    }
 
64231
    }
 
64232
}
 
64233
 
 
64234
 
 
64235
    return true;
 
64236
}
 
64237
 
 
64238
//---------------------------------------------------------------------
 
64239
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__blend_enable()
 
64240
{
 
64241
#ifdef GENERATEDSAXPARSER_VALIDATION
 
64242
    if ( mValidate )
 
64243
    {
 
64244
 
 
64245
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__blend_enable();
 
64246
        if ( !validationResult ) return false;
 
64247
 
 
64248
    } // validation
 
64249
#endif
 
64250
 
 
64251
    return true;
 
64252
}
 
64253
 
 
64254
//---------------------------------------------------------------------
 
64255
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__blend_enable( void* attributeData )
 
64256
{
 
64257
    profile_GLES__technique__pass__states__blend_enable__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__blend_enable__AttributeData*>(attributeData);
 
64258
 
 
64259
    typedAttributeData->~profile_GLES__technique__pass__states__blend_enable__AttributeData();
 
64260
 
 
64261
    return true;
 
64262
}
 
64263
 
 
64264
//---------------------------------------------------------------------
 
64265
const profile_GLES__technique__pass__states__clip_plane_enable__AttributeData profile_GLES__technique__pass__states__clip_plane_enable__AttributeData::DEFAULT = {0, false, 0, 0};
 
64266
 
 
64267
//---------------------------------------------------------------------
 
64268
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__clip_plane_enable( const ParserChar* text, size_t textLength )
 
64269
{
 
64270
    return true;
 
64271
}
 
64272
 
 
64273
//---------------------------------------------------------------------
 
64274
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__clip_plane_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
64275
{
 
64276
#ifdef GENERATEDSAXPARSER_VALIDATION
 
64277
    if ( mValidate )
 
64278
    {
 
64279
 
 
64280
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__clip_plane_enable( attributes, attributeDataPtr, validationDataPtr );
 
64281
        if ( !validationResult ) return false;
 
64282
 
 
64283
    } // validation
 
64284
#endif
 
64285
 
 
64286
profile_GLES__technique__pass__states__clip_plane_enable__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__clip_plane_enable__AttributeData>(attributeDataPtr);
 
64287
 
 
64288
const ParserChar** attributeArray = attributes.attributes;
 
64289
if ( attributeArray )
 
64290
{
 
64291
    while (true)
 
64292
    {
 
64293
        const ParserChar * attribute = *attributeArray;
 
64294
        if ( !attribute )
 
64295
            break;
 
64296
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
64297
        attributeArray++;
 
64298
        if ( !attributeArray )
 
64299
            return false;
 
64300
        const ParserChar* attributeValue = *attributeArray;
 
64301
        attributeArray++;
 
64302
 
 
64303
 
 
64304
    switch ( hash )
 
64305
    {
 
64306
    case HASH_ATTRIBUTE_VALUE:
 
64307
    {
 
64308
bool failed;
 
64309
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
64310
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
64311
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
64312
        HASH_ELEMENT_CLIP_PLANE_ENABLE,
 
64313
        HASH_ATTRIBUTE_VALUE,
 
64314
        attributeValue))
 
64315
{
 
64316
    return false;
 
64317
}
 
64318
 
 
64319
    break;
 
64320
    }
 
64321
    case HASH_ATTRIBUTE_PARAM:
 
64322
    {
 
64323
 
 
64324
attributeData->param = attributeValue;
 
64325
#ifdef GENERATEDSAXPARSER_VALIDATION
 
64326
    if ( mValidate )
 
64327
    {
 
64328
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
64329
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
64330
    {
 
64331
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
64332
            simpleTypeValidationResult,
 
64333
            HASH_ELEMENT_CLIP_PLANE_ENABLE,
 
64334
            HASH_ATTRIBUTE_PARAM,
 
64335
            attributeValue) )
 
64336
        {
 
64337
            return false;
 
64338
        }
 
64339
    }
 
64340
    } // validation
 
64341
#endif
 
64342
 
 
64343
    break;
 
64344
    }
 
64345
    case HASH_ATTRIBUTE_INDEX:
 
64346
    {
 
64347
bool failed;
 
64348
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
64349
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
64350
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
64351
        HASH_ELEMENT_CLIP_PLANE_ENABLE,
 
64352
        HASH_ATTRIBUTE_INDEX,
 
64353
        attributeValue))
 
64354
{
 
64355
    return false;
 
64356
}
 
64357
#ifdef GENERATEDSAXPARSER_VALIDATION
 
64358
    if ( mValidate )
 
64359
    {
 
64360
    ParserError::ErrorType simpleTypeValidationResult = validate__gles_max_clip_planes_index_type(attributeData->index);
 
64361
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
64362
    {
 
64363
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
64364
            simpleTypeValidationResult,
 
64365
            HASH_ELEMENT_CLIP_PLANE_ENABLE,
 
64366
            HASH_ATTRIBUTE_INDEX,
 
64367
            attributeValue) )
 
64368
        {
 
64369
            return false;
 
64370
        }
 
64371
    }
 
64372
    } // validation
 
64373
#endif
 
64374
if ( !failed )
 
64375
    attributeData->present_attributes |= profile_GLES__technique__pass__states__clip_plane_enable__AttributeData::ATTRIBUTE_INDEX_PRESENT;
 
64376
 
 
64377
    break;
 
64378
    }
 
64379
    default:
 
64380
    {
 
64381
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_CLIP_PLANE_ENABLE, attribute, attributeValue))
 
64382
            {return false;}
 
64383
    }
 
64384
    }
 
64385
    }
 
64386
}
 
64387
 
 
64388
 
 
64389
    return true;
 
64390
}
 
64391
 
 
64392
//---------------------------------------------------------------------
 
64393
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__clip_plane_enable()
 
64394
{
 
64395
#ifdef GENERATEDSAXPARSER_VALIDATION
 
64396
    if ( mValidate )
 
64397
    {
 
64398
 
 
64399
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__clip_plane_enable();
 
64400
        if ( !validationResult ) return false;
 
64401
 
 
64402
    } // validation
 
64403
#endif
 
64404
 
 
64405
    return true;
 
64406
}
 
64407
 
 
64408
//---------------------------------------------------------------------
 
64409
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__clip_plane_enable( void* attributeData )
 
64410
{
 
64411
    profile_GLES__technique__pass__states__clip_plane_enable__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__clip_plane_enable__AttributeData*>(attributeData);
 
64412
 
 
64413
    typedAttributeData->~profile_GLES__technique__pass__states__clip_plane_enable__AttributeData();
 
64414
 
 
64415
    return true;
 
64416
}
 
64417
 
 
64418
//---------------------------------------------------------------------
 
64419
const profile_GLES__technique__pass__states__color_logic_op_enable__AttributeData profile_GLES__technique__pass__states__color_logic_op_enable__AttributeData::DEFAULT = {false, 0};
 
64420
 
 
64421
//---------------------------------------------------------------------
 
64422
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__color_logic_op_enable( const ParserChar* text, size_t textLength )
 
64423
{
 
64424
    return true;
 
64425
}
 
64426
 
 
64427
//---------------------------------------------------------------------
 
64428
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__color_logic_op_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
64429
{
 
64430
#ifdef GENERATEDSAXPARSER_VALIDATION
 
64431
    if ( mValidate )
 
64432
    {
 
64433
 
 
64434
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__color_logic_op_enable( attributes, attributeDataPtr, validationDataPtr );
 
64435
        if ( !validationResult ) return false;
 
64436
 
 
64437
    } // validation
 
64438
#endif
 
64439
 
 
64440
profile_GLES__technique__pass__states__color_logic_op_enable__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__color_logic_op_enable__AttributeData>(attributeDataPtr);
 
64441
 
 
64442
const ParserChar** attributeArray = attributes.attributes;
 
64443
if ( attributeArray )
 
64444
{
 
64445
    while (true)
 
64446
    {
 
64447
        const ParserChar * attribute = *attributeArray;
 
64448
        if ( !attribute )
 
64449
            break;
 
64450
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
64451
        attributeArray++;
 
64452
        if ( !attributeArray )
 
64453
            return false;
 
64454
        const ParserChar* attributeValue = *attributeArray;
 
64455
        attributeArray++;
 
64456
 
 
64457
 
 
64458
    switch ( hash )
 
64459
    {
 
64460
    case HASH_ATTRIBUTE_VALUE:
 
64461
    {
 
64462
bool failed;
 
64463
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
64464
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
64465
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
64466
        HASH_ELEMENT_COLOR_LOGIC_OP_ENABLE,
 
64467
        HASH_ATTRIBUTE_VALUE,
 
64468
        attributeValue))
 
64469
{
 
64470
    return false;
 
64471
}
 
64472
 
 
64473
    break;
 
64474
    }
 
64475
    case HASH_ATTRIBUTE_PARAM:
 
64476
    {
 
64477
 
 
64478
attributeData->param = attributeValue;
 
64479
#ifdef GENERATEDSAXPARSER_VALIDATION
 
64480
    if ( mValidate )
 
64481
    {
 
64482
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
64483
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
64484
    {
 
64485
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
64486
            simpleTypeValidationResult,
 
64487
            HASH_ELEMENT_COLOR_LOGIC_OP_ENABLE,
 
64488
            HASH_ATTRIBUTE_PARAM,
 
64489
            attributeValue) )
 
64490
        {
 
64491
            return false;
 
64492
        }
 
64493
    }
 
64494
    } // validation
 
64495
#endif
 
64496
 
 
64497
    break;
 
64498
    }
 
64499
    default:
 
64500
    {
 
64501
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_COLOR_LOGIC_OP_ENABLE, attribute, attributeValue))
 
64502
            {return false;}
 
64503
    }
 
64504
    }
 
64505
    }
 
64506
}
 
64507
 
 
64508
 
 
64509
    return true;
 
64510
}
 
64511
 
 
64512
//---------------------------------------------------------------------
 
64513
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__color_logic_op_enable()
 
64514
{
 
64515
#ifdef GENERATEDSAXPARSER_VALIDATION
 
64516
    if ( mValidate )
 
64517
    {
 
64518
 
 
64519
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__color_logic_op_enable();
 
64520
        if ( !validationResult ) return false;
 
64521
 
 
64522
    } // validation
 
64523
#endif
 
64524
 
 
64525
    return true;
 
64526
}
 
64527
 
 
64528
//---------------------------------------------------------------------
 
64529
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__color_logic_op_enable( void* attributeData )
 
64530
{
 
64531
    profile_GLES__technique__pass__states__color_logic_op_enable__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__color_logic_op_enable__AttributeData*>(attributeData);
 
64532
 
 
64533
    typedAttributeData->~profile_GLES__technique__pass__states__color_logic_op_enable__AttributeData();
 
64534
 
 
64535
    return true;
 
64536
}
 
64537
 
 
64538
//---------------------------------------------------------------------
 
64539
const profile_GLES__technique__pass__states__color_material_enable__AttributeData profile_GLES__technique__pass__states__color_material_enable__AttributeData::DEFAULT = {true, 0};
 
64540
 
 
64541
//---------------------------------------------------------------------
 
64542
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__color_material_enable( const ParserChar* text, size_t textLength )
 
64543
{
 
64544
    return true;
 
64545
}
 
64546
 
 
64547
//---------------------------------------------------------------------
 
64548
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__color_material_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
64549
{
 
64550
#ifdef GENERATEDSAXPARSER_VALIDATION
 
64551
    if ( mValidate )
 
64552
    {
 
64553
 
 
64554
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__color_material_enable( attributes, attributeDataPtr, validationDataPtr );
 
64555
        if ( !validationResult ) return false;
 
64556
 
 
64557
    } // validation
 
64558
#endif
 
64559
 
 
64560
profile_GLES__technique__pass__states__color_material_enable__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__color_material_enable__AttributeData>(attributeDataPtr);
 
64561
 
 
64562
const ParserChar** attributeArray = attributes.attributes;
 
64563
if ( attributeArray )
 
64564
{
 
64565
    while (true)
 
64566
    {
 
64567
        const ParserChar * attribute = *attributeArray;
 
64568
        if ( !attribute )
 
64569
            break;
 
64570
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
64571
        attributeArray++;
 
64572
        if ( !attributeArray )
 
64573
            return false;
 
64574
        const ParserChar* attributeValue = *attributeArray;
 
64575
        attributeArray++;
 
64576
 
 
64577
 
 
64578
    switch ( hash )
 
64579
    {
 
64580
    case HASH_ATTRIBUTE_VALUE:
 
64581
    {
 
64582
bool failed;
 
64583
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
64584
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
64585
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
64586
        HASH_ELEMENT_COLOR_MATERIAL_ENABLE,
 
64587
        HASH_ATTRIBUTE_VALUE,
 
64588
        attributeValue))
 
64589
{
 
64590
    return false;
 
64591
}
 
64592
 
 
64593
    break;
 
64594
    }
 
64595
    case HASH_ATTRIBUTE_PARAM:
 
64596
    {
 
64597
 
 
64598
attributeData->param = attributeValue;
 
64599
#ifdef GENERATEDSAXPARSER_VALIDATION
 
64600
    if ( mValidate )
 
64601
    {
 
64602
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
64603
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
64604
    {
 
64605
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
64606
            simpleTypeValidationResult,
 
64607
            HASH_ELEMENT_COLOR_MATERIAL_ENABLE,
 
64608
            HASH_ATTRIBUTE_PARAM,
 
64609
            attributeValue) )
 
64610
        {
 
64611
            return false;
 
64612
        }
 
64613
    }
 
64614
    } // validation
 
64615
#endif
 
64616
 
 
64617
    break;
 
64618
    }
 
64619
    default:
 
64620
    {
 
64621
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_COLOR_MATERIAL_ENABLE, attribute, attributeValue))
 
64622
            {return false;}
 
64623
    }
 
64624
    }
 
64625
    }
 
64626
}
 
64627
 
 
64628
 
 
64629
    return true;
 
64630
}
 
64631
 
 
64632
//---------------------------------------------------------------------
 
64633
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__color_material_enable()
 
64634
{
 
64635
#ifdef GENERATEDSAXPARSER_VALIDATION
 
64636
    if ( mValidate )
 
64637
    {
 
64638
 
 
64639
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__color_material_enable();
 
64640
        if ( !validationResult ) return false;
 
64641
 
 
64642
    } // validation
 
64643
#endif
 
64644
 
 
64645
    return true;
 
64646
}
 
64647
 
 
64648
//---------------------------------------------------------------------
 
64649
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__color_material_enable( void* attributeData )
 
64650
{
 
64651
    profile_GLES__technique__pass__states__color_material_enable__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__color_material_enable__AttributeData*>(attributeData);
 
64652
 
 
64653
    typedAttributeData->~profile_GLES__technique__pass__states__color_material_enable__AttributeData();
 
64654
 
 
64655
    return true;
 
64656
}
 
64657
 
 
64658
//---------------------------------------------------------------------
 
64659
const profile_GLES__technique__pass__states__cull_face_enable__AttributeData profile_GLES__technique__pass__states__cull_face_enable__AttributeData::DEFAULT = {false, 0};
 
64660
 
 
64661
//---------------------------------------------------------------------
 
64662
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__cull_face_enable( const ParserChar* text, size_t textLength )
 
64663
{
 
64664
    return true;
 
64665
}
 
64666
 
 
64667
//---------------------------------------------------------------------
 
64668
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__cull_face_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
64669
{
 
64670
#ifdef GENERATEDSAXPARSER_VALIDATION
 
64671
    if ( mValidate )
 
64672
    {
 
64673
 
 
64674
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__cull_face_enable( attributes, attributeDataPtr, validationDataPtr );
 
64675
        if ( !validationResult ) return false;
 
64676
 
 
64677
    } // validation
 
64678
#endif
 
64679
 
 
64680
profile_GLES__technique__pass__states__cull_face_enable__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__cull_face_enable__AttributeData>(attributeDataPtr);
 
64681
 
 
64682
const ParserChar** attributeArray = attributes.attributes;
 
64683
if ( attributeArray )
 
64684
{
 
64685
    while (true)
 
64686
    {
 
64687
        const ParserChar * attribute = *attributeArray;
 
64688
        if ( !attribute )
 
64689
            break;
 
64690
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
64691
        attributeArray++;
 
64692
        if ( !attributeArray )
 
64693
            return false;
 
64694
        const ParserChar* attributeValue = *attributeArray;
 
64695
        attributeArray++;
 
64696
 
 
64697
 
 
64698
    switch ( hash )
 
64699
    {
 
64700
    case HASH_ATTRIBUTE_VALUE:
 
64701
    {
 
64702
bool failed;
 
64703
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
64704
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
64705
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
64706
        HASH_ELEMENT_CULL_FACE_ENABLE,
 
64707
        HASH_ATTRIBUTE_VALUE,
 
64708
        attributeValue))
 
64709
{
 
64710
    return false;
 
64711
}
 
64712
 
 
64713
    break;
 
64714
    }
 
64715
    case HASH_ATTRIBUTE_PARAM:
 
64716
    {
 
64717
 
 
64718
attributeData->param = attributeValue;
 
64719
#ifdef GENERATEDSAXPARSER_VALIDATION
 
64720
    if ( mValidate )
 
64721
    {
 
64722
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
64723
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
64724
    {
 
64725
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
64726
            simpleTypeValidationResult,
 
64727
            HASH_ELEMENT_CULL_FACE_ENABLE,
 
64728
            HASH_ATTRIBUTE_PARAM,
 
64729
            attributeValue) )
 
64730
        {
 
64731
            return false;
 
64732
        }
 
64733
    }
 
64734
    } // validation
 
64735
#endif
 
64736
 
 
64737
    break;
 
64738
    }
 
64739
    default:
 
64740
    {
 
64741
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_CULL_FACE_ENABLE, attribute, attributeValue))
 
64742
            {return false;}
 
64743
    }
 
64744
    }
 
64745
    }
 
64746
}
 
64747
 
 
64748
 
 
64749
    return true;
 
64750
}
 
64751
 
 
64752
//---------------------------------------------------------------------
 
64753
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__cull_face_enable()
 
64754
{
 
64755
#ifdef GENERATEDSAXPARSER_VALIDATION
 
64756
    if ( mValidate )
 
64757
    {
 
64758
 
 
64759
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__cull_face_enable();
 
64760
        if ( !validationResult ) return false;
 
64761
 
 
64762
    } // validation
 
64763
#endif
 
64764
 
 
64765
    return true;
 
64766
}
 
64767
 
 
64768
//---------------------------------------------------------------------
 
64769
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__cull_face_enable( void* attributeData )
 
64770
{
 
64771
    profile_GLES__technique__pass__states__cull_face_enable__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__cull_face_enable__AttributeData*>(attributeData);
 
64772
 
 
64773
    typedAttributeData->~profile_GLES__technique__pass__states__cull_face_enable__AttributeData();
 
64774
 
 
64775
    return true;
 
64776
}
 
64777
 
 
64778
//---------------------------------------------------------------------
 
64779
const profile_GLES__technique__pass__states__depth_test_enable__AttributeData profile_GLES__technique__pass__states__depth_test_enable__AttributeData::DEFAULT = {false, 0};
 
64780
 
 
64781
//---------------------------------------------------------------------
 
64782
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__depth_test_enable( const ParserChar* text, size_t textLength )
 
64783
{
 
64784
    return true;
 
64785
}
 
64786
 
 
64787
//---------------------------------------------------------------------
 
64788
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__depth_test_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
64789
{
 
64790
#ifdef GENERATEDSAXPARSER_VALIDATION
 
64791
    if ( mValidate )
 
64792
    {
 
64793
 
 
64794
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__depth_test_enable( attributes, attributeDataPtr, validationDataPtr );
 
64795
        if ( !validationResult ) return false;
 
64796
 
 
64797
    } // validation
 
64798
#endif
 
64799
 
 
64800
profile_GLES__technique__pass__states__depth_test_enable__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__depth_test_enable__AttributeData>(attributeDataPtr);
 
64801
 
 
64802
const ParserChar** attributeArray = attributes.attributes;
 
64803
if ( attributeArray )
 
64804
{
 
64805
    while (true)
 
64806
    {
 
64807
        const ParserChar * attribute = *attributeArray;
 
64808
        if ( !attribute )
 
64809
            break;
 
64810
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
64811
        attributeArray++;
 
64812
        if ( !attributeArray )
 
64813
            return false;
 
64814
        const ParserChar* attributeValue = *attributeArray;
 
64815
        attributeArray++;
 
64816
 
 
64817
 
 
64818
    switch ( hash )
 
64819
    {
 
64820
    case HASH_ATTRIBUTE_VALUE:
 
64821
    {
 
64822
bool failed;
 
64823
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
64824
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
64825
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
64826
        HASH_ELEMENT_DEPTH_TEST_ENABLE,
 
64827
        HASH_ATTRIBUTE_VALUE,
 
64828
        attributeValue))
 
64829
{
 
64830
    return false;
 
64831
}
 
64832
 
 
64833
    break;
 
64834
    }
 
64835
    case HASH_ATTRIBUTE_PARAM:
 
64836
    {
 
64837
 
 
64838
attributeData->param = attributeValue;
 
64839
#ifdef GENERATEDSAXPARSER_VALIDATION
 
64840
    if ( mValidate )
 
64841
    {
 
64842
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
64843
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
64844
    {
 
64845
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
64846
            simpleTypeValidationResult,
 
64847
            HASH_ELEMENT_DEPTH_TEST_ENABLE,
 
64848
            HASH_ATTRIBUTE_PARAM,
 
64849
            attributeValue) )
 
64850
        {
 
64851
            return false;
 
64852
        }
 
64853
    }
 
64854
    } // validation
 
64855
#endif
 
64856
 
 
64857
    break;
 
64858
    }
 
64859
    default:
 
64860
    {
 
64861
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_DEPTH_TEST_ENABLE, attribute, attributeValue))
 
64862
            {return false;}
 
64863
    }
 
64864
    }
 
64865
    }
 
64866
}
 
64867
 
 
64868
 
 
64869
    return true;
 
64870
}
 
64871
 
 
64872
//---------------------------------------------------------------------
 
64873
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__depth_test_enable()
 
64874
{
 
64875
#ifdef GENERATEDSAXPARSER_VALIDATION
 
64876
    if ( mValidate )
 
64877
    {
 
64878
 
 
64879
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__depth_test_enable();
 
64880
        if ( !validationResult ) return false;
 
64881
 
 
64882
    } // validation
 
64883
#endif
 
64884
 
 
64885
    return true;
 
64886
}
 
64887
 
 
64888
//---------------------------------------------------------------------
 
64889
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__depth_test_enable( void* attributeData )
 
64890
{
 
64891
    profile_GLES__technique__pass__states__depth_test_enable__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__depth_test_enable__AttributeData*>(attributeData);
 
64892
 
 
64893
    typedAttributeData->~profile_GLES__technique__pass__states__depth_test_enable__AttributeData();
 
64894
 
 
64895
    return true;
 
64896
}
 
64897
 
 
64898
//---------------------------------------------------------------------
 
64899
const profile_GLES__technique__pass__states__dither_enable__AttributeData profile_GLES__technique__pass__states__dither_enable__AttributeData::DEFAULT = {false, 0};
 
64900
 
 
64901
//---------------------------------------------------------------------
 
64902
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__dither_enable( const ParserChar* text, size_t textLength )
 
64903
{
 
64904
    return true;
 
64905
}
 
64906
 
 
64907
//---------------------------------------------------------------------
 
64908
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__dither_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
64909
{
 
64910
#ifdef GENERATEDSAXPARSER_VALIDATION
 
64911
    if ( mValidate )
 
64912
    {
 
64913
 
 
64914
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__dither_enable( attributes, attributeDataPtr, validationDataPtr );
 
64915
        if ( !validationResult ) return false;
 
64916
 
 
64917
    } // validation
 
64918
#endif
 
64919
 
 
64920
profile_GLES__technique__pass__states__dither_enable__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__dither_enable__AttributeData>(attributeDataPtr);
 
64921
 
 
64922
const ParserChar** attributeArray = attributes.attributes;
 
64923
if ( attributeArray )
 
64924
{
 
64925
    while (true)
 
64926
    {
 
64927
        const ParserChar * attribute = *attributeArray;
 
64928
        if ( !attribute )
 
64929
            break;
 
64930
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
64931
        attributeArray++;
 
64932
        if ( !attributeArray )
 
64933
            return false;
 
64934
        const ParserChar* attributeValue = *attributeArray;
 
64935
        attributeArray++;
 
64936
 
 
64937
 
 
64938
    switch ( hash )
 
64939
    {
 
64940
    case HASH_ATTRIBUTE_VALUE:
 
64941
    {
 
64942
bool failed;
 
64943
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
64944
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
64945
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
64946
        HASH_ELEMENT_DITHER_ENABLE,
 
64947
        HASH_ATTRIBUTE_VALUE,
 
64948
        attributeValue))
 
64949
{
 
64950
    return false;
 
64951
}
 
64952
 
 
64953
    break;
 
64954
    }
 
64955
    case HASH_ATTRIBUTE_PARAM:
 
64956
    {
 
64957
 
 
64958
attributeData->param = attributeValue;
 
64959
#ifdef GENERATEDSAXPARSER_VALIDATION
 
64960
    if ( mValidate )
 
64961
    {
 
64962
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
64963
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
64964
    {
 
64965
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
64966
            simpleTypeValidationResult,
 
64967
            HASH_ELEMENT_DITHER_ENABLE,
 
64968
            HASH_ATTRIBUTE_PARAM,
 
64969
            attributeValue) )
 
64970
        {
 
64971
            return false;
 
64972
        }
 
64973
    }
 
64974
    } // validation
 
64975
#endif
 
64976
 
 
64977
    break;
 
64978
    }
 
64979
    default:
 
64980
    {
 
64981
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_DITHER_ENABLE, attribute, attributeValue))
 
64982
            {return false;}
 
64983
    }
 
64984
    }
 
64985
    }
 
64986
}
 
64987
 
 
64988
 
 
64989
    return true;
 
64990
}
 
64991
 
 
64992
//---------------------------------------------------------------------
 
64993
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__dither_enable()
 
64994
{
 
64995
#ifdef GENERATEDSAXPARSER_VALIDATION
 
64996
    if ( mValidate )
 
64997
    {
 
64998
 
 
64999
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__dither_enable();
 
65000
        if ( !validationResult ) return false;
 
65001
 
 
65002
    } // validation
 
65003
#endif
 
65004
 
 
65005
    return true;
 
65006
}
 
65007
 
 
65008
//---------------------------------------------------------------------
 
65009
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__dither_enable( void* attributeData )
 
65010
{
 
65011
    profile_GLES__technique__pass__states__dither_enable__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__dither_enable__AttributeData*>(attributeData);
 
65012
 
 
65013
    typedAttributeData->~profile_GLES__technique__pass__states__dither_enable__AttributeData();
 
65014
 
 
65015
    return true;
 
65016
}
 
65017
 
 
65018
//---------------------------------------------------------------------
 
65019
const profile_GLES__technique__pass__states__fog_enable__AttributeData profile_GLES__technique__pass__states__fog_enable__AttributeData::DEFAULT = {false, 0};
 
65020
 
 
65021
//---------------------------------------------------------------------
 
65022
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__fog_enable( const ParserChar* text, size_t textLength )
 
65023
{
 
65024
    return true;
 
65025
}
 
65026
 
 
65027
//---------------------------------------------------------------------
 
65028
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__fog_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
65029
{
 
65030
#ifdef GENERATEDSAXPARSER_VALIDATION
 
65031
    if ( mValidate )
 
65032
    {
 
65033
 
 
65034
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__fog_enable( attributes, attributeDataPtr, validationDataPtr );
 
65035
        if ( !validationResult ) return false;
 
65036
 
 
65037
    } // validation
 
65038
#endif
 
65039
 
 
65040
profile_GLES__technique__pass__states__fog_enable__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__fog_enable__AttributeData>(attributeDataPtr);
 
65041
 
 
65042
const ParserChar** attributeArray = attributes.attributes;
 
65043
if ( attributeArray )
 
65044
{
 
65045
    while (true)
 
65046
    {
 
65047
        const ParserChar * attribute = *attributeArray;
 
65048
        if ( !attribute )
 
65049
            break;
 
65050
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
65051
        attributeArray++;
 
65052
        if ( !attributeArray )
 
65053
            return false;
 
65054
        const ParserChar* attributeValue = *attributeArray;
 
65055
        attributeArray++;
 
65056
 
 
65057
 
 
65058
    switch ( hash )
 
65059
    {
 
65060
    case HASH_ATTRIBUTE_VALUE:
 
65061
    {
 
65062
bool failed;
 
65063
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
65064
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
65065
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
65066
        HASH_ELEMENT_FOG_ENABLE,
 
65067
        HASH_ATTRIBUTE_VALUE,
 
65068
        attributeValue))
 
65069
{
 
65070
    return false;
 
65071
}
 
65072
 
 
65073
    break;
 
65074
    }
 
65075
    case HASH_ATTRIBUTE_PARAM:
 
65076
    {
 
65077
 
 
65078
attributeData->param = attributeValue;
 
65079
#ifdef GENERATEDSAXPARSER_VALIDATION
 
65080
    if ( mValidate )
 
65081
    {
 
65082
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
65083
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
65084
    {
 
65085
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
65086
            simpleTypeValidationResult,
 
65087
            HASH_ELEMENT_FOG_ENABLE,
 
65088
            HASH_ATTRIBUTE_PARAM,
 
65089
            attributeValue) )
 
65090
        {
 
65091
            return false;
 
65092
        }
 
65093
    }
 
65094
    } // validation
 
65095
#endif
 
65096
 
 
65097
    break;
 
65098
    }
 
65099
    default:
 
65100
    {
 
65101
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FOG_ENABLE, attribute, attributeValue))
 
65102
            {return false;}
 
65103
    }
 
65104
    }
 
65105
    }
 
65106
}
 
65107
 
 
65108
 
 
65109
    return true;
 
65110
}
 
65111
 
 
65112
//---------------------------------------------------------------------
 
65113
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__fog_enable()
 
65114
{
 
65115
#ifdef GENERATEDSAXPARSER_VALIDATION
 
65116
    if ( mValidate )
 
65117
    {
 
65118
 
 
65119
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__fog_enable();
 
65120
        if ( !validationResult ) return false;
 
65121
 
 
65122
    } // validation
 
65123
#endif
 
65124
 
 
65125
    return true;
 
65126
}
 
65127
 
 
65128
//---------------------------------------------------------------------
 
65129
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__fog_enable( void* attributeData )
 
65130
{
 
65131
    profile_GLES__technique__pass__states__fog_enable__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__fog_enable__AttributeData*>(attributeData);
 
65132
 
 
65133
    typedAttributeData->~profile_GLES__technique__pass__states__fog_enable__AttributeData();
 
65134
 
 
65135
    return true;
 
65136
}
 
65137
 
 
65138
//---------------------------------------------------------------------
 
65139
const profile_GLES__technique__pass__states__light_enable__AttributeData profile_GLES__technique__pass__states__light_enable__AttributeData::DEFAULT = {0, false, 0, 0};
 
65140
 
 
65141
//---------------------------------------------------------------------
 
65142
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__light_enable( const ParserChar* text, size_t textLength )
 
65143
{
 
65144
    return true;
 
65145
}
 
65146
 
 
65147
//---------------------------------------------------------------------
 
65148
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__light_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
65149
{
 
65150
#ifdef GENERATEDSAXPARSER_VALIDATION
 
65151
    if ( mValidate )
 
65152
    {
 
65153
 
 
65154
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__light_enable( attributes, attributeDataPtr, validationDataPtr );
 
65155
        if ( !validationResult ) return false;
 
65156
 
 
65157
    } // validation
 
65158
#endif
 
65159
 
 
65160
profile_GLES__technique__pass__states__light_enable__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__light_enable__AttributeData>(attributeDataPtr);
 
65161
 
 
65162
const ParserChar** attributeArray = attributes.attributes;
 
65163
if ( attributeArray )
 
65164
{
 
65165
    while (true)
 
65166
    {
 
65167
        const ParserChar * attribute = *attributeArray;
 
65168
        if ( !attribute )
 
65169
            break;
 
65170
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
65171
        attributeArray++;
 
65172
        if ( !attributeArray )
 
65173
            return false;
 
65174
        const ParserChar* attributeValue = *attributeArray;
 
65175
        attributeArray++;
 
65176
 
 
65177
 
 
65178
    switch ( hash )
 
65179
    {
 
65180
    case HASH_ATTRIBUTE_VALUE:
 
65181
    {
 
65182
bool failed;
 
65183
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
65184
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
65185
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
65186
        HASH_ELEMENT_LIGHT_ENABLE,
 
65187
        HASH_ATTRIBUTE_VALUE,
 
65188
        attributeValue))
 
65189
{
 
65190
    return false;
 
65191
}
 
65192
 
 
65193
    break;
 
65194
    }
 
65195
    case HASH_ATTRIBUTE_PARAM:
 
65196
    {
 
65197
 
 
65198
attributeData->param = attributeValue;
 
65199
#ifdef GENERATEDSAXPARSER_VALIDATION
 
65200
    if ( mValidate )
 
65201
    {
 
65202
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
65203
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
65204
    {
 
65205
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
65206
            simpleTypeValidationResult,
 
65207
            HASH_ELEMENT_LIGHT_ENABLE,
 
65208
            HASH_ATTRIBUTE_PARAM,
 
65209
            attributeValue) )
 
65210
        {
 
65211
            return false;
 
65212
        }
 
65213
    }
 
65214
    } // validation
 
65215
#endif
 
65216
 
 
65217
    break;
 
65218
    }
 
65219
    case HASH_ATTRIBUTE_INDEX:
 
65220
    {
 
65221
bool failed;
 
65222
attributeData->index = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
65223
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
65224
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
65225
        HASH_ELEMENT_LIGHT_ENABLE,
 
65226
        HASH_ATTRIBUTE_INDEX,
 
65227
        attributeValue))
 
65228
{
 
65229
    return false;
 
65230
}
 
65231
#ifdef GENERATEDSAXPARSER_VALIDATION
 
65232
    if ( mValidate )
 
65233
    {
 
65234
    ParserError::ErrorType simpleTypeValidationResult = validate__gles_max_lights_index_type(attributeData->index);
 
65235
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
65236
    {
 
65237
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
65238
            simpleTypeValidationResult,
 
65239
            HASH_ELEMENT_LIGHT_ENABLE,
 
65240
            HASH_ATTRIBUTE_INDEX,
 
65241
            attributeValue) )
 
65242
        {
 
65243
            return false;
 
65244
        }
 
65245
    }
 
65246
    } // validation
 
65247
#endif
 
65248
if ( !failed )
 
65249
    attributeData->present_attributes |= profile_GLES__technique__pass__states__light_enable__AttributeData::ATTRIBUTE_INDEX_PRESENT;
 
65250
 
 
65251
    break;
 
65252
    }
 
65253
    default:
 
65254
    {
 
65255
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIGHT_ENABLE, attribute, attributeValue))
 
65256
            {return false;}
 
65257
    }
 
65258
    }
 
65259
    }
 
65260
}
 
65261
if ( (attributeData->present_attributes & profile_GLES__technique__pass__states__light_enable__AttributeData::ATTRIBUTE_INDEX_PRESENT) == 0 )
 
65262
{
 
65263
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_LIGHT_ENABLE, HASH_ATTRIBUTE_INDEX, 0 ) )
 
65264
        return false;
 
65265
}
 
65266
 
 
65267
 
 
65268
    return true;
 
65269
}
 
65270
 
 
65271
//---------------------------------------------------------------------
 
65272
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__light_enable()
 
65273
{
 
65274
#ifdef GENERATEDSAXPARSER_VALIDATION
 
65275
    if ( mValidate )
 
65276
    {
 
65277
 
 
65278
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__light_enable();
 
65279
        if ( !validationResult ) return false;
 
65280
 
 
65281
    } // validation
 
65282
#endif
 
65283
 
 
65284
    return true;
 
65285
}
 
65286
 
 
65287
//---------------------------------------------------------------------
 
65288
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__light_enable( void* attributeData )
 
65289
{
 
65290
    profile_GLES__technique__pass__states__light_enable__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__light_enable__AttributeData*>(attributeData);
 
65291
 
 
65292
    typedAttributeData->~profile_GLES__technique__pass__states__light_enable__AttributeData();
 
65293
 
 
65294
    return true;
 
65295
}
 
65296
 
 
65297
//---------------------------------------------------------------------
 
65298
const profile_GLES__technique__pass__states__lighting_enable__AttributeData profile_GLES__technique__pass__states__lighting_enable__AttributeData::DEFAULT = {false, 0};
 
65299
 
 
65300
//---------------------------------------------------------------------
 
65301
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__lighting_enable( const ParserChar* text, size_t textLength )
 
65302
{
 
65303
    return true;
 
65304
}
 
65305
 
 
65306
//---------------------------------------------------------------------
 
65307
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__lighting_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
65308
{
 
65309
#ifdef GENERATEDSAXPARSER_VALIDATION
 
65310
    if ( mValidate )
 
65311
    {
 
65312
 
 
65313
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__lighting_enable( attributes, attributeDataPtr, validationDataPtr );
 
65314
        if ( !validationResult ) return false;
 
65315
 
 
65316
    } // validation
 
65317
#endif
 
65318
 
 
65319
profile_GLES__technique__pass__states__lighting_enable__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__lighting_enable__AttributeData>(attributeDataPtr);
 
65320
 
 
65321
const ParserChar** attributeArray = attributes.attributes;
 
65322
if ( attributeArray )
 
65323
{
 
65324
    while (true)
 
65325
    {
 
65326
        const ParserChar * attribute = *attributeArray;
 
65327
        if ( !attribute )
 
65328
            break;
 
65329
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
65330
        attributeArray++;
 
65331
        if ( !attributeArray )
 
65332
            return false;
 
65333
        const ParserChar* attributeValue = *attributeArray;
 
65334
        attributeArray++;
 
65335
 
 
65336
 
 
65337
    switch ( hash )
 
65338
    {
 
65339
    case HASH_ATTRIBUTE_VALUE:
 
65340
    {
 
65341
bool failed;
 
65342
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
65343
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
65344
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
65345
        HASH_ELEMENT_LIGHTING_ENABLE,
 
65346
        HASH_ATTRIBUTE_VALUE,
 
65347
        attributeValue))
 
65348
{
 
65349
    return false;
 
65350
}
 
65351
 
 
65352
    break;
 
65353
    }
 
65354
    case HASH_ATTRIBUTE_PARAM:
 
65355
    {
 
65356
 
 
65357
attributeData->param = attributeValue;
 
65358
#ifdef GENERATEDSAXPARSER_VALIDATION
 
65359
    if ( mValidate )
 
65360
    {
 
65361
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
65362
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
65363
    {
 
65364
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
65365
            simpleTypeValidationResult,
 
65366
            HASH_ELEMENT_LIGHTING_ENABLE,
 
65367
            HASH_ATTRIBUTE_PARAM,
 
65368
            attributeValue) )
 
65369
        {
 
65370
            return false;
 
65371
        }
 
65372
    }
 
65373
    } // validation
 
65374
#endif
 
65375
 
 
65376
    break;
 
65377
    }
 
65378
    default:
 
65379
    {
 
65380
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIGHTING_ENABLE, attribute, attributeValue))
 
65381
            {return false;}
 
65382
    }
 
65383
    }
 
65384
    }
 
65385
}
 
65386
 
 
65387
 
 
65388
    return true;
 
65389
}
 
65390
 
 
65391
//---------------------------------------------------------------------
 
65392
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__lighting_enable()
 
65393
{
 
65394
#ifdef GENERATEDSAXPARSER_VALIDATION
 
65395
    if ( mValidate )
 
65396
    {
 
65397
 
 
65398
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__lighting_enable();
 
65399
        if ( !validationResult ) return false;
 
65400
 
 
65401
    } // validation
 
65402
#endif
 
65403
 
 
65404
    return true;
 
65405
}
 
65406
 
 
65407
//---------------------------------------------------------------------
 
65408
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__lighting_enable( void* attributeData )
 
65409
{
 
65410
    profile_GLES__technique__pass__states__lighting_enable__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__lighting_enable__AttributeData*>(attributeData);
 
65411
 
 
65412
    typedAttributeData->~profile_GLES__technique__pass__states__lighting_enable__AttributeData();
 
65413
 
 
65414
    return true;
 
65415
}
 
65416
 
 
65417
//---------------------------------------------------------------------
 
65418
const profile_GLES__technique__pass__states__light_model_two_side_enable__AttributeData profile_GLES__technique__pass__states__light_model_two_side_enable__AttributeData::DEFAULT = {false, 0};
 
65419
 
 
65420
//---------------------------------------------------------------------
 
65421
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__light_model_two_side_enable( const ParserChar* text, size_t textLength )
 
65422
{
 
65423
    return true;
 
65424
}
 
65425
 
 
65426
//---------------------------------------------------------------------
 
65427
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__light_model_two_side_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
65428
{
 
65429
#ifdef GENERATEDSAXPARSER_VALIDATION
 
65430
    if ( mValidate )
 
65431
    {
 
65432
 
 
65433
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__light_model_two_side_enable( attributes, attributeDataPtr, validationDataPtr );
 
65434
        if ( !validationResult ) return false;
 
65435
 
 
65436
    } // validation
 
65437
#endif
 
65438
 
 
65439
profile_GLES__technique__pass__states__light_model_two_side_enable__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__light_model_two_side_enable__AttributeData>(attributeDataPtr);
 
65440
 
 
65441
const ParserChar** attributeArray = attributes.attributes;
 
65442
if ( attributeArray )
 
65443
{
 
65444
    while (true)
 
65445
    {
 
65446
        const ParserChar * attribute = *attributeArray;
 
65447
        if ( !attribute )
 
65448
            break;
 
65449
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
65450
        attributeArray++;
 
65451
        if ( !attributeArray )
 
65452
            return false;
 
65453
        const ParserChar* attributeValue = *attributeArray;
 
65454
        attributeArray++;
 
65455
 
 
65456
 
 
65457
    switch ( hash )
 
65458
    {
 
65459
    case HASH_ATTRIBUTE_VALUE:
 
65460
    {
 
65461
bool failed;
 
65462
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
65463
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
65464
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
65465
        HASH_ELEMENT_LIGHT_MODEL_TWO_SIDE_ENABLE,
 
65466
        HASH_ATTRIBUTE_VALUE,
 
65467
        attributeValue))
 
65468
{
 
65469
    return false;
 
65470
}
 
65471
 
 
65472
    break;
 
65473
    }
 
65474
    case HASH_ATTRIBUTE_PARAM:
 
65475
    {
 
65476
 
 
65477
attributeData->param = attributeValue;
 
65478
#ifdef GENERATEDSAXPARSER_VALIDATION
 
65479
    if ( mValidate )
 
65480
    {
 
65481
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
65482
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
65483
    {
 
65484
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
65485
            simpleTypeValidationResult,
 
65486
            HASH_ELEMENT_LIGHT_MODEL_TWO_SIDE_ENABLE,
 
65487
            HASH_ATTRIBUTE_PARAM,
 
65488
            attributeValue) )
 
65489
        {
 
65490
            return false;
 
65491
        }
 
65492
    }
 
65493
    } // validation
 
65494
#endif
 
65495
 
 
65496
    break;
 
65497
    }
 
65498
    default:
 
65499
    {
 
65500
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIGHT_MODEL_TWO_SIDE_ENABLE, attribute, attributeValue))
 
65501
            {return false;}
 
65502
    }
 
65503
    }
 
65504
    }
 
65505
}
 
65506
 
 
65507
 
 
65508
    return true;
 
65509
}
 
65510
 
 
65511
//---------------------------------------------------------------------
 
65512
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__light_model_two_side_enable()
 
65513
{
 
65514
#ifdef GENERATEDSAXPARSER_VALIDATION
 
65515
    if ( mValidate )
 
65516
    {
 
65517
 
 
65518
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__light_model_two_side_enable();
 
65519
        if ( !validationResult ) return false;
 
65520
 
 
65521
    } // validation
 
65522
#endif
 
65523
 
 
65524
    return true;
 
65525
}
 
65526
 
 
65527
//---------------------------------------------------------------------
 
65528
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__light_model_two_side_enable( void* attributeData )
 
65529
{
 
65530
    profile_GLES__technique__pass__states__light_model_two_side_enable__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__light_model_two_side_enable__AttributeData*>(attributeData);
 
65531
 
 
65532
    typedAttributeData->~profile_GLES__technique__pass__states__light_model_two_side_enable__AttributeData();
 
65533
 
 
65534
    return true;
 
65535
}
 
65536
 
 
65537
//---------------------------------------------------------------------
 
65538
const profile_GLES__technique__pass__states__line_smooth_enable__AttributeData profile_GLES__technique__pass__states__line_smooth_enable__AttributeData::DEFAULT = {false, 0};
 
65539
 
 
65540
//---------------------------------------------------------------------
 
65541
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__line_smooth_enable( const ParserChar* text, size_t textLength )
 
65542
{
 
65543
    return true;
 
65544
}
 
65545
 
 
65546
//---------------------------------------------------------------------
 
65547
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__line_smooth_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
65548
{
 
65549
#ifdef GENERATEDSAXPARSER_VALIDATION
 
65550
    if ( mValidate )
 
65551
    {
 
65552
 
 
65553
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__line_smooth_enable( attributes, attributeDataPtr, validationDataPtr );
 
65554
        if ( !validationResult ) return false;
 
65555
 
 
65556
    } // validation
 
65557
#endif
 
65558
 
 
65559
profile_GLES__technique__pass__states__line_smooth_enable__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__line_smooth_enable__AttributeData>(attributeDataPtr);
 
65560
 
 
65561
const ParserChar** attributeArray = attributes.attributes;
 
65562
if ( attributeArray )
 
65563
{
 
65564
    while (true)
 
65565
    {
 
65566
        const ParserChar * attribute = *attributeArray;
 
65567
        if ( !attribute )
 
65568
            break;
 
65569
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
65570
        attributeArray++;
 
65571
        if ( !attributeArray )
 
65572
            return false;
 
65573
        const ParserChar* attributeValue = *attributeArray;
 
65574
        attributeArray++;
 
65575
 
 
65576
 
 
65577
    switch ( hash )
 
65578
    {
 
65579
    case HASH_ATTRIBUTE_VALUE:
 
65580
    {
 
65581
bool failed;
 
65582
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
65583
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
65584
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
65585
        HASH_ELEMENT_LINE_SMOOTH_ENABLE,
 
65586
        HASH_ATTRIBUTE_VALUE,
 
65587
        attributeValue))
 
65588
{
 
65589
    return false;
 
65590
}
 
65591
 
 
65592
    break;
 
65593
    }
 
65594
    case HASH_ATTRIBUTE_PARAM:
 
65595
    {
 
65596
 
 
65597
attributeData->param = attributeValue;
 
65598
#ifdef GENERATEDSAXPARSER_VALIDATION
 
65599
    if ( mValidate )
 
65600
    {
 
65601
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
65602
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
65603
    {
 
65604
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
65605
            simpleTypeValidationResult,
 
65606
            HASH_ELEMENT_LINE_SMOOTH_ENABLE,
 
65607
            HASH_ATTRIBUTE_PARAM,
 
65608
            attributeValue) )
 
65609
        {
 
65610
            return false;
 
65611
        }
 
65612
    }
 
65613
    } // validation
 
65614
#endif
 
65615
 
 
65616
    break;
 
65617
    }
 
65618
    default:
 
65619
    {
 
65620
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LINE_SMOOTH_ENABLE, attribute, attributeValue))
 
65621
            {return false;}
 
65622
    }
 
65623
    }
 
65624
    }
 
65625
}
 
65626
 
 
65627
 
 
65628
    return true;
 
65629
}
 
65630
 
 
65631
//---------------------------------------------------------------------
 
65632
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__line_smooth_enable()
 
65633
{
 
65634
#ifdef GENERATEDSAXPARSER_VALIDATION
 
65635
    if ( mValidate )
 
65636
    {
 
65637
 
 
65638
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__line_smooth_enable();
 
65639
        if ( !validationResult ) return false;
 
65640
 
 
65641
    } // validation
 
65642
#endif
 
65643
 
 
65644
    return true;
 
65645
}
 
65646
 
 
65647
//---------------------------------------------------------------------
 
65648
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__line_smooth_enable( void* attributeData )
 
65649
{
 
65650
    profile_GLES__technique__pass__states__line_smooth_enable__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__line_smooth_enable__AttributeData*>(attributeData);
 
65651
 
 
65652
    typedAttributeData->~profile_GLES__technique__pass__states__line_smooth_enable__AttributeData();
 
65653
 
 
65654
    return true;
 
65655
}
 
65656
 
 
65657
//---------------------------------------------------------------------
 
65658
const profile_GLES__technique__pass__states__multisample_enable__AttributeData profile_GLES__technique__pass__states__multisample_enable__AttributeData::DEFAULT = {false, 0};
 
65659
 
 
65660
//---------------------------------------------------------------------
 
65661
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__multisample_enable( const ParserChar* text, size_t textLength )
 
65662
{
 
65663
    return true;
 
65664
}
 
65665
 
 
65666
//---------------------------------------------------------------------
 
65667
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__multisample_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
65668
{
 
65669
#ifdef GENERATEDSAXPARSER_VALIDATION
 
65670
    if ( mValidate )
 
65671
    {
 
65672
 
 
65673
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__multisample_enable( attributes, attributeDataPtr, validationDataPtr );
 
65674
        if ( !validationResult ) return false;
 
65675
 
 
65676
    } // validation
 
65677
#endif
 
65678
 
 
65679
profile_GLES__technique__pass__states__multisample_enable__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__multisample_enable__AttributeData>(attributeDataPtr);
 
65680
 
 
65681
const ParserChar** attributeArray = attributes.attributes;
 
65682
if ( attributeArray )
 
65683
{
 
65684
    while (true)
 
65685
    {
 
65686
        const ParserChar * attribute = *attributeArray;
 
65687
        if ( !attribute )
 
65688
            break;
 
65689
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
65690
        attributeArray++;
 
65691
        if ( !attributeArray )
 
65692
            return false;
 
65693
        const ParserChar* attributeValue = *attributeArray;
 
65694
        attributeArray++;
 
65695
 
 
65696
 
 
65697
    switch ( hash )
 
65698
    {
 
65699
    case HASH_ATTRIBUTE_VALUE:
 
65700
    {
 
65701
bool failed;
 
65702
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
65703
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
65704
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
65705
        HASH_ELEMENT_MULTISAMPLE_ENABLE,
 
65706
        HASH_ATTRIBUTE_VALUE,
 
65707
        attributeValue))
 
65708
{
 
65709
    return false;
 
65710
}
 
65711
 
 
65712
    break;
 
65713
    }
 
65714
    case HASH_ATTRIBUTE_PARAM:
 
65715
    {
 
65716
 
 
65717
attributeData->param = attributeValue;
 
65718
#ifdef GENERATEDSAXPARSER_VALIDATION
 
65719
    if ( mValidate )
 
65720
    {
 
65721
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
65722
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
65723
    {
 
65724
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
65725
            simpleTypeValidationResult,
 
65726
            HASH_ELEMENT_MULTISAMPLE_ENABLE,
 
65727
            HASH_ATTRIBUTE_PARAM,
 
65728
            attributeValue) )
 
65729
        {
 
65730
            return false;
 
65731
        }
 
65732
    }
 
65733
    } // validation
 
65734
#endif
 
65735
 
 
65736
    break;
 
65737
    }
 
65738
    default:
 
65739
    {
 
65740
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_MULTISAMPLE_ENABLE, attribute, attributeValue))
 
65741
            {return false;}
 
65742
    }
 
65743
    }
 
65744
    }
 
65745
}
 
65746
 
 
65747
 
 
65748
    return true;
 
65749
}
 
65750
 
 
65751
//---------------------------------------------------------------------
 
65752
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__multisample_enable()
 
65753
{
 
65754
#ifdef GENERATEDSAXPARSER_VALIDATION
 
65755
    if ( mValidate )
 
65756
    {
 
65757
 
 
65758
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__multisample_enable();
 
65759
        if ( !validationResult ) return false;
 
65760
 
 
65761
    } // validation
 
65762
#endif
 
65763
 
 
65764
    return true;
 
65765
}
 
65766
 
 
65767
//---------------------------------------------------------------------
 
65768
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__multisample_enable( void* attributeData )
 
65769
{
 
65770
    profile_GLES__technique__pass__states__multisample_enable__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__multisample_enable__AttributeData*>(attributeData);
 
65771
 
 
65772
    typedAttributeData->~profile_GLES__technique__pass__states__multisample_enable__AttributeData();
 
65773
 
 
65774
    return true;
 
65775
}
 
65776
 
 
65777
//---------------------------------------------------------------------
 
65778
const profile_GLES__technique__pass__states__normalize_enable__AttributeData profile_GLES__technique__pass__states__normalize_enable__AttributeData::DEFAULT = {false, 0};
 
65779
 
 
65780
//---------------------------------------------------------------------
 
65781
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__normalize_enable( const ParserChar* text, size_t textLength )
 
65782
{
 
65783
    return true;
 
65784
}
 
65785
 
 
65786
//---------------------------------------------------------------------
 
65787
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__normalize_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
65788
{
 
65789
#ifdef GENERATEDSAXPARSER_VALIDATION
 
65790
    if ( mValidate )
 
65791
    {
 
65792
 
 
65793
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__normalize_enable( attributes, attributeDataPtr, validationDataPtr );
 
65794
        if ( !validationResult ) return false;
 
65795
 
 
65796
    } // validation
 
65797
#endif
 
65798
 
 
65799
profile_GLES__technique__pass__states__normalize_enable__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__normalize_enable__AttributeData>(attributeDataPtr);
 
65800
 
 
65801
const ParserChar** attributeArray = attributes.attributes;
 
65802
if ( attributeArray )
 
65803
{
 
65804
    while (true)
 
65805
    {
 
65806
        const ParserChar * attribute = *attributeArray;
 
65807
        if ( !attribute )
 
65808
            break;
 
65809
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
65810
        attributeArray++;
 
65811
        if ( !attributeArray )
 
65812
            return false;
 
65813
        const ParserChar* attributeValue = *attributeArray;
 
65814
        attributeArray++;
 
65815
 
 
65816
 
 
65817
    switch ( hash )
 
65818
    {
 
65819
    case HASH_ATTRIBUTE_VALUE:
 
65820
    {
 
65821
bool failed;
 
65822
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
65823
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
65824
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
65825
        HASH_ELEMENT_NORMALIZE_ENABLE,
 
65826
        HASH_ATTRIBUTE_VALUE,
 
65827
        attributeValue))
 
65828
{
 
65829
    return false;
 
65830
}
 
65831
 
 
65832
    break;
 
65833
    }
 
65834
    case HASH_ATTRIBUTE_PARAM:
 
65835
    {
 
65836
 
 
65837
attributeData->param = attributeValue;
 
65838
#ifdef GENERATEDSAXPARSER_VALIDATION
 
65839
    if ( mValidate )
 
65840
    {
 
65841
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
65842
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
65843
    {
 
65844
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
65845
            simpleTypeValidationResult,
 
65846
            HASH_ELEMENT_NORMALIZE_ENABLE,
 
65847
            HASH_ATTRIBUTE_PARAM,
 
65848
            attributeValue) )
 
65849
        {
 
65850
            return false;
 
65851
        }
 
65852
    }
 
65853
    } // validation
 
65854
#endif
 
65855
 
 
65856
    break;
 
65857
    }
 
65858
    default:
 
65859
    {
 
65860
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_NORMALIZE_ENABLE, attribute, attributeValue))
 
65861
            {return false;}
 
65862
    }
 
65863
    }
 
65864
    }
 
65865
}
 
65866
 
 
65867
 
 
65868
    return true;
 
65869
}
 
65870
 
 
65871
//---------------------------------------------------------------------
 
65872
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__normalize_enable()
 
65873
{
 
65874
#ifdef GENERATEDSAXPARSER_VALIDATION
 
65875
    if ( mValidate )
 
65876
    {
 
65877
 
 
65878
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__normalize_enable();
 
65879
        if ( !validationResult ) return false;
 
65880
 
 
65881
    } // validation
 
65882
#endif
 
65883
 
 
65884
    return true;
 
65885
}
 
65886
 
 
65887
//---------------------------------------------------------------------
 
65888
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__normalize_enable( void* attributeData )
 
65889
{
 
65890
    profile_GLES__technique__pass__states__normalize_enable__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__normalize_enable__AttributeData*>(attributeData);
 
65891
 
 
65892
    typedAttributeData->~profile_GLES__technique__pass__states__normalize_enable__AttributeData();
 
65893
 
 
65894
    return true;
 
65895
}
 
65896
 
 
65897
//---------------------------------------------------------------------
 
65898
const profile_GLES__technique__pass__states__point_smooth_enable__AttributeData profile_GLES__technique__pass__states__point_smooth_enable__AttributeData::DEFAULT = {false, 0};
 
65899
 
 
65900
//---------------------------------------------------------------------
 
65901
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__point_smooth_enable( const ParserChar* text, size_t textLength )
 
65902
{
 
65903
    return true;
 
65904
}
 
65905
 
 
65906
//---------------------------------------------------------------------
 
65907
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__point_smooth_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
65908
{
 
65909
#ifdef GENERATEDSAXPARSER_VALIDATION
 
65910
    if ( mValidate )
 
65911
    {
 
65912
 
 
65913
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__point_smooth_enable( attributes, attributeDataPtr, validationDataPtr );
 
65914
        if ( !validationResult ) return false;
 
65915
 
 
65916
    } // validation
 
65917
#endif
 
65918
 
 
65919
profile_GLES__technique__pass__states__point_smooth_enable__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__point_smooth_enable__AttributeData>(attributeDataPtr);
 
65920
 
 
65921
const ParserChar** attributeArray = attributes.attributes;
 
65922
if ( attributeArray )
 
65923
{
 
65924
    while (true)
 
65925
    {
 
65926
        const ParserChar * attribute = *attributeArray;
 
65927
        if ( !attribute )
 
65928
            break;
 
65929
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
65930
        attributeArray++;
 
65931
        if ( !attributeArray )
 
65932
            return false;
 
65933
        const ParserChar* attributeValue = *attributeArray;
 
65934
        attributeArray++;
 
65935
 
 
65936
 
 
65937
    switch ( hash )
 
65938
    {
 
65939
    case HASH_ATTRIBUTE_VALUE:
 
65940
    {
 
65941
bool failed;
 
65942
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
65943
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
65944
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
65945
        HASH_ELEMENT_POINT_SMOOTH_ENABLE,
 
65946
        HASH_ATTRIBUTE_VALUE,
 
65947
        attributeValue))
 
65948
{
 
65949
    return false;
 
65950
}
 
65951
 
 
65952
    break;
 
65953
    }
 
65954
    case HASH_ATTRIBUTE_PARAM:
 
65955
    {
 
65956
 
 
65957
attributeData->param = attributeValue;
 
65958
#ifdef GENERATEDSAXPARSER_VALIDATION
 
65959
    if ( mValidate )
 
65960
    {
 
65961
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
65962
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
65963
    {
 
65964
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
65965
            simpleTypeValidationResult,
 
65966
            HASH_ELEMENT_POINT_SMOOTH_ENABLE,
 
65967
            HASH_ATTRIBUTE_PARAM,
 
65968
            attributeValue) )
 
65969
        {
 
65970
            return false;
 
65971
        }
 
65972
    }
 
65973
    } // validation
 
65974
#endif
 
65975
 
 
65976
    break;
 
65977
    }
 
65978
    default:
 
65979
    {
 
65980
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_POINT_SMOOTH_ENABLE, attribute, attributeValue))
 
65981
            {return false;}
 
65982
    }
 
65983
    }
 
65984
    }
 
65985
}
 
65986
 
 
65987
 
 
65988
    return true;
 
65989
}
 
65990
 
 
65991
//---------------------------------------------------------------------
 
65992
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__point_smooth_enable()
 
65993
{
 
65994
#ifdef GENERATEDSAXPARSER_VALIDATION
 
65995
    if ( mValidate )
 
65996
    {
 
65997
 
 
65998
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__point_smooth_enable();
 
65999
        if ( !validationResult ) return false;
 
66000
 
 
66001
    } // validation
 
66002
#endif
 
66003
 
 
66004
    return true;
 
66005
}
 
66006
 
 
66007
//---------------------------------------------------------------------
 
66008
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__point_smooth_enable( void* attributeData )
 
66009
{
 
66010
    profile_GLES__technique__pass__states__point_smooth_enable__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__point_smooth_enable__AttributeData*>(attributeData);
 
66011
 
 
66012
    typedAttributeData->~profile_GLES__technique__pass__states__point_smooth_enable__AttributeData();
 
66013
 
 
66014
    return true;
 
66015
}
 
66016
 
 
66017
//---------------------------------------------------------------------
 
66018
const profile_GLES__technique__pass__states__polygon_offset_fill_enable__AttributeData profile_GLES__technique__pass__states__polygon_offset_fill_enable__AttributeData::DEFAULT = {false, 0};
 
66019
 
 
66020
//---------------------------------------------------------------------
 
66021
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__polygon_offset_fill_enable( const ParserChar* text, size_t textLength )
 
66022
{
 
66023
    return true;
 
66024
}
 
66025
 
 
66026
//---------------------------------------------------------------------
 
66027
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__polygon_offset_fill_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
66028
{
 
66029
#ifdef GENERATEDSAXPARSER_VALIDATION
 
66030
    if ( mValidate )
 
66031
    {
 
66032
 
 
66033
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__polygon_offset_fill_enable( attributes, attributeDataPtr, validationDataPtr );
 
66034
        if ( !validationResult ) return false;
 
66035
 
 
66036
    } // validation
 
66037
#endif
 
66038
 
 
66039
profile_GLES__technique__pass__states__polygon_offset_fill_enable__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__polygon_offset_fill_enable__AttributeData>(attributeDataPtr);
 
66040
 
 
66041
const ParserChar** attributeArray = attributes.attributes;
 
66042
if ( attributeArray )
 
66043
{
 
66044
    while (true)
 
66045
    {
 
66046
        const ParserChar * attribute = *attributeArray;
 
66047
        if ( !attribute )
 
66048
            break;
 
66049
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
66050
        attributeArray++;
 
66051
        if ( !attributeArray )
 
66052
            return false;
 
66053
        const ParserChar* attributeValue = *attributeArray;
 
66054
        attributeArray++;
 
66055
 
 
66056
 
 
66057
    switch ( hash )
 
66058
    {
 
66059
    case HASH_ATTRIBUTE_VALUE:
 
66060
    {
 
66061
bool failed;
 
66062
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
66063
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
66064
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
66065
        HASH_ELEMENT_POLYGON_OFFSET_FILL_ENABLE,
 
66066
        HASH_ATTRIBUTE_VALUE,
 
66067
        attributeValue))
 
66068
{
 
66069
    return false;
 
66070
}
 
66071
 
 
66072
    break;
 
66073
    }
 
66074
    case HASH_ATTRIBUTE_PARAM:
 
66075
    {
 
66076
 
 
66077
attributeData->param = attributeValue;
 
66078
#ifdef GENERATEDSAXPARSER_VALIDATION
 
66079
    if ( mValidate )
 
66080
    {
 
66081
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
66082
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
66083
    {
 
66084
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
66085
            simpleTypeValidationResult,
 
66086
            HASH_ELEMENT_POLYGON_OFFSET_FILL_ENABLE,
 
66087
            HASH_ATTRIBUTE_PARAM,
 
66088
            attributeValue) )
 
66089
        {
 
66090
            return false;
 
66091
        }
 
66092
    }
 
66093
    } // validation
 
66094
#endif
 
66095
 
 
66096
    break;
 
66097
    }
 
66098
    default:
 
66099
    {
 
66100
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_POLYGON_OFFSET_FILL_ENABLE, attribute, attributeValue))
 
66101
            {return false;}
 
66102
    }
 
66103
    }
 
66104
    }
 
66105
}
 
66106
 
 
66107
 
 
66108
    return true;
 
66109
}
 
66110
 
 
66111
//---------------------------------------------------------------------
 
66112
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__polygon_offset_fill_enable()
 
66113
{
 
66114
#ifdef GENERATEDSAXPARSER_VALIDATION
 
66115
    if ( mValidate )
 
66116
    {
 
66117
 
 
66118
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__polygon_offset_fill_enable();
 
66119
        if ( !validationResult ) return false;
 
66120
 
 
66121
    } // validation
 
66122
#endif
 
66123
 
 
66124
    return true;
 
66125
}
 
66126
 
 
66127
//---------------------------------------------------------------------
 
66128
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__polygon_offset_fill_enable( void* attributeData )
 
66129
{
 
66130
    profile_GLES__technique__pass__states__polygon_offset_fill_enable__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__polygon_offset_fill_enable__AttributeData*>(attributeData);
 
66131
 
 
66132
    typedAttributeData->~profile_GLES__technique__pass__states__polygon_offset_fill_enable__AttributeData();
 
66133
 
 
66134
    return true;
 
66135
}
 
66136
 
 
66137
//---------------------------------------------------------------------
 
66138
const profile_GLES__technique__pass__states__rescale_normal_enable__AttributeData profile_GLES__technique__pass__states__rescale_normal_enable__AttributeData::DEFAULT = {false, 0};
 
66139
 
 
66140
//---------------------------------------------------------------------
 
66141
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__rescale_normal_enable( const ParserChar* text, size_t textLength )
 
66142
{
 
66143
    return true;
 
66144
}
 
66145
 
 
66146
//---------------------------------------------------------------------
 
66147
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__rescale_normal_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
66148
{
 
66149
#ifdef GENERATEDSAXPARSER_VALIDATION
 
66150
    if ( mValidate )
 
66151
    {
 
66152
 
 
66153
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__rescale_normal_enable( attributes, attributeDataPtr, validationDataPtr );
 
66154
        if ( !validationResult ) return false;
 
66155
 
 
66156
    } // validation
 
66157
#endif
 
66158
 
 
66159
profile_GLES__technique__pass__states__rescale_normal_enable__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__rescale_normal_enable__AttributeData>(attributeDataPtr);
 
66160
 
 
66161
const ParserChar** attributeArray = attributes.attributes;
 
66162
if ( attributeArray )
 
66163
{
 
66164
    while (true)
 
66165
    {
 
66166
        const ParserChar * attribute = *attributeArray;
 
66167
        if ( !attribute )
 
66168
            break;
 
66169
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
66170
        attributeArray++;
 
66171
        if ( !attributeArray )
 
66172
            return false;
 
66173
        const ParserChar* attributeValue = *attributeArray;
 
66174
        attributeArray++;
 
66175
 
 
66176
 
 
66177
    switch ( hash )
 
66178
    {
 
66179
    case HASH_ATTRIBUTE_VALUE:
 
66180
    {
 
66181
bool failed;
 
66182
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
66183
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
66184
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
66185
        HASH_ELEMENT_RESCALE_NORMAL_ENABLE,
 
66186
        HASH_ATTRIBUTE_VALUE,
 
66187
        attributeValue))
 
66188
{
 
66189
    return false;
 
66190
}
 
66191
 
 
66192
    break;
 
66193
    }
 
66194
    case HASH_ATTRIBUTE_PARAM:
 
66195
    {
 
66196
 
 
66197
attributeData->param = attributeValue;
 
66198
#ifdef GENERATEDSAXPARSER_VALIDATION
 
66199
    if ( mValidate )
 
66200
    {
 
66201
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
66202
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
66203
    {
 
66204
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
66205
            simpleTypeValidationResult,
 
66206
            HASH_ELEMENT_RESCALE_NORMAL_ENABLE,
 
66207
            HASH_ATTRIBUTE_PARAM,
 
66208
            attributeValue) )
 
66209
        {
 
66210
            return false;
 
66211
        }
 
66212
    }
 
66213
    } // validation
 
66214
#endif
 
66215
 
 
66216
    break;
 
66217
    }
 
66218
    default:
 
66219
    {
 
66220
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_RESCALE_NORMAL_ENABLE, attribute, attributeValue))
 
66221
            {return false;}
 
66222
    }
 
66223
    }
 
66224
    }
 
66225
}
 
66226
 
 
66227
 
 
66228
    return true;
 
66229
}
 
66230
 
 
66231
//---------------------------------------------------------------------
 
66232
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__rescale_normal_enable()
 
66233
{
 
66234
#ifdef GENERATEDSAXPARSER_VALIDATION
 
66235
    if ( mValidate )
 
66236
    {
 
66237
 
 
66238
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__rescale_normal_enable();
 
66239
        if ( !validationResult ) return false;
 
66240
 
 
66241
    } // validation
 
66242
#endif
 
66243
 
 
66244
    return true;
 
66245
}
 
66246
 
 
66247
//---------------------------------------------------------------------
 
66248
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__rescale_normal_enable( void* attributeData )
 
66249
{
 
66250
    profile_GLES__technique__pass__states__rescale_normal_enable__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__rescale_normal_enable__AttributeData*>(attributeData);
 
66251
 
 
66252
    typedAttributeData->~profile_GLES__technique__pass__states__rescale_normal_enable__AttributeData();
 
66253
 
 
66254
    return true;
 
66255
}
 
66256
 
 
66257
//---------------------------------------------------------------------
 
66258
const profile_GLES__technique__pass__states__sample_alpha_to_coverage_enable__AttributeData profile_GLES__technique__pass__states__sample_alpha_to_coverage_enable__AttributeData::DEFAULT = {false, 0};
 
66259
 
 
66260
//---------------------------------------------------------------------
 
66261
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__sample_alpha_to_coverage_enable( const ParserChar* text, size_t textLength )
 
66262
{
 
66263
    return true;
 
66264
}
 
66265
 
 
66266
//---------------------------------------------------------------------
 
66267
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__sample_alpha_to_coverage_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
66268
{
 
66269
#ifdef GENERATEDSAXPARSER_VALIDATION
 
66270
    if ( mValidate )
 
66271
    {
 
66272
 
 
66273
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__sample_alpha_to_coverage_enable( attributes, attributeDataPtr, validationDataPtr );
 
66274
        if ( !validationResult ) return false;
 
66275
 
 
66276
    } // validation
 
66277
#endif
 
66278
 
 
66279
profile_GLES__technique__pass__states__sample_alpha_to_coverage_enable__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__sample_alpha_to_coverage_enable__AttributeData>(attributeDataPtr);
 
66280
 
 
66281
const ParserChar** attributeArray = attributes.attributes;
 
66282
if ( attributeArray )
 
66283
{
 
66284
    while (true)
 
66285
    {
 
66286
        const ParserChar * attribute = *attributeArray;
 
66287
        if ( !attribute )
 
66288
            break;
 
66289
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
66290
        attributeArray++;
 
66291
        if ( !attributeArray )
 
66292
            return false;
 
66293
        const ParserChar* attributeValue = *attributeArray;
 
66294
        attributeArray++;
 
66295
 
 
66296
 
 
66297
    switch ( hash )
 
66298
    {
 
66299
    case HASH_ATTRIBUTE_VALUE:
 
66300
    {
 
66301
bool failed;
 
66302
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
66303
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
66304
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
66305
        HASH_ELEMENT_SAMPLE_ALPHA_TO_COVERAGE_ENABLE,
 
66306
        HASH_ATTRIBUTE_VALUE,
 
66307
        attributeValue))
 
66308
{
 
66309
    return false;
 
66310
}
 
66311
 
 
66312
    break;
 
66313
    }
 
66314
    case HASH_ATTRIBUTE_PARAM:
 
66315
    {
 
66316
 
 
66317
attributeData->param = attributeValue;
 
66318
#ifdef GENERATEDSAXPARSER_VALIDATION
 
66319
    if ( mValidate )
 
66320
    {
 
66321
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
66322
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
66323
    {
 
66324
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
66325
            simpleTypeValidationResult,
 
66326
            HASH_ELEMENT_SAMPLE_ALPHA_TO_COVERAGE_ENABLE,
 
66327
            HASH_ATTRIBUTE_PARAM,
 
66328
            attributeValue) )
 
66329
        {
 
66330
            return false;
 
66331
        }
 
66332
    }
 
66333
    } // validation
 
66334
#endif
 
66335
 
 
66336
    break;
 
66337
    }
 
66338
    default:
 
66339
    {
 
66340
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SAMPLE_ALPHA_TO_COVERAGE_ENABLE, attribute, attributeValue))
 
66341
            {return false;}
 
66342
    }
 
66343
    }
 
66344
    }
 
66345
}
 
66346
 
 
66347
 
 
66348
    return true;
 
66349
}
 
66350
 
 
66351
//---------------------------------------------------------------------
 
66352
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__sample_alpha_to_coverage_enable()
 
66353
{
 
66354
#ifdef GENERATEDSAXPARSER_VALIDATION
 
66355
    if ( mValidate )
 
66356
    {
 
66357
 
 
66358
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__sample_alpha_to_coverage_enable();
 
66359
        if ( !validationResult ) return false;
 
66360
 
 
66361
    } // validation
 
66362
#endif
 
66363
 
 
66364
    return true;
 
66365
}
 
66366
 
 
66367
//---------------------------------------------------------------------
 
66368
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__sample_alpha_to_coverage_enable( void* attributeData )
 
66369
{
 
66370
    profile_GLES__technique__pass__states__sample_alpha_to_coverage_enable__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__sample_alpha_to_coverage_enable__AttributeData*>(attributeData);
 
66371
 
 
66372
    typedAttributeData->~profile_GLES__technique__pass__states__sample_alpha_to_coverage_enable__AttributeData();
 
66373
 
 
66374
    return true;
 
66375
}
 
66376
 
 
66377
//---------------------------------------------------------------------
 
66378
const profile_GLES__technique__pass__states__sample_alpha_to_one_enable__AttributeData profile_GLES__technique__pass__states__sample_alpha_to_one_enable__AttributeData::DEFAULT = {false, 0};
 
66379
 
 
66380
//---------------------------------------------------------------------
 
66381
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__sample_alpha_to_one_enable( const ParserChar* text, size_t textLength )
 
66382
{
 
66383
    return true;
 
66384
}
 
66385
 
 
66386
//---------------------------------------------------------------------
 
66387
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__sample_alpha_to_one_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
66388
{
 
66389
#ifdef GENERATEDSAXPARSER_VALIDATION
 
66390
    if ( mValidate )
 
66391
    {
 
66392
 
 
66393
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__sample_alpha_to_one_enable( attributes, attributeDataPtr, validationDataPtr );
 
66394
        if ( !validationResult ) return false;
 
66395
 
 
66396
    } // validation
 
66397
#endif
 
66398
 
 
66399
profile_GLES__technique__pass__states__sample_alpha_to_one_enable__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__sample_alpha_to_one_enable__AttributeData>(attributeDataPtr);
 
66400
 
 
66401
const ParserChar** attributeArray = attributes.attributes;
 
66402
if ( attributeArray )
 
66403
{
 
66404
    while (true)
 
66405
    {
 
66406
        const ParserChar * attribute = *attributeArray;
 
66407
        if ( !attribute )
 
66408
            break;
 
66409
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
66410
        attributeArray++;
 
66411
        if ( !attributeArray )
 
66412
            return false;
 
66413
        const ParserChar* attributeValue = *attributeArray;
 
66414
        attributeArray++;
 
66415
 
 
66416
 
 
66417
    switch ( hash )
 
66418
    {
 
66419
    case HASH_ATTRIBUTE_VALUE:
 
66420
    {
 
66421
bool failed;
 
66422
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
66423
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
66424
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
66425
        HASH_ELEMENT_SAMPLE_ALPHA_TO_ONE_ENABLE,
 
66426
        HASH_ATTRIBUTE_VALUE,
 
66427
        attributeValue))
 
66428
{
 
66429
    return false;
 
66430
}
 
66431
 
 
66432
    break;
 
66433
    }
 
66434
    case HASH_ATTRIBUTE_PARAM:
 
66435
    {
 
66436
 
 
66437
attributeData->param = attributeValue;
 
66438
#ifdef GENERATEDSAXPARSER_VALIDATION
 
66439
    if ( mValidate )
 
66440
    {
 
66441
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
66442
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
66443
    {
 
66444
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
66445
            simpleTypeValidationResult,
 
66446
            HASH_ELEMENT_SAMPLE_ALPHA_TO_ONE_ENABLE,
 
66447
            HASH_ATTRIBUTE_PARAM,
 
66448
            attributeValue) )
 
66449
        {
 
66450
            return false;
 
66451
        }
 
66452
    }
 
66453
    } // validation
 
66454
#endif
 
66455
 
 
66456
    break;
 
66457
    }
 
66458
    default:
 
66459
    {
 
66460
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SAMPLE_ALPHA_TO_ONE_ENABLE, attribute, attributeValue))
 
66461
            {return false;}
 
66462
    }
 
66463
    }
 
66464
    }
 
66465
}
 
66466
 
 
66467
 
 
66468
    return true;
 
66469
}
 
66470
 
 
66471
//---------------------------------------------------------------------
 
66472
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__sample_alpha_to_one_enable()
 
66473
{
 
66474
#ifdef GENERATEDSAXPARSER_VALIDATION
 
66475
    if ( mValidate )
 
66476
    {
 
66477
 
 
66478
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__sample_alpha_to_one_enable();
 
66479
        if ( !validationResult ) return false;
 
66480
 
 
66481
    } // validation
 
66482
#endif
 
66483
 
 
66484
    return true;
 
66485
}
 
66486
 
 
66487
//---------------------------------------------------------------------
 
66488
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__sample_alpha_to_one_enable( void* attributeData )
 
66489
{
 
66490
    profile_GLES__technique__pass__states__sample_alpha_to_one_enable__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__sample_alpha_to_one_enable__AttributeData*>(attributeData);
 
66491
 
 
66492
    typedAttributeData->~profile_GLES__technique__pass__states__sample_alpha_to_one_enable__AttributeData();
 
66493
 
 
66494
    return true;
 
66495
}
 
66496
 
 
66497
//---------------------------------------------------------------------
 
66498
const profile_GLES__technique__pass__states__sample_coverage_enable__AttributeData profile_GLES__technique__pass__states__sample_coverage_enable__AttributeData::DEFAULT = {false, 0};
 
66499
 
 
66500
//---------------------------------------------------------------------
 
66501
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__sample_coverage_enable( const ParserChar* text, size_t textLength )
 
66502
{
 
66503
    return true;
 
66504
}
 
66505
 
 
66506
//---------------------------------------------------------------------
 
66507
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__sample_coverage_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
66508
{
 
66509
#ifdef GENERATEDSAXPARSER_VALIDATION
 
66510
    if ( mValidate )
 
66511
    {
 
66512
 
 
66513
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__sample_coverage_enable( attributes, attributeDataPtr, validationDataPtr );
 
66514
        if ( !validationResult ) return false;
 
66515
 
 
66516
    } // validation
 
66517
#endif
 
66518
 
 
66519
profile_GLES__technique__pass__states__sample_coverage_enable__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__sample_coverage_enable__AttributeData>(attributeDataPtr);
 
66520
 
 
66521
const ParserChar** attributeArray = attributes.attributes;
 
66522
if ( attributeArray )
 
66523
{
 
66524
    while (true)
 
66525
    {
 
66526
        const ParserChar * attribute = *attributeArray;
 
66527
        if ( !attribute )
 
66528
            break;
 
66529
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
66530
        attributeArray++;
 
66531
        if ( !attributeArray )
 
66532
            return false;
 
66533
        const ParserChar* attributeValue = *attributeArray;
 
66534
        attributeArray++;
 
66535
 
 
66536
 
 
66537
    switch ( hash )
 
66538
    {
 
66539
    case HASH_ATTRIBUTE_VALUE:
 
66540
    {
 
66541
bool failed;
 
66542
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
66543
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
66544
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
66545
        HASH_ELEMENT_SAMPLE_COVERAGE_ENABLE,
 
66546
        HASH_ATTRIBUTE_VALUE,
 
66547
        attributeValue))
 
66548
{
 
66549
    return false;
 
66550
}
 
66551
 
 
66552
    break;
 
66553
    }
 
66554
    case HASH_ATTRIBUTE_PARAM:
 
66555
    {
 
66556
 
 
66557
attributeData->param = attributeValue;
 
66558
#ifdef GENERATEDSAXPARSER_VALIDATION
 
66559
    if ( mValidate )
 
66560
    {
 
66561
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
66562
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
66563
    {
 
66564
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
66565
            simpleTypeValidationResult,
 
66566
            HASH_ELEMENT_SAMPLE_COVERAGE_ENABLE,
 
66567
            HASH_ATTRIBUTE_PARAM,
 
66568
            attributeValue) )
 
66569
        {
 
66570
            return false;
 
66571
        }
 
66572
    }
 
66573
    } // validation
 
66574
#endif
 
66575
 
 
66576
    break;
 
66577
    }
 
66578
    default:
 
66579
    {
 
66580
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SAMPLE_COVERAGE_ENABLE, attribute, attributeValue))
 
66581
            {return false;}
 
66582
    }
 
66583
    }
 
66584
    }
 
66585
}
 
66586
 
 
66587
 
 
66588
    return true;
 
66589
}
 
66590
 
 
66591
//---------------------------------------------------------------------
 
66592
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__sample_coverage_enable()
 
66593
{
 
66594
#ifdef GENERATEDSAXPARSER_VALIDATION
 
66595
    if ( mValidate )
 
66596
    {
 
66597
 
 
66598
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__sample_coverage_enable();
 
66599
        if ( !validationResult ) return false;
 
66600
 
 
66601
    } // validation
 
66602
#endif
 
66603
 
 
66604
    return true;
 
66605
}
 
66606
 
 
66607
//---------------------------------------------------------------------
 
66608
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__sample_coverage_enable( void* attributeData )
 
66609
{
 
66610
    profile_GLES__technique__pass__states__sample_coverage_enable__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__sample_coverage_enable__AttributeData*>(attributeData);
 
66611
 
 
66612
    typedAttributeData->~profile_GLES__technique__pass__states__sample_coverage_enable__AttributeData();
 
66613
 
 
66614
    return true;
 
66615
}
 
66616
 
 
66617
//---------------------------------------------------------------------
 
66618
const profile_GLES__technique__pass__states__scissor_test_enable__AttributeData profile_GLES__technique__pass__states__scissor_test_enable__AttributeData::DEFAULT = {false, 0};
 
66619
 
 
66620
//---------------------------------------------------------------------
 
66621
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__scissor_test_enable( const ParserChar* text, size_t textLength )
 
66622
{
 
66623
    return true;
 
66624
}
 
66625
 
 
66626
//---------------------------------------------------------------------
 
66627
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__scissor_test_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
66628
{
 
66629
#ifdef GENERATEDSAXPARSER_VALIDATION
 
66630
    if ( mValidate )
 
66631
    {
 
66632
 
 
66633
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__scissor_test_enable( attributes, attributeDataPtr, validationDataPtr );
 
66634
        if ( !validationResult ) return false;
 
66635
 
 
66636
    } // validation
 
66637
#endif
 
66638
 
 
66639
profile_GLES__technique__pass__states__scissor_test_enable__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__scissor_test_enable__AttributeData>(attributeDataPtr);
 
66640
 
 
66641
const ParserChar** attributeArray = attributes.attributes;
 
66642
if ( attributeArray )
 
66643
{
 
66644
    while (true)
 
66645
    {
 
66646
        const ParserChar * attribute = *attributeArray;
 
66647
        if ( !attribute )
 
66648
            break;
 
66649
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
66650
        attributeArray++;
 
66651
        if ( !attributeArray )
 
66652
            return false;
 
66653
        const ParserChar* attributeValue = *attributeArray;
 
66654
        attributeArray++;
 
66655
 
 
66656
 
 
66657
    switch ( hash )
 
66658
    {
 
66659
    case HASH_ATTRIBUTE_VALUE:
 
66660
    {
 
66661
bool failed;
 
66662
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
66663
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
66664
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
66665
        HASH_ELEMENT_SCISSOR_TEST_ENABLE,
 
66666
        HASH_ATTRIBUTE_VALUE,
 
66667
        attributeValue))
 
66668
{
 
66669
    return false;
 
66670
}
 
66671
 
 
66672
    break;
 
66673
    }
 
66674
    case HASH_ATTRIBUTE_PARAM:
 
66675
    {
 
66676
 
 
66677
attributeData->param = attributeValue;
 
66678
#ifdef GENERATEDSAXPARSER_VALIDATION
 
66679
    if ( mValidate )
 
66680
    {
 
66681
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
66682
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
66683
    {
 
66684
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
66685
            simpleTypeValidationResult,
 
66686
            HASH_ELEMENT_SCISSOR_TEST_ENABLE,
 
66687
            HASH_ATTRIBUTE_PARAM,
 
66688
            attributeValue) )
 
66689
        {
 
66690
            return false;
 
66691
        }
 
66692
    }
 
66693
    } // validation
 
66694
#endif
 
66695
 
 
66696
    break;
 
66697
    }
 
66698
    default:
 
66699
    {
 
66700
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SCISSOR_TEST_ENABLE, attribute, attributeValue))
 
66701
            {return false;}
 
66702
    }
 
66703
    }
 
66704
    }
 
66705
}
 
66706
 
 
66707
 
 
66708
    return true;
 
66709
}
 
66710
 
 
66711
//---------------------------------------------------------------------
 
66712
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__scissor_test_enable()
 
66713
{
 
66714
#ifdef GENERATEDSAXPARSER_VALIDATION
 
66715
    if ( mValidate )
 
66716
    {
 
66717
 
 
66718
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__scissor_test_enable();
 
66719
        if ( !validationResult ) return false;
 
66720
 
 
66721
    } // validation
 
66722
#endif
 
66723
 
 
66724
    return true;
 
66725
}
 
66726
 
 
66727
//---------------------------------------------------------------------
 
66728
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__scissor_test_enable( void* attributeData )
 
66729
{
 
66730
    profile_GLES__technique__pass__states__scissor_test_enable__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__scissor_test_enable__AttributeData*>(attributeData);
 
66731
 
 
66732
    typedAttributeData->~profile_GLES__technique__pass__states__scissor_test_enable__AttributeData();
 
66733
 
 
66734
    return true;
 
66735
}
 
66736
 
 
66737
//---------------------------------------------------------------------
 
66738
const profile_GLES__technique__pass__states__stencil_test_enable__AttributeData profile_GLES__technique__pass__states__stencil_test_enable__AttributeData::DEFAULT = {false, 0};
 
66739
 
 
66740
//---------------------------------------------------------------------
 
66741
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__states__stencil_test_enable( const ParserChar* text, size_t textLength )
 
66742
{
 
66743
    return true;
 
66744
}
 
66745
 
 
66746
//---------------------------------------------------------------------
 
66747
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__states__stencil_test_enable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
66748
{
 
66749
#ifdef GENERATEDSAXPARSER_VALIDATION
 
66750
    if ( mValidate )
 
66751
    {
 
66752
 
 
66753
        bool validationResult = _validateBegin__profile_GLES__technique__pass__states__stencil_test_enable( attributes, attributeDataPtr, validationDataPtr );
 
66754
        if ( !validationResult ) return false;
 
66755
 
 
66756
    } // validation
 
66757
#endif
 
66758
 
 
66759
profile_GLES__technique__pass__states__stencil_test_enable__AttributeData* attributeData = newData<profile_GLES__technique__pass__states__stencil_test_enable__AttributeData>(attributeDataPtr);
 
66760
 
 
66761
const ParserChar** attributeArray = attributes.attributes;
 
66762
if ( attributeArray )
 
66763
{
 
66764
    while (true)
 
66765
    {
 
66766
        const ParserChar * attribute = *attributeArray;
 
66767
        if ( !attribute )
 
66768
            break;
 
66769
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
66770
        attributeArray++;
 
66771
        if ( !attributeArray )
 
66772
            return false;
 
66773
        const ParserChar* attributeValue = *attributeArray;
 
66774
        attributeArray++;
 
66775
 
 
66776
 
 
66777
    switch ( hash )
 
66778
    {
 
66779
    case HASH_ATTRIBUTE_VALUE:
 
66780
    {
 
66781
bool failed;
 
66782
attributeData->value = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
66783
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
66784
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
66785
        HASH_ELEMENT_STENCIL_TEST_ENABLE,
 
66786
        HASH_ATTRIBUTE_VALUE,
 
66787
        attributeValue))
 
66788
{
 
66789
    return false;
 
66790
}
 
66791
 
 
66792
    break;
 
66793
    }
 
66794
    case HASH_ATTRIBUTE_PARAM:
 
66795
    {
 
66796
 
 
66797
attributeData->param = attributeValue;
 
66798
#ifdef GENERATEDSAXPARSER_VALIDATION
 
66799
    if ( mValidate )
 
66800
    {
 
66801
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->param, strlen(attributeData->param));
 
66802
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
66803
    {
 
66804
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
66805
            simpleTypeValidationResult,
 
66806
            HASH_ELEMENT_STENCIL_TEST_ENABLE,
 
66807
            HASH_ATTRIBUTE_PARAM,
 
66808
            attributeValue) )
 
66809
        {
 
66810
            return false;
 
66811
        }
 
66812
    }
 
66813
    } // validation
 
66814
#endif
 
66815
 
 
66816
    break;
 
66817
    }
 
66818
    default:
 
66819
    {
 
66820
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_STENCIL_TEST_ENABLE, attribute, attributeValue))
 
66821
            {return false;}
 
66822
    }
 
66823
    }
 
66824
    }
 
66825
}
 
66826
 
 
66827
 
 
66828
    return true;
 
66829
}
 
66830
 
 
66831
//---------------------------------------------------------------------
 
66832
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__states__stencil_test_enable()
 
66833
{
 
66834
#ifdef GENERATEDSAXPARSER_VALIDATION
 
66835
    if ( mValidate )
 
66836
    {
 
66837
 
 
66838
        bool validationResult = _validateEnd__profile_GLES__technique__pass__states__stencil_test_enable();
 
66839
        if ( !validationResult ) return false;
 
66840
 
 
66841
    } // validation
 
66842
#endif
 
66843
 
 
66844
    return true;
 
66845
}
 
66846
 
 
66847
//---------------------------------------------------------------------
 
66848
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__states__stencil_test_enable( void* attributeData )
 
66849
{
 
66850
    profile_GLES__technique__pass__states__stencil_test_enable__AttributeData* typedAttributeData = static_cast<profile_GLES__technique__pass__states__stencil_test_enable__AttributeData*>(attributeData);
 
66851
 
 
66852
    typedAttributeData->~profile_GLES__technique__pass__states__stencil_test_enable__AttributeData();
 
66853
 
 
66854
    return true;
 
66855
}
 
66856
 
 
66857
//---------------------------------------------------------------------
 
66858
bool ColladaParserAutoGen15Private::_data__profile_GLES__technique__pass__evaluate( const ParserChar* text, size_t textLength )
 
66859
{
 
66860
    return true;
 
66861
}
 
66862
 
 
66863
//---------------------------------------------------------------------
 
66864
bool ColladaParserAutoGen15Private::_preBegin__profile_GLES__technique__pass__evaluate( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
66865
{
 
66866
#ifdef GENERATEDSAXPARSER_VALIDATION
 
66867
    if ( mValidate )
 
66868
    {
 
66869
 
 
66870
        bool validationResult = _validateBegin__profile_GLES__technique__pass__evaluate( attributes, attributeDataPtr, validationDataPtr );
 
66871
        if ( !validationResult ) return false;
 
66872
 
 
66873
    } // validation
 
66874
#endif
 
66875
 
 
66876
    return true;
 
66877
}
 
66878
 
 
66879
//---------------------------------------------------------------------
 
66880
bool ColladaParserAutoGen15Private::_preEnd__profile_GLES__technique__pass__evaluate()
 
66881
{
 
66882
#ifdef GENERATEDSAXPARSER_VALIDATION
 
66883
    if ( mValidate )
 
66884
    {
 
66885
 
 
66886
        bool validationResult = _validateEnd__profile_GLES__technique__pass__evaluate();
 
66887
        if ( !validationResult ) return false;
 
66888
 
 
66889
    } // validation
 
66890
#endif
 
66891
 
 
66892
    return true;
 
66893
}
 
66894
 
 
66895
//---------------------------------------------------------------------
 
66896
bool ColladaParserAutoGen15Private::_freeAttributes__profile_GLES__technique__pass__evaluate( void* attributeData )
 
66897
{
 
66898
    return true;
 
66899
}
 
66900
 
 
66901
//---------------------------------------------------------------------
 
66902
const library_force_fields__AttributeData library_force_fields__AttributeData::DEFAULT = {0, 0};
 
66903
 
 
66904
//---------------------------------------------------------------------
 
66905
bool ColladaParserAutoGen15Private::_data__library_force_fields( const ParserChar* text, size_t textLength )
 
66906
{
 
66907
    return true;
 
66908
}
 
66909
 
 
66910
//---------------------------------------------------------------------
 
66911
bool ColladaParserAutoGen15Private::_preBegin__library_force_fields( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
66912
{
 
66913
#ifdef GENERATEDSAXPARSER_VALIDATION
 
66914
    if ( mValidate )
 
66915
    {
 
66916
 
 
66917
        bool validationResult = _validateBegin__library_force_fields( attributes, attributeDataPtr, validationDataPtr );
 
66918
        if ( !validationResult ) return false;
 
66919
 
 
66920
    } // validation
 
66921
#endif
 
66922
 
 
66923
library_force_fields__AttributeData* attributeData = newData<library_force_fields__AttributeData>(attributeDataPtr);
 
66924
 
 
66925
const ParserChar** attributeArray = attributes.attributes;
 
66926
if ( attributeArray )
 
66927
{
 
66928
    while (true)
 
66929
    {
 
66930
        const ParserChar * attribute = *attributeArray;
 
66931
        if ( !attribute )
 
66932
            break;
 
66933
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
66934
        attributeArray++;
 
66935
        if ( !attributeArray )
 
66936
            return false;
 
66937
        const ParserChar* attributeValue = *attributeArray;
 
66938
        attributeArray++;
 
66939
 
 
66940
 
 
66941
    switch ( hash )
 
66942
    {
 
66943
    case HASH_ATTRIBUTE_ID:
 
66944
    {
 
66945
 
 
66946
attributeData->id = attributeValue;
 
66947
 
 
66948
    break;
 
66949
    }
 
66950
    case HASH_ATTRIBUTE_NAME:
 
66951
    {
 
66952
 
 
66953
attributeData->name = attributeValue;
 
66954
 
 
66955
    break;
 
66956
    }
 
66957
    default:
 
66958
    {
 
66959
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIBRARY_FORCE_FIELDS, attribute, attributeValue))
 
66960
            {return false;}
 
66961
    }
 
66962
    }
 
66963
    }
 
66964
}
 
66965
 
 
66966
 
 
66967
    return true;
 
66968
}
 
66969
 
 
66970
//---------------------------------------------------------------------
 
66971
bool ColladaParserAutoGen15Private::_preEnd__library_force_fields()
 
66972
{
 
66973
#ifdef GENERATEDSAXPARSER_VALIDATION
 
66974
    if ( mValidate )
 
66975
    {
 
66976
 
 
66977
        bool validationResult = _validateEnd__library_force_fields();
 
66978
        if ( !validationResult ) return false;
 
66979
 
 
66980
    } // validation
 
66981
#endif
 
66982
 
 
66983
    return true;
 
66984
}
 
66985
 
 
66986
//---------------------------------------------------------------------
 
66987
bool ColladaParserAutoGen15Private::_freeAttributes__library_force_fields( void* attributeData )
 
66988
{
 
66989
    library_force_fields__AttributeData* typedAttributeData = static_cast<library_force_fields__AttributeData*>(attributeData);
 
66990
 
 
66991
    typedAttributeData->~library_force_fields__AttributeData();
 
66992
 
 
66993
    return true;
 
66994
}
 
66995
 
 
66996
//---------------------------------------------------------------------
 
66997
const force_field__AttributeData force_field__AttributeData::DEFAULT = {0, 0};
 
66998
 
 
66999
//---------------------------------------------------------------------
 
67000
bool ColladaParserAutoGen15Private::_data__force_field( const ParserChar* text, size_t textLength )
 
67001
{
 
67002
    return true;
 
67003
}
 
67004
 
 
67005
//---------------------------------------------------------------------
 
67006
bool ColladaParserAutoGen15Private::_preBegin__force_field( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
67007
{
 
67008
#ifdef GENERATEDSAXPARSER_VALIDATION
 
67009
    if ( mValidate )
 
67010
    {
 
67011
 
 
67012
        bool validationResult = _validateBegin__force_field( attributes, attributeDataPtr, validationDataPtr );
 
67013
        if ( !validationResult ) return false;
 
67014
 
 
67015
    } // validation
 
67016
#endif
 
67017
 
 
67018
force_field__AttributeData* attributeData = newData<force_field__AttributeData>(attributeDataPtr);
 
67019
 
 
67020
const ParserChar** attributeArray = attributes.attributes;
 
67021
if ( attributeArray )
 
67022
{
 
67023
    while (true)
 
67024
    {
 
67025
        const ParserChar * attribute = *attributeArray;
 
67026
        if ( !attribute )
 
67027
            break;
 
67028
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
67029
        attributeArray++;
 
67030
        if ( !attributeArray )
 
67031
            return false;
 
67032
        const ParserChar* attributeValue = *attributeArray;
 
67033
        attributeArray++;
 
67034
 
 
67035
 
 
67036
    switch ( hash )
 
67037
    {
 
67038
    case HASH_ATTRIBUTE_ID:
 
67039
    {
 
67040
 
 
67041
attributeData->id = attributeValue;
 
67042
 
 
67043
    break;
 
67044
    }
 
67045
    case HASH_ATTRIBUTE_NAME:
 
67046
    {
 
67047
 
 
67048
attributeData->name = attributeValue;
 
67049
 
 
67050
    break;
 
67051
    }
 
67052
    default:
 
67053
    {
 
67054
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FORCE_FIELD, attribute, attributeValue))
 
67055
            {return false;}
 
67056
    }
 
67057
    }
 
67058
    }
 
67059
}
 
67060
 
 
67061
 
 
67062
    return true;
 
67063
}
 
67064
 
 
67065
//---------------------------------------------------------------------
 
67066
bool ColladaParserAutoGen15Private::_preEnd__force_field()
 
67067
{
 
67068
#ifdef GENERATEDSAXPARSER_VALIDATION
 
67069
    if ( mValidate )
 
67070
    {
 
67071
 
 
67072
        bool validationResult = _validateEnd__force_field();
 
67073
        if ( !validationResult ) return false;
 
67074
 
 
67075
    } // validation
 
67076
#endif
 
67077
 
 
67078
    return true;
 
67079
}
 
67080
 
 
67081
//---------------------------------------------------------------------
 
67082
bool ColladaParserAutoGen15Private::_freeAttributes__force_field( void* attributeData )
 
67083
{
 
67084
    force_field__AttributeData* typedAttributeData = static_cast<force_field__AttributeData*>(attributeData);
 
67085
 
 
67086
    typedAttributeData->~force_field__AttributeData();
 
67087
 
 
67088
    return true;
 
67089
}
 
67090
 
 
67091
//---------------------------------------------------------------------
 
67092
const library_images__AttributeData library_images__AttributeData::DEFAULT = {0, 0};
 
67093
 
 
67094
//---------------------------------------------------------------------
 
67095
bool ColladaParserAutoGen15Private::_data__library_images( const ParserChar* text, size_t textLength )
 
67096
{
 
67097
    return true;
 
67098
}
 
67099
 
 
67100
//---------------------------------------------------------------------
 
67101
bool ColladaParserAutoGen15Private::_preBegin__library_images( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
67102
{
 
67103
#ifdef GENERATEDSAXPARSER_VALIDATION
 
67104
    if ( mValidate )
 
67105
    {
 
67106
 
 
67107
        bool validationResult = _validateBegin__library_images( attributes, attributeDataPtr, validationDataPtr );
 
67108
        if ( !validationResult ) return false;
 
67109
 
 
67110
    } // validation
 
67111
#endif
 
67112
 
 
67113
library_images__AttributeData* attributeData = newData<library_images__AttributeData>(attributeDataPtr);
 
67114
 
 
67115
const ParserChar** attributeArray = attributes.attributes;
 
67116
if ( attributeArray )
 
67117
{
 
67118
    while (true)
 
67119
    {
 
67120
        const ParserChar * attribute = *attributeArray;
 
67121
        if ( !attribute )
 
67122
            break;
 
67123
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
67124
        attributeArray++;
 
67125
        if ( !attributeArray )
 
67126
            return false;
 
67127
        const ParserChar* attributeValue = *attributeArray;
 
67128
        attributeArray++;
 
67129
 
 
67130
 
 
67131
    switch ( hash )
 
67132
    {
 
67133
    case HASH_ATTRIBUTE_ID:
 
67134
    {
 
67135
 
 
67136
attributeData->id = attributeValue;
 
67137
 
 
67138
    break;
 
67139
    }
 
67140
    case HASH_ATTRIBUTE_NAME:
 
67141
    {
 
67142
 
 
67143
attributeData->name = attributeValue;
 
67144
 
 
67145
    break;
 
67146
    }
 
67147
    default:
 
67148
    {
 
67149
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIBRARY_IMAGES, attribute, attributeValue))
 
67150
            {return false;}
 
67151
    }
 
67152
    }
 
67153
    }
 
67154
}
 
67155
 
 
67156
 
 
67157
    return true;
 
67158
}
 
67159
 
 
67160
//---------------------------------------------------------------------
 
67161
bool ColladaParserAutoGen15Private::_preEnd__library_images()
 
67162
{
 
67163
#ifdef GENERATEDSAXPARSER_VALIDATION
 
67164
    if ( mValidate )
 
67165
    {
 
67166
 
 
67167
        bool validationResult = _validateEnd__library_images();
 
67168
        if ( !validationResult ) return false;
 
67169
 
 
67170
    } // validation
 
67171
#endif
 
67172
 
 
67173
    return true;
 
67174
}
 
67175
 
 
67176
//---------------------------------------------------------------------
 
67177
bool ColladaParserAutoGen15Private::_freeAttributes__library_images( void* attributeData )
 
67178
{
 
67179
    library_images__AttributeData* typedAttributeData = static_cast<library_images__AttributeData*>(attributeData);
 
67180
 
 
67181
    typedAttributeData->~library_images__AttributeData();
 
67182
 
 
67183
    return true;
 
67184
}
 
67185
 
 
67186
//---------------------------------------------------------------------
 
67187
const image____image_type__AttributeData image____image_type__AttributeData::DEFAULT = {0, 0, 0};
 
67188
 
 
67189
//---------------------------------------------------------------------
 
67190
bool ColladaParserAutoGen15Private::_data__image____image_type( const ParserChar* text, size_t textLength )
 
67191
{
 
67192
    return true;
 
67193
}
 
67194
 
 
67195
//---------------------------------------------------------------------
 
67196
bool ColladaParserAutoGen15Private::_preBegin__image____image_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
67197
{
 
67198
#ifdef GENERATEDSAXPARSER_VALIDATION
 
67199
    if ( mValidate )
 
67200
    {
 
67201
 
 
67202
        bool validationResult = _validateBegin__image____image_type( attributes, attributeDataPtr, validationDataPtr );
 
67203
        if ( !validationResult ) return false;
 
67204
 
 
67205
    } // validation
 
67206
#endif
 
67207
 
 
67208
image____image_type__AttributeData* attributeData = newData<image____image_type__AttributeData>(attributeDataPtr);
 
67209
 
 
67210
const ParserChar** attributeArray = attributes.attributes;
 
67211
if ( attributeArray )
 
67212
{
 
67213
    while (true)
 
67214
    {
 
67215
        const ParserChar * attribute = *attributeArray;
 
67216
        if ( !attribute )
 
67217
            break;
 
67218
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
67219
        attributeArray++;
 
67220
        if ( !attributeArray )
 
67221
            return false;
 
67222
        const ParserChar* attributeValue = *attributeArray;
 
67223
        attributeArray++;
 
67224
 
 
67225
 
 
67226
    switch ( hash )
 
67227
    {
 
67228
    case HASH_ATTRIBUTE_ID:
 
67229
    {
 
67230
 
 
67231
attributeData->id = attributeValue;
 
67232
 
 
67233
    break;
 
67234
    }
 
67235
    case HASH_ATTRIBUTE_SID:
 
67236
    {
 
67237
 
 
67238
attributeData->sid = attributeValue;
 
67239
#ifdef GENERATEDSAXPARSER_VALIDATION
 
67240
    if ( mValidate )
 
67241
    {
 
67242
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
67243
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
67244
    {
 
67245
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
67246
            simpleTypeValidationResult,
 
67247
            HASH_ELEMENT_IMAGE,
 
67248
            HASH_ATTRIBUTE_SID,
 
67249
            attributeValue) )
 
67250
        {
 
67251
            return false;
 
67252
        }
 
67253
    }
 
67254
    } // validation
 
67255
#endif
 
67256
 
 
67257
    break;
 
67258
    }
 
67259
    case HASH_ATTRIBUTE_NAME:
 
67260
    {
 
67261
 
 
67262
attributeData->name = attributeValue;
 
67263
 
 
67264
    break;
 
67265
    }
 
67266
    default:
 
67267
    {
 
67268
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_IMAGE, attribute, attributeValue))
 
67269
            {return false;}
 
67270
    }
 
67271
    }
 
67272
    }
 
67273
}
 
67274
 
 
67275
 
 
67276
    return true;
 
67277
}
 
67278
 
 
67279
//---------------------------------------------------------------------
 
67280
bool ColladaParserAutoGen15Private::_preEnd__image____image_type()
 
67281
{
 
67282
#ifdef GENERATEDSAXPARSER_VALIDATION
 
67283
    if ( mValidate )
 
67284
    {
 
67285
 
 
67286
        bool validationResult = _validateEnd__image____image_type();
 
67287
        if ( !validationResult ) return false;
 
67288
 
 
67289
    } // validation
 
67290
#endif
 
67291
 
 
67292
    return true;
 
67293
}
 
67294
 
 
67295
//---------------------------------------------------------------------
 
67296
bool ColladaParserAutoGen15Private::_freeAttributes__image____image_type( void* attributeData )
 
67297
{
 
67298
    image____image_type__AttributeData* typedAttributeData = static_cast<image____image_type__AttributeData*>(attributeData);
 
67299
 
 
67300
    typedAttributeData->~image____image_type__AttributeData();
 
67301
 
 
67302
    return true;
 
67303
}
 
67304
 
 
67305
//---------------------------------------------------------------------
 
67306
const renderable__AttributeData renderable__AttributeData::DEFAULT = {0, 0};
 
67307
 
 
67308
//---------------------------------------------------------------------
 
67309
bool ColladaParserAutoGen15Private::_data__renderable( const ParserChar* text, size_t textLength )
 
67310
{
 
67311
    return true;
 
67312
}
 
67313
 
 
67314
//---------------------------------------------------------------------
 
67315
bool ColladaParserAutoGen15Private::_preBegin__renderable( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
67316
{
 
67317
#ifdef GENERATEDSAXPARSER_VALIDATION
 
67318
    if ( mValidate )
 
67319
    {
 
67320
 
 
67321
        bool validationResult = _validateBegin__renderable( attributes, attributeDataPtr, validationDataPtr );
 
67322
        if ( !validationResult ) return false;
 
67323
 
 
67324
    } // validation
 
67325
#endif
 
67326
 
 
67327
renderable__AttributeData* attributeData = newData<renderable__AttributeData>(attributeDataPtr);
 
67328
 
 
67329
const ParserChar** attributeArray = attributes.attributes;
 
67330
if ( attributeArray )
 
67331
{
 
67332
    while (true)
 
67333
    {
 
67334
        const ParserChar * attribute = *attributeArray;
 
67335
        if ( !attribute )
 
67336
            break;
 
67337
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
67338
        attributeArray++;
 
67339
        if ( !attributeArray )
 
67340
            return false;
 
67341
        const ParserChar* attributeValue = *attributeArray;
 
67342
        attributeArray++;
 
67343
 
 
67344
 
 
67345
    switch ( hash )
 
67346
    {
 
67347
    case HASH_ATTRIBUTE_SHARE:
 
67348
    {
 
67349
bool failed;
 
67350
attributeData->share = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
67351
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
67352
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
67353
        HASH_ELEMENT_RENDERABLE,
 
67354
        HASH_ATTRIBUTE_SHARE,
 
67355
        attributeValue))
 
67356
{
 
67357
    return false;
 
67358
}
 
67359
if ( !failed )
 
67360
    attributeData->present_attributes |= renderable__AttributeData::ATTRIBUTE_SHARE_PRESENT;
 
67361
 
 
67362
    break;
 
67363
    }
 
67364
    default:
 
67365
    {
 
67366
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_RENDERABLE, attribute, attributeValue))
 
67367
            {return false;}
 
67368
    }
 
67369
    }
 
67370
    }
 
67371
}
 
67372
if ( (attributeData->present_attributes & renderable__AttributeData::ATTRIBUTE_SHARE_PRESENT) == 0 )
 
67373
{
 
67374
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_RENDERABLE, HASH_ATTRIBUTE_SHARE, 0 ) )
 
67375
        return false;
 
67376
}
 
67377
 
 
67378
 
 
67379
    return true;
 
67380
}
 
67381
 
 
67382
//---------------------------------------------------------------------
 
67383
bool ColladaParserAutoGen15Private::_preEnd__renderable()
 
67384
{
 
67385
#ifdef GENERATEDSAXPARSER_VALIDATION
 
67386
    if ( mValidate )
 
67387
    {
 
67388
 
 
67389
        bool validationResult = _validateEnd__renderable();
 
67390
        if ( !validationResult ) return false;
 
67391
 
 
67392
    } // validation
 
67393
#endif
 
67394
 
 
67395
    return true;
 
67396
}
 
67397
 
 
67398
//---------------------------------------------------------------------
 
67399
bool ColladaParserAutoGen15Private::_freeAttributes__renderable( void* attributeData )
 
67400
{
 
67401
    renderable__AttributeData* typedAttributeData = static_cast<renderable__AttributeData*>(attributeData);
 
67402
 
 
67403
    typedAttributeData->~renderable__AttributeData();
 
67404
 
 
67405
    return true;
 
67406
}
 
67407
 
 
67408
//---------------------------------------------------------------------
 
67409
const image_type____init_from__AttributeData image_type____init_from__AttributeData::DEFAULT = {true};
 
67410
 
 
67411
//---------------------------------------------------------------------
 
67412
bool ColladaParserAutoGen15Private::_data__image_type____init_from( const ParserChar* text, size_t textLength )
 
67413
{
 
67414
    return true;
 
67415
}
 
67416
 
 
67417
//---------------------------------------------------------------------
 
67418
bool ColladaParserAutoGen15Private::_preBegin__image_type____init_from( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
67419
{
 
67420
#ifdef GENERATEDSAXPARSER_VALIDATION
 
67421
    if ( mValidate )
 
67422
    {
 
67423
 
 
67424
        bool validationResult = _validateBegin__image_type____init_from( attributes, attributeDataPtr, validationDataPtr );
 
67425
        if ( !validationResult ) return false;
 
67426
 
 
67427
    } // validation
 
67428
#endif
 
67429
 
 
67430
image_type____init_from__AttributeData* attributeData = newData<image_type____init_from__AttributeData>(attributeDataPtr);
 
67431
 
 
67432
const ParserChar** attributeArray = attributes.attributes;
 
67433
if ( attributeArray )
 
67434
{
 
67435
    while (true)
 
67436
    {
 
67437
        const ParserChar * attribute = *attributeArray;
 
67438
        if ( !attribute )
 
67439
            break;
 
67440
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
67441
        attributeArray++;
 
67442
        if ( !attributeArray )
 
67443
            return false;
 
67444
        const ParserChar* attributeValue = *attributeArray;
 
67445
        attributeArray++;
 
67446
 
 
67447
 
 
67448
    switch ( hash )
 
67449
    {
 
67450
    case HASH_ATTRIBUTE_MIPS_GENERATE:
 
67451
    {
 
67452
bool failed;
 
67453
attributeData->mips_generate = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
67454
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
67455
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
67456
        HASH_ELEMENT_INIT_FROM,
 
67457
        HASH_ATTRIBUTE_MIPS_GENERATE,
 
67458
        attributeValue))
 
67459
{
 
67460
    return false;
 
67461
}
 
67462
 
 
67463
    break;
 
67464
    }
 
67465
    default:
 
67466
    {
 
67467
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_INIT_FROM, attribute, attributeValue))
 
67468
            {return false;}
 
67469
    }
 
67470
    }
 
67471
    }
 
67472
}
 
67473
 
 
67474
 
 
67475
    return true;
 
67476
}
 
67477
 
 
67478
//---------------------------------------------------------------------
 
67479
bool ColladaParserAutoGen15Private::_preEnd__image_type____init_from()
 
67480
{
 
67481
#ifdef GENERATEDSAXPARSER_VALIDATION
 
67482
    if ( mValidate )
 
67483
    {
 
67484
 
 
67485
        bool validationResult = _validateEnd__image_type____init_from();
 
67486
        if ( !validationResult ) return false;
 
67487
 
 
67488
    } // validation
 
67489
#endif
 
67490
 
 
67491
    return true;
 
67492
}
 
67493
 
 
67494
//---------------------------------------------------------------------
 
67495
bool ColladaParserAutoGen15Private::_freeAttributes__image_type____init_from( void* attributeData )
 
67496
{
 
67497
    image_type____init_from__AttributeData* typedAttributeData = static_cast<image_type____init_from__AttributeData*>(attributeData);
 
67498
 
 
67499
    typedAttributeData->~image_type____init_from__AttributeData();
 
67500
 
 
67501
    return true;
 
67502
}
 
67503
 
 
67504
//---------------------------------------------------------------------
 
67505
const library_images__image__init_from__hex__AttributeData library_images__image__init_from__hex__AttributeData::DEFAULT = {0};
 
67506
 
 
67507
//---------------------------------------------------------------------
 
67508
bool ColladaParserAutoGen15Private::_data__library_images__image__init_from__hex( const ParserChar* text, size_t textLength )
 
67509
{
 
67510
#ifdef GENERATEDSAXPARSER_VALIDATION
 
67511
    if ( mValidate )
 
67512
    {
 
67513
return characterData2Uint8Data(text, textLength, &ColladaParserAutoGen15::data__library_images__image__init_from__hex, 0, 0, 0);
 
67514
    }
 
67515
    else
 
67516
    {
 
67517
return characterData2Uint8Data(text, textLength, &ColladaParserAutoGen15::data__library_images__image__init_from__hex);
 
67518
    }
 
67519
#else
 
67520
    {
 
67521
return characterData2Uint8Data(text, textLength, &ColladaParserAutoGen15::data__library_images__image__init_from__hex);
 
67522
    } // validation
 
67523
#endif
 
67524
 
 
67525
}
 
67526
 
 
67527
//---------------------------------------------------------------------
 
67528
bool ColladaParserAutoGen15Private::_preBegin__library_images__image__init_from__hex( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
67529
{
 
67530
#ifdef GENERATEDSAXPARSER_VALIDATION
 
67531
    if ( mValidate )
 
67532
    {
 
67533
 
 
67534
        bool validationResult = _validateBegin__library_images__image__init_from__hex( attributes, attributeDataPtr, validationDataPtr );
 
67535
        if ( !validationResult ) return false;
 
67536
 
 
67537
    } // validation
 
67538
#endif
 
67539
 
 
67540
library_images__image__init_from__hex__AttributeData* attributeData = newData<library_images__image__init_from__hex__AttributeData>(attributeDataPtr);
 
67541
 
 
67542
const ParserChar** attributeArray = attributes.attributes;
 
67543
if ( attributeArray )
 
67544
{
 
67545
    while (true)
 
67546
    {
 
67547
        const ParserChar * attribute = *attributeArray;
 
67548
        if ( !attribute )
 
67549
            break;
 
67550
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
67551
        attributeArray++;
 
67552
        if ( !attributeArray )
 
67553
            return false;
 
67554
        const ParserChar* attributeValue = *attributeArray;
 
67555
        attributeArray++;
 
67556
 
 
67557
 
 
67558
    switch ( hash )
 
67559
    {
 
67560
    case HASH_ATTRIBUTE_FORMAT:
 
67561
    {
 
67562
 
 
67563
attributeData->format = attributeValue;
 
67564
 
 
67565
    break;
 
67566
    }
 
67567
    default:
 
67568
    {
 
67569
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_HEX, attribute, attributeValue))
 
67570
            {return false;}
 
67571
    }
 
67572
    }
 
67573
    }
 
67574
}
 
67575
if ( !attributeData->format )
 
67576
{
 
67577
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_HEX, HASH_ATTRIBUTE_FORMAT, 0 ) )
 
67578
        return false;
 
67579
}
 
67580
 
 
67581
 
 
67582
    return true;
 
67583
}
 
67584
 
 
67585
//---------------------------------------------------------------------
 
67586
bool ColladaParserAutoGen15Private::_preEnd__library_images__image__init_from__hex()
 
67587
{
 
67588
#ifdef GENERATEDSAXPARSER_VALIDATION
 
67589
    if ( mValidate )
 
67590
    {
 
67591
 
 
67592
        bool validationResult = _validateEnd__library_images__image__init_from__hex();
 
67593
        if ( !validationResult ) return false;
 
67594
 
 
67595
    } // validation
 
67596
#endif
 
67597
 
 
67598
#ifdef GENERATEDSAXPARSER_VALIDATION
 
67599
    if ( mValidate )
 
67600
    {
 
67601
bool returnValue = uint8DataEnd( &ColladaParserAutoGen15::data__library_images__image__init_from__hex, 0, 0, 0 );
 
67602
        return returnValue;
 
67603
    }
 
67604
    else
 
67605
    {
 
67606
return uint8DataEnd( &ColladaParserAutoGen15::data__library_images__image__init_from__hex );
 
67607
    }
 
67608
#else
 
67609
    {
 
67610
return uint8DataEnd( &ColladaParserAutoGen15::data__library_images__image__init_from__hex );
 
67611
    } // validation
 
67612
#endif
 
67613
 
 
67614
}
 
67615
 
 
67616
//---------------------------------------------------------------------
 
67617
bool ColladaParserAutoGen15Private::_freeAttributes__library_images__image__init_from__hex( void* attributeData )
 
67618
{
 
67619
    library_images__image__init_from__hex__AttributeData* typedAttributeData = static_cast<library_images__image__init_from__hex__AttributeData*>(attributeData);
 
67620
 
 
67621
    typedAttributeData->~library_images__image__init_from__hex__AttributeData();
 
67622
 
 
67623
    return true;
 
67624
}
 
67625
 
 
67626
//---------------------------------------------------------------------
 
67627
bool ColladaParserAutoGen15Private::_data__create_2d( const ParserChar* text, size_t textLength )
 
67628
{
 
67629
    return true;
 
67630
}
 
67631
 
 
67632
//---------------------------------------------------------------------
 
67633
bool ColladaParserAutoGen15Private::_preBegin__create_2d( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
67634
{
 
67635
#ifdef GENERATEDSAXPARSER_VALIDATION
 
67636
    if ( mValidate )
 
67637
    {
 
67638
 
 
67639
        bool validationResult = _validateBegin__create_2d( attributes, attributeDataPtr, validationDataPtr );
 
67640
        if ( !validationResult ) return false;
 
67641
 
 
67642
    } // validation
 
67643
#endif
 
67644
 
 
67645
    return true;
 
67646
}
 
67647
 
 
67648
//---------------------------------------------------------------------
 
67649
bool ColladaParserAutoGen15Private::_preEnd__create_2d()
 
67650
{
 
67651
#ifdef GENERATEDSAXPARSER_VALIDATION
 
67652
    if ( mValidate )
 
67653
    {
 
67654
 
 
67655
        bool validationResult = _validateEnd__create_2d();
 
67656
        if ( !validationResult ) return false;
 
67657
 
 
67658
    } // validation
 
67659
#endif
 
67660
 
 
67661
    return true;
 
67662
}
 
67663
 
 
67664
//---------------------------------------------------------------------
 
67665
bool ColladaParserAutoGen15Private::_freeAttributes__create_2d( void* attributeData )
 
67666
{
 
67667
    return true;
 
67668
}
 
67669
 
 
67670
//---------------------------------------------------------------------
 
67671
const size_exact__AttributeData size_exact__AttributeData::DEFAULT = {0, 0, 0};
 
67672
 
 
67673
//---------------------------------------------------------------------
 
67674
bool ColladaParserAutoGen15Private::_data__size_exact( const ParserChar* text, size_t textLength )
 
67675
{
 
67676
    return true;
 
67677
}
 
67678
 
 
67679
//---------------------------------------------------------------------
 
67680
bool ColladaParserAutoGen15Private::_preBegin__size_exact( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
67681
{
 
67682
#ifdef GENERATEDSAXPARSER_VALIDATION
 
67683
    if ( mValidate )
 
67684
    {
 
67685
 
 
67686
        bool validationResult = _validateBegin__size_exact( attributes, attributeDataPtr, validationDataPtr );
 
67687
        if ( !validationResult ) return false;
 
67688
 
 
67689
    } // validation
 
67690
#endif
 
67691
 
 
67692
size_exact__AttributeData* attributeData = newData<size_exact__AttributeData>(attributeDataPtr);
 
67693
 
 
67694
const ParserChar** attributeArray = attributes.attributes;
 
67695
if ( attributeArray )
 
67696
{
 
67697
    while (true)
 
67698
    {
 
67699
        const ParserChar * attribute = *attributeArray;
 
67700
        if ( !attribute )
 
67701
            break;
 
67702
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
67703
        attributeArray++;
 
67704
        if ( !attributeArray )
 
67705
            return false;
 
67706
        const ParserChar* attributeValue = *attributeArray;
 
67707
        attributeArray++;
 
67708
 
 
67709
 
 
67710
    switch ( hash )
 
67711
    {
 
67712
    case HASH_ATTRIBUTE_WIDTH:
 
67713
    {
 
67714
bool failed;
 
67715
attributeData->width = GeneratedSaxParser::Utils::toUint32(attributeValue, failed);
 
67716
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
67717
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
67718
        HASH_ELEMENT_SIZE_EXACT,
 
67719
        HASH_ATTRIBUTE_WIDTH,
 
67720
        attributeValue))
 
67721
{
 
67722
    return false;
 
67723
}
 
67724
if ( !failed )
 
67725
    attributeData->present_attributes |= size_exact__AttributeData::ATTRIBUTE_WIDTH_PRESENT;
 
67726
 
 
67727
    break;
 
67728
    }
 
67729
    case HASH_ATTRIBUTE_HEIGHT:
 
67730
    {
 
67731
bool failed;
 
67732
attributeData->height = GeneratedSaxParser::Utils::toUint32(attributeValue, failed);
 
67733
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
67734
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
67735
        HASH_ELEMENT_SIZE_EXACT,
 
67736
        HASH_ATTRIBUTE_HEIGHT,
 
67737
        attributeValue))
 
67738
{
 
67739
    return false;
 
67740
}
 
67741
if ( !failed )
 
67742
    attributeData->present_attributes |= size_exact__AttributeData::ATTRIBUTE_HEIGHT_PRESENT;
 
67743
 
 
67744
    break;
 
67745
    }
 
67746
    default:
 
67747
    {
 
67748
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SIZE_EXACT, attribute, attributeValue))
 
67749
            {return false;}
 
67750
    }
 
67751
    }
 
67752
    }
 
67753
}
 
67754
if ( (attributeData->present_attributes & size_exact__AttributeData::ATTRIBUTE_WIDTH_PRESENT) == 0 )
 
67755
{
 
67756
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_SIZE_EXACT, HASH_ATTRIBUTE_WIDTH, 0 ) )
 
67757
        return false;
 
67758
}
 
67759
if ( (attributeData->present_attributes & size_exact__AttributeData::ATTRIBUTE_HEIGHT_PRESENT) == 0 )
 
67760
{
 
67761
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_SIZE_EXACT, HASH_ATTRIBUTE_HEIGHT, 0 ) )
 
67762
        return false;
 
67763
}
 
67764
 
 
67765
 
 
67766
    return true;
 
67767
}
 
67768
 
 
67769
//---------------------------------------------------------------------
 
67770
bool ColladaParserAutoGen15Private::_preEnd__size_exact()
 
67771
{
 
67772
#ifdef GENERATEDSAXPARSER_VALIDATION
 
67773
    if ( mValidate )
 
67774
    {
 
67775
 
 
67776
        bool validationResult = _validateEnd__size_exact();
 
67777
        if ( !validationResult ) return false;
 
67778
 
 
67779
    } // validation
 
67780
#endif
 
67781
 
 
67782
    return true;
 
67783
}
 
67784
 
 
67785
//---------------------------------------------------------------------
 
67786
bool ColladaParserAutoGen15Private::_freeAttributes__size_exact( void* attributeData )
 
67787
{
 
67788
    size_exact__AttributeData* typedAttributeData = static_cast<size_exact__AttributeData*>(attributeData);
 
67789
 
 
67790
    typedAttributeData->~size_exact__AttributeData();
 
67791
 
 
67792
    return true;
 
67793
}
 
67794
 
 
67795
//---------------------------------------------------------------------
 
67796
const size_ratio__AttributeData size_ratio__AttributeData::DEFAULT = {0, 0, 0};
 
67797
 
 
67798
//---------------------------------------------------------------------
 
67799
bool ColladaParserAutoGen15Private::_data__size_ratio( const ParserChar* text, size_t textLength )
 
67800
{
 
67801
    return true;
 
67802
}
 
67803
 
 
67804
//---------------------------------------------------------------------
 
67805
bool ColladaParserAutoGen15Private::_preBegin__size_ratio( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
67806
{
 
67807
#ifdef GENERATEDSAXPARSER_VALIDATION
 
67808
    if ( mValidate )
 
67809
    {
 
67810
 
 
67811
        bool validationResult = _validateBegin__size_ratio( attributes, attributeDataPtr, validationDataPtr );
 
67812
        if ( !validationResult ) return false;
 
67813
 
 
67814
    } // validation
 
67815
#endif
 
67816
 
 
67817
size_ratio__AttributeData* attributeData = newData<size_ratio__AttributeData>(attributeDataPtr);
 
67818
 
 
67819
const ParserChar** attributeArray = attributes.attributes;
 
67820
if ( attributeArray )
 
67821
{
 
67822
    while (true)
 
67823
    {
 
67824
        const ParserChar * attribute = *attributeArray;
 
67825
        if ( !attribute )
 
67826
            break;
 
67827
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
67828
        attributeArray++;
 
67829
        if ( !attributeArray )
 
67830
            return false;
 
67831
        const ParserChar* attributeValue = *attributeArray;
 
67832
        attributeArray++;
 
67833
 
 
67834
 
 
67835
    switch ( hash )
 
67836
    {
 
67837
    case HASH_ATTRIBUTE_WIDTH:
 
67838
    {
 
67839
bool failed;
 
67840
attributeData->width = GeneratedSaxParser::Utils::toFloat(attributeValue, failed);
 
67841
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
67842
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
67843
        HASH_ELEMENT_SIZE_RATIO,
 
67844
        HASH_ATTRIBUTE_WIDTH,
 
67845
        attributeValue))
 
67846
{
 
67847
    return false;
 
67848
}
 
67849
if ( !failed )
 
67850
    attributeData->present_attributes |= size_ratio__AttributeData::ATTRIBUTE_WIDTH_PRESENT;
 
67851
 
 
67852
    break;
 
67853
    }
 
67854
    case HASH_ATTRIBUTE_HEIGHT:
 
67855
    {
 
67856
bool failed;
 
67857
attributeData->height = GeneratedSaxParser::Utils::toFloat(attributeValue, failed);
 
67858
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
67859
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
67860
        HASH_ELEMENT_SIZE_RATIO,
 
67861
        HASH_ATTRIBUTE_HEIGHT,
 
67862
        attributeValue))
 
67863
{
 
67864
    return false;
 
67865
}
 
67866
if ( !failed )
 
67867
    attributeData->present_attributes |= size_ratio__AttributeData::ATTRIBUTE_HEIGHT_PRESENT;
 
67868
 
 
67869
    break;
 
67870
    }
 
67871
    default:
 
67872
    {
 
67873
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SIZE_RATIO, attribute, attributeValue))
 
67874
            {return false;}
 
67875
    }
 
67876
    }
 
67877
    }
 
67878
}
 
67879
if ( (attributeData->present_attributes & size_ratio__AttributeData::ATTRIBUTE_WIDTH_PRESENT) == 0 )
 
67880
{
 
67881
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_SIZE_RATIO, HASH_ATTRIBUTE_WIDTH, 0 ) )
 
67882
        return false;
 
67883
}
 
67884
if ( (attributeData->present_attributes & size_ratio__AttributeData::ATTRIBUTE_HEIGHT_PRESENT) == 0 )
 
67885
{
 
67886
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_SIZE_RATIO, HASH_ATTRIBUTE_HEIGHT, 0 ) )
 
67887
        return false;
 
67888
}
 
67889
 
 
67890
 
 
67891
    return true;
 
67892
}
 
67893
 
 
67894
//---------------------------------------------------------------------
 
67895
bool ColladaParserAutoGen15Private::_preEnd__size_ratio()
 
67896
{
 
67897
#ifdef GENERATEDSAXPARSER_VALIDATION
 
67898
    if ( mValidate )
 
67899
    {
 
67900
 
 
67901
        bool validationResult = _validateEnd__size_ratio();
 
67902
        if ( !validationResult ) return false;
 
67903
 
 
67904
    } // validation
 
67905
#endif
 
67906
 
 
67907
    return true;
 
67908
}
 
67909
 
 
67910
//---------------------------------------------------------------------
 
67911
bool ColladaParserAutoGen15Private::_freeAttributes__size_ratio( void* attributeData )
 
67912
{
 
67913
    size_ratio__AttributeData* typedAttributeData = static_cast<size_ratio__AttributeData*>(attributeData);
 
67914
 
 
67915
    typedAttributeData->~size_ratio__AttributeData();
 
67916
 
 
67917
    return true;
 
67918
}
 
67919
 
 
67920
//---------------------------------------------------------------------
 
67921
const mips__AttributeData mips__AttributeData::DEFAULT = {0, 0, 0};
 
67922
 
 
67923
//---------------------------------------------------------------------
 
67924
bool ColladaParserAutoGen15Private::_data__mips( const ParserChar* text, size_t textLength )
 
67925
{
 
67926
    return true;
 
67927
}
 
67928
 
 
67929
//---------------------------------------------------------------------
 
67930
bool ColladaParserAutoGen15Private::_preBegin__mips( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
67931
{
 
67932
#ifdef GENERATEDSAXPARSER_VALIDATION
 
67933
    if ( mValidate )
 
67934
    {
 
67935
 
 
67936
        bool validationResult = _validateBegin__mips( attributes, attributeDataPtr, validationDataPtr );
 
67937
        if ( !validationResult ) return false;
 
67938
 
 
67939
    } // validation
 
67940
#endif
 
67941
 
 
67942
mips__AttributeData* attributeData = newData<mips__AttributeData>(attributeDataPtr);
 
67943
 
 
67944
const ParserChar** attributeArray = attributes.attributes;
 
67945
if ( attributeArray )
 
67946
{
 
67947
    while (true)
 
67948
    {
 
67949
        const ParserChar * attribute = *attributeArray;
 
67950
        if ( !attribute )
 
67951
            break;
 
67952
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
67953
        attributeArray++;
 
67954
        if ( !attributeArray )
 
67955
            return false;
 
67956
        const ParserChar* attributeValue = *attributeArray;
 
67957
        attributeArray++;
 
67958
 
 
67959
 
 
67960
    switch ( hash )
 
67961
    {
 
67962
    case HASH_ATTRIBUTE_LEVELS:
 
67963
    {
 
67964
bool failed;
 
67965
attributeData->levels = GeneratedSaxParser::Utils::toUint32(attributeValue, failed);
 
67966
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
67967
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
67968
        HASH_ELEMENT_MIPS,
 
67969
        HASH_ATTRIBUTE_LEVELS,
 
67970
        attributeValue))
 
67971
{
 
67972
    return false;
 
67973
}
 
67974
if ( !failed )
 
67975
    attributeData->present_attributes |= mips__AttributeData::ATTRIBUTE_LEVELS_PRESENT;
 
67976
 
 
67977
    break;
 
67978
    }
 
67979
    case HASH_ATTRIBUTE_AUTO_GENERATE:
 
67980
    {
 
67981
bool failed;
 
67982
attributeData->auto_generate = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
67983
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
67984
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
67985
        HASH_ELEMENT_MIPS,
 
67986
        HASH_ATTRIBUTE_AUTO_GENERATE,
 
67987
        attributeValue))
 
67988
{
 
67989
    return false;
 
67990
}
 
67991
if ( !failed )
 
67992
    attributeData->present_attributes |= mips__AttributeData::ATTRIBUTE_AUTO_GENERATE_PRESENT;
 
67993
 
 
67994
    break;
 
67995
    }
 
67996
    default:
 
67997
    {
 
67998
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_MIPS, attribute, attributeValue))
 
67999
            {return false;}
 
68000
    }
 
68001
    }
 
68002
    }
 
68003
}
 
68004
if ( (attributeData->present_attributes & mips__AttributeData::ATTRIBUTE_LEVELS_PRESENT) == 0 )
 
68005
{
 
68006
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_MIPS, HASH_ATTRIBUTE_LEVELS, 0 ) )
 
68007
        return false;
 
68008
}
 
68009
if ( (attributeData->present_attributes & mips__AttributeData::ATTRIBUTE_AUTO_GENERATE_PRESENT) == 0 )
 
68010
{
 
68011
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_MIPS, HASH_ATTRIBUTE_AUTO_GENERATE, 0 ) )
 
68012
        return false;
 
68013
}
 
68014
 
 
68015
 
 
68016
    return true;
 
68017
}
 
68018
 
 
68019
//---------------------------------------------------------------------
 
68020
bool ColladaParserAutoGen15Private::_preEnd__mips()
 
68021
{
 
68022
#ifdef GENERATEDSAXPARSER_VALIDATION
 
68023
    if ( mValidate )
 
68024
    {
 
68025
 
 
68026
        bool validationResult = _validateEnd__mips();
 
68027
        if ( !validationResult ) return false;
 
68028
 
 
68029
    } // validation
 
68030
#endif
 
68031
 
 
68032
    return true;
 
68033
}
 
68034
 
 
68035
//---------------------------------------------------------------------
 
68036
bool ColladaParserAutoGen15Private::_freeAttributes__mips( void* attributeData )
 
68037
{
 
68038
    mips__AttributeData* typedAttributeData = static_cast<mips__AttributeData*>(attributeData);
 
68039
 
 
68040
    typedAttributeData->~mips__AttributeData();
 
68041
 
 
68042
    return true;
 
68043
}
 
68044
 
 
68045
//---------------------------------------------------------------------
 
68046
const unnormalized__AttributeData unnormalized__AttributeData::DEFAULT = {GeneratedSaxParser::XSList<const ParserChar*>()};
 
68047
 
 
68048
//---------------------------------------------------------------------
 
68049
bool ColladaParserAutoGen15Private::_data__unnormalized( const ParserChar* text, size_t textLength )
 
68050
{
 
68051
 
 
68052
return mImpl->data__unnormalized(text, textLength);
 
68053
}
 
68054
 
 
68055
//---------------------------------------------------------------------
 
68056
bool ColladaParserAutoGen15Private::_preBegin__unnormalized( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
68057
{
 
68058
#ifdef GENERATEDSAXPARSER_VALIDATION
 
68059
    if ( mValidate )
 
68060
    {
 
68061
 
 
68062
        bool validationResult = _validateBegin__unnormalized( attributes, attributeDataPtr, validationDataPtr );
 
68063
        if ( !validationResult ) return false;
 
68064
 
 
68065
    } // validation
 
68066
#endif
 
68067
 
 
68068
unnormalized__AttributeData* attributeData = newData<unnormalized__AttributeData>(attributeDataPtr);
 
68069
 
 
68070
const ParserChar** attributeArray = attributes.attributes;
 
68071
if ( attributeArray )
 
68072
{
 
68073
    while (true)
 
68074
    {
 
68075
        const ParserChar * attribute = *attributeArray;
 
68076
        if ( !attribute )
 
68077
            break;
 
68078
        attributeArray++;
 
68079
        if ( !attributeArray )
 
68080
            return false;
 
68081
        const ParserChar* attributeValue = *attributeArray;
 
68082
        attributeArray++;
 
68083
 
 
68084
 
 
68085
        if ( !attributeData->unknownAttributes.data )
 
68086
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
68087
        else
 
68088
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
68089
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
68090
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
68091
        attributeData->unknownAttributes.size += 2;
 
68092
 
 
68093
    }
 
68094
}
 
68095
 
 
68096
 
 
68097
    return true;
 
68098
}
 
68099
 
 
68100
//---------------------------------------------------------------------
 
68101
bool ColladaParserAutoGen15Private::_preEnd__unnormalized()
 
68102
{
 
68103
#ifdef GENERATEDSAXPARSER_VALIDATION
 
68104
    if ( mValidate )
 
68105
    {
 
68106
 
 
68107
        bool validationResult = _validateEnd__unnormalized();
 
68108
        if ( !validationResult ) return false;
 
68109
 
 
68110
    } // validation
 
68111
#endif
 
68112
 
 
68113
    return true;
 
68114
}
 
68115
 
 
68116
//---------------------------------------------------------------------
 
68117
bool ColladaParserAutoGen15Private::_freeAttributes__unnormalized( void* attributeData )
 
68118
{
 
68119
    unnormalized__AttributeData* typedAttributeData = static_cast<unnormalized__AttributeData*>(attributeData);
 
68120
    if (typedAttributeData->unknownAttributes.data)
 
68121
    {
 
68122
        mStackMemoryManager.deleteObject();
 
68123
    }
 
68124
 
 
68125
 
 
68126
    typedAttributeData->~unnormalized__AttributeData();
 
68127
 
 
68128
    return true;
 
68129
}
 
68130
 
 
68131
//---------------------------------------------------------------------
 
68132
const create_2d__array__AttributeData create_2d__array__AttributeData::DEFAULT = {0, 0};
 
68133
 
 
68134
//---------------------------------------------------------------------
 
68135
bool ColladaParserAutoGen15Private::_data__create_2d__array( const ParserChar* text, size_t textLength )
 
68136
{
 
68137
    return true;
 
68138
}
 
68139
 
 
68140
//---------------------------------------------------------------------
 
68141
bool ColladaParserAutoGen15Private::_preBegin__create_2d__array( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
68142
{
 
68143
#ifdef GENERATEDSAXPARSER_VALIDATION
 
68144
    if ( mValidate )
 
68145
    {
 
68146
 
 
68147
        bool validationResult = _validateBegin__create_2d__array( attributes, attributeDataPtr, validationDataPtr );
 
68148
        if ( !validationResult ) return false;
 
68149
 
 
68150
    } // validation
 
68151
#endif
 
68152
 
 
68153
create_2d__array__AttributeData* attributeData = newData<create_2d__array__AttributeData>(attributeDataPtr);
 
68154
 
 
68155
const ParserChar** attributeArray = attributes.attributes;
 
68156
if ( attributeArray )
 
68157
{
 
68158
    while (true)
 
68159
    {
 
68160
        const ParserChar * attribute = *attributeArray;
 
68161
        if ( !attribute )
 
68162
            break;
 
68163
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
68164
        attributeArray++;
 
68165
        if ( !attributeArray )
 
68166
            return false;
 
68167
        const ParserChar* attributeValue = *attributeArray;
 
68168
        attributeArray++;
 
68169
 
 
68170
 
 
68171
    switch ( hash )
 
68172
    {
 
68173
    case HASH_ATTRIBUTE_LENGTH:
 
68174
    {
 
68175
bool failed;
 
68176
attributeData->length = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
68177
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
68178
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
68179
        HASH_ELEMENT_ARRAY,
 
68180
        HASH_ATTRIBUTE_LENGTH,
 
68181
        attributeValue))
 
68182
{
 
68183
    return false;
 
68184
}
 
68185
#ifdef GENERATEDSAXPARSER_VALIDATION
 
68186
    if ( mValidate )
 
68187
    {
 
68188
    ParserError::ErrorType simpleTypeValidationResult = validate__positiveInteger(attributeData->length);
 
68189
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
68190
    {
 
68191
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
68192
            simpleTypeValidationResult,
 
68193
            HASH_ELEMENT_ARRAY,
 
68194
            HASH_ATTRIBUTE_LENGTH,
 
68195
            attributeValue) )
 
68196
        {
 
68197
            return false;
 
68198
        }
 
68199
    }
 
68200
    } // validation
 
68201
#endif
 
68202
if ( !failed )
 
68203
    attributeData->present_attributes |= create_2d__array__AttributeData::ATTRIBUTE_LENGTH_PRESENT;
 
68204
 
 
68205
    break;
 
68206
    }
 
68207
    default:
 
68208
    {
 
68209
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_ARRAY, attribute, attributeValue))
 
68210
            {return false;}
 
68211
    }
 
68212
    }
 
68213
    }
 
68214
}
 
68215
if ( (attributeData->present_attributes & create_2d__array__AttributeData::ATTRIBUTE_LENGTH_PRESENT) == 0 )
 
68216
{
 
68217
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_ARRAY, HASH_ATTRIBUTE_LENGTH, 0 ) )
 
68218
        return false;
 
68219
}
 
68220
 
 
68221
 
 
68222
    return true;
 
68223
}
 
68224
 
 
68225
//---------------------------------------------------------------------
 
68226
bool ColladaParserAutoGen15Private::_preEnd__create_2d__array()
 
68227
{
 
68228
#ifdef GENERATEDSAXPARSER_VALIDATION
 
68229
    if ( mValidate )
 
68230
    {
 
68231
 
 
68232
        bool validationResult = _validateEnd__create_2d__array();
 
68233
        if ( !validationResult ) return false;
 
68234
 
 
68235
    } // validation
 
68236
#endif
 
68237
 
 
68238
    return true;
 
68239
}
 
68240
 
 
68241
//---------------------------------------------------------------------
 
68242
bool ColladaParserAutoGen15Private::_freeAttributes__create_2d__array( void* attributeData )
 
68243
{
 
68244
    create_2d__array__AttributeData* typedAttributeData = static_cast<create_2d__array__AttributeData*>(attributeData);
 
68245
 
 
68246
    typedAttributeData->~create_2d__array__AttributeData();
 
68247
 
 
68248
    return true;
 
68249
}
 
68250
 
 
68251
//---------------------------------------------------------------------
 
68252
bool ColladaParserAutoGen15Private::_data__create_2d__format( const ParserChar* text, size_t textLength )
 
68253
{
 
68254
    return true;
 
68255
}
 
68256
 
 
68257
//---------------------------------------------------------------------
 
68258
bool ColladaParserAutoGen15Private::_preBegin__create_2d__format( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
68259
{
 
68260
#ifdef GENERATEDSAXPARSER_VALIDATION
 
68261
    if ( mValidate )
 
68262
    {
 
68263
 
 
68264
        bool validationResult = _validateBegin__create_2d__format( attributes, attributeDataPtr, validationDataPtr );
 
68265
        if ( !validationResult ) return false;
 
68266
 
 
68267
    } // validation
 
68268
#endif
 
68269
 
 
68270
    return true;
 
68271
}
 
68272
 
 
68273
//---------------------------------------------------------------------
 
68274
bool ColladaParserAutoGen15Private::_preEnd__create_2d__format()
 
68275
{
 
68276
#ifdef GENERATEDSAXPARSER_VALIDATION
 
68277
    if ( mValidate )
 
68278
    {
 
68279
 
 
68280
        bool validationResult = _validateEnd__create_2d__format();
 
68281
        if ( !validationResult ) return false;
 
68282
 
 
68283
    } // validation
 
68284
#endif
 
68285
 
 
68286
    return true;
 
68287
}
 
68288
 
 
68289
//---------------------------------------------------------------------
 
68290
bool ColladaParserAutoGen15Private::_freeAttributes__create_2d__format( void* attributeData )
 
68291
{
 
68292
    return true;
 
68293
}
 
68294
 
 
68295
//---------------------------------------------------------------------
 
68296
const create_2d__format__hint__AttributeData create_2d__format__hint__AttributeData::DEFAULT = {ENUM__image_format_hint_channels_enum__NOT_PRESENT, ENUM__image_format_hint_range_enum__NOT_PRESENT, ENUM__image_format_hint_precision_enum__DEFAULT, 0};
 
68297
 
 
68298
//---------------------------------------------------------------------
 
68299
bool ColladaParserAutoGen15Private::_data__create_2d__format__hint( const ParserChar* text, size_t textLength )
 
68300
{
 
68301
    return true;
 
68302
}
 
68303
 
 
68304
//---------------------------------------------------------------------
 
68305
bool ColladaParserAutoGen15Private::_preBegin__create_2d__format__hint( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
68306
{
 
68307
#ifdef GENERATEDSAXPARSER_VALIDATION
 
68308
    if ( mValidate )
 
68309
    {
 
68310
 
 
68311
        bool validationResult = _validateBegin__create_2d__format__hint( attributes, attributeDataPtr, validationDataPtr );
 
68312
        if ( !validationResult ) return false;
 
68313
 
 
68314
    } // validation
 
68315
#endif
 
68316
 
 
68317
create_2d__format__hint__AttributeData* attributeData = newData<create_2d__format__hint__AttributeData>(attributeDataPtr);
 
68318
 
 
68319
const ParserChar** attributeArray = attributes.attributes;
 
68320
if ( attributeArray )
 
68321
{
 
68322
    while (true)
 
68323
    {
 
68324
        const ParserChar * attribute = *attributeArray;
 
68325
        if ( !attribute )
 
68326
            break;
 
68327
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
68328
        attributeArray++;
 
68329
        if ( !attributeArray )
 
68330
            return false;
 
68331
        const ParserChar* attributeValue = *attributeArray;
 
68332
        attributeArray++;
 
68333
 
 
68334
 
 
68335
    switch ( hash )
 
68336
    {
 
68337
    case HASH_ATTRIBUTE_CHANNELS:
 
68338
    {
 
68339
bool failed;
 
68340
attributeData->channels = Utils::toEnum<ENUM__image_format_hint_channels_enum, StringHash, ENUM__image_format_hint_channels_enum__COUNT>(attributeValue, failed, ENUM__image_format_hint_channels_enumMap, Utils::calculateStringHash);
 
68341
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
68342
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
68343
        HASH_ELEMENT_HINT,
 
68344
        HASH_ATTRIBUTE_CHANNELS,
 
68345
        attributeValue))
 
68346
{
 
68347
    return false;
 
68348
}
 
68349
 
 
68350
    break;
 
68351
    }
 
68352
    case HASH_ATTRIBUTE_RANGE:
 
68353
    {
 
68354
bool failed;
 
68355
attributeData->range = Utils::toEnum<ENUM__image_format_hint_range_enum, StringHash, ENUM__image_format_hint_range_enum__COUNT>(attributeValue, failed, ENUM__image_format_hint_range_enumMap, Utils::calculateStringHash);
 
68356
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
68357
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
68358
        HASH_ELEMENT_HINT,
 
68359
        HASH_ATTRIBUTE_RANGE,
 
68360
        attributeValue))
 
68361
{
 
68362
    return false;
 
68363
}
 
68364
 
 
68365
    break;
 
68366
    }
 
68367
    case HASH_ATTRIBUTE_PRECISION:
 
68368
    {
 
68369
bool failed;
 
68370
attributeData->precision = Utils::toEnum<ENUM__image_format_hint_precision_enum, StringHash, ENUM__image_format_hint_precision_enum__COUNT>(attributeValue, failed, ENUM__image_format_hint_precision_enumMap, Utils::calculateStringHash);
 
68371
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
68372
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
68373
        HASH_ELEMENT_HINT,
 
68374
        HASH_ATTRIBUTE_PRECISION,
 
68375
        attributeValue))
 
68376
{
 
68377
    return false;
 
68378
}
 
68379
 
 
68380
    break;
 
68381
    }
 
68382
    case HASH_ATTRIBUTE_SPACE:
 
68383
    {
 
68384
 
 
68385
attributeData->space = attributeValue;
 
68386
 
 
68387
    break;
 
68388
    }
 
68389
    default:
 
68390
    {
 
68391
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_HINT, attribute, attributeValue))
 
68392
            {return false;}
 
68393
    }
 
68394
    }
 
68395
    }
 
68396
}
 
68397
if ( attributeData->channels == ENUM__image_format_hint_channels_enum__NOT_PRESENT )
 
68398
{
 
68399
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_HINT, HASH_ATTRIBUTE_CHANNELS, 0 ) )
 
68400
        return false;
 
68401
}
 
68402
if ( attributeData->range == ENUM__image_format_hint_range_enum__NOT_PRESENT )
 
68403
{
 
68404
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_HINT, HASH_ATTRIBUTE_RANGE, 0 ) )
 
68405
        return false;
 
68406
}
 
68407
 
 
68408
 
 
68409
    return true;
 
68410
}
 
68411
 
 
68412
//---------------------------------------------------------------------
 
68413
bool ColladaParserAutoGen15Private::_preEnd__create_2d__format__hint()
 
68414
{
 
68415
#ifdef GENERATEDSAXPARSER_VALIDATION
 
68416
    if ( mValidate )
 
68417
    {
 
68418
 
 
68419
        bool validationResult = _validateEnd__create_2d__format__hint();
 
68420
        if ( !validationResult ) return false;
 
68421
 
 
68422
    } // validation
 
68423
#endif
 
68424
 
 
68425
    return true;
 
68426
}
 
68427
 
 
68428
//---------------------------------------------------------------------
 
68429
bool ColladaParserAutoGen15Private::_freeAttributes__create_2d__format__hint( void* attributeData )
 
68430
{
 
68431
    create_2d__format__hint__AttributeData* typedAttributeData = static_cast<create_2d__format__hint__AttributeData*>(attributeData);
 
68432
 
 
68433
    typedAttributeData->~create_2d__format__hint__AttributeData();
 
68434
 
 
68435
    return true;
 
68436
}
 
68437
 
 
68438
//---------------------------------------------------------------------
 
68439
ENUM__image_format_hint_channels_enum ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__image_format_hint_channels_enum (
 
68440
    const ParserChar* prefixedBuffer,
 
68441
    const ParserChar* prefixedBufferEnd,
 
68442
    const ParserChar** buffer,
 
68443
    const ParserChar* bufferEnd,
 
68444
    bool& failed,
 
68445
    const std::pair<StringHash, ENUM__image_format_hint_channels_enum>* enumMap,
 
68446
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
68447
)
 
68448
{
 
68449
    return toEnumDataPrefix<ENUM__image_format_hint_channels_enum, StringHash, ENUM__image_format_hint_channels_enum__COUNT, &toEnum_ENUM__image_format_hint_channels_enum>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
68450
}
 
68451
 
 
68452
//---------------------------------------------------------------------
 
68453
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__image_format_hint_channels_enum (
 
68454
    const ParserChar* text,
 
68455
    size_t textLength,
 
68456
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__image_format_hint_channels_enum*, size_t ),
 
68457
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
68458
)
 
68459
{
 
68460
    return characterData2EnumData<ENUM__image_format_hint_channels_enum, StringHash, ENUM__image_format_hint_channels_enum__COUNT>(text, textLength, dataFunction, ENUM__image_format_hint_channels_enumMap, baseConversionFunc, &toEnum_ENUM__image_format_hint_channels_enum, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__image_format_hint_channels_enum);
 
68461
}
 
68462
 
 
68463
//---------------------------------------------------------------------
 
68464
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__image_format_hint_channels_enum (
 
68465
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__image_format_hint_channels_enum*, size_t ),
 
68466
    const std::pair<StringHash, ENUM__image_format_hint_channels_enum>* enumMap,
 
68467
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
68468
    ENUM__image_format_hint_channels_enum (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__image_format_hint_channels_enum>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
68469
)
 
68470
{
 
68471
    return dataEnumEnd<ENUM__image_format_hint_channels_enum, StringHash, ENUM__image_format_hint_channels_enum__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
68472
}
 
68473
 
 
68474
//---------------------------------------------------------------------
 
68475
ENUM__image_format_hint_range_enum ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__image_format_hint_range_enum (
 
68476
    const ParserChar* prefixedBuffer,
 
68477
    const ParserChar* prefixedBufferEnd,
 
68478
    const ParserChar** buffer,
 
68479
    const ParserChar* bufferEnd,
 
68480
    bool& failed,
 
68481
    const std::pair<StringHash, ENUM__image_format_hint_range_enum>* enumMap,
 
68482
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
68483
)
 
68484
{
 
68485
    return toEnumDataPrefix<ENUM__image_format_hint_range_enum, StringHash, ENUM__image_format_hint_range_enum__COUNT, &toEnum_ENUM__image_format_hint_range_enum>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
68486
}
 
68487
 
 
68488
//---------------------------------------------------------------------
 
68489
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__image_format_hint_range_enum (
 
68490
    const ParserChar* text,
 
68491
    size_t textLength,
 
68492
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__image_format_hint_range_enum*, size_t ),
 
68493
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
68494
)
 
68495
{
 
68496
    return characterData2EnumData<ENUM__image_format_hint_range_enum, StringHash, ENUM__image_format_hint_range_enum__COUNT>(text, textLength, dataFunction, ENUM__image_format_hint_range_enumMap, baseConversionFunc, &toEnum_ENUM__image_format_hint_range_enum, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__image_format_hint_range_enum);
 
68497
}
 
68498
 
 
68499
//---------------------------------------------------------------------
 
68500
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__image_format_hint_range_enum (
 
68501
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__image_format_hint_range_enum*, size_t ),
 
68502
    const std::pair<StringHash, ENUM__image_format_hint_range_enum>* enumMap,
 
68503
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
68504
    ENUM__image_format_hint_range_enum (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__image_format_hint_range_enum>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
68505
)
 
68506
{
 
68507
    return dataEnumEnd<ENUM__image_format_hint_range_enum, StringHash, ENUM__image_format_hint_range_enum__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
68508
}
 
68509
 
 
68510
//---------------------------------------------------------------------
 
68511
ENUM__image_format_hint_precision_enum ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__image_format_hint_precision_enum (
 
68512
    const ParserChar* prefixedBuffer,
 
68513
    const ParserChar* prefixedBufferEnd,
 
68514
    const ParserChar** buffer,
 
68515
    const ParserChar* bufferEnd,
 
68516
    bool& failed,
 
68517
    const std::pair<StringHash, ENUM__image_format_hint_precision_enum>* enumMap,
 
68518
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
68519
)
 
68520
{
 
68521
    return toEnumDataPrefix<ENUM__image_format_hint_precision_enum, StringHash, ENUM__image_format_hint_precision_enum__COUNT, &toEnum_ENUM__image_format_hint_precision_enum>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
68522
}
 
68523
 
 
68524
//---------------------------------------------------------------------
 
68525
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__image_format_hint_precision_enum (
 
68526
    const ParserChar* text,
 
68527
    size_t textLength,
 
68528
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__image_format_hint_precision_enum*, size_t ),
 
68529
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
68530
)
 
68531
{
 
68532
    return characterData2EnumData<ENUM__image_format_hint_precision_enum, StringHash, ENUM__image_format_hint_precision_enum__COUNT>(text, textLength, dataFunction, ENUM__image_format_hint_precision_enumMap, baseConversionFunc, &toEnum_ENUM__image_format_hint_precision_enum, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__image_format_hint_precision_enum);
 
68533
}
 
68534
 
 
68535
//---------------------------------------------------------------------
 
68536
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__image_format_hint_precision_enum (
 
68537
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__image_format_hint_precision_enum*, size_t ),
 
68538
    const std::pair<StringHash, ENUM__image_format_hint_precision_enum>* enumMap,
 
68539
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
68540
    ENUM__image_format_hint_precision_enum (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__image_format_hint_precision_enum>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
68541
)
 
68542
{
 
68543
    return dataEnumEnd<ENUM__image_format_hint_precision_enum, StringHash, ENUM__image_format_hint_precision_enum__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
68544
}
 
68545
 
 
68546
//---------------------------------------------------------------------
 
68547
bool ColladaParserAutoGen15Private::_data__exact( const ParserChar* text, size_t textLength )
 
68548
{
 
68549
 
 
68550
return mImpl->data__exact(text, textLength);
 
68551
}
 
68552
 
 
68553
//---------------------------------------------------------------------
 
68554
bool ColladaParserAutoGen15Private::_preBegin__exact( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
68555
{
 
68556
#ifdef GENERATEDSAXPARSER_VALIDATION
 
68557
    if ( mValidate )
 
68558
    {
 
68559
 
 
68560
        bool validationResult = _validateBegin__exact( attributes, attributeDataPtr, validationDataPtr );
 
68561
        if ( !validationResult ) return false;
 
68562
 
 
68563
    } // validation
 
68564
#endif
 
68565
 
 
68566
    return true;
 
68567
}
 
68568
 
 
68569
//---------------------------------------------------------------------
 
68570
bool ColladaParserAutoGen15Private::_preEnd__exact()
 
68571
{
 
68572
#ifdef GENERATEDSAXPARSER_VALIDATION
 
68573
    if ( mValidate )
 
68574
    {
 
68575
 
 
68576
        bool validationResult = _validateEnd__exact();
 
68577
        if ( !validationResult ) return false;
 
68578
 
 
68579
    } // validation
 
68580
#endif
 
68581
 
 
68582
    return true;
 
68583
}
 
68584
 
 
68585
//---------------------------------------------------------------------
 
68586
bool ColladaParserAutoGen15Private::_freeAttributes__exact( void* attributeData )
 
68587
{
 
68588
    return true;
 
68589
}
 
68590
 
 
68591
//---------------------------------------------------------------------
 
68592
const create_2d__init_from__AttributeData create_2d__init_from__AttributeData::DEFAULT = {0, 0, 0};
 
68593
 
 
68594
//---------------------------------------------------------------------
 
68595
bool ColladaParserAutoGen15Private::_data__create_2d__init_from( const ParserChar* text, size_t textLength )
 
68596
{
 
68597
    return true;
 
68598
}
 
68599
 
 
68600
//---------------------------------------------------------------------
 
68601
bool ColladaParserAutoGen15Private::_preBegin__create_2d__init_from( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
68602
{
 
68603
#ifdef GENERATEDSAXPARSER_VALIDATION
 
68604
    if ( mValidate )
 
68605
    {
 
68606
 
 
68607
        bool validationResult = _validateBegin__create_2d__init_from( attributes, attributeDataPtr, validationDataPtr );
 
68608
        if ( !validationResult ) return false;
 
68609
 
 
68610
    } // validation
 
68611
#endif
 
68612
 
 
68613
create_2d__init_from__AttributeData* attributeData = newData<create_2d__init_from__AttributeData>(attributeDataPtr);
 
68614
 
 
68615
const ParserChar** attributeArray = attributes.attributes;
 
68616
if ( attributeArray )
 
68617
{
 
68618
    while (true)
 
68619
    {
 
68620
        const ParserChar * attribute = *attributeArray;
 
68621
        if ( !attribute )
 
68622
            break;
 
68623
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
68624
        attributeArray++;
 
68625
        if ( !attributeArray )
 
68626
            return false;
 
68627
        const ParserChar* attributeValue = *attributeArray;
 
68628
        attributeArray++;
 
68629
 
 
68630
 
 
68631
    switch ( hash )
 
68632
    {
 
68633
    case HASH_ATTRIBUTE_MIP_INDEX:
 
68634
    {
 
68635
bool failed;
 
68636
attributeData->mip_index = GeneratedSaxParser::Utils::toUint32(attributeValue, failed);
 
68637
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
68638
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
68639
        HASH_ELEMENT_INIT_FROM,
 
68640
        HASH_ATTRIBUTE_MIP_INDEX,
 
68641
        attributeValue))
 
68642
{
 
68643
    return false;
 
68644
}
 
68645
if ( !failed )
 
68646
    attributeData->present_attributes |= create_2d__init_from__AttributeData::ATTRIBUTE_MIP_INDEX_PRESENT;
 
68647
 
 
68648
    break;
 
68649
    }
 
68650
    case HASH_ATTRIBUTE_ARRAY_INDEX:
 
68651
    {
 
68652
bool failed;
 
68653
attributeData->array_index = GeneratedSaxParser::Utils::toUint32(attributeValue, failed);
 
68654
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
68655
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
68656
        HASH_ELEMENT_INIT_FROM,
 
68657
        HASH_ATTRIBUTE_ARRAY_INDEX,
 
68658
        attributeValue))
 
68659
{
 
68660
    return false;
 
68661
}
 
68662
 
 
68663
    break;
 
68664
    }
 
68665
    default:
 
68666
    {
 
68667
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_INIT_FROM, attribute, attributeValue))
 
68668
            {return false;}
 
68669
    }
 
68670
    }
 
68671
    }
 
68672
}
 
68673
if ( (attributeData->present_attributes & create_2d__init_from__AttributeData::ATTRIBUTE_MIP_INDEX_PRESENT) == 0 )
 
68674
{
 
68675
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_INIT_FROM, HASH_ATTRIBUTE_MIP_INDEX, 0 ) )
 
68676
        return false;
 
68677
}
 
68678
 
 
68679
 
 
68680
    return true;
 
68681
}
 
68682
 
 
68683
//---------------------------------------------------------------------
 
68684
bool ColladaParserAutoGen15Private::_preEnd__create_2d__init_from()
 
68685
{
 
68686
#ifdef GENERATEDSAXPARSER_VALIDATION
 
68687
    if ( mValidate )
 
68688
    {
 
68689
 
 
68690
        bool validationResult = _validateEnd__create_2d__init_from();
 
68691
        if ( !validationResult ) return false;
 
68692
 
 
68693
    } // validation
 
68694
#endif
 
68695
 
 
68696
    return true;
 
68697
}
 
68698
 
 
68699
//---------------------------------------------------------------------
 
68700
bool ColladaParserAutoGen15Private::_freeAttributes__create_2d__init_from( void* attributeData )
 
68701
{
 
68702
    create_2d__init_from__AttributeData* typedAttributeData = static_cast<create_2d__init_from__AttributeData*>(attributeData);
 
68703
 
 
68704
    typedAttributeData->~create_2d__init_from__AttributeData();
 
68705
 
 
68706
    return true;
 
68707
}
 
68708
 
 
68709
//---------------------------------------------------------------------
 
68710
bool ColladaParserAutoGen15Private::_data__create_3d( const ParserChar* text, size_t textLength )
 
68711
{
 
68712
    return true;
 
68713
}
 
68714
 
 
68715
//---------------------------------------------------------------------
 
68716
bool ColladaParserAutoGen15Private::_preBegin__create_3d( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
68717
{
 
68718
#ifdef GENERATEDSAXPARSER_VALIDATION
 
68719
    if ( mValidate )
 
68720
    {
 
68721
 
 
68722
        bool validationResult = _validateBegin__create_3d( attributes, attributeDataPtr, validationDataPtr );
 
68723
        if ( !validationResult ) return false;
 
68724
 
 
68725
    } // validation
 
68726
#endif
 
68727
 
 
68728
    return true;
 
68729
}
 
68730
 
 
68731
//---------------------------------------------------------------------
 
68732
bool ColladaParserAutoGen15Private::_preEnd__create_3d()
 
68733
{
 
68734
#ifdef GENERATEDSAXPARSER_VALIDATION
 
68735
    if ( mValidate )
 
68736
    {
 
68737
 
 
68738
        bool validationResult = _validateEnd__create_3d();
 
68739
        if ( !validationResult ) return false;
 
68740
 
 
68741
    } // validation
 
68742
#endif
 
68743
 
 
68744
    return true;
 
68745
}
 
68746
 
 
68747
//---------------------------------------------------------------------
 
68748
bool ColladaParserAutoGen15Private::_freeAttributes__create_3d( void* attributeData )
 
68749
{
 
68750
    return true;
 
68751
}
 
68752
 
 
68753
//---------------------------------------------------------------------
 
68754
const create_3d__size__AttributeData create_3d__size__AttributeData::DEFAULT = {0, 0, 0, 0};
 
68755
 
 
68756
//---------------------------------------------------------------------
 
68757
bool ColladaParserAutoGen15Private::_data__create_3d__size( const ParserChar* text, size_t textLength )
 
68758
{
 
68759
    return true;
 
68760
}
 
68761
 
 
68762
//---------------------------------------------------------------------
 
68763
bool ColladaParserAutoGen15Private::_preBegin__create_3d__size( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
68764
{
 
68765
#ifdef GENERATEDSAXPARSER_VALIDATION
 
68766
    if ( mValidate )
 
68767
    {
 
68768
 
 
68769
        bool validationResult = _validateBegin__create_3d__size( attributes, attributeDataPtr, validationDataPtr );
 
68770
        if ( !validationResult ) return false;
 
68771
 
 
68772
    } // validation
 
68773
#endif
 
68774
 
 
68775
create_3d__size__AttributeData* attributeData = newData<create_3d__size__AttributeData>(attributeDataPtr);
 
68776
 
 
68777
const ParserChar** attributeArray = attributes.attributes;
 
68778
if ( attributeArray )
 
68779
{
 
68780
    while (true)
 
68781
    {
 
68782
        const ParserChar * attribute = *attributeArray;
 
68783
        if ( !attribute )
 
68784
            break;
 
68785
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
68786
        attributeArray++;
 
68787
        if ( !attributeArray )
 
68788
            return false;
 
68789
        const ParserChar* attributeValue = *attributeArray;
 
68790
        attributeArray++;
 
68791
 
 
68792
 
 
68793
    switch ( hash )
 
68794
    {
 
68795
    case HASH_ATTRIBUTE_WIDTH:
 
68796
    {
 
68797
bool failed;
 
68798
attributeData->width = GeneratedSaxParser::Utils::toUint32(attributeValue, failed);
 
68799
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
68800
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
68801
        HASH_ELEMENT_SIZE,
 
68802
        HASH_ATTRIBUTE_WIDTH,
 
68803
        attributeValue))
 
68804
{
 
68805
    return false;
 
68806
}
 
68807
if ( !failed )
 
68808
    attributeData->present_attributes |= create_3d__size__AttributeData::ATTRIBUTE_WIDTH_PRESENT;
 
68809
 
 
68810
    break;
 
68811
    }
 
68812
    case HASH_ATTRIBUTE_HEIGHT:
 
68813
    {
 
68814
bool failed;
 
68815
attributeData->height = GeneratedSaxParser::Utils::toUint32(attributeValue, failed);
 
68816
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
68817
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
68818
        HASH_ELEMENT_SIZE,
 
68819
        HASH_ATTRIBUTE_HEIGHT,
 
68820
        attributeValue))
 
68821
{
 
68822
    return false;
 
68823
}
 
68824
if ( !failed )
 
68825
    attributeData->present_attributes |= create_3d__size__AttributeData::ATTRIBUTE_HEIGHT_PRESENT;
 
68826
 
 
68827
    break;
 
68828
    }
 
68829
    case HASH_ATTRIBUTE_DEPTH:
 
68830
    {
 
68831
bool failed;
 
68832
attributeData->depth = GeneratedSaxParser::Utils::toUint32(attributeValue, failed);
 
68833
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
68834
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
68835
        HASH_ELEMENT_SIZE,
 
68836
        HASH_ATTRIBUTE_DEPTH,
 
68837
        attributeValue))
 
68838
{
 
68839
    return false;
 
68840
}
 
68841
if ( !failed )
 
68842
    attributeData->present_attributes |= create_3d__size__AttributeData::ATTRIBUTE_DEPTH_PRESENT;
 
68843
 
 
68844
    break;
 
68845
    }
 
68846
    default:
 
68847
    {
 
68848
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SIZE, attribute, attributeValue))
 
68849
            {return false;}
 
68850
    }
 
68851
    }
 
68852
    }
 
68853
}
 
68854
if ( (attributeData->present_attributes & create_3d__size__AttributeData::ATTRIBUTE_WIDTH_PRESENT) == 0 )
 
68855
{
 
68856
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_SIZE, HASH_ATTRIBUTE_WIDTH, 0 ) )
 
68857
        return false;
 
68858
}
 
68859
if ( (attributeData->present_attributes & create_3d__size__AttributeData::ATTRIBUTE_HEIGHT_PRESENT) == 0 )
 
68860
{
 
68861
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_SIZE, HASH_ATTRIBUTE_HEIGHT, 0 ) )
 
68862
        return false;
 
68863
}
 
68864
if ( (attributeData->present_attributes & create_3d__size__AttributeData::ATTRIBUTE_DEPTH_PRESENT) == 0 )
 
68865
{
 
68866
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_SIZE, HASH_ATTRIBUTE_DEPTH, 0 ) )
 
68867
        return false;
 
68868
}
 
68869
 
 
68870
 
 
68871
    return true;
 
68872
}
 
68873
 
 
68874
//---------------------------------------------------------------------
 
68875
bool ColladaParserAutoGen15Private::_preEnd__create_3d__size()
 
68876
{
 
68877
#ifdef GENERATEDSAXPARSER_VALIDATION
 
68878
    if ( mValidate )
 
68879
    {
 
68880
 
 
68881
        bool validationResult = _validateEnd__create_3d__size();
 
68882
        if ( !validationResult ) return false;
 
68883
 
 
68884
    } // validation
 
68885
#endif
 
68886
 
 
68887
    return true;
 
68888
}
 
68889
 
 
68890
//---------------------------------------------------------------------
 
68891
bool ColladaParserAutoGen15Private::_freeAttributes__create_3d__size( void* attributeData )
 
68892
{
 
68893
    create_3d__size__AttributeData* typedAttributeData = static_cast<create_3d__size__AttributeData*>(attributeData);
 
68894
 
 
68895
    typedAttributeData->~create_3d__size__AttributeData();
 
68896
 
 
68897
    return true;
 
68898
}
 
68899
 
 
68900
//---------------------------------------------------------------------
 
68901
const create_3d__array__AttributeData create_3d__array__AttributeData::DEFAULT = {0, 0};
 
68902
 
 
68903
//---------------------------------------------------------------------
 
68904
bool ColladaParserAutoGen15Private::_data__create_3d__array( const ParserChar* text, size_t textLength )
 
68905
{
 
68906
    return true;
 
68907
}
 
68908
 
 
68909
//---------------------------------------------------------------------
 
68910
bool ColladaParserAutoGen15Private::_preBegin__create_3d__array( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
68911
{
 
68912
#ifdef GENERATEDSAXPARSER_VALIDATION
 
68913
    if ( mValidate )
 
68914
    {
 
68915
 
 
68916
        bool validationResult = _validateBegin__create_3d__array( attributes, attributeDataPtr, validationDataPtr );
 
68917
        if ( !validationResult ) return false;
 
68918
 
 
68919
    } // validation
 
68920
#endif
 
68921
 
 
68922
create_3d__array__AttributeData* attributeData = newData<create_3d__array__AttributeData>(attributeDataPtr);
 
68923
 
 
68924
const ParserChar** attributeArray = attributes.attributes;
 
68925
if ( attributeArray )
 
68926
{
 
68927
    while (true)
 
68928
    {
 
68929
        const ParserChar * attribute = *attributeArray;
 
68930
        if ( !attribute )
 
68931
            break;
 
68932
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
68933
        attributeArray++;
 
68934
        if ( !attributeArray )
 
68935
            return false;
 
68936
        const ParserChar* attributeValue = *attributeArray;
 
68937
        attributeArray++;
 
68938
 
 
68939
 
 
68940
    switch ( hash )
 
68941
    {
 
68942
    case HASH_ATTRIBUTE_LENGTH:
 
68943
    {
 
68944
bool failed;
 
68945
attributeData->length = GeneratedSaxParser::Utils::toUint32(attributeValue, failed);
 
68946
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
68947
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
68948
        HASH_ELEMENT_ARRAY,
 
68949
        HASH_ATTRIBUTE_LENGTH,
 
68950
        attributeValue))
 
68951
{
 
68952
    return false;
 
68953
}
 
68954
if ( !failed )
 
68955
    attributeData->present_attributes |= create_3d__array__AttributeData::ATTRIBUTE_LENGTH_PRESENT;
 
68956
 
 
68957
    break;
 
68958
    }
 
68959
    default:
 
68960
    {
 
68961
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_ARRAY, attribute, attributeValue))
 
68962
            {return false;}
 
68963
    }
 
68964
    }
 
68965
    }
 
68966
}
 
68967
if ( (attributeData->present_attributes & create_3d__array__AttributeData::ATTRIBUTE_LENGTH_PRESENT) == 0 )
 
68968
{
 
68969
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_ARRAY, HASH_ATTRIBUTE_LENGTH, 0 ) )
 
68970
        return false;
 
68971
}
 
68972
 
 
68973
 
 
68974
    return true;
 
68975
}
 
68976
 
 
68977
//---------------------------------------------------------------------
 
68978
bool ColladaParserAutoGen15Private::_preEnd__create_3d__array()
 
68979
{
 
68980
#ifdef GENERATEDSAXPARSER_VALIDATION
 
68981
    if ( mValidate )
 
68982
    {
 
68983
 
 
68984
        bool validationResult = _validateEnd__create_3d__array();
 
68985
        if ( !validationResult ) return false;
 
68986
 
 
68987
    } // validation
 
68988
#endif
 
68989
 
 
68990
    return true;
 
68991
}
 
68992
 
 
68993
//---------------------------------------------------------------------
 
68994
bool ColladaParserAutoGen15Private::_freeAttributes__create_3d__array( void* attributeData )
 
68995
{
 
68996
    create_3d__array__AttributeData* typedAttributeData = static_cast<create_3d__array__AttributeData*>(attributeData);
 
68997
 
 
68998
    typedAttributeData->~create_3d__array__AttributeData();
 
68999
 
 
69000
    return true;
 
69001
}
 
69002
 
 
69003
//---------------------------------------------------------------------
 
69004
bool ColladaParserAutoGen15Private::_data__create_3d__format( const ParserChar* text, size_t textLength )
 
69005
{
 
69006
    return true;
 
69007
}
 
69008
 
 
69009
//---------------------------------------------------------------------
 
69010
bool ColladaParserAutoGen15Private::_preBegin__create_3d__format( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
69011
{
 
69012
#ifdef GENERATEDSAXPARSER_VALIDATION
 
69013
    if ( mValidate )
 
69014
    {
 
69015
 
 
69016
        bool validationResult = _validateBegin__create_3d__format( attributes, attributeDataPtr, validationDataPtr );
 
69017
        if ( !validationResult ) return false;
 
69018
 
 
69019
    } // validation
 
69020
#endif
 
69021
 
 
69022
    return true;
 
69023
}
 
69024
 
 
69025
//---------------------------------------------------------------------
 
69026
bool ColladaParserAutoGen15Private::_preEnd__create_3d__format()
 
69027
{
 
69028
#ifdef GENERATEDSAXPARSER_VALIDATION
 
69029
    if ( mValidate )
 
69030
    {
 
69031
 
 
69032
        bool validationResult = _validateEnd__create_3d__format();
 
69033
        if ( !validationResult ) return false;
 
69034
 
 
69035
    } // validation
 
69036
#endif
 
69037
 
 
69038
    return true;
 
69039
}
 
69040
 
 
69041
//---------------------------------------------------------------------
 
69042
bool ColladaParserAutoGen15Private::_freeAttributes__create_3d__format( void* attributeData )
 
69043
{
 
69044
    return true;
 
69045
}
 
69046
 
 
69047
//---------------------------------------------------------------------
 
69048
const create_3d__format__hint__AttributeData create_3d__format__hint__AttributeData::DEFAULT = {ENUM__image_format_hint_channels_enum__NOT_PRESENT, ENUM__image_format_hint_range_enum__NOT_PRESENT, ENUM__image_format_hint_precision_enum__DEFAULT, 0};
 
69049
 
 
69050
//---------------------------------------------------------------------
 
69051
bool ColladaParserAutoGen15Private::_data__create_3d__format__hint( const ParserChar* text, size_t textLength )
 
69052
{
 
69053
    return true;
 
69054
}
 
69055
 
 
69056
//---------------------------------------------------------------------
 
69057
bool ColladaParserAutoGen15Private::_preBegin__create_3d__format__hint( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
69058
{
 
69059
#ifdef GENERATEDSAXPARSER_VALIDATION
 
69060
    if ( mValidate )
 
69061
    {
 
69062
 
 
69063
        bool validationResult = _validateBegin__create_3d__format__hint( attributes, attributeDataPtr, validationDataPtr );
 
69064
        if ( !validationResult ) return false;
 
69065
 
 
69066
    } // validation
 
69067
#endif
 
69068
 
 
69069
create_3d__format__hint__AttributeData* attributeData = newData<create_3d__format__hint__AttributeData>(attributeDataPtr);
 
69070
 
 
69071
const ParserChar** attributeArray = attributes.attributes;
 
69072
if ( attributeArray )
 
69073
{
 
69074
    while (true)
 
69075
    {
 
69076
        const ParserChar * attribute = *attributeArray;
 
69077
        if ( !attribute )
 
69078
            break;
 
69079
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
69080
        attributeArray++;
 
69081
        if ( !attributeArray )
 
69082
            return false;
 
69083
        const ParserChar* attributeValue = *attributeArray;
 
69084
        attributeArray++;
 
69085
 
 
69086
 
 
69087
    switch ( hash )
 
69088
    {
 
69089
    case HASH_ATTRIBUTE_CHANNELS:
 
69090
    {
 
69091
bool failed;
 
69092
attributeData->channels = Utils::toEnum<ENUM__image_format_hint_channels_enum, StringHash, ENUM__image_format_hint_channels_enum__COUNT>(attributeValue, failed, ENUM__image_format_hint_channels_enumMap, Utils::calculateStringHash);
 
69093
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
69094
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
69095
        HASH_ELEMENT_HINT,
 
69096
        HASH_ATTRIBUTE_CHANNELS,
 
69097
        attributeValue))
 
69098
{
 
69099
    return false;
 
69100
}
 
69101
 
 
69102
    break;
 
69103
    }
 
69104
    case HASH_ATTRIBUTE_RANGE:
 
69105
    {
 
69106
bool failed;
 
69107
attributeData->range = Utils::toEnum<ENUM__image_format_hint_range_enum, StringHash, ENUM__image_format_hint_range_enum__COUNT>(attributeValue, failed, ENUM__image_format_hint_range_enumMap, Utils::calculateStringHash);
 
69108
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
69109
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
69110
        HASH_ELEMENT_HINT,
 
69111
        HASH_ATTRIBUTE_RANGE,
 
69112
        attributeValue))
 
69113
{
 
69114
    return false;
 
69115
}
 
69116
 
 
69117
    break;
 
69118
    }
 
69119
    case HASH_ATTRIBUTE_PRECISION:
 
69120
    {
 
69121
bool failed;
 
69122
attributeData->precision = Utils::toEnum<ENUM__image_format_hint_precision_enum, StringHash, ENUM__image_format_hint_precision_enum__COUNT>(attributeValue, failed, ENUM__image_format_hint_precision_enumMap, Utils::calculateStringHash);
 
69123
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
69124
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
69125
        HASH_ELEMENT_HINT,
 
69126
        HASH_ATTRIBUTE_PRECISION,
 
69127
        attributeValue))
 
69128
{
 
69129
    return false;
 
69130
}
 
69131
 
 
69132
    break;
 
69133
    }
 
69134
    case HASH_ATTRIBUTE_SPACE:
 
69135
    {
 
69136
 
 
69137
attributeData->space = attributeValue;
 
69138
 
 
69139
    break;
 
69140
    }
 
69141
    default:
 
69142
    {
 
69143
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_HINT, attribute, attributeValue))
 
69144
            {return false;}
 
69145
    }
 
69146
    }
 
69147
    }
 
69148
}
 
69149
if ( attributeData->channels == ENUM__image_format_hint_channels_enum__NOT_PRESENT )
 
69150
{
 
69151
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_HINT, HASH_ATTRIBUTE_CHANNELS, 0 ) )
 
69152
        return false;
 
69153
}
 
69154
if ( attributeData->range == ENUM__image_format_hint_range_enum__NOT_PRESENT )
 
69155
{
 
69156
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_HINT, HASH_ATTRIBUTE_RANGE, 0 ) )
 
69157
        return false;
 
69158
}
 
69159
 
 
69160
 
 
69161
    return true;
 
69162
}
 
69163
 
 
69164
//---------------------------------------------------------------------
 
69165
bool ColladaParserAutoGen15Private::_preEnd__create_3d__format__hint()
 
69166
{
 
69167
#ifdef GENERATEDSAXPARSER_VALIDATION
 
69168
    if ( mValidate )
 
69169
    {
 
69170
 
 
69171
        bool validationResult = _validateEnd__create_3d__format__hint();
 
69172
        if ( !validationResult ) return false;
 
69173
 
 
69174
    } // validation
 
69175
#endif
 
69176
 
 
69177
    return true;
 
69178
}
 
69179
 
 
69180
//---------------------------------------------------------------------
 
69181
bool ColladaParserAutoGen15Private::_freeAttributes__create_3d__format__hint( void* attributeData )
 
69182
{
 
69183
    create_3d__format__hint__AttributeData* typedAttributeData = static_cast<create_3d__format__hint__AttributeData*>(attributeData);
 
69184
 
 
69185
    typedAttributeData->~create_3d__format__hint__AttributeData();
 
69186
 
 
69187
    return true;
 
69188
}
 
69189
 
 
69190
//---------------------------------------------------------------------
 
69191
const create_3d__init_from__AttributeData create_3d__init_from__AttributeData::DEFAULT = {0, 0, 0, 0};
 
69192
 
 
69193
//---------------------------------------------------------------------
 
69194
bool ColladaParserAutoGen15Private::_data__create_3d__init_from( const ParserChar* text, size_t textLength )
 
69195
{
 
69196
    return true;
 
69197
}
 
69198
 
 
69199
//---------------------------------------------------------------------
 
69200
bool ColladaParserAutoGen15Private::_preBegin__create_3d__init_from( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
69201
{
 
69202
#ifdef GENERATEDSAXPARSER_VALIDATION
 
69203
    if ( mValidate )
 
69204
    {
 
69205
 
 
69206
        bool validationResult = _validateBegin__create_3d__init_from( attributes, attributeDataPtr, validationDataPtr );
 
69207
        if ( !validationResult ) return false;
 
69208
 
 
69209
    } // validation
 
69210
#endif
 
69211
 
 
69212
create_3d__init_from__AttributeData* attributeData = newData<create_3d__init_from__AttributeData>(attributeDataPtr);
 
69213
 
 
69214
const ParserChar** attributeArray = attributes.attributes;
 
69215
if ( attributeArray )
 
69216
{
 
69217
    while (true)
 
69218
    {
 
69219
        const ParserChar * attribute = *attributeArray;
 
69220
        if ( !attribute )
 
69221
            break;
 
69222
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
69223
        attributeArray++;
 
69224
        if ( !attributeArray )
 
69225
            return false;
 
69226
        const ParserChar* attributeValue = *attributeArray;
 
69227
        attributeArray++;
 
69228
 
 
69229
 
 
69230
    switch ( hash )
 
69231
    {
 
69232
    case HASH_ATTRIBUTE_DEPTH:
 
69233
    {
 
69234
bool failed;
 
69235
attributeData->depth = GeneratedSaxParser::Utils::toUint32(attributeValue, failed);
 
69236
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
69237
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
69238
        HASH_ELEMENT_INIT_FROM,
 
69239
        HASH_ATTRIBUTE_DEPTH,
 
69240
        attributeValue))
 
69241
{
 
69242
    return false;
 
69243
}
 
69244
if ( !failed )
 
69245
    attributeData->present_attributes |= create_3d__init_from__AttributeData::ATTRIBUTE_DEPTH_PRESENT;
 
69246
 
 
69247
    break;
 
69248
    }
 
69249
    case HASH_ATTRIBUTE_MIP_INDEX:
 
69250
    {
 
69251
bool failed;
 
69252
attributeData->mip_index = GeneratedSaxParser::Utils::toUint32(attributeValue, failed);
 
69253
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
69254
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
69255
        HASH_ELEMENT_INIT_FROM,
 
69256
        HASH_ATTRIBUTE_MIP_INDEX,
 
69257
        attributeValue))
 
69258
{
 
69259
    return false;
 
69260
}
 
69261
if ( !failed )
 
69262
    attributeData->present_attributes |= create_3d__init_from__AttributeData::ATTRIBUTE_MIP_INDEX_PRESENT;
 
69263
 
 
69264
    break;
 
69265
    }
 
69266
    case HASH_ATTRIBUTE_ARRAY_INDEX:
 
69267
    {
 
69268
bool failed;
 
69269
attributeData->array_index = GeneratedSaxParser::Utils::toUint32(attributeValue, failed);
 
69270
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
69271
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
69272
        HASH_ELEMENT_INIT_FROM,
 
69273
        HASH_ATTRIBUTE_ARRAY_INDEX,
 
69274
        attributeValue))
 
69275
{
 
69276
    return false;
 
69277
}
 
69278
 
 
69279
    break;
 
69280
    }
 
69281
    default:
 
69282
    {
 
69283
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_INIT_FROM, attribute, attributeValue))
 
69284
            {return false;}
 
69285
    }
 
69286
    }
 
69287
    }
 
69288
}
 
69289
if ( (attributeData->present_attributes & create_3d__init_from__AttributeData::ATTRIBUTE_DEPTH_PRESENT) == 0 )
 
69290
{
 
69291
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_INIT_FROM, HASH_ATTRIBUTE_DEPTH, 0 ) )
 
69292
        return false;
 
69293
}
 
69294
if ( (attributeData->present_attributes & create_3d__init_from__AttributeData::ATTRIBUTE_MIP_INDEX_PRESENT) == 0 )
 
69295
{
 
69296
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_INIT_FROM, HASH_ATTRIBUTE_MIP_INDEX, 0 ) )
 
69297
        return false;
 
69298
}
 
69299
 
 
69300
 
 
69301
    return true;
 
69302
}
 
69303
 
 
69304
//---------------------------------------------------------------------
 
69305
bool ColladaParserAutoGen15Private::_preEnd__create_3d__init_from()
 
69306
{
 
69307
#ifdef GENERATEDSAXPARSER_VALIDATION
 
69308
    if ( mValidate )
 
69309
    {
 
69310
 
 
69311
        bool validationResult = _validateEnd__create_3d__init_from();
 
69312
        if ( !validationResult ) return false;
 
69313
 
 
69314
    } // validation
 
69315
#endif
 
69316
 
 
69317
    return true;
 
69318
}
 
69319
 
 
69320
//---------------------------------------------------------------------
 
69321
bool ColladaParserAutoGen15Private::_freeAttributes__create_3d__init_from( void* attributeData )
 
69322
{
 
69323
    create_3d__init_from__AttributeData* typedAttributeData = static_cast<create_3d__init_from__AttributeData*>(attributeData);
 
69324
 
 
69325
    typedAttributeData->~create_3d__init_from__AttributeData();
 
69326
 
 
69327
    return true;
 
69328
}
 
69329
 
 
69330
//---------------------------------------------------------------------
 
69331
bool ColladaParserAutoGen15Private::_data__create_cube( const ParserChar* text, size_t textLength )
 
69332
{
 
69333
    return true;
 
69334
}
 
69335
 
 
69336
//---------------------------------------------------------------------
 
69337
bool ColladaParserAutoGen15Private::_preBegin__create_cube( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
69338
{
 
69339
#ifdef GENERATEDSAXPARSER_VALIDATION
 
69340
    if ( mValidate )
 
69341
    {
 
69342
 
 
69343
        bool validationResult = _validateBegin__create_cube( attributes, attributeDataPtr, validationDataPtr );
 
69344
        if ( !validationResult ) return false;
 
69345
 
 
69346
    } // validation
 
69347
#endif
 
69348
 
 
69349
    return true;
 
69350
}
 
69351
 
 
69352
//---------------------------------------------------------------------
 
69353
bool ColladaParserAutoGen15Private::_preEnd__create_cube()
 
69354
{
 
69355
#ifdef GENERATEDSAXPARSER_VALIDATION
 
69356
    if ( mValidate )
 
69357
    {
 
69358
 
 
69359
        bool validationResult = _validateEnd__create_cube();
 
69360
        if ( !validationResult ) return false;
 
69361
 
 
69362
    } // validation
 
69363
#endif
 
69364
 
 
69365
    return true;
 
69366
}
 
69367
 
 
69368
//---------------------------------------------------------------------
 
69369
bool ColladaParserAutoGen15Private::_freeAttributes__create_cube( void* attributeData )
 
69370
{
 
69371
    return true;
 
69372
}
 
69373
 
 
69374
//---------------------------------------------------------------------
 
69375
const create_cube__size__AttributeData create_cube__size__AttributeData::DEFAULT = {0, 0};
 
69376
 
 
69377
//---------------------------------------------------------------------
 
69378
bool ColladaParserAutoGen15Private::_data__create_cube__size( const ParserChar* text, size_t textLength )
 
69379
{
 
69380
    return true;
 
69381
}
 
69382
 
 
69383
//---------------------------------------------------------------------
 
69384
bool ColladaParserAutoGen15Private::_preBegin__create_cube__size( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
69385
{
 
69386
#ifdef GENERATEDSAXPARSER_VALIDATION
 
69387
    if ( mValidate )
 
69388
    {
 
69389
 
 
69390
        bool validationResult = _validateBegin__create_cube__size( attributes, attributeDataPtr, validationDataPtr );
 
69391
        if ( !validationResult ) return false;
 
69392
 
 
69393
    } // validation
 
69394
#endif
 
69395
 
 
69396
create_cube__size__AttributeData* attributeData = newData<create_cube__size__AttributeData>(attributeDataPtr);
 
69397
 
 
69398
const ParserChar** attributeArray = attributes.attributes;
 
69399
if ( attributeArray )
 
69400
{
 
69401
    while (true)
 
69402
    {
 
69403
        const ParserChar * attribute = *attributeArray;
 
69404
        if ( !attribute )
 
69405
            break;
 
69406
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
69407
        attributeArray++;
 
69408
        if ( !attributeArray )
 
69409
            return false;
 
69410
        const ParserChar* attributeValue = *attributeArray;
 
69411
        attributeArray++;
 
69412
 
 
69413
 
 
69414
    switch ( hash )
 
69415
    {
 
69416
    case HASH_ATTRIBUTE_WIDTH:
 
69417
    {
 
69418
bool failed;
 
69419
attributeData->width = GeneratedSaxParser::Utils::toUint32(attributeValue, failed);
 
69420
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
69421
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
69422
        HASH_ELEMENT_SIZE,
 
69423
        HASH_ATTRIBUTE_WIDTH,
 
69424
        attributeValue))
 
69425
{
 
69426
    return false;
 
69427
}
 
69428
if ( !failed )
 
69429
    attributeData->present_attributes |= create_cube__size__AttributeData::ATTRIBUTE_WIDTH_PRESENT;
 
69430
 
 
69431
    break;
 
69432
    }
 
69433
    default:
 
69434
    {
 
69435
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SIZE, attribute, attributeValue))
 
69436
            {return false;}
 
69437
    }
 
69438
    }
 
69439
    }
 
69440
}
 
69441
if ( (attributeData->present_attributes & create_cube__size__AttributeData::ATTRIBUTE_WIDTH_PRESENT) == 0 )
 
69442
{
 
69443
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_SIZE, HASH_ATTRIBUTE_WIDTH, 0 ) )
 
69444
        return false;
 
69445
}
 
69446
 
 
69447
 
 
69448
    return true;
 
69449
}
 
69450
 
 
69451
//---------------------------------------------------------------------
 
69452
bool ColladaParserAutoGen15Private::_preEnd__create_cube__size()
 
69453
{
 
69454
#ifdef GENERATEDSAXPARSER_VALIDATION
 
69455
    if ( mValidate )
 
69456
    {
 
69457
 
 
69458
        bool validationResult = _validateEnd__create_cube__size();
 
69459
        if ( !validationResult ) return false;
 
69460
 
 
69461
    } // validation
 
69462
#endif
 
69463
 
 
69464
    return true;
 
69465
}
 
69466
 
 
69467
//---------------------------------------------------------------------
 
69468
bool ColladaParserAutoGen15Private::_freeAttributes__create_cube__size( void* attributeData )
 
69469
{
 
69470
    create_cube__size__AttributeData* typedAttributeData = static_cast<create_cube__size__AttributeData*>(attributeData);
 
69471
 
 
69472
    typedAttributeData->~create_cube__size__AttributeData();
 
69473
 
 
69474
    return true;
 
69475
}
 
69476
 
 
69477
//---------------------------------------------------------------------
 
69478
const create_cube__array__AttributeData create_cube__array__AttributeData::DEFAULT = {0, 0};
 
69479
 
 
69480
//---------------------------------------------------------------------
 
69481
bool ColladaParserAutoGen15Private::_data__create_cube__array( const ParserChar* text, size_t textLength )
 
69482
{
 
69483
    return true;
 
69484
}
 
69485
 
 
69486
//---------------------------------------------------------------------
 
69487
bool ColladaParserAutoGen15Private::_preBegin__create_cube__array( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
69488
{
 
69489
#ifdef GENERATEDSAXPARSER_VALIDATION
 
69490
    if ( mValidate )
 
69491
    {
 
69492
 
 
69493
        bool validationResult = _validateBegin__create_cube__array( attributes, attributeDataPtr, validationDataPtr );
 
69494
        if ( !validationResult ) return false;
 
69495
 
 
69496
    } // validation
 
69497
#endif
 
69498
 
 
69499
create_cube__array__AttributeData* attributeData = newData<create_cube__array__AttributeData>(attributeDataPtr);
 
69500
 
 
69501
const ParserChar** attributeArray = attributes.attributes;
 
69502
if ( attributeArray )
 
69503
{
 
69504
    while (true)
 
69505
    {
 
69506
        const ParserChar * attribute = *attributeArray;
 
69507
        if ( !attribute )
 
69508
            break;
 
69509
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
69510
        attributeArray++;
 
69511
        if ( !attributeArray )
 
69512
            return false;
 
69513
        const ParserChar* attributeValue = *attributeArray;
 
69514
        attributeArray++;
 
69515
 
 
69516
 
 
69517
    switch ( hash )
 
69518
    {
 
69519
    case HASH_ATTRIBUTE_LENGTH:
 
69520
    {
 
69521
bool failed;
 
69522
attributeData->length = GeneratedSaxParser::Utils::toUint32(attributeValue, failed);
 
69523
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
69524
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
69525
        HASH_ELEMENT_ARRAY,
 
69526
        HASH_ATTRIBUTE_LENGTH,
 
69527
        attributeValue))
 
69528
{
 
69529
    return false;
 
69530
}
 
69531
if ( !failed )
 
69532
    attributeData->present_attributes |= create_cube__array__AttributeData::ATTRIBUTE_LENGTH_PRESENT;
 
69533
 
 
69534
    break;
 
69535
    }
 
69536
    default:
 
69537
    {
 
69538
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_ARRAY, attribute, attributeValue))
 
69539
            {return false;}
 
69540
    }
 
69541
    }
 
69542
    }
 
69543
}
 
69544
if ( (attributeData->present_attributes & create_cube__array__AttributeData::ATTRIBUTE_LENGTH_PRESENT) == 0 )
 
69545
{
 
69546
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_ARRAY, HASH_ATTRIBUTE_LENGTH, 0 ) )
 
69547
        return false;
 
69548
}
 
69549
 
 
69550
 
 
69551
    return true;
 
69552
}
 
69553
 
 
69554
//---------------------------------------------------------------------
 
69555
bool ColladaParserAutoGen15Private::_preEnd__create_cube__array()
 
69556
{
 
69557
#ifdef GENERATEDSAXPARSER_VALIDATION
 
69558
    if ( mValidate )
 
69559
    {
 
69560
 
 
69561
        bool validationResult = _validateEnd__create_cube__array();
 
69562
        if ( !validationResult ) return false;
 
69563
 
 
69564
    } // validation
 
69565
#endif
 
69566
 
 
69567
    return true;
 
69568
}
 
69569
 
 
69570
//---------------------------------------------------------------------
 
69571
bool ColladaParserAutoGen15Private::_freeAttributes__create_cube__array( void* attributeData )
 
69572
{
 
69573
    create_cube__array__AttributeData* typedAttributeData = static_cast<create_cube__array__AttributeData*>(attributeData);
 
69574
 
 
69575
    typedAttributeData->~create_cube__array__AttributeData();
 
69576
 
 
69577
    return true;
 
69578
}
 
69579
 
 
69580
//---------------------------------------------------------------------
 
69581
bool ColladaParserAutoGen15Private::_data__create_cube__format( const ParserChar* text, size_t textLength )
 
69582
{
 
69583
    return true;
 
69584
}
 
69585
 
 
69586
//---------------------------------------------------------------------
 
69587
bool ColladaParserAutoGen15Private::_preBegin__create_cube__format( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
69588
{
 
69589
#ifdef GENERATEDSAXPARSER_VALIDATION
 
69590
    if ( mValidate )
 
69591
    {
 
69592
 
 
69593
        bool validationResult = _validateBegin__create_cube__format( attributes, attributeDataPtr, validationDataPtr );
 
69594
        if ( !validationResult ) return false;
 
69595
 
 
69596
    } // validation
 
69597
#endif
 
69598
 
 
69599
    return true;
 
69600
}
 
69601
 
 
69602
//---------------------------------------------------------------------
 
69603
bool ColladaParserAutoGen15Private::_preEnd__create_cube__format()
 
69604
{
 
69605
#ifdef GENERATEDSAXPARSER_VALIDATION
 
69606
    if ( mValidate )
 
69607
    {
 
69608
 
 
69609
        bool validationResult = _validateEnd__create_cube__format();
 
69610
        if ( !validationResult ) return false;
 
69611
 
 
69612
    } // validation
 
69613
#endif
 
69614
 
 
69615
    return true;
 
69616
}
 
69617
 
 
69618
//---------------------------------------------------------------------
 
69619
bool ColladaParserAutoGen15Private::_freeAttributes__create_cube__format( void* attributeData )
 
69620
{
 
69621
    return true;
 
69622
}
 
69623
 
 
69624
//---------------------------------------------------------------------
 
69625
const create_cube__format__hint__AttributeData create_cube__format__hint__AttributeData::DEFAULT = {ENUM__image_format_hint_channels_enum__NOT_PRESENT, ENUM__image_format_hint_range_enum__NOT_PRESENT, ENUM__image_format_hint_precision_enum__DEFAULT, 0};
 
69626
 
 
69627
//---------------------------------------------------------------------
 
69628
bool ColladaParserAutoGen15Private::_data__create_cube__format__hint( const ParserChar* text, size_t textLength )
 
69629
{
 
69630
    return true;
 
69631
}
 
69632
 
 
69633
//---------------------------------------------------------------------
 
69634
bool ColladaParserAutoGen15Private::_preBegin__create_cube__format__hint( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
69635
{
 
69636
#ifdef GENERATEDSAXPARSER_VALIDATION
 
69637
    if ( mValidate )
 
69638
    {
 
69639
 
 
69640
        bool validationResult = _validateBegin__create_cube__format__hint( attributes, attributeDataPtr, validationDataPtr );
 
69641
        if ( !validationResult ) return false;
 
69642
 
 
69643
    } // validation
 
69644
#endif
 
69645
 
 
69646
create_cube__format__hint__AttributeData* attributeData = newData<create_cube__format__hint__AttributeData>(attributeDataPtr);
 
69647
 
 
69648
const ParserChar** attributeArray = attributes.attributes;
 
69649
if ( attributeArray )
 
69650
{
 
69651
    while (true)
 
69652
    {
 
69653
        const ParserChar * attribute = *attributeArray;
 
69654
        if ( !attribute )
 
69655
            break;
 
69656
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
69657
        attributeArray++;
 
69658
        if ( !attributeArray )
 
69659
            return false;
 
69660
        const ParserChar* attributeValue = *attributeArray;
 
69661
        attributeArray++;
 
69662
 
 
69663
 
 
69664
    switch ( hash )
 
69665
    {
 
69666
    case HASH_ATTRIBUTE_CHANNELS:
 
69667
    {
 
69668
bool failed;
 
69669
attributeData->channels = Utils::toEnum<ENUM__image_format_hint_channels_enum, StringHash, ENUM__image_format_hint_channels_enum__COUNT>(attributeValue, failed, ENUM__image_format_hint_channels_enumMap, Utils::calculateStringHash);
 
69670
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
69671
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
69672
        HASH_ELEMENT_HINT,
 
69673
        HASH_ATTRIBUTE_CHANNELS,
 
69674
        attributeValue))
 
69675
{
 
69676
    return false;
 
69677
}
 
69678
 
 
69679
    break;
 
69680
    }
 
69681
    case HASH_ATTRIBUTE_RANGE:
 
69682
    {
 
69683
bool failed;
 
69684
attributeData->range = Utils::toEnum<ENUM__image_format_hint_range_enum, StringHash, ENUM__image_format_hint_range_enum__COUNT>(attributeValue, failed, ENUM__image_format_hint_range_enumMap, Utils::calculateStringHash);
 
69685
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
69686
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
69687
        HASH_ELEMENT_HINT,
 
69688
        HASH_ATTRIBUTE_RANGE,
 
69689
        attributeValue))
 
69690
{
 
69691
    return false;
 
69692
}
 
69693
 
 
69694
    break;
 
69695
    }
 
69696
    case HASH_ATTRIBUTE_PRECISION:
 
69697
    {
 
69698
bool failed;
 
69699
attributeData->precision = Utils::toEnum<ENUM__image_format_hint_precision_enum, StringHash, ENUM__image_format_hint_precision_enum__COUNT>(attributeValue, failed, ENUM__image_format_hint_precision_enumMap, Utils::calculateStringHash);
 
69700
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
69701
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
69702
        HASH_ELEMENT_HINT,
 
69703
        HASH_ATTRIBUTE_PRECISION,
 
69704
        attributeValue))
 
69705
{
 
69706
    return false;
 
69707
}
 
69708
 
 
69709
    break;
 
69710
    }
 
69711
    case HASH_ATTRIBUTE_SPACE:
 
69712
    {
 
69713
 
 
69714
attributeData->space = attributeValue;
 
69715
 
 
69716
    break;
 
69717
    }
 
69718
    default:
 
69719
    {
 
69720
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_HINT, attribute, attributeValue))
 
69721
            {return false;}
 
69722
    }
 
69723
    }
 
69724
    }
 
69725
}
 
69726
if ( attributeData->channels == ENUM__image_format_hint_channels_enum__NOT_PRESENT )
 
69727
{
 
69728
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_HINT, HASH_ATTRIBUTE_CHANNELS, 0 ) )
 
69729
        return false;
 
69730
}
 
69731
if ( attributeData->range == ENUM__image_format_hint_range_enum__NOT_PRESENT )
 
69732
{
 
69733
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_HINT, HASH_ATTRIBUTE_RANGE, 0 ) )
 
69734
        return false;
 
69735
}
 
69736
 
 
69737
 
 
69738
    return true;
 
69739
}
 
69740
 
 
69741
//---------------------------------------------------------------------
 
69742
bool ColladaParserAutoGen15Private::_preEnd__create_cube__format__hint()
 
69743
{
 
69744
#ifdef GENERATEDSAXPARSER_VALIDATION
 
69745
    if ( mValidate )
 
69746
    {
 
69747
 
 
69748
        bool validationResult = _validateEnd__create_cube__format__hint();
 
69749
        if ( !validationResult ) return false;
 
69750
 
 
69751
    } // validation
 
69752
#endif
 
69753
 
 
69754
    return true;
 
69755
}
 
69756
 
 
69757
//---------------------------------------------------------------------
 
69758
bool ColladaParserAutoGen15Private::_freeAttributes__create_cube__format__hint( void* attributeData )
 
69759
{
 
69760
    create_cube__format__hint__AttributeData* typedAttributeData = static_cast<create_cube__format__hint__AttributeData*>(attributeData);
 
69761
 
 
69762
    typedAttributeData->~create_cube__format__hint__AttributeData();
 
69763
 
 
69764
    return true;
 
69765
}
 
69766
 
 
69767
//---------------------------------------------------------------------
 
69768
const create_cube__init_from__AttributeData create_cube__init_from__AttributeData::DEFAULT = {0, ENUM__image_face_enum__NOT_PRESENT, 0, 0};
 
69769
 
 
69770
//---------------------------------------------------------------------
 
69771
bool ColladaParserAutoGen15Private::_data__create_cube__init_from( const ParserChar* text, size_t textLength )
 
69772
{
 
69773
    return true;
 
69774
}
 
69775
 
 
69776
//---------------------------------------------------------------------
 
69777
bool ColladaParserAutoGen15Private::_preBegin__create_cube__init_from( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
69778
{
 
69779
#ifdef GENERATEDSAXPARSER_VALIDATION
 
69780
    if ( mValidate )
 
69781
    {
 
69782
 
 
69783
        bool validationResult = _validateBegin__create_cube__init_from( attributes, attributeDataPtr, validationDataPtr );
 
69784
        if ( !validationResult ) return false;
 
69785
 
 
69786
    } // validation
 
69787
#endif
 
69788
 
 
69789
create_cube__init_from__AttributeData* attributeData = newData<create_cube__init_from__AttributeData>(attributeDataPtr);
 
69790
 
 
69791
const ParserChar** attributeArray = attributes.attributes;
 
69792
if ( attributeArray )
 
69793
{
 
69794
    while (true)
 
69795
    {
 
69796
        const ParserChar * attribute = *attributeArray;
 
69797
        if ( !attribute )
 
69798
            break;
 
69799
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
69800
        attributeArray++;
 
69801
        if ( !attributeArray )
 
69802
            return false;
 
69803
        const ParserChar* attributeValue = *attributeArray;
 
69804
        attributeArray++;
 
69805
 
 
69806
 
 
69807
    switch ( hash )
 
69808
    {
 
69809
    case HASH_ATTRIBUTE_FACE:
 
69810
    {
 
69811
bool failed;
 
69812
attributeData->face = Utils::toEnum<ENUM__image_face_enum, StringHash, ENUM__image_face_enum__COUNT>(attributeValue, failed, ENUM__image_face_enumMap, Utils::calculateStringHash);
 
69813
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
69814
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
69815
        HASH_ELEMENT_INIT_FROM,
 
69816
        HASH_ATTRIBUTE_FACE,
 
69817
        attributeValue))
 
69818
{
 
69819
    return false;
 
69820
}
 
69821
 
 
69822
    break;
 
69823
    }
 
69824
    case HASH_ATTRIBUTE_MIP_INDEX:
 
69825
    {
 
69826
bool failed;
 
69827
attributeData->mip_index = GeneratedSaxParser::Utils::toUint32(attributeValue, failed);
 
69828
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
69829
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
69830
        HASH_ELEMENT_INIT_FROM,
 
69831
        HASH_ATTRIBUTE_MIP_INDEX,
 
69832
        attributeValue))
 
69833
{
 
69834
    return false;
 
69835
}
 
69836
if ( !failed )
 
69837
    attributeData->present_attributes |= create_cube__init_from__AttributeData::ATTRIBUTE_MIP_INDEX_PRESENT;
 
69838
 
 
69839
    break;
 
69840
    }
 
69841
    case HASH_ATTRIBUTE_ARRAY_INDEX:
 
69842
    {
 
69843
bool failed;
 
69844
attributeData->array_index = GeneratedSaxParser::Utils::toUint32(attributeValue, failed);
 
69845
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
69846
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
69847
        HASH_ELEMENT_INIT_FROM,
 
69848
        HASH_ATTRIBUTE_ARRAY_INDEX,
 
69849
        attributeValue))
 
69850
{
 
69851
    return false;
 
69852
}
 
69853
 
 
69854
    break;
 
69855
    }
 
69856
    default:
 
69857
    {
 
69858
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_INIT_FROM, attribute, attributeValue))
 
69859
            {return false;}
 
69860
    }
 
69861
    }
 
69862
    }
 
69863
}
 
69864
if ( attributeData->face == ENUM__image_face_enum__NOT_PRESENT )
 
69865
{
 
69866
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_INIT_FROM, HASH_ATTRIBUTE_FACE, 0 ) )
 
69867
        return false;
 
69868
}
 
69869
if ( (attributeData->present_attributes & create_cube__init_from__AttributeData::ATTRIBUTE_MIP_INDEX_PRESENT) == 0 )
 
69870
{
 
69871
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_INIT_FROM, HASH_ATTRIBUTE_MIP_INDEX, 0 ) )
 
69872
        return false;
 
69873
}
 
69874
 
 
69875
 
 
69876
    return true;
 
69877
}
 
69878
 
 
69879
//---------------------------------------------------------------------
 
69880
bool ColladaParserAutoGen15Private::_preEnd__create_cube__init_from()
 
69881
{
 
69882
#ifdef GENERATEDSAXPARSER_VALIDATION
 
69883
    if ( mValidate )
 
69884
    {
 
69885
 
 
69886
        bool validationResult = _validateEnd__create_cube__init_from();
 
69887
        if ( !validationResult ) return false;
 
69888
 
 
69889
    } // validation
 
69890
#endif
 
69891
 
 
69892
    return true;
 
69893
}
 
69894
 
 
69895
//---------------------------------------------------------------------
 
69896
bool ColladaParserAutoGen15Private::_freeAttributes__create_cube__init_from( void* attributeData )
 
69897
{
 
69898
    create_cube__init_from__AttributeData* typedAttributeData = static_cast<create_cube__init_from__AttributeData*>(attributeData);
 
69899
 
 
69900
    typedAttributeData->~create_cube__init_from__AttributeData();
 
69901
 
 
69902
    return true;
 
69903
}
 
69904
 
 
69905
//---------------------------------------------------------------------
 
69906
const library_lights__AttributeData library_lights__AttributeData::DEFAULT = {0, 0};
 
69907
 
 
69908
//---------------------------------------------------------------------
 
69909
bool ColladaParserAutoGen15Private::_data__library_lights( const ParserChar* text, size_t textLength )
 
69910
{
 
69911
    return true;
 
69912
}
 
69913
 
 
69914
//---------------------------------------------------------------------
 
69915
bool ColladaParserAutoGen15Private::_preBegin__library_lights( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
69916
{
 
69917
#ifdef GENERATEDSAXPARSER_VALIDATION
 
69918
    if ( mValidate )
 
69919
    {
 
69920
 
 
69921
        bool validationResult = _validateBegin__library_lights( attributes, attributeDataPtr, validationDataPtr );
 
69922
        if ( !validationResult ) return false;
 
69923
 
 
69924
    } // validation
 
69925
#endif
 
69926
 
 
69927
library_lights__AttributeData* attributeData = newData<library_lights__AttributeData>(attributeDataPtr);
 
69928
 
 
69929
const ParserChar** attributeArray = attributes.attributes;
 
69930
if ( attributeArray )
 
69931
{
 
69932
    while (true)
 
69933
    {
 
69934
        const ParserChar * attribute = *attributeArray;
 
69935
        if ( !attribute )
 
69936
            break;
 
69937
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
69938
        attributeArray++;
 
69939
        if ( !attributeArray )
 
69940
            return false;
 
69941
        const ParserChar* attributeValue = *attributeArray;
 
69942
        attributeArray++;
 
69943
 
 
69944
 
 
69945
    switch ( hash )
 
69946
    {
 
69947
    case HASH_ATTRIBUTE_ID:
 
69948
    {
 
69949
 
 
69950
attributeData->id = attributeValue;
 
69951
 
 
69952
    break;
 
69953
    }
 
69954
    case HASH_ATTRIBUTE_NAME:
 
69955
    {
 
69956
 
 
69957
attributeData->name = attributeValue;
 
69958
 
 
69959
    break;
 
69960
    }
 
69961
    default:
 
69962
    {
 
69963
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIBRARY_LIGHTS, attribute, attributeValue))
 
69964
            {return false;}
 
69965
    }
 
69966
    }
 
69967
    }
 
69968
}
 
69969
 
 
69970
 
 
69971
    return true;
 
69972
}
 
69973
 
 
69974
//---------------------------------------------------------------------
 
69975
bool ColladaParserAutoGen15Private::_preEnd__library_lights()
 
69976
{
 
69977
#ifdef GENERATEDSAXPARSER_VALIDATION
 
69978
    if ( mValidate )
 
69979
    {
 
69980
 
 
69981
        bool validationResult = _validateEnd__library_lights();
 
69982
        if ( !validationResult ) return false;
 
69983
 
 
69984
    } // validation
 
69985
#endif
 
69986
 
 
69987
    return true;
 
69988
}
 
69989
 
 
69990
//---------------------------------------------------------------------
 
69991
bool ColladaParserAutoGen15Private::_freeAttributes__library_lights( void* attributeData )
 
69992
{
 
69993
    library_lights__AttributeData* typedAttributeData = static_cast<library_lights__AttributeData*>(attributeData);
 
69994
 
 
69995
    typedAttributeData->~library_lights__AttributeData();
 
69996
 
 
69997
    return true;
 
69998
}
 
69999
 
 
70000
//---------------------------------------------------------------------
 
70001
const light__AttributeData light__AttributeData::DEFAULT = {0, 0};
 
70002
 
 
70003
//---------------------------------------------------------------------
 
70004
bool ColladaParserAutoGen15Private::_data__light( const ParserChar* text, size_t textLength )
 
70005
{
 
70006
    return true;
 
70007
}
 
70008
 
 
70009
//---------------------------------------------------------------------
 
70010
bool ColladaParserAutoGen15Private::_preBegin__light( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
70011
{
 
70012
#ifdef GENERATEDSAXPARSER_VALIDATION
 
70013
    if ( mValidate )
 
70014
    {
 
70015
 
 
70016
        bool validationResult = _validateBegin__light( attributes, attributeDataPtr, validationDataPtr );
 
70017
        if ( !validationResult ) return false;
 
70018
 
 
70019
    } // validation
 
70020
#endif
 
70021
 
 
70022
light__AttributeData* attributeData = newData<light__AttributeData>(attributeDataPtr);
 
70023
 
 
70024
const ParserChar** attributeArray = attributes.attributes;
 
70025
if ( attributeArray )
 
70026
{
 
70027
    while (true)
 
70028
    {
 
70029
        const ParserChar * attribute = *attributeArray;
 
70030
        if ( !attribute )
 
70031
            break;
 
70032
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
70033
        attributeArray++;
 
70034
        if ( !attributeArray )
 
70035
            return false;
 
70036
        const ParserChar* attributeValue = *attributeArray;
 
70037
        attributeArray++;
 
70038
 
 
70039
 
 
70040
    switch ( hash )
 
70041
    {
 
70042
    case HASH_ATTRIBUTE_ID:
 
70043
    {
 
70044
 
 
70045
attributeData->id = attributeValue;
 
70046
 
 
70047
    break;
 
70048
    }
 
70049
    case HASH_ATTRIBUTE_NAME:
 
70050
    {
 
70051
 
 
70052
attributeData->name = attributeValue;
 
70053
 
 
70054
    break;
 
70055
    }
 
70056
    default:
 
70057
    {
 
70058
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIGHT, attribute, attributeValue))
 
70059
            {return false;}
 
70060
    }
 
70061
    }
 
70062
    }
 
70063
}
 
70064
 
 
70065
 
 
70066
    return true;
 
70067
}
 
70068
 
 
70069
//---------------------------------------------------------------------
 
70070
bool ColladaParserAutoGen15Private::_preEnd__light()
 
70071
{
 
70072
#ifdef GENERATEDSAXPARSER_VALIDATION
 
70073
    if ( mValidate )
 
70074
    {
 
70075
 
 
70076
        bool validationResult = _validateEnd__light();
 
70077
        if ( !validationResult ) return false;
 
70078
 
 
70079
    } // validation
 
70080
#endif
 
70081
 
 
70082
    return true;
 
70083
}
 
70084
 
 
70085
//---------------------------------------------------------------------
 
70086
bool ColladaParserAutoGen15Private::_freeAttributes__light( void* attributeData )
 
70087
{
 
70088
    light__AttributeData* typedAttributeData = static_cast<light__AttributeData*>(attributeData);
 
70089
 
 
70090
    typedAttributeData->~light__AttributeData();
 
70091
 
 
70092
    return true;
 
70093
}
 
70094
 
 
70095
//---------------------------------------------------------------------
 
70096
bool ColladaParserAutoGen15Private::_data__light_type____technique_common( const ParserChar* text, size_t textLength )
 
70097
{
 
70098
    return true;
 
70099
}
 
70100
 
 
70101
//---------------------------------------------------------------------
 
70102
bool ColladaParserAutoGen15Private::_preBegin__light_type____technique_common( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
70103
{
 
70104
#ifdef GENERATEDSAXPARSER_VALIDATION
 
70105
    if ( mValidate )
 
70106
    {
 
70107
 
 
70108
        bool validationResult = _validateBegin__light_type____technique_common( attributes, attributeDataPtr, validationDataPtr );
 
70109
        if ( !validationResult ) return false;
 
70110
 
 
70111
    } // validation
 
70112
#endif
 
70113
 
 
70114
    return true;
 
70115
}
 
70116
 
 
70117
//---------------------------------------------------------------------
 
70118
bool ColladaParserAutoGen15Private::_preEnd__light_type____technique_common()
 
70119
{
 
70120
#ifdef GENERATEDSAXPARSER_VALIDATION
 
70121
    if ( mValidate )
 
70122
    {
 
70123
 
 
70124
        bool validationResult = _validateEnd__light_type____technique_common();
 
70125
        if ( !validationResult ) return false;
 
70126
 
 
70127
    } // validation
 
70128
#endif
 
70129
 
 
70130
    return true;
 
70131
}
 
70132
 
 
70133
//---------------------------------------------------------------------
 
70134
bool ColladaParserAutoGen15Private::_freeAttributes__light_type____technique_common( void* attributeData )
 
70135
{
 
70136
    return true;
 
70137
}
 
70138
 
 
70139
//---------------------------------------------------------------------
 
70140
bool ColladaParserAutoGen15Private::_data__light__technique_common__ambient( const ParserChar* text, size_t textLength )
 
70141
{
 
70142
    return true;
 
70143
}
 
70144
 
 
70145
//---------------------------------------------------------------------
 
70146
bool ColladaParserAutoGen15Private::_preBegin__light__technique_common__ambient( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
70147
{
 
70148
#ifdef GENERATEDSAXPARSER_VALIDATION
 
70149
    if ( mValidate )
 
70150
    {
 
70151
 
 
70152
        bool validationResult = _validateBegin__light__technique_common__ambient( attributes, attributeDataPtr, validationDataPtr );
 
70153
        if ( !validationResult ) return false;
 
70154
 
 
70155
    } // validation
 
70156
#endif
 
70157
 
 
70158
    return true;
 
70159
}
 
70160
 
 
70161
//---------------------------------------------------------------------
 
70162
bool ColladaParserAutoGen15Private::_preEnd__light__technique_common__ambient()
 
70163
{
 
70164
#ifdef GENERATEDSAXPARSER_VALIDATION
 
70165
    if ( mValidate )
 
70166
    {
 
70167
 
 
70168
        bool validationResult = _validateEnd__light__technique_common__ambient();
 
70169
        if ( !validationResult ) return false;
 
70170
 
 
70171
    } // validation
 
70172
#endif
 
70173
 
 
70174
    return true;
 
70175
}
 
70176
 
 
70177
//---------------------------------------------------------------------
 
70178
bool ColladaParserAutoGen15Private::_freeAttributes__light__technique_common__ambient( void* attributeData )
 
70179
{
 
70180
    return true;
 
70181
}
 
70182
 
 
70183
//---------------------------------------------------------------------
 
70184
const color____targetable_float3_type__AttributeData color____targetable_float3_type__AttributeData::DEFAULT = {0};
 
70185
 
 
70186
//---------------------------------------------------------------------
 
70187
bool ColladaParserAutoGen15Private::_data__color____targetable_float3_type( const ParserChar* text, size_t textLength )
 
70188
{
 
70189
#ifdef GENERATEDSAXPARSER_VALIDATION
 
70190
    if ( mValidate )
 
70191
    {
 
70192
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
70193
        DISABLE_WARNING_UNUSED(validationData)
 
70194
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__color____targetable_float3_type, &validate__float3_type__stream, &validationData->validationWholeSize, 0);
 
70195
    }
 
70196
    else
 
70197
    {
 
70198
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__color____targetable_float3_type);
 
70199
    }
 
70200
#else
 
70201
    {
 
70202
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__color____targetable_float3_type);
 
70203
    } // validation
 
70204
#endif
 
70205
 
 
70206
}
 
70207
 
 
70208
//---------------------------------------------------------------------
 
70209
bool ColladaParserAutoGen15Private::_preBegin__color____targetable_float3_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
70210
{
 
70211
#ifdef GENERATEDSAXPARSER_VALIDATION
 
70212
    if ( mValidate )
 
70213
    {
 
70214
 
 
70215
        bool validationResult = _validateBegin__color____targetable_float3_type( attributes, attributeDataPtr, validationDataPtr );
 
70216
        if ( !validationResult ) return false;
 
70217
 
 
70218
    } // validation
 
70219
#endif
 
70220
 
 
70221
color____targetable_float3_type__AttributeData* attributeData = newData<color____targetable_float3_type__AttributeData>(attributeDataPtr);
 
70222
 
 
70223
const ParserChar** attributeArray = attributes.attributes;
 
70224
if ( attributeArray )
 
70225
{
 
70226
    while (true)
 
70227
    {
 
70228
        const ParserChar * attribute = *attributeArray;
 
70229
        if ( !attribute )
 
70230
            break;
 
70231
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
70232
        attributeArray++;
 
70233
        if ( !attributeArray )
 
70234
            return false;
 
70235
        const ParserChar* attributeValue = *attributeArray;
 
70236
        attributeArray++;
 
70237
 
 
70238
 
 
70239
    switch ( hash )
 
70240
    {
 
70241
    case HASH_ATTRIBUTE_SID:
 
70242
    {
 
70243
 
 
70244
attributeData->sid = attributeValue;
 
70245
#ifdef GENERATEDSAXPARSER_VALIDATION
 
70246
    if ( mValidate )
 
70247
    {
 
70248
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
70249
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
70250
    {
 
70251
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
70252
            simpleTypeValidationResult,
 
70253
            HASH_ELEMENT_COLOR,
 
70254
            HASH_ATTRIBUTE_SID,
 
70255
            attributeValue) )
 
70256
        {
 
70257
            return false;
 
70258
        }
 
70259
    }
 
70260
    } // validation
 
70261
#endif
 
70262
 
 
70263
    break;
 
70264
    }
 
70265
    default:
 
70266
    {
 
70267
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_COLOR, attribute, attributeValue))
 
70268
            {return false;}
 
70269
    }
 
70270
    }
 
70271
    }
 
70272
}
 
70273
 
 
70274
 
 
70275
    return true;
 
70276
}
 
70277
 
 
70278
//---------------------------------------------------------------------
 
70279
bool ColladaParserAutoGen15Private::_preEnd__color____targetable_float3_type()
 
70280
{
 
70281
#ifdef GENERATEDSAXPARSER_VALIDATION
 
70282
    if ( mValidate )
 
70283
    {
 
70284
 
 
70285
        bool validationResult = _validateEnd__color____targetable_float3_type();
 
70286
        if ( !validationResult ) return false;
 
70287
 
 
70288
    } // validation
 
70289
#endif
 
70290
 
 
70291
#ifdef GENERATEDSAXPARSER_VALIDATION
 
70292
    if ( mValidate )
 
70293
    {
 
70294
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
70295
        DISABLE_WARNING_UNUSED(validationData)
 
70296
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__color____targetable_float3_type, &validate__float3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
70297
        ParserError::ErrorType simpleTypeValidationResult = validate__float3_type(0, (*(&validationData->validationWholeSize)));
 
70298
        mValidationDataStack.deleteObject();
 
70299
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
70300
        {
 
70301
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
70302
                simpleTypeValidationResult,
 
70303
                HASH_ELEMENT_COLOR,
 
70304
                (ParserChar*)0, 0 ) )
 
70305
            {
 
70306
                return false;
 
70307
            }
 
70308
        }
 
70309
        return returnValue;
 
70310
    }
 
70311
    else
 
70312
    {
 
70313
return floatDataEnd( &ColladaParserAutoGen15::data__color____targetable_float3_type );
 
70314
    }
 
70315
#else
 
70316
    {
 
70317
return floatDataEnd( &ColladaParserAutoGen15::data__color____targetable_float3_type );
 
70318
    } // validation
 
70319
#endif
 
70320
 
 
70321
}
 
70322
 
 
70323
//---------------------------------------------------------------------
 
70324
bool ColladaParserAutoGen15Private::_freeAttributes__color____targetable_float3_type( void* attributeData )
 
70325
{
 
70326
    color____targetable_float3_type__AttributeData* typedAttributeData = static_cast<color____targetable_float3_type__AttributeData*>(attributeData);
 
70327
 
 
70328
    typedAttributeData->~color____targetable_float3_type__AttributeData();
 
70329
 
 
70330
    return true;
 
70331
}
 
70332
 
 
70333
//---------------------------------------------------------------------
 
70334
bool ColladaParserAutoGen15Private::_data__directional( const ParserChar* text, size_t textLength )
 
70335
{
 
70336
    return true;
 
70337
}
 
70338
 
 
70339
//---------------------------------------------------------------------
 
70340
bool ColladaParserAutoGen15Private::_preBegin__directional( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
70341
{
 
70342
#ifdef GENERATEDSAXPARSER_VALIDATION
 
70343
    if ( mValidate )
 
70344
    {
 
70345
 
 
70346
        bool validationResult = _validateBegin__directional( attributes, attributeDataPtr, validationDataPtr );
 
70347
        if ( !validationResult ) return false;
 
70348
 
 
70349
    } // validation
 
70350
#endif
 
70351
 
 
70352
    return true;
 
70353
}
 
70354
 
 
70355
//---------------------------------------------------------------------
 
70356
bool ColladaParserAutoGen15Private::_preEnd__directional()
 
70357
{
 
70358
#ifdef GENERATEDSAXPARSER_VALIDATION
 
70359
    if ( mValidate )
 
70360
    {
 
70361
 
 
70362
        bool validationResult = _validateEnd__directional();
 
70363
        if ( !validationResult ) return false;
 
70364
 
 
70365
    } // validation
 
70366
#endif
 
70367
 
 
70368
    return true;
 
70369
}
 
70370
 
 
70371
//---------------------------------------------------------------------
 
70372
bool ColladaParserAutoGen15Private::_freeAttributes__directional( void* attributeData )
 
70373
{
 
70374
    return true;
 
70375
}
 
70376
 
 
70377
//---------------------------------------------------------------------
 
70378
bool ColladaParserAutoGen15Private::_data__point( const ParserChar* text, size_t textLength )
 
70379
{
 
70380
    return true;
 
70381
}
 
70382
 
 
70383
//---------------------------------------------------------------------
 
70384
bool ColladaParserAutoGen15Private::_preBegin__point( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
70385
{
 
70386
#ifdef GENERATEDSAXPARSER_VALIDATION
 
70387
    if ( mValidate )
 
70388
    {
 
70389
 
 
70390
        bool validationResult = _validateBegin__point( attributes, attributeDataPtr, validationDataPtr );
 
70391
        if ( !validationResult ) return false;
 
70392
 
 
70393
    } // validation
 
70394
#endif
 
70395
 
 
70396
    return true;
 
70397
}
 
70398
 
 
70399
//---------------------------------------------------------------------
 
70400
bool ColladaParserAutoGen15Private::_preEnd__point()
 
70401
{
 
70402
#ifdef GENERATEDSAXPARSER_VALIDATION
 
70403
    if ( mValidate )
 
70404
    {
 
70405
 
 
70406
        bool validationResult = _validateEnd__point();
 
70407
        if ( !validationResult ) return false;
 
70408
 
 
70409
    } // validation
 
70410
#endif
 
70411
 
 
70412
    return true;
 
70413
}
 
70414
 
 
70415
//---------------------------------------------------------------------
 
70416
bool ColladaParserAutoGen15Private::_freeAttributes__point( void* attributeData )
 
70417
{
 
70418
    return true;
 
70419
}
 
70420
 
 
70421
//---------------------------------------------------------------------
 
70422
const constant_attenuation__AttributeData constant_attenuation__AttributeData::DEFAULT = {0};
 
70423
 
 
70424
//---------------------------------------------------------------------
 
70425
bool ColladaParserAutoGen15Private::_data__constant_attenuation( const ParserChar* text, size_t textLength )
 
70426
{
 
70427
if (!mLastIncompleteFragmentInCharacterData)
 
70428
{
 
70429
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
70430
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
70431
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
70432
}
 
70433
else
 
70434
{
 
70435
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
70436
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
70437
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
70438
        mLastIncompleteFragmentInCharacterData = tmp;
 
70439
    }
 
70440
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
70441
    mEndOfDataInCurrentObjectOnStack += textLength;
 
70442
}
 
70443
return true;
 
70444
}
 
70445
 
 
70446
//---------------------------------------------------------------------
 
70447
bool ColladaParserAutoGen15Private::_preBegin__constant_attenuation( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
70448
{
 
70449
#ifdef GENERATEDSAXPARSER_VALIDATION
 
70450
    if ( mValidate )
 
70451
    {
 
70452
 
 
70453
        bool validationResult = _validateBegin__constant_attenuation( attributes, attributeDataPtr, validationDataPtr );
 
70454
        if ( !validationResult ) return false;
 
70455
 
 
70456
    } // validation
 
70457
#endif
 
70458
 
 
70459
constant_attenuation__AttributeData* attributeData = newData<constant_attenuation__AttributeData>(attributeDataPtr);
 
70460
 
 
70461
const ParserChar** attributeArray = attributes.attributes;
 
70462
if ( attributeArray )
 
70463
{
 
70464
    while (true)
 
70465
    {
 
70466
        const ParserChar * attribute = *attributeArray;
 
70467
        if ( !attribute )
 
70468
            break;
 
70469
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
70470
        attributeArray++;
 
70471
        if ( !attributeArray )
 
70472
            return false;
 
70473
        const ParserChar* attributeValue = *attributeArray;
 
70474
        attributeArray++;
 
70475
 
 
70476
 
 
70477
    switch ( hash )
 
70478
    {
 
70479
    case HASH_ATTRIBUTE_SID:
 
70480
    {
 
70481
 
 
70482
attributeData->sid = attributeValue;
 
70483
#ifdef GENERATEDSAXPARSER_VALIDATION
 
70484
    if ( mValidate )
 
70485
    {
 
70486
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
70487
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
70488
    {
 
70489
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
70490
            simpleTypeValidationResult,
 
70491
            HASH_ELEMENT_CONSTANT_ATTENUATION,
 
70492
            HASH_ATTRIBUTE_SID,
 
70493
            attributeValue) )
 
70494
        {
 
70495
            return false;
 
70496
        }
 
70497
    }
 
70498
    } // validation
 
70499
#endif
 
70500
 
 
70501
    break;
 
70502
    }
 
70503
    default:
 
70504
    {
 
70505
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_CONSTANT_ATTENUATION, attribute, attributeValue))
 
70506
            {return false;}
 
70507
    }
 
70508
    }
 
70509
    }
 
70510
}
 
70511
 
 
70512
 
 
70513
    return true;
 
70514
}
 
70515
 
 
70516
//---------------------------------------------------------------------
 
70517
bool ColladaParserAutoGen15Private::_preEnd__constant_attenuation()
 
70518
{
 
70519
#ifdef GENERATEDSAXPARSER_VALIDATION
 
70520
    if ( mValidate )
 
70521
    {
 
70522
 
 
70523
        bool validationResult = _validateEnd__constant_attenuation();
 
70524
        if ( !validationResult ) return false;
 
70525
 
 
70526
    } // validation
 
70527
#endif
 
70528
 
 
70529
bool failed;
 
70530
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
70531
DISABLE_WARNING_UNUSED(ptrForErr)
 
70532
float parameter = GeneratedSaxParser::Utils::toFloat((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
70533
bool returnValue;
 
70534
if (!failed)
 
70535
{
 
70536
    returnValue = mImpl->data__constant_attenuation(parameter);
 
70537
}
 
70538
else
 
70539
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_CONSTANT_ATTENUATION, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
70540
if (mLastIncompleteFragmentInCharacterData)
 
70541
    mStackMemoryManager.deleteObject();
 
70542
mLastIncompleteFragmentInCharacterData = 0;
 
70543
mEndOfDataInCurrentObjectOnStack = 0;
 
70544
return returnValue;
 
70545
}
 
70546
 
 
70547
//---------------------------------------------------------------------
 
70548
bool ColladaParserAutoGen15Private::_freeAttributes__constant_attenuation( void* attributeData )
 
70549
{
 
70550
    constant_attenuation__AttributeData* typedAttributeData = static_cast<constant_attenuation__AttributeData*>(attributeData);
 
70551
 
 
70552
    typedAttributeData->~constant_attenuation__AttributeData();
 
70553
 
 
70554
    return true;
 
70555
}
 
70556
 
 
70557
//---------------------------------------------------------------------
 
70558
const linear_attenuation__AttributeData linear_attenuation__AttributeData::DEFAULT = {0};
 
70559
 
 
70560
//---------------------------------------------------------------------
 
70561
bool ColladaParserAutoGen15Private::_data__linear_attenuation( const ParserChar* text, size_t textLength )
 
70562
{
 
70563
if (!mLastIncompleteFragmentInCharacterData)
 
70564
{
 
70565
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
70566
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
70567
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
70568
}
 
70569
else
 
70570
{
 
70571
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
70572
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
70573
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
70574
        mLastIncompleteFragmentInCharacterData = tmp;
 
70575
    }
 
70576
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
70577
    mEndOfDataInCurrentObjectOnStack += textLength;
 
70578
}
 
70579
return true;
 
70580
}
 
70581
 
 
70582
//---------------------------------------------------------------------
 
70583
bool ColladaParserAutoGen15Private::_preBegin__linear_attenuation( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
70584
{
 
70585
#ifdef GENERATEDSAXPARSER_VALIDATION
 
70586
    if ( mValidate )
 
70587
    {
 
70588
 
 
70589
        bool validationResult = _validateBegin__linear_attenuation( attributes, attributeDataPtr, validationDataPtr );
 
70590
        if ( !validationResult ) return false;
 
70591
 
 
70592
    } // validation
 
70593
#endif
 
70594
 
 
70595
linear_attenuation__AttributeData* attributeData = newData<linear_attenuation__AttributeData>(attributeDataPtr);
 
70596
 
 
70597
const ParserChar** attributeArray = attributes.attributes;
 
70598
if ( attributeArray )
 
70599
{
 
70600
    while (true)
 
70601
    {
 
70602
        const ParserChar * attribute = *attributeArray;
 
70603
        if ( !attribute )
 
70604
            break;
 
70605
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
70606
        attributeArray++;
 
70607
        if ( !attributeArray )
 
70608
            return false;
 
70609
        const ParserChar* attributeValue = *attributeArray;
 
70610
        attributeArray++;
 
70611
 
 
70612
 
 
70613
    switch ( hash )
 
70614
    {
 
70615
    case HASH_ATTRIBUTE_SID:
 
70616
    {
 
70617
 
 
70618
attributeData->sid = attributeValue;
 
70619
#ifdef GENERATEDSAXPARSER_VALIDATION
 
70620
    if ( mValidate )
 
70621
    {
 
70622
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
70623
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
70624
    {
 
70625
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
70626
            simpleTypeValidationResult,
 
70627
            HASH_ELEMENT_LINEAR_ATTENUATION,
 
70628
            HASH_ATTRIBUTE_SID,
 
70629
            attributeValue) )
 
70630
        {
 
70631
            return false;
 
70632
        }
 
70633
    }
 
70634
    } // validation
 
70635
#endif
 
70636
 
 
70637
    break;
 
70638
    }
 
70639
    default:
 
70640
    {
 
70641
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LINEAR_ATTENUATION, attribute, attributeValue))
 
70642
            {return false;}
 
70643
    }
 
70644
    }
 
70645
    }
 
70646
}
 
70647
 
 
70648
 
 
70649
    return true;
 
70650
}
 
70651
 
 
70652
//---------------------------------------------------------------------
 
70653
bool ColladaParserAutoGen15Private::_preEnd__linear_attenuation()
 
70654
{
 
70655
#ifdef GENERATEDSAXPARSER_VALIDATION
 
70656
    if ( mValidate )
 
70657
    {
 
70658
 
 
70659
        bool validationResult = _validateEnd__linear_attenuation();
 
70660
        if ( !validationResult ) return false;
 
70661
 
 
70662
    } // validation
 
70663
#endif
 
70664
 
 
70665
bool failed;
 
70666
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
70667
DISABLE_WARNING_UNUSED(ptrForErr)
 
70668
float parameter = GeneratedSaxParser::Utils::toFloat((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
70669
bool returnValue;
 
70670
if (!failed)
 
70671
{
 
70672
    returnValue = mImpl->data__linear_attenuation(parameter);
 
70673
}
 
70674
else
 
70675
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_LINEAR_ATTENUATION, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
70676
if (mLastIncompleteFragmentInCharacterData)
 
70677
    mStackMemoryManager.deleteObject();
 
70678
mLastIncompleteFragmentInCharacterData = 0;
 
70679
mEndOfDataInCurrentObjectOnStack = 0;
 
70680
return returnValue;
 
70681
}
 
70682
 
 
70683
//---------------------------------------------------------------------
 
70684
bool ColladaParserAutoGen15Private::_freeAttributes__linear_attenuation( void* attributeData )
 
70685
{
 
70686
    linear_attenuation__AttributeData* typedAttributeData = static_cast<linear_attenuation__AttributeData*>(attributeData);
 
70687
 
 
70688
    typedAttributeData->~linear_attenuation__AttributeData();
 
70689
 
 
70690
    return true;
 
70691
}
 
70692
 
 
70693
//---------------------------------------------------------------------
 
70694
const quadratic_attenuation__AttributeData quadratic_attenuation__AttributeData::DEFAULT = {0};
 
70695
 
 
70696
//---------------------------------------------------------------------
 
70697
bool ColladaParserAutoGen15Private::_data__quadratic_attenuation( const ParserChar* text, size_t textLength )
 
70698
{
 
70699
if (!mLastIncompleteFragmentInCharacterData)
 
70700
{
 
70701
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
70702
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
70703
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
70704
}
 
70705
else
 
70706
{
 
70707
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
70708
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
70709
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
70710
        mLastIncompleteFragmentInCharacterData = tmp;
 
70711
    }
 
70712
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
70713
    mEndOfDataInCurrentObjectOnStack += textLength;
 
70714
}
 
70715
return true;
 
70716
}
 
70717
 
 
70718
//---------------------------------------------------------------------
 
70719
bool ColladaParserAutoGen15Private::_preBegin__quadratic_attenuation( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
70720
{
 
70721
#ifdef GENERATEDSAXPARSER_VALIDATION
 
70722
    if ( mValidate )
 
70723
    {
 
70724
 
 
70725
        bool validationResult = _validateBegin__quadratic_attenuation( attributes, attributeDataPtr, validationDataPtr );
 
70726
        if ( !validationResult ) return false;
 
70727
 
 
70728
    } // validation
 
70729
#endif
 
70730
 
 
70731
quadratic_attenuation__AttributeData* attributeData = newData<quadratic_attenuation__AttributeData>(attributeDataPtr);
 
70732
 
 
70733
const ParserChar** attributeArray = attributes.attributes;
 
70734
if ( attributeArray )
 
70735
{
 
70736
    while (true)
 
70737
    {
 
70738
        const ParserChar * attribute = *attributeArray;
 
70739
        if ( !attribute )
 
70740
            break;
 
70741
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
70742
        attributeArray++;
 
70743
        if ( !attributeArray )
 
70744
            return false;
 
70745
        const ParserChar* attributeValue = *attributeArray;
 
70746
        attributeArray++;
 
70747
 
 
70748
 
 
70749
    switch ( hash )
 
70750
    {
 
70751
    case HASH_ATTRIBUTE_SID:
 
70752
    {
 
70753
 
 
70754
attributeData->sid = attributeValue;
 
70755
#ifdef GENERATEDSAXPARSER_VALIDATION
 
70756
    if ( mValidate )
 
70757
    {
 
70758
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
70759
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
70760
    {
 
70761
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
70762
            simpleTypeValidationResult,
 
70763
            HASH_ELEMENT_QUADRATIC_ATTENUATION,
 
70764
            HASH_ATTRIBUTE_SID,
 
70765
            attributeValue) )
 
70766
        {
 
70767
            return false;
 
70768
        }
 
70769
    }
 
70770
    } // validation
 
70771
#endif
 
70772
 
 
70773
    break;
 
70774
    }
 
70775
    default:
 
70776
    {
 
70777
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_QUADRATIC_ATTENUATION, attribute, attributeValue))
 
70778
            {return false;}
 
70779
    }
 
70780
    }
 
70781
    }
 
70782
}
 
70783
 
 
70784
 
 
70785
    return true;
 
70786
}
 
70787
 
 
70788
//---------------------------------------------------------------------
 
70789
bool ColladaParserAutoGen15Private::_preEnd__quadratic_attenuation()
 
70790
{
 
70791
#ifdef GENERATEDSAXPARSER_VALIDATION
 
70792
    if ( mValidate )
 
70793
    {
 
70794
 
 
70795
        bool validationResult = _validateEnd__quadratic_attenuation();
 
70796
        if ( !validationResult ) return false;
 
70797
 
 
70798
    } // validation
 
70799
#endif
 
70800
 
 
70801
bool failed;
 
70802
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
70803
DISABLE_WARNING_UNUSED(ptrForErr)
 
70804
float parameter = GeneratedSaxParser::Utils::toFloat((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
70805
bool returnValue;
 
70806
if (!failed)
 
70807
{
 
70808
    returnValue = mImpl->data__quadratic_attenuation(parameter);
 
70809
}
 
70810
else
 
70811
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_QUADRATIC_ATTENUATION, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
70812
if (mLastIncompleteFragmentInCharacterData)
 
70813
    mStackMemoryManager.deleteObject();
 
70814
mLastIncompleteFragmentInCharacterData = 0;
 
70815
mEndOfDataInCurrentObjectOnStack = 0;
 
70816
return returnValue;
 
70817
}
 
70818
 
 
70819
//---------------------------------------------------------------------
 
70820
bool ColladaParserAutoGen15Private::_freeAttributes__quadratic_attenuation( void* attributeData )
 
70821
{
 
70822
    quadratic_attenuation__AttributeData* typedAttributeData = static_cast<quadratic_attenuation__AttributeData*>(attributeData);
 
70823
 
 
70824
    typedAttributeData->~quadratic_attenuation__AttributeData();
 
70825
 
 
70826
    return true;
 
70827
}
 
70828
 
 
70829
//---------------------------------------------------------------------
 
70830
bool ColladaParserAutoGen15Private::_data__spot( const ParserChar* text, size_t textLength )
 
70831
{
 
70832
    return true;
 
70833
}
 
70834
 
 
70835
//---------------------------------------------------------------------
 
70836
bool ColladaParserAutoGen15Private::_preBegin__spot( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
70837
{
 
70838
#ifdef GENERATEDSAXPARSER_VALIDATION
 
70839
    if ( mValidate )
 
70840
    {
 
70841
 
 
70842
        bool validationResult = _validateBegin__spot( attributes, attributeDataPtr, validationDataPtr );
 
70843
        if ( !validationResult ) return false;
 
70844
 
 
70845
    } // validation
 
70846
#endif
 
70847
 
 
70848
    return true;
 
70849
}
 
70850
 
 
70851
//---------------------------------------------------------------------
 
70852
bool ColladaParserAutoGen15Private::_preEnd__spot()
 
70853
{
 
70854
#ifdef GENERATEDSAXPARSER_VALIDATION
 
70855
    if ( mValidate )
 
70856
    {
 
70857
 
 
70858
        bool validationResult = _validateEnd__spot();
 
70859
        if ( !validationResult ) return false;
 
70860
 
 
70861
    } // validation
 
70862
#endif
 
70863
 
 
70864
    return true;
 
70865
}
 
70866
 
 
70867
//---------------------------------------------------------------------
 
70868
bool ColladaParserAutoGen15Private::_freeAttributes__spot( void* attributeData )
 
70869
{
 
70870
    return true;
 
70871
}
 
70872
 
 
70873
//---------------------------------------------------------------------
 
70874
const falloff_angle__AttributeData falloff_angle__AttributeData::DEFAULT = {0};
 
70875
 
 
70876
//---------------------------------------------------------------------
 
70877
bool ColladaParserAutoGen15Private::_data__falloff_angle( const ParserChar* text, size_t textLength )
 
70878
{
 
70879
if (!mLastIncompleteFragmentInCharacterData)
 
70880
{
 
70881
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
70882
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
70883
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
70884
}
 
70885
else
 
70886
{
 
70887
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
70888
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
70889
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
70890
        mLastIncompleteFragmentInCharacterData = tmp;
 
70891
    }
 
70892
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
70893
    mEndOfDataInCurrentObjectOnStack += textLength;
 
70894
}
 
70895
return true;
 
70896
}
 
70897
 
 
70898
//---------------------------------------------------------------------
 
70899
bool ColladaParserAutoGen15Private::_preBegin__falloff_angle( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
70900
{
 
70901
#ifdef GENERATEDSAXPARSER_VALIDATION
 
70902
    if ( mValidate )
 
70903
    {
 
70904
 
 
70905
        bool validationResult = _validateBegin__falloff_angle( attributes, attributeDataPtr, validationDataPtr );
 
70906
        if ( !validationResult ) return false;
 
70907
 
 
70908
    } // validation
 
70909
#endif
 
70910
 
 
70911
falloff_angle__AttributeData* attributeData = newData<falloff_angle__AttributeData>(attributeDataPtr);
 
70912
 
 
70913
const ParserChar** attributeArray = attributes.attributes;
 
70914
if ( attributeArray )
 
70915
{
 
70916
    while (true)
 
70917
    {
 
70918
        const ParserChar * attribute = *attributeArray;
 
70919
        if ( !attribute )
 
70920
            break;
 
70921
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
70922
        attributeArray++;
 
70923
        if ( !attributeArray )
 
70924
            return false;
 
70925
        const ParserChar* attributeValue = *attributeArray;
 
70926
        attributeArray++;
 
70927
 
 
70928
 
 
70929
    switch ( hash )
 
70930
    {
 
70931
    case HASH_ATTRIBUTE_SID:
 
70932
    {
 
70933
 
 
70934
attributeData->sid = attributeValue;
 
70935
#ifdef GENERATEDSAXPARSER_VALIDATION
 
70936
    if ( mValidate )
 
70937
    {
 
70938
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
70939
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
70940
    {
 
70941
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
70942
            simpleTypeValidationResult,
 
70943
            HASH_ELEMENT_FALLOFF_ANGLE,
 
70944
            HASH_ATTRIBUTE_SID,
 
70945
            attributeValue) )
 
70946
        {
 
70947
            return false;
 
70948
        }
 
70949
    }
 
70950
    } // validation
 
70951
#endif
 
70952
 
 
70953
    break;
 
70954
    }
 
70955
    default:
 
70956
    {
 
70957
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FALLOFF_ANGLE, attribute, attributeValue))
 
70958
            {return false;}
 
70959
    }
 
70960
    }
 
70961
    }
 
70962
}
 
70963
 
 
70964
 
 
70965
    return true;
 
70966
}
 
70967
 
 
70968
//---------------------------------------------------------------------
 
70969
bool ColladaParserAutoGen15Private::_preEnd__falloff_angle()
 
70970
{
 
70971
#ifdef GENERATEDSAXPARSER_VALIDATION
 
70972
    if ( mValidate )
 
70973
    {
 
70974
 
 
70975
        bool validationResult = _validateEnd__falloff_angle();
 
70976
        if ( !validationResult ) return false;
 
70977
 
 
70978
    } // validation
 
70979
#endif
 
70980
 
 
70981
bool failed;
 
70982
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
70983
DISABLE_WARNING_UNUSED(ptrForErr)
 
70984
float parameter = GeneratedSaxParser::Utils::toFloat((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
70985
bool returnValue;
 
70986
if (!failed)
 
70987
{
 
70988
    returnValue = mImpl->data__falloff_angle(parameter);
 
70989
}
 
70990
else
 
70991
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_FALLOFF_ANGLE, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
70992
if (mLastIncompleteFragmentInCharacterData)
 
70993
    mStackMemoryManager.deleteObject();
 
70994
mLastIncompleteFragmentInCharacterData = 0;
 
70995
mEndOfDataInCurrentObjectOnStack = 0;
 
70996
return returnValue;
 
70997
}
 
70998
 
 
70999
//---------------------------------------------------------------------
 
71000
bool ColladaParserAutoGen15Private::_freeAttributes__falloff_angle( void* attributeData )
 
71001
{
 
71002
    falloff_angle__AttributeData* typedAttributeData = static_cast<falloff_angle__AttributeData*>(attributeData);
 
71003
 
 
71004
    typedAttributeData->~falloff_angle__AttributeData();
 
71005
 
 
71006
    return true;
 
71007
}
 
71008
 
 
71009
//---------------------------------------------------------------------
 
71010
const falloff_exponent__AttributeData falloff_exponent__AttributeData::DEFAULT = {0};
 
71011
 
 
71012
//---------------------------------------------------------------------
 
71013
bool ColladaParserAutoGen15Private::_data__falloff_exponent( const ParserChar* text, size_t textLength )
 
71014
{
 
71015
if (!mLastIncompleteFragmentInCharacterData)
 
71016
{
 
71017
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
71018
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
71019
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
71020
}
 
71021
else
 
71022
{
 
71023
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
71024
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
71025
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
71026
        mLastIncompleteFragmentInCharacterData = tmp;
 
71027
    }
 
71028
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
71029
    mEndOfDataInCurrentObjectOnStack += textLength;
 
71030
}
 
71031
return true;
 
71032
}
 
71033
 
 
71034
//---------------------------------------------------------------------
 
71035
bool ColladaParserAutoGen15Private::_preBegin__falloff_exponent( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
71036
{
 
71037
#ifdef GENERATEDSAXPARSER_VALIDATION
 
71038
    if ( mValidate )
 
71039
    {
 
71040
 
 
71041
        bool validationResult = _validateBegin__falloff_exponent( attributes, attributeDataPtr, validationDataPtr );
 
71042
        if ( !validationResult ) return false;
 
71043
 
 
71044
    } // validation
 
71045
#endif
 
71046
 
 
71047
falloff_exponent__AttributeData* attributeData = newData<falloff_exponent__AttributeData>(attributeDataPtr);
 
71048
 
 
71049
const ParserChar** attributeArray = attributes.attributes;
 
71050
if ( attributeArray )
 
71051
{
 
71052
    while (true)
 
71053
    {
 
71054
        const ParserChar * attribute = *attributeArray;
 
71055
        if ( !attribute )
 
71056
            break;
 
71057
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
71058
        attributeArray++;
 
71059
        if ( !attributeArray )
 
71060
            return false;
 
71061
        const ParserChar* attributeValue = *attributeArray;
 
71062
        attributeArray++;
 
71063
 
 
71064
 
 
71065
    switch ( hash )
 
71066
    {
 
71067
    case HASH_ATTRIBUTE_SID:
 
71068
    {
 
71069
 
 
71070
attributeData->sid = attributeValue;
 
71071
#ifdef GENERATEDSAXPARSER_VALIDATION
 
71072
    if ( mValidate )
 
71073
    {
 
71074
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
71075
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
71076
    {
 
71077
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
71078
            simpleTypeValidationResult,
 
71079
            HASH_ELEMENT_FALLOFF_EXPONENT,
 
71080
            HASH_ATTRIBUTE_SID,
 
71081
            attributeValue) )
 
71082
        {
 
71083
            return false;
 
71084
        }
 
71085
    }
 
71086
    } // validation
 
71087
#endif
 
71088
 
 
71089
    break;
 
71090
    }
 
71091
    default:
 
71092
    {
 
71093
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FALLOFF_EXPONENT, attribute, attributeValue))
 
71094
            {return false;}
 
71095
    }
 
71096
    }
 
71097
    }
 
71098
}
 
71099
 
 
71100
 
 
71101
    return true;
 
71102
}
 
71103
 
 
71104
//---------------------------------------------------------------------
 
71105
bool ColladaParserAutoGen15Private::_preEnd__falloff_exponent()
 
71106
{
 
71107
#ifdef GENERATEDSAXPARSER_VALIDATION
 
71108
    if ( mValidate )
 
71109
    {
 
71110
 
 
71111
        bool validationResult = _validateEnd__falloff_exponent();
 
71112
        if ( !validationResult ) return false;
 
71113
 
 
71114
    } // validation
 
71115
#endif
 
71116
 
 
71117
bool failed;
 
71118
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
71119
DISABLE_WARNING_UNUSED(ptrForErr)
 
71120
float parameter = GeneratedSaxParser::Utils::toFloat((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
71121
bool returnValue;
 
71122
if (!failed)
 
71123
{
 
71124
    returnValue = mImpl->data__falloff_exponent(parameter);
 
71125
}
 
71126
else
 
71127
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_FALLOFF_EXPONENT, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
71128
if (mLastIncompleteFragmentInCharacterData)
 
71129
    mStackMemoryManager.deleteObject();
 
71130
mLastIncompleteFragmentInCharacterData = 0;
 
71131
mEndOfDataInCurrentObjectOnStack = 0;
 
71132
return returnValue;
 
71133
}
 
71134
 
 
71135
//---------------------------------------------------------------------
 
71136
bool ColladaParserAutoGen15Private::_freeAttributes__falloff_exponent( void* attributeData )
 
71137
{
 
71138
    falloff_exponent__AttributeData* typedAttributeData = static_cast<falloff_exponent__AttributeData*>(attributeData);
 
71139
 
 
71140
    typedAttributeData->~falloff_exponent__AttributeData();
 
71141
 
 
71142
    return true;
 
71143
}
 
71144
 
 
71145
//---------------------------------------------------------------------
 
71146
const library_materials__AttributeData library_materials__AttributeData::DEFAULT = {0, 0};
 
71147
 
 
71148
//---------------------------------------------------------------------
 
71149
bool ColladaParserAutoGen15Private::_data__library_materials( const ParserChar* text, size_t textLength )
 
71150
{
 
71151
    return true;
 
71152
}
 
71153
 
 
71154
//---------------------------------------------------------------------
 
71155
bool ColladaParserAutoGen15Private::_preBegin__library_materials( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
71156
{
 
71157
#ifdef GENERATEDSAXPARSER_VALIDATION
 
71158
    if ( mValidate )
 
71159
    {
 
71160
 
 
71161
        bool validationResult = _validateBegin__library_materials( attributes, attributeDataPtr, validationDataPtr );
 
71162
        if ( !validationResult ) return false;
 
71163
 
 
71164
    } // validation
 
71165
#endif
 
71166
 
 
71167
library_materials__AttributeData* attributeData = newData<library_materials__AttributeData>(attributeDataPtr);
 
71168
 
 
71169
const ParserChar** attributeArray = attributes.attributes;
 
71170
if ( attributeArray )
 
71171
{
 
71172
    while (true)
 
71173
    {
 
71174
        const ParserChar * attribute = *attributeArray;
 
71175
        if ( !attribute )
 
71176
            break;
 
71177
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
71178
        attributeArray++;
 
71179
        if ( !attributeArray )
 
71180
            return false;
 
71181
        const ParserChar* attributeValue = *attributeArray;
 
71182
        attributeArray++;
 
71183
 
 
71184
 
 
71185
    switch ( hash )
 
71186
    {
 
71187
    case HASH_ATTRIBUTE_ID:
 
71188
    {
 
71189
 
 
71190
attributeData->id = attributeValue;
 
71191
 
 
71192
    break;
 
71193
    }
 
71194
    case HASH_ATTRIBUTE_NAME:
 
71195
    {
 
71196
 
 
71197
attributeData->name = attributeValue;
 
71198
 
 
71199
    break;
 
71200
    }
 
71201
    default:
 
71202
    {
 
71203
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIBRARY_MATERIALS, attribute, attributeValue))
 
71204
            {return false;}
 
71205
    }
 
71206
    }
 
71207
    }
 
71208
}
 
71209
 
 
71210
 
 
71211
    return true;
 
71212
}
 
71213
 
 
71214
//---------------------------------------------------------------------
 
71215
bool ColladaParserAutoGen15Private::_preEnd__library_materials()
 
71216
{
 
71217
#ifdef GENERATEDSAXPARSER_VALIDATION
 
71218
    if ( mValidate )
 
71219
    {
 
71220
 
 
71221
        bool validationResult = _validateEnd__library_materials();
 
71222
        if ( !validationResult ) return false;
 
71223
 
 
71224
    } // validation
 
71225
#endif
 
71226
 
 
71227
    return true;
 
71228
}
 
71229
 
 
71230
//---------------------------------------------------------------------
 
71231
bool ColladaParserAutoGen15Private::_freeAttributes__library_materials( void* attributeData )
 
71232
{
 
71233
    library_materials__AttributeData* typedAttributeData = static_cast<library_materials__AttributeData*>(attributeData);
 
71234
 
 
71235
    typedAttributeData->~library_materials__AttributeData();
 
71236
 
 
71237
    return true;
 
71238
}
 
71239
 
 
71240
//---------------------------------------------------------------------
 
71241
const material__AttributeData material__AttributeData::DEFAULT = {0, 0};
 
71242
 
 
71243
//---------------------------------------------------------------------
 
71244
bool ColladaParserAutoGen15Private::_data__material( const ParserChar* text, size_t textLength )
 
71245
{
 
71246
    return true;
 
71247
}
 
71248
 
 
71249
//---------------------------------------------------------------------
 
71250
bool ColladaParserAutoGen15Private::_preBegin__material( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
71251
{
 
71252
#ifdef GENERATEDSAXPARSER_VALIDATION
 
71253
    if ( mValidate )
 
71254
    {
 
71255
 
 
71256
        bool validationResult = _validateBegin__material( attributes, attributeDataPtr, validationDataPtr );
 
71257
        if ( !validationResult ) return false;
 
71258
 
 
71259
    } // validation
 
71260
#endif
 
71261
 
 
71262
material__AttributeData* attributeData = newData<material__AttributeData>(attributeDataPtr);
 
71263
 
 
71264
const ParserChar** attributeArray = attributes.attributes;
 
71265
if ( attributeArray )
 
71266
{
 
71267
    while (true)
 
71268
    {
 
71269
        const ParserChar * attribute = *attributeArray;
 
71270
        if ( !attribute )
 
71271
            break;
 
71272
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
71273
        attributeArray++;
 
71274
        if ( !attributeArray )
 
71275
            return false;
 
71276
        const ParserChar* attributeValue = *attributeArray;
 
71277
        attributeArray++;
 
71278
 
 
71279
 
 
71280
    switch ( hash )
 
71281
    {
 
71282
    case HASH_ATTRIBUTE_ID:
 
71283
    {
 
71284
 
 
71285
attributeData->id = attributeValue;
 
71286
 
 
71287
    break;
 
71288
    }
 
71289
    case HASH_ATTRIBUTE_NAME:
 
71290
    {
 
71291
 
 
71292
attributeData->name = attributeValue;
 
71293
 
 
71294
    break;
 
71295
    }
 
71296
    default:
 
71297
    {
 
71298
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_MATERIAL, attribute, attributeValue))
 
71299
            {return false;}
 
71300
    }
 
71301
    }
 
71302
    }
 
71303
}
 
71304
 
 
71305
 
 
71306
    return true;
 
71307
}
 
71308
 
 
71309
//---------------------------------------------------------------------
 
71310
bool ColladaParserAutoGen15Private::_preEnd__material()
 
71311
{
 
71312
#ifdef GENERATEDSAXPARSER_VALIDATION
 
71313
    if ( mValidate )
 
71314
    {
 
71315
 
 
71316
        bool validationResult = _validateEnd__material();
 
71317
        if ( !validationResult ) return false;
 
71318
 
 
71319
    } // validation
 
71320
#endif
 
71321
 
 
71322
    return true;
 
71323
}
 
71324
 
 
71325
//---------------------------------------------------------------------
 
71326
bool ColladaParserAutoGen15Private::_freeAttributes__material( void* attributeData )
 
71327
{
 
71328
    material__AttributeData* typedAttributeData = static_cast<material__AttributeData*>(attributeData);
 
71329
 
 
71330
    typedAttributeData->~material__AttributeData();
 
71331
 
 
71332
    return true;
 
71333
}
 
71334
 
 
71335
//---------------------------------------------------------------------
 
71336
const instance_effect__AttributeData instance_effect__AttributeData::DEFAULT = {0, 0, 0, 0};
 
71337
 
 
71338
//---------------------------------------------------------------------
 
71339
bool ColladaParserAutoGen15Private::_data__instance_effect( const ParserChar* text, size_t textLength )
 
71340
{
 
71341
    return true;
 
71342
}
 
71343
 
 
71344
//---------------------------------------------------------------------
 
71345
bool ColladaParserAutoGen15Private::_preBegin__instance_effect( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
71346
{
 
71347
#ifdef GENERATEDSAXPARSER_VALIDATION
 
71348
    if ( mValidate )
 
71349
    {
 
71350
 
 
71351
        bool validationResult = _validateBegin__instance_effect( attributes, attributeDataPtr, validationDataPtr );
 
71352
        if ( !validationResult ) return false;
 
71353
 
 
71354
    } // validation
 
71355
#endif
 
71356
 
 
71357
instance_effect__AttributeData* attributeData = newData<instance_effect__AttributeData>(attributeDataPtr);
 
71358
 
 
71359
const ParserChar** attributeArray = attributes.attributes;
 
71360
if ( attributeArray )
 
71361
{
 
71362
    while (true)
 
71363
    {
 
71364
        const ParserChar * attribute = *attributeArray;
 
71365
        if ( !attribute )
 
71366
            break;
 
71367
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
71368
        attributeArray++;
 
71369
        if ( !attributeArray )
 
71370
            return false;
 
71371
        const ParserChar* attributeValue = *attributeArray;
 
71372
        attributeArray++;
 
71373
 
 
71374
 
 
71375
    switch ( hash )
 
71376
    {
 
71377
    case HASH_ATTRIBUTE_URL:
 
71378
    {
 
71379
bool failed;
 
71380
attributeData->url = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
71381
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
71382
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
71383
        HASH_ELEMENT_INSTANCE_EFFECT,
 
71384
        HASH_ATTRIBUTE_URL,
 
71385
        attributeValue))
 
71386
{
 
71387
    return false;
 
71388
}
 
71389
if ( !failed )
 
71390
    attributeData->present_attributes |= instance_effect__AttributeData::ATTRIBUTE_URL_PRESENT;
 
71391
 
 
71392
    break;
 
71393
    }
 
71394
    case HASH_ATTRIBUTE_SID:
 
71395
    {
 
71396
 
 
71397
attributeData->sid = attributeValue;
 
71398
#ifdef GENERATEDSAXPARSER_VALIDATION
 
71399
    if ( mValidate )
 
71400
    {
 
71401
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
71402
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
71403
    {
 
71404
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
71405
            simpleTypeValidationResult,
 
71406
            HASH_ELEMENT_INSTANCE_EFFECT,
 
71407
            HASH_ATTRIBUTE_SID,
 
71408
            attributeValue) )
 
71409
        {
 
71410
            return false;
 
71411
        }
 
71412
    }
 
71413
    } // validation
 
71414
#endif
 
71415
 
 
71416
    break;
 
71417
    }
 
71418
    case HASH_ATTRIBUTE_NAME:
 
71419
    {
 
71420
 
 
71421
attributeData->name = attributeValue;
 
71422
 
 
71423
    break;
 
71424
    }
 
71425
    default:
 
71426
    {
 
71427
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_INSTANCE_EFFECT, attribute, attributeValue))
 
71428
            {return false;}
 
71429
    }
 
71430
    }
 
71431
    }
 
71432
}
 
71433
if ((attributeData->present_attributes & instance_effect__AttributeData::ATTRIBUTE_URL_PRESENT) == 0)
 
71434
{
 
71435
    attributeData->url = COLLADABU::URI("");
 
71436
}
 
71437
if ( (attributeData->present_attributes & instance_effect__AttributeData::ATTRIBUTE_URL_PRESENT) == 0 )
 
71438
{
 
71439
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_INSTANCE_EFFECT, HASH_ATTRIBUTE_URL, 0 ) )
 
71440
        return false;
 
71441
}
 
71442
 
 
71443
 
 
71444
    return true;
 
71445
}
 
71446
 
 
71447
//---------------------------------------------------------------------
 
71448
bool ColladaParserAutoGen15Private::_preEnd__instance_effect()
 
71449
{
 
71450
#ifdef GENERATEDSAXPARSER_VALIDATION
 
71451
    if ( mValidate )
 
71452
    {
 
71453
 
 
71454
        bool validationResult = _validateEnd__instance_effect();
 
71455
        if ( !validationResult ) return false;
 
71456
 
 
71457
    } // validation
 
71458
#endif
 
71459
 
 
71460
    return true;
 
71461
}
 
71462
 
 
71463
//---------------------------------------------------------------------
 
71464
bool ColladaParserAutoGen15Private::_freeAttributes__instance_effect( void* attributeData )
 
71465
{
 
71466
    instance_effect__AttributeData* typedAttributeData = static_cast<instance_effect__AttributeData*>(attributeData);
 
71467
 
 
71468
    typedAttributeData->~instance_effect__AttributeData();
 
71469
 
 
71470
    return true;
 
71471
}
 
71472
 
 
71473
//---------------------------------------------------------------------
 
71474
const technique_hint__AttributeData technique_hint__AttributeData::DEFAULT = {0, 0, 0};
 
71475
 
 
71476
//---------------------------------------------------------------------
 
71477
bool ColladaParserAutoGen15Private::_data__technique_hint( const ParserChar* text, size_t textLength )
 
71478
{
 
71479
    return true;
 
71480
}
 
71481
 
 
71482
//---------------------------------------------------------------------
 
71483
bool ColladaParserAutoGen15Private::_preBegin__technique_hint( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
71484
{
 
71485
#ifdef GENERATEDSAXPARSER_VALIDATION
 
71486
    if ( mValidate )
 
71487
    {
 
71488
 
 
71489
        bool validationResult = _validateBegin__technique_hint( attributes, attributeDataPtr, validationDataPtr );
 
71490
        if ( !validationResult ) return false;
 
71491
 
 
71492
    } // validation
 
71493
#endif
 
71494
 
 
71495
technique_hint__AttributeData* attributeData = newData<technique_hint__AttributeData>(attributeDataPtr);
 
71496
 
 
71497
const ParserChar** attributeArray = attributes.attributes;
 
71498
if ( attributeArray )
 
71499
{
 
71500
    while (true)
 
71501
    {
 
71502
        const ParserChar * attribute = *attributeArray;
 
71503
        if ( !attribute )
 
71504
            break;
 
71505
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
71506
        attributeArray++;
 
71507
        if ( !attributeArray )
 
71508
            return false;
 
71509
        const ParserChar* attributeValue = *attributeArray;
 
71510
        attributeArray++;
 
71511
 
 
71512
 
 
71513
    switch ( hash )
 
71514
    {
 
71515
    case HASH_ATTRIBUTE_PLATFORM:
 
71516
    {
 
71517
 
 
71518
attributeData->platform = attributeValue;
 
71519
#ifdef GENERATEDSAXPARSER_VALIDATION
 
71520
    if ( mValidate )
 
71521
    {
 
71522
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->platform, strlen(attributeData->platform));
 
71523
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
71524
    {
 
71525
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
71526
            simpleTypeValidationResult,
 
71527
            HASH_ELEMENT_TECHNIQUE_HINT,
 
71528
            HASH_ATTRIBUTE_PLATFORM,
 
71529
            attributeValue) )
 
71530
        {
 
71531
            return false;
 
71532
        }
 
71533
    }
 
71534
    } // validation
 
71535
#endif
 
71536
 
 
71537
    break;
 
71538
    }
 
71539
    case HASH_ATTRIBUTE_PROFILE:
 
71540
    {
 
71541
 
 
71542
attributeData->profile = attributeValue;
 
71543
#ifdef GENERATEDSAXPARSER_VALIDATION
 
71544
    if ( mValidate )
 
71545
    {
 
71546
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->profile, strlen(attributeData->profile));
 
71547
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
71548
    {
 
71549
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
71550
            simpleTypeValidationResult,
 
71551
            HASH_ELEMENT_TECHNIQUE_HINT,
 
71552
            HASH_ATTRIBUTE_PROFILE,
 
71553
            attributeValue) )
 
71554
        {
 
71555
            return false;
 
71556
        }
 
71557
    }
 
71558
    } // validation
 
71559
#endif
 
71560
 
 
71561
    break;
 
71562
    }
 
71563
    case HASH_ATTRIBUTE_REF:
 
71564
    {
 
71565
 
 
71566
attributeData->ref = attributeValue;
 
71567
#ifdef GENERATEDSAXPARSER_VALIDATION
 
71568
    if ( mValidate )
 
71569
    {
 
71570
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->ref, strlen(attributeData->ref));
 
71571
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
71572
    {
 
71573
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
71574
            simpleTypeValidationResult,
 
71575
            HASH_ELEMENT_TECHNIQUE_HINT,
 
71576
            HASH_ATTRIBUTE_REF,
 
71577
            attributeValue) )
 
71578
        {
 
71579
            return false;
 
71580
        }
 
71581
    }
 
71582
    } // validation
 
71583
#endif
 
71584
 
 
71585
    break;
 
71586
    }
 
71587
    default:
 
71588
    {
 
71589
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_TECHNIQUE_HINT, attribute, attributeValue))
 
71590
            {return false;}
 
71591
    }
 
71592
    }
 
71593
    }
 
71594
}
 
71595
if ( !attributeData->ref )
 
71596
{
 
71597
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_TECHNIQUE_HINT, HASH_ATTRIBUTE_REF, 0 ) )
 
71598
        return false;
 
71599
}
 
71600
 
 
71601
 
 
71602
    return true;
 
71603
}
 
71604
 
 
71605
//---------------------------------------------------------------------
 
71606
bool ColladaParserAutoGen15Private::_preEnd__technique_hint()
 
71607
{
 
71608
#ifdef GENERATEDSAXPARSER_VALIDATION
 
71609
    if ( mValidate )
 
71610
    {
 
71611
 
 
71612
        bool validationResult = _validateEnd__technique_hint();
 
71613
        if ( !validationResult ) return false;
 
71614
 
 
71615
    } // validation
 
71616
#endif
 
71617
 
 
71618
    return true;
 
71619
}
 
71620
 
 
71621
//---------------------------------------------------------------------
 
71622
bool ColladaParserAutoGen15Private::_freeAttributes__technique_hint( void* attributeData )
 
71623
{
 
71624
    technique_hint__AttributeData* typedAttributeData = static_cast<technique_hint__AttributeData*>(attributeData);
 
71625
 
 
71626
    typedAttributeData->~technique_hint__AttributeData();
 
71627
 
 
71628
    return true;
 
71629
}
 
71630
 
 
71631
//---------------------------------------------------------------------
 
71632
const instance_effect_type____setparam__AttributeData instance_effect_type____setparam__AttributeData::DEFAULT = {0};
 
71633
 
 
71634
//---------------------------------------------------------------------
 
71635
bool ColladaParserAutoGen15Private::_data__instance_effect_type____setparam( const ParserChar* text, size_t textLength )
 
71636
{
 
71637
    return true;
 
71638
}
 
71639
 
 
71640
//---------------------------------------------------------------------
 
71641
bool ColladaParserAutoGen15Private::_preBegin__instance_effect_type____setparam( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
71642
{
 
71643
#ifdef GENERATEDSAXPARSER_VALIDATION
 
71644
    if ( mValidate )
 
71645
    {
 
71646
 
 
71647
        bool validationResult = _validateBegin__instance_effect_type____setparam( attributes, attributeDataPtr, validationDataPtr );
 
71648
        if ( !validationResult ) return false;
 
71649
 
 
71650
    } // validation
 
71651
#endif
 
71652
 
 
71653
instance_effect_type____setparam__AttributeData* attributeData = newData<instance_effect_type____setparam__AttributeData>(attributeDataPtr);
 
71654
 
 
71655
const ParserChar** attributeArray = attributes.attributes;
 
71656
if ( attributeArray )
 
71657
{
 
71658
    while (true)
 
71659
    {
 
71660
        const ParserChar * attribute = *attributeArray;
 
71661
        if ( !attribute )
 
71662
            break;
 
71663
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
71664
        attributeArray++;
 
71665
        if ( !attributeArray )
 
71666
            return false;
 
71667
        const ParserChar* attributeValue = *attributeArray;
 
71668
        attributeArray++;
 
71669
 
 
71670
 
 
71671
    switch ( hash )
 
71672
    {
 
71673
    case HASH_ATTRIBUTE_REF:
 
71674
    {
 
71675
 
 
71676
attributeData->ref = attributeValue;
 
71677
 
 
71678
    break;
 
71679
    }
 
71680
    default:
 
71681
    {
 
71682
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SETPARAM, attribute, attributeValue))
 
71683
            {return false;}
 
71684
    }
 
71685
    }
 
71686
    }
 
71687
}
 
71688
if ( !attributeData->ref )
 
71689
{
 
71690
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_SETPARAM, HASH_ATTRIBUTE_REF, 0 ) )
 
71691
        return false;
 
71692
}
 
71693
 
 
71694
 
 
71695
    return true;
 
71696
}
 
71697
 
 
71698
//---------------------------------------------------------------------
 
71699
bool ColladaParserAutoGen15Private::_preEnd__instance_effect_type____setparam()
 
71700
{
 
71701
#ifdef GENERATEDSAXPARSER_VALIDATION
 
71702
    if ( mValidate )
 
71703
    {
 
71704
 
 
71705
        bool validationResult = _validateEnd__instance_effect_type____setparam();
 
71706
        if ( !validationResult ) return false;
 
71707
 
 
71708
    } // validation
 
71709
#endif
 
71710
 
 
71711
    return true;
 
71712
}
 
71713
 
 
71714
//---------------------------------------------------------------------
 
71715
bool ColladaParserAutoGen15Private::_freeAttributes__instance_effect_type____setparam( void* attributeData )
 
71716
{
 
71717
    instance_effect_type____setparam__AttributeData* typedAttributeData = static_cast<instance_effect_type____setparam__AttributeData*>(attributeData);
 
71718
 
 
71719
    typedAttributeData->~instance_effect_type____setparam__AttributeData();
 
71720
 
 
71721
    return true;
 
71722
}
 
71723
 
 
71724
//---------------------------------------------------------------------
 
71725
const sampler_image__AttributeData sampler_image__AttributeData::DEFAULT = {0, 0, 0, 0};
 
71726
 
 
71727
//---------------------------------------------------------------------
 
71728
bool ColladaParserAutoGen15Private::_data__sampler_image( const ParserChar* text, size_t textLength )
 
71729
{
 
71730
    return true;
 
71731
}
 
71732
 
 
71733
//---------------------------------------------------------------------
 
71734
bool ColladaParserAutoGen15Private::_preBegin__sampler_image( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
71735
{
 
71736
#ifdef GENERATEDSAXPARSER_VALIDATION
 
71737
    if ( mValidate )
 
71738
    {
 
71739
 
 
71740
        bool validationResult = _validateBegin__sampler_image( attributes, attributeDataPtr, validationDataPtr );
 
71741
        if ( !validationResult ) return false;
 
71742
 
 
71743
    } // validation
 
71744
#endif
 
71745
 
 
71746
sampler_image__AttributeData* attributeData = newData<sampler_image__AttributeData>(attributeDataPtr);
 
71747
 
 
71748
const ParserChar** attributeArray = attributes.attributes;
 
71749
if ( attributeArray )
 
71750
{
 
71751
    while (true)
 
71752
    {
 
71753
        const ParserChar * attribute = *attributeArray;
 
71754
        if ( !attribute )
 
71755
            break;
 
71756
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
71757
        attributeArray++;
 
71758
        if ( !attributeArray )
 
71759
            return false;
 
71760
        const ParserChar* attributeValue = *attributeArray;
 
71761
        attributeArray++;
 
71762
 
 
71763
 
 
71764
    switch ( hash )
 
71765
    {
 
71766
    case HASH_ATTRIBUTE_URL:
 
71767
    {
 
71768
bool failed;
 
71769
attributeData->url = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
71770
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
71771
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
71772
        HASH_ELEMENT_SAMPLER_IMAGE,
 
71773
        HASH_ATTRIBUTE_URL,
 
71774
        attributeValue))
 
71775
{
 
71776
    return false;
 
71777
}
 
71778
if ( !failed )
 
71779
    attributeData->present_attributes |= sampler_image__AttributeData::ATTRIBUTE_URL_PRESENT;
 
71780
 
 
71781
    break;
 
71782
    }
 
71783
    case HASH_ATTRIBUTE_SID:
 
71784
    {
 
71785
 
 
71786
attributeData->sid = attributeValue;
 
71787
#ifdef GENERATEDSAXPARSER_VALIDATION
 
71788
    if ( mValidate )
 
71789
    {
 
71790
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
71791
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
71792
    {
 
71793
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
71794
            simpleTypeValidationResult,
 
71795
            HASH_ELEMENT_SAMPLER_IMAGE,
 
71796
            HASH_ATTRIBUTE_SID,
 
71797
            attributeValue) )
 
71798
        {
 
71799
            return false;
 
71800
        }
 
71801
    }
 
71802
    } // validation
 
71803
#endif
 
71804
 
 
71805
    break;
 
71806
    }
 
71807
    case HASH_ATTRIBUTE_NAME:
 
71808
    {
 
71809
 
 
71810
attributeData->name = attributeValue;
 
71811
 
 
71812
    break;
 
71813
    }
 
71814
    default:
 
71815
    {
 
71816
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SAMPLER_IMAGE, attribute, attributeValue))
 
71817
            {return false;}
 
71818
    }
 
71819
    }
 
71820
    }
 
71821
}
 
71822
if ((attributeData->present_attributes & sampler_image__AttributeData::ATTRIBUTE_URL_PRESENT) == 0)
 
71823
{
 
71824
    attributeData->url = COLLADABU::URI("");
 
71825
}
 
71826
if ( (attributeData->present_attributes & sampler_image__AttributeData::ATTRIBUTE_URL_PRESENT) == 0 )
 
71827
{
 
71828
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_SAMPLER_IMAGE, HASH_ATTRIBUTE_URL, 0 ) )
 
71829
        return false;
 
71830
}
 
71831
 
 
71832
 
 
71833
    return true;
 
71834
}
 
71835
 
 
71836
//---------------------------------------------------------------------
 
71837
bool ColladaParserAutoGen15Private::_preEnd__sampler_image()
 
71838
{
 
71839
#ifdef GENERATEDSAXPARSER_VALIDATION
 
71840
    if ( mValidate )
 
71841
    {
 
71842
 
 
71843
        bool validationResult = _validateEnd__sampler_image();
 
71844
        if ( !validationResult ) return false;
 
71845
 
 
71846
    } // validation
 
71847
#endif
 
71848
 
 
71849
    return true;
 
71850
}
 
71851
 
 
71852
//---------------------------------------------------------------------
 
71853
bool ColladaParserAutoGen15Private::_freeAttributes__sampler_image( void* attributeData )
 
71854
{
 
71855
    sampler_image__AttributeData* typedAttributeData = static_cast<sampler_image__AttributeData*>(attributeData);
 
71856
 
 
71857
    typedAttributeData->~sampler_image__AttributeData();
 
71858
 
 
71859
    return true;
 
71860
}
 
71861
 
 
71862
//---------------------------------------------------------------------
 
71863
bool ColladaParserAutoGen15Private::_data__sampler_states( const ParserChar* text, size_t textLength )
 
71864
{
 
71865
    return true;
 
71866
}
 
71867
 
 
71868
//---------------------------------------------------------------------
 
71869
bool ColladaParserAutoGen15Private::_preBegin__sampler_states( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
71870
{
 
71871
#ifdef GENERATEDSAXPARSER_VALIDATION
 
71872
    if ( mValidate )
 
71873
    {
 
71874
 
 
71875
        bool validationResult = _validateBegin__sampler_states( attributes, attributeDataPtr, validationDataPtr );
 
71876
        if ( !validationResult ) return false;
 
71877
 
 
71878
    } // validation
 
71879
#endif
 
71880
 
 
71881
    return true;
 
71882
}
 
71883
 
 
71884
//---------------------------------------------------------------------
 
71885
bool ColladaParserAutoGen15Private::_preEnd__sampler_states()
 
71886
{
 
71887
#ifdef GENERATEDSAXPARSER_VALIDATION
 
71888
    if ( mValidate )
 
71889
    {
 
71890
 
 
71891
        bool validationResult = _validateEnd__sampler_states();
 
71892
        if ( !validationResult ) return false;
 
71893
 
 
71894
    } // validation
 
71895
#endif
 
71896
 
 
71897
    return true;
 
71898
}
 
71899
 
 
71900
//---------------------------------------------------------------------
 
71901
bool ColladaParserAutoGen15Private::_freeAttributes__sampler_states( void* attributeData )
 
71902
{
 
71903
    return true;
 
71904
}
 
71905
 
 
71906
//---------------------------------------------------------------------
 
71907
const library_nodes__AttributeData library_nodes__AttributeData::DEFAULT = {0, 0};
 
71908
 
 
71909
//---------------------------------------------------------------------
 
71910
bool ColladaParserAutoGen15Private::_data__library_nodes( const ParserChar* text, size_t textLength )
 
71911
{
 
71912
    return true;
 
71913
}
 
71914
 
 
71915
//---------------------------------------------------------------------
 
71916
bool ColladaParserAutoGen15Private::_preBegin__library_nodes( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
71917
{
 
71918
#ifdef GENERATEDSAXPARSER_VALIDATION
 
71919
    if ( mValidate )
 
71920
    {
 
71921
 
 
71922
        bool validationResult = _validateBegin__library_nodes( attributes, attributeDataPtr, validationDataPtr );
 
71923
        if ( !validationResult ) return false;
 
71924
 
 
71925
    } // validation
 
71926
#endif
 
71927
 
 
71928
library_nodes__AttributeData* attributeData = newData<library_nodes__AttributeData>(attributeDataPtr);
 
71929
 
 
71930
const ParserChar** attributeArray = attributes.attributes;
 
71931
if ( attributeArray )
 
71932
{
 
71933
    while (true)
 
71934
    {
 
71935
        const ParserChar * attribute = *attributeArray;
 
71936
        if ( !attribute )
 
71937
            break;
 
71938
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
71939
        attributeArray++;
 
71940
        if ( !attributeArray )
 
71941
            return false;
 
71942
        const ParserChar* attributeValue = *attributeArray;
 
71943
        attributeArray++;
 
71944
 
 
71945
 
 
71946
    switch ( hash )
 
71947
    {
 
71948
    case HASH_ATTRIBUTE_ID:
 
71949
    {
 
71950
 
 
71951
attributeData->id = attributeValue;
 
71952
 
 
71953
    break;
 
71954
    }
 
71955
    case HASH_ATTRIBUTE_NAME:
 
71956
    {
 
71957
 
 
71958
attributeData->name = attributeValue;
 
71959
 
 
71960
    break;
 
71961
    }
 
71962
    default:
 
71963
    {
 
71964
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIBRARY_NODES, attribute, attributeValue))
 
71965
            {return false;}
 
71966
    }
 
71967
    }
 
71968
    }
 
71969
}
 
71970
 
 
71971
 
 
71972
    return true;
 
71973
}
 
71974
 
 
71975
//---------------------------------------------------------------------
 
71976
bool ColladaParserAutoGen15Private::_preEnd__library_nodes()
 
71977
{
 
71978
#ifdef GENERATEDSAXPARSER_VALIDATION
 
71979
    if ( mValidate )
 
71980
    {
 
71981
 
 
71982
        bool validationResult = _validateEnd__library_nodes();
 
71983
        if ( !validationResult ) return false;
 
71984
 
 
71985
    } // validation
 
71986
#endif
 
71987
 
 
71988
    return true;
 
71989
}
 
71990
 
 
71991
//---------------------------------------------------------------------
 
71992
bool ColladaParserAutoGen15Private::_freeAttributes__library_nodes( void* attributeData )
 
71993
{
 
71994
    library_nodes__AttributeData* typedAttributeData = static_cast<library_nodes__AttributeData*>(attributeData);
 
71995
 
 
71996
    typedAttributeData->~library_nodes__AttributeData();
 
71997
 
 
71998
    return true;
 
71999
}
 
72000
 
 
72001
//---------------------------------------------------------------------
 
72002
const node__AttributeData node__AttributeData::DEFAULT = {0, 0, 0, 0, ENUM__node_enum__NODE, GeneratedSaxParser::XSList<ParserString>()};
 
72003
 
 
72004
//---------------------------------------------------------------------
 
72005
bool ColladaParserAutoGen15Private::_data__node( const ParserChar* text, size_t textLength )
 
72006
{
 
72007
    return true;
 
72008
}
 
72009
 
 
72010
//---------------------------------------------------------------------
 
72011
bool ColladaParserAutoGen15Private::_preBegin__node( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
72012
{
 
72013
#ifdef GENERATEDSAXPARSER_VALIDATION
 
72014
    if ( mValidate )
 
72015
    {
 
72016
 
 
72017
        bool validationResult = _validateBegin__node( attributes, attributeDataPtr, validationDataPtr );
 
72018
        if ( !validationResult ) return false;
 
72019
 
 
72020
    } // validation
 
72021
#endif
 
72022
 
 
72023
node__AttributeData* attributeData = newData<node__AttributeData>(attributeDataPtr);
 
72024
 
 
72025
const ParserChar** attributeArray = attributes.attributes;
 
72026
if ( attributeArray )
 
72027
{
 
72028
    while (true)
 
72029
    {
 
72030
        const ParserChar * attribute = *attributeArray;
 
72031
        if ( !attribute )
 
72032
            break;
 
72033
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
72034
        attributeArray++;
 
72035
        if ( !attributeArray )
 
72036
            return false;
 
72037
        const ParserChar* attributeValue = *attributeArray;
 
72038
        attributeArray++;
 
72039
 
 
72040
 
 
72041
    switch ( hash )
 
72042
    {
 
72043
    case HASH_ATTRIBUTE_ID:
 
72044
    {
 
72045
 
 
72046
attributeData->id = attributeValue;
 
72047
 
 
72048
    break;
 
72049
    }
 
72050
    case HASH_ATTRIBUTE_NAME:
 
72051
    {
 
72052
 
 
72053
attributeData->name = attributeValue;
 
72054
 
 
72055
    break;
 
72056
    }
 
72057
    case HASH_ATTRIBUTE_SID:
 
72058
    {
 
72059
 
 
72060
attributeData->sid = attributeValue;
 
72061
#ifdef GENERATEDSAXPARSER_VALIDATION
 
72062
    if ( mValidate )
 
72063
    {
 
72064
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
72065
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
72066
    {
 
72067
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
72068
            simpleTypeValidationResult,
 
72069
            HASH_ELEMENT_NODE,
 
72070
            HASH_ATTRIBUTE_SID,
 
72071
            attributeValue) )
 
72072
        {
 
72073
            return false;
 
72074
        }
 
72075
    }
 
72076
    } // validation
 
72077
#endif
 
72078
 
 
72079
    break;
 
72080
    }
 
72081
    case HASH_ATTRIBUTE_TYPE:
 
72082
    {
 
72083
bool failed;
 
72084
attributeData->type = Utils::toEnum<ENUM__node_enum, StringHash, ENUM__node_enum__COUNT>(attributeValue, failed, ENUM__node_enumMap, Utils::calculateStringHash);
 
72085
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
72086
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
72087
        HASH_ELEMENT_NODE,
 
72088
        HASH_ATTRIBUTE_TYPE,
 
72089
        attributeValue))
 
72090
{
 
72091
    return false;
 
72092
}
 
72093
 
 
72094
    break;
 
72095
    }
 
72096
    case HASH_ATTRIBUTE_LAYER:
 
72097
    {
 
72098
bool failed;
 
72099
#ifdef GENERATEDSAXPARSER_VALIDATION
 
72100
    if ( mValidate )
 
72101
    {
 
72102
failed = !characterData2StringList(attributeValue, attributeData->layer, &validate__Name, HASH_ELEMENT_NODE, HASH_ATTRIBUTE_LAYER);
 
72103
    }
 
72104
    else
 
72105
    {
 
72106
failed = !characterData2StringList(attributeValue, attributeData->layer);
 
72107
    }
 
72108
#else
 
72109
    {
 
72110
failed = !characterData2StringList(attributeValue, attributeData->layer);
 
72111
    } // validation
 
72112
#endif
 
72113
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
72114
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
72115
        HASH_ELEMENT_NODE,
 
72116
        HASH_ATTRIBUTE_LAYER,
 
72117
        attributeValue))
 
72118
{
 
72119
    return false;
 
72120
}
 
72121
 
 
72122
if ( !failed )
 
72123
    attributeData->present_attributes |= node__AttributeData::ATTRIBUTE_LAYER_PRESENT;
 
72124
 
 
72125
    break;
 
72126
    }
 
72127
    default:
 
72128
    {
 
72129
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_NODE, attribute, attributeValue))
 
72130
            {return false;}
 
72131
    }
 
72132
    }
 
72133
    }
 
72134
}
 
72135
if ((attributeData->present_attributes & node__AttributeData::ATTRIBUTE_LAYER_PRESENT) == 0)
 
72136
{
 
72137
    attributeData->layer = GeneratedSaxParser::XSList<ParserString>();
 
72138
}
 
72139
 
 
72140
 
 
72141
    return true;
 
72142
}
 
72143
 
 
72144
//---------------------------------------------------------------------
 
72145
bool ColladaParserAutoGen15Private::_preEnd__node()
 
72146
{
 
72147
#ifdef GENERATEDSAXPARSER_VALIDATION
 
72148
    if ( mValidate )
 
72149
    {
 
72150
 
 
72151
        bool validationResult = _validateEnd__node();
 
72152
        if ( !validationResult ) return false;
 
72153
 
 
72154
    } // validation
 
72155
#endif
 
72156
 
 
72157
    return true;
 
72158
}
 
72159
 
 
72160
//---------------------------------------------------------------------
 
72161
bool ColladaParserAutoGen15Private::_freeAttributes__node( void* attributeData )
 
72162
{
 
72163
    node__AttributeData* typedAttributeData = static_cast<node__AttributeData*>(attributeData);
 
72164
    if (typedAttributeData->layer.data)
 
72165
    {
 
72166
        mStackMemoryManager.deleteObject();
 
72167
    }
 
72168
 
 
72169
 
 
72170
    typedAttributeData->~node__AttributeData();
 
72171
 
 
72172
    return true;
 
72173
}
 
72174
 
 
72175
//---------------------------------------------------------------------
 
72176
ENUM__node_enum ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__node_enum (
 
72177
    const ParserChar* prefixedBuffer,
 
72178
    const ParserChar* prefixedBufferEnd,
 
72179
    const ParserChar** buffer,
 
72180
    const ParserChar* bufferEnd,
 
72181
    bool& failed,
 
72182
    const std::pair<StringHash, ENUM__node_enum>* enumMap,
 
72183
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
72184
)
 
72185
{
 
72186
    return toEnumDataPrefix<ENUM__node_enum, StringHash, ENUM__node_enum__COUNT, &toEnum_ENUM__node_enum>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
72187
}
 
72188
 
 
72189
//---------------------------------------------------------------------
 
72190
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__node_enum (
 
72191
    const ParserChar* text,
 
72192
    size_t textLength,
 
72193
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__node_enum*, size_t ),
 
72194
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
72195
)
 
72196
{
 
72197
    return characterData2EnumData<ENUM__node_enum, StringHash, ENUM__node_enum__COUNT>(text, textLength, dataFunction, ENUM__node_enumMap, baseConversionFunc, &toEnum_ENUM__node_enum, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__node_enum);
 
72198
}
 
72199
 
 
72200
//---------------------------------------------------------------------
 
72201
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__node_enum (
 
72202
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__node_enum*, size_t ),
 
72203
    const std::pair<StringHash, ENUM__node_enum>* enumMap,
 
72204
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
72205
    ENUM__node_enum (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__node_enum>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
72206
)
 
72207
{
 
72208
    return dataEnumEnd<ENUM__node_enum, StringHash, ENUM__node_enum__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
72209
}
 
72210
 
 
72211
//---------------------------------------------------------------------
 
72212
const lookat__AttributeData lookat__AttributeData::DEFAULT = {0};
 
72213
 
 
72214
//---------------------------------------------------------------------
 
72215
bool ColladaParserAutoGen15Private::_data__lookat( const ParserChar* text, size_t textLength )
 
72216
{
 
72217
#ifdef GENERATEDSAXPARSER_VALIDATION
 
72218
    if ( mValidate )
 
72219
    {
 
72220
        float3x3__ValidationData* validationData = (float3x3__ValidationData*)mValidationDataStack.top();
 
72221
        DISABLE_WARNING_UNUSED(validationData)
 
72222
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__lookat, &validate__float3x3_type__stream, &validationData->validationWholeSize, 0);
 
72223
    }
 
72224
    else
 
72225
    {
 
72226
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__lookat);
 
72227
    }
 
72228
#else
 
72229
    {
 
72230
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__lookat);
 
72231
    } // validation
 
72232
#endif
 
72233
 
 
72234
}
 
72235
 
 
72236
//---------------------------------------------------------------------
 
72237
bool ColladaParserAutoGen15Private::_preBegin__lookat( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
72238
{
 
72239
#ifdef GENERATEDSAXPARSER_VALIDATION
 
72240
    if ( mValidate )
 
72241
    {
 
72242
 
 
72243
        bool validationResult = _validateBegin__lookat( attributes, attributeDataPtr, validationDataPtr );
 
72244
        if ( !validationResult ) return false;
 
72245
 
 
72246
    } // validation
 
72247
#endif
 
72248
 
 
72249
lookat__AttributeData* attributeData = newData<lookat__AttributeData>(attributeDataPtr);
 
72250
 
 
72251
const ParserChar** attributeArray = attributes.attributes;
 
72252
if ( attributeArray )
 
72253
{
 
72254
    while (true)
 
72255
    {
 
72256
        const ParserChar * attribute = *attributeArray;
 
72257
        if ( !attribute )
 
72258
            break;
 
72259
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
72260
        attributeArray++;
 
72261
        if ( !attributeArray )
 
72262
            return false;
 
72263
        const ParserChar* attributeValue = *attributeArray;
 
72264
        attributeArray++;
 
72265
 
 
72266
 
 
72267
    switch ( hash )
 
72268
    {
 
72269
    case HASH_ATTRIBUTE_SID:
 
72270
    {
 
72271
 
 
72272
attributeData->sid = attributeValue;
 
72273
#ifdef GENERATEDSAXPARSER_VALIDATION
 
72274
    if ( mValidate )
 
72275
    {
 
72276
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
72277
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
72278
    {
 
72279
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
72280
            simpleTypeValidationResult,
 
72281
            HASH_ELEMENT_LOOKAT,
 
72282
            HASH_ATTRIBUTE_SID,
 
72283
            attributeValue) )
 
72284
        {
 
72285
            return false;
 
72286
        }
 
72287
    }
 
72288
    } // validation
 
72289
#endif
 
72290
 
 
72291
    break;
 
72292
    }
 
72293
    default:
 
72294
    {
 
72295
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LOOKAT, attribute, attributeValue))
 
72296
            {return false;}
 
72297
    }
 
72298
    }
 
72299
    }
 
72300
}
 
72301
 
 
72302
 
 
72303
    return true;
 
72304
}
 
72305
 
 
72306
//---------------------------------------------------------------------
 
72307
bool ColladaParserAutoGen15Private::_preEnd__lookat()
 
72308
{
 
72309
#ifdef GENERATEDSAXPARSER_VALIDATION
 
72310
    if ( mValidate )
 
72311
    {
 
72312
 
 
72313
        bool validationResult = _validateEnd__lookat();
 
72314
        if ( !validationResult ) return false;
 
72315
 
 
72316
    } // validation
 
72317
#endif
 
72318
 
 
72319
#ifdef GENERATEDSAXPARSER_VALIDATION
 
72320
    if ( mValidate )
 
72321
    {
 
72322
        float3x3__ValidationData* validationData = (float3x3__ValidationData*)mValidationDataStack.top();
 
72323
        DISABLE_WARNING_UNUSED(validationData)
 
72324
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__lookat, &validate__float3x3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
72325
        ParserError::ErrorType simpleTypeValidationResult = validate__float3x3_type(0, (*(&validationData->validationWholeSize)));
 
72326
        mValidationDataStack.deleteObject();
 
72327
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
72328
        {
 
72329
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
72330
                simpleTypeValidationResult,
 
72331
                HASH_ELEMENT_LOOKAT,
 
72332
                (ParserChar*)0, 0 ) )
 
72333
            {
 
72334
                return false;
 
72335
            }
 
72336
        }
 
72337
        return returnValue;
 
72338
    }
 
72339
    else
 
72340
    {
 
72341
return floatDataEnd( &ColladaParserAutoGen15::data__lookat );
 
72342
    }
 
72343
#else
 
72344
    {
 
72345
return floatDataEnd( &ColladaParserAutoGen15::data__lookat );
 
72346
    } // validation
 
72347
#endif
 
72348
 
 
72349
}
 
72350
 
 
72351
//---------------------------------------------------------------------
 
72352
bool ColladaParserAutoGen15Private::_freeAttributes__lookat( void* attributeData )
 
72353
{
 
72354
    lookat__AttributeData* typedAttributeData = static_cast<lookat__AttributeData*>(attributeData);
 
72355
 
 
72356
    typedAttributeData->~lookat__AttributeData();
 
72357
 
 
72358
    return true;
 
72359
}
 
72360
 
 
72361
//---------------------------------------------------------------------
 
72362
const matrix____matrix_type__AttributeData matrix____matrix_type__AttributeData::DEFAULT = {0};
 
72363
 
 
72364
//---------------------------------------------------------------------
 
72365
bool ColladaParserAutoGen15Private::_data__matrix____matrix_type( const ParserChar* text, size_t textLength )
 
72366
{
 
72367
#ifdef GENERATEDSAXPARSER_VALIDATION
 
72368
    if ( mValidate )
 
72369
    {
 
72370
        bind_shape_matrix__ValidationData* validationData = (bind_shape_matrix__ValidationData*)mValidationDataStack.top();
 
72371
        DISABLE_WARNING_UNUSED(validationData)
 
72372
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__matrix____matrix_type, &validate__float4x4_type__stream, &validationData->validationWholeSize, 0);
 
72373
    }
 
72374
    else
 
72375
    {
 
72376
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__matrix____matrix_type);
 
72377
    }
 
72378
#else
 
72379
    {
 
72380
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__matrix____matrix_type);
 
72381
    } // validation
 
72382
#endif
 
72383
 
 
72384
}
 
72385
 
 
72386
//---------------------------------------------------------------------
 
72387
bool ColladaParserAutoGen15Private::_preBegin__matrix____matrix_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
72388
{
 
72389
#ifdef GENERATEDSAXPARSER_VALIDATION
 
72390
    if ( mValidate )
 
72391
    {
 
72392
 
 
72393
        bool validationResult = _validateBegin__matrix____matrix_type( attributes, attributeDataPtr, validationDataPtr );
 
72394
        if ( !validationResult ) return false;
 
72395
 
 
72396
    } // validation
 
72397
#endif
 
72398
 
 
72399
matrix____matrix_type__AttributeData* attributeData = newData<matrix____matrix_type__AttributeData>(attributeDataPtr);
 
72400
 
 
72401
const ParserChar** attributeArray = attributes.attributes;
 
72402
if ( attributeArray )
 
72403
{
 
72404
    while (true)
 
72405
    {
 
72406
        const ParserChar * attribute = *attributeArray;
 
72407
        if ( !attribute )
 
72408
            break;
 
72409
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
72410
        attributeArray++;
 
72411
        if ( !attributeArray )
 
72412
            return false;
 
72413
        const ParserChar* attributeValue = *attributeArray;
 
72414
        attributeArray++;
 
72415
 
 
72416
 
 
72417
    switch ( hash )
 
72418
    {
 
72419
    case HASH_ATTRIBUTE_SID:
 
72420
    {
 
72421
 
 
72422
attributeData->sid = attributeValue;
 
72423
#ifdef GENERATEDSAXPARSER_VALIDATION
 
72424
    if ( mValidate )
 
72425
    {
 
72426
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
72427
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
72428
    {
 
72429
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
72430
            simpleTypeValidationResult,
 
72431
            HASH_ELEMENT_MATRIX,
 
72432
            HASH_ATTRIBUTE_SID,
 
72433
            attributeValue) )
 
72434
        {
 
72435
            return false;
 
72436
        }
 
72437
    }
 
72438
    } // validation
 
72439
#endif
 
72440
 
 
72441
    break;
 
72442
    }
 
72443
    default:
 
72444
    {
 
72445
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_MATRIX, attribute, attributeValue))
 
72446
            {return false;}
 
72447
    }
 
72448
    }
 
72449
    }
 
72450
}
 
72451
 
 
72452
 
 
72453
    return true;
 
72454
}
 
72455
 
 
72456
//---------------------------------------------------------------------
 
72457
bool ColladaParserAutoGen15Private::_preEnd__matrix____matrix_type()
 
72458
{
 
72459
#ifdef GENERATEDSAXPARSER_VALIDATION
 
72460
    if ( mValidate )
 
72461
    {
 
72462
 
 
72463
        bool validationResult = _validateEnd__matrix____matrix_type();
 
72464
        if ( !validationResult ) return false;
 
72465
 
 
72466
    } // validation
 
72467
#endif
 
72468
 
 
72469
#ifdef GENERATEDSAXPARSER_VALIDATION
 
72470
    if ( mValidate )
 
72471
    {
 
72472
        bind_shape_matrix__ValidationData* validationData = (bind_shape_matrix__ValidationData*)mValidationDataStack.top();
 
72473
        DISABLE_WARNING_UNUSED(validationData)
 
72474
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__matrix____matrix_type, &validate__float4x4_type__streamEnd, &validationData->validationWholeSize, 0 );
 
72475
        ParserError::ErrorType simpleTypeValidationResult = validate__float4x4_type(0, (*(&validationData->validationWholeSize)));
 
72476
        mValidationDataStack.deleteObject();
 
72477
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
72478
        {
 
72479
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
72480
                simpleTypeValidationResult,
 
72481
                HASH_ELEMENT_MATRIX,
 
72482
                (ParserChar*)0, 0 ) )
 
72483
            {
 
72484
                return false;
 
72485
            }
 
72486
        }
 
72487
        return returnValue;
 
72488
    }
 
72489
    else
 
72490
    {
 
72491
return floatDataEnd( &ColladaParserAutoGen15::data__matrix____matrix_type );
 
72492
    }
 
72493
#else
 
72494
    {
 
72495
return floatDataEnd( &ColladaParserAutoGen15::data__matrix____matrix_type );
 
72496
    } // validation
 
72497
#endif
 
72498
 
 
72499
}
 
72500
 
 
72501
//---------------------------------------------------------------------
 
72502
bool ColladaParserAutoGen15Private::_freeAttributes__matrix____matrix_type( void* attributeData )
 
72503
{
 
72504
    matrix____matrix_type__AttributeData* typedAttributeData = static_cast<matrix____matrix_type__AttributeData*>(attributeData);
 
72505
 
 
72506
    typedAttributeData->~matrix____matrix_type__AttributeData();
 
72507
 
 
72508
    return true;
 
72509
}
 
72510
 
 
72511
//---------------------------------------------------------------------
 
72512
const rotate__AttributeData rotate__AttributeData::DEFAULT = {0};
 
72513
 
 
72514
//---------------------------------------------------------------------
 
72515
bool ColladaParserAutoGen15Private::_data__rotate( const ParserChar* text, size_t textLength )
 
72516
{
 
72517
#ifdef GENERATEDSAXPARSER_VALIDATION
 
72518
    if ( mValidate )
 
72519
    {
 
72520
        rotate__ValidationData* validationData = (rotate__ValidationData*)mValidationDataStack.top();
 
72521
        DISABLE_WARNING_UNUSED(validationData)
 
72522
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__rotate, &validate__rotate__stream, &validationData->validationWholeSize, 0);
 
72523
    }
 
72524
    else
 
72525
    {
 
72526
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__rotate);
 
72527
    }
 
72528
#else
 
72529
    {
 
72530
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__rotate);
 
72531
    } // validation
 
72532
#endif
 
72533
 
 
72534
}
 
72535
 
 
72536
//---------------------------------------------------------------------
 
72537
bool ColladaParserAutoGen15Private::_preBegin__rotate( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
72538
{
 
72539
#ifdef GENERATEDSAXPARSER_VALIDATION
 
72540
    if ( mValidate )
 
72541
    {
 
72542
 
 
72543
        bool validationResult = _validateBegin__rotate( attributes, attributeDataPtr, validationDataPtr );
 
72544
        if ( !validationResult ) return false;
 
72545
 
 
72546
    } // validation
 
72547
#endif
 
72548
 
 
72549
rotate__AttributeData* attributeData = newData<rotate__AttributeData>(attributeDataPtr);
 
72550
 
 
72551
const ParserChar** attributeArray = attributes.attributes;
 
72552
if ( attributeArray )
 
72553
{
 
72554
    while (true)
 
72555
    {
 
72556
        const ParserChar * attribute = *attributeArray;
 
72557
        if ( !attribute )
 
72558
            break;
 
72559
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
72560
        attributeArray++;
 
72561
        if ( !attributeArray )
 
72562
            return false;
 
72563
        const ParserChar* attributeValue = *attributeArray;
 
72564
        attributeArray++;
 
72565
 
 
72566
 
 
72567
    switch ( hash )
 
72568
    {
 
72569
    case HASH_ATTRIBUTE_SID:
 
72570
    {
 
72571
 
 
72572
attributeData->sid = attributeValue;
 
72573
#ifdef GENERATEDSAXPARSER_VALIDATION
 
72574
    if ( mValidate )
 
72575
    {
 
72576
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
72577
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
72578
    {
 
72579
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
72580
            simpleTypeValidationResult,
 
72581
            HASH_ELEMENT_ROTATE,
 
72582
            HASH_ATTRIBUTE_SID,
 
72583
            attributeValue) )
 
72584
        {
 
72585
            return false;
 
72586
        }
 
72587
    }
 
72588
    } // validation
 
72589
#endif
 
72590
 
 
72591
    break;
 
72592
    }
 
72593
    default:
 
72594
    {
 
72595
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_ROTATE, attribute, attributeValue))
 
72596
            {return false;}
 
72597
    }
 
72598
    }
 
72599
    }
 
72600
}
 
72601
 
 
72602
 
 
72603
    return true;
 
72604
}
 
72605
 
 
72606
//---------------------------------------------------------------------
 
72607
bool ColladaParserAutoGen15Private::_preEnd__rotate()
 
72608
{
 
72609
#ifdef GENERATEDSAXPARSER_VALIDATION
 
72610
    if ( mValidate )
 
72611
    {
 
72612
 
 
72613
        bool validationResult = _validateEnd__rotate();
 
72614
        if ( !validationResult ) return false;
 
72615
 
 
72616
    } // validation
 
72617
#endif
 
72618
 
 
72619
#ifdef GENERATEDSAXPARSER_VALIDATION
 
72620
    if ( mValidate )
 
72621
    {
 
72622
        rotate__ValidationData* validationData = (rotate__ValidationData*)mValidationDataStack.top();
 
72623
        DISABLE_WARNING_UNUSED(validationData)
 
72624
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__rotate, &validate__rotate__streamEnd, &validationData->validationWholeSize, 0 );
 
72625
        ParserError::ErrorType simpleTypeValidationResult = validate__rotate(0, (*(&validationData->validationWholeSize)));
 
72626
        mValidationDataStack.deleteObject();
 
72627
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
72628
        {
 
72629
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
72630
                simpleTypeValidationResult,
 
72631
                HASH_ELEMENT_ROTATE,
 
72632
                (ParserChar*)0, 0 ) )
 
72633
            {
 
72634
                return false;
 
72635
            }
 
72636
        }
 
72637
        return returnValue;
 
72638
    }
 
72639
    else
 
72640
    {
 
72641
return floatDataEnd( &ColladaParserAutoGen15::data__rotate );
 
72642
    }
 
72643
#else
 
72644
    {
 
72645
return floatDataEnd( &ColladaParserAutoGen15::data__rotate );
 
72646
    } // validation
 
72647
#endif
 
72648
 
 
72649
}
 
72650
 
 
72651
//---------------------------------------------------------------------
 
72652
bool ColladaParserAutoGen15Private::_freeAttributes__rotate( void* attributeData )
 
72653
{
 
72654
    rotate__AttributeData* typedAttributeData = static_cast<rotate__AttributeData*>(attributeData);
 
72655
 
 
72656
    typedAttributeData->~rotate__AttributeData();
 
72657
 
 
72658
    return true;
 
72659
}
 
72660
 
 
72661
//---------------------------------------------------------------------
 
72662
const scale__AttributeData scale__AttributeData::DEFAULT = {0};
 
72663
 
 
72664
//---------------------------------------------------------------------
 
72665
bool ColladaParserAutoGen15Private::_data__scale( const ParserChar* text, size_t textLength )
 
72666
{
 
72667
#ifdef GENERATEDSAXPARSER_VALIDATION
 
72668
    if ( mValidate )
 
72669
    {
 
72670
        scale__ValidationData* validationData = (scale__ValidationData*)mValidationDataStack.top();
 
72671
        DISABLE_WARNING_UNUSED(validationData)
 
72672
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__scale, &validate__scale__stream, &validationData->validationWholeSize, 0);
 
72673
    }
 
72674
    else
 
72675
    {
 
72676
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__scale);
 
72677
    }
 
72678
#else
 
72679
    {
 
72680
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__scale);
 
72681
    } // validation
 
72682
#endif
 
72683
 
 
72684
}
 
72685
 
 
72686
//---------------------------------------------------------------------
 
72687
bool ColladaParserAutoGen15Private::_preBegin__scale( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
72688
{
 
72689
#ifdef GENERATEDSAXPARSER_VALIDATION
 
72690
    if ( mValidate )
 
72691
    {
 
72692
 
 
72693
        bool validationResult = _validateBegin__scale( attributes, attributeDataPtr, validationDataPtr );
 
72694
        if ( !validationResult ) return false;
 
72695
 
 
72696
    } // validation
 
72697
#endif
 
72698
 
 
72699
scale__AttributeData* attributeData = newData<scale__AttributeData>(attributeDataPtr);
 
72700
 
 
72701
const ParserChar** attributeArray = attributes.attributes;
 
72702
if ( attributeArray )
 
72703
{
 
72704
    while (true)
 
72705
    {
 
72706
        const ParserChar * attribute = *attributeArray;
 
72707
        if ( !attribute )
 
72708
            break;
 
72709
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
72710
        attributeArray++;
 
72711
        if ( !attributeArray )
 
72712
            return false;
 
72713
        const ParserChar* attributeValue = *attributeArray;
 
72714
        attributeArray++;
 
72715
 
 
72716
 
 
72717
    switch ( hash )
 
72718
    {
 
72719
    case HASH_ATTRIBUTE_SID:
 
72720
    {
 
72721
 
 
72722
attributeData->sid = attributeValue;
 
72723
#ifdef GENERATEDSAXPARSER_VALIDATION
 
72724
    if ( mValidate )
 
72725
    {
 
72726
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
72727
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
72728
    {
 
72729
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
72730
            simpleTypeValidationResult,
 
72731
            HASH_ELEMENT_SCALE,
 
72732
            HASH_ATTRIBUTE_SID,
 
72733
            attributeValue) )
 
72734
        {
 
72735
            return false;
 
72736
        }
 
72737
    }
 
72738
    } // validation
 
72739
#endif
 
72740
 
 
72741
    break;
 
72742
    }
 
72743
    default:
 
72744
    {
 
72745
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SCALE, attribute, attributeValue))
 
72746
            {return false;}
 
72747
    }
 
72748
    }
 
72749
    }
 
72750
}
 
72751
 
 
72752
 
 
72753
    return true;
 
72754
}
 
72755
 
 
72756
//---------------------------------------------------------------------
 
72757
bool ColladaParserAutoGen15Private::_preEnd__scale()
 
72758
{
 
72759
#ifdef GENERATEDSAXPARSER_VALIDATION
 
72760
    if ( mValidate )
 
72761
    {
 
72762
 
 
72763
        bool validationResult = _validateEnd__scale();
 
72764
        if ( !validationResult ) return false;
 
72765
 
 
72766
    } // validation
 
72767
#endif
 
72768
 
 
72769
#ifdef GENERATEDSAXPARSER_VALIDATION
 
72770
    if ( mValidate )
 
72771
    {
 
72772
        scale__ValidationData* validationData = (scale__ValidationData*)mValidationDataStack.top();
 
72773
        DISABLE_WARNING_UNUSED(validationData)
 
72774
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__scale, &validate__scale__streamEnd, &validationData->validationWholeSize, 0 );
 
72775
        ParserError::ErrorType simpleTypeValidationResult = validate__scale(0, (*(&validationData->validationWholeSize)));
 
72776
        mValidationDataStack.deleteObject();
 
72777
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
72778
        {
 
72779
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
72780
                simpleTypeValidationResult,
 
72781
                HASH_ELEMENT_SCALE,
 
72782
                (ParserChar*)0, 0 ) )
 
72783
            {
 
72784
                return false;
 
72785
            }
 
72786
        }
 
72787
        return returnValue;
 
72788
    }
 
72789
    else
 
72790
    {
 
72791
return floatDataEnd( &ColladaParserAutoGen15::data__scale );
 
72792
    }
 
72793
#else
 
72794
    {
 
72795
return floatDataEnd( &ColladaParserAutoGen15::data__scale );
 
72796
    } // validation
 
72797
#endif
 
72798
 
 
72799
}
 
72800
 
 
72801
//---------------------------------------------------------------------
 
72802
bool ColladaParserAutoGen15Private::_freeAttributes__scale( void* attributeData )
 
72803
{
 
72804
    scale__AttributeData* typedAttributeData = static_cast<scale__AttributeData*>(attributeData);
 
72805
 
 
72806
    typedAttributeData->~scale__AttributeData();
 
72807
 
 
72808
    return true;
 
72809
}
 
72810
 
 
72811
//---------------------------------------------------------------------
 
72812
const skew__AttributeData skew__AttributeData::DEFAULT = {0};
 
72813
 
 
72814
//---------------------------------------------------------------------
 
72815
bool ColladaParserAutoGen15Private::_data__skew( const ParserChar* text, size_t textLength )
 
72816
{
 
72817
#ifdef GENERATEDSAXPARSER_VALIDATION
 
72818
    if ( mValidate )
 
72819
    {
 
72820
        skew__ValidationData* validationData = (skew__ValidationData*)mValidationDataStack.top();
 
72821
        DISABLE_WARNING_UNUSED(validationData)
 
72822
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__skew, &validate__float7_type__stream, &validationData->validationWholeSize, 0);
 
72823
    }
 
72824
    else
 
72825
    {
 
72826
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__skew);
 
72827
    }
 
72828
#else
 
72829
    {
 
72830
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__skew);
 
72831
    } // validation
 
72832
#endif
 
72833
 
 
72834
}
 
72835
 
 
72836
//---------------------------------------------------------------------
 
72837
bool ColladaParserAutoGen15Private::_preBegin__skew( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
72838
{
 
72839
#ifdef GENERATEDSAXPARSER_VALIDATION
 
72840
    if ( mValidate )
 
72841
    {
 
72842
 
 
72843
        bool validationResult = _validateBegin__skew( attributes, attributeDataPtr, validationDataPtr );
 
72844
        if ( !validationResult ) return false;
 
72845
 
 
72846
    } // validation
 
72847
#endif
 
72848
 
 
72849
skew__AttributeData* attributeData = newData<skew__AttributeData>(attributeDataPtr);
 
72850
 
 
72851
const ParserChar** attributeArray = attributes.attributes;
 
72852
if ( attributeArray )
 
72853
{
 
72854
    while (true)
 
72855
    {
 
72856
        const ParserChar * attribute = *attributeArray;
 
72857
        if ( !attribute )
 
72858
            break;
 
72859
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
72860
        attributeArray++;
 
72861
        if ( !attributeArray )
 
72862
            return false;
 
72863
        const ParserChar* attributeValue = *attributeArray;
 
72864
        attributeArray++;
 
72865
 
 
72866
 
 
72867
    switch ( hash )
 
72868
    {
 
72869
    case HASH_ATTRIBUTE_SID:
 
72870
    {
 
72871
 
 
72872
attributeData->sid = attributeValue;
 
72873
#ifdef GENERATEDSAXPARSER_VALIDATION
 
72874
    if ( mValidate )
 
72875
    {
 
72876
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
72877
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
72878
    {
 
72879
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
72880
            simpleTypeValidationResult,
 
72881
            HASH_ELEMENT_SKEW,
 
72882
            HASH_ATTRIBUTE_SID,
 
72883
            attributeValue) )
 
72884
        {
 
72885
            return false;
 
72886
        }
 
72887
    }
 
72888
    } // validation
 
72889
#endif
 
72890
 
 
72891
    break;
 
72892
    }
 
72893
    default:
 
72894
    {
 
72895
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SKEW, attribute, attributeValue))
 
72896
            {return false;}
 
72897
    }
 
72898
    }
 
72899
    }
 
72900
}
 
72901
 
 
72902
 
 
72903
    return true;
 
72904
}
 
72905
 
 
72906
//---------------------------------------------------------------------
 
72907
bool ColladaParserAutoGen15Private::_preEnd__skew()
 
72908
{
 
72909
#ifdef GENERATEDSAXPARSER_VALIDATION
 
72910
    if ( mValidate )
 
72911
    {
 
72912
 
 
72913
        bool validationResult = _validateEnd__skew();
 
72914
        if ( !validationResult ) return false;
 
72915
 
 
72916
    } // validation
 
72917
#endif
 
72918
 
 
72919
#ifdef GENERATEDSAXPARSER_VALIDATION
 
72920
    if ( mValidate )
 
72921
    {
 
72922
        skew__ValidationData* validationData = (skew__ValidationData*)mValidationDataStack.top();
 
72923
        DISABLE_WARNING_UNUSED(validationData)
 
72924
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__skew, &validate__float7_type__streamEnd, &validationData->validationWholeSize, 0 );
 
72925
        ParserError::ErrorType simpleTypeValidationResult = validate__float7_type(0, (*(&validationData->validationWholeSize)));
 
72926
        mValidationDataStack.deleteObject();
 
72927
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
72928
        {
 
72929
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
72930
                simpleTypeValidationResult,
 
72931
                HASH_ELEMENT_SKEW,
 
72932
                (ParserChar*)0, 0 ) )
 
72933
            {
 
72934
                return false;
 
72935
            }
 
72936
        }
 
72937
        return returnValue;
 
72938
    }
 
72939
    else
 
72940
    {
 
72941
return floatDataEnd( &ColladaParserAutoGen15::data__skew );
 
72942
    }
 
72943
#else
 
72944
    {
 
72945
return floatDataEnd( &ColladaParserAutoGen15::data__skew );
 
72946
    } // validation
 
72947
#endif
 
72948
 
 
72949
}
 
72950
 
 
72951
//---------------------------------------------------------------------
 
72952
bool ColladaParserAutoGen15Private::_freeAttributes__skew( void* attributeData )
 
72953
{
 
72954
    skew__AttributeData* typedAttributeData = static_cast<skew__AttributeData*>(attributeData);
 
72955
 
 
72956
    typedAttributeData->~skew__AttributeData();
 
72957
 
 
72958
    return true;
 
72959
}
 
72960
 
 
72961
//---------------------------------------------------------------------
 
72962
const translate__AttributeData translate__AttributeData::DEFAULT = {0};
 
72963
 
 
72964
//---------------------------------------------------------------------
 
72965
bool ColladaParserAutoGen15Private::_data__translate( const ParserChar* text, size_t textLength )
 
72966
{
 
72967
#ifdef GENERATEDSAXPARSER_VALIDATION
 
72968
    if ( mValidate )
 
72969
    {
 
72970
        translate__ValidationData* validationData = (translate__ValidationData*)mValidationDataStack.top();
 
72971
        DISABLE_WARNING_UNUSED(validationData)
 
72972
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__translate, &validate__translate__stream, &validationData->validationWholeSize, 0);
 
72973
    }
 
72974
    else
 
72975
    {
 
72976
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__translate);
 
72977
    }
 
72978
#else
 
72979
    {
 
72980
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__translate);
 
72981
    } // validation
 
72982
#endif
 
72983
 
 
72984
}
 
72985
 
 
72986
//---------------------------------------------------------------------
 
72987
bool ColladaParserAutoGen15Private::_preBegin__translate( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
72988
{
 
72989
#ifdef GENERATEDSAXPARSER_VALIDATION
 
72990
    if ( mValidate )
 
72991
    {
 
72992
 
 
72993
        bool validationResult = _validateBegin__translate( attributes, attributeDataPtr, validationDataPtr );
 
72994
        if ( !validationResult ) return false;
 
72995
 
 
72996
    } // validation
 
72997
#endif
 
72998
 
 
72999
translate__AttributeData* attributeData = newData<translate__AttributeData>(attributeDataPtr);
 
73000
 
 
73001
const ParserChar** attributeArray = attributes.attributes;
 
73002
if ( attributeArray )
 
73003
{
 
73004
    while (true)
 
73005
    {
 
73006
        const ParserChar * attribute = *attributeArray;
 
73007
        if ( !attribute )
 
73008
            break;
 
73009
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
73010
        attributeArray++;
 
73011
        if ( !attributeArray )
 
73012
            return false;
 
73013
        const ParserChar* attributeValue = *attributeArray;
 
73014
        attributeArray++;
 
73015
 
 
73016
 
 
73017
    switch ( hash )
 
73018
    {
 
73019
    case HASH_ATTRIBUTE_SID:
 
73020
    {
 
73021
 
 
73022
attributeData->sid = attributeValue;
 
73023
#ifdef GENERATEDSAXPARSER_VALIDATION
 
73024
    if ( mValidate )
 
73025
    {
 
73026
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
73027
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
73028
    {
 
73029
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
73030
            simpleTypeValidationResult,
 
73031
            HASH_ELEMENT_TRANSLATE,
 
73032
            HASH_ATTRIBUTE_SID,
 
73033
            attributeValue) )
 
73034
        {
 
73035
            return false;
 
73036
        }
 
73037
    }
 
73038
    } // validation
 
73039
#endif
 
73040
 
 
73041
    break;
 
73042
    }
 
73043
    default:
 
73044
    {
 
73045
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_TRANSLATE, attribute, attributeValue))
 
73046
            {return false;}
 
73047
    }
 
73048
    }
 
73049
    }
 
73050
}
 
73051
 
 
73052
 
 
73053
    return true;
 
73054
}
 
73055
 
 
73056
//---------------------------------------------------------------------
 
73057
bool ColladaParserAutoGen15Private::_preEnd__translate()
 
73058
{
 
73059
#ifdef GENERATEDSAXPARSER_VALIDATION
 
73060
    if ( mValidate )
 
73061
    {
 
73062
 
 
73063
        bool validationResult = _validateEnd__translate();
 
73064
        if ( !validationResult ) return false;
 
73065
 
 
73066
    } // validation
 
73067
#endif
 
73068
 
 
73069
#ifdef GENERATEDSAXPARSER_VALIDATION
 
73070
    if ( mValidate )
 
73071
    {
 
73072
        translate__ValidationData* validationData = (translate__ValidationData*)mValidationDataStack.top();
 
73073
        DISABLE_WARNING_UNUSED(validationData)
 
73074
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__translate, &validate__translate__streamEnd, &validationData->validationWholeSize, 0 );
 
73075
        ParserError::ErrorType simpleTypeValidationResult = validate__translate(0, (*(&validationData->validationWholeSize)));
 
73076
        mValidationDataStack.deleteObject();
 
73077
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
73078
        {
 
73079
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
73080
                simpleTypeValidationResult,
 
73081
                HASH_ELEMENT_TRANSLATE,
 
73082
                (ParserChar*)0, 0 ) )
 
73083
            {
 
73084
                return false;
 
73085
            }
 
73086
        }
 
73087
        return returnValue;
 
73088
    }
 
73089
    else
 
73090
    {
 
73091
return floatDataEnd( &ColladaParserAutoGen15::data__translate );
 
73092
    }
 
73093
#else
 
73094
    {
 
73095
return floatDataEnd( &ColladaParserAutoGen15::data__translate );
 
73096
    } // validation
 
73097
#endif
 
73098
 
 
73099
}
 
73100
 
 
73101
//---------------------------------------------------------------------
 
73102
bool ColladaParserAutoGen15Private::_freeAttributes__translate( void* attributeData )
 
73103
{
 
73104
    translate__AttributeData* typedAttributeData = static_cast<translate__AttributeData*>(attributeData);
 
73105
 
 
73106
    typedAttributeData->~translate__AttributeData();
 
73107
 
 
73108
    return true;
 
73109
}
 
73110
 
 
73111
//---------------------------------------------------------------------
 
73112
const instance_camera__AttributeData instance_camera__AttributeData::DEFAULT = {0, 0, 0, 0};
 
73113
 
 
73114
//---------------------------------------------------------------------
 
73115
bool ColladaParserAutoGen15Private::_data__instance_camera( const ParserChar* text, size_t textLength )
 
73116
{
 
73117
    return true;
 
73118
}
 
73119
 
 
73120
//---------------------------------------------------------------------
 
73121
bool ColladaParserAutoGen15Private::_preBegin__instance_camera( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
73122
{
 
73123
#ifdef GENERATEDSAXPARSER_VALIDATION
 
73124
    if ( mValidate )
 
73125
    {
 
73126
 
 
73127
        bool validationResult = _validateBegin__instance_camera( attributes, attributeDataPtr, validationDataPtr );
 
73128
        if ( !validationResult ) return false;
 
73129
 
 
73130
    } // validation
 
73131
#endif
 
73132
 
 
73133
instance_camera__AttributeData* attributeData = newData<instance_camera__AttributeData>(attributeDataPtr);
 
73134
 
 
73135
const ParserChar** attributeArray = attributes.attributes;
 
73136
if ( attributeArray )
 
73137
{
 
73138
    while (true)
 
73139
    {
 
73140
        const ParserChar * attribute = *attributeArray;
 
73141
        if ( !attribute )
 
73142
            break;
 
73143
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
73144
        attributeArray++;
 
73145
        if ( !attributeArray )
 
73146
            return false;
 
73147
        const ParserChar* attributeValue = *attributeArray;
 
73148
        attributeArray++;
 
73149
 
 
73150
 
 
73151
    switch ( hash )
 
73152
    {
 
73153
    case HASH_ATTRIBUTE_URL:
 
73154
    {
 
73155
bool failed;
 
73156
attributeData->url = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
73157
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
73158
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
73159
        HASH_ELEMENT_INSTANCE_CAMERA,
 
73160
        HASH_ATTRIBUTE_URL,
 
73161
        attributeValue))
 
73162
{
 
73163
    return false;
 
73164
}
 
73165
if ( !failed )
 
73166
    attributeData->present_attributes |= instance_camera__AttributeData::ATTRIBUTE_URL_PRESENT;
 
73167
 
 
73168
    break;
 
73169
    }
 
73170
    case HASH_ATTRIBUTE_SID:
 
73171
    {
 
73172
 
 
73173
attributeData->sid = attributeValue;
 
73174
#ifdef GENERATEDSAXPARSER_VALIDATION
 
73175
    if ( mValidate )
 
73176
    {
 
73177
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
73178
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
73179
    {
 
73180
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
73181
            simpleTypeValidationResult,
 
73182
            HASH_ELEMENT_INSTANCE_CAMERA,
 
73183
            HASH_ATTRIBUTE_SID,
 
73184
            attributeValue) )
 
73185
        {
 
73186
            return false;
 
73187
        }
 
73188
    }
 
73189
    } // validation
 
73190
#endif
 
73191
 
 
73192
    break;
 
73193
    }
 
73194
    case HASH_ATTRIBUTE_NAME:
 
73195
    {
 
73196
 
 
73197
attributeData->name = attributeValue;
 
73198
 
 
73199
    break;
 
73200
    }
 
73201
    default:
 
73202
    {
 
73203
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_INSTANCE_CAMERA, attribute, attributeValue))
 
73204
            {return false;}
 
73205
    }
 
73206
    }
 
73207
    }
 
73208
}
 
73209
if ((attributeData->present_attributes & instance_camera__AttributeData::ATTRIBUTE_URL_PRESENT) == 0)
 
73210
{
 
73211
    attributeData->url = COLLADABU::URI("");
 
73212
}
 
73213
if ( (attributeData->present_attributes & instance_camera__AttributeData::ATTRIBUTE_URL_PRESENT) == 0 )
 
73214
{
 
73215
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_INSTANCE_CAMERA, HASH_ATTRIBUTE_URL, 0 ) )
 
73216
        return false;
 
73217
}
 
73218
 
 
73219
 
 
73220
    return true;
 
73221
}
 
73222
 
 
73223
//---------------------------------------------------------------------
 
73224
bool ColladaParserAutoGen15Private::_preEnd__instance_camera()
 
73225
{
 
73226
#ifdef GENERATEDSAXPARSER_VALIDATION
 
73227
    if ( mValidate )
 
73228
    {
 
73229
 
 
73230
        bool validationResult = _validateEnd__instance_camera();
 
73231
        if ( !validationResult ) return false;
 
73232
 
 
73233
    } // validation
 
73234
#endif
 
73235
 
 
73236
    return true;
 
73237
}
 
73238
 
 
73239
//---------------------------------------------------------------------
 
73240
bool ColladaParserAutoGen15Private::_freeAttributes__instance_camera( void* attributeData )
 
73241
{
 
73242
    instance_camera__AttributeData* typedAttributeData = static_cast<instance_camera__AttributeData*>(attributeData);
 
73243
 
 
73244
    typedAttributeData->~instance_camera__AttributeData();
 
73245
 
 
73246
    return true;
 
73247
}
 
73248
 
 
73249
//---------------------------------------------------------------------
 
73250
const instance_controller__AttributeData instance_controller__AttributeData::DEFAULT = {0, 0, 0, 0};
 
73251
 
 
73252
//---------------------------------------------------------------------
 
73253
bool ColladaParserAutoGen15Private::_data__instance_controller( const ParserChar* text, size_t textLength )
 
73254
{
 
73255
    return true;
 
73256
}
 
73257
 
 
73258
//---------------------------------------------------------------------
 
73259
bool ColladaParserAutoGen15Private::_preBegin__instance_controller( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
73260
{
 
73261
#ifdef GENERATEDSAXPARSER_VALIDATION
 
73262
    if ( mValidate )
 
73263
    {
 
73264
 
 
73265
        bool validationResult = _validateBegin__instance_controller( attributes, attributeDataPtr, validationDataPtr );
 
73266
        if ( !validationResult ) return false;
 
73267
 
 
73268
    } // validation
 
73269
#endif
 
73270
 
 
73271
instance_controller__AttributeData* attributeData = newData<instance_controller__AttributeData>(attributeDataPtr);
 
73272
 
 
73273
const ParserChar** attributeArray = attributes.attributes;
 
73274
if ( attributeArray )
 
73275
{
 
73276
    while (true)
 
73277
    {
 
73278
        const ParserChar * attribute = *attributeArray;
 
73279
        if ( !attribute )
 
73280
            break;
 
73281
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
73282
        attributeArray++;
 
73283
        if ( !attributeArray )
 
73284
            return false;
 
73285
        const ParserChar* attributeValue = *attributeArray;
 
73286
        attributeArray++;
 
73287
 
 
73288
 
 
73289
    switch ( hash )
 
73290
    {
 
73291
    case HASH_ATTRIBUTE_URL:
 
73292
    {
 
73293
bool failed;
 
73294
attributeData->url = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
73295
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
73296
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
73297
        HASH_ELEMENT_INSTANCE_CONTROLLER,
 
73298
        HASH_ATTRIBUTE_URL,
 
73299
        attributeValue))
 
73300
{
 
73301
    return false;
 
73302
}
 
73303
if ( !failed )
 
73304
    attributeData->present_attributes |= instance_controller__AttributeData::ATTRIBUTE_URL_PRESENT;
 
73305
 
 
73306
    break;
 
73307
    }
 
73308
    case HASH_ATTRIBUTE_SID:
 
73309
    {
 
73310
 
 
73311
attributeData->sid = attributeValue;
 
73312
#ifdef GENERATEDSAXPARSER_VALIDATION
 
73313
    if ( mValidate )
 
73314
    {
 
73315
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
73316
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
73317
    {
 
73318
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
73319
            simpleTypeValidationResult,
 
73320
            HASH_ELEMENT_INSTANCE_CONTROLLER,
 
73321
            HASH_ATTRIBUTE_SID,
 
73322
            attributeValue) )
 
73323
        {
 
73324
            return false;
 
73325
        }
 
73326
    }
 
73327
    } // validation
 
73328
#endif
 
73329
 
 
73330
    break;
 
73331
    }
 
73332
    case HASH_ATTRIBUTE_NAME:
 
73333
    {
 
73334
 
 
73335
attributeData->name = attributeValue;
 
73336
 
 
73337
    break;
 
73338
    }
 
73339
    default:
 
73340
    {
 
73341
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_INSTANCE_CONTROLLER, attribute, attributeValue))
 
73342
            {return false;}
 
73343
    }
 
73344
    }
 
73345
    }
 
73346
}
 
73347
if ((attributeData->present_attributes & instance_controller__AttributeData::ATTRIBUTE_URL_PRESENT) == 0)
 
73348
{
 
73349
    attributeData->url = COLLADABU::URI("");
 
73350
}
 
73351
if ( (attributeData->present_attributes & instance_controller__AttributeData::ATTRIBUTE_URL_PRESENT) == 0 )
 
73352
{
 
73353
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_INSTANCE_CONTROLLER, HASH_ATTRIBUTE_URL, 0 ) )
 
73354
        return false;
 
73355
}
 
73356
 
 
73357
 
 
73358
    return true;
 
73359
}
 
73360
 
 
73361
//---------------------------------------------------------------------
 
73362
bool ColladaParserAutoGen15Private::_preEnd__instance_controller()
 
73363
{
 
73364
#ifdef GENERATEDSAXPARSER_VALIDATION
 
73365
    if ( mValidate )
 
73366
    {
 
73367
 
 
73368
        bool validationResult = _validateEnd__instance_controller();
 
73369
        if ( !validationResult ) return false;
 
73370
 
 
73371
    } // validation
 
73372
#endif
 
73373
 
 
73374
    return true;
 
73375
}
 
73376
 
 
73377
//---------------------------------------------------------------------
 
73378
bool ColladaParserAutoGen15Private::_freeAttributes__instance_controller( void* attributeData )
 
73379
{
 
73380
    instance_controller__AttributeData* typedAttributeData = static_cast<instance_controller__AttributeData*>(attributeData);
 
73381
 
 
73382
    typedAttributeData->~instance_controller__AttributeData();
 
73383
 
 
73384
    return true;
 
73385
}
 
73386
 
 
73387
//---------------------------------------------------------------------
 
73388
bool ColladaParserAutoGen15Private::_data__skeleton( const ParserChar* text, size_t textLength )
 
73389
{
 
73390
if (!mLastIncompleteFragmentInCharacterData)
 
73391
{
 
73392
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
73393
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
73394
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
73395
}
 
73396
else
 
73397
{
 
73398
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
73399
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
73400
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
73401
        mLastIncompleteFragmentInCharacterData = tmp;
 
73402
    }
 
73403
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
73404
    mEndOfDataInCurrentObjectOnStack += textLength;
 
73405
}
 
73406
return true;
 
73407
}
 
73408
 
 
73409
//---------------------------------------------------------------------
 
73410
bool ColladaParserAutoGen15Private::_preBegin__skeleton( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
73411
{
 
73412
#ifdef GENERATEDSAXPARSER_VALIDATION
 
73413
    if ( mValidate )
 
73414
    {
 
73415
 
 
73416
        bool validationResult = _validateBegin__skeleton( attributes, attributeDataPtr, validationDataPtr );
 
73417
        if ( !validationResult ) return false;
 
73418
 
 
73419
    } // validation
 
73420
#endif
 
73421
 
 
73422
    return true;
 
73423
}
 
73424
 
 
73425
//---------------------------------------------------------------------
 
73426
bool ColladaParserAutoGen15Private::_preEnd__skeleton()
 
73427
{
 
73428
#ifdef GENERATEDSAXPARSER_VALIDATION
 
73429
    if ( mValidate )
 
73430
    {
 
73431
 
 
73432
        bool validationResult = _validateEnd__skeleton();
 
73433
        if ( !validationResult ) return false;
 
73434
 
 
73435
    } // validation
 
73436
#endif
 
73437
 
 
73438
bool failed;
 
73439
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
73440
DISABLE_WARNING_UNUSED(ptrForErr)
 
73441
COLLADABU::URI parameter = GeneratedSaxParser::Utils::toURI((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
73442
bool returnValue;
 
73443
if (!failed)
 
73444
{
 
73445
    returnValue = mImpl->data__skeleton(parameter);
 
73446
}
 
73447
else
 
73448
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_SKELETON, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
73449
if (mLastIncompleteFragmentInCharacterData)
 
73450
    mStackMemoryManager.deleteObject();
 
73451
mLastIncompleteFragmentInCharacterData = 0;
 
73452
mEndOfDataInCurrentObjectOnStack = 0;
 
73453
return returnValue;
 
73454
}
 
73455
 
 
73456
//---------------------------------------------------------------------
 
73457
bool ColladaParserAutoGen15Private::_freeAttributes__skeleton( void* attributeData )
 
73458
{
 
73459
    return true;
 
73460
}
 
73461
 
 
73462
//---------------------------------------------------------------------
 
73463
bool ColladaParserAutoGen15Private::_data__bind_material( const ParserChar* text, size_t textLength )
 
73464
{
 
73465
    return true;
 
73466
}
 
73467
 
 
73468
//---------------------------------------------------------------------
 
73469
bool ColladaParserAutoGen15Private::_preBegin__bind_material( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
73470
{
 
73471
#ifdef GENERATEDSAXPARSER_VALIDATION
 
73472
    if ( mValidate )
 
73473
    {
 
73474
 
 
73475
        bool validationResult = _validateBegin__bind_material( attributes, attributeDataPtr, validationDataPtr );
 
73476
        if ( !validationResult ) return false;
 
73477
 
 
73478
    } // validation
 
73479
#endif
 
73480
 
 
73481
    return true;
 
73482
}
 
73483
 
 
73484
//---------------------------------------------------------------------
 
73485
bool ColladaParserAutoGen15Private::_preEnd__bind_material()
 
73486
{
 
73487
#ifdef GENERATEDSAXPARSER_VALIDATION
 
73488
    if ( mValidate )
 
73489
    {
 
73490
 
 
73491
        bool validationResult = _validateEnd__bind_material();
 
73492
        if ( !validationResult ) return false;
 
73493
 
 
73494
    } // validation
 
73495
#endif
 
73496
 
 
73497
    return true;
 
73498
}
 
73499
 
 
73500
//---------------------------------------------------------------------
 
73501
bool ColladaParserAutoGen15Private::_freeAttributes__bind_material( void* attributeData )
 
73502
{
 
73503
    return true;
 
73504
}
 
73505
 
 
73506
//---------------------------------------------------------------------
 
73507
bool ColladaParserAutoGen15Private::_data__bind_material_type____technique_common( const ParserChar* text, size_t textLength )
 
73508
{
 
73509
    return true;
 
73510
}
 
73511
 
 
73512
//---------------------------------------------------------------------
 
73513
bool ColladaParserAutoGen15Private::_preBegin__bind_material_type____technique_common( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
73514
{
 
73515
#ifdef GENERATEDSAXPARSER_VALIDATION
 
73516
    if ( mValidate )
 
73517
    {
 
73518
 
 
73519
        bool validationResult = _validateBegin__bind_material_type____technique_common( attributes, attributeDataPtr, validationDataPtr );
 
73520
        if ( !validationResult ) return false;
 
73521
 
 
73522
    } // validation
 
73523
#endif
 
73524
 
 
73525
    return true;
 
73526
}
 
73527
 
 
73528
//---------------------------------------------------------------------
 
73529
bool ColladaParserAutoGen15Private::_preEnd__bind_material_type____technique_common()
 
73530
{
 
73531
#ifdef GENERATEDSAXPARSER_VALIDATION
 
73532
    if ( mValidate )
 
73533
    {
 
73534
 
 
73535
        bool validationResult = _validateEnd__bind_material_type____technique_common();
 
73536
        if ( !validationResult ) return false;
 
73537
 
 
73538
    } // validation
 
73539
#endif
 
73540
 
 
73541
    return true;
 
73542
}
 
73543
 
 
73544
//---------------------------------------------------------------------
 
73545
bool ColladaParserAutoGen15Private::_freeAttributes__bind_material_type____technique_common( void* attributeData )
 
73546
{
 
73547
    return true;
 
73548
}
 
73549
 
 
73550
//---------------------------------------------------------------------
 
73551
const instance_material____instance_material_type__AttributeData instance_material____instance_material_type__AttributeData::DEFAULT = {0, 0, 0, 0, 0};
 
73552
 
 
73553
//---------------------------------------------------------------------
 
73554
bool ColladaParserAutoGen15Private::_data__instance_material____instance_material_type( const ParserChar* text, size_t textLength )
 
73555
{
 
73556
    return true;
 
73557
}
 
73558
 
 
73559
//---------------------------------------------------------------------
 
73560
bool ColladaParserAutoGen15Private::_preBegin__instance_material____instance_material_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
73561
{
 
73562
#ifdef GENERATEDSAXPARSER_VALIDATION
 
73563
    if ( mValidate )
 
73564
    {
 
73565
 
 
73566
        bool validationResult = _validateBegin__instance_material____instance_material_type( attributes, attributeDataPtr, validationDataPtr );
 
73567
        if ( !validationResult ) return false;
 
73568
 
 
73569
    } // validation
 
73570
#endif
 
73571
 
 
73572
instance_material____instance_material_type__AttributeData* attributeData = newData<instance_material____instance_material_type__AttributeData>(attributeDataPtr);
 
73573
 
 
73574
const ParserChar** attributeArray = attributes.attributes;
 
73575
if ( attributeArray )
 
73576
{
 
73577
    while (true)
 
73578
    {
 
73579
        const ParserChar * attribute = *attributeArray;
 
73580
        if ( !attribute )
 
73581
            break;
 
73582
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
73583
        attributeArray++;
 
73584
        if ( !attributeArray )
 
73585
            return false;
 
73586
        const ParserChar* attributeValue = *attributeArray;
 
73587
        attributeArray++;
 
73588
 
 
73589
 
 
73590
    switch ( hash )
 
73591
    {
 
73592
    case HASH_ATTRIBUTE_SYMBOL:
 
73593
    {
 
73594
 
 
73595
attributeData->symbol = attributeValue;
 
73596
#ifdef GENERATEDSAXPARSER_VALIDATION
 
73597
    if ( mValidate )
 
73598
    {
 
73599
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->symbol, strlen(attributeData->symbol));
 
73600
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
73601
    {
 
73602
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
73603
            simpleTypeValidationResult,
 
73604
            HASH_ELEMENT_INSTANCE_MATERIAL,
 
73605
            HASH_ATTRIBUTE_SYMBOL,
 
73606
            attributeValue) )
 
73607
        {
 
73608
            return false;
 
73609
        }
 
73610
    }
 
73611
    } // validation
 
73612
#endif
 
73613
 
 
73614
    break;
 
73615
    }
 
73616
    case HASH_ATTRIBUTE_TARGET:
 
73617
    {
 
73618
bool failed;
 
73619
attributeData->target = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
73620
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
73621
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
73622
        HASH_ELEMENT_INSTANCE_MATERIAL,
 
73623
        HASH_ATTRIBUTE_TARGET,
 
73624
        attributeValue))
 
73625
{
 
73626
    return false;
 
73627
}
 
73628
if ( !failed )
 
73629
    attributeData->present_attributes |= instance_material____instance_material_type__AttributeData::ATTRIBUTE_TARGET_PRESENT;
 
73630
 
 
73631
    break;
 
73632
    }
 
73633
    case HASH_ATTRIBUTE_SID:
 
73634
    {
 
73635
 
 
73636
attributeData->sid = attributeValue;
 
73637
#ifdef GENERATEDSAXPARSER_VALIDATION
 
73638
    if ( mValidate )
 
73639
    {
 
73640
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
73641
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
73642
    {
 
73643
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
73644
            simpleTypeValidationResult,
 
73645
            HASH_ELEMENT_INSTANCE_MATERIAL,
 
73646
            HASH_ATTRIBUTE_SID,
 
73647
            attributeValue) )
 
73648
        {
 
73649
            return false;
 
73650
        }
 
73651
    }
 
73652
    } // validation
 
73653
#endif
 
73654
 
 
73655
    break;
 
73656
    }
 
73657
    case HASH_ATTRIBUTE_NAME:
 
73658
    {
 
73659
 
 
73660
attributeData->name = attributeValue;
 
73661
 
 
73662
    break;
 
73663
    }
 
73664
    default:
 
73665
    {
 
73666
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_INSTANCE_MATERIAL, attribute, attributeValue))
 
73667
            {return false;}
 
73668
    }
 
73669
    }
 
73670
    }
 
73671
}
 
73672
if ((attributeData->present_attributes & instance_material____instance_material_type__AttributeData::ATTRIBUTE_TARGET_PRESENT) == 0)
 
73673
{
 
73674
    attributeData->target = COLLADABU::URI("");
 
73675
}
 
73676
if ( !attributeData->symbol )
 
73677
{
 
73678
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_INSTANCE_MATERIAL, HASH_ATTRIBUTE_SYMBOL, 0 ) )
 
73679
        return false;
 
73680
}
 
73681
if ( (attributeData->present_attributes & instance_material____instance_material_type__AttributeData::ATTRIBUTE_TARGET_PRESENT) == 0 )
 
73682
{
 
73683
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_INSTANCE_MATERIAL, HASH_ATTRIBUTE_TARGET, 0 ) )
 
73684
        return false;
 
73685
}
 
73686
 
 
73687
 
 
73688
    return true;
 
73689
}
 
73690
 
 
73691
//---------------------------------------------------------------------
 
73692
bool ColladaParserAutoGen15Private::_preEnd__instance_material____instance_material_type()
 
73693
{
 
73694
#ifdef GENERATEDSAXPARSER_VALIDATION
 
73695
    if ( mValidate )
 
73696
    {
 
73697
 
 
73698
        bool validationResult = _validateEnd__instance_material____instance_material_type();
 
73699
        if ( !validationResult ) return false;
 
73700
 
 
73701
    } // validation
 
73702
#endif
 
73703
 
 
73704
    return true;
 
73705
}
 
73706
 
 
73707
//---------------------------------------------------------------------
 
73708
bool ColladaParserAutoGen15Private::_freeAttributes__instance_material____instance_material_type( void* attributeData )
 
73709
{
 
73710
    instance_material____instance_material_type__AttributeData* typedAttributeData = static_cast<instance_material____instance_material_type__AttributeData*>(attributeData);
 
73711
 
 
73712
    typedAttributeData->~instance_material____instance_material_type__AttributeData();
 
73713
 
 
73714
    return true;
 
73715
}
 
73716
 
 
73717
//---------------------------------------------------------------------
 
73718
const instance_material_type____bind__AttributeData instance_material_type____bind__AttributeData::DEFAULT = {0, 0};
 
73719
 
 
73720
//---------------------------------------------------------------------
 
73721
bool ColladaParserAutoGen15Private::_data__instance_material_type____bind( const ParserChar* text, size_t textLength )
 
73722
{
 
73723
    return true;
 
73724
}
 
73725
 
 
73726
//---------------------------------------------------------------------
 
73727
bool ColladaParserAutoGen15Private::_preBegin__instance_material_type____bind( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
73728
{
 
73729
#ifdef GENERATEDSAXPARSER_VALIDATION
 
73730
    if ( mValidate )
 
73731
    {
 
73732
 
 
73733
        bool validationResult = _validateBegin__instance_material_type____bind( attributes, attributeDataPtr, validationDataPtr );
 
73734
        if ( !validationResult ) return false;
 
73735
 
 
73736
    } // validation
 
73737
#endif
 
73738
 
 
73739
instance_material_type____bind__AttributeData* attributeData = newData<instance_material_type____bind__AttributeData>(attributeDataPtr);
 
73740
 
 
73741
const ParserChar** attributeArray = attributes.attributes;
 
73742
if ( attributeArray )
 
73743
{
 
73744
    while (true)
 
73745
    {
 
73746
        const ParserChar * attribute = *attributeArray;
 
73747
        if ( !attribute )
 
73748
            break;
 
73749
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
73750
        attributeArray++;
 
73751
        if ( !attributeArray )
 
73752
            return false;
 
73753
        const ParserChar* attributeValue = *attributeArray;
 
73754
        attributeArray++;
 
73755
 
 
73756
 
 
73757
    switch ( hash )
 
73758
    {
 
73759
    case HASH_ATTRIBUTE_SEMANTIC:
 
73760
    {
 
73761
 
 
73762
attributeData->semantic = attributeValue;
 
73763
#ifdef GENERATEDSAXPARSER_VALIDATION
 
73764
    if ( mValidate )
 
73765
    {
 
73766
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->semantic, strlen(attributeData->semantic));
 
73767
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
73768
    {
 
73769
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
73770
            simpleTypeValidationResult,
 
73771
            HASH_ELEMENT_BIND,
 
73772
            HASH_ATTRIBUTE_SEMANTIC,
 
73773
            attributeValue) )
 
73774
        {
 
73775
            return false;
 
73776
        }
 
73777
    }
 
73778
    } // validation
 
73779
#endif
 
73780
 
 
73781
    break;
 
73782
    }
 
73783
    case HASH_ATTRIBUTE_TARGET:
 
73784
    {
 
73785
 
 
73786
attributeData->target = attributeValue;
 
73787
 
 
73788
    break;
 
73789
    }
 
73790
    default:
 
73791
    {
 
73792
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_BIND, attribute, attributeValue))
 
73793
            {return false;}
 
73794
    }
 
73795
    }
 
73796
    }
 
73797
}
 
73798
if ( !attributeData->semantic )
 
73799
{
 
73800
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_BIND, HASH_ATTRIBUTE_SEMANTIC, 0 ) )
 
73801
        return false;
 
73802
}
 
73803
if ( !attributeData->target )
 
73804
{
 
73805
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_BIND, HASH_ATTRIBUTE_TARGET, 0 ) )
 
73806
        return false;
 
73807
}
 
73808
 
 
73809
 
 
73810
    return true;
 
73811
}
 
73812
 
 
73813
//---------------------------------------------------------------------
 
73814
bool ColladaParserAutoGen15Private::_preEnd__instance_material_type____bind()
 
73815
{
 
73816
#ifdef GENERATEDSAXPARSER_VALIDATION
 
73817
    if ( mValidate )
 
73818
    {
 
73819
 
 
73820
        bool validationResult = _validateEnd__instance_material_type____bind();
 
73821
        if ( !validationResult ) return false;
 
73822
 
 
73823
    } // validation
 
73824
#endif
 
73825
 
 
73826
    return true;
 
73827
}
 
73828
 
 
73829
//---------------------------------------------------------------------
 
73830
bool ColladaParserAutoGen15Private::_freeAttributes__instance_material_type____bind( void* attributeData )
 
73831
{
 
73832
    instance_material_type____bind__AttributeData* typedAttributeData = static_cast<instance_material_type____bind__AttributeData*>(attributeData);
 
73833
 
 
73834
    typedAttributeData->~instance_material_type____bind__AttributeData();
 
73835
 
 
73836
    return true;
 
73837
}
 
73838
 
 
73839
//---------------------------------------------------------------------
 
73840
const bind_vertex_input__AttributeData bind_vertex_input__AttributeData::DEFAULT = {0, 0, 0, 0};
 
73841
 
 
73842
//---------------------------------------------------------------------
 
73843
bool ColladaParserAutoGen15Private::_data__bind_vertex_input( const ParserChar* text, size_t textLength )
 
73844
{
 
73845
    return true;
 
73846
}
 
73847
 
 
73848
//---------------------------------------------------------------------
 
73849
bool ColladaParserAutoGen15Private::_preBegin__bind_vertex_input( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
73850
{
 
73851
#ifdef GENERATEDSAXPARSER_VALIDATION
 
73852
    if ( mValidate )
 
73853
    {
 
73854
 
 
73855
        bool validationResult = _validateBegin__bind_vertex_input( attributes, attributeDataPtr, validationDataPtr );
 
73856
        if ( !validationResult ) return false;
 
73857
 
 
73858
    } // validation
 
73859
#endif
 
73860
 
 
73861
bind_vertex_input__AttributeData* attributeData = newData<bind_vertex_input__AttributeData>(attributeDataPtr);
 
73862
 
 
73863
const ParserChar** attributeArray = attributes.attributes;
 
73864
if ( attributeArray )
 
73865
{
 
73866
    while (true)
 
73867
    {
 
73868
        const ParserChar * attribute = *attributeArray;
 
73869
        if ( !attribute )
 
73870
            break;
 
73871
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
73872
        attributeArray++;
 
73873
        if ( !attributeArray )
 
73874
            return false;
 
73875
        const ParserChar* attributeValue = *attributeArray;
 
73876
        attributeArray++;
 
73877
 
 
73878
 
 
73879
    switch ( hash )
 
73880
    {
 
73881
    case HASH_ATTRIBUTE_SEMANTIC:
 
73882
    {
 
73883
 
 
73884
attributeData->semantic = attributeValue;
 
73885
#ifdef GENERATEDSAXPARSER_VALIDATION
 
73886
    if ( mValidate )
 
73887
    {
 
73888
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->semantic, strlen(attributeData->semantic));
 
73889
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
73890
    {
 
73891
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
73892
            simpleTypeValidationResult,
 
73893
            HASH_ELEMENT_BIND_VERTEX_INPUT,
 
73894
            HASH_ATTRIBUTE_SEMANTIC,
 
73895
            attributeValue) )
 
73896
        {
 
73897
            return false;
 
73898
        }
 
73899
    }
 
73900
    } // validation
 
73901
#endif
 
73902
 
 
73903
    break;
 
73904
    }
 
73905
    case HASH_ATTRIBUTE_INPUT_SEMANTIC:
 
73906
    {
 
73907
 
 
73908
attributeData->input_semantic = attributeValue;
 
73909
#ifdef GENERATEDSAXPARSER_VALIDATION
 
73910
    if ( mValidate )
 
73911
    {
 
73912
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->input_semantic, strlen(attributeData->input_semantic));
 
73913
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
73914
    {
 
73915
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
73916
            simpleTypeValidationResult,
 
73917
            HASH_ELEMENT_BIND_VERTEX_INPUT,
 
73918
            HASH_ATTRIBUTE_INPUT_SEMANTIC,
 
73919
            attributeValue) )
 
73920
        {
 
73921
            return false;
 
73922
        }
 
73923
    }
 
73924
    } // validation
 
73925
#endif
 
73926
 
 
73927
    break;
 
73928
    }
 
73929
    case HASH_ATTRIBUTE_INPUT_SET:
 
73930
    {
 
73931
bool failed;
 
73932
attributeData->input_set = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
73933
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
73934
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
73935
        HASH_ELEMENT_BIND_VERTEX_INPUT,
 
73936
        HASH_ATTRIBUTE_INPUT_SET,
 
73937
        attributeValue))
 
73938
{
 
73939
    return false;
 
73940
}
 
73941
if ( !failed )
 
73942
    attributeData->present_attributes |= bind_vertex_input__AttributeData::ATTRIBUTE_INPUT_SET_PRESENT;
 
73943
 
 
73944
    break;
 
73945
    }
 
73946
    default:
 
73947
    {
 
73948
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_BIND_VERTEX_INPUT, attribute, attributeValue))
 
73949
            {return false;}
 
73950
    }
 
73951
    }
 
73952
    }
 
73953
}
 
73954
if ( !attributeData->semantic )
 
73955
{
 
73956
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_BIND_VERTEX_INPUT, HASH_ATTRIBUTE_SEMANTIC, 0 ) )
 
73957
        return false;
 
73958
}
 
73959
if ( !attributeData->input_semantic )
 
73960
{
 
73961
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_BIND_VERTEX_INPUT, HASH_ATTRIBUTE_INPUT_SEMANTIC, 0 ) )
 
73962
        return false;
 
73963
}
 
73964
 
 
73965
 
 
73966
    return true;
 
73967
}
 
73968
 
 
73969
//---------------------------------------------------------------------
 
73970
bool ColladaParserAutoGen15Private::_preEnd__bind_vertex_input()
 
73971
{
 
73972
#ifdef GENERATEDSAXPARSER_VALIDATION
 
73973
    if ( mValidate )
 
73974
    {
 
73975
 
 
73976
        bool validationResult = _validateEnd__bind_vertex_input();
 
73977
        if ( !validationResult ) return false;
 
73978
 
 
73979
    } // validation
 
73980
#endif
 
73981
 
 
73982
    return true;
 
73983
}
 
73984
 
 
73985
//---------------------------------------------------------------------
 
73986
bool ColladaParserAutoGen15Private::_freeAttributes__bind_vertex_input( void* attributeData )
 
73987
{
 
73988
    bind_vertex_input__AttributeData* typedAttributeData = static_cast<bind_vertex_input__AttributeData*>(attributeData);
 
73989
 
 
73990
    typedAttributeData->~bind_vertex_input__AttributeData();
 
73991
 
 
73992
    return true;
 
73993
}
 
73994
 
 
73995
//---------------------------------------------------------------------
 
73996
const instance_geometry__AttributeData instance_geometry__AttributeData::DEFAULT = {0, 0, 0, 0};
 
73997
 
 
73998
//---------------------------------------------------------------------
 
73999
bool ColladaParserAutoGen15Private::_data__instance_geometry( const ParserChar* text, size_t textLength )
 
74000
{
 
74001
    return true;
 
74002
}
 
74003
 
 
74004
//---------------------------------------------------------------------
 
74005
bool ColladaParserAutoGen15Private::_preBegin__instance_geometry( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
74006
{
 
74007
#ifdef GENERATEDSAXPARSER_VALIDATION
 
74008
    if ( mValidate )
 
74009
    {
 
74010
 
 
74011
        bool validationResult = _validateBegin__instance_geometry( attributes, attributeDataPtr, validationDataPtr );
 
74012
        if ( !validationResult ) return false;
 
74013
 
 
74014
    } // validation
 
74015
#endif
 
74016
 
 
74017
instance_geometry__AttributeData* attributeData = newData<instance_geometry__AttributeData>(attributeDataPtr);
 
74018
 
 
74019
const ParserChar** attributeArray = attributes.attributes;
 
74020
if ( attributeArray )
 
74021
{
 
74022
    while (true)
 
74023
    {
 
74024
        const ParserChar * attribute = *attributeArray;
 
74025
        if ( !attribute )
 
74026
            break;
 
74027
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
74028
        attributeArray++;
 
74029
        if ( !attributeArray )
 
74030
            return false;
 
74031
        const ParserChar* attributeValue = *attributeArray;
 
74032
        attributeArray++;
 
74033
 
 
74034
 
 
74035
    switch ( hash )
 
74036
    {
 
74037
    case HASH_ATTRIBUTE_URL:
 
74038
    {
 
74039
bool failed;
 
74040
attributeData->url = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
74041
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
74042
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
74043
        HASH_ELEMENT_INSTANCE_GEOMETRY,
 
74044
        HASH_ATTRIBUTE_URL,
 
74045
        attributeValue))
 
74046
{
 
74047
    return false;
 
74048
}
 
74049
if ( !failed )
 
74050
    attributeData->present_attributes |= instance_geometry__AttributeData::ATTRIBUTE_URL_PRESENT;
 
74051
 
 
74052
    break;
 
74053
    }
 
74054
    case HASH_ATTRIBUTE_SID:
 
74055
    {
 
74056
 
 
74057
attributeData->sid = attributeValue;
 
74058
#ifdef GENERATEDSAXPARSER_VALIDATION
 
74059
    if ( mValidate )
 
74060
    {
 
74061
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
74062
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
74063
    {
 
74064
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
74065
            simpleTypeValidationResult,
 
74066
            HASH_ELEMENT_INSTANCE_GEOMETRY,
 
74067
            HASH_ATTRIBUTE_SID,
 
74068
            attributeValue) )
 
74069
        {
 
74070
            return false;
 
74071
        }
 
74072
    }
 
74073
    } // validation
 
74074
#endif
 
74075
 
 
74076
    break;
 
74077
    }
 
74078
    case HASH_ATTRIBUTE_NAME:
 
74079
    {
 
74080
 
 
74081
attributeData->name = attributeValue;
 
74082
 
 
74083
    break;
 
74084
    }
 
74085
    default:
 
74086
    {
 
74087
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_INSTANCE_GEOMETRY, attribute, attributeValue))
 
74088
            {return false;}
 
74089
    }
 
74090
    }
 
74091
    }
 
74092
}
 
74093
if ((attributeData->present_attributes & instance_geometry__AttributeData::ATTRIBUTE_URL_PRESENT) == 0)
 
74094
{
 
74095
    attributeData->url = COLLADABU::URI("");
 
74096
}
 
74097
if ( (attributeData->present_attributes & instance_geometry__AttributeData::ATTRIBUTE_URL_PRESENT) == 0 )
 
74098
{
 
74099
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_INSTANCE_GEOMETRY, HASH_ATTRIBUTE_URL, 0 ) )
 
74100
        return false;
 
74101
}
 
74102
 
 
74103
 
 
74104
    return true;
 
74105
}
 
74106
 
 
74107
//---------------------------------------------------------------------
 
74108
bool ColladaParserAutoGen15Private::_preEnd__instance_geometry()
 
74109
{
 
74110
#ifdef GENERATEDSAXPARSER_VALIDATION
 
74111
    if ( mValidate )
 
74112
    {
 
74113
 
 
74114
        bool validationResult = _validateEnd__instance_geometry();
 
74115
        if ( !validationResult ) return false;
 
74116
 
 
74117
    } // validation
 
74118
#endif
 
74119
 
 
74120
    return true;
 
74121
}
 
74122
 
 
74123
//---------------------------------------------------------------------
 
74124
bool ColladaParserAutoGen15Private::_freeAttributes__instance_geometry( void* attributeData )
 
74125
{
 
74126
    instance_geometry__AttributeData* typedAttributeData = static_cast<instance_geometry__AttributeData*>(attributeData);
 
74127
 
 
74128
    typedAttributeData->~instance_geometry__AttributeData();
 
74129
 
 
74130
    return true;
 
74131
}
 
74132
 
 
74133
//---------------------------------------------------------------------
 
74134
const instance_light__AttributeData instance_light__AttributeData::DEFAULT = {0, 0, 0, 0};
 
74135
 
 
74136
//---------------------------------------------------------------------
 
74137
bool ColladaParserAutoGen15Private::_data__instance_light( const ParserChar* text, size_t textLength )
 
74138
{
 
74139
    return true;
 
74140
}
 
74141
 
 
74142
//---------------------------------------------------------------------
 
74143
bool ColladaParserAutoGen15Private::_preBegin__instance_light( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
74144
{
 
74145
#ifdef GENERATEDSAXPARSER_VALIDATION
 
74146
    if ( mValidate )
 
74147
    {
 
74148
 
 
74149
        bool validationResult = _validateBegin__instance_light( attributes, attributeDataPtr, validationDataPtr );
 
74150
        if ( !validationResult ) return false;
 
74151
 
 
74152
    } // validation
 
74153
#endif
 
74154
 
 
74155
instance_light__AttributeData* attributeData = newData<instance_light__AttributeData>(attributeDataPtr);
 
74156
 
 
74157
const ParserChar** attributeArray = attributes.attributes;
 
74158
if ( attributeArray )
 
74159
{
 
74160
    while (true)
 
74161
    {
 
74162
        const ParserChar * attribute = *attributeArray;
 
74163
        if ( !attribute )
 
74164
            break;
 
74165
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
74166
        attributeArray++;
 
74167
        if ( !attributeArray )
 
74168
            return false;
 
74169
        const ParserChar* attributeValue = *attributeArray;
 
74170
        attributeArray++;
 
74171
 
 
74172
 
 
74173
    switch ( hash )
 
74174
    {
 
74175
    case HASH_ATTRIBUTE_URL:
 
74176
    {
 
74177
bool failed;
 
74178
attributeData->url = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
74179
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
74180
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
74181
        HASH_ELEMENT_INSTANCE_LIGHT,
 
74182
        HASH_ATTRIBUTE_URL,
 
74183
        attributeValue))
 
74184
{
 
74185
    return false;
 
74186
}
 
74187
if ( !failed )
 
74188
    attributeData->present_attributes |= instance_light__AttributeData::ATTRIBUTE_URL_PRESENT;
 
74189
 
 
74190
    break;
 
74191
    }
 
74192
    case HASH_ATTRIBUTE_SID:
 
74193
    {
 
74194
 
 
74195
attributeData->sid = attributeValue;
 
74196
#ifdef GENERATEDSAXPARSER_VALIDATION
 
74197
    if ( mValidate )
 
74198
    {
 
74199
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
74200
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
74201
    {
 
74202
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
74203
            simpleTypeValidationResult,
 
74204
            HASH_ELEMENT_INSTANCE_LIGHT,
 
74205
            HASH_ATTRIBUTE_SID,
 
74206
            attributeValue) )
 
74207
        {
 
74208
            return false;
 
74209
        }
 
74210
    }
 
74211
    } // validation
 
74212
#endif
 
74213
 
 
74214
    break;
 
74215
    }
 
74216
    case HASH_ATTRIBUTE_NAME:
 
74217
    {
 
74218
 
 
74219
attributeData->name = attributeValue;
 
74220
 
 
74221
    break;
 
74222
    }
 
74223
    default:
 
74224
    {
 
74225
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_INSTANCE_LIGHT, attribute, attributeValue))
 
74226
            {return false;}
 
74227
    }
 
74228
    }
 
74229
    }
 
74230
}
 
74231
if ((attributeData->present_attributes & instance_light__AttributeData::ATTRIBUTE_URL_PRESENT) == 0)
 
74232
{
 
74233
    attributeData->url = COLLADABU::URI("");
 
74234
}
 
74235
if ( (attributeData->present_attributes & instance_light__AttributeData::ATTRIBUTE_URL_PRESENT) == 0 )
 
74236
{
 
74237
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_INSTANCE_LIGHT, HASH_ATTRIBUTE_URL, 0 ) )
 
74238
        return false;
 
74239
}
 
74240
 
 
74241
 
 
74242
    return true;
 
74243
}
 
74244
 
 
74245
//---------------------------------------------------------------------
 
74246
bool ColladaParserAutoGen15Private::_preEnd__instance_light()
 
74247
{
 
74248
#ifdef GENERATEDSAXPARSER_VALIDATION
 
74249
    if ( mValidate )
 
74250
    {
 
74251
 
 
74252
        bool validationResult = _validateEnd__instance_light();
 
74253
        if ( !validationResult ) return false;
 
74254
 
 
74255
    } // validation
 
74256
#endif
 
74257
 
 
74258
    return true;
 
74259
}
 
74260
 
 
74261
//---------------------------------------------------------------------
 
74262
bool ColladaParserAutoGen15Private::_freeAttributes__instance_light( void* attributeData )
 
74263
{
 
74264
    instance_light__AttributeData* typedAttributeData = static_cast<instance_light__AttributeData*>(attributeData);
 
74265
 
 
74266
    typedAttributeData->~instance_light__AttributeData();
 
74267
 
 
74268
    return true;
 
74269
}
 
74270
 
 
74271
//---------------------------------------------------------------------
 
74272
const instance_node__AttributeData instance_node__AttributeData::DEFAULT = {0, 0, 0, 0, 0};
 
74273
 
 
74274
//---------------------------------------------------------------------
 
74275
bool ColladaParserAutoGen15Private::_data__instance_node( const ParserChar* text, size_t textLength )
 
74276
{
 
74277
    return true;
 
74278
}
 
74279
 
 
74280
//---------------------------------------------------------------------
 
74281
bool ColladaParserAutoGen15Private::_preBegin__instance_node( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
74282
{
 
74283
#ifdef GENERATEDSAXPARSER_VALIDATION
 
74284
    if ( mValidate )
 
74285
    {
 
74286
 
 
74287
        bool validationResult = _validateBegin__instance_node( attributes, attributeDataPtr, validationDataPtr );
 
74288
        if ( !validationResult ) return false;
 
74289
 
 
74290
    } // validation
 
74291
#endif
 
74292
 
 
74293
instance_node__AttributeData* attributeData = newData<instance_node__AttributeData>(attributeDataPtr);
 
74294
 
 
74295
const ParserChar** attributeArray = attributes.attributes;
 
74296
if ( attributeArray )
 
74297
{
 
74298
    while (true)
 
74299
    {
 
74300
        const ParserChar * attribute = *attributeArray;
 
74301
        if ( !attribute )
 
74302
            break;
 
74303
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
74304
        attributeArray++;
 
74305
        if ( !attributeArray )
 
74306
            return false;
 
74307
        const ParserChar* attributeValue = *attributeArray;
 
74308
        attributeArray++;
 
74309
 
 
74310
 
 
74311
    switch ( hash )
 
74312
    {
 
74313
    case HASH_ATTRIBUTE_PROXY:
 
74314
    {
 
74315
bool failed;
 
74316
attributeData->proxy = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
74317
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
74318
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
74319
        HASH_ELEMENT_INSTANCE_NODE,
 
74320
        HASH_ATTRIBUTE_PROXY,
 
74321
        attributeValue))
 
74322
{
 
74323
    return false;
 
74324
}
 
74325
if ( !failed )
 
74326
    attributeData->present_attributes |= instance_node__AttributeData::ATTRIBUTE_PROXY_PRESENT;
 
74327
 
 
74328
    break;
 
74329
    }
 
74330
    case HASH_ATTRIBUTE_URL:
 
74331
    {
 
74332
bool failed;
 
74333
attributeData->url = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
74334
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
74335
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
74336
        HASH_ELEMENT_INSTANCE_NODE,
 
74337
        HASH_ATTRIBUTE_URL,
 
74338
        attributeValue))
 
74339
{
 
74340
    return false;
 
74341
}
 
74342
if ( !failed )
 
74343
    attributeData->present_attributes |= instance_node__AttributeData::ATTRIBUTE_URL_PRESENT;
 
74344
 
 
74345
    break;
 
74346
    }
 
74347
    case HASH_ATTRIBUTE_SID:
 
74348
    {
 
74349
 
 
74350
attributeData->sid = attributeValue;
 
74351
#ifdef GENERATEDSAXPARSER_VALIDATION
 
74352
    if ( mValidate )
 
74353
    {
 
74354
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
74355
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
74356
    {
 
74357
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
74358
            simpleTypeValidationResult,
 
74359
            HASH_ELEMENT_INSTANCE_NODE,
 
74360
            HASH_ATTRIBUTE_SID,
 
74361
            attributeValue) )
 
74362
        {
 
74363
            return false;
 
74364
        }
 
74365
    }
 
74366
    } // validation
 
74367
#endif
 
74368
 
 
74369
    break;
 
74370
    }
 
74371
    case HASH_ATTRIBUTE_NAME:
 
74372
    {
 
74373
 
 
74374
attributeData->name = attributeValue;
 
74375
 
 
74376
    break;
 
74377
    }
 
74378
    default:
 
74379
    {
 
74380
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_INSTANCE_NODE, attribute, attributeValue))
 
74381
            {return false;}
 
74382
    }
 
74383
    }
 
74384
    }
 
74385
}
 
74386
if ((attributeData->present_attributes & instance_node__AttributeData::ATTRIBUTE_PROXY_PRESENT) == 0)
 
74387
{
 
74388
    attributeData->proxy = COLLADABU::URI("");
 
74389
}
 
74390
if ((attributeData->present_attributes & instance_node__AttributeData::ATTRIBUTE_URL_PRESENT) == 0)
 
74391
{
 
74392
    attributeData->url = COLLADABU::URI("");
 
74393
}
 
74394
if ( (attributeData->present_attributes & instance_node__AttributeData::ATTRIBUTE_URL_PRESENT) == 0 )
 
74395
{
 
74396
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_INSTANCE_NODE, HASH_ATTRIBUTE_URL, 0 ) )
 
74397
        return false;
 
74398
}
 
74399
 
 
74400
 
 
74401
    return true;
 
74402
}
 
74403
 
 
74404
//---------------------------------------------------------------------
 
74405
bool ColladaParserAutoGen15Private::_preEnd__instance_node()
 
74406
{
 
74407
#ifdef GENERATEDSAXPARSER_VALIDATION
 
74408
    if ( mValidate )
 
74409
    {
 
74410
 
 
74411
        bool validationResult = _validateEnd__instance_node();
 
74412
        if ( !validationResult ) return false;
 
74413
 
 
74414
    } // validation
 
74415
#endif
 
74416
 
 
74417
    return true;
 
74418
}
 
74419
 
 
74420
//---------------------------------------------------------------------
 
74421
bool ColladaParserAutoGen15Private::_freeAttributes__instance_node( void* attributeData )
 
74422
{
 
74423
    instance_node__AttributeData* typedAttributeData = static_cast<instance_node__AttributeData*>(attributeData);
 
74424
 
 
74425
    typedAttributeData->~instance_node__AttributeData();
 
74426
 
 
74427
    return true;
 
74428
}
 
74429
 
 
74430
//---------------------------------------------------------------------
 
74431
const library_physics_materials__AttributeData library_physics_materials__AttributeData::DEFAULT = {0, 0};
 
74432
 
 
74433
//---------------------------------------------------------------------
 
74434
bool ColladaParserAutoGen15Private::_data__library_physics_materials( const ParserChar* text, size_t textLength )
 
74435
{
 
74436
    return true;
 
74437
}
 
74438
 
 
74439
//---------------------------------------------------------------------
 
74440
bool ColladaParserAutoGen15Private::_preBegin__library_physics_materials( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
74441
{
 
74442
#ifdef GENERATEDSAXPARSER_VALIDATION
 
74443
    if ( mValidate )
 
74444
    {
 
74445
 
 
74446
        bool validationResult = _validateBegin__library_physics_materials( attributes, attributeDataPtr, validationDataPtr );
 
74447
        if ( !validationResult ) return false;
 
74448
 
 
74449
    } // validation
 
74450
#endif
 
74451
 
 
74452
library_physics_materials__AttributeData* attributeData = newData<library_physics_materials__AttributeData>(attributeDataPtr);
 
74453
 
 
74454
const ParserChar** attributeArray = attributes.attributes;
 
74455
if ( attributeArray )
 
74456
{
 
74457
    while (true)
 
74458
    {
 
74459
        const ParserChar * attribute = *attributeArray;
 
74460
        if ( !attribute )
 
74461
            break;
 
74462
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
74463
        attributeArray++;
 
74464
        if ( !attributeArray )
 
74465
            return false;
 
74466
        const ParserChar* attributeValue = *attributeArray;
 
74467
        attributeArray++;
 
74468
 
 
74469
 
 
74470
    switch ( hash )
 
74471
    {
 
74472
    case HASH_ATTRIBUTE_ID:
 
74473
    {
 
74474
 
 
74475
attributeData->id = attributeValue;
 
74476
 
 
74477
    break;
 
74478
    }
 
74479
    case HASH_ATTRIBUTE_NAME:
 
74480
    {
 
74481
 
 
74482
attributeData->name = attributeValue;
 
74483
 
 
74484
    break;
 
74485
    }
 
74486
    default:
 
74487
    {
 
74488
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIBRARY_PHYSICS_MATERIALS, attribute, attributeValue))
 
74489
            {return false;}
 
74490
    }
 
74491
    }
 
74492
    }
 
74493
}
 
74494
 
 
74495
 
 
74496
    return true;
 
74497
}
 
74498
 
 
74499
//---------------------------------------------------------------------
 
74500
bool ColladaParserAutoGen15Private::_preEnd__library_physics_materials()
 
74501
{
 
74502
#ifdef GENERATEDSAXPARSER_VALIDATION
 
74503
    if ( mValidate )
 
74504
    {
 
74505
 
 
74506
        bool validationResult = _validateEnd__library_physics_materials();
 
74507
        if ( !validationResult ) return false;
 
74508
 
 
74509
    } // validation
 
74510
#endif
 
74511
 
 
74512
    return true;
 
74513
}
 
74514
 
 
74515
//---------------------------------------------------------------------
 
74516
bool ColladaParserAutoGen15Private::_freeAttributes__library_physics_materials( void* attributeData )
 
74517
{
 
74518
    library_physics_materials__AttributeData* typedAttributeData = static_cast<library_physics_materials__AttributeData*>(attributeData);
 
74519
 
 
74520
    typedAttributeData->~library_physics_materials__AttributeData();
 
74521
 
 
74522
    return true;
 
74523
}
 
74524
 
 
74525
//---------------------------------------------------------------------
 
74526
const physics_material__AttributeData physics_material__AttributeData::DEFAULT = {0, 0};
 
74527
 
 
74528
//---------------------------------------------------------------------
 
74529
bool ColladaParserAutoGen15Private::_data__physics_material( const ParserChar* text, size_t textLength )
 
74530
{
 
74531
    return true;
 
74532
}
 
74533
 
 
74534
//---------------------------------------------------------------------
 
74535
bool ColladaParserAutoGen15Private::_preBegin__physics_material( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
74536
{
 
74537
#ifdef GENERATEDSAXPARSER_VALIDATION
 
74538
    if ( mValidate )
 
74539
    {
 
74540
 
 
74541
        bool validationResult = _validateBegin__physics_material( attributes, attributeDataPtr, validationDataPtr );
 
74542
        if ( !validationResult ) return false;
 
74543
 
 
74544
    } // validation
 
74545
#endif
 
74546
 
 
74547
physics_material__AttributeData* attributeData = newData<physics_material__AttributeData>(attributeDataPtr);
 
74548
 
 
74549
const ParserChar** attributeArray = attributes.attributes;
 
74550
if ( attributeArray )
 
74551
{
 
74552
    while (true)
 
74553
    {
 
74554
        const ParserChar * attribute = *attributeArray;
 
74555
        if ( !attribute )
 
74556
            break;
 
74557
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
74558
        attributeArray++;
 
74559
        if ( !attributeArray )
 
74560
            return false;
 
74561
        const ParserChar* attributeValue = *attributeArray;
 
74562
        attributeArray++;
 
74563
 
 
74564
 
 
74565
    switch ( hash )
 
74566
    {
 
74567
    case HASH_ATTRIBUTE_ID:
 
74568
    {
 
74569
 
 
74570
attributeData->id = attributeValue;
 
74571
 
 
74572
    break;
 
74573
    }
 
74574
    case HASH_ATTRIBUTE_NAME:
 
74575
    {
 
74576
 
 
74577
attributeData->name = attributeValue;
 
74578
 
 
74579
    break;
 
74580
    }
 
74581
    default:
 
74582
    {
 
74583
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_PHYSICS_MATERIAL, attribute, attributeValue))
 
74584
            {return false;}
 
74585
    }
 
74586
    }
 
74587
    }
 
74588
}
 
74589
 
 
74590
 
 
74591
    return true;
 
74592
}
 
74593
 
 
74594
//---------------------------------------------------------------------
 
74595
bool ColladaParserAutoGen15Private::_preEnd__physics_material()
 
74596
{
 
74597
#ifdef GENERATEDSAXPARSER_VALIDATION
 
74598
    if ( mValidate )
 
74599
    {
 
74600
 
 
74601
        bool validationResult = _validateEnd__physics_material();
 
74602
        if ( !validationResult ) return false;
 
74603
 
 
74604
    } // validation
 
74605
#endif
 
74606
 
 
74607
    return true;
 
74608
}
 
74609
 
 
74610
//---------------------------------------------------------------------
 
74611
bool ColladaParserAutoGen15Private::_freeAttributes__physics_material( void* attributeData )
 
74612
{
 
74613
    physics_material__AttributeData* typedAttributeData = static_cast<physics_material__AttributeData*>(attributeData);
 
74614
 
 
74615
    typedAttributeData->~physics_material__AttributeData();
 
74616
 
 
74617
    return true;
 
74618
}
 
74619
 
 
74620
//---------------------------------------------------------------------
 
74621
bool ColladaParserAutoGen15Private::_data__physics_material_type____technique_common( const ParserChar* text, size_t textLength )
 
74622
{
 
74623
    return true;
 
74624
}
 
74625
 
 
74626
//---------------------------------------------------------------------
 
74627
bool ColladaParserAutoGen15Private::_preBegin__physics_material_type____technique_common( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
74628
{
 
74629
#ifdef GENERATEDSAXPARSER_VALIDATION
 
74630
    if ( mValidate )
 
74631
    {
 
74632
 
 
74633
        bool validationResult = _validateBegin__physics_material_type____technique_common( attributes, attributeDataPtr, validationDataPtr );
 
74634
        if ( !validationResult ) return false;
 
74635
 
 
74636
    } // validation
 
74637
#endif
 
74638
 
 
74639
    return true;
 
74640
}
 
74641
 
 
74642
//---------------------------------------------------------------------
 
74643
bool ColladaParserAutoGen15Private::_preEnd__physics_material_type____technique_common()
 
74644
{
 
74645
#ifdef GENERATEDSAXPARSER_VALIDATION
 
74646
    if ( mValidate )
 
74647
    {
 
74648
 
 
74649
        bool validationResult = _validateEnd__physics_material_type____technique_common();
 
74650
        if ( !validationResult ) return false;
 
74651
 
 
74652
    } // validation
 
74653
#endif
 
74654
 
 
74655
    return true;
 
74656
}
 
74657
 
 
74658
//---------------------------------------------------------------------
 
74659
bool ColladaParserAutoGen15Private::_freeAttributes__physics_material_type____technique_common( void* attributeData )
 
74660
{
 
74661
    return true;
 
74662
}
 
74663
 
 
74664
//---------------------------------------------------------------------
 
74665
const dynamic_friction__AttributeData dynamic_friction__AttributeData::DEFAULT = {0};
 
74666
 
 
74667
//---------------------------------------------------------------------
 
74668
bool ColladaParserAutoGen15Private::_data__dynamic_friction( const ParserChar* text, size_t textLength )
 
74669
{
 
74670
if (!mLastIncompleteFragmentInCharacterData)
 
74671
{
 
74672
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
74673
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
74674
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
74675
}
 
74676
else
 
74677
{
 
74678
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
74679
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
74680
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
74681
        mLastIncompleteFragmentInCharacterData = tmp;
 
74682
    }
 
74683
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
74684
    mEndOfDataInCurrentObjectOnStack += textLength;
 
74685
}
 
74686
return true;
 
74687
}
 
74688
 
 
74689
//---------------------------------------------------------------------
 
74690
bool ColladaParserAutoGen15Private::_preBegin__dynamic_friction( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
74691
{
 
74692
#ifdef GENERATEDSAXPARSER_VALIDATION
 
74693
    if ( mValidate )
 
74694
    {
 
74695
 
 
74696
        bool validationResult = _validateBegin__dynamic_friction( attributes, attributeDataPtr, validationDataPtr );
 
74697
        if ( !validationResult ) return false;
 
74698
 
 
74699
    } // validation
 
74700
#endif
 
74701
 
 
74702
dynamic_friction__AttributeData* attributeData = newData<dynamic_friction__AttributeData>(attributeDataPtr);
 
74703
 
 
74704
const ParserChar** attributeArray = attributes.attributes;
 
74705
if ( attributeArray )
 
74706
{
 
74707
    while (true)
 
74708
    {
 
74709
        const ParserChar * attribute = *attributeArray;
 
74710
        if ( !attribute )
 
74711
            break;
 
74712
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
74713
        attributeArray++;
 
74714
        if ( !attributeArray )
 
74715
            return false;
 
74716
        const ParserChar* attributeValue = *attributeArray;
 
74717
        attributeArray++;
 
74718
 
 
74719
 
 
74720
    switch ( hash )
 
74721
    {
 
74722
    case HASH_ATTRIBUTE_SID:
 
74723
    {
 
74724
 
 
74725
attributeData->sid = attributeValue;
 
74726
#ifdef GENERATEDSAXPARSER_VALIDATION
 
74727
    if ( mValidate )
 
74728
    {
 
74729
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
74730
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
74731
    {
 
74732
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
74733
            simpleTypeValidationResult,
 
74734
            HASH_ELEMENT_DYNAMIC_FRICTION,
 
74735
            HASH_ATTRIBUTE_SID,
 
74736
            attributeValue) )
 
74737
        {
 
74738
            return false;
 
74739
        }
 
74740
    }
 
74741
    } // validation
 
74742
#endif
 
74743
 
 
74744
    break;
 
74745
    }
 
74746
    default:
 
74747
    {
 
74748
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_DYNAMIC_FRICTION, attribute, attributeValue))
 
74749
            {return false;}
 
74750
    }
 
74751
    }
 
74752
    }
 
74753
}
 
74754
 
 
74755
 
 
74756
    return true;
 
74757
}
 
74758
 
 
74759
//---------------------------------------------------------------------
 
74760
bool ColladaParserAutoGen15Private::_preEnd__dynamic_friction()
 
74761
{
 
74762
#ifdef GENERATEDSAXPARSER_VALIDATION
 
74763
    if ( mValidate )
 
74764
    {
 
74765
 
 
74766
        bool validationResult = _validateEnd__dynamic_friction();
 
74767
        if ( !validationResult ) return false;
 
74768
 
 
74769
    } // validation
 
74770
#endif
 
74771
 
 
74772
bool failed;
 
74773
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
74774
DISABLE_WARNING_UNUSED(ptrForErr)
 
74775
float parameter = GeneratedSaxParser::Utils::toFloat((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
74776
bool returnValue;
 
74777
if (!failed)
 
74778
{
 
74779
    returnValue = mImpl->data__dynamic_friction(parameter);
 
74780
}
 
74781
else
 
74782
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_DYNAMIC_FRICTION, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
74783
if (mLastIncompleteFragmentInCharacterData)
 
74784
    mStackMemoryManager.deleteObject();
 
74785
mLastIncompleteFragmentInCharacterData = 0;
 
74786
mEndOfDataInCurrentObjectOnStack = 0;
 
74787
return returnValue;
 
74788
}
 
74789
 
 
74790
//---------------------------------------------------------------------
 
74791
bool ColladaParserAutoGen15Private::_freeAttributes__dynamic_friction( void* attributeData )
 
74792
{
 
74793
    dynamic_friction__AttributeData* typedAttributeData = static_cast<dynamic_friction__AttributeData*>(attributeData);
 
74794
 
 
74795
    typedAttributeData->~dynamic_friction__AttributeData();
 
74796
 
 
74797
    return true;
 
74798
}
 
74799
 
 
74800
//---------------------------------------------------------------------
 
74801
const restitution__AttributeData restitution__AttributeData::DEFAULT = {0};
 
74802
 
 
74803
//---------------------------------------------------------------------
 
74804
bool ColladaParserAutoGen15Private::_data__restitution( const ParserChar* text, size_t textLength )
 
74805
{
 
74806
if (!mLastIncompleteFragmentInCharacterData)
 
74807
{
 
74808
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
74809
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
74810
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
74811
}
 
74812
else
 
74813
{
 
74814
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
74815
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
74816
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
74817
        mLastIncompleteFragmentInCharacterData = tmp;
 
74818
    }
 
74819
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
74820
    mEndOfDataInCurrentObjectOnStack += textLength;
 
74821
}
 
74822
return true;
 
74823
}
 
74824
 
 
74825
//---------------------------------------------------------------------
 
74826
bool ColladaParserAutoGen15Private::_preBegin__restitution( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
74827
{
 
74828
#ifdef GENERATEDSAXPARSER_VALIDATION
 
74829
    if ( mValidate )
 
74830
    {
 
74831
 
 
74832
        bool validationResult = _validateBegin__restitution( attributes, attributeDataPtr, validationDataPtr );
 
74833
        if ( !validationResult ) return false;
 
74834
 
 
74835
    } // validation
 
74836
#endif
 
74837
 
 
74838
restitution__AttributeData* attributeData = newData<restitution__AttributeData>(attributeDataPtr);
 
74839
 
 
74840
const ParserChar** attributeArray = attributes.attributes;
 
74841
if ( attributeArray )
 
74842
{
 
74843
    while (true)
 
74844
    {
 
74845
        const ParserChar * attribute = *attributeArray;
 
74846
        if ( !attribute )
 
74847
            break;
 
74848
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
74849
        attributeArray++;
 
74850
        if ( !attributeArray )
 
74851
            return false;
 
74852
        const ParserChar* attributeValue = *attributeArray;
 
74853
        attributeArray++;
 
74854
 
 
74855
 
 
74856
    switch ( hash )
 
74857
    {
 
74858
    case HASH_ATTRIBUTE_SID:
 
74859
    {
 
74860
 
 
74861
attributeData->sid = attributeValue;
 
74862
#ifdef GENERATEDSAXPARSER_VALIDATION
 
74863
    if ( mValidate )
 
74864
    {
 
74865
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
74866
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
74867
    {
 
74868
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
74869
            simpleTypeValidationResult,
 
74870
            HASH_ELEMENT_RESTITUTION,
 
74871
            HASH_ATTRIBUTE_SID,
 
74872
            attributeValue) )
 
74873
        {
 
74874
            return false;
 
74875
        }
 
74876
    }
 
74877
    } // validation
 
74878
#endif
 
74879
 
 
74880
    break;
 
74881
    }
 
74882
    default:
 
74883
    {
 
74884
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_RESTITUTION, attribute, attributeValue))
 
74885
            {return false;}
 
74886
    }
 
74887
    }
 
74888
    }
 
74889
}
 
74890
 
 
74891
 
 
74892
    return true;
 
74893
}
 
74894
 
 
74895
//---------------------------------------------------------------------
 
74896
bool ColladaParserAutoGen15Private::_preEnd__restitution()
 
74897
{
 
74898
#ifdef GENERATEDSAXPARSER_VALIDATION
 
74899
    if ( mValidate )
 
74900
    {
 
74901
 
 
74902
        bool validationResult = _validateEnd__restitution();
 
74903
        if ( !validationResult ) return false;
 
74904
 
 
74905
    } // validation
 
74906
#endif
 
74907
 
 
74908
bool failed;
 
74909
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
74910
DISABLE_WARNING_UNUSED(ptrForErr)
 
74911
float parameter = GeneratedSaxParser::Utils::toFloat((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
74912
bool returnValue;
 
74913
if (!failed)
 
74914
{
 
74915
    returnValue = mImpl->data__restitution(parameter);
 
74916
}
 
74917
else
 
74918
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_RESTITUTION, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
74919
if (mLastIncompleteFragmentInCharacterData)
 
74920
    mStackMemoryManager.deleteObject();
 
74921
mLastIncompleteFragmentInCharacterData = 0;
 
74922
mEndOfDataInCurrentObjectOnStack = 0;
 
74923
return returnValue;
 
74924
}
 
74925
 
 
74926
//---------------------------------------------------------------------
 
74927
bool ColladaParserAutoGen15Private::_freeAttributes__restitution( void* attributeData )
 
74928
{
 
74929
    restitution__AttributeData* typedAttributeData = static_cast<restitution__AttributeData*>(attributeData);
 
74930
 
 
74931
    typedAttributeData->~restitution__AttributeData();
 
74932
 
 
74933
    return true;
 
74934
}
 
74935
 
 
74936
//---------------------------------------------------------------------
 
74937
const static_friction__AttributeData static_friction__AttributeData::DEFAULT = {0};
 
74938
 
 
74939
//---------------------------------------------------------------------
 
74940
bool ColladaParserAutoGen15Private::_data__static_friction( const ParserChar* text, size_t textLength )
 
74941
{
 
74942
if (!mLastIncompleteFragmentInCharacterData)
 
74943
{
 
74944
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
74945
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
74946
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
74947
}
 
74948
else
 
74949
{
 
74950
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
74951
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
74952
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
74953
        mLastIncompleteFragmentInCharacterData = tmp;
 
74954
    }
 
74955
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
74956
    mEndOfDataInCurrentObjectOnStack += textLength;
 
74957
}
 
74958
return true;
 
74959
}
 
74960
 
 
74961
//---------------------------------------------------------------------
 
74962
bool ColladaParserAutoGen15Private::_preBegin__static_friction( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
74963
{
 
74964
#ifdef GENERATEDSAXPARSER_VALIDATION
 
74965
    if ( mValidate )
 
74966
    {
 
74967
 
 
74968
        bool validationResult = _validateBegin__static_friction( attributes, attributeDataPtr, validationDataPtr );
 
74969
        if ( !validationResult ) return false;
 
74970
 
 
74971
    } // validation
 
74972
#endif
 
74973
 
 
74974
static_friction__AttributeData* attributeData = newData<static_friction__AttributeData>(attributeDataPtr);
 
74975
 
 
74976
const ParserChar** attributeArray = attributes.attributes;
 
74977
if ( attributeArray )
 
74978
{
 
74979
    while (true)
 
74980
    {
 
74981
        const ParserChar * attribute = *attributeArray;
 
74982
        if ( !attribute )
 
74983
            break;
 
74984
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
74985
        attributeArray++;
 
74986
        if ( !attributeArray )
 
74987
            return false;
 
74988
        const ParserChar* attributeValue = *attributeArray;
 
74989
        attributeArray++;
 
74990
 
 
74991
 
 
74992
    switch ( hash )
 
74993
    {
 
74994
    case HASH_ATTRIBUTE_SID:
 
74995
    {
 
74996
 
 
74997
attributeData->sid = attributeValue;
 
74998
#ifdef GENERATEDSAXPARSER_VALIDATION
 
74999
    if ( mValidate )
 
75000
    {
 
75001
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
75002
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
75003
    {
 
75004
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
75005
            simpleTypeValidationResult,
 
75006
            HASH_ELEMENT_STATIC_FRICTION,
 
75007
            HASH_ATTRIBUTE_SID,
 
75008
            attributeValue) )
 
75009
        {
 
75010
            return false;
 
75011
        }
 
75012
    }
 
75013
    } // validation
 
75014
#endif
 
75015
 
 
75016
    break;
 
75017
    }
 
75018
    default:
 
75019
    {
 
75020
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_STATIC_FRICTION, attribute, attributeValue))
 
75021
            {return false;}
 
75022
    }
 
75023
    }
 
75024
    }
 
75025
}
 
75026
 
 
75027
 
 
75028
    return true;
 
75029
}
 
75030
 
 
75031
//---------------------------------------------------------------------
 
75032
bool ColladaParserAutoGen15Private::_preEnd__static_friction()
 
75033
{
 
75034
#ifdef GENERATEDSAXPARSER_VALIDATION
 
75035
    if ( mValidate )
 
75036
    {
 
75037
 
 
75038
        bool validationResult = _validateEnd__static_friction();
 
75039
        if ( !validationResult ) return false;
 
75040
 
 
75041
    } // validation
 
75042
#endif
 
75043
 
 
75044
bool failed;
 
75045
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
75046
DISABLE_WARNING_UNUSED(ptrForErr)
 
75047
float parameter = GeneratedSaxParser::Utils::toFloat((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
75048
bool returnValue;
 
75049
if (!failed)
 
75050
{
 
75051
    returnValue = mImpl->data__static_friction(parameter);
 
75052
}
 
75053
else
 
75054
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_STATIC_FRICTION, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
75055
if (mLastIncompleteFragmentInCharacterData)
 
75056
    mStackMemoryManager.deleteObject();
 
75057
mLastIncompleteFragmentInCharacterData = 0;
 
75058
mEndOfDataInCurrentObjectOnStack = 0;
 
75059
return returnValue;
 
75060
}
 
75061
 
 
75062
//---------------------------------------------------------------------
 
75063
bool ColladaParserAutoGen15Private::_freeAttributes__static_friction( void* attributeData )
 
75064
{
 
75065
    static_friction__AttributeData* typedAttributeData = static_cast<static_friction__AttributeData*>(attributeData);
 
75066
 
 
75067
    typedAttributeData->~static_friction__AttributeData();
 
75068
 
 
75069
    return true;
 
75070
}
 
75071
 
 
75072
//---------------------------------------------------------------------
 
75073
const library_physics_models__AttributeData library_physics_models__AttributeData::DEFAULT = {0, 0};
 
75074
 
 
75075
//---------------------------------------------------------------------
 
75076
bool ColladaParserAutoGen15Private::_data__library_physics_models( const ParserChar* text, size_t textLength )
 
75077
{
 
75078
    return true;
 
75079
}
 
75080
 
 
75081
//---------------------------------------------------------------------
 
75082
bool ColladaParserAutoGen15Private::_preBegin__library_physics_models( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
75083
{
 
75084
#ifdef GENERATEDSAXPARSER_VALIDATION
 
75085
    if ( mValidate )
 
75086
    {
 
75087
 
 
75088
        bool validationResult = _validateBegin__library_physics_models( attributes, attributeDataPtr, validationDataPtr );
 
75089
        if ( !validationResult ) return false;
 
75090
 
 
75091
    } // validation
 
75092
#endif
 
75093
 
 
75094
library_physics_models__AttributeData* attributeData = newData<library_physics_models__AttributeData>(attributeDataPtr);
 
75095
 
 
75096
const ParserChar** attributeArray = attributes.attributes;
 
75097
if ( attributeArray )
 
75098
{
 
75099
    while (true)
 
75100
    {
 
75101
        const ParserChar * attribute = *attributeArray;
 
75102
        if ( !attribute )
 
75103
            break;
 
75104
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
75105
        attributeArray++;
 
75106
        if ( !attributeArray )
 
75107
            return false;
 
75108
        const ParserChar* attributeValue = *attributeArray;
 
75109
        attributeArray++;
 
75110
 
 
75111
 
 
75112
    switch ( hash )
 
75113
    {
 
75114
    case HASH_ATTRIBUTE_ID:
 
75115
    {
 
75116
 
 
75117
attributeData->id = attributeValue;
 
75118
 
 
75119
    break;
 
75120
    }
 
75121
    case HASH_ATTRIBUTE_NAME:
 
75122
    {
 
75123
 
 
75124
attributeData->name = attributeValue;
 
75125
 
 
75126
    break;
 
75127
    }
 
75128
    default:
 
75129
    {
 
75130
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIBRARY_PHYSICS_MODELS, attribute, attributeValue))
 
75131
            {return false;}
 
75132
    }
 
75133
    }
 
75134
    }
 
75135
}
 
75136
 
 
75137
 
 
75138
    return true;
 
75139
}
 
75140
 
 
75141
//---------------------------------------------------------------------
 
75142
bool ColladaParserAutoGen15Private::_preEnd__library_physics_models()
 
75143
{
 
75144
#ifdef GENERATEDSAXPARSER_VALIDATION
 
75145
    if ( mValidate )
 
75146
    {
 
75147
 
 
75148
        bool validationResult = _validateEnd__library_physics_models();
 
75149
        if ( !validationResult ) return false;
 
75150
 
 
75151
    } // validation
 
75152
#endif
 
75153
 
 
75154
    return true;
 
75155
}
 
75156
 
 
75157
//---------------------------------------------------------------------
 
75158
bool ColladaParserAutoGen15Private::_freeAttributes__library_physics_models( void* attributeData )
 
75159
{
 
75160
    library_physics_models__AttributeData* typedAttributeData = static_cast<library_physics_models__AttributeData*>(attributeData);
 
75161
 
 
75162
    typedAttributeData->~library_physics_models__AttributeData();
 
75163
 
 
75164
    return true;
 
75165
}
 
75166
 
 
75167
//---------------------------------------------------------------------
 
75168
const physics_model__AttributeData physics_model__AttributeData::DEFAULT = {0, 0};
 
75169
 
 
75170
//---------------------------------------------------------------------
 
75171
bool ColladaParserAutoGen15Private::_data__physics_model( const ParserChar* text, size_t textLength )
 
75172
{
 
75173
    return true;
 
75174
}
 
75175
 
 
75176
//---------------------------------------------------------------------
 
75177
bool ColladaParserAutoGen15Private::_preBegin__physics_model( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
75178
{
 
75179
#ifdef GENERATEDSAXPARSER_VALIDATION
 
75180
    if ( mValidate )
 
75181
    {
 
75182
 
 
75183
        bool validationResult = _validateBegin__physics_model( attributes, attributeDataPtr, validationDataPtr );
 
75184
        if ( !validationResult ) return false;
 
75185
 
 
75186
    } // validation
 
75187
#endif
 
75188
 
 
75189
physics_model__AttributeData* attributeData = newData<physics_model__AttributeData>(attributeDataPtr);
 
75190
 
 
75191
const ParserChar** attributeArray = attributes.attributes;
 
75192
if ( attributeArray )
 
75193
{
 
75194
    while (true)
 
75195
    {
 
75196
        const ParserChar * attribute = *attributeArray;
 
75197
        if ( !attribute )
 
75198
            break;
 
75199
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
75200
        attributeArray++;
 
75201
        if ( !attributeArray )
 
75202
            return false;
 
75203
        const ParserChar* attributeValue = *attributeArray;
 
75204
        attributeArray++;
 
75205
 
 
75206
 
 
75207
    switch ( hash )
 
75208
    {
 
75209
    case HASH_ATTRIBUTE_ID:
 
75210
    {
 
75211
 
 
75212
attributeData->id = attributeValue;
 
75213
 
 
75214
    break;
 
75215
    }
 
75216
    case HASH_ATTRIBUTE_NAME:
 
75217
    {
 
75218
 
 
75219
attributeData->name = attributeValue;
 
75220
 
 
75221
    break;
 
75222
    }
 
75223
    default:
 
75224
    {
 
75225
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_PHYSICS_MODEL, attribute, attributeValue))
 
75226
            {return false;}
 
75227
    }
 
75228
    }
 
75229
    }
 
75230
}
 
75231
 
 
75232
 
 
75233
    return true;
 
75234
}
 
75235
 
 
75236
//---------------------------------------------------------------------
 
75237
bool ColladaParserAutoGen15Private::_preEnd__physics_model()
 
75238
{
 
75239
#ifdef GENERATEDSAXPARSER_VALIDATION
 
75240
    if ( mValidate )
 
75241
    {
 
75242
 
 
75243
        bool validationResult = _validateEnd__physics_model();
 
75244
        if ( !validationResult ) return false;
 
75245
 
 
75246
    } // validation
 
75247
#endif
 
75248
 
 
75249
    return true;
 
75250
}
 
75251
 
 
75252
//---------------------------------------------------------------------
 
75253
bool ColladaParserAutoGen15Private::_freeAttributes__physics_model( void* attributeData )
 
75254
{
 
75255
    physics_model__AttributeData* typedAttributeData = static_cast<physics_model__AttributeData*>(attributeData);
 
75256
 
 
75257
    typedAttributeData->~physics_model__AttributeData();
 
75258
 
 
75259
    return true;
 
75260
}
 
75261
 
 
75262
//---------------------------------------------------------------------
 
75263
const rigid_body__AttributeData rigid_body__AttributeData::DEFAULT = {0, 0, 0};
 
75264
 
 
75265
//---------------------------------------------------------------------
 
75266
bool ColladaParserAutoGen15Private::_data__rigid_body( const ParserChar* text, size_t textLength )
 
75267
{
 
75268
    return true;
 
75269
}
 
75270
 
 
75271
//---------------------------------------------------------------------
 
75272
bool ColladaParserAutoGen15Private::_preBegin__rigid_body( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
75273
{
 
75274
#ifdef GENERATEDSAXPARSER_VALIDATION
 
75275
    if ( mValidate )
 
75276
    {
 
75277
 
 
75278
        bool validationResult = _validateBegin__rigid_body( attributes, attributeDataPtr, validationDataPtr );
 
75279
        if ( !validationResult ) return false;
 
75280
 
 
75281
    } // validation
 
75282
#endif
 
75283
 
 
75284
rigid_body__AttributeData* attributeData = newData<rigid_body__AttributeData>(attributeDataPtr);
 
75285
 
 
75286
const ParserChar** attributeArray = attributes.attributes;
 
75287
if ( attributeArray )
 
75288
{
 
75289
    while (true)
 
75290
    {
 
75291
        const ParserChar * attribute = *attributeArray;
 
75292
        if ( !attribute )
 
75293
            break;
 
75294
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
75295
        attributeArray++;
 
75296
        if ( !attributeArray )
 
75297
            return false;
 
75298
        const ParserChar* attributeValue = *attributeArray;
 
75299
        attributeArray++;
 
75300
 
 
75301
 
 
75302
    switch ( hash )
 
75303
    {
 
75304
    case HASH_ATTRIBUTE_ID:
 
75305
    {
 
75306
 
 
75307
attributeData->id = attributeValue;
 
75308
 
 
75309
    break;
 
75310
    }
 
75311
    case HASH_ATTRIBUTE_SID:
 
75312
    {
 
75313
 
 
75314
attributeData->sid = attributeValue;
 
75315
#ifdef GENERATEDSAXPARSER_VALIDATION
 
75316
    if ( mValidate )
 
75317
    {
 
75318
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
75319
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
75320
    {
 
75321
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
75322
            simpleTypeValidationResult,
 
75323
            HASH_ELEMENT_RIGID_BODY,
 
75324
            HASH_ATTRIBUTE_SID,
 
75325
            attributeValue) )
 
75326
        {
 
75327
            return false;
 
75328
        }
 
75329
    }
 
75330
    } // validation
 
75331
#endif
 
75332
 
 
75333
    break;
 
75334
    }
 
75335
    case HASH_ATTRIBUTE_NAME:
 
75336
    {
 
75337
 
 
75338
attributeData->name = attributeValue;
 
75339
 
 
75340
    break;
 
75341
    }
 
75342
    default:
 
75343
    {
 
75344
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_RIGID_BODY, attribute, attributeValue))
 
75345
            {return false;}
 
75346
    }
 
75347
    }
 
75348
    }
 
75349
}
 
75350
if ( !attributeData->sid )
 
75351
{
 
75352
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_RIGID_BODY, HASH_ATTRIBUTE_SID, 0 ) )
 
75353
        return false;
 
75354
}
 
75355
 
 
75356
 
 
75357
    return true;
 
75358
}
 
75359
 
 
75360
//---------------------------------------------------------------------
 
75361
bool ColladaParserAutoGen15Private::_preEnd__rigid_body()
 
75362
{
 
75363
#ifdef GENERATEDSAXPARSER_VALIDATION
 
75364
    if ( mValidate )
 
75365
    {
 
75366
 
 
75367
        bool validationResult = _validateEnd__rigid_body();
 
75368
        if ( !validationResult ) return false;
 
75369
 
 
75370
    } // validation
 
75371
#endif
 
75372
 
 
75373
    return true;
 
75374
}
 
75375
 
 
75376
//---------------------------------------------------------------------
 
75377
bool ColladaParserAutoGen15Private::_freeAttributes__rigid_body( void* attributeData )
 
75378
{
 
75379
    rigid_body__AttributeData* typedAttributeData = static_cast<rigid_body__AttributeData*>(attributeData);
 
75380
 
 
75381
    typedAttributeData->~rigid_body__AttributeData();
 
75382
 
 
75383
    return true;
 
75384
}
 
75385
 
 
75386
//---------------------------------------------------------------------
 
75387
bool ColladaParserAutoGen15Private::_data__rigid_body_type____technique_common( const ParserChar* text, size_t textLength )
 
75388
{
 
75389
    return true;
 
75390
}
 
75391
 
 
75392
//---------------------------------------------------------------------
 
75393
bool ColladaParserAutoGen15Private::_preBegin__rigid_body_type____technique_common( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
75394
{
 
75395
#ifdef GENERATEDSAXPARSER_VALIDATION
 
75396
    if ( mValidate )
 
75397
    {
 
75398
 
 
75399
        bool validationResult = _validateBegin__rigid_body_type____technique_common( attributes, attributeDataPtr, validationDataPtr );
 
75400
        if ( !validationResult ) return false;
 
75401
 
 
75402
    } // validation
 
75403
#endif
 
75404
 
 
75405
    return true;
 
75406
}
 
75407
 
 
75408
//---------------------------------------------------------------------
 
75409
bool ColladaParserAutoGen15Private::_preEnd__rigid_body_type____technique_common()
 
75410
{
 
75411
#ifdef GENERATEDSAXPARSER_VALIDATION
 
75412
    if ( mValidate )
 
75413
    {
 
75414
 
 
75415
        bool validationResult = _validateEnd__rigid_body_type____technique_common();
 
75416
        if ( !validationResult ) return false;
 
75417
 
 
75418
    } // validation
 
75419
#endif
 
75420
 
 
75421
    return true;
 
75422
}
 
75423
 
 
75424
//---------------------------------------------------------------------
 
75425
bool ColladaParserAutoGen15Private::_freeAttributes__rigid_body_type____technique_common( void* attributeData )
 
75426
{
 
75427
    return true;
 
75428
}
 
75429
 
 
75430
//---------------------------------------------------------------------
 
75431
const rigid_body__technique_common__dynamic__AttributeData rigid_body__technique_common__dynamic__AttributeData::DEFAULT = {0};
 
75432
 
 
75433
//---------------------------------------------------------------------
 
75434
bool ColladaParserAutoGen15Private::_data__rigid_body__technique_common__dynamic( const ParserChar* text, size_t textLength )
 
75435
{
 
75436
if (!mLastIncompleteFragmentInCharacterData)
 
75437
{
 
75438
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
75439
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
75440
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
75441
}
 
75442
else
 
75443
{
 
75444
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
75445
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
75446
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
75447
        mLastIncompleteFragmentInCharacterData = tmp;
 
75448
    }
 
75449
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
75450
    mEndOfDataInCurrentObjectOnStack += textLength;
 
75451
}
 
75452
return true;
 
75453
}
 
75454
 
 
75455
//---------------------------------------------------------------------
 
75456
bool ColladaParserAutoGen15Private::_preBegin__rigid_body__technique_common__dynamic( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
75457
{
 
75458
#ifdef GENERATEDSAXPARSER_VALIDATION
 
75459
    if ( mValidate )
 
75460
    {
 
75461
 
 
75462
        bool validationResult = _validateBegin__rigid_body__technique_common__dynamic( attributes, attributeDataPtr, validationDataPtr );
 
75463
        if ( !validationResult ) return false;
 
75464
 
 
75465
    } // validation
 
75466
#endif
 
75467
 
 
75468
rigid_body__technique_common__dynamic__AttributeData* attributeData = newData<rigid_body__technique_common__dynamic__AttributeData>(attributeDataPtr);
 
75469
 
 
75470
const ParserChar** attributeArray = attributes.attributes;
 
75471
if ( attributeArray )
 
75472
{
 
75473
    while (true)
 
75474
    {
 
75475
        const ParserChar * attribute = *attributeArray;
 
75476
        if ( !attribute )
 
75477
            break;
 
75478
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
75479
        attributeArray++;
 
75480
        if ( !attributeArray )
 
75481
            return false;
 
75482
        const ParserChar* attributeValue = *attributeArray;
 
75483
        attributeArray++;
 
75484
 
 
75485
 
 
75486
    switch ( hash )
 
75487
    {
 
75488
    case HASH_ATTRIBUTE_SID:
 
75489
    {
 
75490
 
 
75491
attributeData->sid = attributeValue;
 
75492
#ifdef GENERATEDSAXPARSER_VALIDATION
 
75493
    if ( mValidate )
 
75494
    {
 
75495
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
75496
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
75497
    {
 
75498
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
75499
            simpleTypeValidationResult,
 
75500
            HASH_ELEMENT_DYNAMIC,
 
75501
            HASH_ATTRIBUTE_SID,
 
75502
            attributeValue) )
 
75503
        {
 
75504
            return false;
 
75505
        }
 
75506
    }
 
75507
    } // validation
 
75508
#endif
 
75509
 
 
75510
    break;
 
75511
    }
 
75512
    default:
 
75513
    {
 
75514
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_DYNAMIC, attribute, attributeValue))
 
75515
            {return false;}
 
75516
    }
 
75517
    }
 
75518
    }
 
75519
}
 
75520
 
 
75521
 
 
75522
    return true;
 
75523
}
 
75524
 
 
75525
//---------------------------------------------------------------------
 
75526
bool ColladaParserAutoGen15Private::_preEnd__rigid_body__technique_common__dynamic()
 
75527
{
 
75528
#ifdef GENERATEDSAXPARSER_VALIDATION
 
75529
    if ( mValidate )
 
75530
    {
 
75531
 
 
75532
        bool validationResult = _validateEnd__rigid_body__technique_common__dynamic();
 
75533
        if ( !validationResult ) return false;
 
75534
 
 
75535
    } // validation
 
75536
#endif
 
75537
 
 
75538
bool failed;
 
75539
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
75540
DISABLE_WARNING_UNUSED(ptrForErr)
 
75541
bool parameter = GeneratedSaxParser::Utils::toBool((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
75542
bool returnValue;
 
75543
if (!failed)
 
75544
{
 
75545
    returnValue = mImpl->data__rigid_body__technique_common__dynamic(parameter);
 
75546
}
 
75547
else
 
75548
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_DYNAMIC, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
75549
if (mLastIncompleteFragmentInCharacterData)
 
75550
    mStackMemoryManager.deleteObject();
 
75551
mLastIncompleteFragmentInCharacterData = 0;
 
75552
mEndOfDataInCurrentObjectOnStack = 0;
 
75553
return returnValue;
 
75554
}
 
75555
 
 
75556
//---------------------------------------------------------------------
 
75557
bool ColladaParserAutoGen15Private::_freeAttributes__rigid_body__technique_common__dynamic( void* attributeData )
 
75558
{
 
75559
    rigid_body__technique_common__dynamic__AttributeData* typedAttributeData = static_cast<rigid_body__technique_common__dynamic__AttributeData*>(attributeData);
 
75560
 
 
75561
    typedAttributeData->~rigid_body__technique_common__dynamic__AttributeData();
 
75562
 
 
75563
    return true;
 
75564
}
 
75565
 
 
75566
//---------------------------------------------------------------------
 
75567
const mass__AttributeData mass__AttributeData::DEFAULT = {0};
 
75568
 
 
75569
//---------------------------------------------------------------------
 
75570
bool ColladaParserAutoGen15Private::_data__mass( const ParserChar* text, size_t textLength )
 
75571
{
 
75572
if (!mLastIncompleteFragmentInCharacterData)
 
75573
{
 
75574
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
75575
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
75576
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
75577
}
 
75578
else
 
75579
{
 
75580
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
75581
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
75582
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
75583
        mLastIncompleteFragmentInCharacterData = tmp;
 
75584
    }
 
75585
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
75586
    mEndOfDataInCurrentObjectOnStack += textLength;
 
75587
}
 
75588
return true;
 
75589
}
 
75590
 
 
75591
//---------------------------------------------------------------------
 
75592
bool ColladaParserAutoGen15Private::_preBegin__mass( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
75593
{
 
75594
#ifdef GENERATEDSAXPARSER_VALIDATION
 
75595
    if ( mValidate )
 
75596
    {
 
75597
 
 
75598
        bool validationResult = _validateBegin__mass( attributes, attributeDataPtr, validationDataPtr );
 
75599
        if ( !validationResult ) return false;
 
75600
 
 
75601
    } // validation
 
75602
#endif
 
75603
 
 
75604
mass__AttributeData* attributeData = newData<mass__AttributeData>(attributeDataPtr);
 
75605
 
 
75606
const ParserChar** attributeArray = attributes.attributes;
 
75607
if ( attributeArray )
 
75608
{
 
75609
    while (true)
 
75610
    {
 
75611
        const ParserChar * attribute = *attributeArray;
 
75612
        if ( !attribute )
 
75613
            break;
 
75614
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
75615
        attributeArray++;
 
75616
        if ( !attributeArray )
 
75617
            return false;
 
75618
        const ParserChar* attributeValue = *attributeArray;
 
75619
        attributeArray++;
 
75620
 
 
75621
 
 
75622
    switch ( hash )
 
75623
    {
 
75624
    case HASH_ATTRIBUTE_SID:
 
75625
    {
 
75626
 
 
75627
attributeData->sid = attributeValue;
 
75628
#ifdef GENERATEDSAXPARSER_VALIDATION
 
75629
    if ( mValidate )
 
75630
    {
 
75631
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
75632
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
75633
    {
 
75634
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
75635
            simpleTypeValidationResult,
 
75636
            HASH_ELEMENT_MASS,
 
75637
            HASH_ATTRIBUTE_SID,
 
75638
            attributeValue) )
 
75639
        {
 
75640
            return false;
 
75641
        }
 
75642
    }
 
75643
    } // validation
 
75644
#endif
 
75645
 
 
75646
    break;
 
75647
    }
 
75648
    default:
 
75649
    {
 
75650
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_MASS, attribute, attributeValue))
 
75651
            {return false;}
 
75652
    }
 
75653
    }
 
75654
    }
 
75655
}
 
75656
 
 
75657
 
 
75658
    return true;
 
75659
}
 
75660
 
 
75661
//---------------------------------------------------------------------
 
75662
bool ColladaParserAutoGen15Private::_preEnd__mass()
 
75663
{
 
75664
#ifdef GENERATEDSAXPARSER_VALIDATION
 
75665
    if ( mValidate )
 
75666
    {
 
75667
 
 
75668
        bool validationResult = _validateEnd__mass();
 
75669
        if ( !validationResult ) return false;
 
75670
 
 
75671
    } // validation
 
75672
#endif
 
75673
 
 
75674
bool failed;
 
75675
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
75676
DISABLE_WARNING_UNUSED(ptrForErr)
 
75677
float parameter = GeneratedSaxParser::Utils::toFloat((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
75678
bool returnValue;
 
75679
if (!failed)
 
75680
{
 
75681
    returnValue = mImpl->data__mass(parameter);
 
75682
}
 
75683
else
 
75684
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_MASS, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
75685
if (mLastIncompleteFragmentInCharacterData)
 
75686
    mStackMemoryManager.deleteObject();
 
75687
mLastIncompleteFragmentInCharacterData = 0;
 
75688
mEndOfDataInCurrentObjectOnStack = 0;
 
75689
return returnValue;
 
75690
}
 
75691
 
 
75692
//---------------------------------------------------------------------
 
75693
bool ColladaParserAutoGen15Private::_freeAttributes__mass( void* attributeData )
 
75694
{
 
75695
    mass__AttributeData* typedAttributeData = static_cast<mass__AttributeData*>(attributeData);
 
75696
 
 
75697
    typedAttributeData->~mass__AttributeData();
 
75698
 
 
75699
    return true;
 
75700
}
 
75701
 
 
75702
//---------------------------------------------------------------------
 
75703
bool ColladaParserAutoGen15Private::_data__rigid_body__technique_common__mass_frame( const ParserChar* text, size_t textLength )
 
75704
{
 
75705
    return true;
 
75706
}
 
75707
 
 
75708
//---------------------------------------------------------------------
 
75709
bool ColladaParserAutoGen15Private::_preBegin__rigid_body__technique_common__mass_frame( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
75710
{
 
75711
#ifdef GENERATEDSAXPARSER_VALIDATION
 
75712
    if ( mValidate )
 
75713
    {
 
75714
 
 
75715
        bool validationResult = _validateBegin__rigid_body__technique_common__mass_frame( attributes, attributeDataPtr, validationDataPtr );
 
75716
        if ( !validationResult ) return false;
 
75717
 
 
75718
    } // validation
 
75719
#endif
 
75720
 
 
75721
    return true;
 
75722
}
 
75723
 
 
75724
//---------------------------------------------------------------------
 
75725
bool ColladaParserAutoGen15Private::_preEnd__rigid_body__technique_common__mass_frame()
 
75726
{
 
75727
#ifdef GENERATEDSAXPARSER_VALIDATION
 
75728
    if ( mValidate )
 
75729
    {
 
75730
 
 
75731
        bool validationResult = _validateEnd__rigid_body__technique_common__mass_frame();
 
75732
        if ( !validationResult ) return false;
 
75733
 
 
75734
    } // validation
 
75735
#endif
 
75736
 
 
75737
    return true;
 
75738
}
 
75739
 
 
75740
//---------------------------------------------------------------------
 
75741
bool ColladaParserAutoGen15Private::_freeAttributes__rigid_body__technique_common__mass_frame( void* attributeData )
 
75742
{
 
75743
    return true;
 
75744
}
 
75745
 
 
75746
//---------------------------------------------------------------------
 
75747
const inertia__AttributeData inertia__AttributeData::DEFAULT = {0};
 
75748
 
 
75749
//---------------------------------------------------------------------
 
75750
bool ColladaParserAutoGen15Private::_data__inertia( const ParserChar* text, size_t textLength )
 
75751
{
 
75752
#ifdef GENERATEDSAXPARSER_VALIDATION
 
75753
    if ( mValidate )
 
75754
    {
 
75755
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
75756
        DISABLE_WARNING_UNUSED(validationData)
 
75757
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__inertia, &validate__float3_type__stream, &validationData->validationWholeSize, 0);
 
75758
    }
 
75759
    else
 
75760
    {
 
75761
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__inertia);
 
75762
    }
 
75763
#else
 
75764
    {
 
75765
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__inertia);
 
75766
    } // validation
 
75767
#endif
 
75768
 
 
75769
}
 
75770
 
 
75771
//---------------------------------------------------------------------
 
75772
bool ColladaParserAutoGen15Private::_preBegin__inertia( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
75773
{
 
75774
#ifdef GENERATEDSAXPARSER_VALIDATION
 
75775
    if ( mValidate )
 
75776
    {
 
75777
 
 
75778
        bool validationResult = _validateBegin__inertia( attributes, attributeDataPtr, validationDataPtr );
 
75779
        if ( !validationResult ) return false;
 
75780
 
 
75781
    } // validation
 
75782
#endif
 
75783
 
 
75784
inertia__AttributeData* attributeData = newData<inertia__AttributeData>(attributeDataPtr);
 
75785
 
 
75786
const ParserChar** attributeArray = attributes.attributes;
 
75787
if ( attributeArray )
 
75788
{
 
75789
    while (true)
 
75790
    {
 
75791
        const ParserChar * attribute = *attributeArray;
 
75792
        if ( !attribute )
 
75793
            break;
 
75794
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
75795
        attributeArray++;
 
75796
        if ( !attributeArray )
 
75797
            return false;
 
75798
        const ParserChar* attributeValue = *attributeArray;
 
75799
        attributeArray++;
 
75800
 
 
75801
 
 
75802
    switch ( hash )
 
75803
    {
 
75804
    case HASH_ATTRIBUTE_SID:
 
75805
    {
 
75806
 
 
75807
attributeData->sid = attributeValue;
 
75808
#ifdef GENERATEDSAXPARSER_VALIDATION
 
75809
    if ( mValidate )
 
75810
    {
 
75811
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
75812
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
75813
    {
 
75814
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
75815
            simpleTypeValidationResult,
 
75816
            HASH_ELEMENT_INERTIA,
 
75817
            HASH_ATTRIBUTE_SID,
 
75818
            attributeValue) )
 
75819
        {
 
75820
            return false;
 
75821
        }
 
75822
    }
 
75823
    } // validation
 
75824
#endif
 
75825
 
 
75826
    break;
 
75827
    }
 
75828
    default:
 
75829
    {
 
75830
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_INERTIA, attribute, attributeValue))
 
75831
            {return false;}
 
75832
    }
 
75833
    }
 
75834
    }
 
75835
}
 
75836
 
 
75837
 
 
75838
    return true;
 
75839
}
 
75840
 
 
75841
//---------------------------------------------------------------------
 
75842
bool ColladaParserAutoGen15Private::_preEnd__inertia()
 
75843
{
 
75844
#ifdef GENERATEDSAXPARSER_VALIDATION
 
75845
    if ( mValidate )
 
75846
    {
 
75847
 
 
75848
        bool validationResult = _validateEnd__inertia();
 
75849
        if ( !validationResult ) return false;
 
75850
 
 
75851
    } // validation
 
75852
#endif
 
75853
 
 
75854
#ifdef GENERATEDSAXPARSER_VALIDATION
 
75855
    if ( mValidate )
 
75856
    {
 
75857
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
75858
        DISABLE_WARNING_UNUSED(validationData)
 
75859
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__inertia, &validate__float3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
75860
        ParserError::ErrorType simpleTypeValidationResult = validate__float3_type(0, (*(&validationData->validationWholeSize)));
 
75861
        mValidationDataStack.deleteObject();
 
75862
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
75863
        {
 
75864
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
75865
                simpleTypeValidationResult,
 
75866
                HASH_ELEMENT_INERTIA,
 
75867
                (ParserChar*)0, 0 ) )
 
75868
            {
 
75869
                return false;
 
75870
            }
 
75871
        }
 
75872
        return returnValue;
 
75873
    }
 
75874
    else
 
75875
    {
 
75876
return floatDataEnd( &ColladaParserAutoGen15::data__inertia );
 
75877
    }
 
75878
#else
 
75879
    {
 
75880
return floatDataEnd( &ColladaParserAutoGen15::data__inertia );
 
75881
    } // validation
 
75882
#endif
 
75883
 
 
75884
}
 
75885
 
 
75886
//---------------------------------------------------------------------
 
75887
bool ColladaParserAutoGen15Private::_freeAttributes__inertia( void* attributeData )
 
75888
{
 
75889
    inertia__AttributeData* typedAttributeData = static_cast<inertia__AttributeData*>(attributeData);
 
75890
 
 
75891
    typedAttributeData->~inertia__AttributeData();
 
75892
 
 
75893
    return true;
 
75894
}
 
75895
 
 
75896
//---------------------------------------------------------------------
 
75897
const instance_physics_material__AttributeData instance_physics_material__AttributeData::DEFAULT = {0, 0, 0, 0};
 
75898
 
 
75899
//---------------------------------------------------------------------
 
75900
bool ColladaParserAutoGen15Private::_data__instance_physics_material( const ParserChar* text, size_t textLength )
 
75901
{
 
75902
    return true;
 
75903
}
 
75904
 
 
75905
//---------------------------------------------------------------------
 
75906
bool ColladaParserAutoGen15Private::_preBegin__instance_physics_material( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
75907
{
 
75908
#ifdef GENERATEDSAXPARSER_VALIDATION
 
75909
    if ( mValidate )
 
75910
    {
 
75911
 
 
75912
        bool validationResult = _validateBegin__instance_physics_material( attributes, attributeDataPtr, validationDataPtr );
 
75913
        if ( !validationResult ) return false;
 
75914
 
 
75915
    } // validation
 
75916
#endif
 
75917
 
 
75918
instance_physics_material__AttributeData* attributeData = newData<instance_physics_material__AttributeData>(attributeDataPtr);
 
75919
 
 
75920
const ParserChar** attributeArray = attributes.attributes;
 
75921
if ( attributeArray )
 
75922
{
 
75923
    while (true)
 
75924
    {
 
75925
        const ParserChar * attribute = *attributeArray;
 
75926
        if ( !attribute )
 
75927
            break;
 
75928
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
75929
        attributeArray++;
 
75930
        if ( !attributeArray )
 
75931
            return false;
 
75932
        const ParserChar* attributeValue = *attributeArray;
 
75933
        attributeArray++;
 
75934
 
 
75935
 
 
75936
    switch ( hash )
 
75937
    {
 
75938
    case HASH_ATTRIBUTE_URL:
 
75939
    {
 
75940
bool failed;
 
75941
attributeData->url = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
75942
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
75943
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
75944
        HASH_ELEMENT_INSTANCE_PHYSICS_MATERIAL,
 
75945
        HASH_ATTRIBUTE_URL,
 
75946
        attributeValue))
 
75947
{
 
75948
    return false;
 
75949
}
 
75950
if ( !failed )
 
75951
    attributeData->present_attributes |= instance_physics_material__AttributeData::ATTRIBUTE_URL_PRESENT;
 
75952
 
 
75953
    break;
 
75954
    }
 
75955
    case HASH_ATTRIBUTE_SID:
 
75956
    {
 
75957
 
 
75958
attributeData->sid = attributeValue;
 
75959
#ifdef GENERATEDSAXPARSER_VALIDATION
 
75960
    if ( mValidate )
 
75961
    {
 
75962
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
75963
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
75964
    {
 
75965
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
75966
            simpleTypeValidationResult,
 
75967
            HASH_ELEMENT_INSTANCE_PHYSICS_MATERIAL,
 
75968
            HASH_ATTRIBUTE_SID,
 
75969
            attributeValue) )
 
75970
        {
 
75971
            return false;
 
75972
        }
 
75973
    }
 
75974
    } // validation
 
75975
#endif
 
75976
 
 
75977
    break;
 
75978
    }
 
75979
    case HASH_ATTRIBUTE_NAME:
 
75980
    {
 
75981
 
 
75982
attributeData->name = attributeValue;
 
75983
 
 
75984
    break;
 
75985
    }
 
75986
    default:
 
75987
    {
 
75988
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_INSTANCE_PHYSICS_MATERIAL, attribute, attributeValue))
 
75989
            {return false;}
 
75990
    }
 
75991
    }
 
75992
    }
 
75993
}
 
75994
if ((attributeData->present_attributes & instance_physics_material__AttributeData::ATTRIBUTE_URL_PRESENT) == 0)
 
75995
{
 
75996
    attributeData->url = COLLADABU::URI("");
 
75997
}
 
75998
if ( (attributeData->present_attributes & instance_physics_material__AttributeData::ATTRIBUTE_URL_PRESENT) == 0 )
 
75999
{
 
76000
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_INSTANCE_PHYSICS_MATERIAL, HASH_ATTRIBUTE_URL, 0 ) )
 
76001
        return false;
 
76002
}
 
76003
 
 
76004
 
 
76005
    return true;
 
76006
}
 
76007
 
 
76008
//---------------------------------------------------------------------
 
76009
bool ColladaParserAutoGen15Private::_preEnd__instance_physics_material()
 
76010
{
 
76011
#ifdef GENERATEDSAXPARSER_VALIDATION
 
76012
    if ( mValidate )
 
76013
    {
 
76014
 
 
76015
        bool validationResult = _validateEnd__instance_physics_material();
 
76016
        if ( !validationResult ) return false;
 
76017
 
 
76018
    } // validation
 
76019
#endif
 
76020
 
 
76021
    return true;
 
76022
}
 
76023
 
 
76024
//---------------------------------------------------------------------
 
76025
bool ColladaParserAutoGen15Private::_freeAttributes__instance_physics_material( void* attributeData )
 
76026
{
 
76027
    instance_physics_material__AttributeData* typedAttributeData = static_cast<instance_physics_material__AttributeData*>(attributeData);
 
76028
 
 
76029
    typedAttributeData->~instance_physics_material__AttributeData();
 
76030
 
 
76031
    return true;
 
76032
}
 
76033
 
 
76034
//---------------------------------------------------------------------
 
76035
bool ColladaParserAutoGen15Private::_data__rigid_body__technique_common__shape( const ParserChar* text, size_t textLength )
 
76036
{
 
76037
    return true;
 
76038
}
 
76039
 
 
76040
//---------------------------------------------------------------------
 
76041
bool ColladaParserAutoGen15Private::_preBegin__rigid_body__technique_common__shape( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
76042
{
 
76043
#ifdef GENERATEDSAXPARSER_VALIDATION
 
76044
    if ( mValidate )
 
76045
    {
 
76046
 
 
76047
        bool validationResult = _validateBegin__rigid_body__technique_common__shape( attributes, attributeDataPtr, validationDataPtr );
 
76048
        if ( !validationResult ) return false;
 
76049
 
 
76050
    } // validation
 
76051
#endif
 
76052
 
 
76053
    return true;
 
76054
}
 
76055
 
 
76056
//---------------------------------------------------------------------
 
76057
bool ColladaParserAutoGen15Private::_preEnd__rigid_body__technique_common__shape()
 
76058
{
 
76059
#ifdef GENERATEDSAXPARSER_VALIDATION
 
76060
    if ( mValidate )
 
76061
    {
 
76062
 
 
76063
        bool validationResult = _validateEnd__rigid_body__technique_common__shape();
 
76064
        if ( !validationResult ) return false;
 
76065
 
 
76066
    } // validation
 
76067
#endif
 
76068
 
 
76069
    return true;
 
76070
}
 
76071
 
 
76072
//---------------------------------------------------------------------
 
76073
bool ColladaParserAutoGen15Private::_freeAttributes__rigid_body__technique_common__shape( void* attributeData )
 
76074
{
 
76075
    return true;
 
76076
}
 
76077
 
 
76078
//---------------------------------------------------------------------
 
76079
const rigid_body__technique_common__shape__hollow__AttributeData rigid_body__technique_common__shape__hollow__AttributeData::DEFAULT = {0};
 
76080
 
 
76081
//---------------------------------------------------------------------
 
76082
bool ColladaParserAutoGen15Private::_data__rigid_body__technique_common__shape__hollow( const ParserChar* text, size_t textLength )
 
76083
{
 
76084
if (!mLastIncompleteFragmentInCharacterData)
 
76085
{
 
76086
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
76087
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
76088
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
76089
}
 
76090
else
 
76091
{
 
76092
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
76093
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
76094
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
76095
        mLastIncompleteFragmentInCharacterData = tmp;
 
76096
    }
 
76097
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
76098
    mEndOfDataInCurrentObjectOnStack += textLength;
 
76099
}
 
76100
return true;
 
76101
}
 
76102
 
 
76103
//---------------------------------------------------------------------
 
76104
bool ColladaParserAutoGen15Private::_preBegin__rigid_body__technique_common__shape__hollow( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
76105
{
 
76106
#ifdef GENERATEDSAXPARSER_VALIDATION
 
76107
    if ( mValidate )
 
76108
    {
 
76109
 
 
76110
        bool validationResult = _validateBegin__rigid_body__technique_common__shape__hollow( attributes, attributeDataPtr, validationDataPtr );
 
76111
        if ( !validationResult ) return false;
 
76112
 
 
76113
    } // validation
 
76114
#endif
 
76115
 
 
76116
rigid_body__technique_common__shape__hollow__AttributeData* attributeData = newData<rigid_body__technique_common__shape__hollow__AttributeData>(attributeDataPtr);
 
76117
 
 
76118
const ParserChar** attributeArray = attributes.attributes;
 
76119
if ( attributeArray )
 
76120
{
 
76121
    while (true)
 
76122
    {
 
76123
        const ParserChar * attribute = *attributeArray;
 
76124
        if ( !attribute )
 
76125
            break;
 
76126
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
76127
        attributeArray++;
 
76128
        if ( !attributeArray )
 
76129
            return false;
 
76130
        const ParserChar* attributeValue = *attributeArray;
 
76131
        attributeArray++;
 
76132
 
 
76133
 
 
76134
    switch ( hash )
 
76135
    {
 
76136
    case HASH_ATTRIBUTE_SID:
 
76137
    {
 
76138
 
 
76139
attributeData->sid = attributeValue;
 
76140
#ifdef GENERATEDSAXPARSER_VALIDATION
 
76141
    if ( mValidate )
 
76142
    {
 
76143
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
76144
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
76145
    {
 
76146
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
76147
            simpleTypeValidationResult,
 
76148
            HASH_ELEMENT_HOLLOW,
 
76149
            HASH_ATTRIBUTE_SID,
 
76150
            attributeValue) )
 
76151
        {
 
76152
            return false;
 
76153
        }
 
76154
    }
 
76155
    } // validation
 
76156
#endif
 
76157
 
 
76158
    break;
 
76159
    }
 
76160
    default:
 
76161
    {
 
76162
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_HOLLOW, attribute, attributeValue))
 
76163
            {return false;}
 
76164
    }
 
76165
    }
 
76166
    }
 
76167
}
 
76168
 
 
76169
 
 
76170
    return true;
 
76171
}
 
76172
 
 
76173
//---------------------------------------------------------------------
 
76174
bool ColladaParserAutoGen15Private::_preEnd__rigid_body__technique_common__shape__hollow()
 
76175
{
 
76176
#ifdef GENERATEDSAXPARSER_VALIDATION
 
76177
    if ( mValidate )
 
76178
    {
 
76179
 
 
76180
        bool validationResult = _validateEnd__rigid_body__technique_common__shape__hollow();
 
76181
        if ( !validationResult ) return false;
 
76182
 
 
76183
    } // validation
 
76184
#endif
 
76185
 
 
76186
bool failed;
 
76187
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
76188
DISABLE_WARNING_UNUSED(ptrForErr)
 
76189
bool parameter = GeneratedSaxParser::Utils::toBool((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
76190
bool returnValue;
 
76191
if (!failed)
 
76192
{
 
76193
    returnValue = mImpl->data__rigid_body__technique_common__shape__hollow(parameter);
 
76194
}
 
76195
else
 
76196
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_HOLLOW, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
76197
if (mLastIncompleteFragmentInCharacterData)
 
76198
    mStackMemoryManager.deleteObject();
 
76199
mLastIncompleteFragmentInCharacterData = 0;
 
76200
mEndOfDataInCurrentObjectOnStack = 0;
 
76201
return returnValue;
 
76202
}
 
76203
 
 
76204
//---------------------------------------------------------------------
 
76205
bool ColladaParserAutoGen15Private::_freeAttributes__rigid_body__technique_common__shape__hollow( void* attributeData )
 
76206
{
 
76207
    rigid_body__technique_common__shape__hollow__AttributeData* typedAttributeData = static_cast<rigid_body__technique_common__shape__hollow__AttributeData*>(attributeData);
 
76208
 
 
76209
    typedAttributeData->~rigid_body__technique_common__shape__hollow__AttributeData();
 
76210
 
 
76211
    return true;
 
76212
}
 
76213
 
 
76214
//---------------------------------------------------------------------
 
76215
const density__AttributeData density__AttributeData::DEFAULT = {0};
 
76216
 
 
76217
//---------------------------------------------------------------------
 
76218
bool ColladaParserAutoGen15Private::_data__density( const ParserChar* text, size_t textLength )
 
76219
{
 
76220
if (!mLastIncompleteFragmentInCharacterData)
 
76221
{
 
76222
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
76223
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
76224
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
76225
}
 
76226
else
 
76227
{
 
76228
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
76229
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
76230
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
76231
        mLastIncompleteFragmentInCharacterData = tmp;
 
76232
    }
 
76233
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
76234
    mEndOfDataInCurrentObjectOnStack += textLength;
 
76235
}
 
76236
return true;
 
76237
}
 
76238
 
 
76239
//---------------------------------------------------------------------
 
76240
bool ColladaParserAutoGen15Private::_preBegin__density( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
76241
{
 
76242
#ifdef GENERATEDSAXPARSER_VALIDATION
 
76243
    if ( mValidate )
 
76244
    {
 
76245
 
 
76246
        bool validationResult = _validateBegin__density( attributes, attributeDataPtr, validationDataPtr );
 
76247
        if ( !validationResult ) return false;
 
76248
 
 
76249
    } // validation
 
76250
#endif
 
76251
 
 
76252
density__AttributeData* attributeData = newData<density__AttributeData>(attributeDataPtr);
 
76253
 
 
76254
const ParserChar** attributeArray = attributes.attributes;
 
76255
if ( attributeArray )
 
76256
{
 
76257
    while (true)
 
76258
    {
 
76259
        const ParserChar * attribute = *attributeArray;
 
76260
        if ( !attribute )
 
76261
            break;
 
76262
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
76263
        attributeArray++;
 
76264
        if ( !attributeArray )
 
76265
            return false;
 
76266
        const ParserChar* attributeValue = *attributeArray;
 
76267
        attributeArray++;
 
76268
 
 
76269
 
 
76270
    switch ( hash )
 
76271
    {
 
76272
    case HASH_ATTRIBUTE_SID:
 
76273
    {
 
76274
 
 
76275
attributeData->sid = attributeValue;
 
76276
#ifdef GENERATEDSAXPARSER_VALIDATION
 
76277
    if ( mValidate )
 
76278
    {
 
76279
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
76280
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
76281
    {
 
76282
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
76283
            simpleTypeValidationResult,
 
76284
            HASH_ELEMENT_DENSITY,
 
76285
            HASH_ATTRIBUTE_SID,
 
76286
            attributeValue) )
 
76287
        {
 
76288
            return false;
 
76289
        }
 
76290
    }
 
76291
    } // validation
 
76292
#endif
 
76293
 
 
76294
    break;
 
76295
    }
 
76296
    default:
 
76297
    {
 
76298
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_DENSITY, attribute, attributeValue))
 
76299
            {return false;}
 
76300
    }
 
76301
    }
 
76302
    }
 
76303
}
 
76304
 
 
76305
 
 
76306
    return true;
 
76307
}
 
76308
 
 
76309
//---------------------------------------------------------------------
 
76310
bool ColladaParserAutoGen15Private::_preEnd__density()
 
76311
{
 
76312
#ifdef GENERATEDSAXPARSER_VALIDATION
 
76313
    if ( mValidate )
 
76314
    {
 
76315
 
 
76316
        bool validationResult = _validateEnd__density();
 
76317
        if ( !validationResult ) return false;
 
76318
 
 
76319
    } // validation
 
76320
#endif
 
76321
 
 
76322
bool failed;
 
76323
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
76324
DISABLE_WARNING_UNUSED(ptrForErr)
 
76325
float parameter = GeneratedSaxParser::Utils::toFloat((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
76326
bool returnValue;
 
76327
if (!failed)
 
76328
{
 
76329
    returnValue = mImpl->data__density(parameter);
 
76330
}
 
76331
else
 
76332
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_DENSITY, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
76333
if (mLastIncompleteFragmentInCharacterData)
 
76334
    mStackMemoryManager.deleteObject();
 
76335
mLastIncompleteFragmentInCharacterData = 0;
 
76336
mEndOfDataInCurrentObjectOnStack = 0;
 
76337
return returnValue;
 
76338
}
 
76339
 
 
76340
//---------------------------------------------------------------------
 
76341
bool ColladaParserAutoGen15Private::_freeAttributes__density( void* attributeData )
 
76342
{
 
76343
    density__AttributeData* typedAttributeData = static_cast<density__AttributeData*>(attributeData);
 
76344
 
 
76345
    typedAttributeData->~density__AttributeData();
 
76346
 
 
76347
    return true;
 
76348
}
 
76349
 
 
76350
//---------------------------------------------------------------------
 
76351
bool ColladaParserAutoGen15Private::_data__box( const ParserChar* text, size_t textLength )
 
76352
{
 
76353
    return true;
 
76354
}
 
76355
 
 
76356
//---------------------------------------------------------------------
 
76357
bool ColladaParserAutoGen15Private::_preBegin__box( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
76358
{
 
76359
#ifdef GENERATEDSAXPARSER_VALIDATION
 
76360
    if ( mValidate )
 
76361
    {
 
76362
 
 
76363
        bool validationResult = _validateBegin__box( attributes, attributeDataPtr, validationDataPtr );
 
76364
        if ( !validationResult ) return false;
 
76365
 
 
76366
    } // validation
 
76367
#endif
 
76368
 
 
76369
    return true;
 
76370
}
 
76371
 
 
76372
//---------------------------------------------------------------------
 
76373
bool ColladaParserAutoGen15Private::_preEnd__box()
 
76374
{
 
76375
#ifdef GENERATEDSAXPARSER_VALIDATION
 
76376
    if ( mValidate )
 
76377
    {
 
76378
 
 
76379
        bool validationResult = _validateEnd__box();
 
76380
        if ( !validationResult ) return false;
 
76381
 
 
76382
    } // validation
 
76383
#endif
 
76384
 
 
76385
    return true;
 
76386
}
 
76387
 
 
76388
//---------------------------------------------------------------------
 
76389
bool ColladaParserAutoGen15Private::_freeAttributes__box( void* attributeData )
 
76390
{
 
76391
    return true;
 
76392
}
 
76393
 
 
76394
//---------------------------------------------------------------------
 
76395
bool ColladaParserAutoGen15Private::_data__half_extents( const ParserChar* text, size_t textLength )
 
76396
{
 
76397
#ifdef GENERATEDSAXPARSER_VALIDATION
 
76398
    if ( mValidate )
 
76399
    {
 
76400
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
76401
        DISABLE_WARNING_UNUSED(validationData)
 
76402
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half_extents, &validate__float3_type__stream, &validationData->validationWholeSize, 0);
 
76403
    }
 
76404
    else
 
76405
    {
 
76406
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half_extents);
 
76407
    }
 
76408
#else
 
76409
    {
 
76410
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__half_extents);
 
76411
    } // validation
 
76412
#endif
 
76413
 
 
76414
}
 
76415
 
 
76416
//---------------------------------------------------------------------
 
76417
bool ColladaParserAutoGen15Private::_preBegin__half_extents( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
76418
{
 
76419
#ifdef GENERATEDSAXPARSER_VALIDATION
 
76420
    if ( mValidate )
 
76421
    {
 
76422
 
 
76423
        bool validationResult = _validateBegin__half_extents( attributes, attributeDataPtr, validationDataPtr );
 
76424
        if ( !validationResult ) return false;
 
76425
 
 
76426
    } // validation
 
76427
#endif
 
76428
 
 
76429
    return true;
 
76430
}
 
76431
 
 
76432
//---------------------------------------------------------------------
 
76433
bool ColladaParserAutoGen15Private::_preEnd__half_extents()
 
76434
{
 
76435
#ifdef GENERATEDSAXPARSER_VALIDATION
 
76436
    if ( mValidate )
 
76437
    {
 
76438
 
 
76439
        bool validationResult = _validateEnd__half_extents();
 
76440
        if ( !validationResult ) return false;
 
76441
 
 
76442
    } // validation
 
76443
#endif
 
76444
 
 
76445
#ifdef GENERATEDSAXPARSER_VALIDATION
 
76446
    if ( mValidate )
 
76447
    {
 
76448
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
76449
        DISABLE_WARNING_UNUSED(validationData)
 
76450
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__half_extents, &validate__float3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
76451
        ParserError::ErrorType simpleTypeValidationResult = validate__float3_type(0, (*(&validationData->validationWholeSize)));
 
76452
        mValidationDataStack.deleteObject();
 
76453
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
76454
        {
 
76455
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
76456
                simpleTypeValidationResult,
 
76457
                HASH_ELEMENT_HALF_EXTENTS,
 
76458
                (ParserChar*)0, 0 ) )
 
76459
            {
 
76460
                return false;
 
76461
            }
 
76462
        }
 
76463
        return returnValue;
 
76464
    }
 
76465
    else
 
76466
    {
 
76467
return floatDataEnd( &ColladaParserAutoGen15::data__half_extents );
 
76468
    }
 
76469
#else
 
76470
    {
 
76471
return floatDataEnd( &ColladaParserAutoGen15::data__half_extents );
 
76472
    } // validation
 
76473
#endif
 
76474
 
 
76475
}
 
76476
 
 
76477
//---------------------------------------------------------------------
 
76478
bool ColladaParserAutoGen15Private::_freeAttributes__half_extents( void* attributeData )
 
76479
{
 
76480
    return true;
 
76481
}
 
76482
 
 
76483
//---------------------------------------------------------------------
 
76484
bool ColladaParserAutoGen15Private::_data__cylinder____cylinder_type( const ParserChar* text, size_t textLength )
 
76485
{
 
76486
    return true;
 
76487
}
 
76488
 
 
76489
//---------------------------------------------------------------------
 
76490
bool ColladaParserAutoGen15Private::_preBegin__cylinder____cylinder_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
76491
{
 
76492
#ifdef GENERATEDSAXPARSER_VALIDATION
 
76493
    if ( mValidate )
 
76494
    {
 
76495
 
 
76496
        bool validationResult = _validateBegin__cylinder____cylinder_type( attributes, attributeDataPtr, validationDataPtr );
 
76497
        if ( !validationResult ) return false;
 
76498
 
 
76499
    } // validation
 
76500
#endif
 
76501
 
 
76502
    return true;
 
76503
}
 
76504
 
 
76505
//---------------------------------------------------------------------
 
76506
bool ColladaParserAutoGen15Private::_preEnd__cylinder____cylinder_type()
 
76507
{
 
76508
#ifdef GENERATEDSAXPARSER_VALIDATION
 
76509
    if ( mValidate )
 
76510
    {
 
76511
 
 
76512
        bool validationResult = _validateEnd__cylinder____cylinder_type();
 
76513
        if ( !validationResult ) return false;
 
76514
 
 
76515
    } // validation
 
76516
#endif
 
76517
 
 
76518
    return true;
 
76519
}
 
76520
 
 
76521
//---------------------------------------------------------------------
 
76522
bool ColladaParserAutoGen15Private::_freeAttributes__cylinder____cylinder_type( void* attributeData )
 
76523
{
 
76524
    return true;
 
76525
}
 
76526
 
 
76527
//---------------------------------------------------------------------
 
76528
bool ColladaParserAutoGen15Private::_data__height( const ParserChar* text, size_t textLength )
 
76529
{
 
76530
if (!mLastIncompleteFragmentInCharacterData)
 
76531
{
 
76532
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
76533
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
76534
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
76535
}
 
76536
else
 
76537
{
 
76538
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
76539
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
76540
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
76541
        mLastIncompleteFragmentInCharacterData = tmp;
 
76542
    }
 
76543
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
76544
    mEndOfDataInCurrentObjectOnStack += textLength;
 
76545
}
 
76546
return true;
 
76547
}
 
76548
 
 
76549
//---------------------------------------------------------------------
 
76550
bool ColladaParserAutoGen15Private::_preBegin__height( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
76551
{
 
76552
#ifdef GENERATEDSAXPARSER_VALIDATION
 
76553
    if ( mValidate )
 
76554
    {
 
76555
 
 
76556
        bool validationResult = _validateBegin__height( attributes, attributeDataPtr, validationDataPtr );
 
76557
        if ( !validationResult ) return false;
 
76558
 
 
76559
    } // validation
 
76560
#endif
 
76561
 
 
76562
    return true;
 
76563
}
 
76564
 
 
76565
//---------------------------------------------------------------------
 
76566
bool ColladaParserAutoGen15Private::_preEnd__height()
 
76567
{
 
76568
#ifdef GENERATEDSAXPARSER_VALIDATION
 
76569
    if ( mValidate )
 
76570
    {
 
76571
 
 
76572
        bool validationResult = _validateEnd__height();
 
76573
        if ( !validationResult ) return false;
 
76574
 
 
76575
    } // validation
 
76576
#endif
 
76577
 
 
76578
bool failed;
 
76579
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
76580
DISABLE_WARNING_UNUSED(ptrForErr)
 
76581
float parameter = GeneratedSaxParser::Utils::toFloat((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
76582
bool returnValue;
 
76583
if (!failed)
 
76584
{
 
76585
    returnValue = mImpl->data__height(parameter);
 
76586
}
 
76587
else
 
76588
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_HEIGHT, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
76589
if (mLastIncompleteFragmentInCharacterData)
 
76590
    mStackMemoryManager.deleteObject();
 
76591
mLastIncompleteFragmentInCharacterData = 0;
 
76592
mEndOfDataInCurrentObjectOnStack = 0;
 
76593
return returnValue;
 
76594
}
 
76595
 
 
76596
//---------------------------------------------------------------------
 
76597
bool ColladaParserAutoGen15Private::_freeAttributes__height( void* attributeData )
 
76598
{
 
76599
    return true;
 
76600
}
 
76601
 
 
76602
//---------------------------------------------------------------------
 
76603
bool ColladaParserAutoGen15Private::_data__capsule( const ParserChar* text, size_t textLength )
 
76604
{
 
76605
    return true;
 
76606
}
 
76607
 
 
76608
//---------------------------------------------------------------------
 
76609
bool ColladaParserAutoGen15Private::_preBegin__capsule( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
76610
{
 
76611
#ifdef GENERATEDSAXPARSER_VALIDATION
 
76612
    if ( mValidate )
 
76613
    {
 
76614
 
 
76615
        bool validationResult = _validateBegin__capsule( attributes, attributeDataPtr, validationDataPtr );
 
76616
        if ( !validationResult ) return false;
 
76617
 
 
76618
    } // validation
 
76619
#endif
 
76620
 
 
76621
    return true;
 
76622
}
 
76623
 
 
76624
//---------------------------------------------------------------------
 
76625
bool ColladaParserAutoGen15Private::_preEnd__capsule()
 
76626
{
 
76627
#ifdef GENERATEDSAXPARSER_VALIDATION
 
76628
    if ( mValidate )
 
76629
    {
 
76630
 
 
76631
        bool validationResult = _validateEnd__capsule();
 
76632
        if ( !validationResult ) return false;
 
76633
 
 
76634
    } // validation
 
76635
#endif
 
76636
 
 
76637
    return true;
 
76638
}
 
76639
 
 
76640
//---------------------------------------------------------------------
 
76641
bool ColladaParserAutoGen15Private::_freeAttributes__capsule( void* attributeData )
 
76642
{
 
76643
    return true;
 
76644
}
 
76645
 
 
76646
//---------------------------------------------------------------------
 
76647
bool ColladaParserAutoGen15Private::_data__radius____float3_type( const ParserChar* text, size_t textLength )
 
76648
{
 
76649
#ifdef GENERATEDSAXPARSER_VALIDATION
 
76650
    if ( mValidate )
 
76651
    {
 
76652
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
76653
        DISABLE_WARNING_UNUSED(validationData)
 
76654
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__radius____float3_type, &validate__float3_type__stream, &validationData->validationWholeSize, 0);
 
76655
    }
 
76656
    else
 
76657
    {
 
76658
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__radius____float3_type);
 
76659
    }
 
76660
#else
 
76661
    {
 
76662
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__radius____float3_type);
 
76663
    } // validation
 
76664
#endif
 
76665
 
 
76666
}
 
76667
 
 
76668
//---------------------------------------------------------------------
 
76669
bool ColladaParserAutoGen15Private::_preBegin__radius____float3_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
76670
{
 
76671
#ifdef GENERATEDSAXPARSER_VALIDATION
 
76672
    if ( mValidate )
 
76673
    {
 
76674
 
 
76675
        bool validationResult = _validateBegin__radius____float3_type( attributes, attributeDataPtr, validationDataPtr );
 
76676
        if ( !validationResult ) return false;
 
76677
 
 
76678
    } // validation
 
76679
#endif
 
76680
 
 
76681
    return true;
 
76682
}
 
76683
 
 
76684
//---------------------------------------------------------------------
 
76685
bool ColladaParserAutoGen15Private::_preEnd__radius____float3_type()
 
76686
{
 
76687
#ifdef GENERATEDSAXPARSER_VALIDATION
 
76688
    if ( mValidate )
 
76689
    {
 
76690
 
 
76691
        bool validationResult = _validateEnd__radius____float3_type();
 
76692
        if ( !validationResult ) return false;
 
76693
 
 
76694
    } // validation
 
76695
#endif
 
76696
 
 
76697
#ifdef GENERATEDSAXPARSER_VALIDATION
 
76698
    if ( mValidate )
 
76699
    {
 
76700
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
76701
        DISABLE_WARNING_UNUSED(validationData)
 
76702
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__radius____float3_type, &validate__float3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
76703
        ParserError::ErrorType simpleTypeValidationResult = validate__float3_type(0, (*(&validationData->validationWholeSize)));
 
76704
        mValidationDataStack.deleteObject();
 
76705
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
76706
        {
 
76707
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
76708
                simpleTypeValidationResult,
 
76709
                HASH_ELEMENT_RADIUS,
 
76710
                (ParserChar*)0, 0 ) )
 
76711
            {
 
76712
                return false;
 
76713
            }
 
76714
        }
 
76715
        return returnValue;
 
76716
    }
 
76717
    else
 
76718
    {
 
76719
return floatDataEnd( &ColladaParserAutoGen15::data__radius____float3_type );
 
76720
    }
 
76721
#else
 
76722
    {
 
76723
return floatDataEnd( &ColladaParserAutoGen15::data__radius____float3_type );
 
76724
    } // validation
 
76725
#endif
 
76726
 
 
76727
}
 
76728
 
 
76729
//---------------------------------------------------------------------
 
76730
bool ColladaParserAutoGen15Private::_freeAttributes__radius____float3_type( void* attributeData )
 
76731
{
 
76732
    return true;
 
76733
}
 
76734
 
 
76735
//---------------------------------------------------------------------
 
76736
const rigid_constraint__AttributeData rigid_constraint__AttributeData::DEFAULT = {0, 0};
 
76737
 
 
76738
//---------------------------------------------------------------------
 
76739
bool ColladaParserAutoGen15Private::_data__rigid_constraint( const ParserChar* text, size_t textLength )
 
76740
{
 
76741
    return true;
 
76742
}
 
76743
 
 
76744
//---------------------------------------------------------------------
 
76745
bool ColladaParserAutoGen15Private::_preBegin__rigid_constraint( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
76746
{
 
76747
#ifdef GENERATEDSAXPARSER_VALIDATION
 
76748
    if ( mValidate )
 
76749
    {
 
76750
 
 
76751
        bool validationResult = _validateBegin__rigid_constraint( attributes, attributeDataPtr, validationDataPtr );
 
76752
        if ( !validationResult ) return false;
 
76753
 
 
76754
    } // validation
 
76755
#endif
 
76756
 
 
76757
rigid_constraint__AttributeData* attributeData = newData<rigid_constraint__AttributeData>(attributeDataPtr);
 
76758
 
 
76759
const ParserChar** attributeArray = attributes.attributes;
 
76760
if ( attributeArray )
 
76761
{
 
76762
    while (true)
 
76763
    {
 
76764
        const ParserChar * attribute = *attributeArray;
 
76765
        if ( !attribute )
 
76766
            break;
 
76767
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
76768
        attributeArray++;
 
76769
        if ( !attributeArray )
 
76770
            return false;
 
76771
        const ParserChar* attributeValue = *attributeArray;
 
76772
        attributeArray++;
 
76773
 
 
76774
 
 
76775
    switch ( hash )
 
76776
    {
 
76777
    case HASH_ATTRIBUTE_SID:
 
76778
    {
 
76779
 
 
76780
attributeData->sid = attributeValue;
 
76781
#ifdef GENERATEDSAXPARSER_VALIDATION
 
76782
    if ( mValidate )
 
76783
    {
 
76784
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
76785
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
76786
    {
 
76787
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
76788
            simpleTypeValidationResult,
 
76789
            HASH_ELEMENT_RIGID_CONSTRAINT,
 
76790
            HASH_ATTRIBUTE_SID,
 
76791
            attributeValue) )
 
76792
        {
 
76793
            return false;
 
76794
        }
 
76795
    }
 
76796
    } // validation
 
76797
#endif
 
76798
 
 
76799
    break;
 
76800
    }
 
76801
    case HASH_ATTRIBUTE_NAME:
 
76802
    {
 
76803
 
 
76804
attributeData->name = attributeValue;
 
76805
 
 
76806
    break;
 
76807
    }
 
76808
    default:
 
76809
    {
 
76810
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_RIGID_CONSTRAINT, attribute, attributeValue))
 
76811
            {return false;}
 
76812
    }
 
76813
    }
 
76814
    }
 
76815
}
 
76816
if ( !attributeData->sid )
 
76817
{
 
76818
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_RIGID_CONSTRAINT, HASH_ATTRIBUTE_SID, 0 ) )
 
76819
        return false;
 
76820
}
 
76821
 
 
76822
 
 
76823
    return true;
 
76824
}
 
76825
 
 
76826
//---------------------------------------------------------------------
 
76827
bool ColladaParserAutoGen15Private::_preEnd__rigid_constraint()
 
76828
{
 
76829
#ifdef GENERATEDSAXPARSER_VALIDATION
 
76830
    if ( mValidate )
 
76831
    {
 
76832
 
 
76833
        bool validationResult = _validateEnd__rigid_constraint();
 
76834
        if ( !validationResult ) return false;
 
76835
 
 
76836
    } // validation
 
76837
#endif
 
76838
 
 
76839
    return true;
 
76840
}
 
76841
 
 
76842
//---------------------------------------------------------------------
 
76843
bool ColladaParserAutoGen15Private::_freeAttributes__rigid_constraint( void* attributeData )
 
76844
{
 
76845
    rigid_constraint__AttributeData* typedAttributeData = static_cast<rigid_constraint__AttributeData*>(attributeData);
 
76846
 
 
76847
    typedAttributeData->~rigid_constraint__AttributeData();
 
76848
 
 
76849
    return true;
 
76850
}
 
76851
 
 
76852
//---------------------------------------------------------------------
 
76853
const ref_attachment__AttributeData ref_attachment__AttributeData::DEFAULT = {0, 0};
 
76854
 
 
76855
//---------------------------------------------------------------------
 
76856
bool ColladaParserAutoGen15Private::_data__ref_attachment( const ParserChar* text, size_t textLength )
 
76857
{
 
76858
    return true;
 
76859
}
 
76860
 
 
76861
//---------------------------------------------------------------------
 
76862
bool ColladaParserAutoGen15Private::_preBegin__ref_attachment( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
76863
{
 
76864
#ifdef GENERATEDSAXPARSER_VALIDATION
 
76865
    if ( mValidate )
 
76866
    {
 
76867
 
 
76868
        bool validationResult = _validateBegin__ref_attachment( attributes, attributeDataPtr, validationDataPtr );
 
76869
        if ( !validationResult ) return false;
 
76870
 
 
76871
    } // validation
 
76872
#endif
 
76873
 
 
76874
ref_attachment__AttributeData* attributeData = newData<ref_attachment__AttributeData>(attributeDataPtr);
 
76875
 
 
76876
const ParserChar** attributeArray = attributes.attributes;
 
76877
if ( attributeArray )
 
76878
{
 
76879
    while (true)
 
76880
    {
 
76881
        const ParserChar * attribute = *attributeArray;
 
76882
        if ( !attribute )
 
76883
            break;
 
76884
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
76885
        attributeArray++;
 
76886
        if ( !attributeArray )
 
76887
            return false;
 
76888
        const ParserChar* attributeValue = *attributeArray;
 
76889
        attributeArray++;
 
76890
 
 
76891
 
 
76892
    switch ( hash )
 
76893
    {
 
76894
    case HASH_ATTRIBUTE_RIGID_BODY:
 
76895
    {
 
76896
bool failed;
 
76897
attributeData->rigid_body = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
76898
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
76899
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
76900
        HASH_ELEMENT_REF_ATTACHMENT,
 
76901
        HASH_ATTRIBUTE_RIGID_BODY,
 
76902
        attributeValue))
 
76903
{
 
76904
    return false;
 
76905
}
 
76906
if ( !failed )
 
76907
    attributeData->present_attributes |= ref_attachment__AttributeData::ATTRIBUTE_RIGID_BODY_PRESENT;
 
76908
 
 
76909
    break;
 
76910
    }
 
76911
    default:
 
76912
    {
 
76913
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_REF_ATTACHMENT, attribute, attributeValue))
 
76914
            {return false;}
 
76915
    }
 
76916
    }
 
76917
    }
 
76918
}
 
76919
if ((attributeData->present_attributes & ref_attachment__AttributeData::ATTRIBUTE_RIGID_BODY_PRESENT) == 0)
 
76920
{
 
76921
    attributeData->rigid_body = COLLADABU::URI("");
 
76922
}
 
76923
 
 
76924
 
 
76925
    return true;
 
76926
}
 
76927
 
 
76928
//---------------------------------------------------------------------
 
76929
bool ColladaParserAutoGen15Private::_preEnd__ref_attachment()
 
76930
{
 
76931
#ifdef GENERATEDSAXPARSER_VALIDATION
 
76932
    if ( mValidate )
 
76933
    {
 
76934
 
 
76935
        bool validationResult = _validateEnd__ref_attachment();
 
76936
        if ( !validationResult ) return false;
 
76937
 
 
76938
    } // validation
 
76939
#endif
 
76940
 
 
76941
    return true;
 
76942
}
 
76943
 
 
76944
//---------------------------------------------------------------------
 
76945
bool ColladaParserAutoGen15Private::_freeAttributes__ref_attachment( void* attributeData )
 
76946
{
 
76947
    ref_attachment__AttributeData* typedAttributeData = static_cast<ref_attachment__AttributeData*>(attributeData);
 
76948
 
 
76949
    typedAttributeData->~ref_attachment__AttributeData();
 
76950
 
 
76951
    return true;
 
76952
}
 
76953
 
 
76954
//---------------------------------------------------------------------
 
76955
const attachment__AttributeData attachment__AttributeData::DEFAULT = {0, 0};
 
76956
 
 
76957
//---------------------------------------------------------------------
 
76958
bool ColladaParserAutoGen15Private::_data__attachment( const ParserChar* text, size_t textLength )
 
76959
{
 
76960
    return true;
 
76961
}
 
76962
 
 
76963
//---------------------------------------------------------------------
 
76964
bool ColladaParserAutoGen15Private::_preBegin__attachment( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
76965
{
 
76966
#ifdef GENERATEDSAXPARSER_VALIDATION
 
76967
    if ( mValidate )
 
76968
    {
 
76969
 
 
76970
        bool validationResult = _validateBegin__attachment( attributes, attributeDataPtr, validationDataPtr );
 
76971
        if ( !validationResult ) return false;
 
76972
 
 
76973
    } // validation
 
76974
#endif
 
76975
 
 
76976
attachment__AttributeData* attributeData = newData<attachment__AttributeData>(attributeDataPtr);
 
76977
 
 
76978
const ParserChar** attributeArray = attributes.attributes;
 
76979
if ( attributeArray )
 
76980
{
 
76981
    while (true)
 
76982
    {
 
76983
        const ParserChar * attribute = *attributeArray;
 
76984
        if ( !attribute )
 
76985
            break;
 
76986
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
76987
        attributeArray++;
 
76988
        if ( !attributeArray )
 
76989
            return false;
 
76990
        const ParserChar* attributeValue = *attributeArray;
 
76991
        attributeArray++;
 
76992
 
 
76993
 
 
76994
    switch ( hash )
 
76995
    {
 
76996
    case HASH_ATTRIBUTE_RIGID_BODY:
 
76997
    {
 
76998
bool failed;
 
76999
attributeData->rigid_body = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
77000
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
77001
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
77002
        HASH_ELEMENT_ATTACHMENT,
 
77003
        HASH_ATTRIBUTE_RIGID_BODY,
 
77004
        attributeValue))
 
77005
{
 
77006
    return false;
 
77007
}
 
77008
if ( !failed )
 
77009
    attributeData->present_attributes |= attachment__AttributeData::ATTRIBUTE_RIGID_BODY_PRESENT;
 
77010
 
 
77011
    break;
 
77012
    }
 
77013
    default:
 
77014
    {
 
77015
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_ATTACHMENT, attribute, attributeValue))
 
77016
            {return false;}
 
77017
    }
 
77018
    }
 
77019
    }
 
77020
}
 
77021
if ((attributeData->present_attributes & attachment__AttributeData::ATTRIBUTE_RIGID_BODY_PRESENT) == 0)
 
77022
{
 
77023
    attributeData->rigid_body = COLLADABU::URI("");
 
77024
}
 
77025
 
 
77026
 
 
77027
    return true;
 
77028
}
 
77029
 
 
77030
//---------------------------------------------------------------------
 
77031
bool ColladaParserAutoGen15Private::_preEnd__attachment()
 
77032
{
 
77033
#ifdef GENERATEDSAXPARSER_VALIDATION
 
77034
    if ( mValidate )
 
77035
    {
 
77036
 
 
77037
        bool validationResult = _validateEnd__attachment();
 
77038
        if ( !validationResult ) return false;
 
77039
 
 
77040
    } // validation
 
77041
#endif
 
77042
 
 
77043
    return true;
 
77044
}
 
77045
 
 
77046
//---------------------------------------------------------------------
 
77047
bool ColladaParserAutoGen15Private::_freeAttributes__attachment( void* attributeData )
 
77048
{
 
77049
    attachment__AttributeData* typedAttributeData = static_cast<attachment__AttributeData*>(attributeData);
 
77050
 
 
77051
    typedAttributeData->~attachment__AttributeData();
 
77052
 
 
77053
    return true;
 
77054
}
 
77055
 
 
77056
//---------------------------------------------------------------------
 
77057
bool ColladaParserAutoGen15Private::_data__rigid_constraint_type____technique_common( const ParserChar* text, size_t textLength )
 
77058
{
 
77059
    return true;
 
77060
}
 
77061
 
 
77062
//---------------------------------------------------------------------
 
77063
bool ColladaParserAutoGen15Private::_preBegin__rigid_constraint_type____technique_common( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
77064
{
 
77065
#ifdef GENERATEDSAXPARSER_VALIDATION
 
77066
    if ( mValidate )
 
77067
    {
 
77068
 
 
77069
        bool validationResult = _validateBegin__rigid_constraint_type____technique_common( attributes, attributeDataPtr, validationDataPtr );
 
77070
        if ( !validationResult ) return false;
 
77071
 
 
77072
    } // validation
 
77073
#endif
 
77074
 
 
77075
    return true;
 
77076
}
 
77077
 
 
77078
//---------------------------------------------------------------------
 
77079
bool ColladaParserAutoGen15Private::_preEnd__rigid_constraint_type____technique_common()
 
77080
{
 
77081
#ifdef GENERATEDSAXPARSER_VALIDATION
 
77082
    if ( mValidate )
 
77083
    {
 
77084
 
 
77085
        bool validationResult = _validateEnd__rigid_constraint_type____technique_common();
 
77086
        if ( !validationResult ) return false;
 
77087
 
 
77088
    } // validation
 
77089
#endif
 
77090
 
 
77091
    return true;
 
77092
}
 
77093
 
 
77094
//---------------------------------------------------------------------
 
77095
bool ColladaParserAutoGen15Private::_freeAttributes__rigid_constraint_type____technique_common( void* attributeData )
 
77096
{
 
77097
    return true;
 
77098
}
 
77099
 
 
77100
//---------------------------------------------------------------------
 
77101
const enabled__AttributeData enabled__AttributeData::DEFAULT = {0};
 
77102
 
 
77103
//---------------------------------------------------------------------
 
77104
bool ColladaParserAutoGen15Private::_data__enabled( const ParserChar* text, size_t textLength )
 
77105
{
 
77106
if (!mLastIncompleteFragmentInCharacterData)
 
77107
{
 
77108
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
77109
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
77110
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
77111
}
 
77112
else
 
77113
{
 
77114
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
77115
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
77116
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
77117
        mLastIncompleteFragmentInCharacterData = tmp;
 
77118
    }
 
77119
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
77120
    mEndOfDataInCurrentObjectOnStack += textLength;
 
77121
}
 
77122
return true;
 
77123
}
 
77124
 
 
77125
//---------------------------------------------------------------------
 
77126
bool ColladaParserAutoGen15Private::_preBegin__enabled( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
77127
{
 
77128
#ifdef GENERATEDSAXPARSER_VALIDATION
 
77129
    if ( mValidate )
 
77130
    {
 
77131
 
 
77132
        bool validationResult = _validateBegin__enabled( attributes, attributeDataPtr, validationDataPtr );
 
77133
        if ( !validationResult ) return false;
 
77134
 
 
77135
    } // validation
 
77136
#endif
 
77137
 
 
77138
enabled__AttributeData* attributeData = newData<enabled__AttributeData>(attributeDataPtr);
 
77139
 
 
77140
const ParserChar** attributeArray = attributes.attributes;
 
77141
if ( attributeArray )
 
77142
{
 
77143
    while (true)
 
77144
    {
 
77145
        const ParserChar * attribute = *attributeArray;
 
77146
        if ( !attribute )
 
77147
            break;
 
77148
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
77149
        attributeArray++;
 
77150
        if ( !attributeArray )
 
77151
            return false;
 
77152
        const ParserChar* attributeValue = *attributeArray;
 
77153
        attributeArray++;
 
77154
 
 
77155
 
 
77156
    switch ( hash )
 
77157
    {
 
77158
    case HASH_ATTRIBUTE_SID:
 
77159
    {
 
77160
 
 
77161
attributeData->sid = attributeValue;
 
77162
#ifdef GENERATEDSAXPARSER_VALIDATION
 
77163
    if ( mValidate )
 
77164
    {
 
77165
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
77166
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
77167
    {
 
77168
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
77169
            simpleTypeValidationResult,
 
77170
            HASH_ELEMENT_ENABLED,
 
77171
            HASH_ATTRIBUTE_SID,
 
77172
            attributeValue) )
 
77173
        {
 
77174
            return false;
 
77175
        }
 
77176
    }
 
77177
    } // validation
 
77178
#endif
 
77179
 
 
77180
    break;
 
77181
    }
 
77182
    default:
 
77183
    {
 
77184
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_ENABLED, attribute, attributeValue))
 
77185
            {return false;}
 
77186
    }
 
77187
    }
 
77188
    }
 
77189
}
 
77190
 
 
77191
 
 
77192
    return true;
 
77193
}
 
77194
 
 
77195
//---------------------------------------------------------------------
 
77196
bool ColladaParserAutoGen15Private::_preEnd__enabled()
 
77197
{
 
77198
#ifdef GENERATEDSAXPARSER_VALIDATION
 
77199
    if ( mValidate )
 
77200
    {
 
77201
 
 
77202
        bool validationResult = _validateEnd__enabled();
 
77203
        if ( !validationResult ) return false;
 
77204
 
 
77205
    } // validation
 
77206
#endif
 
77207
 
 
77208
bool failed;
 
77209
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
77210
DISABLE_WARNING_UNUSED(ptrForErr)
 
77211
bool parameter = GeneratedSaxParser::Utils::toBool((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
77212
bool returnValue;
 
77213
if (!failed)
 
77214
{
 
77215
    returnValue = mImpl->data__enabled(parameter);
 
77216
}
 
77217
else
 
77218
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_ENABLED, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
77219
if (mLastIncompleteFragmentInCharacterData)
 
77220
    mStackMemoryManager.deleteObject();
 
77221
mLastIncompleteFragmentInCharacterData = 0;
 
77222
mEndOfDataInCurrentObjectOnStack = 0;
 
77223
return returnValue;
 
77224
}
 
77225
 
 
77226
//---------------------------------------------------------------------
 
77227
bool ColladaParserAutoGen15Private::_freeAttributes__enabled( void* attributeData )
 
77228
{
 
77229
    enabled__AttributeData* typedAttributeData = static_cast<enabled__AttributeData*>(attributeData);
 
77230
 
 
77231
    typedAttributeData->~enabled__AttributeData();
 
77232
 
 
77233
    return true;
 
77234
}
 
77235
 
 
77236
//---------------------------------------------------------------------
 
77237
const interpenetrate__AttributeData interpenetrate__AttributeData::DEFAULT = {0};
 
77238
 
 
77239
//---------------------------------------------------------------------
 
77240
bool ColladaParserAutoGen15Private::_data__interpenetrate( const ParserChar* text, size_t textLength )
 
77241
{
 
77242
if (!mLastIncompleteFragmentInCharacterData)
 
77243
{
 
77244
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
77245
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
77246
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
77247
}
 
77248
else
 
77249
{
 
77250
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
77251
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
77252
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
77253
        mLastIncompleteFragmentInCharacterData = tmp;
 
77254
    }
 
77255
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
77256
    mEndOfDataInCurrentObjectOnStack += textLength;
 
77257
}
 
77258
return true;
 
77259
}
 
77260
 
 
77261
//---------------------------------------------------------------------
 
77262
bool ColladaParserAutoGen15Private::_preBegin__interpenetrate( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
77263
{
 
77264
#ifdef GENERATEDSAXPARSER_VALIDATION
 
77265
    if ( mValidate )
 
77266
    {
 
77267
 
 
77268
        bool validationResult = _validateBegin__interpenetrate( attributes, attributeDataPtr, validationDataPtr );
 
77269
        if ( !validationResult ) return false;
 
77270
 
 
77271
    } // validation
 
77272
#endif
 
77273
 
 
77274
interpenetrate__AttributeData* attributeData = newData<interpenetrate__AttributeData>(attributeDataPtr);
 
77275
 
 
77276
const ParserChar** attributeArray = attributes.attributes;
 
77277
if ( attributeArray )
 
77278
{
 
77279
    while (true)
 
77280
    {
 
77281
        const ParserChar * attribute = *attributeArray;
 
77282
        if ( !attribute )
 
77283
            break;
 
77284
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
77285
        attributeArray++;
 
77286
        if ( !attributeArray )
 
77287
            return false;
 
77288
        const ParserChar* attributeValue = *attributeArray;
 
77289
        attributeArray++;
 
77290
 
 
77291
 
 
77292
    switch ( hash )
 
77293
    {
 
77294
    case HASH_ATTRIBUTE_SID:
 
77295
    {
 
77296
 
 
77297
attributeData->sid = attributeValue;
 
77298
#ifdef GENERATEDSAXPARSER_VALIDATION
 
77299
    if ( mValidate )
 
77300
    {
 
77301
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
77302
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
77303
    {
 
77304
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
77305
            simpleTypeValidationResult,
 
77306
            HASH_ELEMENT_INTERPENETRATE,
 
77307
            HASH_ATTRIBUTE_SID,
 
77308
            attributeValue) )
 
77309
        {
 
77310
            return false;
 
77311
        }
 
77312
    }
 
77313
    } // validation
 
77314
#endif
 
77315
 
 
77316
    break;
 
77317
    }
 
77318
    default:
 
77319
    {
 
77320
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_INTERPENETRATE, attribute, attributeValue))
 
77321
            {return false;}
 
77322
    }
 
77323
    }
 
77324
    }
 
77325
}
 
77326
 
 
77327
 
 
77328
    return true;
 
77329
}
 
77330
 
 
77331
//---------------------------------------------------------------------
 
77332
bool ColladaParserAutoGen15Private::_preEnd__interpenetrate()
 
77333
{
 
77334
#ifdef GENERATEDSAXPARSER_VALIDATION
 
77335
    if ( mValidate )
 
77336
    {
 
77337
 
 
77338
        bool validationResult = _validateEnd__interpenetrate();
 
77339
        if ( !validationResult ) return false;
 
77340
 
 
77341
    } // validation
 
77342
#endif
 
77343
 
 
77344
bool failed;
 
77345
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
77346
DISABLE_WARNING_UNUSED(ptrForErr)
 
77347
bool parameter = GeneratedSaxParser::Utils::toBool((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
77348
bool returnValue;
 
77349
if (!failed)
 
77350
{
 
77351
    returnValue = mImpl->data__interpenetrate(parameter);
 
77352
}
 
77353
else
 
77354
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_INTERPENETRATE, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
77355
if (mLastIncompleteFragmentInCharacterData)
 
77356
    mStackMemoryManager.deleteObject();
 
77357
mLastIncompleteFragmentInCharacterData = 0;
 
77358
mEndOfDataInCurrentObjectOnStack = 0;
 
77359
return returnValue;
 
77360
}
 
77361
 
 
77362
//---------------------------------------------------------------------
 
77363
bool ColladaParserAutoGen15Private::_freeAttributes__interpenetrate( void* attributeData )
 
77364
{
 
77365
    interpenetrate__AttributeData* typedAttributeData = static_cast<interpenetrate__AttributeData*>(attributeData);
 
77366
 
 
77367
    typedAttributeData->~interpenetrate__AttributeData();
 
77368
 
 
77369
    return true;
 
77370
}
 
77371
 
 
77372
//---------------------------------------------------------------------
 
77373
bool ColladaParserAutoGen15Private::_data__rigid_constraint__technique_common__limits( const ParserChar* text, size_t textLength )
 
77374
{
 
77375
    return true;
 
77376
}
 
77377
 
 
77378
//---------------------------------------------------------------------
 
77379
bool ColladaParserAutoGen15Private::_preBegin__rigid_constraint__technique_common__limits( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
77380
{
 
77381
#ifdef GENERATEDSAXPARSER_VALIDATION
 
77382
    if ( mValidate )
 
77383
    {
 
77384
 
 
77385
        bool validationResult = _validateBegin__rigid_constraint__technique_common__limits( attributes, attributeDataPtr, validationDataPtr );
 
77386
        if ( !validationResult ) return false;
 
77387
 
 
77388
    } // validation
 
77389
#endif
 
77390
 
 
77391
    return true;
 
77392
}
 
77393
 
 
77394
//---------------------------------------------------------------------
 
77395
bool ColladaParserAutoGen15Private::_preEnd__rigid_constraint__technique_common__limits()
 
77396
{
 
77397
#ifdef GENERATEDSAXPARSER_VALIDATION
 
77398
    if ( mValidate )
 
77399
    {
 
77400
 
 
77401
        bool validationResult = _validateEnd__rigid_constraint__technique_common__limits();
 
77402
        if ( !validationResult ) return false;
 
77403
 
 
77404
    } // validation
 
77405
#endif
 
77406
 
 
77407
    return true;
 
77408
}
 
77409
 
 
77410
//---------------------------------------------------------------------
 
77411
bool ColladaParserAutoGen15Private::_freeAttributes__rigid_constraint__technique_common__limits( void* attributeData )
 
77412
{
 
77413
    return true;
 
77414
}
 
77415
 
 
77416
//---------------------------------------------------------------------
 
77417
bool ColladaParserAutoGen15Private::_data__swing_cone_and_twist( const ParserChar* text, size_t textLength )
 
77418
{
 
77419
    return true;
 
77420
}
 
77421
 
 
77422
//---------------------------------------------------------------------
 
77423
bool ColladaParserAutoGen15Private::_preBegin__swing_cone_and_twist( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
77424
{
 
77425
#ifdef GENERATEDSAXPARSER_VALIDATION
 
77426
    if ( mValidate )
 
77427
    {
 
77428
 
 
77429
        bool validationResult = _validateBegin__swing_cone_and_twist( attributes, attributeDataPtr, validationDataPtr );
 
77430
        if ( !validationResult ) return false;
 
77431
 
 
77432
    } // validation
 
77433
#endif
 
77434
 
 
77435
    return true;
 
77436
}
 
77437
 
 
77438
//---------------------------------------------------------------------
 
77439
bool ColladaParserAutoGen15Private::_preEnd__swing_cone_and_twist()
 
77440
{
 
77441
#ifdef GENERATEDSAXPARSER_VALIDATION
 
77442
    if ( mValidate )
 
77443
    {
 
77444
 
 
77445
        bool validationResult = _validateEnd__swing_cone_and_twist();
 
77446
        if ( !validationResult ) return false;
 
77447
 
 
77448
    } // validation
 
77449
#endif
 
77450
 
 
77451
    return true;
 
77452
}
 
77453
 
 
77454
//---------------------------------------------------------------------
 
77455
bool ColladaParserAutoGen15Private::_freeAttributes__swing_cone_and_twist( void* attributeData )
 
77456
{
 
77457
    return true;
 
77458
}
 
77459
 
 
77460
//---------------------------------------------------------------------
 
77461
bool ColladaParserAutoGen15Private::_data__min____targetable_float3_type( const ParserChar* text, size_t textLength )
 
77462
{
 
77463
#ifdef GENERATEDSAXPARSER_VALIDATION
 
77464
    if ( mValidate )
 
77465
    {
 
77466
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
77467
        DISABLE_WARNING_UNUSED(validationData)
 
77468
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__min____targetable_float3_type, &validate__float3_type__stream, &validationData->validationWholeSize, 0);
 
77469
    }
 
77470
    else
 
77471
    {
 
77472
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__min____targetable_float3_type);
 
77473
    }
 
77474
#else
 
77475
    {
 
77476
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__min____targetable_float3_type);
 
77477
    } // validation
 
77478
#endif
 
77479
 
 
77480
}
 
77481
 
 
77482
//---------------------------------------------------------------------
 
77483
bool ColladaParserAutoGen15Private::_preBegin__min____targetable_float3_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
77484
{
 
77485
#ifdef GENERATEDSAXPARSER_VALIDATION
 
77486
    if ( mValidate )
 
77487
    {
 
77488
 
 
77489
        bool validationResult = _validateBegin__min____targetable_float3_type( attributes, attributeDataPtr, validationDataPtr );
 
77490
        if ( !validationResult ) return false;
 
77491
 
 
77492
    } // validation
 
77493
#endif
 
77494
 
 
77495
min____targetable_float3_type__AttributeData* attributeData = newData<min____targetable_float3_type__AttributeData>(attributeDataPtr);
 
77496
 
 
77497
const ParserChar** attributeArray = attributes.attributes;
 
77498
if ( attributeArray )
 
77499
{
 
77500
    while (true)
 
77501
    {
 
77502
        const ParserChar * attribute = *attributeArray;
 
77503
        if ( !attribute )
 
77504
            break;
 
77505
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
77506
        attributeArray++;
 
77507
        if ( !attributeArray )
 
77508
            return false;
 
77509
        const ParserChar* attributeValue = *attributeArray;
 
77510
        attributeArray++;
 
77511
 
 
77512
 
 
77513
    switch ( hash )
 
77514
    {
 
77515
    case HASH_ATTRIBUTE_SID:
 
77516
    {
 
77517
 
 
77518
attributeData->sid = attributeValue;
 
77519
#ifdef GENERATEDSAXPARSER_VALIDATION
 
77520
    if ( mValidate )
 
77521
    {
 
77522
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
77523
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
77524
    {
 
77525
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
77526
            simpleTypeValidationResult,
 
77527
            HASH_ELEMENT_MIN,
 
77528
            HASH_ATTRIBUTE_SID,
 
77529
            attributeValue) )
 
77530
        {
 
77531
            return false;
 
77532
        }
 
77533
    }
 
77534
    } // validation
 
77535
#endif
 
77536
 
 
77537
    break;
 
77538
    }
 
77539
    default:
 
77540
    {
 
77541
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_MIN, attribute, attributeValue))
 
77542
            {return false;}
 
77543
    }
 
77544
    }
 
77545
    }
 
77546
}
 
77547
 
 
77548
 
 
77549
    return true;
 
77550
}
 
77551
 
 
77552
//---------------------------------------------------------------------
 
77553
bool ColladaParserAutoGen15Private::_preEnd__min____targetable_float3_type()
 
77554
{
 
77555
#ifdef GENERATEDSAXPARSER_VALIDATION
 
77556
    if ( mValidate )
 
77557
    {
 
77558
 
 
77559
        bool validationResult = _validateEnd__min____targetable_float3_type();
 
77560
        if ( !validationResult ) return false;
 
77561
 
 
77562
    } // validation
 
77563
#endif
 
77564
 
 
77565
#ifdef GENERATEDSAXPARSER_VALIDATION
 
77566
    if ( mValidate )
 
77567
    {
 
77568
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
77569
        DISABLE_WARNING_UNUSED(validationData)
 
77570
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__min____targetable_float3_type, &validate__float3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
77571
        ParserError::ErrorType simpleTypeValidationResult = validate__float3_type(0, (*(&validationData->validationWholeSize)));
 
77572
        mValidationDataStack.deleteObject();
 
77573
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
77574
        {
 
77575
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
77576
                simpleTypeValidationResult,
 
77577
                HASH_ELEMENT_MIN,
 
77578
                (ParserChar*)0, 0 ) )
 
77579
            {
 
77580
                return false;
 
77581
            }
 
77582
        }
 
77583
        return returnValue;
 
77584
    }
 
77585
    else
 
77586
    {
 
77587
return floatDataEnd( &ColladaParserAutoGen15::data__min____targetable_float3_type );
 
77588
    }
 
77589
#else
 
77590
    {
 
77591
return floatDataEnd( &ColladaParserAutoGen15::data__min____targetable_float3_type );
 
77592
    } // validation
 
77593
#endif
 
77594
 
 
77595
}
 
77596
 
 
77597
//---------------------------------------------------------------------
 
77598
bool ColladaParserAutoGen15Private::_freeAttributes__min____targetable_float3_type( void* attributeData )
 
77599
{
 
77600
    min____targetable_float3_type__AttributeData* typedAttributeData = static_cast<min____targetable_float3_type__AttributeData*>(attributeData);
 
77601
 
 
77602
    typedAttributeData->~min____targetable_float3_type__AttributeData();
 
77603
 
 
77604
    return true;
 
77605
}
 
77606
 
 
77607
//---------------------------------------------------------------------
 
77608
bool ColladaParserAutoGen15Private::_data__max____targetable_float3_type( const ParserChar* text, size_t textLength )
 
77609
{
 
77610
#ifdef GENERATEDSAXPARSER_VALIDATION
 
77611
    if ( mValidate )
 
77612
    {
 
77613
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
77614
        DISABLE_WARNING_UNUSED(validationData)
 
77615
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__max____targetable_float3_type, &validate__float3_type__stream, &validationData->validationWholeSize, 0);
 
77616
    }
 
77617
    else
 
77618
    {
 
77619
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__max____targetable_float3_type);
 
77620
    }
 
77621
#else
 
77622
    {
 
77623
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__max____targetable_float3_type);
 
77624
    } // validation
 
77625
#endif
 
77626
 
 
77627
}
 
77628
 
 
77629
//---------------------------------------------------------------------
 
77630
bool ColladaParserAutoGen15Private::_preBegin__max____targetable_float3_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
77631
{
 
77632
#ifdef GENERATEDSAXPARSER_VALIDATION
 
77633
    if ( mValidate )
 
77634
    {
 
77635
 
 
77636
        bool validationResult = _validateBegin__max____targetable_float3_type( attributes, attributeDataPtr, validationDataPtr );
 
77637
        if ( !validationResult ) return false;
 
77638
 
 
77639
    } // validation
 
77640
#endif
 
77641
 
 
77642
max____targetable_float3_type__AttributeData* attributeData = newData<max____targetable_float3_type__AttributeData>(attributeDataPtr);
 
77643
 
 
77644
const ParserChar** attributeArray = attributes.attributes;
 
77645
if ( attributeArray )
 
77646
{
 
77647
    while (true)
 
77648
    {
 
77649
        const ParserChar * attribute = *attributeArray;
 
77650
        if ( !attribute )
 
77651
            break;
 
77652
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
77653
        attributeArray++;
 
77654
        if ( !attributeArray )
 
77655
            return false;
 
77656
        const ParserChar* attributeValue = *attributeArray;
 
77657
        attributeArray++;
 
77658
 
 
77659
 
 
77660
    switch ( hash )
 
77661
    {
 
77662
    case HASH_ATTRIBUTE_SID:
 
77663
    {
 
77664
 
 
77665
attributeData->sid = attributeValue;
 
77666
#ifdef GENERATEDSAXPARSER_VALIDATION
 
77667
    if ( mValidate )
 
77668
    {
 
77669
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
77670
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
77671
    {
 
77672
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
77673
            simpleTypeValidationResult,
 
77674
            HASH_ELEMENT_MAX,
 
77675
            HASH_ATTRIBUTE_SID,
 
77676
            attributeValue) )
 
77677
        {
 
77678
            return false;
 
77679
        }
 
77680
    }
 
77681
    } // validation
 
77682
#endif
 
77683
 
 
77684
    break;
 
77685
    }
 
77686
    default:
 
77687
    {
 
77688
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_MAX, attribute, attributeValue))
 
77689
            {return false;}
 
77690
    }
 
77691
    }
 
77692
    }
 
77693
}
 
77694
 
 
77695
 
 
77696
    return true;
 
77697
}
 
77698
 
 
77699
//---------------------------------------------------------------------
 
77700
bool ColladaParserAutoGen15Private::_preEnd__max____targetable_float3_type()
 
77701
{
 
77702
#ifdef GENERATEDSAXPARSER_VALIDATION
 
77703
    if ( mValidate )
 
77704
    {
 
77705
 
 
77706
        bool validationResult = _validateEnd__max____targetable_float3_type();
 
77707
        if ( !validationResult ) return false;
 
77708
 
 
77709
    } // validation
 
77710
#endif
 
77711
 
 
77712
#ifdef GENERATEDSAXPARSER_VALIDATION
 
77713
    if ( mValidate )
 
77714
    {
 
77715
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
77716
        DISABLE_WARNING_UNUSED(validationData)
 
77717
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__max____targetable_float3_type, &validate__float3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
77718
        ParserError::ErrorType simpleTypeValidationResult = validate__float3_type(0, (*(&validationData->validationWholeSize)));
 
77719
        mValidationDataStack.deleteObject();
 
77720
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
77721
        {
 
77722
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
77723
                simpleTypeValidationResult,
 
77724
                HASH_ELEMENT_MAX,
 
77725
                (ParserChar*)0, 0 ) )
 
77726
            {
 
77727
                return false;
 
77728
            }
 
77729
        }
 
77730
        return returnValue;
 
77731
    }
 
77732
    else
 
77733
    {
 
77734
return floatDataEnd( &ColladaParserAutoGen15::data__max____targetable_float3_type );
 
77735
    }
 
77736
#else
 
77737
    {
 
77738
return floatDataEnd( &ColladaParserAutoGen15::data__max____targetable_float3_type );
 
77739
    } // validation
 
77740
#endif
 
77741
 
 
77742
}
 
77743
 
 
77744
//---------------------------------------------------------------------
 
77745
bool ColladaParserAutoGen15Private::_freeAttributes__max____targetable_float3_type( void* attributeData )
 
77746
{
 
77747
    max____targetable_float3_type__AttributeData* typedAttributeData = static_cast<max____targetable_float3_type__AttributeData*>(attributeData);
 
77748
 
 
77749
    typedAttributeData->~max____targetable_float3_type__AttributeData();
 
77750
 
 
77751
    return true;
 
77752
}
 
77753
 
 
77754
//---------------------------------------------------------------------
 
77755
bool ColladaParserAutoGen15Private::_data__rigid_constraint__technique_common__limits__linear( const ParserChar* text, size_t textLength )
 
77756
{
 
77757
    return true;
 
77758
}
 
77759
 
 
77760
//---------------------------------------------------------------------
 
77761
bool ColladaParserAutoGen15Private::_preBegin__rigid_constraint__technique_common__limits__linear( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
77762
{
 
77763
#ifdef GENERATEDSAXPARSER_VALIDATION
 
77764
    if ( mValidate )
 
77765
    {
 
77766
 
 
77767
        bool validationResult = _validateBegin__rigid_constraint__technique_common__limits__linear( attributes, attributeDataPtr, validationDataPtr );
 
77768
        if ( !validationResult ) return false;
 
77769
 
 
77770
    } // validation
 
77771
#endif
 
77772
 
 
77773
    return true;
 
77774
}
 
77775
 
 
77776
//---------------------------------------------------------------------
 
77777
bool ColladaParserAutoGen15Private::_preEnd__rigid_constraint__technique_common__limits__linear()
 
77778
{
 
77779
#ifdef GENERATEDSAXPARSER_VALIDATION
 
77780
    if ( mValidate )
 
77781
    {
 
77782
 
 
77783
        bool validationResult = _validateEnd__rigid_constraint__technique_common__limits__linear();
 
77784
        if ( !validationResult ) return false;
 
77785
 
 
77786
    } // validation
 
77787
#endif
 
77788
 
 
77789
    return true;
 
77790
}
 
77791
 
 
77792
//---------------------------------------------------------------------
 
77793
bool ColladaParserAutoGen15Private::_freeAttributes__rigid_constraint__technique_common__limits__linear( void* attributeData )
 
77794
{
 
77795
    return true;
 
77796
}
 
77797
 
 
77798
//---------------------------------------------------------------------
 
77799
bool ColladaParserAutoGen15Private::_data__spring( const ParserChar* text, size_t textLength )
 
77800
{
 
77801
    return true;
 
77802
}
 
77803
 
 
77804
//---------------------------------------------------------------------
 
77805
bool ColladaParserAutoGen15Private::_preBegin__spring( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
77806
{
 
77807
#ifdef GENERATEDSAXPARSER_VALIDATION
 
77808
    if ( mValidate )
 
77809
    {
 
77810
 
 
77811
        bool validationResult = _validateBegin__spring( attributes, attributeDataPtr, validationDataPtr );
 
77812
        if ( !validationResult ) return false;
 
77813
 
 
77814
    } // validation
 
77815
#endif
 
77816
 
 
77817
    return true;
 
77818
}
 
77819
 
 
77820
//---------------------------------------------------------------------
 
77821
bool ColladaParserAutoGen15Private::_preEnd__spring()
 
77822
{
 
77823
#ifdef GENERATEDSAXPARSER_VALIDATION
 
77824
    if ( mValidate )
 
77825
    {
 
77826
 
 
77827
        bool validationResult = _validateEnd__spring();
 
77828
        if ( !validationResult ) return false;
 
77829
 
 
77830
    } // validation
 
77831
#endif
 
77832
 
 
77833
    return true;
 
77834
}
 
77835
 
 
77836
//---------------------------------------------------------------------
 
77837
bool ColladaParserAutoGen15Private::_freeAttributes__spring( void* attributeData )
 
77838
{
 
77839
    return true;
 
77840
}
 
77841
 
 
77842
//---------------------------------------------------------------------
 
77843
bool ColladaParserAutoGen15Private::_data__angular( const ParserChar* text, size_t textLength )
 
77844
{
 
77845
    return true;
 
77846
}
 
77847
 
 
77848
//---------------------------------------------------------------------
 
77849
bool ColladaParserAutoGen15Private::_preBegin__angular( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
77850
{
 
77851
#ifdef GENERATEDSAXPARSER_VALIDATION
 
77852
    if ( mValidate )
 
77853
    {
 
77854
 
 
77855
        bool validationResult = _validateBegin__angular( attributes, attributeDataPtr, validationDataPtr );
 
77856
        if ( !validationResult ) return false;
 
77857
 
 
77858
    } // validation
 
77859
#endif
 
77860
 
 
77861
    return true;
 
77862
}
 
77863
 
 
77864
//---------------------------------------------------------------------
 
77865
bool ColladaParserAutoGen15Private::_preEnd__angular()
 
77866
{
 
77867
#ifdef GENERATEDSAXPARSER_VALIDATION
 
77868
    if ( mValidate )
 
77869
    {
 
77870
 
 
77871
        bool validationResult = _validateEnd__angular();
 
77872
        if ( !validationResult ) return false;
 
77873
 
 
77874
    } // validation
 
77875
#endif
 
77876
 
 
77877
    return true;
 
77878
}
 
77879
 
 
77880
//---------------------------------------------------------------------
 
77881
bool ColladaParserAutoGen15Private::_freeAttributes__angular( void* attributeData )
 
77882
{
 
77883
    return true;
 
77884
}
 
77885
 
 
77886
//---------------------------------------------------------------------
 
77887
const stiffness__AttributeData stiffness__AttributeData::DEFAULT = {0};
 
77888
 
 
77889
//---------------------------------------------------------------------
 
77890
bool ColladaParserAutoGen15Private::_data__stiffness( const ParserChar* text, size_t textLength )
 
77891
{
 
77892
if (!mLastIncompleteFragmentInCharacterData)
 
77893
{
 
77894
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
77895
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
77896
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
77897
}
 
77898
else
 
77899
{
 
77900
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
77901
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
77902
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
77903
        mLastIncompleteFragmentInCharacterData = tmp;
 
77904
    }
 
77905
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
77906
    mEndOfDataInCurrentObjectOnStack += textLength;
 
77907
}
 
77908
return true;
 
77909
}
 
77910
 
 
77911
//---------------------------------------------------------------------
 
77912
bool ColladaParserAutoGen15Private::_preBegin__stiffness( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
77913
{
 
77914
#ifdef GENERATEDSAXPARSER_VALIDATION
 
77915
    if ( mValidate )
 
77916
    {
 
77917
 
 
77918
        bool validationResult = _validateBegin__stiffness( attributes, attributeDataPtr, validationDataPtr );
 
77919
        if ( !validationResult ) return false;
 
77920
 
 
77921
    } // validation
 
77922
#endif
 
77923
 
 
77924
stiffness__AttributeData* attributeData = newData<stiffness__AttributeData>(attributeDataPtr);
 
77925
 
 
77926
const ParserChar** attributeArray = attributes.attributes;
 
77927
if ( attributeArray )
 
77928
{
 
77929
    while (true)
 
77930
    {
 
77931
        const ParserChar * attribute = *attributeArray;
 
77932
        if ( !attribute )
 
77933
            break;
 
77934
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
77935
        attributeArray++;
 
77936
        if ( !attributeArray )
 
77937
            return false;
 
77938
        const ParserChar* attributeValue = *attributeArray;
 
77939
        attributeArray++;
 
77940
 
 
77941
 
 
77942
    switch ( hash )
 
77943
    {
 
77944
    case HASH_ATTRIBUTE_SID:
 
77945
    {
 
77946
 
 
77947
attributeData->sid = attributeValue;
 
77948
#ifdef GENERATEDSAXPARSER_VALIDATION
 
77949
    if ( mValidate )
 
77950
    {
 
77951
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
77952
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
77953
    {
 
77954
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
77955
            simpleTypeValidationResult,
 
77956
            HASH_ELEMENT_STIFFNESS,
 
77957
            HASH_ATTRIBUTE_SID,
 
77958
            attributeValue) )
 
77959
        {
 
77960
            return false;
 
77961
        }
 
77962
    }
 
77963
    } // validation
 
77964
#endif
 
77965
 
 
77966
    break;
 
77967
    }
 
77968
    default:
 
77969
    {
 
77970
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_STIFFNESS, attribute, attributeValue))
 
77971
            {return false;}
 
77972
    }
 
77973
    }
 
77974
    }
 
77975
}
 
77976
 
 
77977
 
 
77978
    return true;
 
77979
}
 
77980
 
 
77981
//---------------------------------------------------------------------
 
77982
bool ColladaParserAutoGen15Private::_preEnd__stiffness()
 
77983
{
 
77984
#ifdef GENERATEDSAXPARSER_VALIDATION
 
77985
    if ( mValidate )
 
77986
    {
 
77987
 
 
77988
        bool validationResult = _validateEnd__stiffness();
 
77989
        if ( !validationResult ) return false;
 
77990
 
 
77991
    } // validation
 
77992
#endif
 
77993
 
 
77994
bool failed;
 
77995
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
77996
DISABLE_WARNING_UNUSED(ptrForErr)
 
77997
float parameter = GeneratedSaxParser::Utils::toFloat((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
77998
bool returnValue;
 
77999
if (!failed)
 
78000
{
 
78001
    returnValue = mImpl->data__stiffness(parameter);
 
78002
}
 
78003
else
 
78004
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_STIFFNESS, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
78005
if (mLastIncompleteFragmentInCharacterData)
 
78006
    mStackMemoryManager.deleteObject();
 
78007
mLastIncompleteFragmentInCharacterData = 0;
 
78008
mEndOfDataInCurrentObjectOnStack = 0;
 
78009
return returnValue;
 
78010
}
 
78011
 
 
78012
//---------------------------------------------------------------------
 
78013
bool ColladaParserAutoGen15Private::_freeAttributes__stiffness( void* attributeData )
 
78014
{
 
78015
    stiffness__AttributeData* typedAttributeData = static_cast<stiffness__AttributeData*>(attributeData);
 
78016
 
 
78017
    typedAttributeData->~stiffness__AttributeData();
 
78018
 
 
78019
    return true;
 
78020
}
 
78021
 
 
78022
//---------------------------------------------------------------------
 
78023
const damping__AttributeData damping__AttributeData::DEFAULT = {0};
 
78024
 
 
78025
//---------------------------------------------------------------------
 
78026
bool ColladaParserAutoGen15Private::_data__damping( const ParserChar* text, size_t textLength )
 
78027
{
 
78028
if (!mLastIncompleteFragmentInCharacterData)
 
78029
{
 
78030
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
78031
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
78032
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
78033
}
 
78034
else
 
78035
{
 
78036
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
78037
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
78038
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
78039
        mLastIncompleteFragmentInCharacterData = tmp;
 
78040
    }
 
78041
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
78042
    mEndOfDataInCurrentObjectOnStack += textLength;
 
78043
}
 
78044
return true;
 
78045
}
 
78046
 
 
78047
//---------------------------------------------------------------------
 
78048
bool ColladaParserAutoGen15Private::_preBegin__damping( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
78049
{
 
78050
#ifdef GENERATEDSAXPARSER_VALIDATION
 
78051
    if ( mValidate )
 
78052
    {
 
78053
 
 
78054
        bool validationResult = _validateBegin__damping( attributes, attributeDataPtr, validationDataPtr );
 
78055
        if ( !validationResult ) return false;
 
78056
 
 
78057
    } // validation
 
78058
#endif
 
78059
 
 
78060
damping__AttributeData* attributeData = newData<damping__AttributeData>(attributeDataPtr);
 
78061
 
 
78062
const ParserChar** attributeArray = attributes.attributes;
 
78063
if ( attributeArray )
 
78064
{
 
78065
    while (true)
 
78066
    {
 
78067
        const ParserChar * attribute = *attributeArray;
 
78068
        if ( !attribute )
 
78069
            break;
 
78070
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
78071
        attributeArray++;
 
78072
        if ( !attributeArray )
 
78073
            return false;
 
78074
        const ParserChar* attributeValue = *attributeArray;
 
78075
        attributeArray++;
 
78076
 
 
78077
 
 
78078
    switch ( hash )
 
78079
    {
 
78080
    case HASH_ATTRIBUTE_SID:
 
78081
    {
 
78082
 
 
78083
attributeData->sid = attributeValue;
 
78084
#ifdef GENERATEDSAXPARSER_VALIDATION
 
78085
    if ( mValidate )
 
78086
    {
 
78087
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
78088
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
78089
    {
 
78090
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
78091
            simpleTypeValidationResult,
 
78092
            HASH_ELEMENT_DAMPING,
 
78093
            HASH_ATTRIBUTE_SID,
 
78094
            attributeValue) )
 
78095
        {
 
78096
            return false;
 
78097
        }
 
78098
    }
 
78099
    } // validation
 
78100
#endif
 
78101
 
 
78102
    break;
 
78103
    }
 
78104
    default:
 
78105
    {
 
78106
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_DAMPING, attribute, attributeValue))
 
78107
            {return false;}
 
78108
    }
 
78109
    }
 
78110
    }
 
78111
}
 
78112
 
 
78113
 
 
78114
    return true;
 
78115
}
 
78116
 
 
78117
//---------------------------------------------------------------------
 
78118
bool ColladaParserAutoGen15Private::_preEnd__damping()
 
78119
{
 
78120
#ifdef GENERATEDSAXPARSER_VALIDATION
 
78121
    if ( mValidate )
 
78122
    {
 
78123
 
 
78124
        bool validationResult = _validateEnd__damping();
 
78125
        if ( !validationResult ) return false;
 
78126
 
 
78127
    } // validation
 
78128
#endif
 
78129
 
 
78130
bool failed;
 
78131
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
78132
DISABLE_WARNING_UNUSED(ptrForErr)
 
78133
float parameter = GeneratedSaxParser::Utils::toFloat((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
78134
bool returnValue;
 
78135
if (!failed)
 
78136
{
 
78137
    returnValue = mImpl->data__damping(parameter);
 
78138
}
 
78139
else
 
78140
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_DAMPING, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
78141
if (mLastIncompleteFragmentInCharacterData)
 
78142
    mStackMemoryManager.deleteObject();
 
78143
mLastIncompleteFragmentInCharacterData = 0;
 
78144
mEndOfDataInCurrentObjectOnStack = 0;
 
78145
return returnValue;
 
78146
}
 
78147
 
 
78148
//---------------------------------------------------------------------
 
78149
bool ColladaParserAutoGen15Private::_freeAttributes__damping( void* attributeData )
 
78150
{
 
78151
    damping__AttributeData* typedAttributeData = static_cast<damping__AttributeData*>(attributeData);
 
78152
 
 
78153
    typedAttributeData->~damping__AttributeData();
 
78154
 
 
78155
    return true;
 
78156
}
 
78157
 
 
78158
//---------------------------------------------------------------------
 
78159
const target_value__AttributeData target_value__AttributeData::DEFAULT = {0};
 
78160
 
 
78161
//---------------------------------------------------------------------
 
78162
bool ColladaParserAutoGen15Private::_data__target_value( const ParserChar* text, size_t textLength )
 
78163
{
 
78164
if (!mLastIncompleteFragmentInCharacterData)
 
78165
{
 
78166
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
78167
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
78168
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
78169
}
 
78170
else
 
78171
{
 
78172
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
78173
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
78174
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
78175
        mLastIncompleteFragmentInCharacterData = tmp;
 
78176
    }
 
78177
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
78178
    mEndOfDataInCurrentObjectOnStack += textLength;
 
78179
}
 
78180
return true;
 
78181
}
 
78182
 
 
78183
//---------------------------------------------------------------------
 
78184
bool ColladaParserAutoGen15Private::_preBegin__target_value( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
78185
{
 
78186
#ifdef GENERATEDSAXPARSER_VALIDATION
 
78187
    if ( mValidate )
 
78188
    {
 
78189
 
 
78190
        bool validationResult = _validateBegin__target_value( attributes, attributeDataPtr, validationDataPtr );
 
78191
        if ( !validationResult ) return false;
 
78192
 
 
78193
    } // validation
 
78194
#endif
 
78195
 
 
78196
target_value__AttributeData* attributeData = newData<target_value__AttributeData>(attributeDataPtr);
 
78197
 
 
78198
const ParserChar** attributeArray = attributes.attributes;
 
78199
if ( attributeArray )
 
78200
{
 
78201
    while (true)
 
78202
    {
 
78203
        const ParserChar * attribute = *attributeArray;
 
78204
        if ( !attribute )
 
78205
            break;
 
78206
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
78207
        attributeArray++;
 
78208
        if ( !attributeArray )
 
78209
            return false;
 
78210
        const ParserChar* attributeValue = *attributeArray;
 
78211
        attributeArray++;
 
78212
 
 
78213
 
 
78214
    switch ( hash )
 
78215
    {
 
78216
    case HASH_ATTRIBUTE_SID:
 
78217
    {
 
78218
 
 
78219
attributeData->sid = attributeValue;
 
78220
#ifdef GENERATEDSAXPARSER_VALIDATION
 
78221
    if ( mValidate )
 
78222
    {
 
78223
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
78224
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
78225
    {
 
78226
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
78227
            simpleTypeValidationResult,
 
78228
            HASH_ELEMENT_TARGET_VALUE,
 
78229
            HASH_ATTRIBUTE_SID,
 
78230
            attributeValue) )
 
78231
        {
 
78232
            return false;
 
78233
        }
 
78234
    }
 
78235
    } // validation
 
78236
#endif
 
78237
 
 
78238
    break;
 
78239
    }
 
78240
    default:
 
78241
    {
 
78242
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_TARGET_VALUE, attribute, attributeValue))
 
78243
            {return false;}
 
78244
    }
 
78245
    }
 
78246
    }
 
78247
}
 
78248
 
 
78249
 
 
78250
    return true;
 
78251
}
 
78252
 
 
78253
//---------------------------------------------------------------------
 
78254
bool ColladaParserAutoGen15Private::_preEnd__target_value()
 
78255
{
 
78256
#ifdef GENERATEDSAXPARSER_VALIDATION
 
78257
    if ( mValidate )
 
78258
    {
 
78259
 
 
78260
        bool validationResult = _validateEnd__target_value();
 
78261
        if ( !validationResult ) return false;
 
78262
 
 
78263
    } // validation
 
78264
#endif
 
78265
 
 
78266
bool failed;
 
78267
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
78268
DISABLE_WARNING_UNUSED(ptrForErr)
 
78269
float parameter = GeneratedSaxParser::Utils::toFloat((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
78270
bool returnValue;
 
78271
if (!failed)
 
78272
{
 
78273
    returnValue = mImpl->data__target_value(parameter);
 
78274
}
 
78275
else
 
78276
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_TARGET_VALUE, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
78277
if (mLastIncompleteFragmentInCharacterData)
 
78278
    mStackMemoryManager.deleteObject();
 
78279
mLastIncompleteFragmentInCharacterData = 0;
 
78280
mEndOfDataInCurrentObjectOnStack = 0;
 
78281
return returnValue;
 
78282
}
 
78283
 
 
78284
//---------------------------------------------------------------------
 
78285
bool ColladaParserAutoGen15Private::_freeAttributes__target_value( void* attributeData )
 
78286
{
 
78287
    target_value__AttributeData* typedAttributeData = static_cast<target_value__AttributeData*>(attributeData);
 
78288
 
 
78289
    typedAttributeData->~target_value__AttributeData();
 
78290
 
 
78291
    return true;
 
78292
}
 
78293
 
 
78294
//---------------------------------------------------------------------
 
78295
bool ColladaParserAutoGen15Private::_data__spring__linear( const ParserChar* text, size_t textLength )
 
78296
{
 
78297
    return true;
 
78298
}
 
78299
 
 
78300
//---------------------------------------------------------------------
 
78301
bool ColladaParserAutoGen15Private::_preBegin__spring__linear( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
78302
{
 
78303
#ifdef GENERATEDSAXPARSER_VALIDATION
 
78304
    if ( mValidate )
 
78305
    {
 
78306
 
 
78307
        bool validationResult = _validateBegin__spring__linear( attributes, attributeDataPtr, validationDataPtr );
 
78308
        if ( !validationResult ) return false;
 
78309
 
 
78310
    } // validation
 
78311
#endif
 
78312
 
 
78313
    return true;
 
78314
}
 
78315
 
 
78316
//---------------------------------------------------------------------
 
78317
bool ColladaParserAutoGen15Private::_preEnd__spring__linear()
 
78318
{
 
78319
#ifdef GENERATEDSAXPARSER_VALIDATION
 
78320
    if ( mValidate )
 
78321
    {
 
78322
 
 
78323
        bool validationResult = _validateEnd__spring__linear();
 
78324
        if ( !validationResult ) return false;
 
78325
 
 
78326
    } // validation
 
78327
#endif
 
78328
 
 
78329
    return true;
 
78330
}
 
78331
 
 
78332
//---------------------------------------------------------------------
 
78333
bool ColladaParserAutoGen15Private::_freeAttributes__spring__linear( void* attributeData )
 
78334
{
 
78335
    return true;
 
78336
}
 
78337
 
 
78338
//---------------------------------------------------------------------
 
78339
const instance_physics_model__AttributeData instance_physics_model__AttributeData::DEFAULT = {0, 0, 0, 0, 0};
 
78340
 
 
78341
//---------------------------------------------------------------------
 
78342
bool ColladaParserAutoGen15Private::_data__instance_physics_model( const ParserChar* text, size_t textLength )
 
78343
{
 
78344
    return true;
 
78345
}
 
78346
 
 
78347
//---------------------------------------------------------------------
 
78348
bool ColladaParserAutoGen15Private::_preBegin__instance_physics_model( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
78349
{
 
78350
#ifdef GENERATEDSAXPARSER_VALIDATION
 
78351
    if ( mValidate )
 
78352
    {
 
78353
 
 
78354
        bool validationResult = _validateBegin__instance_physics_model( attributes, attributeDataPtr, validationDataPtr );
 
78355
        if ( !validationResult ) return false;
 
78356
 
 
78357
    } // validation
 
78358
#endif
 
78359
 
 
78360
instance_physics_model__AttributeData* attributeData = newData<instance_physics_model__AttributeData>(attributeDataPtr);
 
78361
 
 
78362
const ParserChar** attributeArray = attributes.attributes;
 
78363
if ( attributeArray )
 
78364
{
 
78365
    while (true)
 
78366
    {
 
78367
        const ParserChar * attribute = *attributeArray;
 
78368
        if ( !attribute )
 
78369
            break;
 
78370
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
78371
        attributeArray++;
 
78372
        if ( !attributeArray )
 
78373
            return false;
 
78374
        const ParserChar* attributeValue = *attributeArray;
 
78375
        attributeArray++;
 
78376
 
 
78377
 
 
78378
    switch ( hash )
 
78379
    {
 
78380
    case HASH_ATTRIBUTE_URL:
 
78381
    {
 
78382
bool failed;
 
78383
attributeData->url = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
78384
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
78385
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
78386
        HASH_ELEMENT_INSTANCE_PHYSICS_MODEL,
 
78387
        HASH_ATTRIBUTE_URL,
 
78388
        attributeValue))
 
78389
{
 
78390
    return false;
 
78391
}
 
78392
if ( !failed )
 
78393
    attributeData->present_attributes |= instance_physics_model__AttributeData::ATTRIBUTE_URL_PRESENT;
 
78394
 
 
78395
    break;
 
78396
    }
 
78397
    case HASH_ATTRIBUTE_SID:
 
78398
    {
 
78399
 
 
78400
attributeData->sid = attributeValue;
 
78401
#ifdef GENERATEDSAXPARSER_VALIDATION
 
78402
    if ( mValidate )
 
78403
    {
 
78404
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
78405
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
78406
    {
 
78407
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
78408
            simpleTypeValidationResult,
 
78409
            HASH_ELEMENT_INSTANCE_PHYSICS_MODEL,
 
78410
            HASH_ATTRIBUTE_SID,
 
78411
            attributeValue) )
 
78412
        {
 
78413
            return false;
 
78414
        }
 
78415
    }
 
78416
    } // validation
 
78417
#endif
 
78418
 
 
78419
    break;
 
78420
    }
 
78421
    case HASH_ATTRIBUTE_NAME:
 
78422
    {
 
78423
 
 
78424
attributeData->name = attributeValue;
 
78425
 
 
78426
    break;
 
78427
    }
 
78428
    case HASH_ATTRIBUTE_PARENT:
 
78429
    {
 
78430
bool failed;
 
78431
attributeData->parent = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
78432
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
78433
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
78434
        HASH_ELEMENT_INSTANCE_PHYSICS_MODEL,
 
78435
        HASH_ATTRIBUTE_PARENT,
 
78436
        attributeValue))
 
78437
{
 
78438
    return false;
 
78439
}
 
78440
if ( !failed )
 
78441
    attributeData->present_attributes |= instance_physics_model__AttributeData::ATTRIBUTE_PARENT_PRESENT;
 
78442
 
 
78443
    break;
 
78444
    }
 
78445
    default:
 
78446
    {
 
78447
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_INSTANCE_PHYSICS_MODEL, attribute, attributeValue))
 
78448
            {return false;}
 
78449
    }
 
78450
    }
 
78451
    }
 
78452
}
 
78453
if ((attributeData->present_attributes & instance_physics_model__AttributeData::ATTRIBUTE_URL_PRESENT) == 0)
 
78454
{
 
78455
    attributeData->url = COLLADABU::URI("");
 
78456
}
 
78457
if ((attributeData->present_attributes & instance_physics_model__AttributeData::ATTRIBUTE_PARENT_PRESENT) == 0)
 
78458
{
 
78459
    attributeData->parent = COLLADABU::URI("");
 
78460
}
 
78461
if ( (attributeData->present_attributes & instance_physics_model__AttributeData::ATTRIBUTE_URL_PRESENT) == 0 )
 
78462
{
 
78463
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_INSTANCE_PHYSICS_MODEL, HASH_ATTRIBUTE_URL, 0 ) )
 
78464
        return false;
 
78465
}
 
78466
 
 
78467
 
 
78468
    return true;
 
78469
}
 
78470
 
 
78471
//---------------------------------------------------------------------
 
78472
bool ColladaParserAutoGen15Private::_preEnd__instance_physics_model()
 
78473
{
 
78474
#ifdef GENERATEDSAXPARSER_VALIDATION
 
78475
    if ( mValidate )
 
78476
    {
 
78477
 
 
78478
        bool validationResult = _validateEnd__instance_physics_model();
 
78479
        if ( !validationResult ) return false;
 
78480
 
 
78481
    } // validation
 
78482
#endif
 
78483
 
 
78484
    return true;
 
78485
}
 
78486
 
 
78487
//---------------------------------------------------------------------
 
78488
bool ColladaParserAutoGen15Private::_freeAttributes__instance_physics_model( void* attributeData )
 
78489
{
 
78490
    instance_physics_model__AttributeData* typedAttributeData = static_cast<instance_physics_model__AttributeData*>(attributeData);
 
78491
 
 
78492
    typedAttributeData->~instance_physics_model__AttributeData();
 
78493
 
 
78494
    return true;
 
78495
}
 
78496
 
 
78497
//---------------------------------------------------------------------
 
78498
const instance_force_field__AttributeData instance_force_field__AttributeData::DEFAULT = {0, 0, 0, 0};
 
78499
 
 
78500
//---------------------------------------------------------------------
 
78501
bool ColladaParserAutoGen15Private::_data__instance_force_field( const ParserChar* text, size_t textLength )
 
78502
{
 
78503
    return true;
 
78504
}
 
78505
 
 
78506
//---------------------------------------------------------------------
 
78507
bool ColladaParserAutoGen15Private::_preBegin__instance_force_field( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
78508
{
 
78509
#ifdef GENERATEDSAXPARSER_VALIDATION
 
78510
    if ( mValidate )
 
78511
    {
 
78512
 
 
78513
        bool validationResult = _validateBegin__instance_force_field( attributes, attributeDataPtr, validationDataPtr );
 
78514
        if ( !validationResult ) return false;
 
78515
 
 
78516
    } // validation
 
78517
#endif
 
78518
 
 
78519
instance_force_field__AttributeData* attributeData = newData<instance_force_field__AttributeData>(attributeDataPtr);
 
78520
 
 
78521
const ParserChar** attributeArray = attributes.attributes;
 
78522
if ( attributeArray )
 
78523
{
 
78524
    while (true)
 
78525
    {
 
78526
        const ParserChar * attribute = *attributeArray;
 
78527
        if ( !attribute )
 
78528
            break;
 
78529
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
78530
        attributeArray++;
 
78531
        if ( !attributeArray )
 
78532
            return false;
 
78533
        const ParserChar* attributeValue = *attributeArray;
 
78534
        attributeArray++;
 
78535
 
 
78536
 
 
78537
    switch ( hash )
 
78538
    {
 
78539
    case HASH_ATTRIBUTE_URL:
 
78540
    {
 
78541
bool failed;
 
78542
attributeData->url = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
78543
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
78544
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
78545
        HASH_ELEMENT_INSTANCE_FORCE_FIELD,
 
78546
        HASH_ATTRIBUTE_URL,
 
78547
        attributeValue))
 
78548
{
 
78549
    return false;
 
78550
}
 
78551
if ( !failed )
 
78552
    attributeData->present_attributes |= instance_force_field__AttributeData::ATTRIBUTE_URL_PRESENT;
 
78553
 
 
78554
    break;
 
78555
    }
 
78556
    case HASH_ATTRIBUTE_SID:
 
78557
    {
 
78558
 
 
78559
attributeData->sid = attributeValue;
 
78560
#ifdef GENERATEDSAXPARSER_VALIDATION
 
78561
    if ( mValidate )
 
78562
    {
 
78563
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
78564
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
78565
    {
 
78566
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
78567
            simpleTypeValidationResult,
 
78568
            HASH_ELEMENT_INSTANCE_FORCE_FIELD,
 
78569
            HASH_ATTRIBUTE_SID,
 
78570
            attributeValue) )
 
78571
        {
 
78572
            return false;
 
78573
        }
 
78574
    }
 
78575
    } // validation
 
78576
#endif
 
78577
 
 
78578
    break;
 
78579
    }
 
78580
    case HASH_ATTRIBUTE_NAME:
 
78581
    {
 
78582
 
 
78583
attributeData->name = attributeValue;
 
78584
 
 
78585
    break;
 
78586
    }
 
78587
    default:
 
78588
    {
 
78589
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_INSTANCE_FORCE_FIELD, attribute, attributeValue))
 
78590
            {return false;}
 
78591
    }
 
78592
    }
 
78593
    }
 
78594
}
 
78595
if ((attributeData->present_attributes & instance_force_field__AttributeData::ATTRIBUTE_URL_PRESENT) == 0)
 
78596
{
 
78597
    attributeData->url = COLLADABU::URI("");
 
78598
}
 
78599
if ( (attributeData->present_attributes & instance_force_field__AttributeData::ATTRIBUTE_URL_PRESENT) == 0 )
 
78600
{
 
78601
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_INSTANCE_FORCE_FIELD, HASH_ATTRIBUTE_URL, 0 ) )
 
78602
        return false;
 
78603
}
 
78604
 
 
78605
 
 
78606
    return true;
 
78607
}
 
78608
 
 
78609
//---------------------------------------------------------------------
 
78610
bool ColladaParserAutoGen15Private::_preEnd__instance_force_field()
 
78611
{
 
78612
#ifdef GENERATEDSAXPARSER_VALIDATION
 
78613
    if ( mValidate )
 
78614
    {
 
78615
 
 
78616
        bool validationResult = _validateEnd__instance_force_field();
 
78617
        if ( !validationResult ) return false;
 
78618
 
 
78619
    } // validation
 
78620
#endif
 
78621
 
 
78622
    return true;
 
78623
}
 
78624
 
 
78625
//---------------------------------------------------------------------
 
78626
bool ColladaParserAutoGen15Private::_freeAttributes__instance_force_field( void* attributeData )
 
78627
{
 
78628
    instance_force_field__AttributeData* typedAttributeData = static_cast<instance_force_field__AttributeData*>(attributeData);
 
78629
 
 
78630
    typedAttributeData->~instance_force_field__AttributeData();
 
78631
 
 
78632
    return true;
 
78633
}
 
78634
 
 
78635
//---------------------------------------------------------------------
 
78636
const instance_rigid_body__AttributeData instance_rigid_body__AttributeData::DEFAULT = {0, 0, 0, 0, 0};
 
78637
 
 
78638
//---------------------------------------------------------------------
 
78639
bool ColladaParserAutoGen15Private::_data__instance_rigid_body( const ParserChar* text, size_t textLength )
 
78640
{
 
78641
    return true;
 
78642
}
 
78643
 
 
78644
//---------------------------------------------------------------------
 
78645
bool ColladaParserAutoGen15Private::_preBegin__instance_rigid_body( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
78646
{
 
78647
#ifdef GENERATEDSAXPARSER_VALIDATION
 
78648
    if ( mValidate )
 
78649
    {
 
78650
 
 
78651
        bool validationResult = _validateBegin__instance_rigid_body( attributes, attributeDataPtr, validationDataPtr );
 
78652
        if ( !validationResult ) return false;
 
78653
 
 
78654
    } // validation
 
78655
#endif
 
78656
 
 
78657
instance_rigid_body__AttributeData* attributeData = newData<instance_rigid_body__AttributeData>(attributeDataPtr);
 
78658
 
 
78659
const ParserChar** attributeArray = attributes.attributes;
 
78660
if ( attributeArray )
 
78661
{
 
78662
    while (true)
 
78663
    {
 
78664
        const ParserChar * attribute = *attributeArray;
 
78665
        if ( !attribute )
 
78666
            break;
 
78667
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
78668
        attributeArray++;
 
78669
        if ( !attributeArray )
 
78670
            return false;
 
78671
        const ParserChar* attributeValue = *attributeArray;
 
78672
        attributeArray++;
 
78673
 
 
78674
 
 
78675
    switch ( hash )
 
78676
    {
 
78677
    case HASH_ATTRIBUTE_BODY:
 
78678
    {
 
78679
 
 
78680
attributeData->body = attributeValue;
 
78681
#ifdef GENERATEDSAXPARSER_VALIDATION
 
78682
    if ( mValidate )
 
78683
    {
 
78684
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->body, strlen(attributeData->body));
 
78685
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
78686
    {
 
78687
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
78688
            simpleTypeValidationResult,
 
78689
            HASH_ELEMENT_INSTANCE_RIGID_BODY,
 
78690
            HASH_ATTRIBUTE_BODY,
 
78691
            attributeValue) )
 
78692
        {
 
78693
            return false;
 
78694
        }
 
78695
    }
 
78696
    } // validation
 
78697
#endif
 
78698
 
 
78699
    break;
 
78700
    }
 
78701
    case HASH_ATTRIBUTE_SID:
 
78702
    {
 
78703
 
 
78704
attributeData->sid = attributeValue;
 
78705
#ifdef GENERATEDSAXPARSER_VALIDATION
 
78706
    if ( mValidate )
 
78707
    {
 
78708
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
78709
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
78710
    {
 
78711
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
78712
            simpleTypeValidationResult,
 
78713
            HASH_ELEMENT_INSTANCE_RIGID_BODY,
 
78714
            HASH_ATTRIBUTE_SID,
 
78715
            attributeValue) )
 
78716
        {
 
78717
            return false;
 
78718
        }
 
78719
    }
 
78720
    } // validation
 
78721
#endif
 
78722
 
 
78723
    break;
 
78724
    }
 
78725
    case HASH_ATTRIBUTE_NAME:
 
78726
    {
 
78727
 
 
78728
attributeData->name = attributeValue;
 
78729
 
 
78730
    break;
 
78731
    }
 
78732
    case HASH_ATTRIBUTE_TARGET:
 
78733
    {
 
78734
bool failed;
 
78735
attributeData->target = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
78736
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
78737
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
78738
        HASH_ELEMENT_INSTANCE_RIGID_BODY,
 
78739
        HASH_ATTRIBUTE_TARGET,
 
78740
        attributeValue))
 
78741
{
 
78742
    return false;
 
78743
}
 
78744
if ( !failed )
 
78745
    attributeData->present_attributes |= instance_rigid_body__AttributeData::ATTRIBUTE_TARGET_PRESENT;
 
78746
 
 
78747
    break;
 
78748
    }
 
78749
    default:
 
78750
    {
 
78751
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_INSTANCE_RIGID_BODY, attribute, attributeValue))
 
78752
            {return false;}
 
78753
    }
 
78754
    }
 
78755
    }
 
78756
}
 
78757
if ((attributeData->present_attributes & instance_rigid_body__AttributeData::ATTRIBUTE_TARGET_PRESENT) == 0)
 
78758
{
 
78759
    attributeData->target = COLLADABU::URI("");
 
78760
}
 
78761
if ( !attributeData->body )
 
78762
{
 
78763
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_INSTANCE_RIGID_BODY, HASH_ATTRIBUTE_BODY, 0 ) )
 
78764
        return false;
 
78765
}
 
78766
if ( (attributeData->present_attributes & instance_rigid_body__AttributeData::ATTRIBUTE_TARGET_PRESENT) == 0 )
 
78767
{
 
78768
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_INSTANCE_RIGID_BODY, HASH_ATTRIBUTE_TARGET, 0 ) )
 
78769
        return false;
 
78770
}
 
78771
 
 
78772
 
 
78773
    return true;
 
78774
}
 
78775
 
 
78776
//---------------------------------------------------------------------
 
78777
bool ColladaParserAutoGen15Private::_preEnd__instance_rigid_body()
 
78778
{
 
78779
#ifdef GENERATEDSAXPARSER_VALIDATION
 
78780
    if ( mValidate )
 
78781
    {
 
78782
 
 
78783
        bool validationResult = _validateEnd__instance_rigid_body();
 
78784
        if ( !validationResult ) return false;
 
78785
 
 
78786
    } // validation
 
78787
#endif
 
78788
 
 
78789
    return true;
 
78790
}
 
78791
 
 
78792
//---------------------------------------------------------------------
 
78793
bool ColladaParserAutoGen15Private::_freeAttributes__instance_rigid_body( void* attributeData )
 
78794
{
 
78795
    instance_rigid_body__AttributeData* typedAttributeData = static_cast<instance_rigid_body__AttributeData*>(attributeData);
 
78796
 
 
78797
    typedAttributeData->~instance_rigid_body__AttributeData();
 
78798
 
 
78799
    return true;
 
78800
}
 
78801
 
 
78802
//---------------------------------------------------------------------
 
78803
bool ColladaParserAutoGen15Private::_data__instance_rigid_body_type____technique_common( const ParserChar* text, size_t textLength )
 
78804
{
 
78805
    return true;
 
78806
}
 
78807
 
 
78808
//---------------------------------------------------------------------
 
78809
bool ColladaParserAutoGen15Private::_preBegin__instance_rigid_body_type____technique_common( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
78810
{
 
78811
#ifdef GENERATEDSAXPARSER_VALIDATION
 
78812
    if ( mValidate )
 
78813
    {
 
78814
 
 
78815
        bool validationResult = _validateBegin__instance_rigid_body_type____technique_common( attributes, attributeDataPtr, validationDataPtr );
 
78816
        if ( !validationResult ) return false;
 
78817
 
 
78818
    } // validation
 
78819
#endif
 
78820
 
 
78821
    return true;
 
78822
}
 
78823
 
 
78824
//---------------------------------------------------------------------
 
78825
bool ColladaParserAutoGen15Private::_preEnd__instance_rigid_body_type____technique_common()
 
78826
{
 
78827
#ifdef GENERATEDSAXPARSER_VALIDATION
 
78828
    if ( mValidate )
 
78829
    {
 
78830
 
 
78831
        bool validationResult = _validateEnd__instance_rigid_body_type____technique_common();
 
78832
        if ( !validationResult ) return false;
 
78833
 
 
78834
    } // validation
 
78835
#endif
 
78836
 
 
78837
    return true;
 
78838
}
 
78839
 
 
78840
//---------------------------------------------------------------------
 
78841
bool ColladaParserAutoGen15Private::_freeAttributes__instance_rigid_body_type____technique_common( void* attributeData )
 
78842
{
 
78843
    return true;
 
78844
}
 
78845
 
 
78846
//---------------------------------------------------------------------
 
78847
bool ColladaParserAutoGen15Private::_data__angular_velocity( const ParserChar* text, size_t textLength )
 
78848
{
 
78849
#ifdef GENERATEDSAXPARSER_VALIDATION
 
78850
    if ( mValidate )
 
78851
    {
 
78852
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
78853
        DISABLE_WARNING_UNUSED(validationData)
 
78854
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__angular_velocity, &validate__float3_type__stream, &validationData->validationWholeSize, 0);
 
78855
    }
 
78856
    else
 
78857
    {
 
78858
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__angular_velocity);
 
78859
    }
 
78860
#else
 
78861
    {
 
78862
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__angular_velocity);
 
78863
    } // validation
 
78864
#endif
 
78865
 
 
78866
}
 
78867
 
 
78868
//---------------------------------------------------------------------
 
78869
bool ColladaParserAutoGen15Private::_preBegin__angular_velocity( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
78870
{
 
78871
#ifdef GENERATEDSAXPARSER_VALIDATION
 
78872
    if ( mValidate )
 
78873
    {
 
78874
 
 
78875
        bool validationResult = _validateBegin__angular_velocity( attributes, attributeDataPtr, validationDataPtr );
 
78876
        if ( !validationResult ) return false;
 
78877
 
 
78878
    } // validation
 
78879
#endif
 
78880
 
 
78881
    return true;
 
78882
}
 
78883
 
 
78884
//---------------------------------------------------------------------
 
78885
bool ColladaParserAutoGen15Private::_preEnd__angular_velocity()
 
78886
{
 
78887
#ifdef GENERATEDSAXPARSER_VALIDATION
 
78888
    if ( mValidate )
 
78889
    {
 
78890
 
 
78891
        bool validationResult = _validateEnd__angular_velocity();
 
78892
        if ( !validationResult ) return false;
 
78893
 
 
78894
    } // validation
 
78895
#endif
 
78896
 
 
78897
#ifdef GENERATEDSAXPARSER_VALIDATION
 
78898
    if ( mValidate )
 
78899
    {
 
78900
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
78901
        DISABLE_WARNING_UNUSED(validationData)
 
78902
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__angular_velocity, &validate__float3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
78903
        ParserError::ErrorType simpleTypeValidationResult = validate__float3_type(0, (*(&validationData->validationWholeSize)));
 
78904
        mValidationDataStack.deleteObject();
 
78905
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
78906
        {
 
78907
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
78908
                simpleTypeValidationResult,
 
78909
                HASH_ELEMENT_ANGULAR_VELOCITY,
 
78910
                (ParserChar*)0, 0 ) )
 
78911
            {
 
78912
                return false;
 
78913
            }
 
78914
        }
 
78915
        return returnValue;
 
78916
    }
 
78917
    else
 
78918
    {
 
78919
return floatDataEnd( &ColladaParserAutoGen15::data__angular_velocity );
 
78920
    }
 
78921
#else
 
78922
    {
 
78923
return floatDataEnd( &ColladaParserAutoGen15::data__angular_velocity );
 
78924
    } // validation
 
78925
#endif
 
78926
 
 
78927
}
 
78928
 
 
78929
//---------------------------------------------------------------------
 
78930
bool ColladaParserAutoGen15Private::_freeAttributes__angular_velocity( void* attributeData )
 
78931
{
 
78932
    return true;
 
78933
}
 
78934
 
 
78935
//---------------------------------------------------------------------
 
78936
bool ColladaParserAutoGen15Private::_data__velocity( const ParserChar* text, size_t textLength )
 
78937
{
 
78938
#ifdef GENERATEDSAXPARSER_VALIDATION
 
78939
    if ( mValidate )
 
78940
    {
 
78941
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
78942
        DISABLE_WARNING_UNUSED(validationData)
 
78943
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__velocity, &validate__float3_type__stream, &validationData->validationWholeSize, 0);
 
78944
    }
 
78945
    else
 
78946
    {
 
78947
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__velocity);
 
78948
    }
 
78949
#else
 
78950
    {
 
78951
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__velocity);
 
78952
    } // validation
 
78953
#endif
 
78954
 
 
78955
}
 
78956
 
 
78957
//---------------------------------------------------------------------
 
78958
bool ColladaParserAutoGen15Private::_preBegin__velocity( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
78959
{
 
78960
#ifdef GENERATEDSAXPARSER_VALIDATION
 
78961
    if ( mValidate )
 
78962
    {
 
78963
 
 
78964
        bool validationResult = _validateBegin__velocity( attributes, attributeDataPtr, validationDataPtr );
 
78965
        if ( !validationResult ) return false;
 
78966
 
 
78967
    } // validation
 
78968
#endif
 
78969
 
 
78970
    return true;
 
78971
}
 
78972
 
 
78973
//---------------------------------------------------------------------
 
78974
bool ColladaParserAutoGen15Private::_preEnd__velocity()
 
78975
{
 
78976
#ifdef GENERATEDSAXPARSER_VALIDATION
 
78977
    if ( mValidate )
 
78978
    {
 
78979
 
 
78980
        bool validationResult = _validateEnd__velocity();
 
78981
        if ( !validationResult ) return false;
 
78982
 
 
78983
    } // validation
 
78984
#endif
 
78985
 
 
78986
#ifdef GENERATEDSAXPARSER_VALIDATION
 
78987
    if ( mValidate )
 
78988
    {
 
78989
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
78990
        DISABLE_WARNING_UNUSED(validationData)
 
78991
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__velocity, &validate__float3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
78992
        ParserError::ErrorType simpleTypeValidationResult = validate__float3_type(0, (*(&validationData->validationWholeSize)));
 
78993
        mValidationDataStack.deleteObject();
 
78994
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
78995
        {
 
78996
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
78997
                simpleTypeValidationResult,
 
78998
                HASH_ELEMENT_VELOCITY,
 
78999
                (ParserChar*)0, 0 ) )
 
79000
            {
 
79001
                return false;
 
79002
            }
 
79003
        }
 
79004
        return returnValue;
 
79005
    }
 
79006
    else
 
79007
    {
 
79008
return floatDataEnd( &ColladaParserAutoGen15::data__velocity );
 
79009
    }
 
79010
#else
 
79011
    {
 
79012
return floatDataEnd( &ColladaParserAutoGen15::data__velocity );
 
79013
    } // validation
 
79014
#endif
 
79015
 
 
79016
}
 
79017
 
 
79018
//---------------------------------------------------------------------
 
79019
bool ColladaParserAutoGen15Private::_freeAttributes__velocity( void* attributeData )
 
79020
{
 
79021
    return true;
 
79022
}
 
79023
 
 
79024
//---------------------------------------------------------------------
 
79025
const instance_rigid_body__technique_common__dynamic__AttributeData instance_rigid_body__technique_common__dynamic__AttributeData::DEFAULT = {0};
 
79026
 
 
79027
//---------------------------------------------------------------------
 
79028
bool ColladaParserAutoGen15Private::_data__instance_rigid_body__technique_common__dynamic( const ParserChar* text, size_t textLength )
 
79029
{
 
79030
if (!mLastIncompleteFragmentInCharacterData)
 
79031
{
 
79032
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
79033
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
79034
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
79035
}
 
79036
else
 
79037
{
 
79038
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
79039
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
79040
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
79041
        mLastIncompleteFragmentInCharacterData = tmp;
 
79042
    }
 
79043
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
79044
    mEndOfDataInCurrentObjectOnStack += textLength;
 
79045
}
 
79046
return true;
 
79047
}
 
79048
 
 
79049
//---------------------------------------------------------------------
 
79050
bool ColladaParserAutoGen15Private::_preBegin__instance_rigid_body__technique_common__dynamic( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
79051
{
 
79052
#ifdef GENERATEDSAXPARSER_VALIDATION
 
79053
    if ( mValidate )
 
79054
    {
 
79055
 
 
79056
        bool validationResult = _validateBegin__instance_rigid_body__technique_common__dynamic( attributes, attributeDataPtr, validationDataPtr );
 
79057
        if ( !validationResult ) return false;
 
79058
 
 
79059
    } // validation
 
79060
#endif
 
79061
 
 
79062
instance_rigid_body__technique_common__dynamic__AttributeData* attributeData = newData<instance_rigid_body__technique_common__dynamic__AttributeData>(attributeDataPtr);
 
79063
 
 
79064
const ParserChar** attributeArray = attributes.attributes;
 
79065
if ( attributeArray )
 
79066
{
 
79067
    while (true)
 
79068
    {
 
79069
        const ParserChar * attribute = *attributeArray;
 
79070
        if ( !attribute )
 
79071
            break;
 
79072
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
79073
        attributeArray++;
 
79074
        if ( !attributeArray )
 
79075
            return false;
 
79076
        const ParserChar* attributeValue = *attributeArray;
 
79077
        attributeArray++;
 
79078
 
 
79079
 
 
79080
    switch ( hash )
 
79081
    {
 
79082
    case HASH_ATTRIBUTE_SID:
 
79083
    {
 
79084
 
 
79085
attributeData->sid = attributeValue;
 
79086
#ifdef GENERATEDSAXPARSER_VALIDATION
 
79087
    if ( mValidate )
 
79088
    {
 
79089
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
79090
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
79091
    {
 
79092
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
79093
            simpleTypeValidationResult,
 
79094
            HASH_ELEMENT_DYNAMIC,
 
79095
            HASH_ATTRIBUTE_SID,
 
79096
            attributeValue) )
 
79097
        {
 
79098
            return false;
 
79099
        }
 
79100
    }
 
79101
    } // validation
 
79102
#endif
 
79103
 
 
79104
    break;
 
79105
    }
 
79106
    default:
 
79107
    {
 
79108
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_DYNAMIC, attribute, attributeValue))
 
79109
            {return false;}
 
79110
    }
 
79111
    }
 
79112
    }
 
79113
}
 
79114
 
 
79115
 
 
79116
    return true;
 
79117
}
 
79118
 
 
79119
//---------------------------------------------------------------------
 
79120
bool ColladaParserAutoGen15Private::_preEnd__instance_rigid_body__technique_common__dynamic()
 
79121
{
 
79122
#ifdef GENERATEDSAXPARSER_VALIDATION
 
79123
    if ( mValidate )
 
79124
    {
 
79125
 
 
79126
        bool validationResult = _validateEnd__instance_rigid_body__technique_common__dynamic();
 
79127
        if ( !validationResult ) return false;
 
79128
 
 
79129
    } // validation
 
79130
#endif
 
79131
 
 
79132
bool failed;
 
79133
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
79134
DISABLE_WARNING_UNUSED(ptrForErr)
 
79135
bool parameter = GeneratedSaxParser::Utils::toBool((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
79136
bool returnValue;
 
79137
if (!failed)
 
79138
{
 
79139
    returnValue = mImpl->data__instance_rigid_body__technique_common__dynamic(parameter);
 
79140
}
 
79141
else
 
79142
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_DYNAMIC, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
79143
if (mLastIncompleteFragmentInCharacterData)
 
79144
    mStackMemoryManager.deleteObject();
 
79145
mLastIncompleteFragmentInCharacterData = 0;
 
79146
mEndOfDataInCurrentObjectOnStack = 0;
 
79147
return returnValue;
 
79148
}
 
79149
 
 
79150
//---------------------------------------------------------------------
 
79151
bool ColladaParserAutoGen15Private::_freeAttributes__instance_rigid_body__technique_common__dynamic( void* attributeData )
 
79152
{
 
79153
    instance_rigid_body__technique_common__dynamic__AttributeData* typedAttributeData = static_cast<instance_rigid_body__technique_common__dynamic__AttributeData*>(attributeData);
 
79154
 
 
79155
    typedAttributeData->~instance_rigid_body__technique_common__dynamic__AttributeData();
 
79156
 
 
79157
    return true;
 
79158
}
 
79159
 
 
79160
//---------------------------------------------------------------------
 
79161
bool ColladaParserAutoGen15Private::_data__instance_rigid_body__technique_common__mass_frame( const ParserChar* text, size_t textLength )
 
79162
{
 
79163
    return true;
 
79164
}
 
79165
 
 
79166
//---------------------------------------------------------------------
 
79167
bool ColladaParserAutoGen15Private::_preBegin__instance_rigid_body__technique_common__mass_frame( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
79168
{
 
79169
#ifdef GENERATEDSAXPARSER_VALIDATION
 
79170
    if ( mValidate )
 
79171
    {
 
79172
 
 
79173
        bool validationResult = _validateBegin__instance_rigid_body__technique_common__mass_frame( attributes, attributeDataPtr, validationDataPtr );
 
79174
        if ( !validationResult ) return false;
 
79175
 
 
79176
    } // validation
 
79177
#endif
 
79178
 
 
79179
    return true;
 
79180
}
 
79181
 
 
79182
//---------------------------------------------------------------------
 
79183
bool ColladaParserAutoGen15Private::_preEnd__instance_rigid_body__technique_common__mass_frame()
 
79184
{
 
79185
#ifdef GENERATEDSAXPARSER_VALIDATION
 
79186
    if ( mValidate )
 
79187
    {
 
79188
 
 
79189
        bool validationResult = _validateEnd__instance_rigid_body__technique_common__mass_frame();
 
79190
        if ( !validationResult ) return false;
 
79191
 
 
79192
    } // validation
 
79193
#endif
 
79194
 
 
79195
    return true;
 
79196
}
 
79197
 
 
79198
//---------------------------------------------------------------------
 
79199
bool ColladaParserAutoGen15Private::_freeAttributes__instance_rigid_body__technique_common__mass_frame( void* attributeData )
 
79200
{
 
79201
    return true;
 
79202
}
 
79203
 
 
79204
//---------------------------------------------------------------------
 
79205
bool ColladaParserAutoGen15Private::_data__instance_rigid_body__technique_common__shape( const ParserChar* text, size_t textLength )
 
79206
{
 
79207
    return true;
 
79208
}
 
79209
 
 
79210
//---------------------------------------------------------------------
 
79211
bool ColladaParserAutoGen15Private::_preBegin__instance_rigid_body__technique_common__shape( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
79212
{
 
79213
#ifdef GENERATEDSAXPARSER_VALIDATION
 
79214
    if ( mValidate )
 
79215
    {
 
79216
 
 
79217
        bool validationResult = _validateBegin__instance_rigid_body__technique_common__shape( attributes, attributeDataPtr, validationDataPtr );
 
79218
        if ( !validationResult ) return false;
 
79219
 
 
79220
    } // validation
 
79221
#endif
 
79222
 
 
79223
    return true;
 
79224
}
 
79225
 
 
79226
//---------------------------------------------------------------------
 
79227
bool ColladaParserAutoGen15Private::_preEnd__instance_rigid_body__technique_common__shape()
 
79228
{
 
79229
#ifdef GENERATEDSAXPARSER_VALIDATION
 
79230
    if ( mValidate )
 
79231
    {
 
79232
 
 
79233
        bool validationResult = _validateEnd__instance_rigid_body__technique_common__shape();
 
79234
        if ( !validationResult ) return false;
 
79235
 
 
79236
    } // validation
 
79237
#endif
 
79238
 
 
79239
    return true;
 
79240
}
 
79241
 
 
79242
//---------------------------------------------------------------------
 
79243
bool ColladaParserAutoGen15Private::_freeAttributes__instance_rigid_body__technique_common__shape( void* attributeData )
 
79244
{
 
79245
    return true;
 
79246
}
 
79247
 
 
79248
//---------------------------------------------------------------------
 
79249
const instance_rigid_body__technique_common__shape__hollow__AttributeData instance_rigid_body__technique_common__shape__hollow__AttributeData::DEFAULT = {0};
 
79250
 
 
79251
//---------------------------------------------------------------------
 
79252
bool ColladaParserAutoGen15Private::_data__instance_rigid_body__technique_common__shape__hollow( const ParserChar* text, size_t textLength )
 
79253
{
 
79254
if (!mLastIncompleteFragmentInCharacterData)
 
79255
{
 
79256
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
79257
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
79258
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
79259
}
 
79260
else
 
79261
{
 
79262
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
79263
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
79264
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
79265
        mLastIncompleteFragmentInCharacterData = tmp;
 
79266
    }
 
79267
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
79268
    mEndOfDataInCurrentObjectOnStack += textLength;
 
79269
}
 
79270
return true;
 
79271
}
 
79272
 
 
79273
//---------------------------------------------------------------------
 
79274
bool ColladaParserAutoGen15Private::_preBegin__instance_rigid_body__technique_common__shape__hollow( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
79275
{
 
79276
#ifdef GENERATEDSAXPARSER_VALIDATION
 
79277
    if ( mValidate )
 
79278
    {
 
79279
 
 
79280
        bool validationResult = _validateBegin__instance_rigid_body__technique_common__shape__hollow( attributes, attributeDataPtr, validationDataPtr );
 
79281
        if ( !validationResult ) return false;
 
79282
 
 
79283
    } // validation
 
79284
#endif
 
79285
 
 
79286
instance_rigid_body__technique_common__shape__hollow__AttributeData* attributeData = newData<instance_rigid_body__technique_common__shape__hollow__AttributeData>(attributeDataPtr);
 
79287
 
 
79288
const ParserChar** attributeArray = attributes.attributes;
 
79289
if ( attributeArray )
 
79290
{
 
79291
    while (true)
 
79292
    {
 
79293
        const ParserChar * attribute = *attributeArray;
 
79294
        if ( !attribute )
 
79295
            break;
 
79296
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
79297
        attributeArray++;
 
79298
        if ( !attributeArray )
 
79299
            return false;
 
79300
        const ParserChar* attributeValue = *attributeArray;
 
79301
        attributeArray++;
 
79302
 
 
79303
 
 
79304
    switch ( hash )
 
79305
    {
 
79306
    case HASH_ATTRIBUTE_SID:
 
79307
    {
 
79308
 
 
79309
attributeData->sid = attributeValue;
 
79310
#ifdef GENERATEDSAXPARSER_VALIDATION
 
79311
    if ( mValidate )
 
79312
    {
 
79313
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
79314
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
79315
    {
 
79316
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
79317
            simpleTypeValidationResult,
 
79318
            HASH_ELEMENT_HOLLOW,
 
79319
            HASH_ATTRIBUTE_SID,
 
79320
            attributeValue) )
 
79321
        {
 
79322
            return false;
 
79323
        }
 
79324
    }
 
79325
    } // validation
 
79326
#endif
 
79327
 
 
79328
    break;
 
79329
    }
 
79330
    default:
 
79331
    {
 
79332
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_HOLLOW, attribute, attributeValue))
 
79333
            {return false;}
 
79334
    }
 
79335
    }
 
79336
    }
 
79337
}
 
79338
 
 
79339
 
 
79340
    return true;
 
79341
}
 
79342
 
 
79343
//---------------------------------------------------------------------
 
79344
bool ColladaParserAutoGen15Private::_preEnd__instance_rigid_body__technique_common__shape__hollow()
 
79345
{
 
79346
#ifdef GENERATEDSAXPARSER_VALIDATION
 
79347
    if ( mValidate )
 
79348
    {
 
79349
 
 
79350
        bool validationResult = _validateEnd__instance_rigid_body__technique_common__shape__hollow();
 
79351
        if ( !validationResult ) return false;
 
79352
 
 
79353
    } // validation
 
79354
#endif
 
79355
 
 
79356
bool failed;
 
79357
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
79358
DISABLE_WARNING_UNUSED(ptrForErr)
 
79359
bool parameter = GeneratedSaxParser::Utils::toBool((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
79360
bool returnValue;
 
79361
if (!failed)
 
79362
{
 
79363
    returnValue = mImpl->data__instance_rigid_body__technique_common__shape__hollow(parameter);
 
79364
}
 
79365
else
 
79366
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_HOLLOW, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
79367
if (mLastIncompleteFragmentInCharacterData)
 
79368
    mStackMemoryManager.deleteObject();
 
79369
mLastIncompleteFragmentInCharacterData = 0;
 
79370
mEndOfDataInCurrentObjectOnStack = 0;
 
79371
return returnValue;
 
79372
}
 
79373
 
 
79374
//---------------------------------------------------------------------
 
79375
bool ColladaParserAutoGen15Private::_freeAttributes__instance_rigid_body__technique_common__shape__hollow( void* attributeData )
 
79376
{
 
79377
    instance_rigid_body__technique_common__shape__hollow__AttributeData* typedAttributeData = static_cast<instance_rigid_body__technique_common__shape__hollow__AttributeData*>(attributeData);
 
79378
 
 
79379
    typedAttributeData->~instance_rigid_body__technique_common__shape__hollow__AttributeData();
 
79380
 
 
79381
    return true;
 
79382
}
 
79383
 
 
79384
//---------------------------------------------------------------------
 
79385
const instance_rigid_constraint__AttributeData instance_rigid_constraint__AttributeData::DEFAULT = {0, 0, 0};
 
79386
 
 
79387
//---------------------------------------------------------------------
 
79388
bool ColladaParserAutoGen15Private::_data__instance_rigid_constraint( const ParserChar* text, size_t textLength )
 
79389
{
 
79390
    return true;
 
79391
}
 
79392
 
 
79393
//---------------------------------------------------------------------
 
79394
bool ColladaParserAutoGen15Private::_preBegin__instance_rigid_constraint( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
79395
{
 
79396
#ifdef GENERATEDSAXPARSER_VALIDATION
 
79397
    if ( mValidate )
 
79398
    {
 
79399
 
 
79400
        bool validationResult = _validateBegin__instance_rigid_constraint( attributes, attributeDataPtr, validationDataPtr );
 
79401
        if ( !validationResult ) return false;
 
79402
 
 
79403
    } // validation
 
79404
#endif
 
79405
 
 
79406
instance_rigid_constraint__AttributeData* attributeData = newData<instance_rigid_constraint__AttributeData>(attributeDataPtr);
 
79407
 
 
79408
const ParserChar** attributeArray = attributes.attributes;
 
79409
if ( attributeArray )
 
79410
{
 
79411
    while (true)
 
79412
    {
 
79413
        const ParserChar * attribute = *attributeArray;
 
79414
        if ( !attribute )
 
79415
            break;
 
79416
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
79417
        attributeArray++;
 
79418
        if ( !attributeArray )
 
79419
            return false;
 
79420
        const ParserChar* attributeValue = *attributeArray;
 
79421
        attributeArray++;
 
79422
 
 
79423
 
 
79424
    switch ( hash )
 
79425
    {
 
79426
    case HASH_ATTRIBUTE_CONSTRAINT:
 
79427
    {
 
79428
 
 
79429
attributeData->constraint = attributeValue;
 
79430
#ifdef GENERATEDSAXPARSER_VALIDATION
 
79431
    if ( mValidate )
 
79432
    {
 
79433
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->constraint, strlen(attributeData->constraint));
 
79434
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
79435
    {
 
79436
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
79437
            simpleTypeValidationResult,
 
79438
            HASH_ELEMENT_INSTANCE_RIGID_CONSTRAINT,
 
79439
            HASH_ATTRIBUTE_CONSTRAINT,
 
79440
            attributeValue) )
 
79441
        {
 
79442
            return false;
 
79443
        }
 
79444
    }
 
79445
    } // validation
 
79446
#endif
 
79447
 
 
79448
    break;
 
79449
    }
 
79450
    case HASH_ATTRIBUTE_SID:
 
79451
    {
 
79452
 
 
79453
attributeData->sid = attributeValue;
 
79454
#ifdef GENERATEDSAXPARSER_VALIDATION
 
79455
    if ( mValidate )
 
79456
    {
 
79457
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
79458
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
79459
    {
 
79460
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
79461
            simpleTypeValidationResult,
 
79462
            HASH_ELEMENT_INSTANCE_RIGID_CONSTRAINT,
 
79463
            HASH_ATTRIBUTE_SID,
 
79464
            attributeValue) )
 
79465
        {
 
79466
            return false;
 
79467
        }
 
79468
    }
 
79469
    } // validation
 
79470
#endif
 
79471
 
 
79472
    break;
 
79473
    }
 
79474
    case HASH_ATTRIBUTE_NAME:
 
79475
    {
 
79476
 
 
79477
attributeData->name = attributeValue;
 
79478
 
 
79479
    break;
 
79480
    }
 
79481
    default:
 
79482
    {
 
79483
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_INSTANCE_RIGID_CONSTRAINT, attribute, attributeValue))
 
79484
            {return false;}
 
79485
    }
 
79486
    }
 
79487
    }
 
79488
}
 
79489
if ( !attributeData->constraint )
 
79490
{
 
79491
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_INSTANCE_RIGID_CONSTRAINT, HASH_ATTRIBUTE_CONSTRAINT, 0 ) )
 
79492
        return false;
 
79493
}
 
79494
 
 
79495
 
 
79496
    return true;
 
79497
}
 
79498
 
 
79499
//---------------------------------------------------------------------
 
79500
bool ColladaParserAutoGen15Private::_preEnd__instance_rigid_constraint()
 
79501
{
 
79502
#ifdef GENERATEDSAXPARSER_VALIDATION
 
79503
    if ( mValidate )
 
79504
    {
 
79505
 
 
79506
        bool validationResult = _validateEnd__instance_rigid_constraint();
 
79507
        if ( !validationResult ) return false;
 
79508
 
 
79509
    } // validation
 
79510
#endif
 
79511
 
 
79512
    return true;
 
79513
}
 
79514
 
 
79515
//---------------------------------------------------------------------
 
79516
bool ColladaParserAutoGen15Private::_freeAttributes__instance_rigid_constraint( void* attributeData )
 
79517
{
 
79518
    instance_rigid_constraint__AttributeData* typedAttributeData = static_cast<instance_rigid_constraint__AttributeData*>(attributeData);
 
79519
 
 
79520
    typedAttributeData->~instance_rigid_constraint__AttributeData();
 
79521
 
 
79522
    return true;
 
79523
}
 
79524
 
 
79525
//---------------------------------------------------------------------
 
79526
const library_physics_scenes__AttributeData library_physics_scenes__AttributeData::DEFAULT = {0, 0};
 
79527
 
 
79528
//---------------------------------------------------------------------
 
79529
bool ColladaParserAutoGen15Private::_data__library_physics_scenes( const ParserChar* text, size_t textLength )
 
79530
{
 
79531
    return true;
 
79532
}
 
79533
 
 
79534
//---------------------------------------------------------------------
 
79535
bool ColladaParserAutoGen15Private::_preBegin__library_physics_scenes( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
79536
{
 
79537
#ifdef GENERATEDSAXPARSER_VALIDATION
 
79538
    if ( mValidate )
 
79539
    {
 
79540
 
 
79541
        bool validationResult = _validateBegin__library_physics_scenes( attributes, attributeDataPtr, validationDataPtr );
 
79542
        if ( !validationResult ) return false;
 
79543
 
 
79544
    } // validation
 
79545
#endif
 
79546
 
 
79547
library_physics_scenes__AttributeData* attributeData = newData<library_physics_scenes__AttributeData>(attributeDataPtr);
 
79548
 
 
79549
const ParserChar** attributeArray = attributes.attributes;
 
79550
if ( attributeArray )
 
79551
{
 
79552
    while (true)
 
79553
    {
 
79554
        const ParserChar * attribute = *attributeArray;
 
79555
        if ( !attribute )
 
79556
            break;
 
79557
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
79558
        attributeArray++;
 
79559
        if ( !attributeArray )
 
79560
            return false;
 
79561
        const ParserChar* attributeValue = *attributeArray;
 
79562
        attributeArray++;
 
79563
 
 
79564
 
 
79565
    switch ( hash )
 
79566
    {
 
79567
    case HASH_ATTRIBUTE_ID:
 
79568
    {
 
79569
 
 
79570
attributeData->id = attributeValue;
 
79571
 
 
79572
    break;
 
79573
    }
 
79574
    case HASH_ATTRIBUTE_NAME:
 
79575
    {
 
79576
 
 
79577
attributeData->name = attributeValue;
 
79578
 
 
79579
    break;
 
79580
    }
 
79581
    default:
 
79582
    {
 
79583
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIBRARY_PHYSICS_SCENES, attribute, attributeValue))
 
79584
            {return false;}
 
79585
    }
 
79586
    }
 
79587
    }
 
79588
}
 
79589
 
 
79590
 
 
79591
    return true;
 
79592
}
 
79593
 
 
79594
//---------------------------------------------------------------------
 
79595
bool ColladaParserAutoGen15Private::_preEnd__library_physics_scenes()
 
79596
{
 
79597
#ifdef GENERATEDSAXPARSER_VALIDATION
 
79598
    if ( mValidate )
 
79599
    {
 
79600
 
 
79601
        bool validationResult = _validateEnd__library_physics_scenes();
 
79602
        if ( !validationResult ) return false;
 
79603
 
 
79604
    } // validation
 
79605
#endif
 
79606
 
 
79607
    return true;
 
79608
}
 
79609
 
 
79610
//---------------------------------------------------------------------
 
79611
bool ColladaParserAutoGen15Private::_freeAttributes__library_physics_scenes( void* attributeData )
 
79612
{
 
79613
    library_physics_scenes__AttributeData* typedAttributeData = static_cast<library_physics_scenes__AttributeData*>(attributeData);
 
79614
 
 
79615
    typedAttributeData->~library_physics_scenes__AttributeData();
 
79616
 
 
79617
    return true;
 
79618
}
 
79619
 
 
79620
//---------------------------------------------------------------------
 
79621
const physics_scene__AttributeData physics_scene__AttributeData::DEFAULT = {0, 0};
 
79622
 
 
79623
//---------------------------------------------------------------------
 
79624
bool ColladaParserAutoGen15Private::_data__physics_scene( const ParserChar* text, size_t textLength )
 
79625
{
 
79626
    return true;
 
79627
}
 
79628
 
 
79629
//---------------------------------------------------------------------
 
79630
bool ColladaParserAutoGen15Private::_preBegin__physics_scene( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
79631
{
 
79632
#ifdef GENERATEDSAXPARSER_VALIDATION
 
79633
    if ( mValidate )
 
79634
    {
 
79635
 
 
79636
        bool validationResult = _validateBegin__physics_scene( attributes, attributeDataPtr, validationDataPtr );
 
79637
        if ( !validationResult ) return false;
 
79638
 
 
79639
    } // validation
 
79640
#endif
 
79641
 
 
79642
physics_scene__AttributeData* attributeData = newData<physics_scene__AttributeData>(attributeDataPtr);
 
79643
 
 
79644
const ParserChar** attributeArray = attributes.attributes;
 
79645
if ( attributeArray )
 
79646
{
 
79647
    while (true)
 
79648
    {
 
79649
        const ParserChar * attribute = *attributeArray;
 
79650
        if ( !attribute )
 
79651
            break;
 
79652
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
79653
        attributeArray++;
 
79654
        if ( !attributeArray )
 
79655
            return false;
 
79656
        const ParserChar* attributeValue = *attributeArray;
 
79657
        attributeArray++;
 
79658
 
 
79659
 
 
79660
    switch ( hash )
 
79661
    {
 
79662
    case HASH_ATTRIBUTE_ID:
 
79663
    {
 
79664
 
 
79665
attributeData->id = attributeValue;
 
79666
 
 
79667
    break;
 
79668
    }
 
79669
    case HASH_ATTRIBUTE_NAME:
 
79670
    {
 
79671
 
 
79672
attributeData->name = attributeValue;
 
79673
 
 
79674
    break;
 
79675
    }
 
79676
    default:
 
79677
    {
 
79678
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_PHYSICS_SCENE, attribute, attributeValue))
 
79679
            {return false;}
 
79680
    }
 
79681
    }
 
79682
    }
 
79683
}
 
79684
 
 
79685
 
 
79686
    return true;
 
79687
}
 
79688
 
 
79689
//---------------------------------------------------------------------
 
79690
bool ColladaParserAutoGen15Private::_preEnd__physics_scene()
 
79691
{
 
79692
#ifdef GENERATEDSAXPARSER_VALIDATION
 
79693
    if ( mValidate )
 
79694
    {
 
79695
 
 
79696
        bool validationResult = _validateEnd__physics_scene();
 
79697
        if ( !validationResult ) return false;
 
79698
 
 
79699
    } // validation
 
79700
#endif
 
79701
 
 
79702
    return true;
 
79703
}
 
79704
 
 
79705
//---------------------------------------------------------------------
 
79706
bool ColladaParserAutoGen15Private::_freeAttributes__physics_scene( void* attributeData )
 
79707
{
 
79708
    physics_scene__AttributeData* typedAttributeData = static_cast<physics_scene__AttributeData*>(attributeData);
 
79709
 
 
79710
    typedAttributeData->~physics_scene__AttributeData();
 
79711
 
 
79712
    return true;
 
79713
}
 
79714
 
 
79715
//---------------------------------------------------------------------
 
79716
bool ColladaParserAutoGen15Private::_data__physics_scene_type____technique_common( const ParserChar* text, size_t textLength )
 
79717
{
 
79718
    return true;
 
79719
}
 
79720
 
 
79721
//---------------------------------------------------------------------
 
79722
bool ColladaParserAutoGen15Private::_preBegin__physics_scene_type____technique_common( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
79723
{
 
79724
#ifdef GENERATEDSAXPARSER_VALIDATION
 
79725
    if ( mValidate )
 
79726
    {
 
79727
 
 
79728
        bool validationResult = _validateBegin__physics_scene_type____technique_common( attributes, attributeDataPtr, validationDataPtr );
 
79729
        if ( !validationResult ) return false;
 
79730
 
 
79731
    } // validation
 
79732
#endif
 
79733
 
 
79734
    return true;
 
79735
}
 
79736
 
 
79737
//---------------------------------------------------------------------
 
79738
bool ColladaParserAutoGen15Private::_preEnd__physics_scene_type____technique_common()
 
79739
{
 
79740
#ifdef GENERATEDSAXPARSER_VALIDATION
 
79741
    if ( mValidate )
 
79742
    {
 
79743
 
 
79744
        bool validationResult = _validateEnd__physics_scene_type____technique_common();
 
79745
        if ( !validationResult ) return false;
 
79746
 
 
79747
    } // validation
 
79748
#endif
 
79749
 
 
79750
    return true;
 
79751
}
 
79752
 
 
79753
//---------------------------------------------------------------------
 
79754
bool ColladaParserAutoGen15Private::_freeAttributes__physics_scene_type____technique_common( void* attributeData )
 
79755
{
 
79756
    return true;
 
79757
}
 
79758
 
 
79759
//---------------------------------------------------------------------
 
79760
const gravity__AttributeData gravity__AttributeData::DEFAULT = {0};
 
79761
 
 
79762
//---------------------------------------------------------------------
 
79763
bool ColladaParserAutoGen15Private::_data__gravity( const ParserChar* text, size_t textLength )
 
79764
{
 
79765
#ifdef GENERATEDSAXPARSER_VALIDATION
 
79766
    if ( mValidate )
 
79767
    {
 
79768
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
79769
        DISABLE_WARNING_UNUSED(validationData)
 
79770
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__gravity, &validate__float3_type__stream, &validationData->validationWholeSize, 0);
 
79771
    }
 
79772
    else
 
79773
    {
 
79774
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__gravity);
 
79775
    }
 
79776
#else
 
79777
    {
 
79778
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__gravity);
 
79779
    } // validation
 
79780
#endif
 
79781
 
 
79782
}
 
79783
 
 
79784
//---------------------------------------------------------------------
 
79785
bool ColladaParserAutoGen15Private::_preBegin__gravity( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
79786
{
 
79787
#ifdef GENERATEDSAXPARSER_VALIDATION
 
79788
    if ( mValidate )
 
79789
    {
 
79790
 
 
79791
        bool validationResult = _validateBegin__gravity( attributes, attributeDataPtr, validationDataPtr );
 
79792
        if ( !validationResult ) return false;
 
79793
 
 
79794
    } // validation
 
79795
#endif
 
79796
 
 
79797
gravity__AttributeData* attributeData = newData<gravity__AttributeData>(attributeDataPtr);
 
79798
 
 
79799
const ParserChar** attributeArray = attributes.attributes;
 
79800
if ( attributeArray )
 
79801
{
 
79802
    while (true)
 
79803
    {
 
79804
        const ParserChar * attribute = *attributeArray;
 
79805
        if ( !attribute )
 
79806
            break;
 
79807
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
79808
        attributeArray++;
 
79809
        if ( !attributeArray )
 
79810
            return false;
 
79811
        const ParserChar* attributeValue = *attributeArray;
 
79812
        attributeArray++;
 
79813
 
 
79814
 
 
79815
    switch ( hash )
 
79816
    {
 
79817
    case HASH_ATTRIBUTE_SID:
 
79818
    {
 
79819
 
 
79820
attributeData->sid = attributeValue;
 
79821
#ifdef GENERATEDSAXPARSER_VALIDATION
 
79822
    if ( mValidate )
 
79823
    {
 
79824
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
79825
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
79826
    {
 
79827
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
79828
            simpleTypeValidationResult,
 
79829
            HASH_ELEMENT_GRAVITY,
 
79830
            HASH_ATTRIBUTE_SID,
 
79831
            attributeValue) )
 
79832
        {
 
79833
            return false;
 
79834
        }
 
79835
    }
 
79836
    } // validation
 
79837
#endif
 
79838
 
 
79839
    break;
 
79840
    }
 
79841
    default:
 
79842
    {
 
79843
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_GRAVITY, attribute, attributeValue))
 
79844
            {return false;}
 
79845
    }
 
79846
    }
 
79847
    }
 
79848
}
 
79849
 
 
79850
 
 
79851
    return true;
 
79852
}
 
79853
 
 
79854
//---------------------------------------------------------------------
 
79855
bool ColladaParserAutoGen15Private::_preEnd__gravity()
 
79856
{
 
79857
#ifdef GENERATEDSAXPARSER_VALIDATION
 
79858
    if ( mValidate )
 
79859
    {
 
79860
 
 
79861
        bool validationResult = _validateEnd__gravity();
 
79862
        if ( !validationResult ) return false;
 
79863
 
 
79864
    } // validation
 
79865
#endif
 
79866
 
 
79867
#ifdef GENERATEDSAXPARSER_VALIDATION
 
79868
    if ( mValidate )
 
79869
    {
 
79870
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
79871
        DISABLE_WARNING_UNUSED(validationData)
 
79872
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__gravity, &validate__float3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
79873
        ParserError::ErrorType simpleTypeValidationResult = validate__float3_type(0, (*(&validationData->validationWholeSize)));
 
79874
        mValidationDataStack.deleteObject();
 
79875
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
79876
        {
 
79877
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
79878
                simpleTypeValidationResult,
 
79879
                HASH_ELEMENT_GRAVITY,
 
79880
                (ParserChar*)0, 0 ) )
 
79881
            {
 
79882
                return false;
 
79883
            }
 
79884
        }
 
79885
        return returnValue;
 
79886
    }
 
79887
    else
 
79888
    {
 
79889
return floatDataEnd( &ColladaParserAutoGen15::data__gravity );
 
79890
    }
 
79891
#else
 
79892
    {
 
79893
return floatDataEnd( &ColladaParserAutoGen15::data__gravity );
 
79894
    } // validation
 
79895
#endif
 
79896
 
 
79897
}
 
79898
 
 
79899
//---------------------------------------------------------------------
 
79900
bool ColladaParserAutoGen15Private::_freeAttributes__gravity( void* attributeData )
 
79901
{
 
79902
    gravity__AttributeData* typedAttributeData = static_cast<gravity__AttributeData*>(attributeData);
 
79903
 
 
79904
    typedAttributeData->~gravity__AttributeData();
 
79905
 
 
79906
    return true;
 
79907
}
 
79908
 
 
79909
//---------------------------------------------------------------------
 
79910
const time_step__AttributeData time_step__AttributeData::DEFAULT = {0};
 
79911
 
 
79912
//---------------------------------------------------------------------
 
79913
bool ColladaParserAutoGen15Private::_data__time_step( const ParserChar* text, size_t textLength )
 
79914
{
 
79915
if (!mLastIncompleteFragmentInCharacterData)
 
79916
{
 
79917
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
79918
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
79919
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
79920
}
 
79921
else
 
79922
{
 
79923
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
79924
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
79925
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
79926
        mLastIncompleteFragmentInCharacterData = tmp;
 
79927
    }
 
79928
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
79929
    mEndOfDataInCurrentObjectOnStack += textLength;
 
79930
}
 
79931
return true;
 
79932
}
 
79933
 
 
79934
//---------------------------------------------------------------------
 
79935
bool ColladaParserAutoGen15Private::_preBegin__time_step( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
79936
{
 
79937
#ifdef GENERATEDSAXPARSER_VALIDATION
 
79938
    if ( mValidate )
 
79939
    {
 
79940
 
 
79941
        bool validationResult = _validateBegin__time_step( attributes, attributeDataPtr, validationDataPtr );
 
79942
        if ( !validationResult ) return false;
 
79943
 
 
79944
    } // validation
 
79945
#endif
 
79946
 
 
79947
time_step__AttributeData* attributeData = newData<time_step__AttributeData>(attributeDataPtr);
 
79948
 
 
79949
const ParserChar** attributeArray = attributes.attributes;
 
79950
if ( attributeArray )
 
79951
{
 
79952
    while (true)
 
79953
    {
 
79954
        const ParserChar * attribute = *attributeArray;
 
79955
        if ( !attribute )
 
79956
            break;
 
79957
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
79958
        attributeArray++;
 
79959
        if ( !attributeArray )
 
79960
            return false;
 
79961
        const ParserChar* attributeValue = *attributeArray;
 
79962
        attributeArray++;
 
79963
 
 
79964
 
 
79965
    switch ( hash )
 
79966
    {
 
79967
    case HASH_ATTRIBUTE_SID:
 
79968
    {
 
79969
 
 
79970
attributeData->sid = attributeValue;
 
79971
#ifdef GENERATEDSAXPARSER_VALIDATION
 
79972
    if ( mValidate )
 
79973
    {
 
79974
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
79975
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
79976
    {
 
79977
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
79978
            simpleTypeValidationResult,
 
79979
            HASH_ELEMENT_TIME_STEP,
 
79980
            HASH_ATTRIBUTE_SID,
 
79981
            attributeValue) )
 
79982
        {
 
79983
            return false;
 
79984
        }
 
79985
    }
 
79986
    } // validation
 
79987
#endif
 
79988
 
 
79989
    break;
 
79990
    }
 
79991
    default:
 
79992
    {
 
79993
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_TIME_STEP, attribute, attributeValue))
 
79994
            {return false;}
 
79995
    }
 
79996
    }
 
79997
    }
 
79998
}
 
79999
 
 
80000
 
 
80001
    return true;
 
80002
}
 
80003
 
 
80004
//---------------------------------------------------------------------
 
80005
bool ColladaParserAutoGen15Private::_preEnd__time_step()
 
80006
{
 
80007
#ifdef GENERATEDSAXPARSER_VALIDATION
 
80008
    if ( mValidate )
 
80009
    {
 
80010
 
 
80011
        bool validationResult = _validateEnd__time_step();
 
80012
        if ( !validationResult ) return false;
 
80013
 
 
80014
    } // validation
 
80015
#endif
 
80016
 
 
80017
bool failed;
 
80018
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
80019
DISABLE_WARNING_UNUSED(ptrForErr)
 
80020
float parameter = GeneratedSaxParser::Utils::toFloat((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
80021
bool returnValue;
 
80022
if (!failed)
 
80023
{
 
80024
    returnValue = mImpl->data__time_step(parameter);
 
80025
}
 
80026
else
 
80027
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_TIME_STEP, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
80028
if (mLastIncompleteFragmentInCharacterData)
 
80029
    mStackMemoryManager.deleteObject();
 
80030
mLastIncompleteFragmentInCharacterData = 0;
 
80031
mEndOfDataInCurrentObjectOnStack = 0;
 
80032
return returnValue;
 
80033
}
 
80034
 
 
80035
//---------------------------------------------------------------------
 
80036
bool ColladaParserAutoGen15Private::_freeAttributes__time_step( void* attributeData )
 
80037
{
 
80038
    time_step__AttributeData* typedAttributeData = static_cast<time_step__AttributeData*>(attributeData);
 
80039
 
 
80040
    typedAttributeData->~time_step__AttributeData();
 
80041
 
 
80042
    return true;
 
80043
}
 
80044
 
 
80045
//---------------------------------------------------------------------
 
80046
const library_visual_scenes__AttributeData library_visual_scenes__AttributeData::DEFAULT = {0, 0};
 
80047
 
 
80048
//---------------------------------------------------------------------
 
80049
bool ColladaParserAutoGen15Private::_data__library_visual_scenes( const ParserChar* text, size_t textLength )
 
80050
{
 
80051
    return true;
 
80052
}
 
80053
 
 
80054
//---------------------------------------------------------------------
 
80055
bool ColladaParserAutoGen15Private::_preBegin__library_visual_scenes( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
80056
{
 
80057
#ifdef GENERATEDSAXPARSER_VALIDATION
 
80058
    if ( mValidate )
 
80059
    {
 
80060
 
 
80061
        bool validationResult = _validateBegin__library_visual_scenes( attributes, attributeDataPtr, validationDataPtr );
 
80062
        if ( !validationResult ) return false;
 
80063
 
 
80064
    } // validation
 
80065
#endif
 
80066
 
 
80067
library_visual_scenes__AttributeData* attributeData = newData<library_visual_scenes__AttributeData>(attributeDataPtr);
 
80068
 
 
80069
const ParserChar** attributeArray = attributes.attributes;
 
80070
if ( attributeArray )
 
80071
{
 
80072
    while (true)
 
80073
    {
 
80074
        const ParserChar * attribute = *attributeArray;
 
80075
        if ( !attribute )
 
80076
            break;
 
80077
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
80078
        attributeArray++;
 
80079
        if ( !attributeArray )
 
80080
            return false;
 
80081
        const ParserChar* attributeValue = *attributeArray;
 
80082
        attributeArray++;
 
80083
 
 
80084
 
 
80085
    switch ( hash )
 
80086
    {
 
80087
    case HASH_ATTRIBUTE_ID:
 
80088
    {
 
80089
 
 
80090
attributeData->id = attributeValue;
 
80091
 
 
80092
    break;
 
80093
    }
 
80094
    case HASH_ATTRIBUTE_NAME:
 
80095
    {
 
80096
 
 
80097
attributeData->name = attributeValue;
 
80098
 
 
80099
    break;
 
80100
    }
 
80101
    default:
 
80102
    {
 
80103
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIBRARY_VISUAL_SCENES, attribute, attributeValue))
 
80104
            {return false;}
 
80105
    }
 
80106
    }
 
80107
    }
 
80108
}
 
80109
 
 
80110
 
 
80111
    return true;
 
80112
}
 
80113
 
 
80114
//---------------------------------------------------------------------
 
80115
bool ColladaParserAutoGen15Private::_preEnd__library_visual_scenes()
 
80116
{
 
80117
#ifdef GENERATEDSAXPARSER_VALIDATION
 
80118
    if ( mValidate )
 
80119
    {
 
80120
 
 
80121
        bool validationResult = _validateEnd__library_visual_scenes();
 
80122
        if ( !validationResult ) return false;
 
80123
 
 
80124
    } // validation
 
80125
#endif
 
80126
 
 
80127
    return true;
 
80128
}
 
80129
 
 
80130
//---------------------------------------------------------------------
 
80131
bool ColladaParserAutoGen15Private::_freeAttributes__library_visual_scenes( void* attributeData )
 
80132
{
 
80133
    library_visual_scenes__AttributeData* typedAttributeData = static_cast<library_visual_scenes__AttributeData*>(attributeData);
 
80134
 
 
80135
    typedAttributeData->~library_visual_scenes__AttributeData();
 
80136
 
 
80137
    return true;
 
80138
}
 
80139
 
 
80140
//---------------------------------------------------------------------
 
80141
const visual_scene__AttributeData visual_scene__AttributeData::DEFAULT = {0, 0};
 
80142
 
 
80143
//---------------------------------------------------------------------
 
80144
bool ColladaParserAutoGen15Private::_data__visual_scene( const ParserChar* text, size_t textLength )
 
80145
{
 
80146
    return true;
 
80147
}
 
80148
 
 
80149
//---------------------------------------------------------------------
 
80150
bool ColladaParserAutoGen15Private::_preBegin__visual_scene( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
80151
{
 
80152
#ifdef GENERATEDSAXPARSER_VALIDATION
 
80153
    if ( mValidate )
 
80154
    {
 
80155
 
 
80156
        bool validationResult = _validateBegin__visual_scene( attributes, attributeDataPtr, validationDataPtr );
 
80157
        if ( !validationResult ) return false;
 
80158
 
 
80159
    } // validation
 
80160
#endif
 
80161
 
 
80162
visual_scene__AttributeData* attributeData = newData<visual_scene__AttributeData>(attributeDataPtr);
 
80163
 
 
80164
const ParserChar** attributeArray = attributes.attributes;
 
80165
if ( attributeArray )
 
80166
{
 
80167
    while (true)
 
80168
    {
 
80169
        const ParserChar * attribute = *attributeArray;
 
80170
        if ( !attribute )
 
80171
            break;
 
80172
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
80173
        attributeArray++;
 
80174
        if ( !attributeArray )
 
80175
            return false;
 
80176
        const ParserChar* attributeValue = *attributeArray;
 
80177
        attributeArray++;
 
80178
 
 
80179
 
 
80180
    switch ( hash )
 
80181
    {
 
80182
    case HASH_ATTRIBUTE_ID:
 
80183
    {
 
80184
 
 
80185
attributeData->id = attributeValue;
 
80186
 
 
80187
    break;
 
80188
    }
 
80189
    case HASH_ATTRIBUTE_NAME:
 
80190
    {
 
80191
 
 
80192
attributeData->name = attributeValue;
 
80193
 
 
80194
    break;
 
80195
    }
 
80196
    default:
 
80197
    {
 
80198
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_VISUAL_SCENE, attribute, attributeValue))
 
80199
            {return false;}
 
80200
    }
 
80201
    }
 
80202
    }
 
80203
}
 
80204
 
 
80205
 
 
80206
    return true;
 
80207
}
 
80208
 
 
80209
//---------------------------------------------------------------------
 
80210
bool ColladaParserAutoGen15Private::_preEnd__visual_scene()
 
80211
{
 
80212
#ifdef GENERATEDSAXPARSER_VALIDATION
 
80213
    if ( mValidate )
 
80214
    {
 
80215
 
 
80216
        bool validationResult = _validateEnd__visual_scene();
 
80217
        if ( !validationResult ) return false;
 
80218
 
 
80219
    } // validation
 
80220
#endif
 
80221
 
 
80222
    return true;
 
80223
}
 
80224
 
 
80225
//---------------------------------------------------------------------
 
80226
bool ColladaParserAutoGen15Private::_freeAttributes__visual_scene( void* attributeData )
 
80227
{
 
80228
    visual_scene__AttributeData* typedAttributeData = static_cast<visual_scene__AttributeData*>(attributeData);
 
80229
 
 
80230
    typedAttributeData->~visual_scene__AttributeData();
 
80231
 
 
80232
    return true;
 
80233
}
 
80234
 
 
80235
//---------------------------------------------------------------------
 
80236
const evaluate_scene__AttributeData evaluate_scene__AttributeData::DEFAULT = {0, 0, 0, true};
 
80237
 
 
80238
//---------------------------------------------------------------------
 
80239
bool ColladaParserAutoGen15Private::_data__evaluate_scene( const ParserChar* text, size_t textLength )
 
80240
{
 
80241
    return true;
 
80242
}
 
80243
 
 
80244
//---------------------------------------------------------------------
 
80245
bool ColladaParserAutoGen15Private::_preBegin__evaluate_scene( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
80246
{
 
80247
#ifdef GENERATEDSAXPARSER_VALIDATION
 
80248
    if ( mValidate )
 
80249
    {
 
80250
 
 
80251
        bool validationResult = _validateBegin__evaluate_scene( attributes, attributeDataPtr, validationDataPtr );
 
80252
        if ( !validationResult ) return false;
 
80253
 
 
80254
    } // validation
 
80255
#endif
 
80256
 
 
80257
evaluate_scene__AttributeData* attributeData = newData<evaluate_scene__AttributeData>(attributeDataPtr);
 
80258
 
 
80259
const ParserChar** attributeArray = attributes.attributes;
 
80260
if ( attributeArray )
 
80261
{
 
80262
    while (true)
 
80263
    {
 
80264
        const ParserChar * attribute = *attributeArray;
 
80265
        if ( !attribute )
 
80266
            break;
 
80267
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
80268
        attributeArray++;
 
80269
        if ( !attributeArray )
 
80270
            return false;
 
80271
        const ParserChar* attributeValue = *attributeArray;
 
80272
        attributeArray++;
 
80273
 
 
80274
 
 
80275
    switch ( hash )
 
80276
    {
 
80277
    case HASH_ATTRIBUTE_ID:
 
80278
    {
 
80279
 
 
80280
attributeData->id = attributeValue;
 
80281
 
 
80282
    break;
 
80283
    }
 
80284
    case HASH_ATTRIBUTE_SID:
 
80285
    {
 
80286
 
 
80287
attributeData->sid = attributeValue;
 
80288
#ifdef GENERATEDSAXPARSER_VALIDATION
 
80289
    if ( mValidate )
 
80290
    {
 
80291
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
80292
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
80293
    {
 
80294
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
80295
            simpleTypeValidationResult,
 
80296
            HASH_ELEMENT_EVALUATE_SCENE,
 
80297
            HASH_ATTRIBUTE_SID,
 
80298
            attributeValue) )
 
80299
        {
 
80300
            return false;
 
80301
        }
 
80302
    }
 
80303
    } // validation
 
80304
#endif
 
80305
 
 
80306
    break;
 
80307
    }
 
80308
    case HASH_ATTRIBUTE_NAME:
 
80309
    {
 
80310
 
 
80311
attributeData->name = attributeValue;
 
80312
 
 
80313
    break;
 
80314
    }
 
80315
    case HASH_ATTRIBUTE_ENABLE:
 
80316
    {
 
80317
bool failed;
 
80318
attributeData->enable = GeneratedSaxParser::Utils::toBool(attributeValue, failed);
 
80319
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
80320
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
80321
        HASH_ELEMENT_EVALUATE_SCENE,
 
80322
        HASH_ATTRIBUTE_ENABLE,
 
80323
        attributeValue))
 
80324
{
 
80325
    return false;
 
80326
}
 
80327
 
 
80328
    break;
 
80329
    }
 
80330
    default:
 
80331
    {
 
80332
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_EVALUATE_SCENE, attribute, attributeValue))
 
80333
            {return false;}
 
80334
    }
 
80335
    }
 
80336
    }
 
80337
}
 
80338
 
 
80339
 
 
80340
    return true;
 
80341
}
 
80342
 
 
80343
//---------------------------------------------------------------------
 
80344
bool ColladaParserAutoGen15Private::_preEnd__evaluate_scene()
 
80345
{
 
80346
#ifdef GENERATEDSAXPARSER_VALIDATION
 
80347
    if ( mValidate )
 
80348
    {
 
80349
 
 
80350
        bool validationResult = _validateEnd__evaluate_scene();
 
80351
        if ( !validationResult ) return false;
 
80352
 
 
80353
    } // validation
 
80354
#endif
 
80355
 
 
80356
    return true;
 
80357
}
 
80358
 
 
80359
//---------------------------------------------------------------------
 
80360
bool ColladaParserAutoGen15Private::_freeAttributes__evaluate_scene( void* attributeData )
 
80361
{
 
80362
    evaluate_scene__AttributeData* typedAttributeData = static_cast<evaluate_scene__AttributeData*>(attributeData);
 
80363
 
 
80364
    typedAttributeData->~evaluate_scene__AttributeData();
 
80365
 
 
80366
    return true;
 
80367
}
 
80368
 
 
80369
//---------------------------------------------------------------------
 
80370
const render__AttributeData render__AttributeData::DEFAULT = {0, 0, 0, 0};
 
80371
 
 
80372
//---------------------------------------------------------------------
 
80373
bool ColladaParserAutoGen15Private::_data__render( const ParserChar* text, size_t textLength )
 
80374
{
 
80375
    return true;
 
80376
}
 
80377
 
 
80378
//---------------------------------------------------------------------
 
80379
bool ColladaParserAutoGen15Private::_preBegin__render( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
80380
{
 
80381
#ifdef GENERATEDSAXPARSER_VALIDATION
 
80382
    if ( mValidate )
 
80383
    {
 
80384
 
 
80385
        bool validationResult = _validateBegin__render( attributes, attributeDataPtr, validationDataPtr );
 
80386
        if ( !validationResult ) return false;
 
80387
 
 
80388
    } // validation
 
80389
#endif
 
80390
 
 
80391
render__AttributeData* attributeData = newData<render__AttributeData>(attributeDataPtr);
 
80392
 
 
80393
const ParserChar** attributeArray = attributes.attributes;
 
80394
if ( attributeArray )
 
80395
{
 
80396
    while (true)
 
80397
    {
 
80398
        const ParserChar * attribute = *attributeArray;
 
80399
        if ( !attribute )
 
80400
            break;
 
80401
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
80402
        attributeArray++;
 
80403
        if ( !attributeArray )
 
80404
            return false;
 
80405
        const ParserChar* attributeValue = *attributeArray;
 
80406
        attributeArray++;
 
80407
 
 
80408
 
 
80409
    switch ( hash )
 
80410
    {
 
80411
    case HASH_ATTRIBUTE_SID:
 
80412
    {
 
80413
 
 
80414
attributeData->sid = attributeValue;
 
80415
#ifdef GENERATEDSAXPARSER_VALIDATION
 
80416
    if ( mValidate )
 
80417
    {
 
80418
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
80419
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
80420
    {
 
80421
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
80422
            simpleTypeValidationResult,
 
80423
            HASH_ELEMENT_RENDER,
 
80424
            HASH_ATTRIBUTE_SID,
 
80425
            attributeValue) )
 
80426
        {
 
80427
            return false;
 
80428
        }
 
80429
    }
 
80430
    } // validation
 
80431
#endif
 
80432
 
 
80433
    break;
 
80434
    }
 
80435
    case HASH_ATTRIBUTE_NAME:
 
80436
    {
 
80437
 
 
80438
attributeData->name = attributeValue;
 
80439
 
 
80440
    break;
 
80441
    }
 
80442
    case HASH_ATTRIBUTE_CAMERA_NODE:
 
80443
    {
 
80444
bool failed;
 
80445
attributeData->camera_node = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
80446
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
80447
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
80448
        HASH_ELEMENT_RENDER,
 
80449
        HASH_ATTRIBUTE_CAMERA_NODE,
 
80450
        attributeValue))
 
80451
{
 
80452
    return false;
 
80453
}
 
80454
if ( !failed )
 
80455
    attributeData->present_attributes |= render__AttributeData::ATTRIBUTE_CAMERA_NODE_PRESENT;
 
80456
 
 
80457
    break;
 
80458
    }
 
80459
    default:
 
80460
    {
 
80461
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_RENDER, attribute, attributeValue))
 
80462
            {return false;}
 
80463
    }
 
80464
    }
 
80465
    }
 
80466
}
 
80467
if ((attributeData->present_attributes & render__AttributeData::ATTRIBUTE_CAMERA_NODE_PRESENT) == 0)
 
80468
{
 
80469
    attributeData->camera_node = COLLADABU::URI("");
 
80470
}
 
80471
 
 
80472
 
 
80473
    return true;
 
80474
}
 
80475
 
 
80476
//---------------------------------------------------------------------
 
80477
bool ColladaParserAutoGen15Private::_preEnd__render()
 
80478
{
 
80479
#ifdef GENERATEDSAXPARSER_VALIDATION
 
80480
    if ( mValidate )
 
80481
    {
 
80482
 
 
80483
        bool validationResult = _validateEnd__render();
 
80484
        if ( !validationResult ) return false;
 
80485
 
 
80486
    } // validation
 
80487
#endif
 
80488
 
 
80489
    return true;
 
80490
}
 
80491
 
 
80492
//---------------------------------------------------------------------
 
80493
bool ColladaParserAutoGen15Private::_freeAttributes__render( void* attributeData )
 
80494
{
 
80495
    render__AttributeData* typedAttributeData = static_cast<render__AttributeData*>(attributeData);
 
80496
 
 
80497
    typedAttributeData->~render__AttributeData();
 
80498
 
 
80499
    return true;
 
80500
}
 
80501
 
 
80502
//---------------------------------------------------------------------
 
80503
bool ColladaParserAutoGen15Private::_data__layer( const ParserChar* text, size_t textLength )
 
80504
{
 
80505
if (!mLastIncompleteFragmentInCharacterData)
 
80506
{
 
80507
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
80508
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
80509
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
80510
}
 
80511
else
 
80512
{
 
80513
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
80514
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
80515
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
80516
        mLastIncompleteFragmentInCharacterData = tmp;
 
80517
    }
 
80518
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
80519
    mEndOfDataInCurrentObjectOnStack += textLength;
 
80520
}
 
80521
return true;
 
80522
}
 
80523
 
 
80524
//---------------------------------------------------------------------
 
80525
bool ColladaParserAutoGen15Private::_preBegin__layer( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
80526
{
 
80527
#ifdef GENERATEDSAXPARSER_VALIDATION
 
80528
    if ( mValidate )
 
80529
    {
 
80530
 
 
80531
        bool validationResult = _validateBegin__layer( attributes, attributeDataPtr, validationDataPtr );
 
80532
        if ( !validationResult ) return false;
 
80533
 
 
80534
    } // validation
 
80535
#endif
 
80536
 
 
80537
    return true;
 
80538
}
 
80539
 
 
80540
//---------------------------------------------------------------------
 
80541
bool ColladaParserAutoGen15Private::_preEnd__layer()
 
80542
{
 
80543
#ifdef GENERATEDSAXPARSER_VALIDATION
 
80544
    if ( mValidate )
 
80545
    {
 
80546
 
 
80547
        bool validationResult = _validateEnd__layer();
 
80548
        if ( !validationResult ) return false;
 
80549
 
 
80550
    } // validation
 
80551
#endif
 
80552
 
 
80553
bool returnValue = true;
 
80554
#ifdef GENERATEDSAXPARSER_VALIDATION
 
80555
    if ( mValidate )
 
80556
    {
 
80557
ParserError::ErrorType simpleTypeValidationResult = validate__NCName(mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData);
 
80558
if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
80559
{
 
80560
    ParserChar msg[21];
 
80561
    Utils::fillErrorMsg(msg, mLastIncompleteFragmentInCharacterData, 20);
 
80562
    if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
80563
        simpleTypeValidationResult,
 
80564
        0,
 
80565
        msg) )
 
80566
    {
 
80567
        returnValue =  false;
 
80568
    }
 
80569
}
 
80570
if (!returnValue)
 
80571
{
 
80572
    mStackMemoryManager.deleteObject();
 
80573
    mLastIncompleteFragmentInCharacterData = 0;
 
80574
    mEndOfDataInCurrentObjectOnStack = 0;
 
80575
    return returnValue;
 
80576
}
 
80577
    } // validation
 
80578
#endif
 
80579
returnValue = mImpl->data__layer(mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData);
 
80580
mStackMemoryManager.deleteObject();
 
80581
mLastIncompleteFragmentInCharacterData = 0;
 
80582
mEndOfDataInCurrentObjectOnStack = 0;
 
80583
return returnValue;
 
80584
 
 
80585
}
 
80586
 
 
80587
//---------------------------------------------------------------------
 
80588
bool ColladaParserAutoGen15Private::_freeAttributes__layer( void* attributeData )
 
80589
{
 
80590
    return true;
 
80591
}
 
80592
 
 
80593
//---------------------------------------------------------------------
 
80594
const render__instance_material__AttributeData render__instance_material__AttributeData::DEFAULT = {0, 0};
 
80595
 
 
80596
//---------------------------------------------------------------------
 
80597
bool ColladaParserAutoGen15Private::_data__render__instance_material( const ParserChar* text, size_t textLength )
 
80598
{
 
80599
    return true;
 
80600
}
 
80601
 
 
80602
//---------------------------------------------------------------------
 
80603
bool ColladaParserAutoGen15Private::_preBegin__render__instance_material( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
80604
{
 
80605
#ifdef GENERATEDSAXPARSER_VALIDATION
 
80606
    if ( mValidate )
 
80607
    {
 
80608
 
 
80609
        bool validationResult = _validateBegin__render__instance_material( attributes, attributeDataPtr, validationDataPtr );
 
80610
        if ( !validationResult ) return false;
 
80611
 
 
80612
    } // validation
 
80613
#endif
 
80614
 
 
80615
render__instance_material__AttributeData* attributeData = newData<render__instance_material__AttributeData>(attributeDataPtr);
 
80616
 
 
80617
const ParserChar** attributeArray = attributes.attributes;
 
80618
if ( attributeArray )
 
80619
{
 
80620
    while (true)
 
80621
    {
 
80622
        const ParserChar * attribute = *attributeArray;
 
80623
        if ( !attribute )
 
80624
            break;
 
80625
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
80626
        attributeArray++;
 
80627
        if ( !attributeArray )
 
80628
            return false;
 
80629
        const ParserChar* attributeValue = *attributeArray;
 
80630
        attributeArray++;
 
80631
 
 
80632
 
 
80633
    switch ( hash )
 
80634
    {
 
80635
    case HASH_ATTRIBUTE_URL:
 
80636
    {
 
80637
bool failed;
 
80638
attributeData->url = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
80639
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
80640
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
80641
        HASH_ELEMENT_INSTANCE_MATERIAL,
 
80642
        HASH_ATTRIBUTE_URL,
 
80643
        attributeValue))
 
80644
{
 
80645
    return false;
 
80646
}
 
80647
if ( !failed )
 
80648
    attributeData->present_attributes |= render__instance_material__AttributeData::ATTRIBUTE_URL_PRESENT;
 
80649
 
 
80650
    break;
 
80651
    }
 
80652
    default:
 
80653
    {
 
80654
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_INSTANCE_MATERIAL, attribute, attributeValue))
 
80655
            {return false;}
 
80656
    }
 
80657
    }
 
80658
    }
 
80659
}
 
80660
if ((attributeData->present_attributes & render__instance_material__AttributeData::ATTRIBUTE_URL_PRESENT) == 0)
 
80661
{
 
80662
    attributeData->url = COLLADABU::URI("");
 
80663
}
 
80664
if ( (attributeData->present_attributes & render__instance_material__AttributeData::ATTRIBUTE_URL_PRESENT) == 0 )
 
80665
{
 
80666
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_INSTANCE_MATERIAL, HASH_ATTRIBUTE_URL, 0 ) )
 
80667
        return false;
 
80668
}
 
80669
 
 
80670
 
 
80671
    return true;
 
80672
}
 
80673
 
 
80674
//---------------------------------------------------------------------
 
80675
bool ColladaParserAutoGen15Private::_preEnd__render__instance_material()
 
80676
{
 
80677
#ifdef GENERATEDSAXPARSER_VALIDATION
 
80678
    if ( mValidate )
 
80679
    {
 
80680
 
 
80681
        bool validationResult = _validateEnd__render__instance_material();
 
80682
        if ( !validationResult ) return false;
 
80683
 
 
80684
    } // validation
 
80685
#endif
 
80686
 
 
80687
    return true;
 
80688
}
 
80689
 
 
80690
//---------------------------------------------------------------------
 
80691
bool ColladaParserAutoGen15Private::_freeAttributes__render__instance_material( void* attributeData )
 
80692
{
 
80693
    render__instance_material__AttributeData* typedAttributeData = static_cast<render__instance_material__AttributeData*>(attributeData);
 
80694
 
 
80695
    typedAttributeData->~render__instance_material__AttributeData();
 
80696
 
 
80697
    return true;
 
80698
}
 
80699
 
 
80700
//---------------------------------------------------------------------
 
80701
const technique_override__AttributeData technique_override__AttributeData::DEFAULT = {0, 0};
 
80702
 
 
80703
//---------------------------------------------------------------------
 
80704
bool ColladaParserAutoGen15Private::_data__technique_override( const ParserChar* text, size_t textLength )
 
80705
{
 
80706
    return true;
 
80707
}
 
80708
 
 
80709
//---------------------------------------------------------------------
 
80710
bool ColladaParserAutoGen15Private::_preBegin__technique_override( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
80711
{
 
80712
#ifdef GENERATEDSAXPARSER_VALIDATION
 
80713
    if ( mValidate )
 
80714
    {
 
80715
 
 
80716
        bool validationResult = _validateBegin__technique_override( attributes, attributeDataPtr, validationDataPtr );
 
80717
        if ( !validationResult ) return false;
 
80718
 
 
80719
    } // validation
 
80720
#endif
 
80721
 
 
80722
technique_override__AttributeData* attributeData = newData<technique_override__AttributeData>(attributeDataPtr);
 
80723
 
 
80724
const ParserChar** attributeArray = attributes.attributes;
 
80725
if ( attributeArray )
 
80726
{
 
80727
    while (true)
 
80728
    {
 
80729
        const ParserChar * attribute = *attributeArray;
 
80730
        if ( !attribute )
 
80731
            break;
 
80732
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
80733
        attributeArray++;
 
80734
        if ( !attributeArray )
 
80735
            return false;
 
80736
        const ParserChar* attributeValue = *attributeArray;
 
80737
        attributeArray++;
 
80738
 
 
80739
 
 
80740
    switch ( hash )
 
80741
    {
 
80742
    case HASH_ATTRIBUTE_REF:
 
80743
    {
 
80744
 
 
80745
attributeData->ref = attributeValue;
 
80746
#ifdef GENERATEDSAXPARSER_VALIDATION
 
80747
    if ( mValidate )
 
80748
    {
 
80749
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->ref, strlen(attributeData->ref));
 
80750
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
80751
    {
 
80752
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
80753
            simpleTypeValidationResult,
 
80754
            HASH_ELEMENT_TECHNIQUE_OVERRIDE,
 
80755
            HASH_ATTRIBUTE_REF,
 
80756
            attributeValue) )
 
80757
        {
 
80758
            return false;
 
80759
        }
 
80760
    }
 
80761
    } // validation
 
80762
#endif
 
80763
 
 
80764
    break;
 
80765
    }
 
80766
    case HASH_ATTRIBUTE_PASS:
 
80767
    {
 
80768
 
 
80769
attributeData->pass = attributeValue;
 
80770
#ifdef GENERATEDSAXPARSER_VALIDATION
 
80771
    if ( mValidate )
 
80772
    {
 
80773
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->pass, strlen(attributeData->pass));
 
80774
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
80775
    {
 
80776
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
80777
            simpleTypeValidationResult,
 
80778
            HASH_ELEMENT_TECHNIQUE_OVERRIDE,
 
80779
            HASH_ATTRIBUTE_PASS,
 
80780
            attributeValue) )
 
80781
        {
 
80782
            return false;
 
80783
        }
 
80784
    }
 
80785
    } // validation
 
80786
#endif
 
80787
 
 
80788
    break;
 
80789
    }
 
80790
    default:
 
80791
    {
 
80792
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_TECHNIQUE_OVERRIDE, attribute, attributeValue))
 
80793
            {return false;}
 
80794
    }
 
80795
    }
 
80796
    }
 
80797
}
 
80798
if ( !attributeData->ref )
 
80799
{
 
80800
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_TECHNIQUE_OVERRIDE, HASH_ATTRIBUTE_REF, 0 ) )
 
80801
        return false;
 
80802
}
 
80803
 
 
80804
 
 
80805
    return true;
 
80806
}
 
80807
 
 
80808
//---------------------------------------------------------------------
 
80809
bool ColladaParserAutoGen15Private::_preEnd__technique_override()
 
80810
{
 
80811
#ifdef GENERATEDSAXPARSER_VALIDATION
 
80812
    if ( mValidate )
 
80813
    {
 
80814
 
 
80815
        bool validationResult = _validateEnd__technique_override();
 
80816
        if ( !validationResult ) return false;
 
80817
 
 
80818
    } // validation
 
80819
#endif
 
80820
 
 
80821
    return true;
 
80822
}
 
80823
 
 
80824
//---------------------------------------------------------------------
 
80825
bool ColladaParserAutoGen15Private::_freeAttributes__technique_override( void* attributeData )
 
80826
{
 
80827
    technique_override__AttributeData* typedAttributeData = static_cast<technique_override__AttributeData*>(attributeData);
 
80828
 
 
80829
    typedAttributeData->~technique_override__AttributeData();
 
80830
 
 
80831
    return true;
 
80832
}
 
80833
 
 
80834
//---------------------------------------------------------------------
 
80835
const render__instance_material__bind__AttributeData render__instance_material__bind__AttributeData::DEFAULT = {0, 0};
 
80836
 
 
80837
//---------------------------------------------------------------------
 
80838
bool ColladaParserAutoGen15Private::_data__render__instance_material__bind( const ParserChar* text, size_t textLength )
 
80839
{
 
80840
    return true;
 
80841
}
 
80842
 
 
80843
//---------------------------------------------------------------------
 
80844
bool ColladaParserAutoGen15Private::_preBegin__render__instance_material__bind( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
80845
{
 
80846
#ifdef GENERATEDSAXPARSER_VALIDATION
 
80847
    if ( mValidate )
 
80848
    {
 
80849
 
 
80850
        bool validationResult = _validateBegin__render__instance_material__bind( attributes, attributeDataPtr, validationDataPtr );
 
80851
        if ( !validationResult ) return false;
 
80852
 
 
80853
    } // validation
 
80854
#endif
 
80855
 
 
80856
render__instance_material__bind__AttributeData* attributeData = newData<render__instance_material__bind__AttributeData>(attributeDataPtr);
 
80857
 
 
80858
const ParserChar** attributeArray = attributes.attributes;
 
80859
if ( attributeArray )
 
80860
{
 
80861
    while (true)
 
80862
    {
 
80863
        const ParserChar * attribute = *attributeArray;
 
80864
        if ( !attribute )
 
80865
            break;
 
80866
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
80867
        attributeArray++;
 
80868
        if ( !attributeArray )
 
80869
            return false;
 
80870
        const ParserChar* attributeValue = *attributeArray;
 
80871
        attributeArray++;
 
80872
 
 
80873
 
 
80874
    switch ( hash )
 
80875
    {
 
80876
    case HASH_ATTRIBUTE_SEMANTIC:
 
80877
    {
 
80878
 
 
80879
attributeData->semantic = attributeValue;
 
80880
#ifdef GENERATEDSAXPARSER_VALIDATION
 
80881
    if ( mValidate )
 
80882
    {
 
80883
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->semantic, strlen(attributeData->semantic));
 
80884
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
80885
    {
 
80886
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
80887
            simpleTypeValidationResult,
 
80888
            HASH_ELEMENT_BIND,
 
80889
            HASH_ATTRIBUTE_SEMANTIC,
 
80890
            attributeValue) )
 
80891
        {
 
80892
            return false;
 
80893
        }
 
80894
    }
 
80895
    } // validation
 
80896
#endif
 
80897
 
 
80898
    break;
 
80899
    }
 
80900
    case HASH_ATTRIBUTE_TARGET:
 
80901
    {
 
80902
 
 
80903
attributeData->target = attributeValue;
 
80904
 
 
80905
    break;
 
80906
    }
 
80907
    default:
 
80908
    {
 
80909
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_BIND, attribute, attributeValue))
 
80910
            {return false;}
 
80911
    }
 
80912
    }
 
80913
    }
 
80914
}
 
80915
if ( !attributeData->semantic )
 
80916
{
 
80917
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_BIND, HASH_ATTRIBUTE_SEMANTIC, 0 ) )
 
80918
        return false;
 
80919
}
 
80920
if ( !attributeData->target )
 
80921
{
 
80922
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_BIND, HASH_ATTRIBUTE_TARGET, 0 ) )
 
80923
        return false;
 
80924
}
 
80925
 
 
80926
 
 
80927
    return true;
 
80928
}
 
80929
 
 
80930
//---------------------------------------------------------------------
 
80931
bool ColladaParserAutoGen15Private::_preEnd__render__instance_material__bind()
 
80932
{
 
80933
#ifdef GENERATEDSAXPARSER_VALIDATION
 
80934
    if ( mValidate )
 
80935
    {
 
80936
 
 
80937
        bool validationResult = _validateEnd__render__instance_material__bind();
 
80938
        if ( !validationResult ) return false;
 
80939
 
 
80940
    } // validation
 
80941
#endif
 
80942
 
 
80943
    return true;
 
80944
}
 
80945
 
 
80946
//---------------------------------------------------------------------
 
80947
bool ColladaParserAutoGen15Private::_freeAttributes__render__instance_material__bind( void* attributeData )
 
80948
{
 
80949
    render__instance_material__bind__AttributeData* typedAttributeData = static_cast<render__instance_material__bind__AttributeData*>(attributeData);
 
80950
 
 
80951
    typedAttributeData->~render__instance_material__bind__AttributeData();
 
80952
 
 
80953
    return true;
 
80954
}
 
80955
 
 
80956
//---------------------------------------------------------------------
 
80957
const library_joints__AttributeData library_joints__AttributeData::DEFAULT = {0, 0};
 
80958
 
 
80959
//---------------------------------------------------------------------
 
80960
bool ColladaParserAutoGen15Private::_data__library_joints( const ParserChar* text, size_t textLength )
 
80961
{
 
80962
    return true;
 
80963
}
 
80964
 
 
80965
//---------------------------------------------------------------------
 
80966
bool ColladaParserAutoGen15Private::_preBegin__library_joints( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
80967
{
 
80968
#ifdef GENERATEDSAXPARSER_VALIDATION
 
80969
    if ( mValidate )
 
80970
    {
 
80971
 
 
80972
        bool validationResult = _validateBegin__library_joints( attributes, attributeDataPtr, validationDataPtr );
 
80973
        if ( !validationResult ) return false;
 
80974
 
 
80975
    } // validation
 
80976
#endif
 
80977
 
 
80978
library_joints__AttributeData* attributeData = newData<library_joints__AttributeData>(attributeDataPtr);
 
80979
 
 
80980
const ParserChar** attributeArray = attributes.attributes;
 
80981
if ( attributeArray )
 
80982
{
 
80983
    while (true)
 
80984
    {
 
80985
        const ParserChar * attribute = *attributeArray;
 
80986
        if ( !attribute )
 
80987
            break;
 
80988
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
80989
        attributeArray++;
 
80990
        if ( !attributeArray )
 
80991
            return false;
 
80992
        const ParserChar* attributeValue = *attributeArray;
 
80993
        attributeArray++;
 
80994
 
 
80995
 
 
80996
    switch ( hash )
 
80997
    {
 
80998
    case HASH_ATTRIBUTE_ID:
 
80999
    {
 
81000
 
 
81001
attributeData->id = attributeValue;
 
81002
 
 
81003
    break;
 
81004
    }
 
81005
    case HASH_ATTRIBUTE_NAME:
 
81006
    {
 
81007
 
 
81008
attributeData->name = attributeValue;
 
81009
 
 
81010
    break;
 
81011
    }
 
81012
    default:
 
81013
    {
 
81014
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIBRARY_JOINTS, attribute, attributeValue))
 
81015
            {return false;}
 
81016
    }
 
81017
    }
 
81018
    }
 
81019
}
 
81020
 
 
81021
 
 
81022
    return true;
 
81023
}
 
81024
 
 
81025
//---------------------------------------------------------------------
 
81026
bool ColladaParserAutoGen15Private::_preEnd__library_joints()
 
81027
{
 
81028
#ifdef GENERATEDSAXPARSER_VALIDATION
 
81029
    if ( mValidate )
 
81030
    {
 
81031
 
 
81032
        bool validationResult = _validateEnd__library_joints();
 
81033
        if ( !validationResult ) return false;
 
81034
 
 
81035
    } // validation
 
81036
#endif
 
81037
 
 
81038
    return true;
 
81039
}
 
81040
 
 
81041
//---------------------------------------------------------------------
 
81042
bool ColladaParserAutoGen15Private::_freeAttributes__library_joints( void* attributeData )
 
81043
{
 
81044
    library_joints__AttributeData* typedAttributeData = static_cast<library_joints__AttributeData*>(attributeData);
 
81045
 
 
81046
    typedAttributeData->~library_joints__AttributeData();
 
81047
 
 
81048
    return true;
 
81049
}
 
81050
 
 
81051
//---------------------------------------------------------------------
 
81052
const joint__AttributeData joint__AttributeData::DEFAULT = {0, 0, 0};
 
81053
 
 
81054
//---------------------------------------------------------------------
 
81055
bool ColladaParserAutoGen15Private::_data__joint( const ParserChar* text, size_t textLength )
 
81056
{
 
81057
    return true;
 
81058
}
 
81059
 
 
81060
//---------------------------------------------------------------------
 
81061
bool ColladaParserAutoGen15Private::_preBegin__joint( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
81062
{
 
81063
#ifdef GENERATEDSAXPARSER_VALIDATION
 
81064
    if ( mValidate )
 
81065
    {
 
81066
 
 
81067
        bool validationResult = _validateBegin__joint( attributes, attributeDataPtr, validationDataPtr );
 
81068
        if ( !validationResult ) return false;
 
81069
 
 
81070
    } // validation
 
81071
#endif
 
81072
 
 
81073
joint__AttributeData* attributeData = newData<joint__AttributeData>(attributeDataPtr);
 
81074
 
 
81075
const ParserChar** attributeArray = attributes.attributes;
 
81076
if ( attributeArray )
 
81077
{
 
81078
    while (true)
 
81079
    {
 
81080
        const ParserChar * attribute = *attributeArray;
 
81081
        if ( !attribute )
 
81082
            break;
 
81083
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
81084
        attributeArray++;
 
81085
        if ( !attributeArray )
 
81086
            return false;
 
81087
        const ParserChar* attributeValue = *attributeArray;
 
81088
        attributeArray++;
 
81089
 
 
81090
 
 
81091
    switch ( hash )
 
81092
    {
 
81093
    case HASH_ATTRIBUTE_ID:
 
81094
    {
 
81095
 
 
81096
attributeData->id = attributeValue;
 
81097
 
 
81098
    break;
 
81099
    }
 
81100
    case HASH_ATTRIBUTE_NAME:
 
81101
    {
 
81102
 
 
81103
attributeData->name = attributeValue;
 
81104
 
 
81105
    break;
 
81106
    }
 
81107
    case HASH_ATTRIBUTE_SID:
 
81108
    {
 
81109
 
 
81110
attributeData->sid = attributeValue;
 
81111
#ifdef GENERATEDSAXPARSER_VALIDATION
 
81112
    if ( mValidate )
 
81113
    {
 
81114
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
81115
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
81116
    {
 
81117
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
81118
            simpleTypeValidationResult,
 
81119
            HASH_ELEMENT_JOINT,
 
81120
            HASH_ATTRIBUTE_SID,
 
81121
            attributeValue) )
 
81122
        {
 
81123
            return false;
 
81124
        }
 
81125
    }
 
81126
    } // validation
 
81127
#endif
 
81128
 
 
81129
    break;
 
81130
    }
 
81131
    default:
 
81132
    {
 
81133
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_JOINT, attribute, attributeValue))
 
81134
            {return false;}
 
81135
    }
 
81136
    }
 
81137
    }
 
81138
}
 
81139
 
 
81140
 
 
81141
    return true;
 
81142
}
 
81143
 
 
81144
//---------------------------------------------------------------------
 
81145
bool ColladaParserAutoGen15Private::_preEnd__joint()
 
81146
{
 
81147
#ifdef GENERATEDSAXPARSER_VALIDATION
 
81148
    if ( mValidate )
 
81149
    {
 
81150
 
 
81151
        bool validationResult = _validateEnd__joint();
 
81152
        if ( !validationResult ) return false;
 
81153
 
 
81154
    } // validation
 
81155
#endif
 
81156
 
 
81157
    return true;
 
81158
}
 
81159
 
 
81160
//---------------------------------------------------------------------
 
81161
bool ColladaParserAutoGen15Private::_freeAttributes__joint( void* attributeData )
 
81162
{
 
81163
    joint__AttributeData* typedAttributeData = static_cast<joint__AttributeData*>(attributeData);
 
81164
 
 
81165
    typedAttributeData->~joint__AttributeData();
 
81166
 
 
81167
    return true;
 
81168
}
 
81169
 
 
81170
//---------------------------------------------------------------------
 
81171
const prismatic__AttributeData prismatic__AttributeData::DEFAULT = {0};
 
81172
 
 
81173
//---------------------------------------------------------------------
 
81174
bool ColladaParserAutoGen15Private::_data__prismatic( const ParserChar* text, size_t textLength )
 
81175
{
 
81176
    return true;
 
81177
}
 
81178
 
 
81179
//---------------------------------------------------------------------
 
81180
bool ColladaParserAutoGen15Private::_preBegin__prismatic( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
81181
{
 
81182
#ifdef GENERATEDSAXPARSER_VALIDATION
 
81183
    if ( mValidate )
 
81184
    {
 
81185
 
 
81186
        bool validationResult = _validateBegin__prismatic( attributes, attributeDataPtr, validationDataPtr );
 
81187
        if ( !validationResult ) return false;
 
81188
 
 
81189
    } // validation
 
81190
#endif
 
81191
 
 
81192
prismatic__AttributeData* attributeData = newData<prismatic__AttributeData>(attributeDataPtr);
 
81193
 
 
81194
const ParserChar** attributeArray = attributes.attributes;
 
81195
if ( attributeArray )
 
81196
{
 
81197
    while (true)
 
81198
    {
 
81199
        const ParserChar * attribute = *attributeArray;
 
81200
        if ( !attribute )
 
81201
            break;
 
81202
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
81203
        attributeArray++;
 
81204
        if ( !attributeArray )
 
81205
            return false;
 
81206
        const ParserChar* attributeValue = *attributeArray;
 
81207
        attributeArray++;
 
81208
 
 
81209
 
 
81210
    switch ( hash )
 
81211
    {
 
81212
    case HASH_ATTRIBUTE_SID:
 
81213
    {
 
81214
 
 
81215
attributeData->sid = attributeValue;
 
81216
#ifdef GENERATEDSAXPARSER_VALIDATION
 
81217
    if ( mValidate )
 
81218
    {
 
81219
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
81220
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
81221
    {
 
81222
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
81223
            simpleTypeValidationResult,
 
81224
            HASH_ELEMENT_PRISMATIC,
 
81225
            HASH_ATTRIBUTE_SID,
 
81226
            attributeValue) )
 
81227
        {
 
81228
            return false;
 
81229
        }
 
81230
    }
 
81231
    } // validation
 
81232
#endif
 
81233
 
 
81234
    break;
 
81235
    }
 
81236
    default:
 
81237
    {
 
81238
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_PRISMATIC, attribute, attributeValue))
 
81239
            {return false;}
 
81240
    }
 
81241
    }
 
81242
    }
 
81243
}
 
81244
 
 
81245
 
 
81246
    return true;
 
81247
}
 
81248
 
 
81249
//---------------------------------------------------------------------
 
81250
bool ColladaParserAutoGen15Private::_preEnd__prismatic()
 
81251
{
 
81252
#ifdef GENERATEDSAXPARSER_VALIDATION
 
81253
    if ( mValidate )
 
81254
    {
 
81255
 
 
81256
        bool validationResult = _validateEnd__prismatic();
 
81257
        if ( !validationResult ) return false;
 
81258
 
 
81259
    } // validation
 
81260
#endif
 
81261
 
 
81262
    return true;
 
81263
}
 
81264
 
 
81265
//---------------------------------------------------------------------
 
81266
bool ColladaParserAutoGen15Private::_freeAttributes__prismatic( void* attributeData )
 
81267
{
 
81268
    prismatic__AttributeData* typedAttributeData = static_cast<prismatic__AttributeData*>(attributeData);
 
81269
 
 
81270
    typedAttributeData->~prismatic__AttributeData();
 
81271
 
 
81272
    return true;
 
81273
}
 
81274
 
 
81275
//---------------------------------------------------------------------
 
81276
const axis____axis_type__AttributeData axis____axis_type__AttributeData::DEFAULT = {0, 0};
 
81277
 
 
81278
//---------------------------------------------------------------------
 
81279
bool ColladaParserAutoGen15Private::_data__axis____axis_type( const ParserChar* text, size_t textLength )
 
81280
{
 
81281
#ifdef GENERATEDSAXPARSER_VALIDATION
 
81282
    if ( mValidate )
 
81283
    {
 
81284
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
81285
        DISABLE_WARNING_UNUSED(validationData)
 
81286
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__axis____axis_type, &validate__float3_type__stream, &validationData->validationWholeSize, 0);
 
81287
    }
 
81288
    else
 
81289
    {
 
81290
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__axis____axis_type);
 
81291
    }
 
81292
#else
 
81293
    {
 
81294
return characterData2FloatData(text, textLength, &ColladaParserAutoGen15::data__axis____axis_type);
 
81295
    } // validation
 
81296
#endif
 
81297
 
 
81298
}
 
81299
 
 
81300
//---------------------------------------------------------------------
 
81301
bool ColladaParserAutoGen15Private::_preBegin__axis____axis_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
81302
{
 
81303
#ifdef GENERATEDSAXPARSER_VALIDATION
 
81304
    if ( mValidate )
 
81305
    {
 
81306
 
 
81307
        bool validationResult = _validateBegin__axis____axis_type( attributes, attributeDataPtr, validationDataPtr );
 
81308
        if ( !validationResult ) return false;
 
81309
 
 
81310
    } // validation
 
81311
#endif
 
81312
 
 
81313
axis____axis_type__AttributeData* attributeData = newData<axis____axis_type__AttributeData>(attributeDataPtr);
 
81314
 
 
81315
const ParserChar** attributeArray = attributes.attributes;
 
81316
if ( attributeArray )
 
81317
{
 
81318
    while (true)
 
81319
    {
 
81320
        const ParserChar * attribute = *attributeArray;
 
81321
        if ( !attribute )
 
81322
            break;
 
81323
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
81324
        attributeArray++;
 
81325
        if ( !attributeArray )
 
81326
            return false;
 
81327
        const ParserChar* attributeValue = *attributeArray;
 
81328
        attributeArray++;
 
81329
 
 
81330
 
 
81331
    switch ( hash )
 
81332
    {
 
81333
    case HASH_ATTRIBUTE_SID:
 
81334
    {
 
81335
 
 
81336
attributeData->sid = attributeValue;
 
81337
#ifdef GENERATEDSAXPARSER_VALIDATION
 
81338
    if ( mValidate )
 
81339
    {
 
81340
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
81341
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
81342
    {
 
81343
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
81344
            simpleTypeValidationResult,
 
81345
            HASH_ELEMENT_AXIS,
 
81346
            HASH_ATTRIBUTE_SID,
 
81347
            attributeValue) )
 
81348
        {
 
81349
            return false;
 
81350
        }
 
81351
    }
 
81352
    } // validation
 
81353
#endif
 
81354
 
 
81355
    break;
 
81356
    }
 
81357
    case HASH_ATTRIBUTE_NAME:
 
81358
    {
 
81359
 
 
81360
attributeData->name = attributeValue;
 
81361
 
 
81362
    break;
 
81363
    }
 
81364
    default:
 
81365
    {
 
81366
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_AXIS, attribute, attributeValue))
 
81367
            {return false;}
 
81368
    }
 
81369
    }
 
81370
    }
 
81371
}
 
81372
 
 
81373
 
 
81374
    return true;
 
81375
}
 
81376
 
 
81377
//---------------------------------------------------------------------
 
81378
bool ColladaParserAutoGen15Private::_preEnd__axis____axis_type()
 
81379
{
 
81380
#ifdef GENERATEDSAXPARSER_VALIDATION
 
81381
    if ( mValidate )
 
81382
    {
 
81383
 
 
81384
        bool validationResult = _validateEnd__axis____axis_type();
 
81385
        if ( !validationResult ) return false;
 
81386
 
 
81387
    } // validation
 
81388
#endif
 
81389
 
 
81390
#ifdef GENERATEDSAXPARSER_VALIDATION
 
81391
    if ( mValidate )
 
81392
    {
 
81393
        origin____float3_type__ValidationData* validationData = (origin____float3_type__ValidationData*)mValidationDataStack.top();
 
81394
        DISABLE_WARNING_UNUSED(validationData)
 
81395
bool returnValue = floatDataEnd( &ColladaParserAutoGen15::data__axis____axis_type, &validate__float3_type__streamEnd, &validationData->validationWholeSize, 0 );
 
81396
        ParserError::ErrorType simpleTypeValidationResult = validate__float3_type(0, (*(&validationData->validationWholeSize)));
 
81397
        mValidationDataStack.deleteObject();
 
81398
        if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
81399
        {
 
81400
            if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
81401
                simpleTypeValidationResult,
 
81402
                HASH_ELEMENT_AXIS,
 
81403
                (ParserChar*)0, 0 ) )
 
81404
            {
 
81405
                return false;
 
81406
            }
 
81407
        }
 
81408
        return returnValue;
 
81409
    }
 
81410
    else
 
81411
    {
 
81412
return floatDataEnd( &ColladaParserAutoGen15::data__axis____axis_type );
 
81413
    }
 
81414
#else
 
81415
    {
 
81416
return floatDataEnd( &ColladaParserAutoGen15::data__axis____axis_type );
 
81417
    } // validation
 
81418
#endif
 
81419
 
 
81420
}
 
81421
 
 
81422
//---------------------------------------------------------------------
 
81423
bool ColladaParserAutoGen15Private::_freeAttributes__axis____axis_type( void* attributeData )
 
81424
{
 
81425
    axis____axis_type__AttributeData* typedAttributeData = static_cast<axis____axis_type__AttributeData*>(attributeData);
 
81426
 
 
81427
    typedAttributeData->~axis____axis_type__AttributeData();
 
81428
 
 
81429
    return true;
 
81430
}
 
81431
 
 
81432
//---------------------------------------------------------------------
 
81433
bool ColladaParserAutoGen15Private::_data__limits____joint_limits_type( const ParserChar* text, size_t textLength )
 
81434
{
 
81435
    return true;
 
81436
}
 
81437
 
 
81438
//---------------------------------------------------------------------
 
81439
bool ColladaParserAutoGen15Private::_preBegin__limits____joint_limits_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
81440
{
 
81441
#ifdef GENERATEDSAXPARSER_VALIDATION
 
81442
    if ( mValidate )
 
81443
    {
 
81444
 
 
81445
        bool validationResult = _validateBegin__limits____joint_limits_type( attributes, attributeDataPtr, validationDataPtr );
 
81446
        if ( !validationResult ) return false;
 
81447
 
 
81448
    } // validation
 
81449
#endif
 
81450
 
 
81451
    return true;
 
81452
}
 
81453
 
 
81454
//---------------------------------------------------------------------
 
81455
bool ColladaParserAutoGen15Private::_preEnd__limits____joint_limits_type()
 
81456
{
 
81457
#ifdef GENERATEDSAXPARSER_VALIDATION
 
81458
    if ( mValidate )
 
81459
    {
 
81460
 
 
81461
        bool validationResult = _validateEnd__limits____joint_limits_type();
 
81462
        if ( !validationResult ) return false;
 
81463
 
 
81464
    } // validation
 
81465
#endif
 
81466
 
 
81467
    return true;
 
81468
}
 
81469
 
 
81470
//---------------------------------------------------------------------
 
81471
bool ColladaParserAutoGen15Private::_freeAttributes__limits____joint_limits_type( void* attributeData )
 
81472
{
 
81473
    return true;
 
81474
}
 
81475
 
 
81476
//---------------------------------------------------------------------
 
81477
const min____minmax_type__AttributeData min____minmax_type__AttributeData::DEFAULT = {0, 0};
 
81478
 
 
81479
//---------------------------------------------------------------------
 
81480
bool ColladaParserAutoGen15Private::_data__min____minmax_type( const ParserChar* text, size_t textLength )
 
81481
{
 
81482
if (!mLastIncompleteFragmentInCharacterData)
 
81483
{
 
81484
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
81485
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
81486
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
81487
}
 
81488
else
 
81489
{
 
81490
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
81491
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
81492
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
81493
        mLastIncompleteFragmentInCharacterData = tmp;
 
81494
    }
 
81495
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
81496
    mEndOfDataInCurrentObjectOnStack += textLength;
 
81497
}
 
81498
return true;
 
81499
}
 
81500
 
 
81501
//---------------------------------------------------------------------
 
81502
bool ColladaParserAutoGen15Private::_preBegin__min____minmax_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
81503
{
 
81504
#ifdef GENERATEDSAXPARSER_VALIDATION
 
81505
    if ( mValidate )
 
81506
    {
 
81507
 
 
81508
        bool validationResult = _validateBegin__min____minmax_type( attributes, attributeDataPtr, validationDataPtr );
 
81509
        if ( !validationResult ) return false;
 
81510
 
 
81511
    } // validation
 
81512
#endif
 
81513
 
 
81514
min____minmax_type__AttributeData* attributeData = newData<min____minmax_type__AttributeData>(attributeDataPtr);
 
81515
 
 
81516
const ParserChar** attributeArray = attributes.attributes;
 
81517
if ( attributeArray )
 
81518
{
 
81519
    while (true)
 
81520
    {
 
81521
        const ParserChar * attribute = *attributeArray;
 
81522
        if ( !attribute )
 
81523
            break;
 
81524
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
81525
        attributeArray++;
 
81526
        if ( !attributeArray )
 
81527
            return false;
 
81528
        const ParserChar* attributeValue = *attributeArray;
 
81529
        attributeArray++;
 
81530
 
 
81531
 
 
81532
    switch ( hash )
 
81533
    {
 
81534
    case HASH_ATTRIBUTE_NAME:
 
81535
    {
 
81536
 
 
81537
attributeData->name = attributeValue;
 
81538
 
 
81539
    break;
 
81540
    }
 
81541
    case HASH_ATTRIBUTE_SID:
 
81542
    {
 
81543
 
 
81544
attributeData->sid = attributeValue;
 
81545
#ifdef GENERATEDSAXPARSER_VALIDATION
 
81546
    if ( mValidate )
 
81547
    {
 
81548
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
81549
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
81550
    {
 
81551
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
81552
            simpleTypeValidationResult,
 
81553
            HASH_ELEMENT_MIN,
 
81554
            HASH_ATTRIBUTE_SID,
 
81555
            attributeValue) )
 
81556
        {
 
81557
            return false;
 
81558
        }
 
81559
    }
 
81560
    } // validation
 
81561
#endif
 
81562
 
 
81563
    break;
 
81564
    }
 
81565
    default:
 
81566
    {
 
81567
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_MIN, attribute, attributeValue))
 
81568
            {return false;}
 
81569
    }
 
81570
    }
 
81571
    }
 
81572
}
 
81573
 
 
81574
 
 
81575
    return true;
 
81576
}
 
81577
 
 
81578
//---------------------------------------------------------------------
 
81579
bool ColladaParserAutoGen15Private::_preEnd__min____minmax_type()
 
81580
{
 
81581
#ifdef GENERATEDSAXPARSER_VALIDATION
 
81582
    if ( mValidate )
 
81583
    {
 
81584
 
 
81585
        bool validationResult = _validateEnd__min____minmax_type();
 
81586
        if ( !validationResult ) return false;
 
81587
 
 
81588
    } // validation
 
81589
#endif
 
81590
 
 
81591
bool failed;
 
81592
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
81593
DISABLE_WARNING_UNUSED(ptrForErr)
 
81594
float parameter = GeneratedSaxParser::Utils::toFloat((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
81595
bool returnValue;
 
81596
if (!failed)
 
81597
{
 
81598
    returnValue = mImpl->data__min____minmax_type(parameter);
 
81599
}
 
81600
else
 
81601
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_MIN, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
81602
if (mLastIncompleteFragmentInCharacterData)
 
81603
    mStackMemoryManager.deleteObject();
 
81604
mLastIncompleteFragmentInCharacterData = 0;
 
81605
mEndOfDataInCurrentObjectOnStack = 0;
 
81606
return returnValue;
 
81607
}
 
81608
 
 
81609
//---------------------------------------------------------------------
 
81610
bool ColladaParserAutoGen15Private::_freeAttributes__min____minmax_type( void* attributeData )
 
81611
{
 
81612
    min____minmax_type__AttributeData* typedAttributeData = static_cast<min____minmax_type__AttributeData*>(attributeData);
 
81613
 
 
81614
    typedAttributeData->~min____minmax_type__AttributeData();
 
81615
 
 
81616
    return true;
 
81617
}
 
81618
 
 
81619
//---------------------------------------------------------------------
 
81620
bool ColladaParserAutoGen15Private::_data__max____minmax_type( const ParserChar* text, size_t textLength )
 
81621
{
 
81622
if (!mLastIncompleteFragmentInCharacterData)
 
81623
{
 
81624
    mLastIncompleteFragmentInCharacterData = (ParserChar*)mStackMemoryManager.newObject(textLength);
 
81625
    memcpy(mLastIncompleteFragmentInCharacterData, text, textLength);
 
81626
    mEndOfDataInCurrentObjectOnStack = mLastIncompleteFragmentInCharacterData + textLength;
 
81627
}
 
81628
else
 
81629
{
 
81630
    ParserChar* tmp = (ParserChar*)mStackMemoryManager.growObject(textLength);
 
81631
    if ( tmp != mLastIncompleteFragmentInCharacterData ) {
 
81632
        mEndOfDataInCurrentObjectOnStack = (mEndOfDataInCurrentObjectOnStack - mLastIncompleteFragmentInCharacterData) + tmp;
 
81633
        mLastIncompleteFragmentInCharacterData = tmp;
 
81634
    }
 
81635
    memcpy(mEndOfDataInCurrentObjectOnStack, text, textLength);
 
81636
    mEndOfDataInCurrentObjectOnStack += textLength;
 
81637
}
 
81638
return true;
 
81639
}
 
81640
 
 
81641
//---------------------------------------------------------------------
 
81642
bool ColladaParserAutoGen15Private::_preBegin__max____minmax_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
81643
{
 
81644
#ifdef GENERATEDSAXPARSER_VALIDATION
 
81645
    if ( mValidate )
 
81646
    {
 
81647
 
 
81648
        bool validationResult = _validateBegin__max____minmax_type( attributes, attributeDataPtr, validationDataPtr );
 
81649
        if ( !validationResult ) return false;
 
81650
 
 
81651
    } // validation
 
81652
#endif
 
81653
 
 
81654
max____minmax_type__AttributeData* attributeData = newData<max____minmax_type__AttributeData>(attributeDataPtr);
 
81655
 
 
81656
const ParserChar** attributeArray = attributes.attributes;
 
81657
if ( attributeArray )
 
81658
{
 
81659
    while (true)
 
81660
    {
 
81661
        const ParserChar * attribute = *attributeArray;
 
81662
        if ( !attribute )
 
81663
            break;
 
81664
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
81665
        attributeArray++;
 
81666
        if ( !attributeArray )
 
81667
            return false;
 
81668
        const ParserChar* attributeValue = *attributeArray;
 
81669
        attributeArray++;
 
81670
 
 
81671
 
 
81672
    switch ( hash )
 
81673
    {
 
81674
    case HASH_ATTRIBUTE_NAME:
 
81675
    {
 
81676
 
 
81677
attributeData->name = attributeValue;
 
81678
 
 
81679
    break;
 
81680
    }
 
81681
    case HASH_ATTRIBUTE_SID:
 
81682
    {
 
81683
 
 
81684
attributeData->sid = attributeValue;
 
81685
#ifdef GENERATEDSAXPARSER_VALIDATION
 
81686
    if ( mValidate )
 
81687
    {
 
81688
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
81689
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
81690
    {
 
81691
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
81692
            simpleTypeValidationResult,
 
81693
            HASH_ELEMENT_MAX,
 
81694
            HASH_ATTRIBUTE_SID,
 
81695
            attributeValue) )
 
81696
        {
 
81697
            return false;
 
81698
        }
 
81699
    }
 
81700
    } // validation
 
81701
#endif
 
81702
 
 
81703
    break;
 
81704
    }
 
81705
    default:
 
81706
    {
 
81707
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_MAX, attribute, attributeValue))
 
81708
            {return false;}
 
81709
    }
 
81710
    }
 
81711
    }
 
81712
}
 
81713
 
 
81714
 
 
81715
    return true;
 
81716
}
 
81717
 
 
81718
//---------------------------------------------------------------------
 
81719
bool ColladaParserAutoGen15Private::_preEnd__max____minmax_type()
 
81720
{
 
81721
#ifdef GENERATEDSAXPARSER_VALIDATION
 
81722
    if ( mValidate )
 
81723
    {
 
81724
 
 
81725
        bool validationResult = _validateEnd__max____minmax_type();
 
81726
        if ( !validationResult ) return false;
 
81727
 
 
81728
    } // validation
 
81729
#endif
 
81730
 
 
81731
bool failed;
 
81732
const ParserChar* ptrForErr = mLastIncompleteFragmentInCharacterData;
 
81733
DISABLE_WARNING_UNUSED(ptrForErr)
 
81734
float parameter = GeneratedSaxParser::Utils::toFloat((const ParserChar**)&mLastIncompleteFragmentInCharacterData, mEndOfDataInCurrentObjectOnStack, failed);
 
81735
bool returnValue;
 
81736
if (!failed)
 
81737
{
 
81738
    returnValue = mImpl->data__max____minmax_type(parameter);
 
81739
}
 
81740
else
 
81741
    returnValue = !handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_TEXTDATA_PARSING_FAILED, HASH_ELEMENT_MAX, (const ParserChar*)0, mLastIncompleteFragmentInCharacterData);
 
81742
if (mLastIncompleteFragmentInCharacterData)
 
81743
    mStackMemoryManager.deleteObject();
 
81744
mLastIncompleteFragmentInCharacterData = 0;
 
81745
mEndOfDataInCurrentObjectOnStack = 0;
 
81746
return returnValue;
 
81747
}
 
81748
 
 
81749
//---------------------------------------------------------------------
 
81750
bool ColladaParserAutoGen15Private::_freeAttributes__max____minmax_type( void* attributeData )
 
81751
{
 
81752
    max____minmax_type__AttributeData* typedAttributeData = static_cast<max____minmax_type__AttributeData*>(attributeData);
 
81753
 
 
81754
    typedAttributeData->~max____minmax_type__AttributeData();
 
81755
 
 
81756
    return true;
 
81757
}
 
81758
 
 
81759
//---------------------------------------------------------------------
 
81760
const revolute__AttributeData revolute__AttributeData::DEFAULT = {0};
 
81761
 
 
81762
//---------------------------------------------------------------------
 
81763
bool ColladaParserAutoGen15Private::_data__revolute( const ParserChar* text, size_t textLength )
 
81764
{
 
81765
    return true;
 
81766
}
 
81767
 
 
81768
//---------------------------------------------------------------------
 
81769
bool ColladaParserAutoGen15Private::_preBegin__revolute( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
81770
{
 
81771
#ifdef GENERATEDSAXPARSER_VALIDATION
 
81772
    if ( mValidate )
 
81773
    {
 
81774
 
 
81775
        bool validationResult = _validateBegin__revolute( attributes, attributeDataPtr, validationDataPtr );
 
81776
        if ( !validationResult ) return false;
 
81777
 
 
81778
    } // validation
 
81779
#endif
 
81780
 
 
81781
revolute__AttributeData* attributeData = newData<revolute__AttributeData>(attributeDataPtr);
 
81782
 
 
81783
const ParserChar** attributeArray = attributes.attributes;
 
81784
if ( attributeArray )
 
81785
{
 
81786
    while (true)
 
81787
    {
 
81788
        const ParserChar * attribute = *attributeArray;
 
81789
        if ( !attribute )
 
81790
            break;
 
81791
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
81792
        attributeArray++;
 
81793
        if ( !attributeArray )
 
81794
            return false;
 
81795
        const ParserChar* attributeValue = *attributeArray;
 
81796
        attributeArray++;
 
81797
 
 
81798
 
 
81799
    switch ( hash )
 
81800
    {
 
81801
    case HASH_ATTRIBUTE_SID:
 
81802
    {
 
81803
 
 
81804
attributeData->sid = attributeValue;
 
81805
#ifdef GENERATEDSAXPARSER_VALIDATION
 
81806
    if ( mValidate )
 
81807
    {
 
81808
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
81809
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
81810
    {
 
81811
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
81812
            simpleTypeValidationResult,
 
81813
            HASH_ELEMENT_REVOLUTE,
 
81814
            HASH_ATTRIBUTE_SID,
 
81815
            attributeValue) )
 
81816
        {
 
81817
            return false;
 
81818
        }
 
81819
    }
 
81820
    } // validation
 
81821
#endif
 
81822
 
 
81823
    break;
 
81824
    }
 
81825
    default:
 
81826
    {
 
81827
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_REVOLUTE, attribute, attributeValue))
 
81828
            {return false;}
 
81829
    }
 
81830
    }
 
81831
    }
 
81832
}
 
81833
 
 
81834
 
 
81835
    return true;
 
81836
}
 
81837
 
 
81838
//---------------------------------------------------------------------
 
81839
bool ColladaParserAutoGen15Private::_preEnd__revolute()
 
81840
{
 
81841
#ifdef GENERATEDSAXPARSER_VALIDATION
 
81842
    if ( mValidate )
 
81843
    {
 
81844
 
 
81845
        bool validationResult = _validateEnd__revolute();
 
81846
        if ( !validationResult ) return false;
 
81847
 
 
81848
    } // validation
 
81849
#endif
 
81850
 
 
81851
    return true;
 
81852
}
 
81853
 
 
81854
//---------------------------------------------------------------------
 
81855
bool ColladaParserAutoGen15Private::_freeAttributes__revolute( void* attributeData )
 
81856
{
 
81857
    revolute__AttributeData* typedAttributeData = static_cast<revolute__AttributeData*>(attributeData);
 
81858
 
 
81859
    typedAttributeData->~revolute__AttributeData();
 
81860
 
 
81861
    return true;
 
81862
}
 
81863
 
 
81864
//---------------------------------------------------------------------
 
81865
const library_kinematics_models__AttributeData library_kinematics_models__AttributeData::DEFAULT = {0, 0};
 
81866
 
 
81867
//---------------------------------------------------------------------
 
81868
bool ColladaParserAutoGen15Private::_data__library_kinematics_models( const ParserChar* text, size_t textLength )
 
81869
{
 
81870
    return true;
 
81871
}
 
81872
 
 
81873
//---------------------------------------------------------------------
 
81874
bool ColladaParserAutoGen15Private::_preBegin__library_kinematics_models( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
81875
{
 
81876
#ifdef GENERATEDSAXPARSER_VALIDATION
 
81877
    if ( mValidate )
 
81878
    {
 
81879
 
 
81880
        bool validationResult = _validateBegin__library_kinematics_models( attributes, attributeDataPtr, validationDataPtr );
 
81881
        if ( !validationResult ) return false;
 
81882
 
 
81883
    } // validation
 
81884
#endif
 
81885
 
 
81886
library_kinematics_models__AttributeData* attributeData = newData<library_kinematics_models__AttributeData>(attributeDataPtr);
 
81887
 
 
81888
const ParserChar** attributeArray = attributes.attributes;
 
81889
if ( attributeArray )
 
81890
{
 
81891
    while (true)
 
81892
    {
 
81893
        const ParserChar * attribute = *attributeArray;
 
81894
        if ( !attribute )
 
81895
            break;
 
81896
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
81897
        attributeArray++;
 
81898
        if ( !attributeArray )
 
81899
            return false;
 
81900
        const ParserChar* attributeValue = *attributeArray;
 
81901
        attributeArray++;
 
81902
 
 
81903
 
 
81904
    switch ( hash )
 
81905
    {
 
81906
    case HASH_ATTRIBUTE_ID:
 
81907
    {
 
81908
 
 
81909
attributeData->id = attributeValue;
 
81910
 
 
81911
    break;
 
81912
    }
 
81913
    case HASH_ATTRIBUTE_NAME:
 
81914
    {
 
81915
 
 
81916
attributeData->name = attributeValue;
 
81917
 
 
81918
    break;
 
81919
    }
 
81920
    default:
 
81921
    {
 
81922
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIBRARY_KINEMATICS_MODELS, attribute, attributeValue))
 
81923
            {return false;}
 
81924
    }
 
81925
    }
 
81926
    }
 
81927
}
 
81928
 
 
81929
 
 
81930
    return true;
 
81931
}
 
81932
 
 
81933
//---------------------------------------------------------------------
 
81934
bool ColladaParserAutoGen15Private::_preEnd__library_kinematics_models()
 
81935
{
 
81936
#ifdef GENERATEDSAXPARSER_VALIDATION
 
81937
    if ( mValidate )
 
81938
    {
 
81939
 
 
81940
        bool validationResult = _validateEnd__library_kinematics_models();
 
81941
        if ( !validationResult ) return false;
 
81942
 
 
81943
    } // validation
 
81944
#endif
 
81945
 
 
81946
    return true;
 
81947
}
 
81948
 
 
81949
//---------------------------------------------------------------------
 
81950
bool ColladaParserAutoGen15Private::_freeAttributes__library_kinematics_models( void* attributeData )
 
81951
{
 
81952
    library_kinematics_models__AttributeData* typedAttributeData = static_cast<library_kinematics_models__AttributeData*>(attributeData);
 
81953
 
 
81954
    typedAttributeData->~library_kinematics_models__AttributeData();
 
81955
 
 
81956
    return true;
 
81957
}
 
81958
 
 
81959
//---------------------------------------------------------------------
 
81960
const kinematics_model__AttributeData kinematics_model__AttributeData::DEFAULT = {0, 0};
 
81961
 
 
81962
//---------------------------------------------------------------------
 
81963
bool ColladaParserAutoGen15Private::_data__kinematics_model( const ParserChar* text, size_t textLength )
 
81964
{
 
81965
    return true;
 
81966
}
 
81967
 
 
81968
//---------------------------------------------------------------------
 
81969
bool ColladaParserAutoGen15Private::_preBegin__kinematics_model( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
81970
{
 
81971
#ifdef GENERATEDSAXPARSER_VALIDATION
 
81972
    if ( mValidate )
 
81973
    {
 
81974
 
 
81975
        bool validationResult = _validateBegin__kinematics_model( attributes, attributeDataPtr, validationDataPtr );
 
81976
        if ( !validationResult ) return false;
 
81977
 
 
81978
    } // validation
 
81979
#endif
 
81980
 
 
81981
kinematics_model__AttributeData* attributeData = newData<kinematics_model__AttributeData>(attributeDataPtr);
 
81982
 
 
81983
const ParserChar** attributeArray = attributes.attributes;
 
81984
if ( attributeArray )
 
81985
{
 
81986
    while (true)
 
81987
    {
 
81988
        const ParserChar * attribute = *attributeArray;
 
81989
        if ( !attribute )
 
81990
            break;
 
81991
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
81992
        attributeArray++;
 
81993
        if ( !attributeArray )
 
81994
            return false;
 
81995
        const ParserChar* attributeValue = *attributeArray;
 
81996
        attributeArray++;
 
81997
 
 
81998
 
 
81999
    switch ( hash )
 
82000
    {
 
82001
    case HASH_ATTRIBUTE_ID:
 
82002
    {
 
82003
 
 
82004
attributeData->id = attributeValue;
 
82005
 
 
82006
    break;
 
82007
    }
 
82008
    case HASH_ATTRIBUTE_NAME:
 
82009
    {
 
82010
 
 
82011
attributeData->name = attributeValue;
 
82012
 
 
82013
    break;
 
82014
    }
 
82015
    default:
 
82016
    {
 
82017
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_KINEMATICS_MODEL, attribute, attributeValue))
 
82018
            {return false;}
 
82019
    }
 
82020
    }
 
82021
    }
 
82022
}
 
82023
 
 
82024
 
 
82025
    return true;
 
82026
}
 
82027
 
 
82028
//---------------------------------------------------------------------
 
82029
bool ColladaParserAutoGen15Private::_preEnd__kinematics_model()
 
82030
{
 
82031
#ifdef GENERATEDSAXPARSER_VALIDATION
 
82032
    if ( mValidate )
 
82033
    {
 
82034
 
 
82035
        bool validationResult = _validateEnd__kinematics_model();
 
82036
        if ( !validationResult ) return false;
 
82037
 
 
82038
    } // validation
 
82039
#endif
 
82040
 
 
82041
    return true;
 
82042
}
 
82043
 
 
82044
//---------------------------------------------------------------------
 
82045
bool ColladaParserAutoGen15Private::_freeAttributes__kinematics_model( void* attributeData )
 
82046
{
 
82047
    kinematics_model__AttributeData* typedAttributeData = static_cast<kinematics_model__AttributeData*>(attributeData);
 
82048
 
 
82049
    typedAttributeData->~kinematics_model__AttributeData();
 
82050
 
 
82051
    return true;
 
82052
}
 
82053
 
 
82054
//---------------------------------------------------------------------
 
82055
bool ColladaParserAutoGen15Private::_data__technique_common____kinematics_model_technique_type( const ParserChar* text, size_t textLength )
 
82056
{
 
82057
    return true;
 
82058
}
 
82059
 
 
82060
//---------------------------------------------------------------------
 
82061
bool ColladaParserAutoGen15Private::_preBegin__technique_common____kinematics_model_technique_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
82062
{
 
82063
#ifdef GENERATEDSAXPARSER_VALIDATION
 
82064
    if ( mValidate )
 
82065
    {
 
82066
 
 
82067
        bool validationResult = _validateBegin__technique_common____kinematics_model_technique_type( attributes, attributeDataPtr, validationDataPtr );
 
82068
        if ( !validationResult ) return false;
 
82069
 
 
82070
    } // validation
 
82071
#endif
 
82072
 
 
82073
    return true;
 
82074
}
 
82075
 
 
82076
//---------------------------------------------------------------------
 
82077
bool ColladaParserAutoGen15Private::_preEnd__technique_common____kinematics_model_technique_type()
 
82078
{
 
82079
#ifdef GENERATEDSAXPARSER_VALIDATION
 
82080
    if ( mValidate )
 
82081
    {
 
82082
 
 
82083
        bool validationResult = _validateEnd__technique_common____kinematics_model_technique_type();
 
82084
        if ( !validationResult ) return false;
 
82085
 
 
82086
    } // validation
 
82087
#endif
 
82088
 
 
82089
    return true;
 
82090
}
 
82091
 
 
82092
//---------------------------------------------------------------------
 
82093
bool ColladaParserAutoGen15Private::_freeAttributes__technique_common____kinematics_model_technique_type( void* attributeData )
 
82094
{
 
82095
    return true;
 
82096
}
 
82097
 
 
82098
//---------------------------------------------------------------------
 
82099
const newparam____kinematics_newparam_type__AttributeData newparam____kinematics_newparam_type__AttributeData::DEFAULT = {0};
 
82100
 
 
82101
//---------------------------------------------------------------------
 
82102
bool ColladaParserAutoGen15Private::_data__newparam____kinematics_newparam_type( const ParserChar* text, size_t textLength )
 
82103
{
 
82104
    return true;
 
82105
}
 
82106
 
 
82107
//---------------------------------------------------------------------
 
82108
bool ColladaParserAutoGen15Private::_preBegin__newparam____kinematics_newparam_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
82109
{
 
82110
#ifdef GENERATEDSAXPARSER_VALIDATION
 
82111
    if ( mValidate )
 
82112
    {
 
82113
 
 
82114
        bool validationResult = _validateBegin__newparam____kinematics_newparam_type( attributes, attributeDataPtr, validationDataPtr );
 
82115
        if ( !validationResult ) return false;
 
82116
 
 
82117
    } // validation
 
82118
#endif
 
82119
 
 
82120
newparam____kinematics_newparam_type__AttributeData* attributeData = newData<newparam____kinematics_newparam_type__AttributeData>(attributeDataPtr);
 
82121
 
 
82122
const ParserChar** attributeArray = attributes.attributes;
 
82123
if ( attributeArray )
 
82124
{
 
82125
    while (true)
 
82126
    {
 
82127
        const ParserChar * attribute = *attributeArray;
 
82128
        if ( !attribute )
 
82129
            break;
 
82130
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
82131
        attributeArray++;
 
82132
        if ( !attributeArray )
 
82133
            return false;
 
82134
        const ParserChar* attributeValue = *attributeArray;
 
82135
        attributeArray++;
 
82136
 
 
82137
 
 
82138
    switch ( hash )
 
82139
    {
 
82140
    case HASH_ATTRIBUTE_SID:
 
82141
    {
 
82142
 
 
82143
attributeData->sid = attributeValue;
 
82144
#ifdef GENERATEDSAXPARSER_VALIDATION
 
82145
    if ( mValidate )
 
82146
    {
 
82147
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
82148
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
82149
    {
 
82150
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
82151
            simpleTypeValidationResult,
 
82152
            HASH_ELEMENT_NEWPARAM,
 
82153
            HASH_ATTRIBUTE_SID,
 
82154
            attributeValue) )
 
82155
        {
 
82156
            return false;
 
82157
        }
 
82158
    }
 
82159
    } // validation
 
82160
#endif
 
82161
 
 
82162
    break;
 
82163
    }
 
82164
    default:
 
82165
    {
 
82166
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_NEWPARAM, attribute, attributeValue))
 
82167
            {return false;}
 
82168
    }
 
82169
    }
 
82170
    }
 
82171
}
 
82172
 
 
82173
 
 
82174
    return true;
 
82175
}
 
82176
 
 
82177
//---------------------------------------------------------------------
 
82178
bool ColladaParserAutoGen15Private::_preEnd__newparam____kinematics_newparam_type()
 
82179
{
 
82180
#ifdef GENERATEDSAXPARSER_VALIDATION
 
82181
    if ( mValidate )
 
82182
    {
 
82183
 
 
82184
        bool validationResult = _validateEnd__newparam____kinematics_newparam_type();
 
82185
        if ( !validationResult ) return false;
 
82186
 
 
82187
    } // validation
 
82188
#endif
 
82189
 
 
82190
    return true;
 
82191
}
 
82192
 
 
82193
//---------------------------------------------------------------------
 
82194
bool ColladaParserAutoGen15Private::_freeAttributes__newparam____kinematics_newparam_type( void* attributeData )
 
82195
{
 
82196
    newparam____kinematics_newparam_type__AttributeData* typedAttributeData = static_cast<newparam____kinematics_newparam_type__AttributeData*>(attributeData);
 
82197
 
 
82198
    typedAttributeData->~newparam____kinematics_newparam_type__AttributeData();
 
82199
 
 
82200
    return true;
 
82201
}
 
82202
 
 
82203
//---------------------------------------------------------------------
 
82204
const instance_joint__AttributeData instance_joint__AttributeData::DEFAULT = {0, 0, 0, 0};
 
82205
 
 
82206
//---------------------------------------------------------------------
 
82207
bool ColladaParserAutoGen15Private::_data__instance_joint( const ParserChar* text, size_t textLength )
 
82208
{
 
82209
    return true;
 
82210
}
 
82211
 
 
82212
//---------------------------------------------------------------------
 
82213
bool ColladaParserAutoGen15Private::_preBegin__instance_joint( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
82214
{
 
82215
#ifdef GENERATEDSAXPARSER_VALIDATION
 
82216
    if ( mValidate )
 
82217
    {
 
82218
 
 
82219
        bool validationResult = _validateBegin__instance_joint( attributes, attributeDataPtr, validationDataPtr );
 
82220
        if ( !validationResult ) return false;
 
82221
 
 
82222
    } // validation
 
82223
#endif
 
82224
 
 
82225
instance_joint__AttributeData* attributeData = newData<instance_joint__AttributeData>(attributeDataPtr);
 
82226
 
 
82227
const ParserChar** attributeArray = attributes.attributes;
 
82228
if ( attributeArray )
 
82229
{
 
82230
    while (true)
 
82231
    {
 
82232
        const ParserChar * attribute = *attributeArray;
 
82233
        if ( !attribute )
 
82234
            break;
 
82235
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
82236
        attributeArray++;
 
82237
        if ( !attributeArray )
 
82238
            return false;
 
82239
        const ParserChar* attributeValue = *attributeArray;
 
82240
        attributeArray++;
 
82241
 
 
82242
 
 
82243
    switch ( hash )
 
82244
    {
 
82245
    case HASH_ATTRIBUTE_URL:
 
82246
    {
 
82247
bool failed;
 
82248
attributeData->url = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
82249
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
82250
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
82251
        HASH_ELEMENT_INSTANCE_JOINT,
 
82252
        HASH_ATTRIBUTE_URL,
 
82253
        attributeValue))
 
82254
{
 
82255
    return false;
 
82256
}
 
82257
if ( !failed )
 
82258
    attributeData->present_attributes |= instance_joint__AttributeData::ATTRIBUTE_URL_PRESENT;
 
82259
 
 
82260
    break;
 
82261
    }
 
82262
    case HASH_ATTRIBUTE_SID:
 
82263
    {
 
82264
 
 
82265
attributeData->sid = attributeValue;
 
82266
#ifdef GENERATEDSAXPARSER_VALIDATION
 
82267
    if ( mValidate )
 
82268
    {
 
82269
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
82270
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
82271
    {
 
82272
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
82273
            simpleTypeValidationResult,
 
82274
            HASH_ELEMENT_INSTANCE_JOINT,
 
82275
            HASH_ATTRIBUTE_SID,
 
82276
            attributeValue) )
 
82277
        {
 
82278
            return false;
 
82279
        }
 
82280
    }
 
82281
    } // validation
 
82282
#endif
 
82283
 
 
82284
    break;
 
82285
    }
 
82286
    case HASH_ATTRIBUTE_NAME:
 
82287
    {
 
82288
 
 
82289
attributeData->name = attributeValue;
 
82290
 
 
82291
    break;
 
82292
    }
 
82293
    default:
 
82294
    {
 
82295
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_INSTANCE_JOINT, attribute, attributeValue))
 
82296
            {return false;}
 
82297
    }
 
82298
    }
 
82299
    }
 
82300
}
 
82301
if ((attributeData->present_attributes & instance_joint__AttributeData::ATTRIBUTE_URL_PRESENT) == 0)
 
82302
{
 
82303
    attributeData->url = COLLADABU::URI("");
 
82304
}
 
82305
if ( (attributeData->present_attributes & instance_joint__AttributeData::ATTRIBUTE_URL_PRESENT) == 0 )
 
82306
{
 
82307
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_INSTANCE_JOINT, HASH_ATTRIBUTE_URL, 0 ) )
 
82308
        return false;
 
82309
}
 
82310
 
 
82311
 
 
82312
    return true;
 
82313
}
 
82314
 
 
82315
//---------------------------------------------------------------------
 
82316
bool ColladaParserAutoGen15Private::_preEnd__instance_joint()
 
82317
{
 
82318
#ifdef GENERATEDSAXPARSER_VALIDATION
 
82319
    if ( mValidate )
 
82320
    {
 
82321
 
 
82322
        bool validationResult = _validateEnd__instance_joint();
 
82323
        if ( !validationResult ) return false;
 
82324
 
 
82325
    } // validation
 
82326
#endif
 
82327
 
 
82328
    return true;
 
82329
}
 
82330
 
 
82331
//---------------------------------------------------------------------
 
82332
bool ColladaParserAutoGen15Private::_freeAttributes__instance_joint( void* attributeData )
 
82333
{
 
82334
    instance_joint__AttributeData* typedAttributeData = static_cast<instance_joint__AttributeData*>(attributeData);
 
82335
 
 
82336
    typedAttributeData->~instance_joint__AttributeData();
 
82337
 
 
82338
    return true;
 
82339
}
 
82340
 
 
82341
//---------------------------------------------------------------------
 
82342
const link__AttributeData link__AttributeData::DEFAULT = {0, 0};
 
82343
 
 
82344
//---------------------------------------------------------------------
 
82345
bool ColladaParserAutoGen15Private::_data__link( const ParserChar* text, size_t textLength )
 
82346
{
 
82347
    return true;
 
82348
}
 
82349
 
 
82350
//---------------------------------------------------------------------
 
82351
bool ColladaParserAutoGen15Private::_preBegin__link( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
82352
{
 
82353
#ifdef GENERATEDSAXPARSER_VALIDATION
 
82354
    if ( mValidate )
 
82355
    {
 
82356
 
 
82357
        bool validationResult = _validateBegin__link( attributes, attributeDataPtr, validationDataPtr );
 
82358
        if ( !validationResult ) return false;
 
82359
 
 
82360
    } // validation
 
82361
#endif
 
82362
 
 
82363
link__AttributeData* attributeData = newData<link__AttributeData>(attributeDataPtr);
 
82364
 
 
82365
const ParserChar** attributeArray = attributes.attributes;
 
82366
if ( attributeArray )
 
82367
{
 
82368
    while (true)
 
82369
    {
 
82370
        const ParserChar * attribute = *attributeArray;
 
82371
        if ( !attribute )
 
82372
            break;
 
82373
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
82374
        attributeArray++;
 
82375
        if ( !attributeArray )
 
82376
            return false;
 
82377
        const ParserChar* attributeValue = *attributeArray;
 
82378
        attributeArray++;
 
82379
 
 
82380
 
 
82381
    switch ( hash )
 
82382
    {
 
82383
    case HASH_ATTRIBUTE_SID:
 
82384
    {
 
82385
 
 
82386
attributeData->sid = attributeValue;
 
82387
#ifdef GENERATEDSAXPARSER_VALIDATION
 
82388
    if ( mValidate )
 
82389
    {
 
82390
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
82391
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
82392
    {
 
82393
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
82394
            simpleTypeValidationResult,
 
82395
            HASH_ELEMENT_LINK,
 
82396
            HASH_ATTRIBUTE_SID,
 
82397
            attributeValue) )
 
82398
        {
 
82399
            return false;
 
82400
        }
 
82401
    }
 
82402
    } // validation
 
82403
#endif
 
82404
 
 
82405
    break;
 
82406
    }
 
82407
    case HASH_ATTRIBUTE_NAME:
 
82408
    {
 
82409
 
 
82410
attributeData->name = attributeValue;
 
82411
 
 
82412
    break;
 
82413
    }
 
82414
    default:
 
82415
    {
 
82416
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LINK, attribute, attributeValue))
 
82417
            {return false;}
 
82418
    }
 
82419
    }
 
82420
    }
 
82421
}
 
82422
 
 
82423
 
 
82424
    return true;
 
82425
}
 
82426
 
 
82427
//---------------------------------------------------------------------
 
82428
bool ColladaParserAutoGen15Private::_preEnd__link()
 
82429
{
 
82430
#ifdef GENERATEDSAXPARSER_VALIDATION
 
82431
    if ( mValidate )
 
82432
    {
 
82433
 
 
82434
        bool validationResult = _validateEnd__link();
 
82435
        if ( !validationResult ) return false;
 
82436
 
 
82437
    } // validation
 
82438
#endif
 
82439
 
 
82440
    return true;
 
82441
}
 
82442
 
 
82443
//---------------------------------------------------------------------
 
82444
bool ColladaParserAutoGen15Private::_freeAttributes__link( void* attributeData )
 
82445
{
 
82446
    link__AttributeData* typedAttributeData = static_cast<link__AttributeData*>(attributeData);
 
82447
 
 
82448
    typedAttributeData->~link__AttributeData();
 
82449
 
 
82450
    return true;
 
82451
}
 
82452
 
 
82453
//---------------------------------------------------------------------
 
82454
const attachment_full__AttributeData attachment_full__AttributeData::DEFAULT = {0};
 
82455
 
 
82456
//---------------------------------------------------------------------
 
82457
bool ColladaParserAutoGen15Private::_data__attachment_full( const ParserChar* text, size_t textLength )
 
82458
{
 
82459
    return true;
 
82460
}
 
82461
 
 
82462
//---------------------------------------------------------------------
 
82463
bool ColladaParserAutoGen15Private::_preBegin__attachment_full( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
82464
{
 
82465
#ifdef GENERATEDSAXPARSER_VALIDATION
 
82466
    if ( mValidate )
 
82467
    {
 
82468
 
 
82469
        bool validationResult = _validateBegin__attachment_full( attributes, attributeDataPtr, validationDataPtr );
 
82470
        if ( !validationResult ) return false;
 
82471
 
 
82472
    } // validation
 
82473
#endif
 
82474
 
 
82475
attachment_full__AttributeData* attributeData = newData<attachment_full__AttributeData>(attributeDataPtr);
 
82476
 
 
82477
const ParserChar** attributeArray = attributes.attributes;
 
82478
if ( attributeArray )
 
82479
{
 
82480
    while (true)
 
82481
    {
 
82482
        const ParserChar * attribute = *attributeArray;
 
82483
        if ( !attribute )
 
82484
            break;
 
82485
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
82486
        attributeArray++;
 
82487
        if ( !attributeArray )
 
82488
            return false;
 
82489
        const ParserChar* attributeValue = *attributeArray;
 
82490
        attributeArray++;
 
82491
 
 
82492
 
 
82493
    switch ( hash )
 
82494
    {
 
82495
    case HASH_ATTRIBUTE_JOINT:
 
82496
    {
 
82497
 
 
82498
attributeData->joint = attributeValue;
 
82499
 
 
82500
    break;
 
82501
    }
 
82502
    default:
 
82503
    {
 
82504
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_ATTACHMENT_FULL, attribute, attributeValue))
 
82505
            {return false;}
 
82506
    }
 
82507
    }
 
82508
    }
 
82509
}
 
82510
if ( !attributeData->joint )
 
82511
{
 
82512
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_ATTACHMENT_FULL, HASH_ATTRIBUTE_JOINT, 0 ) )
 
82513
        return false;
 
82514
}
 
82515
 
 
82516
 
 
82517
    return true;
 
82518
}
 
82519
 
 
82520
//---------------------------------------------------------------------
 
82521
bool ColladaParserAutoGen15Private::_preEnd__attachment_full()
 
82522
{
 
82523
#ifdef GENERATEDSAXPARSER_VALIDATION
 
82524
    if ( mValidate )
 
82525
    {
 
82526
 
 
82527
        bool validationResult = _validateEnd__attachment_full();
 
82528
        if ( !validationResult ) return false;
 
82529
 
 
82530
    } // validation
 
82531
#endif
 
82532
 
 
82533
    return true;
 
82534
}
 
82535
 
 
82536
//---------------------------------------------------------------------
 
82537
bool ColladaParserAutoGen15Private::_freeAttributes__attachment_full( void* attributeData )
 
82538
{
 
82539
    attachment_full__AttributeData* typedAttributeData = static_cast<attachment_full__AttributeData*>(attributeData);
 
82540
 
 
82541
    typedAttributeData->~attachment_full__AttributeData();
 
82542
 
 
82543
    return true;
 
82544
}
 
82545
 
 
82546
//---------------------------------------------------------------------
 
82547
const attachment_start__AttributeData attachment_start__AttributeData::DEFAULT = {0};
 
82548
 
 
82549
//---------------------------------------------------------------------
 
82550
bool ColladaParserAutoGen15Private::_data__attachment_start( const ParserChar* text, size_t textLength )
 
82551
{
 
82552
    return true;
 
82553
}
 
82554
 
 
82555
//---------------------------------------------------------------------
 
82556
bool ColladaParserAutoGen15Private::_preBegin__attachment_start( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
82557
{
 
82558
#ifdef GENERATEDSAXPARSER_VALIDATION
 
82559
    if ( mValidate )
 
82560
    {
 
82561
 
 
82562
        bool validationResult = _validateBegin__attachment_start( attributes, attributeDataPtr, validationDataPtr );
 
82563
        if ( !validationResult ) return false;
 
82564
 
 
82565
    } // validation
 
82566
#endif
 
82567
 
 
82568
attachment_start__AttributeData* attributeData = newData<attachment_start__AttributeData>(attributeDataPtr);
 
82569
 
 
82570
const ParserChar** attributeArray = attributes.attributes;
 
82571
if ( attributeArray )
 
82572
{
 
82573
    while (true)
 
82574
    {
 
82575
        const ParserChar * attribute = *attributeArray;
 
82576
        if ( !attribute )
 
82577
            break;
 
82578
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
82579
        attributeArray++;
 
82580
        if ( !attributeArray )
 
82581
            return false;
 
82582
        const ParserChar* attributeValue = *attributeArray;
 
82583
        attributeArray++;
 
82584
 
 
82585
 
 
82586
    switch ( hash )
 
82587
    {
 
82588
    case HASH_ATTRIBUTE_JOINT:
 
82589
    {
 
82590
 
 
82591
attributeData->joint = attributeValue;
 
82592
 
 
82593
    break;
 
82594
    }
 
82595
    default:
 
82596
    {
 
82597
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_ATTACHMENT_START, attribute, attributeValue))
 
82598
            {return false;}
 
82599
    }
 
82600
    }
 
82601
    }
 
82602
}
 
82603
if ( !attributeData->joint )
 
82604
{
 
82605
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_ATTACHMENT_START, HASH_ATTRIBUTE_JOINT, 0 ) )
 
82606
        return false;
 
82607
}
 
82608
 
 
82609
 
 
82610
    return true;
 
82611
}
 
82612
 
 
82613
//---------------------------------------------------------------------
 
82614
bool ColladaParserAutoGen15Private::_preEnd__attachment_start()
 
82615
{
 
82616
#ifdef GENERATEDSAXPARSER_VALIDATION
 
82617
    if ( mValidate )
 
82618
    {
 
82619
 
 
82620
        bool validationResult = _validateEnd__attachment_start();
 
82621
        if ( !validationResult ) return false;
 
82622
 
 
82623
    } // validation
 
82624
#endif
 
82625
 
 
82626
    return true;
 
82627
}
 
82628
 
 
82629
//---------------------------------------------------------------------
 
82630
bool ColladaParserAutoGen15Private::_freeAttributes__attachment_start( void* attributeData )
 
82631
{
 
82632
    attachment_start__AttributeData* typedAttributeData = static_cast<attachment_start__AttributeData*>(attributeData);
 
82633
 
 
82634
    typedAttributeData->~attachment_start__AttributeData();
 
82635
 
 
82636
    return true;
 
82637
}
 
82638
 
 
82639
//---------------------------------------------------------------------
 
82640
const attachment_end__AttributeData attachment_end__AttributeData::DEFAULT = {0};
 
82641
 
 
82642
//---------------------------------------------------------------------
 
82643
bool ColladaParserAutoGen15Private::_data__attachment_end( const ParserChar* text, size_t textLength )
 
82644
{
 
82645
    return true;
 
82646
}
 
82647
 
 
82648
//---------------------------------------------------------------------
 
82649
bool ColladaParserAutoGen15Private::_preBegin__attachment_end( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
82650
{
 
82651
#ifdef GENERATEDSAXPARSER_VALIDATION
 
82652
    if ( mValidate )
 
82653
    {
 
82654
 
 
82655
        bool validationResult = _validateBegin__attachment_end( attributes, attributeDataPtr, validationDataPtr );
 
82656
        if ( !validationResult ) return false;
 
82657
 
 
82658
    } // validation
 
82659
#endif
 
82660
 
 
82661
attachment_end__AttributeData* attributeData = newData<attachment_end__AttributeData>(attributeDataPtr);
 
82662
 
 
82663
const ParserChar** attributeArray = attributes.attributes;
 
82664
if ( attributeArray )
 
82665
{
 
82666
    while (true)
 
82667
    {
 
82668
        const ParserChar * attribute = *attributeArray;
 
82669
        if ( !attribute )
 
82670
            break;
 
82671
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
82672
        attributeArray++;
 
82673
        if ( !attributeArray )
 
82674
            return false;
 
82675
        const ParserChar* attributeValue = *attributeArray;
 
82676
        attributeArray++;
 
82677
 
 
82678
 
 
82679
    switch ( hash )
 
82680
    {
 
82681
    case HASH_ATTRIBUTE_JOINT:
 
82682
    {
 
82683
 
 
82684
attributeData->joint = attributeValue;
 
82685
 
 
82686
    break;
 
82687
    }
 
82688
    default:
 
82689
    {
 
82690
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_ATTACHMENT_END, attribute, attributeValue))
 
82691
            {return false;}
 
82692
    }
 
82693
    }
 
82694
    }
 
82695
}
 
82696
if ( !attributeData->joint )
 
82697
{
 
82698
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_ATTACHMENT_END, HASH_ATTRIBUTE_JOINT, 0 ) )
 
82699
        return false;
 
82700
}
 
82701
 
 
82702
 
 
82703
    return true;
 
82704
}
 
82705
 
 
82706
//---------------------------------------------------------------------
 
82707
bool ColladaParserAutoGen15Private::_preEnd__attachment_end()
 
82708
{
 
82709
#ifdef GENERATEDSAXPARSER_VALIDATION
 
82710
    if ( mValidate )
 
82711
    {
 
82712
 
 
82713
        bool validationResult = _validateEnd__attachment_end();
 
82714
        if ( !validationResult ) return false;
 
82715
 
 
82716
    } // validation
 
82717
#endif
 
82718
 
 
82719
    return true;
 
82720
}
 
82721
 
 
82722
//---------------------------------------------------------------------
 
82723
bool ColladaParserAutoGen15Private::_freeAttributes__attachment_end( void* attributeData )
 
82724
{
 
82725
    attachment_end__AttributeData* typedAttributeData = static_cast<attachment_end__AttributeData*>(attributeData);
 
82726
 
 
82727
    typedAttributeData->~attachment_end__AttributeData();
 
82728
 
 
82729
    return true;
 
82730
}
 
82731
 
 
82732
//---------------------------------------------------------------------
 
82733
const formula__AttributeData formula__AttributeData::DEFAULT = {0, 0, 0};
 
82734
 
 
82735
//---------------------------------------------------------------------
 
82736
bool ColladaParserAutoGen15Private::_data__formula( const ParserChar* text, size_t textLength )
 
82737
{
 
82738
    return true;
 
82739
}
 
82740
 
 
82741
//---------------------------------------------------------------------
 
82742
bool ColladaParserAutoGen15Private::_preBegin__formula( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
82743
{
 
82744
#ifdef GENERATEDSAXPARSER_VALIDATION
 
82745
    if ( mValidate )
 
82746
    {
 
82747
 
 
82748
        bool validationResult = _validateBegin__formula( attributes, attributeDataPtr, validationDataPtr );
 
82749
        if ( !validationResult ) return false;
 
82750
 
 
82751
    } // validation
 
82752
#endif
 
82753
 
 
82754
formula__AttributeData* attributeData = newData<formula__AttributeData>(attributeDataPtr);
 
82755
 
 
82756
const ParserChar** attributeArray = attributes.attributes;
 
82757
if ( attributeArray )
 
82758
{
 
82759
    while (true)
 
82760
    {
 
82761
        const ParserChar * attribute = *attributeArray;
 
82762
        if ( !attribute )
 
82763
            break;
 
82764
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
82765
        attributeArray++;
 
82766
        if ( !attributeArray )
 
82767
            return false;
 
82768
        const ParserChar* attributeValue = *attributeArray;
 
82769
        attributeArray++;
 
82770
 
 
82771
 
 
82772
    switch ( hash )
 
82773
    {
 
82774
    case HASH_ATTRIBUTE_ID:
 
82775
    {
 
82776
 
 
82777
attributeData->id = attributeValue;
 
82778
 
 
82779
    break;
 
82780
    }
 
82781
    case HASH_ATTRIBUTE_NAME:
 
82782
    {
 
82783
 
 
82784
attributeData->name = attributeValue;
 
82785
 
 
82786
    break;
 
82787
    }
 
82788
    case HASH_ATTRIBUTE_SID:
 
82789
    {
 
82790
 
 
82791
attributeData->sid = attributeValue;
 
82792
#ifdef GENERATEDSAXPARSER_VALIDATION
 
82793
    if ( mValidate )
 
82794
    {
 
82795
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
82796
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
82797
    {
 
82798
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
82799
            simpleTypeValidationResult,
 
82800
            HASH_ELEMENT_FORMULA,
 
82801
            HASH_ATTRIBUTE_SID,
 
82802
            attributeValue) )
 
82803
        {
 
82804
            return false;
 
82805
        }
 
82806
    }
 
82807
    } // validation
 
82808
#endif
 
82809
 
 
82810
    break;
 
82811
    }
 
82812
    default:
 
82813
    {
 
82814
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FORMULA, attribute, attributeValue))
 
82815
            {return false;}
 
82816
    }
 
82817
    }
 
82818
    }
 
82819
}
 
82820
 
 
82821
 
 
82822
    return true;
 
82823
}
 
82824
 
 
82825
//---------------------------------------------------------------------
 
82826
bool ColladaParserAutoGen15Private::_preEnd__formula()
 
82827
{
 
82828
#ifdef GENERATEDSAXPARSER_VALIDATION
 
82829
    if ( mValidate )
 
82830
    {
 
82831
 
 
82832
        bool validationResult = _validateEnd__formula();
 
82833
        if ( !validationResult ) return false;
 
82834
 
 
82835
    } // validation
 
82836
#endif
 
82837
 
 
82838
    return true;
 
82839
}
 
82840
 
 
82841
//---------------------------------------------------------------------
 
82842
bool ColladaParserAutoGen15Private::_freeAttributes__formula( void* attributeData )
 
82843
{
 
82844
    formula__AttributeData* typedAttributeData = static_cast<formula__AttributeData*>(attributeData);
 
82845
 
 
82846
    typedAttributeData->~formula__AttributeData();
 
82847
 
 
82848
    return true;
 
82849
}
 
82850
 
 
82851
//---------------------------------------------------------------------
 
82852
const newparam____formula_newparam_type__AttributeData newparam____formula_newparam_type__AttributeData::DEFAULT = {0};
 
82853
 
 
82854
//---------------------------------------------------------------------
 
82855
bool ColladaParserAutoGen15Private::_data__newparam____formula_newparam_type( const ParserChar* text, size_t textLength )
 
82856
{
 
82857
    return true;
 
82858
}
 
82859
 
 
82860
//---------------------------------------------------------------------
 
82861
bool ColladaParserAutoGen15Private::_preBegin__newparam____formula_newparam_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
82862
{
 
82863
#ifdef GENERATEDSAXPARSER_VALIDATION
 
82864
    if ( mValidate )
 
82865
    {
 
82866
 
 
82867
        bool validationResult = _validateBegin__newparam____formula_newparam_type( attributes, attributeDataPtr, validationDataPtr );
 
82868
        if ( !validationResult ) return false;
 
82869
 
 
82870
    } // validation
 
82871
#endif
 
82872
 
 
82873
newparam____formula_newparam_type__AttributeData* attributeData = newData<newparam____formula_newparam_type__AttributeData>(attributeDataPtr);
 
82874
 
 
82875
const ParserChar** attributeArray = attributes.attributes;
 
82876
if ( attributeArray )
 
82877
{
 
82878
    while (true)
 
82879
    {
 
82880
        const ParserChar * attribute = *attributeArray;
 
82881
        if ( !attribute )
 
82882
            break;
 
82883
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
82884
        attributeArray++;
 
82885
        if ( !attributeArray )
 
82886
            return false;
 
82887
        const ParserChar* attributeValue = *attributeArray;
 
82888
        attributeArray++;
 
82889
 
 
82890
 
 
82891
    switch ( hash )
 
82892
    {
 
82893
    case HASH_ATTRIBUTE_SID:
 
82894
    {
 
82895
 
 
82896
attributeData->sid = attributeValue;
 
82897
#ifdef GENERATEDSAXPARSER_VALIDATION
 
82898
    if ( mValidate )
 
82899
    {
 
82900
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
82901
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
82902
    {
 
82903
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
82904
            simpleTypeValidationResult,
 
82905
            HASH_ELEMENT_NEWPARAM,
 
82906
            HASH_ATTRIBUTE_SID,
 
82907
            attributeValue) )
 
82908
        {
 
82909
            return false;
 
82910
        }
 
82911
    }
 
82912
    } // validation
 
82913
#endif
 
82914
 
 
82915
    break;
 
82916
    }
 
82917
    default:
 
82918
    {
 
82919
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_NEWPARAM, attribute, attributeValue))
 
82920
            {return false;}
 
82921
    }
 
82922
    }
 
82923
    }
 
82924
}
 
82925
 
 
82926
 
 
82927
    return true;
 
82928
}
 
82929
 
 
82930
//---------------------------------------------------------------------
 
82931
bool ColladaParserAutoGen15Private::_preEnd__newparam____formula_newparam_type()
 
82932
{
 
82933
#ifdef GENERATEDSAXPARSER_VALIDATION
 
82934
    if ( mValidate )
 
82935
    {
 
82936
 
 
82937
        bool validationResult = _validateEnd__newparam____formula_newparam_type();
 
82938
        if ( !validationResult ) return false;
 
82939
 
 
82940
    } // validation
 
82941
#endif
 
82942
 
 
82943
    return true;
 
82944
}
 
82945
 
 
82946
//---------------------------------------------------------------------
 
82947
bool ColladaParserAutoGen15Private::_freeAttributes__newparam____formula_newparam_type( void* attributeData )
 
82948
{
 
82949
    newparam____formula_newparam_type__AttributeData* typedAttributeData = static_cast<newparam____formula_newparam_type__AttributeData*>(attributeData);
 
82950
 
 
82951
    typedAttributeData->~newparam____formula_newparam_type__AttributeData();
 
82952
 
 
82953
    return true;
 
82954
}
 
82955
 
 
82956
//---------------------------------------------------------------------
 
82957
bool ColladaParserAutoGen15Private::_data__target( const ParserChar* text, size_t textLength )
 
82958
{
 
82959
    return true;
 
82960
}
 
82961
 
 
82962
//---------------------------------------------------------------------
 
82963
bool ColladaParserAutoGen15Private::_preBegin__target( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
82964
{
 
82965
#ifdef GENERATEDSAXPARSER_VALIDATION
 
82966
    if ( mValidate )
 
82967
    {
 
82968
 
 
82969
        bool validationResult = _validateBegin__target( attributes, attributeDataPtr, validationDataPtr );
 
82970
        if ( !validationResult ) return false;
 
82971
 
 
82972
    } // validation
 
82973
#endif
 
82974
 
 
82975
    return true;
 
82976
}
 
82977
 
 
82978
//---------------------------------------------------------------------
 
82979
bool ColladaParserAutoGen15Private::_preEnd__target()
 
82980
{
 
82981
#ifdef GENERATEDSAXPARSER_VALIDATION
 
82982
    if ( mValidate )
 
82983
    {
 
82984
 
 
82985
        bool validationResult = _validateEnd__target();
 
82986
        if ( !validationResult ) return false;
 
82987
 
 
82988
    } // validation
 
82989
#endif
 
82990
 
 
82991
    return true;
 
82992
}
 
82993
 
 
82994
//---------------------------------------------------------------------
 
82995
bool ColladaParserAutoGen15Private::_freeAttributes__target( void* attributeData )
 
82996
{
 
82997
    return true;
 
82998
}
 
82999
 
 
83000
//---------------------------------------------------------------------
 
83001
bool ColladaParserAutoGen15Private::_data__param____common_param_type( const ParserChar* text, size_t textLength )
 
83002
{
 
83003
 
 
83004
return mImpl->data__param____common_param_type(text, textLength);
 
83005
}
 
83006
 
 
83007
//---------------------------------------------------------------------
 
83008
bool ColladaParserAutoGen15Private::_preBegin__param____common_param_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
83009
{
 
83010
#ifdef GENERATEDSAXPARSER_VALIDATION
 
83011
    if ( mValidate )
 
83012
    {
 
83013
 
 
83014
        bool validationResult = _validateBegin__param____common_param_type( attributes, attributeDataPtr, validationDataPtr );
 
83015
        if ( !validationResult ) return false;
 
83016
 
 
83017
    } // validation
 
83018
#endif
 
83019
 
 
83020
    return true;
 
83021
}
 
83022
 
 
83023
//---------------------------------------------------------------------
 
83024
bool ColladaParserAutoGen15Private::_preEnd__param____common_param_type()
 
83025
{
 
83026
#ifdef GENERATEDSAXPARSER_VALIDATION
 
83027
    if ( mValidate )
 
83028
    {
 
83029
 
 
83030
        bool validationResult = _validateEnd__param____common_param_type();
 
83031
        if ( !validationResult ) return false;
 
83032
 
 
83033
    } // validation
 
83034
#endif
 
83035
 
 
83036
    return true;
 
83037
}
 
83038
 
 
83039
//---------------------------------------------------------------------
 
83040
bool ColladaParserAutoGen15Private::_freeAttributes__param____common_param_type( void* attributeData )
 
83041
{
 
83042
    return true;
 
83043
}
 
83044
 
 
83045
//---------------------------------------------------------------------
 
83046
bool ColladaParserAutoGen15Private::_data__technique_common____formula_technique_type( const ParserChar* text, size_t textLength )
 
83047
{
 
83048
    return true;
 
83049
}
 
83050
 
 
83051
//---------------------------------------------------------------------
 
83052
bool ColladaParserAutoGen15Private::_preBegin__technique_common____formula_technique_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
83053
{
 
83054
#ifdef GENERATEDSAXPARSER_VALIDATION
 
83055
    if ( mValidate )
 
83056
    {
 
83057
 
 
83058
        bool validationResult = _validateBegin__technique_common____formula_technique_type( attributes, attributeDataPtr, validationDataPtr );
 
83059
        if ( !validationResult ) return false;
 
83060
 
 
83061
    } // validation
 
83062
#endif
 
83063
 
 
83064
    return true;
 
83065
}
 
83066
 
 
83067
//---------------------------------------------------------------------
 
83068
bool ColladaParserAutoGen15Private::_preEnd__technique_common____formula_technique_type()
 
83069
{
 
83070
#ifdef GENERATEDSAXPARSER_VALIDATION
 
83071
    if ( mValidate )
 
83072
    {
 
83073
 
 
83074
        bool validationResult = _validateEnd__technique_common____formula_technique_type();
 
83075
        if ( !validationResult ) return false;
 
83076
 
 
83077
    } // validation
 
83078
#endif
 
83079
 
 
83080
    return true;
 
83081
}
 
83082
 
 
83083
//---------------------------------------------------------------------
 
83084
bool ColladaParserAutoGen15Private::_freeAttributes__technique_common____formula_technique_type( void* attributeData )
 
83085
{
 
83086
    return true;
 
83087
}
 
83088
 
 
83089
//---------------------------------------------------------------------
 
83090
const math__AttributeData math__AttributeData::DEFAULT = {0, 0, ENUM__mathml__overflow__scroll, 0, 0, 0, 0, 0, 0, 0, ENUM__mathml__display__inline, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
83091
 
 
83092
//---------------------------------------------------------------------
 
83093
bool ColladaParserAutoGen15Private::_data__math( const ParserChar* text, size_t textLength )
 
83094
{
 
83095
    return true;
 
83096
}
 
83097
 
 
83098
//---------------------------------------------------------------------
 
83099
bool ColladaParserAutoGen15Private::_preBegin__math( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
83100
{
 
83101
#ifdef GENERATEDSAXPARSER_VALIDATION
 
83102
    if ( mValidate )
 
83103
    {
 
83104
 
 
83105
        bool validationResult = _validateBegin__math( attributes, attributeDataPtr, validationDataPtr );
 
83106
        if ( !validationResult ) return false;
 
83107
 
 
83108
    } // validation
 
83109
#endif
 
83110
 
 
83111
math__AttributeData* attributeData = newData<math__AttributeData>(attributeDataPtr);
 
83112
 
 
83113
const ParserChar** attributeArray = attributes.attributes;
 
83114
if ( attributeArray )
 
83115
{
 
83116
    while (true)
 
83117
    {
 
83118
        const ParserChar * attribute = *attributeArray;
 
83119
        if ( !attribute )
 
83120
            break;
 
83121
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
83122
        attributeArray++;
 
83123
        if ( !attributeArray )
 
83124
            return false;
 
83125
        const ParserChar* attributeValue = *attributeArray;
 
83126
        attributeArray++;
 
83127
 
 
83128
 
 
83129
    switch ( hash )
 
83130
    {
 
83131
    case HASH_ATTRIBUTE_BASELINE:
 
83132
    {
 
83133
 
 
83134
attributeData->baseline = attributeValue;
 
83135
 
 
83136
    break;
 
83137
    }
 
83138
    case HASH_ATTRIBUTE_OVERFLOW:
 
83139
    {
 
83140
bool failed;
 
83141
attributeData->overflow = Utils::toEnum<ENUM__mathml__overflow, StringHash, ENUM__mathml__overflow__COUNT>(attributeValue, failed, ENUM__mathml__overflowMap, Utils::calculateStringHash);
 
83142
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
83143
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
83144
        HASH_ELEMENT_MATH,
 
83145
        HASH_ATTRIBUTE_OVERFLOW,
 
83146
        attributeValue))
 
83147
{
 
83148
    return false;
 
83149
}
 
83150
 
 
83151
    break;
 
83152
    }
 
83153
    case HASH_ATTRIBUTE_ALTIMG:
 
83154
    {
 
83155
bool failed;
 
83156
attributeData->altimg = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
83157
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
83158
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
83159
        HASH_ELEMENT_MATH,
 
83160
        HASH_ATTRIBUTE_ALTIMG,
 
83161
        attributeValue))
 
83162
{
 
83163
    return false;
 
83164
}
 
83165
if ( !failed )
 
83166
    attributeData->present_attributes |= math__AttributeData::ATTRIBUTE_ALTIMG_PRESENT;
 
83167
 
 
83168
    break;
 
83169
    }
 
83170
    case HASH_ATTRIBUTE_ALTTEXT:
 
83171
    {
 
83172
 
 
83173
attributeData->alttext = attributeValue;
 
83174
 
 
83175
    break;
 
83176
    }
 
83177
    case HASH_ATTRIBUTE_TYPE:
 
83178
    {
 
83179
 
 
83180
attributeData->type = attributeValue;
 
83181
 
 
83182
    break;
 
83183
    }
 
83184
    case HASH_ATTRIBUTE_NAME:
 
83185
    {
 
83186
 
 
83187
attributeData->name = attributeValue;
 
83188
 
 
83189
    break;
 
83190
    }
 
83191
    case HASH_ATTRIBUTE_HEIGHT:
 
83192
    {
 
83193
 
 
83194
attributeData->height = attributeValue;
 
83195
 
 
83196
    break;
 
83197
    }
 
83198
    case HASH_ATTRIBUTE_WIDTH:
 
83199
    {
 
83200
 
 
83201
attributeData->width = attributeValue;
 
83202
 
 
83203
    break;
 
83204
    }
 
83205
    case HASH_ATTRIBUTE_MACROS:
 
83206
    {
 
83207
 
 
83208
attributeData->macros = attributeValue;
 
83209
 
 
83210
    break;
 
83211
    }
 
83212
    case HASH_ATTRIBUTE_DISPLAY:
 
83213
    {
 
83214
bool failed;
 
83215
attributeData->display = Utils::toEnum<ENUM__mathml__display, StringHash, ENUM__mathml__display__COUNT>(attributeValue, failed, ENUM__mathml__displayMap, Utils::calculateStringHash);
 
83216
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
83217
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
83218
        HASH_ELEMENT_MATH,
 
83219
        HASH_ATTRIBUTE_DISPLAY,
 
83220
        attributeValue))
 
83221
{
 
83222
    return false;
 
83223
}
 
83224
 
 
83225
    break;
 
83226
    }
 
83227
    case HASH_ATTRIBUTE_CLASS:
 
83228
    {
 
83229
bool failed;
 
83230
#ifdef GENERATEDSAXPARSER_VALIDATION
 
83231
    if ( mValidate )
 
83232
    {
 
83233
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_MATH, HASH_ATTRIBUTE_CLASS);
 
83234
    }
 
83235
    else
 
83236
    {
 
83237
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
83238
    }
 
83239
#else
 
83240
    {
 
83241
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
83242
    } // validation
 
83243
#endif
 
83244
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
83245
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
83246
        HASH_ELEMENT_MATH,
 
83247
        HASH_ATTRIBUTE_CLASS,
 
83248
        attributeValue))
 
83249
{
 
83250
    return false;
 
83251
}
 
83252
#ifdef GENERATEDSAXPARSER_VALIDATION
 
83253
    if ( mValidate )
 
83254
    {
 
83255
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
83256
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
83257
    {
 
83258
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
83259
            simpleTypeValidationResult,
 
83260
            HASH_ELEMENT_MATH,
 
83261
            HASH_ATTRIBUTE_CLASS,
 
83262
            attributeValue) )
 
83263
        {
 
83264
            return false;
 
83265
        }
 
83266
    }
 
83267
    } // validation
 
83268
#endif
 
83269
 
 
83270
if ( !failed )
 
83271
    attributeData->present_attributes |= math__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
83272
 
 
83273
    break;
 
83274
    }
 
83275
    case HASH_ATTRIBUTE_STYLE:
 
83276
    {
 
83277
 
 
83278
attributeData->style = attributeValue;
 
83279
 
 
83280
    break;
 
83281
    }
 
83282
    case HASH_ATTRIBUTE_XREF:
 
83283
    {
 
83284
 
 
83285
attributeData->xref = attributeValue;
 
83286
 
 
83287
    break;
 
83288
    }
 
83289
    case HASH_ATTRIBUTE_ID:
 
83290
    {
 
83291
 
 
83292
attributeData->id = attributeValue;
 
83293
 
 
83294
    break;
 
83295
    }
 
83296
    case HASH_ATTRIBUTE_HREF:
 
83297
    {
 
83298
bool failed;
 
83299
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
83300
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
83301
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
83302
        HASH_ELEMENT_MATH,
 
83303
        HASH_ATTRIBUTE_HREF,
 
83304
        attributeValue))
 
83305
{
 
83306
    return false;
 
83307
}
 
83308
if ( !failed )
 
83309
    attributeData->present_attributes |= math__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
83310
 
 
83311
    break;
 
83312
    }
 
83313
    case HASH_ATTRIBUTE_XMLNS:
 
83314
    {
 
83315
    // ignore
 
83316
 
 
83317
    break;
 
83318
    }
 
83319
    default:
 
83320
    {
 
83321
        StringHashPair hashPair = Utils::calculateStringHashWithNamespace( attribute );
 
83322
        if ( hashPair.first != HASH_ATTRIBUTE_XMLNS )
 
83323
        {
 
83324
        if ( !attributeData->unknownAttributes.data )
 
83325
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
83326
        else
 
83327
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
83328
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
83329
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
83330
        attributeData->unknownAttributes.size += 2;
 
83331
        }
 
83332
        else
 
83333
        {
 
83334
            // ignore
 
83335
        }
 
83336
 
 
83337
    }
 
83338
    }
 
83339
    }
 
83340
}
 
83341
if ((attributeData->present_attributes & math__AttributeData::ATTRIBUTE_ALTIMG_PRESENT) == 0)
 
83342
{
 
83343
    attributeData->altimg = COLLADABU::URI("");
 
83344
}
 
83345
if ((attributeData->present_attributes & math__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
83346
{
 
83347
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
83348
}
 
83349
if ((attributeData->present_attributes & math__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
83350
{
 
83351
    attributeData->href = COLLADABU::URI("");
 
83352
}
 
83353
 
 
83354
 
 
83355
    return true;
 
83356
}
 
83357
 
 
83358
//---------------------------------------------------------------------
 
83359
bool ColladaParserAutoGen15Private::_preEnd__math()
 
83360
{
 
83361
#ifdef GENERATEDSAXPARSER_VALIDATION
 
83362
    if ( mValidate )
 
83363
    {
 
83364
 
 
83365
        bool validationResult = _validateEnd__math();
 
83366
        if ( !validationResult ) return false;
 
83367
 
 
83368
    } // validation
 
83369
#endif
 
83370
 
 
83371
    return true;
 
83372
}
 
83373
 
 
83374
//---------------------------------------------------------------------
 
83375
bool ColladaParserAutoGen15Private::_freeAttributes__math( void* attributeData )
 
83376
{
 
83377
    math__AttributeData* typedAttributeData = static_cast<math__AttributeData*>(attributeData);
 
83378
    if (typedAttributeData->_class.data)
 
83379
    {
 
83380
        mStackMemoryManager.deleteObject();
 
83381
    }
 
83382
 
 
83383
    if (typedAttributeData->unknownAttributes.data)
 
83384
    {
 
83385
        mStackMemoryManager.deleteObject();
 
83386
    }
 
83387
 
 
83388
 
 
83389
    typedAttributeData->~math__AttributeData();
 
83390
 
 
83391
    return true;
 
83392
}
 
83393
 
 
83394
//---------------------------------------------------------------------
 
83395
ENUM__mathml__overflow ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__mathml__overflow (
 
83396
    const ParserChar* prefixedBuffer,
 
83397
    const ParserChar* prefixedBufferEnd,
 
83398
    const ParserChar** buffer,
 
83399
    const ParserChar* bufferEnd,
 
83400
    bool& failed,
 
83401
    const std::pair<StringHash, ENUM__mathml__overflow>* enumMap,
 
83402
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
83403
)
 
83404
{
 
83405
    return toEnumDataPrefix<ENUM__mathml__overflow, StringHash, ENUM__mathml__overflow__COUNT, &toEnum_ENUM__mathml__overflow>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
83406
}
 
83407
 
 
83408
//---------------------------------------------------------------------
 
83409
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__mathml__overflow (
 
83410
    const ParserChar* text,
 
83411
    size_t textLength,
 
83412
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__mathml__overflow*, size_t ),
 
83413
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
83414
)
 
83415
{
 
83416
    return characterData2EnumData<ENUM__mathml__overflow, StringHash, ENUM__mathml__overflow__COUNT>(text, textLength, dataFunction, ENUM__mathml__overflowMap, baseConversionFunc, &toEnum_ENUM__mathml__overflow, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__mathml__overflow);
 
83417
}
 
83418
 
 
83419
//---------------------------------------------------------------------
 
83420
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__mathml__overflow (
 
83421
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__mathml__overflow*, size_t ),
 
83422
    const std::pair<StringHash, ENUM__mathml__overflow>* enumMap,
 
83423
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
83424
    ENUM__mathml__overflow (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__mathml__overflow>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
83425
)
 
83426
{
 
83427
    return dataEnumEnd<ENUM__mathml__overflow, StringHash, ENUM__mathml__overflow__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
83428
}
 
83429
 
 
83430
//---------------------------------------------------------------------
 
83431
ENUM__mathml__display ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__mathml__display (
 
83432
    const ParserChar* prefixedBuffer,
 
83433
    const ParserChar* prefixedBufferEnd,
 
83434
    const ParserChar** buffer,
 
83435
    const ParserChar* bufferEnd,
 
83436
    bool& failed,
 
83437
    const std::pair<StringHash, ENUM__mathml__display>* enumMap,
 
83438
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
83439
)
 
83440
{
 
83441
    return toEnumDataPrefix<ENUM__mathml__display, StringHash, ENUM__mathml__display__COUNT, &toEnum_ENUM__mathml__display>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
83442
}
 
83443
 
 
83444
//---------------------------------------------------------------------
 
83445
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__mathml__display (
 
83446
    const ParserChar* text,
 
83447
    size_t textLength,
 
83448
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__mathml__display*, size_t ),
 
83449
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
83450
)
 
83451
{
 
83452
    return characterData2EnumData<ENUM__mathml__display, StringHash, ENUM__mathml__display__COUNT>(text, textLength, dataFunction, ENUM__mathml__displayMap, baseConversionFunc, &toEnum_ENUM__mathml__display, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__mathml__display);
 
83453
}
 
83454
 
 
83455
//---------------------------------------------------------------------
 
83456
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__mathml__display (
 
83457
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__mathml__display*, size_t ),
 
83458
    const std::pair<StringHash, ENUM__mathml__display>* enumMap,
 
83459
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
83460
    ENUM__mathml__display (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__mathml__display>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
83461
)
 
83462
{
 
83463
    return dataEnumEnd<ENUM__mathml__display, StringHash, ENUM__mathml__display__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
83464
}
 
83465
 
 
83466
//---------------------------------------------------------------------
 
83467
const cn__AttributeData cn__AttributeData::DEFAULT = {0, 0, ENUM__mathml__cn__type__NOT_PRESENT, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
83468
 
 
83469
//---------------------------------------------------------------------
 
83470
bool ColladaParserAutoGen15Private::_data__cn( const ParserChar* text, size_t textLength )
 
83471
{
 
83472
 
 
83473
return mImpl->data__cn(text, textLength);
 
83474
}
 
83475
 
 
83476
//---------------------------------------------------------------------
 
83477
bool ColladaParserAutoGen15Private::_preBegin__cn( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
83478
{
 
83479
#ifdef GENERATEDSAXPARSER_VALIDATION
 
83480
    if ( mValidate )
 
83481
    {
 
83482
 
 
83483
        bool validationResult = _validateBegin__cn( attributes, attributeDataPtr, validationDataPtr );
 
83484
        if ( !validationResult ) return false;
 
83485
 
 
83486
    } // validation
 
83487
#endif
 
83488
 
 
83489
cn__AttributeData* attributeData = newData<cn__AttributeData>(attributeDataPtr);
 
83490
 
 
83491
const ParserChar** attributeArray = attributes.attributes;
 
83492
if ( attributeArray )
 
83493
{
 
83494
    while (true)
 
83495
    {
 
83496
        const ParserChar * attribute = *attributeArray;
 
83497
        if ( !attribute )
 
83498
            break;
 
83499
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
83500
        attributeArray++;
 
83501
        if ( !attributeArray )
 
83502
            return false;
 
83503
        const ParserChar* attributeValue = *attributeArray;
 
83504
        attributeArray++;
 
83505
 
 
83506
 
 
83507
    switch ( hash )
 
83508
    {
 
83509
    case HASH_ATTRIBUTE_BASE:
 
83510
    {
 
83511
bool failed;
 
83512
attributeData->base = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
83513
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
83514
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
83515
        HASH_ELEMENT_CN,
 
83516
        HASH_ATTRIBUTE_BASE,
 
83517
        attributeValue))
 
83518
{
 
83519
    return false;
 
83520
}
 
83521
#ifdef GENERATEDSAXPARSER_VALIDATION
 
83522
    if ( mValidate )
 
83523
    {
 
83524
    ParserError::ErrorType simpleTypeValidationResult = validate__cn(attributeData->base);
 
83525
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
83526
    {
 
83527
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
83528
            simpleTypeValidationResult,
 
83529
            HASH_ELEMENT_CN,
 
83530
            HASH_ATTRIBUTE_BASE,
 
83531
            attributeValue) )
 
83532
        {
 
83533
            return false;
 
83534
        }
 
83535
    }
 
83536
    } // validation
 
83537
#endif
 
83538
if ( !failed )
 
83539
    attributeData->present_attributes |= cn__AttributeData::ATTRIBUTE_BASE_PRESENT;
 
83540
 
 
83541
    break;
 
83542
    }
 
83543
    case HASH_ATTRIBUTE_TYPE:
 
83544
    {
 
83545
bool failed;
 
83546
attributeData->type = Utils::toEnum<ENUM__mathml__cn__type, StringHash, ENUM__mathml__cn__type__COUNT>(attributeValue, failed, ENUM__mathml__cn__typeMap, Utils::calculateStringHash);
 
83547
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
83548
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
83549
        HASH_ELEMENT_CN,
 
83550
        HASH_ATTRIBUTE_TYPE,
 
83551
        attributeValue))
 
83552
{
 
83553
    return false;
 
83554
}
 
83555
 
 
83556
    break;
 
83557
    }
 
83558
    case HASH_ATTRIBUTE_ENCODING:
 
83559
    {
 
83560
 
 
83561
attributeData->encoding = attributeValue;
 
83562
 
 
83563
    break;
 
83564
    }
 
83565
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
83566
    {
 
83567
bool failed;
 
83568
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
83569
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
83570
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
83571
        HASH_ELEMENT_CN,
 
83572
        HASH_ATTRIBUTE_DEFINITIONURL,
 
83573
        attributeValue))
 
83574
{
 
83575
    return false;
 
83576
}
 
83577
if ( !failed )
 
83578
    attributeData->present_attributes |= cn__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
83579
 
 
83580
    break;
 
83581
    }
 
83582
    case HASH_ATTRIBUTE_CLASS:
 
83583
    {
 
83584
bool failed;
 
83585
#ifdef GENERATEDSAXPARSER_VALIDATION
 
83586
    if ( mValidate )
 
83587
    {
 
83588
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_CN, HASH_ATTRIBUTE_CLASS);
 
83589
    }
 
83590
    else
 
83591
    {
 
83592
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
83593
    }
 
83594
#else
 
83595
    {
 
83596
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
83597
    } // validation
 
83598
#endif
 
83599
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
83600
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
83601
        HASH_ELEMENT_CN,
 
83602
        HASH_ATTRIBUTE_CLASS,
 
83603
        attributeValue))
 
83604
{
 
83605
    return false;
 
83606
}
 
83607
#ifdef GENERATEDSAXPARSER_VALIDATION
 
83608
    if ( mValidate )
 
83609
    {
 
83610
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
83611
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
83612
    {
 
83613
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
83614
            simpleTypeValidationResult,
 
83615
            HASH_ELEMENT_CN,
 
83616
            HASH_ATTRIBUTE_CLASS,
 
83617
            attributeValue) )
 
83618
        {
 
83619
            return false;
 
83620
        }
 
83621
    }
 
83622
    } // validation
 
83623
#endif
 
83624
 
 
83625
if ( !failed )
 
83626
    attributeData->present_attributes |= cn__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
83627
 
 
83628
    break;
 
83629
    }
 
83630
    case HASH_ATTRIBUTE_STYLE:
 
83631
    {
 
83632
 
 
83633
attributeData->style = attributeValue;
 
83634
 
 
83635
    break;
 
83636
    }
 
83637
    case HASH_ATTRIBUTE_XREF:
 
83638
    {
 
83639
 
 
83640
attributeData->xref = attributeValue;
 
83641
 
 
83642
    break;
 
83643
    }
 
83644
    case HASH_ATTRIBUTE_ID:
 
83645
    {
 
83646
 
 
83647
attributeData->id = attributeValue;
 
83648
 
 
83649
    break;
 
83650
    }
 
83651
    case HASH_ATTRIBUTE_HREF:
 
83652
    {
 
83653
bool failed;
 
83654
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
83655
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
83656
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
83657
        HASH_ELEMENT_CN,
 
83658
        HASH_ATTRIBUTE_HREF,
 
83659
        attributeValue))
 
83660
{
 
83661
    return false;
 
83662
}
 
83663
if ( !failed )
 
83664
    attributeData->present_attributes |= cn__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
83665
 
 
83666
    break;
 
83667
    }
 
83668
    default:
 
83669
    {
 
83670
        if ( !attributeData->unknownAttributes.data )
 
83671
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
83672
        else
 
83673
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
83674
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
83675
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
83676
        attributeData->unknownAttributes.size += 2;
 
83677
 
 
83678
    }
 
83679
    }
 
83680
    }
 
83681
}
 
83682
if ((attributeData->present_attributes & cn__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
83683
{
 
83684
    attributeData->definitionURL = COLLADABU::URI("");
 
83685
}
 
83686
if ((attributeData->present_attributes & cn__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
83687
{
 
83688
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
83689
}
 
83690
if ((attributeData->present_attributes & cn__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
83691
{
 
83692
    attributeData->href = COLLADABU::URI("");
 
83693
}
 
83694
 
 
83695
 
 
83696
    return true;
 
83697
}
 
83698
 
 
83699
//---------------------------------------------------------------------
 
83700
bool ColladaParserAutoGen15Private::_preEnd__cn()
 
83701
{
 
83702
#ifdef GENERATEDSAXPARSER_VALIDATION
 
83703
    if ( mValidate )
 
83704
    {
 
83705
 
 
83706
        bool validationResult = _validateEnd__cn();
 
83707
        if ( !validationResult ) return false;
 
83708
 
 
83709
    } // validation
 
83710
#endif
 
83711
 
 
83712
    return true;
 
83713
}
 
83714
 
 
83715
//---------------------------------------------------------------------
 
83716
bool ColladaParserAutoGen15Private::_freeAttributes__cn( void* attributeData )
 
83717
{
 
83718
    cn__AttributeData* typedAttributeData = static_cast<cn__AttributeData*>(attributeData);
 
83719
    if (typedAttributeData->_class.data)
 
83720
    {
 
83721
        mStackMemoryManager.deleteObject();
 
83722
    }
 
83723
 
 
83724
    if (typedAttributeData->unknownAttributes.data)
 
83725
    {
 
83726
        mStackMemoryManager.deleteObject();
 
83727
    }
 
83728
 
 
83729
 
 
83730
    typedAttributeData->~cn__AttributeData();
 
83731
 
 
83732
    return true;
 
83733
}
 
83734
 
 
83735
//---------------------------------------------------------------------
 
83736
ENUM__mathml__cn__type ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__mathml__cn__type (
 
83737
    const ParserChar* prefixedBuffer,
 
83738
    const ParserChar* prefixedBufferEnd,
 
83739
    const ParserChar** buffer,
 
83740
    const ParserChar* bufferEnd,
 
83741
    bool& failed,
 
83742
    const std::pair<StringHash, ENUM__mathml__cn__type>* enumMap,
 
83743
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
83744
)
 
83745
{
 
83746
    return toEnumDataPrefix<ENUM__mathml__cn__type, StringHash, ENUM__mathml__cn__type__COUNT, &toEnum_ENUM__mathml__cn__type>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
83747
}
 
83748
 
 
83749
//---------------------------------------------------------------------
 
83750
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__mathml__cn__type (
 
83751
    const ParserChar* text,
 
83752
    size_t textLength,
 
83753
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__mathml__cn__type*, size_t ),
 
83754
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
83755
)
 
83756
{
 
83757
    return characterData2EnumData<ENUM__mathml__cn__type, StringHash, ENUM__mathml__cn__type__COUNT>(text, textLength, dataFunction, ENUM__mathml__cn__typeMap, baseConversionFunc, &toEnum_ENUM__mathml__cn__type, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__mathml__cn__type);
 
83758
}
 
83759
 
 
83760
//---------------------------------------------------------------------
 
83761
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__mathml__cn__type (
 
83762
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__mathml__cn__type*, size_t ),
 
83763
    const std::pair<StringHash, ENUM__mathml__cn__type>* enumMap,
 
83764
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
83765
    ENUM__mathml__cn__type (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__mathml__cn__type>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
83766
)
 
83767
{
 
83768
    return dataEnumEnd<ENUM__mathml__cn__type, StringHash, ENUM__mathml__cn__type__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
83769
}
 
83770
 
 
83771
//---------------------------------------------------------------------
 
83772
const ci__AttributeData ci__AttributeData::DEFAULT = {0, 0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
83773
 
 
83774
//---------------------------------------------------------------------
 
83775
bool ColladaParserAutoGen15Private::_data__ci( const ParserChar* text, size_t textLength )
 
83776
{
 
83777
 
 
83778
return mImpl->data__ci(text, textLength);
 
83779
}
 
83780
 
 
83781
//---------------------------------------------------------------------
 
83782
bool ColladaParserAutoGen15Private::_preBegin__ci( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
83783
{
 
83784
#ifdef GENERATEDSAXPARSER_VALIDATION
 
83785
    if ( mValidate )
 
83786
    {
 
83787
 
 
83788
        bool validationResult = _validateBegin__ci( attributes, attributeDataPtr, validationDataPtr );
 
83789
        if ( !validationResult ) return false;
 
83790
 
 
83791
    } // validation
 
83792
#endif
 
83793
 
 
83794
ci__AttributeData* attributeData = newData<ci__AttributeData>(attributeDataPtr);
 
83795
 
 
83796
const ParserChar** attributeArray = attributes.attributes;
 
83797
if ( attributeArray )
 
83798
{
 
83799
    while (true)
 
83800
    {
 
83801
        const ParserChar * attribute = *attributeArray;
 
83802
        if ( !attribute )
 
83803
            break;
 
83804
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
83805
        attributeArray++;
 
83806
        if ( !attributeArray )
 
83807
            return false;
 
83808
        const ParserChar* attributeValue = *attributeArray;
 
83809
        attributeArray++;
 
83810
 
 
83811
 
 
83812
    switch ( hash )
 
83813
    {
 
83814
    case HASH_ATTRIBUTE_TYPE:
 
83815
    {
 
83816
 
 
83817
attributeData->type = attributeValue;
 
83818
 
 
83819
    break;
 
83820
    }
 
83821
    case HASH_ATTRIBUTE_ENCODING:
 
83822
    {
 
83823
 
 
83824
attributeData->encoding = attributeValue;
 
83825
 
 
83826
    break;
 
83827
    }
 
83828
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
83829
    {
 
83830
bool failed;
 
83831
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
83832
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
83833
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
83834
        HASH_ELEMENT_CI,
 
83835
        HASH_ATTRIBUTE_DEFINITIONURL,
 
83836
        attributeValue))
 
83837
{
 
83838
    return false;
 
83839
}
 
83840
if ( !failed )
 
83841
    attributeData->present_attributes |= ci__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
83842
 
 
83843
    break;
 
83844
    }
 
83845
    case HASH_ATTRIBUTE_CLASS:
 
83846
    {
 
83847
bool failed;
 
83848
#ifdef GENERATEDSAXPARSER_VALIDATION
 
83849
    if ( mValidate )
 
83850
    {
 
83851
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_CI, HASH_ATTRIBUTE_CLASS);
 
83852
    }
 
83853
    else
 
83854
    {
 
83855
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
83856
    }
 
83857
#else
 
83858
    {
 
83859
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
83860
    } // validation
 
83861
#endif
 
83862
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
83863
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
83864
        HASH_ELEMENT_CI,
 
83865
        HASH_ATTRIBUTE_CLASS,
 
83866
        attributeValue))
 
83867
{
 
83868
    return false;
 
83869
}
 
83870
#ifdef GENERATEDSAXPARSER_VALIDATION
 
83871
    if ( mValidate )
 
83872
    {
 
83873
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
83874
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
83875
    {
 
83876
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
83877
            simpleTypeValidationResult,
 
83878
            HASH_ELEMENT_CI,
 
83879
            HASH_ATTRIBUTE_CLASS,
 
83880
            attributeValue) )
 
83881
        {
 
83882
            return false;
 
83883
        }
 
83884
    }
 
83885
    } // validation
 
83886
#endif
 
83887
 
 
83888
if ( !failed )
 
83889
    attributeData->present_attributes |= ci__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
83890
 
 
83891
    break;
 
83892
    }
 
83893
    case HASH_ATTRIBUTE_STYLE:
 
83894
    {
 
83895
 
 
83896
attributeData->style = attributeValue;
 
83897
 
 
83898
    break;
 
83899
    }
 
83900
    case HASH_ATTRIBUTE_XREF:
 
83901
    {
 
83902
 
 
83903
attributeData->xref = attributeValue;
 
83904
 
 
83905
    break;
 
83906
    }
 
83907
    case HASH_ATTRIBUTE_ID:
 
83908
    {
 
83909
 
 
83910
attributeData->id = attributeValue;
 
83911
 
 
83912
    break;
 
83913
    }
 
83914
    case HASH_ATTRIBUTE_HREF:
 
83915
    {
 
83916
bool failed;
 
83917
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
83918
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
83919
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
83920
        HASH_ELEMENT_CI,
 
83921
        HASH_ATTRIBUTE_HREF,
 
83922
        attributeValue))
 
83923
{
 
83924
    return false;
 
83925
}
 
83926
if ( !failed )
 
83927
    attributeData->present_attributes |= ci__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
83928
 
 
83929
    break;
 
83930
    }
 
83931
    default:
 
83932
    {
 
83933
        if ( !attributeData->unknownAttributes.data )
 
83934
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
83935
        else
 
83936
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
83937
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
83938
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
83939
        attributeData->unknownAttributes.size += 2;
 
83940
 
 
83941
    }
 
83942
    }
 
83943
    }
 
83944
}
 
83945
if ((attributeData->present_attributes & ci__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
83946
{
 
83947
    attributeData->definitionURL = COLLADABU::URI("");
 
83948
}
 
83949
if ((attributeData->present_attributes & ci__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
83950
{
 
83951
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
83952
}
 
83953
if ((attributeData->present_attributes & ci__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
83954
{
 
83955
    attributeData->href = COLLADABU::URI("");
 
83956
}
 
83957
 
 
83958
 
 
83959
    return true;
 
83960
}
 
83961
 
 
83962
//---------------------------------------------------------------------
 
83963
bool ColladaParserAutoGen15Private::_preEnd__ci()
 
83964
{
 
83965
#ifdef GENERATEDSAXPARSER_VALIDATION
 
83966
    if ( mValidate )
 
83967
    {
 
83968
 
 
83969
        bool validationResult = _validateEnd__ci();
 
83970
        if ( !validationResult ) return false;
 
83971
 
 
83972
    } // validation
 
83973
#endif
 
83974
 
 
83975
    return true;
 
83976
}
 
83977
 
 
83978
//---------------------------------------------------------------------
 
83979
bool ColladaParserAutoGen15Private::_freeAttributes__ci( void* attributeData )
 
83980
{
 
83981
    ci__AttributeData* typedAttributeData = static_cast<ci__AttributeData*>(attributeData);
 
83982
    if (typedAttributeData->_class.data)
 
83983
    {
 
83984
        mStackMemoryManager.deleteObject();
 
83985
    }
 
83986
 
 
83987
    if (typedAttributeData->unknownAttributes.data)
 
83988
    {
 
83989
        mStackMemoryManager.deleteObject();
 
83990
    }
 
83991
 
 
83992
 
 
83993
    typedAttributeData->~ci__AttributeData();
 
83994
 
 
83995
    return true;
 
83996
}
 
83997
 
 
83998
//---------------------------------------------------------------------
 
83999
const csymbol__AttributeData csymbol__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
84000
 
 
84001
//---------------------------------------------------------------------
 
84002
bool ColladaParserAutoGen15Private::_data__csymbol( const ParserChar* text, size_t textLength )
 
84003
{
 
84004
 
 
84005
return mImpl->data__csymbol(text, textLength);
 
84006
}
 
84007
 
 
84008
//---------------------------------------------------------------------
 
84009
bool ColladaParserAutoGen15Private::_preBegin__csymbol( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
84010
{
 
84011
#ifdef GENERATEDSAXPARSER_VALIDATION
 
84012
    if ( mValidate )
 
84013
    {
 
84014
 
 
84015
        bool validationResult = _validateBegin__csymbol( attributes, attributeDataPtr, validationDataPtr );
 
84016
        if ( !validationResult ) return false;
 
84017
 
 
84018
    } // validation
 
84019
#endif
 
84020
 
 
84021
csymbol__AttributeData* attributeData = newData<csymbol__AttributeData>(attributeDataPtr);
 
84022
 
 
84023
const ParserChar** attributeArray = attributes.attributes;
 
84024
if ( attributeArray )
 
84025
{
 
84026
    while (true)
 
84027
    {
 
84028
        const ParserChar * attribute = *attributeArray;
 
84029
        if ( !attribute )
 
84030
            break;
 
84031
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
84032
        attributeArray++;
 
84033
        if ( !attributeArray )
 
84034
            return false;
 
84035
        const ParserChar* attributeValue = *attributeArray;
 
84036
        attributeArray++;
 
84037
 
 
84038
 
 
84039
    switch ( hash )
 
84040
    {
 
84041
    case HASH_ATTRIBUTE_ENCODING:
 
84042
    {
 
84043
 
 
84044
attributeData->encoding = attributeValue;
 
84045
 
 
84046
    break;
 
84047
    }
 
84048
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
84049
    {
 
84050
bool failed;
 
84051
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
84052
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
84053
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
84054
        HASH_ELEMENT_CSYMBOL,
 
84055
        HASH_ATTRIBUTE_DEFINITIONURL,
 
84056
        attributeValue))
 
84057
{
 
84058
    return false;
 
84059
}
 
84060
if ( !failed )
 
84061
    attributeData->present_attributes |= csymbol__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
84062
 
 
84063
    break;
 
84064
    }
 
84065
    case HASH_ATTRIBUTE_CLASS:
 
84066
    {
 
84067
bool failed;
 
84068
#ifdef GENERATEDSAXPARSER_VALIDATION
 
84069
    if ( mValidate )
 
84070
    {
 
84071
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_CSYMBOL, HASH_ATTRIBUTE_CLASS);
 
84072
    }
 
84073
    else
 
84074
    {
 
84075
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
84076
    }
 
84077
#else
 
84078
    {
 
84079
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
84080
    } // validation
 
84081
#endif
 
84082
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
84083
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
84084
        HASH_ELEMENT_CSYMBOL,
 
84085
        HASH_ATTRIBUTE_CLASS,
 
84086
        attributeValue))
 
84087
{
 
84088
    return false;
 
84089
}
 
84090
#ifdef GENERATEDSAXPARSER_VALIDATION
 
84091
    if ( mValidate )
 
84092
    {
 
84093
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
84094
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
84095
    {
 
84096
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
84097
            simpleTypeValidationResult,
 
84098
            HASH_ELEMENT_CSYMBOL,
 
84099
            HASH_ATTRIBUTE_CLASS,
 
84100
            attributeValue) )
 
84101
        {
 
84102
            return false;
 
84103
        }
 
84104
    }
 
84105
    } // validation
 
84106
#endif
 
84107
 
 
84108
if ( !failed )
 
84109
    attributeData->present_attributes |= csymbol__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
84110
 
 
84111
    break;
 
84112
    }
 
84113
    case HASH_ATTRIBUTE_STYLE:
 
84114
    {
 
84115
 
 
84116
attributeData->style = attributeValue;
 
84117
 
 
84118
    break;
 
84119
    }
 
84120
    case HASH_ATTRIBUTE_XREF:
 
84121
    {
 
84122
 
 
84123
attributeData->xref = attributeValue;
 
84124
 
 
84125
    break;
 
84126
    }
 
84127
    case HASH_ATTRIBUTE_ID:
 
84128
    {
 
84129
 
 
84130
attributeData->id = attributeValue;
 
84131
 
 
84132
    break;
 
84133
    }
 
84134
    case HASH_ATTRIBUTE_HREF:
 
84135
    {
 
84136
bool failed;
 
84137
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
84138
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
84139
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
84140
        HASH_ELEMENT_CSYMBOL,
 
84141
        HASH_ATTRIBUTE_HREF,
 
84142
        attributeValue))
 
84143
{
 
84144
    return false;
 
84145
}
 
84146
if ( !failed )
 
84147
    attributeData->present_attributes |= csymbol__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
84148
 
 
84149
    break;
 
84150
    }
 
84151
    default:
 
84152
    {
 
84153
        if ( !attributeData->unknownAttributes.data )
 
84154
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
84155
        else
 
84156
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
84157
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
84158
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
84159
        attributeData->unknownAttributes.size += 2;
 
84160
 
 
84161
    }
 
84162
    }
 
84163
    }
 
84164
}
 
84165
if ((attributeData->present_attributes & csymbol__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
84166
{
 
84167
    attributeData->definitionURL = COLLADABU::URI("");
 
84168
}
 
84169
if ((attributeData->present_attributes & csymbol__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
84170
{
 
84171
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
84172
}
 
84173
if ((attributeData->present_attributes & csymbol__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
84174
{
 
84175
    attributeData->href = COLLADABU::URI("");
 
84176
}
 
84177
 
 
84178
 
 
84179
    return true;
 
84180
}
 
84181
 
 
84182
//---------------------------------------------------------------------
 
84183
bool ColladaParserAutoGen15Private::_preEnd__csymbol()
 
84184
{
 
84185
#ifdef GENERATEDSAXPARSER_VALIDATION
 
84186
    if ( mValidate )
 
84187
    {
 
84188
 
 
84189
        bool validationResult = _validateEnd__csymbol();
 
84190
        if ( !validationResult ) return false;
 
84191
 
 
84192
    } // validation
 
84193
#endif
 
84194
 
 
84195
    return true;
 
84196
}
 
84197
 
 
84198
//---------------------------------------------------------------------
 
84199
bool ColladaParserAutoGen15Private::_freeAttributes__csymbol( void* attributeData )
 
84200
{
 
84201
    csymbol__AttributeData* typedAttributeData = static_cast<csymbol__AttributeData*>(attributeData);
 
84202
    if (typedAttributeData->_class.data)
 
84203
    {
 
84204
        mStackMemoryManager.deleteObject();
 
84205
    }
 
84206
 
 
84207
    if (typedAttributeData->unknownAttributes.data)
 
84208
    {
 
84209
        mStackMemoryManager.deleteObject();
 
84210
    }
 
84211
 
 
84212
 
 
84213
    typedAttributeData->~csymbol__AttributeData();
 
84214
 
 
84215
    return true;
 
84216
}
 
84217
 
 
84218
//---------------------------------------------------------------------
 
84219
const abs__AttributeData abs__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
84220
 
 
84221
//---------------------------------------------------------------------
 
84222
bool ColladaParserAutoGen15Private::_data__abs( const ParserChar* text, size_t textLength )
 
84223
{
 
84224
    return true;
 
84225
}
 
84226
 
 
84227
//---------------------------------------------------------------------
 
84228
bool ColladaParserAutoGen15Private::_preBegin__abs( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
84229
{
 
84230
#ifdef GENERATEDSAXPARSER_VALIDATION
 
84231
    if ( mValidate )
 
84232
    {
 
84233
 
 
84234
        bool validationResult = _validateBegin__abs( attributes, attributeDataPtr, validationDataPtr );
 
84235
        if ( !validationResult ) return false;
 
84236
 
 
84237
    } // validation
 
84238
#endif
 
84239
 
 
84240
abs__AttributeData* attributeData = newData<abs__AttributeData>(attributeDataPtr);
 
84241
 
 
84242
const ParserChar** attributeArray = attributes.attributes;
 
84243
if ( attributeArray )
 
84244
{
 
84245
    while (true)
 
84246
    {
 
84247
        const ParserChar * attribute = *attributeArray;
 
84248
        if ( !attribute )
 
84249
            break;
 
84250
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
84251
        attributeArray++;
 
84252
        if ( !attributeArray )
 
84253
            return false;
 
84254
        const ParserChar* attributeValue = *attributeArray;
 
84255
        attributeArray++;
 
84256
 
 
84257
 
 
84258
    switch ( hash )
 
84259
    {
 
84260
    case HASH_ATTRIBUTE_ENCODING:
 
84261
    {
 
84262
 
 
84263
attributeData->encoding = attributeValue;
 
84264
 
 
84265
    break;
 
84266
    }
 
84267
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
84268
    {
 
84269
bool failed;
 
84270
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
84271
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
84272
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
84273
        HASH_ELEMENT_ABS,
 
84274
        HASH_ATTRIBUTE_DEFINITIONURL,
 
84275
        attributeValue))
 
84276
{
 
84277
    return false;
 
84278
}
 
84279
if ( !failed )
 
84280
    attributeData->present_attributes |= abs__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
84281
 
 
84282
    break;
 
84283
    }
 
84284
    case HASH_ATTRIBUTE_CLASS:
 
84285
    {
 
84286
bool failed;
 
84287
#ifdef GENERATEDSAXPARSER_VALIDATION
 
84288
    if ( mValidate )
 
84289
    {
 
84290
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_ABS, HASH_ATTRIBUTE_CLASS);
 
84291
    }
 
84292
    else
 
84293
    {
 
84294
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
84295
    }
 
84296
#else
 
84297
    {
 
84298
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
84299
    } // validation
 
84300
#endif
 
84301
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
84302
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
84303
        HASH_ELEMENT_ABS,
 
84304
        HASH_ATTRIBUTE_CLASS,
 
84305
        attributeValue))
 
84306
{
 
84307
    return false;
 
84308
}
 
84309
#ifdef GENERATEDSAXPARSER_VALIDATION
 
84310
    if ( mValidate )
 
84311
    {
 
84312
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
84313
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
84314
    {
 
84315
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
84316
            simpleTypeValidationResult,
 
84317
            HASH_ELEMENT_ABS,
 
84318
            HASH_ATTRIBUTE_CLASS,
 
84319
            attributeValue) )
 
84320
        {
 
84321
            return false;
 
84322
        }
 
84323
    }
 
84324
    } // validation
 
84325
#endif
 
84326
 
 
84327
if ( !failed )
 
84328
    attributeData->present_attributes |= abs__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
84329
 
 
84330
    break;
 
84331
    }
 
84332
    case HASH_ATTRIBUTE_STYLE:
 
84333
    {
 
84334
 
 
84335
attributeData->style = attributeValue;
 
84336
 
 
84337
    break;
 
84338
    }
 
84339
    case HASH_ATTRIBUTE_XREF:
 
84340
    {
 
84341
 
 
84342
attributeData->xref = attributeValue;
 
84343
 
 
84344
    break;
 
84345
    }
 
84346
    case HASH_ATTRIBUTE_ID:
 
84347
    {
 
84348
 
 
84349
attributeData->id = attributeValue;
 
84350
 
 
84351
    break;
 
84352
    }
 
84353
    case HASH_ATTRIBUTE_HREF:
 
84354
    {
 
84355
bool failed;
 
84356
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
84357
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
84358
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
84359
        HASH_ELEMENT_ABS,
 
84360
        HASH_ATTRIBUTE_HREF,
 
84361
        attributeValue))
 
84362
{
 
84363
    return false;
 
84364
}
 
84365
if ( !failed )
 
84366
    attributeData->present_attributes |= abs__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
84367
 
 
84368
    break;
 
84369
    }
 
84370
    default:
 
84371
    {
 
84372
        if ( !attributeData->unknownAttributes.data )
 
84373
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
84374
        else
 
84375
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
84376
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
84377
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
84378
        attributeData->unknownAttributes.size += 2;
 
84379
 
 
84380
    }
 
84381
    }
 
84382
    }
 
84383
}
 
84384
if ((attributeData->present_attributes & abs__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
84385
{
 
84386
    attributeData->definitionURL = COLLADABU::URI("");
 
84387
}
 
84388
if ((attributeData->present_attributes & abs__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
84389
{
 
84390
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
84391
}
 
84392
if ((attributeData->present_attributes & abs__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
84393
{
 
84394
    attributeData->href = COLLADABU::URI("");
 
84395
}
 
84396
 
 
84397
 
 
84398
    return true;
 
84399
}
 
84400
 
 
84401
//---------------------------------------------------------------------
 
84402
bool ColladaParserAutoGen15Private::_preEnd__abs()
 
84403
{
 
84404
#ifdef GENERATEDSAXPARSER_VALIDATION
 
84405
    if ( mValidate )
 
84406
    {
 
84407
 
 
84408
        bool validationResult = _validateEnd__abs();
 
84409
        if ( !validationResult ) return false;
 
84410
 
 
84411
    } // validation
 
84412
#endif
 
84413
 
 
84414
    return true;
 
84415
}
 
84416
 
 
84417
//---------------------------------------------------------------------
 
84418
bool ColladaParserAutoGen15Private::_freeAttributes__abs( void* attributeData )
 
84419
{
 
84420
    abs__AttributeData* typedAttributeData = static_cast<abs__AttributeData*>(attributeData);
 
84421
    if (typedAttributeData->_class.data)
 
84422
    {
 
84423
        mStackMemoryManager.deleteObject();
 
84424
    }
 
84425
 
 
84426
    if (typedAttributeData->unknownAttributes.data)
 
84427
    {
 
84428
        mStackMemoryManager.deleteObject();
 
84429
    }
 
84430
 
 
84431
 
 
84432
    typedAttributeData->~abs__AttributeData();
 
84433
 
 
84434
    return true;
 
84435
}
 
84436
 
 
84437
//---------------------------------------------------------------------
 
84438
const conjugate__AttributeData conjugate__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
84439
 
 
84440
//---------------------------------------------------------------------
 
84441
bool ColladaParserAutoGen15Private::_data__conjugate( const ParserChar* text, size_t textLength )
 
84442
{
 
84443
    return true;
 
84444
}
 
84445
 
 
84446
//---------------------------------------------------------------------
 
84447
bool ColladaParserAutoGen15Private::_preBegin__conjugate( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
84448
{
 
84449
#ifdef GENERATEDSAXPARSER_VALIDATION
 
84450
    if ( mValidate )
 
84451
    {
 
84452
 
 
84453
        bool validationResult = _validateBegin__conjugate( attributes, attributeDataPtr, validationDataPtr );
 
84454
        if ( !validationResult ) return false;
 
84455
 
 
84456
    } // validation
 
84457
#endif
 
84458
 
 
84459
conjugate__AttributeData* attributeData = newData<conjugate__AttributeData>(attributeDataPtr);
 
84460
 
 
84461
const ParserChar** attributeArray = attributes.attributes;
 
84462
if ( attributeArray )
 
84463
{
 
84464
    while (true)
 
84465
    {
 
84466
        const ParserChar * attribute = *attributeArray;
 
84467
        if ( !attribute )
 
84468
            break;
 
84469
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
84470
        attributeArray++;
 
84471
        if ( !attributeArray )
 
84472
            return false;
 
84473
        const ParserChar* attributeValue = *attributeArray;
 
84474
        attributeArray++;
 
84475
 
 
84476
 
 
84477
    switch ( hash )
 
84478
    {
 
84479
    case HASH_ATTRIBUTE_ENCODING:
 
84480
    {
 
84481
 
 
84482
attributeData->encoding = attributeValue;
 
84483
 
 
84484
    break;
 
84485
    }
 
84486
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
84487
    {
 
84488
bool failed;
 
84489
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
84490
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
84491
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
84492
        HASH_ELEMENT_CONJUGATE,
 
84493
        HASH_ATTRIBUTE_DEFINITIONURL,
 
84494
        attributeValue))
 
84495
{
 
84496
    return false;
 
84497
}
 
84498
if ( !failed )
 
84499
    attributeData->present_attributes |= conjugate__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
84500
 
 
84501
    break;
 
84502
    }
 
84503
    case HASH_ATTRIBUTE_CLASS:
 
84504
    {
 
84505
bool failed;
 
84506
#ifdef GENERATEDSAXPARSER_VALIDATION
 
84507
    if ( mValidate )
 
84508
    {
 
84509
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_CONJUGATE, HASH_ATTRIBUTE_CLASS);
 
84510
    }
 
84511
    else
 
84512
    {
 
84513
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
84514
    }
 
84515
#else
 
84516
    {
 
84517
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
84518
    } // validation
 
84519
#endif
 
84520
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
84521
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
84522
        HASH_ELEMENT_CONJUGATE,
 
84523
        HASH_ATTRIBUTE_CLASS,
 
84524
        attributeValue))
 
84525
{
 
84526
    return false;
 
84527
}
 
84528
#ifdef GENERATEDSAXPARSER_VALIDATION
 
84529
    if ( mValidate )
 
84530
    {
 
84531
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
84532
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
84533
    {
 
84534
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
84535
            simpleTypeValidationResult,
 
84536
            HASH_ELEMENT_CONJUGATE,
 
84537
            HASH_ATTRIBUTE_CLASS,
 
84538
            attributeValue) )
 
84539
        {
 
84540
            return false;
 
84541
        }
 
84542
    }
 
84543
    } // validation
 
84544
#endif
 
84545
 
 
84546
if ( !failed )
 
84547
    attributeData->present_attributes |= conjugate__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
84548
 
 
84549
    break;
 
84550
    }
 
84551
    case HASH_ATTRIBUTE_STYLE:
 
84552
    {
 
84553
 
 
84554
attributeData->style = attributeValue;
 
84555
 
 
84556
    break;
 
84557
    }
 
84558
    case HASH_ATTRIBUTE_XREF:
 
84559
    {
 
84560
 
 
84561
attributeData->xref = attributeValue;
 
84562
 
 
84563
    break;
 
84564
    }
 
84565
    case HASH_ATTRIBUTE_ID:
 
84566
    {
 
84567
 
 
84568
attributeData->id = attributeValue;
 
84569
 
 
84570
    break;
 
84571
    }
 
84572
    case HASH_ATTRIBUTE_HREF:
 
84573
    {
 
84574
bool failed;
 
84575
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
84576
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
84577
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
84578
        HASH_ELEMENT_CONJUGATE,
 
84579
        HASH_ATTRIBUTE_HREF,
 
84580
        attributeValue))
 
84581
{
 
84582
    return false;
 
84583
}
 
84584
if ( !failed )
 
84585
    attributeData->present_attributes |= conjugate__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
84586
 
 
84587
    break;
 
84588
    }
 
84589
    default:
 
84590
    {
 
84591
        if ( !attributeData->unknownAttributes.data )
 
84592
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
84593
        else
 
84594
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
84595
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
84596
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
84597
        attributeData->unknownAttributes.size += 2;
 
84598
 
 
84599
    }
 
84600
    }
 
84601
    }
 
84602
}
 
84603
if ((attributeData->present_attributes & conjugate__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
84604
{
 
84605
    attributeData->definitionURL = COLLADABU::URI("");
 
84606
}
 
84607
if ((attributeData->present_attributes & conjugate__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
84608
{
 
84609
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
84610
}
 
84611
if ((attributeData->present_attributes & conjugate__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
84612
{
 
84613
    attributeData->href = COLLADABU::URI("");
 
84614
}
 
84615
 
 
84616
 
 
84617
    return true;
 
84618
}
 
84619
 
 
84620
//---------------------------------------------------------------------
 
84621
bool ColladaParserAutoGen15Private::_preEnd__conjugate()
 
84622
{
 
84623
#ifdef GENERATEDSAXPARSER_VALIDATION
 
84624
    if ( mValidate )
 
84625
    {
 
84626
 
 
84627
        bool validationResult = _validateEnd__conjugate();
 
84628
        if ( !validationResult ) return false;
 
84629
 
 
84630
    } // validation
 
84631
#endif
 
84632
 
 
84633
    return true;
 
84634
}
 
84635
 
 
84636
//---------------------------------------------------------------------
 
84637
bool ColladaParserAutoGen15Private::_freeAttributes__conjugate( void* attributeData )
 
84638
{
 
84639
    conjugate__AttributeData* typedAttributeData = static_cast<conjugate__AttributeData*>(attributeData);
 
84640
    if (typedAttributeData->_class.data)
 
84641
    {
 
84642
        mStackMemoryManager.deleteObject();
 
84643
    }
 
84644
 
 
84645
    if (typedAttributeData->unknownAttributes.data)
 
84646
    {
 
84647
        mStackMemoryManager.deleteObject();
 
84648
    }
 
84649
 
 
84650
 
 
84651
    typedAttributeData->~conjugate__AttributeData();
 
84652
 
 
84653
    return true;
 
84654
}
 
84655
 
 
84656
//---------------------------------------------------------------------
 
84657
const factorial__AttributeData factorial__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
84658
 
 
84659
//---------------------------------------------------------------------
 
84660
bool ColladaParserAutoGen15Private::_data__factorial( const ParserChar* text, size_t textLength )
 
84661
{
 
84662
    return true;
 
84663
}
 
84664
 
 
84665
//---------------------------------------------------------------------
 
84666
bool ColladaParserAutoGen15Private::_preBegin__factorial( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
84667
{
 
84668
#ifdef GENERATEDSAXPARSER_VALIDATION
 
84669
    if ( mValidate )
 
84670
    {
 
84671
 
 
84672
        bool validationResult = _validateBegin__factorial( attributes, attributeDataPtr, validationDataPtr );
 
84673
        if ( !validationResult ) return false;
 
84674
 
 
84675
    } // validation
 
84676
#endif
 
84677
 
 
84678
factorial__AttributeData* attributeData = newData<factorial__AttributeData>(attributeDataPtr);
 
84679
 
 
84680
const ParserChar** attributeArray = attributes.attributes;
 
84681
if ( attributeArray )
 
84682
{
 
84683
    while (true)
 
84684
    {
 
84685
        const ParserChar * attribute = *attributeArray;
 
84686
        if ( !attribute )
 
84687
            break;
 
84688
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
84689
        attributeArray++;
 
84690
        if ( !attributeArray )
 
84691
            return false;
 
84692
        const ParserChar* attributeValue = *attributeArray;
 
84693
        attributeArray++;
 
84694
 
 
84695
 
 
84696
    switch ( hash )
 
84697
    {
 
84698
    case HASH_ATTRIBUTE_ENCODING:
 
84699
    {
 
84700
 
 
84701
attributeData->encoding = attributeValue;
 
84702
 
 
84703
    break;
 
84704
    }
 
84705
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
84706
    {
 
84707
bool failed;
 
84708
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
84709
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
84710
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
84711
        HASH_ELEMENT_FACTORIAL,
 
84712
        HASH_ATTRIBUTE_DEFINITIONURL,
 
84713
        attributeValue))
 
84714
{
 
84715
    return false;
 
84716
}
 
84717
if ( !failed )
 
84718
    attributeData->present_attributes |= factorial__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
84719
 
 
84720
    break;
 
84721
    }
 
84722
    case HASH_ATTRIBUTE_CLASS:
 
84723
    {
 
84724
bool failed;
 
84725
#ifdef GENERATEDSAXPARSER_VALIDATION
 
84726
    if ( mValidate )
 
84727
    {
 
84728
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_FACTORIAL, HASH_ATTRIBUTE_CLASS);
 
84729
    }
 
84730
    else
 
84731
    {
 
84732
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
84733
    }
 
84734
#else
 
84735
    {
 
84736
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
84737
    } // validation
 
84738
#endif
 
84739
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
84740
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
84741
        HASH_ELEMENT_FACTORIAL,
 
84742
        HASH_ATTRIBUTE_CLASS,
 
84743
        attributeValue))
 
84744
{
 
84745
    return false;
 
84746
}
 
84747
#ifdef GENERATEDSAXPARSER_VALIDATION
 
84748
    if ( mValidate )
 
84749
    {
 
84750
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
84751
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
84752
    {
 
84753
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
84754
            simpleTypeValidationResult,
 
84755
            HASH_ELEMENT_FACTORIAL,
 
84756
            HASH_ATTRIBUTE_CLASS,
 
84757
            attributeValue) )
 
84758
        {
 
84759
            return false;
 
84760
        }
 
84761
    }
 
84762
    } // validation
 
84763
#endif
 
84764
 
 
84765
if ( !failed )
 
84766
    attributeData->present_attributes |= factorial__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
84767
 
 
84768
    break;
 
84769
    }
 
84770
    case HASH_ATTRIBUTE_STYLE:
 
84771
    {
 
84772
 
 
84773
attributeData->style = attributeValue;
 
84774
 
 
84775
    break;
 
84776
    }
 
84777
    case HASH_ATTRIBUTE_XREF:
 
84778
    {
 
84779
 
 
84780
attributeData->xref = attributeValue;
 
84781
 
 
84782
    break;
 
84783
    }
 
84784
    case HASH_ATTRIBUTE_ID:
 
84785
    {
 
84786
 
 
84787
attributeData->id = attributeValue;
 
84788
 
 
84789
    break;
 
84790
    }
 
84791
    case HASH_ATTRIBUTE_HREF:
 
84792
    {
 
84793
bool failed;
 
84794
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
84795
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
84796
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
84797
        HASH_ELEMENT_FACTORIAL,
 
84798
        HASH_ATTRIBUTE_HREF,
 
84799
        attributeValue))
 
84800
{
 
84801
    return false;
 
84802
}
 
84803
if ( !failed )
 
84804
    attributeData->present_attributes |= factorial__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
84805
 
 
84806
    break;
 
84807
    }
 
84808
    default:
 
84809
    {
 
84810
        if ( !attributeData->unknownAttributes.data )
 
84811
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
84812
        else
 
84813
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
84814
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
84815
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
84816
        attributeData->unknownAttributes.size += 2;
 
84817
 
 
84818
    }
 
84819
    }
 
84820
    }
 
84821
}
 
84822
if ((attributeData->present_attributes & factorial__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
84823
{
 
84824
    attributeData->definitionURL = COLLADABU::URI("");
 
84825
}
 
84826
if ((attributeData->present_attributes & factorial__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
84827
{
 
84828
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
84829
}
 
84830
if ((attributeData->present_attributes & factorial__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
84831
{
 
84832
    attributeData->href = COLLADABU::URI("");
 
84833
}
 
84834
 
 
84835
 
 
84836
    return true;
 
84837
}
 
84838
 
 
84839
//---------------------------------------------------------------------
 
84840
bool ColladaParserAutoGen15Private::_preEnd__factorial()
 
84841
{
 
84842
#ifdef GENERATEDSAXPARSER_VALIDATION
 
84843
    if ( mValidate )
 
84844
    {
 
84845
 
 
84846
        bool validationResult = _validateEnd__factorial();
 
84847
        if ( !validationResult ) return false;
 
84848
 
 
84849
    } // validation
 
84850
#endif
 
84851
 
 
84852
    return true;
 
84853
}
 
84854
 
 
84855
//---------------------------------------------------------------------
 
84856
bool ColladaParserAutoGen15Private::_freeAttributes__factorial( void* attributeData )
 
84857
{
 
84858
    factorial__AttributeData* typedAttributeData = static_cast<factorial__AttributeData*>(attributeData);
 
84859
    if (typedAttributeData->_class.data)
 
84860
    {
 
84861
        mStackMemoryManager.deleteObject();
 
84862
    }
 
84863
 
 
84864
    if (typedAttributeData->unknownAttributes.data)
 
84865
    {
 
84866
        mStackMemoryManager.deleteObject();
 
84867
    }
 
84868
 
 
84869
 
 
84870
    typedAttributeData->~factorial__AttributeData();
 
84871
 
 
84872
    return true;
 
84873
}
 
84874
 
 
84875
//---------------------------------------------------------------------
 
84876
const arg__AttributeData arg__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
84877
 
 
84878
//---------------------------------------------------------------------
 
84879
bool ColladaParserAutoGen15Private::_data__arg( const ParserChar* text, size_t textLength )
 
84880
{
 
84881
    return true;
 
84882
}
 
84883
 
 
84884
//---------------------------------------------------------------------
 
84885
bool ColladaParserAutoGen15Private::_preBegin__arg( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
84886
{
 
84887
#ifdef GENERATEDSAXPARSER_VALIDATION
 
84888
    if ( mValidate )
 
84889
    {
 
84890
 
 
84891
        bool validationResult = _validateBegin__arg( attributes, attributeDataPtr, validationDataPtr );
 
84892
        if ( !validationResult ) return false;
 
84893
 
 
84894
    } // validation
 
84895
#endif
 
84896
 
 
84897
arg__AttributeData* attributeData = newData<arg__AttributeData>(attributeDataPtr);
 
84898
 
 
84899
const ParserChar** attributeArray = attributes.attributes;
 
84900
if ( attributeArray )
 
84901
{
 
84902
    while (true)
 
84903
    {
 
84904
        const ParserChar * attribute = *attributeArray;
 
84905
        if ( !attribute )
 
84906
            break;
 
84907
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
84908
        attributeArray++;
 
84909
        if ( !attributeArray )
 
84910
            return false;
 
84911
        const ParserChar* attributeValue = *attributeArray;
 
84912
        attributeArray++;
 
84913
 
 
84914
 
 
84915
    switch ( hash )
 
84916
    {
 
84917
    case HASH_ATTRIBUTE_ENCODING:
 
84918
    {
 
84919
 
 
84920
attributeData->encoding = attributeValue;
 
84921
 
 
84922
    break;
 
84923
    }
 
84924
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
84925
    {
 
84926
bool failed;
 
84927
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
84928
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
84929
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
84930
        HASH_ELEMENT_ARG,
 
84931
        HASH_ATTRIBUTE_DEFINITIONURL,
 
84932
        attributeValue))
 
84933
{
 
84934
    return false;
 
84935
}
 
84936
if ( !failed )
 
84937
    attributeData->present_attributes |= arg__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
84938
 
 
84939
    break;
 
84940
    }
 
84941
    case HASH_ATTRIBUTE_CLASS:
 
84942
    {
 
84943
bool failed;
 
84944
#ifdef GENERATEDSAXPARSER_VALIDATION
 
84945
    if ( mValidate )
 
84946
    {
 
84947
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_ARG, HASH_ATTRIBUTE_CLASS);
 
84948
    }
 
84949
    else
 
84950
    {
 
84951
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
84952
    }
 
84953
#else
 
84954
    {
 
84955
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
84956
    } // validation
 
84957
#endif
 
84958
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
84959
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
84960
        HASH_ELEMENT_ARG,
 
84961
        HASH_ATTRIBUTE_CLASS,
 
84962
        attributeValue))
 
84963
{
 
84964
    return false;
 
84965
}
 
84966
#ifdef GENERATEDSAXPARSER_VALIDATION
 
84967
    if ( mValidate )
 
84968
    {
 
84969
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
84970
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
84971
    {
 
84972
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
84973
            simpleTypeValidationResult,
 
84974
            HASH_ELEMENT_ARG,
 
84975
            HASH_ATTRIBUTE_CLASS,
 
84976
            attributeValue) )
 
84977
        {
 
84978
            return false;
 
84979
        }
 
84980
    }
 
84981
    } // validation
 
84982
#endif
 
84983
 
 
84984
if ( !failed )
 
84985
    attributeData->present_attributes |= arg__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
84986
 
 
84987
    break;
 
84988
    }
 
84989
    case HASH_ATTRIBUTE_STYLE:
 
84990
    {
 
84991
 
 
84992
attributeData->style = attributeValue;
 
84993
 
 
84994
    break;
 
84995
    }
 
84996
    case HASH_ATTRIBUTE_XREF:
 
84997
    {
 
84998
 
 
84999
attributeData->xref = attributeValue;
 
85000
 
 
85001
    break;
 
85002
    }
 
85003
    case HASH_ATTRIBUTE_ID:
 
85004
    {
 
85005
 
 
85006
attributeData->id = attributeValue;
 
85007
 
 
85008
    break;
 
85009
    }
 
85010
    case HASH_ATTRIBUTE_HREF:
 
85011
    {
 
85012
bool failed;
 
85013
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
85014
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
85015
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
85016
        HASH_ELEMENT_ARG,
 
85017
        HASH_ATTRIBUTE_HREF,
 
85018
        attributeValue))
 
85019
{
 
85020
    return false;
 
85021
}
 
85022
if ( !failed )
 
85023
    attributeData->present_attributes |= arg__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
85024
 
 
85025
    break;
 
85026
    }
 
85027
    default:
 
85028
    {
 
85029
        if ( !attributeData->unknownAttributes.data )
 
85030
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
85031
        else
 
85032
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
85033
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
85034
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
85035
        attributeData->unknownAttributes.size += 2;
 
85036
 
 
85037
    }
 
85038
    }
 
85039
    }
 
85040
}
 
85041
if ((attributeData->present_attributes & arg__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
85042
{
 
85043
    attributeData->definitionURL = COLLADABU::URI("");
 
85044
}
 
85045
if ((attributeData->present_attributes & arg__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
85046
{
 
85047
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
85048
}
 
85049
if ((attributeData->present_attributes & arg__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
85050
{
 
85051
    attributeData->href = COLLADABU::URI("");
 
85052
}
 
85053
 
 
85054
 
 
85055
    return true;
 
85056
}
 
85057
 
 
85058
//---------------------------------------------------------------------
 
85059
bool ColladaParserAutoGen15Private::_preEnd__arg()
 
85060
{
 
85061
#ifdef GENERATEDSAXPARSER_VALIDATION
 
85062
    if ( mValidate )
 
85063
    {
 
85064
 
 
85065
        bool validationResult = _validateEnd__arg();
 
85066
        if ( !validationResult ) return false;
 
85067
 
 
85068
    } // validation
 
85069
#endif
 
85070
 
 
85071
    return true;
 
85072
}
 
85073
 
 
85074
//---------------------------------------------------------------------
 
85075
bool ColladaParserAutoGen15Private::_freeAttributes__arg( void* attributeData )
 
85076
{
 
85077
    arg__AttributeData* typedAttributeData = static_cast<arg__AttributeData*>(attributeData);
 
85078
    if (typedAttributeData->_class.data)
 
85079
    {
 
85080
        mStackMemoryManager.deleteObject();
 
85081
    }
 
85082
 
 
85083
    if (typedAttributeData->unknownAttributes.data)
 
85084
    {
 
85085
        mStackMemoryManager.deleteObject();
 
85086
    }
 
85087
 
 
85088
 
 
85089
    typedAttributeData->~arg__AttributeData();
 
85090
 
 
85091
    return true;
 
85092
}
 
85093
 
 
85094
//---------------------------------------------------------------------
 
85095
const real__AttributeData real__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
85096
 
 
85097
//---------------------------------------------------------------------
 
85098
bool ColladaParserAutoGen15Private::_data__real( const ParserChar* text, size_t textLength )
 
85099
{
 
85100
    return true;
 
85101
}
 
85102
 
 
85103
//---------------------------------------------------------------------
 
85104
bool ColladaParserAutoGen15Private::_preBegin__real( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
85105
{
 
85106
#ifdef GENERATEDSAXPARSER_VALIDATION
 
85107
    if ( mValidate )
 
85108
    {
 
85109
 
 
85110
        bool validationResult = _validateBegin__real( attributes, attributeDataPtr, validationDataPtr );
 
85111
        if ( !validationResult ) return false;
 
85112
 
 
85113
    } // validation
 
85114
#endif
 
85115
 
 
85116
real__AttributeData* attributeData = newData<real__AttributeData>(attributeDataPtr);
 
85117
 
 
85118
const ParserChar** attributeArray = attributes.attributes;
 
85119
if ( attributeArray )
 
85120
{
 
85121
    while (true)
 
85122
    {
 
85123
        const ParserChar * attribute = *attributeArray;
 
85124
        if ( !attribute )
 
85125
            break;
 
85126
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
85127
        attributeArray++;
 
85128
        if ( !attributeArray )
 
85129
            return false;
 
85130
        const ParserChar* attributeValue = *attributeArray;
 
85131
        attributeArray++;
 
85132
 
 
85133
 
 
85134
    switch ( hash )
 
85135
    {
 
85136
    case HASH_ATTRIBUTE_ENCODING:
 
85137
    {
 
85138
 
 
85139
attributeData->encoding = attributeValue;
 
85140
 
 
85141
    break;
 
85142
    }
 
85143
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
85144
    {
 
85145
bool failed;
 
85146
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
85147
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
85148
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
85149
        HASH_ELEMENT_REAL,
 
85150
        HASH_ATTRIBUTE_DEFINITIONURL,
 
85151
        attributeValue))
 
85152
{
 
85153
    return false;
 
85154
}
 
85155
if ( !failed )
 
85156
    attributeData->present_attributes |= real__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
85157
 
 
85158
    break;
 
85159
    }
 
85160
    case HASH_ATTRIBUTE_CLASS:
 
85161
    {
 
85162
bool failed;
 
85163
#ifdef GENERATEDSAXPARSER_VALIDATION
 
85164
    if ( mValidate )
 
85165
    {
 
85166
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_REAL, HASH_ATTRIBUTE_CLASS);
 
85167
    }
 
85168
    else
 
85169
    {
 
85170
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
85171
    }
 
85172
#else
 
85173
    {
 
85174
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
85175
    } // validation
 
85176
#endif
 
85177
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
85178
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
85179
        HASH_ELEMENT_REAL,
 
85180
        HASH_ATTRIBUTE_CLASS,
 
85181
        attributeValue))
 
85182
{
 
85183
    return false;
 
85184
}
 
85185
#ifdef GENERATEDSAXPARSER_VALIDATION
 
85186
    if ( mValidate )
 
85187
    {
 
85188
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
85189
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
85190
    {
 
85191
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
85192
            simpleTypeValidationResult,
 
85193
            HASH_ELEMENT_REAL,
 
85194
            HASH_ATTRIBUTE_CLASS,
 
85195
            attributeValue) )
 
85196
        {
 
85197
            return false;
 
85198
        }
 
85199
    }
 
85200
    } // validation
 
85201
#endif
 
85202
 
 
85203
if ( !failed )
 
85204
    attributeData->present_attributes |= real__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
85205
 
 
85206
    break;
 
85207
    }
 
85208
    case HASH_ATTRIBUTE_STYLE:
 
85209
    {
 
85210
 
 
85211
attributeData->style = attributeValue;
 
85212
 
 
85213
    break;
 
85214
    }
 
85215
    case HASH_ATTRIBUTE_XREF:
 
85216
    {
 
85217
 
 
85218
attributeData->xref = attributeValue;
 
85219
 
 
85220
    break;
 
85221
    }
 
85222
    case HASH_ATTRIBUTE_ID:
 
85223
    {
 
85224
 
 
85225
attributeData->id = attributeValue;
 
85226
 
 
85227
    break;
 
85228
    }
 
85229
    case HASH_ATTRIBUTE_HREF:
 
85230
    {
 
85231
bool failed;
 
85232
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
85233
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
85234
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
85235
        HASH_ELEMENT_REAL,
 
85236
        HASH_ATTRIBUTE_HREF,
 
85237
        attributeValue))
 
85238
{
 
85239
    return false;
 
85240
}
 
85241
if ( !failed )
 
85242
    attributeData->present_attributes |= real__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
85243
 
 
85244
    break;
 
85245
    }
 
85246
    default:
 
85247
    {
 
85248
        if ( !attributeData->unknownAttributes.data )
 
85249
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
85250
        else
 
85251
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
85252
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
85253
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
85254
        attributeData->unknownAttributes.size += 2;
 
85255
 
 
85256
    }
 
85257
    }
 
85258
    }
 
85259
}
 
85260
if ((attributeData->present_attributes & real__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
85261
{
 
85262
    attributeData->definitionURL = COLLADABU::URI("");
 
85263
}
 
85264
if ((attributeData->present_attributes & real__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
85265
{
 
85266
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
85267
}
 
85268
if ((attributeData->present_attributes & real__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
85269
{
 
85270
    attributeData->href = COLLADABU::URI("");
 
85271
}
 
85272
 
 
85273
 
 
85274
    return true;
 
85275
}
 
85276
 
 
85277
//---------------------------------------------------------------------
 
85278
bool ColladaParserAutoGen15Private::_preEnd__real()
 
85279
{
 
85280
#ifdef GENERATEDSAXPARSER_VALIDATION
 
85281
    if ( mValidate )
 
85282
    {
 
85283
 
 
85284
        bool validationResult = _validateEnd__real();
 
85285
        if ( !validationResult ) return false;
 
85286
 
 
85287
    } // validation
 
85288
#endif
 
85289
 
 
85290
    return true;
 
85291
}
 
85292
 
 
85293
//---------------------------------------------------------------------
 
85294
bool ColladaParserAutoGen15Private::_freeAttributes__real( void* attributeData )
 
85295
{
 
85296
    real__AttributeData* typedAttributeData = static_cast<real__AttributeData*>(attributeData);
 
85297
    if (typedAttributeData->_class.data)
 
85298
    {
 
85299
        mStackMemoryManager.deleteObject();
 
85300
    }
 
85301
 
 
85302
    if (typedAttributeData->unknownAttributes.data)
 
85303
    {
 
85304
        mStackMemoryManager.deleteObject();
 
85305
    }
 
85306
 
 
85307
 
 
85308
    typedAttributeData->~real__AttributeData();
 
85309
 
 
85310
    return true;
 
85311
}
 
85312
 
 
85313
//---------------------------------------------------------------------
 
85314
const imaginary__AttributeData imaginary__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
85315
 
 
85316
//---------------------------------------------------------------------
 
85317
bool ColladaParserAutoGen15Private::_data__imaginary( const ParserChar* text, size_t textLength )
 
85318
{
 
85319
    return true;
 
85320
}
 
85321
 
 
85322
//---------------------------------------------------------------------
 
85323
bool ColladaParserAutoGen15Private::_preBegin__imaginary( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
85324
{
 
85325
#ifdef GENERATEDSAXPARSER_VALIDATION
 
85326
    if ( mValidate )
 
85327
    {
 
85328
 
 
85329
        bool validationResult = _validateBegin__imaginary( attributes, attributeDataPtr, validationDataPtr );
 
85330
        if ( !validationResult ) return false;
 
85331
 
 
85332
    } // validation
 
85333
#endif
 
85334
 
 
85335
imaginary__AttributeData* attributeData = newData<imaginary__AttributeData>(attributeDataPtr);
 
85336
 
 
85337
const ParserChar** attributeArray = attributes.attributes;
 
85338
if ( attributeArray )
 
85339
{
 
85340
    while (true)
 
85341
    {
 
85342
        const ParserChar * attribute = *attributeArray;
 
85343
        if ( !attribute )
 
85344
            break;
 
85345
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
85346
        attributeArray++;
 
85347
        if ( !attributeArray )
 
85348
            return false;
 
85349
        const ParserChar* attributeValue = *attributeArray;
 
85350
        attributeArray++;
 
85351
 
 
85352
 
 
85353
    switch ( hash )
 
85354
    {
 
85355
    case HASH_ATTRIBUTE_ENCODING:
 
85356
    {
 
85357
 
 
85358
attributeData->encoding = attributeValue;
 
85359
 
 
85360
    break;
 
85361
    }
 
85362
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
85363
    {
 
85364
bool failed;
 
85365
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
85366
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
85367
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
85368
        HASH_ELEMENT_IMAGINARY,
 
85369
        HASH_ATTRIBUTE_DEFINITIONURL,
 
85370
        attributeValue))
 
85371
{
 
85372
    return false;
 
85373
}
 
85374
if ( !failed )
 
85375
    attributeData->present_attributes |= imaginary__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
85376
 
 
85377
    break;
 
85378
    }
 
85379
    case HASH_ATTRIBUTE_CLASS:
 
85380
    {
 
85381
bool failed;
 
85382
#ifdef GENERATEDSAXPARSER_VALIDATION
 
85383
    if ( mValidate )
 
85384
    {
 
85385
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_IMAGINARY, HASH_ATTRIBUTE_CLASS);
 
85386
    }
 
85387
    else
 
85388
    {
 
85389
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
85390
    }
 
85391
#else
 
85392
    {
 
85393
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
85394
    } // validation
 
85395
#endif
 
85396
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
85397
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
85398
        HASH_ELEMENT_IMAGINARY,
 
85399
        HASH_ATTRIBUTE_CLASS,
 
85400
        attributeValue))
 
85401
{
 
85402
    return false;
 
85403
}
 
85404
#ifdef GENERATEDSAXPARSER_VALIDATION
 
85405
    if ( mValidate )
 
85406
    {
 
85407
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
85408
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
85409
    {
 
85410
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
85411
            simpleTypeValidationResult,
 
85412
            HASH_ELEMENT_IMAGINARY,
 
85413
            HASH_ATTRIBUTE_CLASS,
 
85414
            attributeValue) )
 
85415
        {
 
85416
            return false;
 
85417
        }
 
85418
    }
 
85419
    } // validation
 
85420
#endif
 
85421
 
 
85422
if ( !failed )
 
85423
    attributeData->present_attributes |= imaginary__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
85424
 
 
85425
    break;
 
85426
    }
 
85427
    case HASH_ATTRIBUTE_STYLE:
 
85428
    {
 
85429
 
 
85430
attributeData->style = attributeValue;
 
85431
 
 
85432
    break;
 
85433
    }
 
85434
    case HASH_ATTRIBUTE_XREF:
 
85435
    {
 
85436
 
 
85437
attributeData->xref = attributeValue;
 
85438
 
 
85439
    break;
 
85440
    }
 
85441
    case HASH_ATTRIBUTE_ID:
 
85442
    {
 
85443
 
 
85444
attributeData->id = attributeValue;
 
85445
 
 
85446
    break;
 
85447
    }
 
85448
    case HASH_ATTRIBUTE_HREF:
 
85449
    {
 
85450
bool failed;
 
85451
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
85452
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
85453
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
85454
        HASH_ELEMENT_IMAGINARY,
 
85455
        HASH_ATTRIBUTE_HREF,
 
85456
        attributeValue))
 
85457
{
 
85458
    return false;
 
85459
}
 
85460
if ( !failed )
 
85461
    attributeData->present_attributes |= imaginary__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
85462
 
 
85463
    break;
 
85464
    }
 
85465
    default:
 
85466
    {
 
85467
        if ( !attributeData->unknownAttributes.data )
 
85468
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
85469
        else
 
85470
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
85471
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
85472
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
85473
        attributeData->unknownAttributes.size += 2;
 
85474
 
 
85475
    }
 
85476
    }
 
85477
    }
 
85478
}
 
85479
if ((attributeData->present_attributes & imaginary__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
85480
{
 
85481
    attributeData->definitionURL = COLLADABU::URI("");
 
85482
}
 
85483
if ((attributeData->present_attributes & imaginary__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
85484
{
 
85485
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
85486
}
 
85487
if ((attributeData->present_attributes & imaginary__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
85488
{
 
85489
    attributeData->href = COLLADABU::URI("");
 
85490
}
 
85491
 
 
85492
 
 
85493
    return true;
 
85494
}
 
85495
 
 
85496
//---------------------------------------------------------------------
 
85497
bool ColladaParserAutoGen15Private::_preEnd__imaginary()
 
85498
{
 
85499
#ifdef GENERATEDSAXPARSER_VALIDATION
 
85500
    if ( mValidate )
 
85501
    {
 
85502
 
 
85503
        bool validationResult = _validateEnd__imaginary();
 
85504
        if ( !validationResult ) return false;
 
85505
 
 
85506
    } // validation
 
85507
#endif
 
85508
 
 
85509
    return true;
 
85510
}
 
85511
 
 
85512
//---------------------------------------------------------------------
 
85513
bool ColladaParserAutoGen15Private::_freeAttributes__imaginary( void* attributeData )
 
85514
{
 
85515
    imaginary__AttributeData* typedAttributeData = static_cast<imaginary__AttributeData*>(attributeData);
 
85516
    if (typedAttributeData->_class.data)
 
85517
    {
 
85518
        mStackMemoryManager.deleteObject();
 
85519
    }
 
85520
 
 
85521
    if (typedAttributeData->unknownAttributes.data)
 
85522
    {
 
85523
        mStackMemoryManager.deleteObject();
 
85524
    }
 
85525
 
 
85526
 
 
85527
    typedAttributeData->~imaginary__AttributeData();
 
85528
 
 
85529
    return true;
 
85530
}
 
85531
 
 
85532
//---------------------------------------------------------------------
 
85533
const floor__AttributeData floor__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
85534
 
 
85535
//---------------------------------------------------------------------
 
85536
bool ColladaParserAutoGen15Private::_data__floor( const ParserChar* text, size_t textLength )
 
85537
{
 
85538
    return true;
 
85539
}
 
85540
 
 
85541
//---------------------------------------------------------------------
 
85542
bool ColladaParserAutoGen15Private::_preBegin__floor( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
85543
{
 
85544
#ifdef GENERATEDSAXPARSER_VALIDATION
 
85545
    if ( mValidate )
 
85546
    {
 
85547
 
 
85548
        bool validationResult = _validateBegin__floor( attributes, attributeDataPtr, validationDataPtr );
 
85549
        if ( !validationResult ) return false;
 
85550
 
 
85551
    } // validation
 
85552
#endif
 
85553
 
 
85554
floor__AttributeData* attributeData = newData<floor__AttributeData>(attributeDataPtr);
 
85555
 
 
85556
const ParserChar** attributeArray = attributes.attributes;
 
85557
if ( attributeArray )
 
85558
{
 
85559
    while (true)
 
85560
    {
 
85561
        const ParserChar * attribute = *attributeArray;
 
85562
        if ( !attribute )
 
85563
            break;
 
85564
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
85565
        attributeArray++;
 
85566
        if ( !attributeArray )
 
85567
            return false;
 
85568
        const ParserChar* attributeValue = *attributeArray;
 
85569
        attributeArray++;
 
85570
 
 
85571
 
 
85572
    switch ( hash )
 
85573
    {
 
85574
    case HASH_ATTRIBUTE_ENCODING:
 
85575
    {
 
85576
 
 
85577
attributeData->encoding = attributeValue;
 
85578
 
 
85579
    break;
 
85580
    }
 
85581
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
85582
    {
 
85583
bool failed;
 
85584
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
85585
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
85586
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
85587
        HASH_ELEMENT_FLOOR,
 
85588
        HASH_ATTRIBUTE_DEFINITIONURL,
 
85589
        attributeValue))
 
85590
{
 
85591
    return false;
 
85592
}
 
85593
if ( !failed )
 
85594
    attributeData->present_attributes |= floor__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
85595
 
 
85596
    break;
 
85597
    }
 
85598
    case HASH_ATTRIBUTE_CLASS:
 
85599
    {
 
85600
bool failed;
 
85601
#ifdef GENERATEDSAXPARSER_VALIDATION
 
85602
    if ( mValidate )
 
85603
    {
 
85604
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_FLOOR, HASH_ATTRIBUTE_CLASS);
 
85605
    }
 
85606
    else
 
85607
    {
 
85608
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
85609
    }
 
85610
#else
 
85611
    {
 
85612
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
85613
    } // validation
 
85614
#endif
 
85615
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
85616
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
85617
        HASH_ELEMENT_FLOOR,
 
85618
        HASH_ATTRIBUTE_CLASS,
 
85619
        attributeValue))
 
85620
{
 
85621
    return false;
 
85622
}
 
85623
#ifdef GENERATEDSAXPARSER_VALIDATION
 
85624
    if ( mValidate )
 
85625
    {
 
85626
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
85627
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
85628
    {
 
85629
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
85630
            simpleTypeValidationResult,
 
85631
            HASH_ELEMENT_FLOOR,
 
85632
            HASH_ATTRIBUTE_CLASS,
 
85633
            attributeValue) )
 
85634
        {
 
85635
            return false;
 
85636
        }
 
85637
    }
 
85638
    } // validation
 
85639
#endif
 
85640
 
 
85641
if ( !failed )
 
85642
    attributeData->present_attributes |= floor__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
85643
 
 
85644
    break;
 
85645
    }
 
85646
    case HASH_ATTRIBUTE_STYLE:
 
85647
    {
 
85648
 
 
85649
attributeData->style = attributeValue;
 
85650
 
 
85651
    break;
 
85652
    }
 
85653
    case HASH_ATTRIBUTE_XREF:
 
85654
    {
 
85655
 
 
85656
attributeData->xref = attributeValue;
 
85657
 
 
85658
    break;
 
85659
    }
 
85660
    case HASH_ATTRIBUTE_ID:
 
85661
    {
 
85662
 
 
85663
attributeData->id = attributeValue;
 
85664
 
 
85665
    break;
 
85666
    }
 
85667
    case HASH_ATTRIBUTE_HREF:
 
85668
    {
 
85669
bool failed;
 
85670
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
85671
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
85672
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
85673
        HASH_ELEMENT_FLOOR,
 
85674
        HASH_ATTRIBUTE_HREF,
 
85675
        attributeValue))
 
85676
{
 
85677
    return false;
 
85678
}
 
85679
if ( !failed )
 
85680
    attributeData->present_attributes |= floor__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
85681
 
 
85682
    break;
 
85683
    }
 
85684
    default:
 
85685
    {
 
85686
        if ( !attributeData->unknownAttributes.data )
 
85687
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
85688
        else
 
85689
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
85690
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
85691
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
85692
        attributeData->unknownAttributes.size += 2;
 
85693
 
 
85694
    }
 
85695
    }
 
85696
    }
 
85697
}
 
85698
if ((attributeData->present_attributes & floor__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
85699
{
 
85700
    attributeData->definitionURL = COLLADABU::URI("");
 
85701
}
 
85702
if ((attributeData->present_attributes & floor__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
85703
{
 
85704
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
85705
}
 
85706
if ((attributeData->present_attributes & floor__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
85707
{
 
85708
    attributeData->href = COLLADABU::URI("");
 
85709
}
 
85710
 
 
85711
 
 
85712
    return true;
 
85713
}
 
85714
 
 
85715
//---------------------------------------------------------------------
 
85716
bool ColladaParserAutoGen15Private::_preEnd__floor()
 
85717
{
 
85718
#ifdef GENERATEDSAXPARSER_VALIDATION
 
85719
    if ( mValidate )
 
85720
    {
 
85721
 
 
85722
        bool validationResult = _validateEnd__floor();
 
85723
        if ( !validationResult ) return false;
 
85724
 
 
85725
    } // validation
 
85726
#endif
 
85727
 
 
85728
    return true;
 
85729
}
 
85730
 
 
85731
//---------------------------------------------------------------------
 
85732
bool ColladaParserAutoGen15Private::_freeAttributes__floor( void* attributeData )
 
85733
{
 
85734
    floor__AttributeData* typedAttributeData = static_cast<floor__AttributeData*>(attributeData);
 
85735
    if (typedAttributeData->_class.data)
 
85736
    {
 
85737
        mStackMemoryManager.deleteObject();
 
85738
    }
 
85739
 
 
85740
    if (typedAttributeData->unknownAttributes.data)
 
85741
    {
 
85742
        mStackMemoryManager.deleteObject();
 
85743
    }
 
85744
 
 
85745
 
 
85746
    typedAttributeData->~floor__AttributeData();
 
85747
 
 
85748
    return true;
 
85749
}
 
85750
 
 
85751
//---------------------------------------------------------------------
 
85752
const ceiling__AttributeData ceiling__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
85753
 
 
85754
//---------------------------------------------------------------------
 
85755
bool ColladaParserAutoGen15Private::_data__ceiling( const ParserChar* text, size_t textLength )
 
85756
{
 
85757
    return true;
 
85758
}
 
85759
 
 
85760
//---------------------------------------------------------------------
 
85761
bool ColladaParserAutoGen15Private::_preBegin__ceiling( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
85762
{
 
85763
#ifdef GENERATEDSAXPARSER_VALIDATION
 
85764
    if ( mValidate )
 
85765
    {
 
85766
 
 
85767
        bool validationResult = _validateBegin__ceiling( attributes, attributeDataPtr, validationDataPtr );
 
85768
        if ( !validationResult ) return false;
 
85769
 
 
85770
    } // validation
 
85771
#endif
 
85772
 
 
85773
ceiling__AttributeData* attributeData = newData<ceiling__AttributeData>(attributeDataPtr);
 
85774
 
 
85775
const ParserChar** attributeArray = attributes.attributes;
 
85776
if ( attributeArray )
 
85777
{
 
85778
    while (true)
 
85779
    {
 
85780
        const ParserChar * attribute = *attributeArray;
 
85781
        if ( !attribute )
 
85782
            break;
 
85783
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
85784
        attributeArray++;
 
85785
        if ( !attributeArray )
 
85786
            return false;
 
85787
        const ParserChar* attributeValue = *attributeArray;
 
85788
        attributeArray++;
 
85789
 
 
85790
 
 
85791
    switch ( hash )
 
85792
    {
 
85793
    case HASH_ATTRIBUTE_ENCODING:
 
85794
    {
 
85795
 
 
85796
attributeData->encoding = attributeValue;
 
85797
 
 
85798
    break;
 
85799
    }
 
85800
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
85801
    {
 
85802
bool failed;
 
85803
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
85804
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
85805
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
85806
        HASH_ELEMENT_CEILING,
 
85807
        HASH_ATTRIBUTE_DEFINITIONURL,
 
85808
        attributeValue))
 
85809
{
 
85810
    return false;
 
85811
}
 
85812
if ( !failed )
 
85813
    attributeData->present_attributes |= ceiling__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
85814
 
 
85815
    break;
 
85816
    }
 
85817
    case HASH_ATTRIBUTE_CLASS:
 
85818
    {
 
85819
bool failed;
 
85820
#ifdef GENERATEDSAXPARSER_VALIDATION
 
85821
    if ( mValidate )
 
85822
    {
 
85823
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_CEILING, HASH_ATTRIBUTE_CLASS);
 
85824
    }
 
85825
    else
 
85826
    {
 
85827
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
85828
    }
 
85829
#else
 
85830
    {
 
85831
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
85832
    } // validation
 
85833
#endif
 
85834
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
85835
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
85836
        HASH_ELEMENT_CEILING,
 
85837
        HASH_ATTRIBUTE_CLASS,
 
85838
        attributeValue))
 
85839
{
 
85840
    return false;
 
85841
}
 
85842
#ifdef GENERATEDSAXPARSER_VALIDATION
 
85843
    if ( mValidate )
 
85844
    {
 
85845
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
85846
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
85847
    {
 
85848
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
85849
            simpleTypeValidationResult,
 
85850
            HASH_ELEMENT_CEILING,
 
85851
            HASH_ATTRIBUTE_CLASS,
 
85852
            attributeValue) )
 
85853
        {
 
85854
            return false;
 
85855
        }
 
85856
    }
 
85857
    } // validation
 
85858
#endif
 
85859
 
 
85860
if ( !failed )
 
85861
    attributeData->present_attributes |= ceiling__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
85862
 
 
85863
    break;
 
85864
    }
 
85865
    case HASH_ATTRIBUTE_STYLE:
 
85866
    {
 
85867
 
 
85868
attributeData->style = attributeValue;
 
85869
 
 
85870
    break;
 
85871
    }
 
85872
    case HASH_ATTRIBUTE_XREF:
 
85873
    {
 
85874
 
 
85875
attributeData->xref = attributeValue;
 
85876
 
 
85877
    break;
 
85878
    }
 
85879
    case HASH_ATTRIBUTE_ID:
 
85880
    {
 
85881
 
 
85882
attributeData->id = attributeValue;
 
85883
 
 
85884
    break;
 
85885
    }
 
85886
    case HASH_ATTRIBUTE_HREF:
 
85887
    {
 
85888
bool failed;
 
85889
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
85890
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
85891
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
85892
        HASH_ELEMENT_CEILING,
 
85893
        HASH_ATTRIBUTE_HREF,
 
85894
        attributeValue))
 
85895
{
 
85896
    return false;
 
85897
}
 
85898
if ( !failed )
 
85899
    attributeData->present_attributes |= ceiling__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
85900
 
 
85901
    break;
 
85902
    }
 
85903
    default:
 
85904
    {
 
85905
        if ( !attributeData->unknownAttributes.data )
 
85906
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
85907
        else
 
85908
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
85909
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
85910
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
85911
        attributeData->unknownAttributes.size += 2;
 
85912
 
 
85913
    }
 
85914
    }
 
85915
    }
 
85916
}
 
85917
if ((attributeData->present_attributes & ceiling__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
85918
{
 
85919
    attributeData->definitionURL = COLLADABU::URI("");
 
85920
}
 
85921
if ((attributeData->present_attributes & ceiling__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
85922
{
 
85923
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
85924
}
 
85925
if ((attributeData->present_attributes & ceiling__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
85926
{
 
85927
    attributeData->href = COLLADABU::URI("");
 
85928
}
 
85929
 
 
85930
 
 
85931
    return true;
 
85932
}
 
85933
 
 
85934
//---------------------------------------------------------------------
 
85935
bool ColladaParserAutoGen15Private::_preEnd__ceiling()
 
85936
{
 
85937
#ifdef GENERATEDSAXPARSER_VALIDATION
 
85938
    if ( mValidate )
 
85939
    {
 
85940
 
 
85941
        bool validationResult = _validateEnd__ceiling();
 
85942
        if ( !validationResult ) return false;
 
85943
 
 
85944
    } // validation
 
85945
#endif
 
85946
 
 
85947
    return true;
 
85948
}
 
85949
 
 
85950
//---------------------------------------------------------------------
 
85951
bool ColladaParserAutoGen15Private::_freeAttributes__ceiling( void* attributeData )
 
85952
{
 
85953
    ceiling__AttributeData* typedAttributeData = static_cast<ceiling__AttributeData*>(attributeData);
 
85954
    if (typedAttributeData->_class.data)
 
85955
    {
 
85956
        mStackMemoryManager.deleteObject();
 
85957
    }
 
85958
 
 
85959
    if (typedAttributeData->unknownAttributes.data)
 
85960
    {
 
85961
        mStackMemoryManager.deleteObject();
 
85962
    }
 
85963
 
 
85964
 
 
85965
    typedAttributeData->~ceiling__AttributeData();
 
85966
 
 
85967
    return true;
 
85968
}
 
85969
 
 
85970
//---------------------------------------------------------------------
 
85971
const quotient__AttributeData quotient__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
85972
 
 
85973
//---------------------------------------------------------------------
 
85974
bool ColladaParserAutoGen15Private::_data__quotient( const ParserChar* text, size_t textLength )
 
85975
{
 
85976
    return true;
 
85977
}
 
85978
 
 
85979
//---------------------------------------------------------------------
 
85980
bool ColladaParserAutoGen15Private::_preBegin__quotient( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
85981
{
 
85982
#ifdef GENERATEDSAXPARSER_VALIDATION
 
85983
    if ( mValidate )
 
85984
    {
 
85985
 
 
85986
        bool validationResult = _validateBegin__quotient( attributes, attributeDataPtr, validationDataPtr );
 
85987
        if ( !validationResult ) return false;
 
85988
 
 
85989
    } // validation
 
85990
#endif
 
85991
 
 
85992
quotient__AttributeData* attributeData = newData<quotient__AttributeData>(attributeDataPtr);
 
85993
 
 
85994
const ParserChar** attributeArray = attributes.attributes;
 
85995
if ( attributeArray )
 
85996
{
 
85997
    while (true)
 
85998
    {
 
85999
        const ParserChar * attribute = *attributeArray;
 
86000
        if ( !attribute )
 
86001
            break;
 
86002
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
86003
        attributeArray++;
 
86004
        if ( !attributeArray )
 
86005
            return false;
 
86006
        const ParserChar* attributeValue = *attributeArray;
 
86007
        attributeArray++;
 
86008
 
 
86009
 
 
86010
    switch ( hash )
 
86011
    {
 
86012
    case HASH_ATTRIBUTE_ENCODING:
 
86013
    {
 
86014
 
 
86015
attributeData->encoding = attributeValue;
 
86016
 
 
86017
    break;
 
86018
    }
 
86019
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
86020
    {
 
86021
bool failed;
 
86022
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
86023
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
86024
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
86025
        HASH_ELEMENT_QUOTIENT,
 
86026
        HASH_ATTRIBUTE_DEFINITIONURL,
 
86027
        attributeValue))
 
86028
{
 
86029
    return false;
 
86030
}
 
86031
if ( !failed )
 
86032
    attributeData->present_attributes |= quotient__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
86033
 
 
86034
    break;
 
86035
    }
 
86036
    case HASH_ATTRIBUTE_CLASS:
 
86037
    {
 
86038
bool failed;
 
86039
#ifdef GENERATEDSAXPARSER_VALIDATION
 
86040
    if ( mValidate )
 
86041
    {
 
86042
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_QUOTIENT, HASH_ATTRIBUTE_CLASS);
 
86043
    }
 
86044
    else
 
86045
    {
 
86046
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
86047
    }
 
86048
#else
 
86049
    {
 
86050
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
86051
    } // validation
 
86052
#endif
 
86053
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
86054
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
86055
        HASH_ELEMENT_QUOTIENT,
 
86056
        HASH_ATTRIBUTE_CLASS,
 
86057
        attributeValue))
 
86058
{
 
86059
    return false;
 
86060
}
 
86061
#ifdef GENERATEDSAXPARSER_VALIDATION
 
86062
    if ( mValidate )
 
86063
    {
 
86064
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
86065
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
86066
    {
 
86067
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
86068
            simpleTypeValidationResult,
 
86069
            HASH_ELEMENT_QUOTIENT,
 
86070
            HASH_ATTRIBUTE_CLASS,
 
86071
            attributeValue) )
 
86072
        {
 
86073
            return false;
 
86074
        }
 
86075
    }
 
86076
    } // validation
 
86077
#endif
 
86078
 
 
86079
if ( !failed )
 
86080
    attributeData->present_attributes |= quotient__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
86081
 
 
86082
    break;
 
86083
    }
 
86084
    case HASH_ATTRIBUTE_STYLE:
 
86085
    {
 
86086
 
 
86087
attributeData->style = attributeValue;
 
86088
 
 
86089
    break;
 
86090
    }
 
86091
    case HASH_ATTRIBUTE_XREF:
 
86092
    {
 
86093
 
 
86094
attributeData->xref = attributeValue;
 
86095
 
 
86096
    break;
 
86097
    }
 
86098
    case HASH_ATTRIBUTE_ID:
 
86099
    {
 
86100
 
 
86101
attributeData->id = attributeValue;
 
86102
 
 
86103
    break;
 
86104
    }
 
86105
    case HASH_ATTRIBUTE_HREF:
 
86106
    {
 
86107
bool failed;
 
86108
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
86109
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
86110
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
86111
        HASH_ELEMENT_QUOTIENT,
 
86112
        HASH_ATTRIBUTE_HREF,
 
86113
        attributeValue))
 
86114
{
 
86115
    return false;
 
86116
}
 
86117
if ( !failed )
 
86118
    attributeData->present_attributes |= quotient__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
86119
 
 
86120
    break;
 
86121
    }
 
86122
    default:
 
86123
    {
 
86124
        if ( !attributeData->unknownAttributes.data )
 
86125
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
86126
        else
 
86127
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
86128
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
86129
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
86130
        attributeData->unknownAttributes.size += 2;
 
86131
 
 
86132
    }
 
86133
    }
 
86134
    }
 
86135
}
 
86136
if ((attributeData->present_attributes & quotient__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
86137
{
 
86138
    attributeData->definitionURL = COLLADABU::URI("");
 
86139
}
 
86140
if ((attributeData->present_attributes & quotient__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
86141
{
 
86142
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
86143
}
 
86144
if ((attributeData->present_attributes & quotient__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
86145
{
 
86146
    attributeData->href = COLLADABU::URI("");
 
86147
}
 
86148
 
 
86149
 
 
86150
    return true;
 
86151
}
 
86152
 
 
86153
//---------------------------------------------------------------------
 
86154
bool ColladaParserAutoGen15Private::_preEnd__quotient()
 
86155
{
 
86156
#ifdef GENERATEDSAXPARSER_VALIDATION
 
86157
    if ( mValidate )
 
86158
    {
 
86159
 
 
86160
        bool validationResult = _validateEnd__quotient();
 
86161
        if ( !validationResult ) return false;
 
86162
 
 
86163
    } // validation
 
86164
#endif
 
86165
 
 
86166
    return true;
 
86167
}
 
86168
 
 
86169
//---------------------------------------------------------------------
 
86170
bool ColladaParserAutoGen15Private::_freeAttributes__quotient( void* attributeData )
 
86171
{
 
86172
    quotient__AttributeData* typedAttributeData = static_cast<quotient__AttributeData*>(attributeData);
 
86173
    if (typedAttributeData->_class.data)
 
86174
    {
 
86175
        mStackMemoryManager.deleteObject();
 
86176
    }
 
86177
 
 
86178
    if (typedAttributeData->unknownAttributes.data)
 
86179
    {
 
86180
        mStackMemoryManager.deleteObject();
 
86181
    }
 
86182
 
 
86183
 
 
86184
    typedAttributeData->~quotient__AttributeData();
 
86185
 
 
86186
    return true;
 
86187
}
 
86188
 
 
86189
//---------------------------------------------------------------------
 
86190
const divide__AttributeData divide__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
86191
 
 
86192
//---------------------------------------------------------------------
 
86193
bool ColladaParserAutoGen15Private::_data__divide( const ParserChar* text, size_t textLength )
 
86194
{
 
86195
    return true;
 
86196
}
 
86197
 
 
86198
//---------------------------------------------------------------------
 
86199
bool ColladaParserAutoGen15Private::_preBegin__divide( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
86200
{
 
86201
#ifdef GENERATEDSAXPARSER_VALIDATION
 
86202
    if ( mValidate )
 
86203
    {
 
86204
 
 
86205
        bool validationResult = _validateBegin__divide( attributes, attributeDataPtr, validationDataPtr );
 
86206
        if ( !validationResult ) return false;
 
86207
 
 
86208
    } // validation
 
86209
#endif
 
86210
 
 
86211
divide__AttributeData* attributeData = newData<divide__AttributeData>(attributeDataPtr);
 
86212
 
 
86213
const ParserChar** attributeArray = attributes.attributes;
 
86214
if ( attributeArray )
 
86215
{
 
86216
    while (true)
 
86217
    {
 
86218
        const ParserChar * attribute = *attributeArray;
 
86219
        if ( !attribute )
 
86220
            break;
 
86221
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
86222
        attributeArray++;
 
86223
        if ( !attributeArray )
 
86224
            return false;
 
86225
        const ParserChar* attributeValue = *attributeArray;
 
86226
        attributeArray++;
 
86227
 
 
86228
 
 
86229
    switch ( hash )
 
86230
    {
 
86231
    case HASH_ATTRIBUTE_ENCODING:
 
86232
    {
 
86233
 
 
86234
attributeData->encoding = attributeValue;
 
86235
 
 
86236
    break;
 
86237
    }
 
86238
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
86239
    {
 
86240
bool failed;
 
86241
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
86242
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
86243
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
86244
        HASH_ELEMENT_DIVIDE,
 
86245
        HASH_ATTRIBUTE_DEFINITIONURL,
 
86246
        attributeValue))
 
86247
{
 
86248
    return false;
 
86249
}
 
86250
if ( !failed )
 
86251
    attributeData->present_attributes |= divide__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
86252
 
 
86253
    break;
 
86254
    }
 
86255
    case HASH_ATTRIBUTE_CLASS:
 
86256
    {
 
86257
bool failed;
 
86258
#ifdef GENERATEDSAXPARSER_VALIDATION
 
86259
    if ( mValidate )
 
86260
    {
 
86261
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_DIVIDE, HASH_ATTRIBUTE_CLASS);
 
86262
    }
 
86263
    else
 
86264
    {
 
86265
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
86266
    }
 
86267
#else
 
86268
    {
 
86269
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
86270
    } // validation
 
86271
#endif
 
86272
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
86273
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
86274
        HASH_ELEMENT_DIVIDE,
 
86275
        HASH_ATTRIBUTE_CLASS,
 
86276
        attributeValue))
 
86277
{
 
86278
    return false;
 
86279
}
 
86280
#ifdef GENERATEDSAXPARSER_VALIDATION
 
86281
    if ( mValidate )
 
86282
    {
 
86283
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
86284
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
86285
    {
 
86286
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
86287
            simpleTypeValidationResult,
 
86288
            HASH_ELEMENT_DIVIDE,
 
86289
            HASH_ATTRIBUTE_CLASS,
 
86290
            attributeValue) )
 
86291
        {
 
86292
            return false;
 
86293
        }
 
86294
    }
 
86295
    } // validation
 
86296
#endif
 
86297
 
 
86298
if ( !failed )
 
86299
    attributeData->present_attributes |= divide__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
86300
 
 
86301
    break;
 
86302
    }
 
86303
    case HASH_ATTRIBUTE_STYLE:
 
86304
    {
 
86305
 
 
86306
attributeData->style = attributeValue;
 
86307
 
 
86308
    break;
 
86309
    }
 
86310
    case HASH_ATTRIBUTE_XREF:
 
86311
    {
 
86312
 
 
86313
attributeData->xref = attributeValue;
 
86314
 
 
86315
    break;
 
86316
    }
 
86317
    case HASH_ATTRIBUTE_ID:
 
86318
    {
 
86319
 
 
86320
attributeData->id = attributeValue;
 
86321
 
 
86322
    break;
 
86323
    }
 
86324
    case HASH_ATTRIBUTE_HREF:
 
86325
    {
 
86326
bool failed;
 
86327
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
86328
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
86329
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
86330
        HASH_ELEMENT_DIVIDE,
 
86331
        HASH_ATTRIBUTE_HREF,
 
86332
        attributeValue))
 
86333
{
 
86334
    return false;
 
86335
}
 
86336
if ( !failed )
 
86337
    attributeData->present_attributes |= divide__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
86338
 
 
86339
    break;
 
86340
    }
 
86341
    default:
 
86342
    {
 
86343
        if ( !attributeData->unknownAttributes.data )
 
86344
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
86345
        else
 
86346
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
86347
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
86348
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
86349
        attributeData->unknownAttributes.size += 2;
 
86350
 
 
86351
    }
 
86352
    }
 
86353
    }
 
86354
}
 
86355
if ((attributeData->present_attributes & divide__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
86356
{
 
86357
    attributeData->definitionURL = COLLADABU::URI("");
 
86358
}
 
86359
if ((attributeData->present_attributes & divide__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
86360
{
 
86361
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
86362
}
 
86363
if ((attributeData->present_attributes & divide__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
86364
{
 
86365
    attributeData->href = COLLADABU::URI("");
 
86366
}
 
86367
 
 
86368
 
 
86369
    return true;
 
86370
}
 
86371
 
 
86372
//---------------------------------------------------------------------
 
86373
bool ColladaParserAutoGen15Private::_preEnd__divide()
 
86374
{
 
86375
#ifdef GENERATEDSAXPARSER_VALIDATION
 
86376
    if ( mValidate )
 
86377
    {
 
86378
 
 
86379
        bool validationResult = _validateEnd__divide();
 
86380
        if ( !validationResult ) return false;
 
86381
 
 
86382
    } // validation
 
86383
#endif
 
86384
 
 
86385
    return true;
 
86386
}
 
86387
 
 
86388
//---------------------------------------------------------------------
 
86389
bool ColladaParserAutoGen15Private::_freeAttributes__divide( void* attributeData )
 
86390
{
 
86391
    divide__AttributeData* typedAttributeData = static_cast<divide__AttributeData*>(attributeData);
 
86392
    if (typedAttributeData->_class.data)
 
86393
    {
 
86394
        mStackMemoryManager.deleteObject();
 
86395
    }
 
86396
 
 
86397
    if (typedAttributeData->unknownAttributes.data)
 
86398
    {
 
86399
        mStackMemoryManager.deleteObject();
 
86400
    }
 
86401
 
 
86402
 
 
86403
    typedAttributeData->~divide__AttributeData();
 
86404
 
 
86405
    return true;
 
86406
}
 
86407
 
 
86408
//---------------------------------------------------------------------
 
86409
const rem__AttributeData rem__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
86410
 
 
86411
//---------------------------------------------------------------------
 
86412
bool ColladaParserAutoGen15Private::_data__rem( const ParserChar* text, size_t textLength )
 
86413
{
 
86414
    return true;
 
86415
}
 
86416
 
 
86417
//---------------------------------------------------------------------
 
86418
bool ColladaParserAutoGen15Private::_preBegin__rem( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
86419
{
 
86420
#ifdef GENERATEDSAXPARSER_VALIDATION
 
86421
    if ( mValidate )
 
86422
    {
 
86423
 
 
86424
        bool validationResult = _validateBegin__rem( attributes, attributeDataPtr, validationDataPtr );
 
86425
        if ( !validationResult ) return false;
 
86426
 
 
86427
    } // validation
 
86428
#endif
 
86429
 
 
86430
rem__AttributeData* attributeData = newData<rem__AttributeData>(attributeDataPtr);
 
86431
 
 
86432
const ParserChar** attributeArray = attributes.attributes;
 
86433
if ( attributeArray )
 
86434
{
 
86435
    while (true)
 
86436
    {
 
86437
        const ParserChar * attribute = *attributeArray;
 
86438
        if ( !attribute )
 
86439
            break;
 
86440
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
86441
        attributeArray++;
 
86442
        if ( !attributeArray )
 
86443
            return false;
 
86444
        const ParserChar* attributeValue = *attributeArray;
 
86445
        attributeArray++;
 
86446
 
 
86447
 
 
86448
    switch ( hash )
 
86449
    {
 
86450
    case HASH_ATTRIBUTE_ENCODING:
 
86451
    {
 
86452
 
 
86453
attributeData->encoding = attributeValue;
 
86454
 
 
86455
    break;
 
86456
    }
 
86457
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
86458
    {
 
86459
bool failed;
 
86460
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
86461
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
86462
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
86463
        HASH_ELEMENT_REM,
 
86464
        HASH_ATTRIBUTE_DEFINITIONURL,
 
86465
        attributeValue))
 
86466
{
 
86467
    return false;
 
86468
}
 
86469
if ( !failed )
 
86470
    attributeData->present_attributes |= rem__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
86471
 
 
86472
    break;
 
86473
    }
 
86474
    case HASH_ATTRIBUTE_CLASS:
 
86475
    {
 
86476
bool failed;
 
86477
#ifdef GENERATEDSAXPARSER_VALIDATION
 
86478
    if ( mValidate )
 
86479
    {
 
86480
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_REM, HASH_ATTRIBUTE_CLASS);
 
86481
    }
 
86482
    else
 
86483
    {
 
86484
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
86485
    }
 
86486
#else
 
86487
    {
 
86488
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
86489
    } // validation
 
86490
#endif
 
86491
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
86492
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
86493
        HASH_ELEMENT_REM,
 
86494
        HASH_ATTRIBUTE_CLASS,
 
86495
        attributeValue))
 
86496
{
 
86497
    return false;
 
86498
}
 
86499
#ifdef GENERATEDSAXPARSER_VALIDATION
 
86500
    if ( mValidate )
 
86501
    {
 
86502
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
86503
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
86504
    {
 
86505
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
86506
            simpleTypeValidationResult,
 
86507
            HASH_ELEMENT_REM,
 
86508
            HASH_ATTRIBUTE_CLASS,
 
86509
            attributeValue) )
 
86510
        {
 
86511
            return false;
 
86512
        }
 
86513
    }
 
86514
    } // validation
 
86515
#endif
 
86516
 
 
86517
if ( !failed )
 
86518
    attributeData->present_attributes |= rem__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
86519
 
 
86520
    break;
 
86521
    }
 
86522
    case HASH_ATTRIBUTE_STYLE:
 
86523
    {
 
86524
 
 
86525
attributeData->style = attributeValue;
 
86526
 
 
86527
    break;
 
86528
    }
 
86529
    case HASH_ATTRIBUTE_XREF:
 
86530
    {
 
86531
 
 
86532
attributeData->xref = attributeValue;
 
86533
 
 
86534
    break;
 
86535
    }
 
86536
    case HASH_ATTRIBUTE_ID:
 
86537
    {
 
86538
 
 
86539
attributeData->id = attributeValue;
 
86540
 
 
86541
    break;
 
86542
    }
 
86543
    case HASH_ATTRIBUTE_HREF:
 
86544
    {
 
86545
bool failed;
 
86546
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
86547
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
86548
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
86549
        HASH_ELEMENT_REM,
 
86550
        HASH_ATTRIBUTE_HREF,
 
86551
        attributeValue))
 
86552
{
 
86553
    return false;
 
86554
}
 
86555
if ( !failed )
 
86556
    attributeData->present_attributes |= rem__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
86557
 
 
86558
    break;
 
86559
    }
 
86560
    default:
 
86561
    {
 
86562
        if ( !attributeData->unknownAttributes.data )
 
86563
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
86564
        else
 
86565
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
86566
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
86567
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
86568
        attributeData->unknownAttributes.size += 2;
 
86569
 
 
86570
    }
 
86571
    }
 
86572
    }
 
86573
}
 
86574
if ((attributeData->present_attributes & rem__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
86575
{
 
86576
    attributeData->definitionURL = COLLADABU::URI("");
 
86577
}
 
86578
if ((attributeData->present_attributes & rem__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
86579
{
 
86580
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
86581
}
 
86582
if ((attributeData->present_attributes & rem__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
86583
{
 
86584
    attributeData->href = COLLADABU::URI("");
 
86585
}
 
86586
 
 
86587
 
 
86588
    return true;
 
86589
}
 
86590
 
 
86591
//---------------------------------------------------------------------
 
86592
bool ColladaParserAutoGen15Private::_preEnd__rem()
 
86593
{
 
86594
#ifdef GENERATEDSAXPARSER_VALIDATION
 
86595
    if ( mValidate )
 
86596
    {
 
86597
 
 
86598
        bool validationResult = _validateEnd__rem();
 
86599
        if ( !validationResult ) return false;
 
86600
 
 
86601
    } // validation
 
86602
#endif
 
86603
 
 
86604
    return true;
 
86605
}
 
86606
 
 
86607
//---------------------------------------------------------------------
 
86608
bool ColladaParserAutoGen15Private::_freeAttributes__rem( void* attributeData )
 
86609
{
 
86610
    rem__AttributeData* typedAttributeData = static_cast<rem__AttributeData*>(attributeData);
 
86611
    if (typedAttributeData->_class.data)
 
86612
    {
 
86613
        mStackMemoryManager.deleteObject();
 
86614
    }
 
86615
 
 
86616
    if (typedAttributeData->unknownAttributes.data)
 
86617
    {
 
86618
        mStackMemoryManager.deleteObject();
 
86619
    }
 
86620
 
 
86621
 
 
86622
    typedAttributeData->~rem__AttributeData();
 
86623
 
 
86624
    return true;
 
86625
}
 
86626
 
 
86627
//---------------------------------------------------------------------
 
86628
const minus__AttributeData minus__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
86629
 
 
86630
//---------------------------------------------------------------------
 
86631
bool ColladaParserAutoGen15Private::_data__minus( const ParserChar* text, size_t textLength )
 
86632
{
 
86633
    return true;
 
86634
}
 
86635
 
 
86636
//---------------------------------------------------------------------
 
86637
bool ColladaParserAutoGen15Private::_preBegin__minus( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
86638
{
 
86639
#ifdef GENERATEDSAXPARSER_VALIDATION
 
86640
    if ( mValidate )
 
86641
    {
 
86642
 
 
86643
        bool validationResult = _validateBegin__minus( attributes, attributeDataPtr, validationDataPtr );
 
86644
        if ( !validationResult ) return false;
 
86645
 
 
86646
    } // validation
 
86647
#endif
 
86648
 
 
86649
minus__AttributeData* attributeData = newData<minus__AttributeData>(attributeDataPtr);
 
86650
 
 
86651
const ParserChar** attributeArray = attributes.attributes;
 
86652
if ( attributeArray )
 
86653
{
 
86654
    while (true)
 
86655
    {
 
86656
        const ParserChar * attribute = *attributeArray;
 
86657
        if ( !attribute )
 
86658
            break;
 
86659
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
86660
        attributeArray++;
 
86661
        if ( !attributeArray )
 
86662
            return false;
 
86663
        const ParserChar* attributeValue = *attributeArray;
 
86664
        attributeArray++;
 
86665
 
 
86666
 
 
86667
    switch ( hash )
 
86668
    {
 
86669
    case HASH_ATTRIBUTE_ENCODING:
 
86670
    {
 
86671
 
 
86672
attributeData->encoding = attributeValue;
 
86673
 
 
86674
    break;
 
86675
    }
 
86676
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
86677
    {
 
86678
bool failed;
 
86679
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
86680
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
86681
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
86682
        HASH_ELEMENT_MINUS,
 
86683
        HASH_ATTRIBUTE_DEFINITIONURL,
 
86684
        attributeValue))
 
86685
{
 
86686
    return false;
 
86687
}
 
86688
if ( !failed )
 
86689
    attributeData->present_attributes |= minus__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
86690
 
 
86691
    break;
 
86692
    }
 
86693
    case HASH_ATTRIBUTE_CLASS:
 
86694
    {
 
86695
bool failed;
 
86696
#ifdef GENERATEDSAXPARSER_VALIDATION
 
86697
    if ( mValidate )
 
86698
    {
 
86699
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_MINUS, HASH_ATTRIBUTE_CLASS);
 
86700
    }
 
86701
    else
 
86702
    {
 
86703
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
86704
    }
 
86705
#else
 
86706
    {
 
86707
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
86708
    } // validation
 
86709
#endif
 
86710
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
86711
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
86712
        HASH_ELEMENT_MINUS,
 
86713
        HASH_ATTRIBUTE_CLASS,
 
86714
        attributeValue))
 
86715
{
 
86716
    return false;
 
86717
}
 
86718
#ifdef GENERATEDSAXPARSER_VALIDATION
 
86719
    if ( mValidate )
 
86720
    {
 
86721
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
86722
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
86723
    {
 
86724
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
86725
            simpleTypeValidationResult,
 
86726
            HASH_ELEMENT_MINUS,
 
86727
            HASH_ATTRIBUTE_CLASS,
 
86728
            attributeValue) )
 
86729
        {
 
86730
            return false;
 
86731
        }
 
86732
    }
 
86733
    } // validation
 
86734
#endif
 
86735
 
 
86736
if ( !failed )
 
86737
    attributeData->present_attributes |= minus__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
86738
 
 
86739
    break;
 
86740
    }
 
86741
    case HASH_ATTRIBUTE_STYLE:
 
86742
    {
 
86743
 
 
86744
attributeData->style = attributeValue;
 
86745
 
 
86746
    break;
 
86747
    }
 
86748
    case HASH_ATTRIBUTE_XREF:
 
86749
    {
 
86750
 
 
86751
attributeData->xref = attributeValue;
 
86752
 
 
86753
    break;
 
86754
    }
 
86755
    case HASH_ATTRIBUTE_ID:
 
86756
    {
 
86757
 
 
86758
attributeData->id = attributeValue;
 
86759
 
 
86760
    break;
 
86761
    }
 
86762
    case HASH_ATTRIBUTE_HREF:
 
86763
    {
 
86764
bool failed;
 
86765
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
86766
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
86767
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
86768
        HASH_ELEMENT_MINUS,
 
86769
        HASH_ATTRIBUTE_HREF,
 
86770
        attributeValue))
 
86771
{
 
86772
    return false;
 
86773
}
 
86774
if ( !failed )
 
86775
    attributeData->present_attributes |= minus__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
86776
 
 
86777
    break;
 
86778
    }
 
86779
    default:
 
86780
    {
 
86781
        if ( !attributeData->unknownAttributes.data )
 
86782
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
86783
        else
 
86784
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
86785
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
86786
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
86787
        attributeData->unknownAttributes.size += 2;
 
86788
 
 
86789
    }
 
86790
    }
 
86791
    }
 
86792
}
 
86793
if ((attributeData->present_attributes & minus__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
86794
{
 
86795
    attributeData->definitionURL = COLLADABU::URI("");
 
86796
}
 
86797
if ((attributeData->present_attributes & minus__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
86798
{
 
86799
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
86800
}
 
86801
if ((attributeData->present_attributes & minus__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
86802
{
 
86803
    attributeData->href = COLLADABU::URI("");
 
86804
}
 
86805
 
 
86806
 
 
86807
    return true;
 
86808
}
 
86809
 
 
86810
//---------------------------------------------------------------------
 
86811
bool ColladaParserAutoGen15Private::_preEnd__minus()
 
86812
{
 
86813
#ifdef GENERATEDSAXPARSER_VALIDATION
 
86814
    if ( mValidate )
 
86815
    {
 
86816
 
 
86817
        bool validationResult = _validateEnd__minus();
 
86818
        if ( !validationResult ) return false;
 
86819
 
 
86820
    } // validation
 
86821
#endif
 
86822
 
 
86823
    return true;
 
86824
}
 
86825
 
 
86826
//---------------------------------------------------------------------
 
86827
bool ColladaParserAutoGen15Private::_freeAttributes__minus( void* attributeData )
 
86828
{
 
86829
    minus__AttributeData* typedAttributeData = static_cast<minus__AttributeData*>(attributeData);
 
86830
    if (typedAttributeData->_class.data)
 
86831
    {
 
86832
        mStackMemoryManager.deleteObject();
 
86833
    }
 
86834
 
 
86835
    if (typedAttributeData->unknownAttributes.data)
 
86836
    {
 
86837
        mStackMemoryManager.deleteObject();
 
86838
    }
 
86839
 
 
86840
 
 
86841
    typedAttributeData->~minus__AttributeData();
 
86842
 
 
86843
    return true;
 
86844
}
 
86845
 
 
86846
//---------------------------------------------------------------------
 
86847
const plus__AttributeData plus__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
86848
 
 
86849
//---------------------------------------------------------------------
 
86850
bool ColladaParserAutoGen15Private::_data__plus( const ParserChar* text, size_t textLength )
 
86851
{
 
86852
    return true;
 
86853
}
 
86854
 
 
86855
//---------------------------------------------------------------------
 
86856
bool ColladaParserAutoGen15Private::_preBegin__plus( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
86857
{
 
86858
#ifdef GENERATEDSAXPARSER_VALIDATION
 
86859
    if ( mValidate )
 
86860
    {
 
86861
 
 
86862
        bool validationResult = _validateBegin__plus( attributes, attributeDataPtr, validationDataPtr );
 
86863
        if ( !validationResult ) return false;
 
86864
 
 
86865
    } // validation
 
86866
#endif
 
86867
 
 
86868
plus__AttributeData* attributeData = newData<plus__AttributeData>(attributeDataPtr);
 
86869
 
 
86870
const ParserChar** attributeArray = attributes.attributes;
 
86871
if ( attributeArray )
 
86872
{
 
86873
    while (true)
 
86874
    {
 
86875
        const ParserChar * attribute = *attributeArray;
 
86876
        if ( !attribute )
 
86877
            break;
 
86878
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
86879
        attributeArray++;
 
86880
        if ( !attributeArray )
 
86881
            return false;
 
86882
        const ParserChar* attributeValue = *attributeArray;
 
86883
        attributeArray++;
 
86884
 
 
86885
 
 
86886
    switch ( hash )
 
86887
    {
 
86888
    case HASH_ATTRIBUTE_ENCODING:
 
86889
    {
 
86890
 
 
86891
attributeData->encoding = attributeValue;
 
86892
 
 
86893
    break;
 
86894
    }
 
86895
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
86896
    {
 
86897
bool failed;
 
86898
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
86899
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
86900
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
86901
        HASH_ELEMENT_PLUS,
 
86902
        HASH_ATTRIBUTE_DEFINITIONURL,
 
86903
        attributeValue))
 
86904
{
 
86905
    return false;
 
86906
}
 
86907
if ( !failed )
 
86908
    attributeData->present_attributes |= plus__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
86909
 
 
86910
    break;
 
86911
    }
 
86912
    case HASH_ATTRIBUTE_CLASS:
 
86913
    {
 
86914
bool failed;
 
86915
#ifdef GENERATEDSAXPARSER_VALIDATION
 
86916
    if ( mValidate )
 
86917
    {
 
86918
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_PLUS, HASH_ATTRIBUTE_CLASS);
 
86919
    }
 
86920
    else
 
86921
    {
 
86922
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
86923
    }
 
86924
#else
 
86925
    {
 
86926
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
86927
    } // validation
 
86928
#endif
 
86929
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
86930
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
86931
        HASH_ELEMENT_PLUS,
 
86932
        HASH_ATTRIBUTE_CLASS,
 
86933
        attributeValue))
 
86934
{
 
86935
    return false;
 
86936
}
 
86937
#ifdef GENERATEDSAXPARSER_VALIDATION
 
86938
    if ( mValidate )
 
86939
    {
 
86940
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
86941
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
86942
    {
 
86943
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
86944
            simpleTypeValidationResult,
 
86945
            HASH_ELEMENT_PLUS,
 
86946
            HASH_ATTRIBUTE_CLASS,
 
86947
            attributeValue) )
 
86948
        {
 
86949
            return false;
 
86950
        }
 
86951
    }
 
86952
    } // validation
 
86953
#endif
 
86954
 
 
86955
if ( !failed )
 
86956
    attributeData->present_attributes |= plus__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
86957
 
 
86958
    break;
 
86959
    }
 
86960
    case HASH_ATTRIBUTE_STYLE:
 
86961
    {
 
86962
 
 
86963
attributeData->style = attributeValue;
 
86964
 
 
86965
    break;
 
86966
    }
 
86967
    case HASH_ATTRIBUTE_XREF:
 
86968
    {
 
86969
 
 
86970
attributeData->xref = attributeValue;
 
86971
 
 
86972
    break;
 
86973
    }
 
86974
    case HASH_ATTRIBUTE_ID:
 
86975
    {
 
86976
 
 
86977
attributeData->id = attributeValue;
 
86978
 
 
86979
    break;
 
86980
    }
 
86981
    case HASH_ATTRIBUTE_HREF:
 
86982
    {
 
86983
bool failed;
 
86984
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
86985
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
86986
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
86987
        HASH_ELEMENT_PLUS,
 
86988
        HASH_ATTRIBUTE_HREF,
 
86989
        attributeValue))
 
86990
{
 
86991
    return false;
 
86992
}
 
86993
if ( !failed )
 
86994
    attributeData->present_attributes |= plus__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
86995
 
 
86996
    break;
 
86997
    }
 
86998
    default:
 
86999
    {
 
87000
        if ( !attributeData->unknownAttributes.data )
 
87001
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
87002
        else
 
87003
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
87004
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
87005
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
87006
        attributeData->unknownAttributes.size += 2;
 
87007
 
 
87008
    }
 
87009
    }
 
87010
    }
 
87011
}
 
87012
if ((attributeData->present_attributes & plus__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
87013
{
 
87014
    attributeData->definitionURL = COLLADABU::URI("");
 
87015
}
 
87016
if ((attributeData->present_attributes & plus__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
87017
{
 
87018
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
87019
}
 
87020
if ((attributeData->present_attributes & plus__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
87021
{
 
87022
    attributeData->href = COLLADABU::URI("");
 
87023
}
 
87024
 
 
87025
 
 
87026
    return true;
 
87027
}
 
87028
 
 
87029
//---------------------------------------------------------------------
 
87030
bool ColladaParserAutoGen15Private::_preEnd__plus()
 
87031
{
 
87032
#ifdef GENERATEDSAXPARSER_VALIDATION
 
87033
    if ( mValidate )
 
87034
    {
 
87035
 
 
87036
        bool validationResult = _validateEnd__plus();
 
87037
        if ( !validationResult ) return false;
 
87038
 
 
87039
    } // validation
 
87040
#endif
 
87041
 
 
87042
    return true;
 
87043
}
 
87044
 
 
87045
//---------------------------------------------------------------------
 
87046
bool ColladaParserAutoGen15Private::_freeAttributes__plus( void* attributeData )
 
87047
{
 
87048
    plus__AttributeData* typedAttributeData = static_cast<plus__AttributeData*>(attributeData);
 
87049
    if (typedAttributeData->_class.data)
 
87050
    {
 
87051
        mStackMemoryManager.deleteObject();
 
87052
    }
 
87053
 
 
87054
    if (typedAttributeData->unknownAttributes.data)
 
87055
    {
 
87056
        mStackMemoryManager.deleteObject();
 
87057
    }
 
87058
 
 
87059
 
 
87060
    typedAttributeData->~plus__AttributeData();
 
87061
 
 
87062
    return true;
 
87063
}
 
87064
 
 
87065
//---------------------------------------------------------------------
 
87066
const times__AttributeData times__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
87067
 
 
87068
//---------------------------------------------------------------------
 
87069
bool ColladaParserAutoGen15Private::_data__times( const ParserChar* text, size_t textLength )
 
87070
{
 
87071
    return true;
 
87072
}
 
87073
 
 
87074
//---------------------------------------------------------------------
 
87075
bool ColladaParserAutoGen15Private::_preBegin__times( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
87076
{
 
87077
#ifdef GENERATEDSAXPARSER_VALIDATION
 
87078
    if ( mValidate )
 
87079
    {
 
87080
 
 
87081
        bool validationResult = _validateBegin__times( attributes, attributeDataPtr, validationDataPtr );
 
87082
        if ( !validationResult ) return false;
 
87083
 
 
87084
    } // validation
 
87085
#endif
 
87086
 
 
87087
times__AttributeData* attributeData = newData<times__AttributeData>(attributeDataPtr);
 
87088
 
 
87089
const ParserChar** attributeArray = attributes.attributes;
 
87090
if ( attributeArray )
 
87091
{
 
87092
    while (true)
 
87093
    {
 
87094
        const ParserChar * attribute = *attributeArray;
 
87095
        if ( !attribute )
 
87096
            break;
 
87097
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
87098
        attributeArray++;
 
87099
        if ( !attributeArray )
 
87100
            return false;
 
87101
        const ParserChar* attributeValue = *attributeArray;
 
87102
        attributeArray++;
 
87103
 
 
87104
 
 
87105
    switch ( hash )
 
87106
    {
 
87107
    case HASH_ATTRIBUTE_ENCODING:
 
87108
    {
 
87109
 
 
87110
attributeData->encoding = attributeValue;
 
87111
 
 
87112
    break;
 
87113
    }
 
87114
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
87115
    {
 
87116
bool failed;
 
87117
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
87118
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
87119
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
87120
        HASH_ELEMENT_TIMES,
 
87121
        HASH_ATTRIBUTE_DEFINITIONURL,
 
87122
        attributeValue))
 
87123
{
 
87124
    return false;
 
87125
}
 
87126
if ( !failed )
 
87127
    attributeData->present_attributes |= times__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
87128
 
 
87129
    break;
 
87130
    }
 
87131
    case HASH_ATTRIBUTE_CLASS:
 
87132
    {
 
87133
bool failed;
 
87134
#ifdef GENERATEDSAXPARSER_VALIDATION
 
87135
    if ( mValidate )
 
87136
    {
 
87137
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_TIMES, HASH_ATTRIBUTE_CLASS);
 
87138
    }
 
87139
    else
 
87140
    {
 
87141
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
87142
    }
 
87143
#else
 
87144
    {
 
87145
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
87146
    } // validation
 
87147
#endif
 
87148
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
87149
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
87150
        HASH_ELEMENT_TIMES,
 
87151
        HASH_ATTRIBUTE_CLASS,
 
87152
        attributeValue))
 
87153
{
 
87154
    return false;
 
87155
}
 
87156
#ifdef GENERATEDSAXPARSER_VALIDATION
 
87157
    if ( mValidate )
 
87158
    {
 
87159
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
87160
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
87161
    {
 
87162
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
87163
            simpleTypeValidationResult,
 
87164
            HASH_ELEMENT_TIMES,
 
87165
            HASH_ATTRIBUTE_CLASS,
 
87166
            attributeValue) )
 
87167
        {
 
87168
            return false;
 
87169
        }
 
87170
    }
 
87171
    } // validation
 
87172
#endif
 
87173
 
 
87174
if ( !failed )
 
87175
    attributeData->present_attributes |= times__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
87176
 
 
87177
    break;
 
87178
    }
 
87179
    case HASH_ATTRIBUTE_STYLE:
 
87180
    {
 
87181
 
 
87182
attributeData->style = attributeValue;
 
87183
 
 
87184
    break;
 
87185
    }
 
87186
    case HASH_ATTRIBUTE_XREF:
 
87187
    {
 
87188
 
 
87189
attributeData->xref = attributeValue;
 
87190
 
 
87191
    break;
 
87192
    }
 
87193
    case HASH_ATTRIBUTE_ID:
 
87194
    {
 
87195
 
 
87196
attributeData->id = attributeValue;
 
87197
 
 
87198
    break;
 
87199
    }
 
87200
    case HASH_ATTRIBUTE_HREF:
 
87201
    {
 
87202
bool failed;
 
87203
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
87204
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
87205
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
87206
        HASH_ELEMENT_TIMES,
 
87207
        HASH_ATTRIBUTE_HREF,
 
87208
        attributeValue))
 
87209
{
 
87210
    return false;
 
87211
}
 
87212
if ( !failed )
 
87213
    attributeData->present_attributes |= times__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
87214
 
 
87215
    break;
 
87216
    }
 
87217
    default:
 
87218
    {
 
87219
        if ( !attributeData->unknownAttributes.data )
 
87220
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
87221
        else
 
87222
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
87223
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
87224
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
87225
        attributeData->unknownAttributes.size += 2;
 
87226
 
 
87227
    }
 
87228
    }
 
87229
    }
 
87230
}
 
87231
if ((attributeData->present_attributes & times__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
87232
{
 
87233
    attributeData->definitionURL = COLLADABU::URI("");
 
87234
}
 
87235
if ((attributeData->present_attributes & times__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
87236
{
 
87237
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
87238
}
 
87239
if ((attributeData->present_attributes & times__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
87240
{
 
87241
    attributeData->href = COLLADABU::URI("");
 
87242
}
 
87243
 
 
87244
 
 
87245
    return true;
 
87246
}
 
87247
 
 
87248
//---------------------------------------------------------------------
 
87249
bool ColladaParserAutoGen15Private::_preEnd__times()
 
87250
{
 
87251
#ifdef GENERATEDSAXPARSER_VALIDATION
 
87252
    if ( mValidate )
 
87253
    {
 
87254
 
 
87255
        bool validationResult = _validateEnd__times();
 
87256
        if ( !validationResult ) return false;
 
87257
 
 
87258
    } // validation
 
87259
#endif
 
87260
 
 
87261
    return true;
 
87262
}
 
87263
 
 
87264
//---------------------------------------------------------------------
 
87265
bool ColladaParserAutoGen15Private::_freeAttributes__times( void* attributeData )
 
87266
{
 
87267
    times__AttributeData* typedAttributeData = static_cast<times__AttributeData*>(attributeData);
 
87268
    if (typedAttributeData->_class.data)
 
87269
    {
 
87270
        mStackMemoryManager.deleteObject();
 
87271
    }
 
87272
 
 
87273
    if (typedAttributeData->unknownAttributes.data)
 
87274
    {
 
87275
        mStackMemoryManager.deleteObject();
 
87276
    }
 
87277
 
 
87278
 
 
87279
    typedAttributeData->~times__AttributeData();
 
87280
 
 
87281
    return true;
 
87282
}
 
87283
 
 
87284
//---------------------------------------------------------------------
 
87285
const power__AttributeData power__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
87286
 
 
87287
//---------------------------------------------------------------------
 
87288
bool ColladaParserAutoGen15Private::_data__power( const ParserChar* text, size_t textLength )
 
87289
{
 
87290
    return true;
 
87291
}
 
87292
 
 
87293
//---------------------------------------------------------------------
 
87294
bool ColladaParserAutoGen15Private::_preBegin__power( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
87295
{
 
87296
#ifdef GENERATEDSAXPARSER_VALIDATION
 
87297
    if ( mValidate )
 
87298
    {
 
87299
 
 
87300
        bool validationResult = _validateBegin__power( attributes, attributeDataPtr, validationDataPtr );
 
87301
        if ( !validationResult ) return false;
 
87302
 
 
87303
    } // validation
 
87304
#endif
 
87305
 
 
87306
power__AttributeData* attributeData = newData<power__AttributeData>(attributeDataPtr);
 
87307
 
 
87308
const ParserChar** attributeArray = attributes.attributes;
 
87309
if ( attributeArray )
 
87310
{
 
87311
    while (true)
 
87312
    {
 
87313
        const ParserChar * attribute = *attributeArray;
 
87314
        if ( !attribute )
 
87315
            break;
 
87316
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
87317
        attributeArray++;
 
87318
        if ( !attributeArray )
 
87319
            return false;
 
87320
        const ParserChar* attributeValue = *attributeArray;
 
87321
        attributeArray++;
 
87322
 
 
87323
 
 
87324
    switch ( hash )
 
87325
    {
 
87326
    case HASH_ATTRIBUTE_ENCODING:
 
87327
    {
 
87328
 
 
87329
attributeData->encoding = attributeValue;
 
87330
 
 
87331
    break;
 
87332
    }
 
87333
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
87334
    {
 
87335
bool failed;
 
87336
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
87337
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
87338
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
87339
        HASH_ELEMENT_POWER,
 
87340
        HASH_ATTRIBUTE_DEFINITIONURL,
 
87341
        attributeValue))
 
87342
{
 
87343
    return false;
 
87344
}
 
87345
if ( !failed )
 
87346
    attributeData->present_attributes |= power__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
87347
 
 
87348
    break;
 
87349
    }
 
87350
    case HASH_ATTRIBUTE_CLASS:
 
87351
    {
 
87352
bool failed;
 
87353
#ifdef GENERATEDSAXPARSER_VALIDATION
 
87354
    if ( mValidate )
 
87355
    {
 
87356
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_POWER, HASH_ATTRIBUTE_CLASS);
 
87357
    }
 
87358
    else
 
87359
    {
 
87360
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
87361
    }
 
87362
#else
 
87363
    {
 
87364
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
87365
    } // validation
 
87366
#endif
 
87367
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
87368
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
87369
        HASH_ELEMENT_POWER,
 
87370
        HASH_ATTRIBUTE_CLASS,
 
87371
        attributeValue))
 
87372
{
 
87373
    return false;
 
87374
}
 
87375
#ifdef GENERATEDSAXPARSER_VALIDATION
 
87376
    if ( mValidate )
 
87377
    {
 
87378
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
87379
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
87380
    {
 
87381
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
87382
            simpleTypeValidationResult,
 
87383
            HASH_ELEMENT_POWER,
 
87384
            HASH_ATTRIBUTE_CLASS,
 
87385
            attributeValue) )
 
87386
        {
 
87387
            return false;
 
87388
        }
 
87389
    }
 
87390
    } // validation
 
87391
#endif
 
87392
 
 
87393
if ( !failed )
 
87394
    attributeData->present_attributes |= power__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
87395
 
 
87396
    break;
 
87397
    }
 
87398
    case HASH_ATTRIBUTE_STYLE:
 
87399
    {
 
87400
 
 
87401
attributeData->style = attributeValue;
 
87402
 
 
87403
    break;
 
87404
    }
 
87405
    case HASH_ATTRIBUTE_XREF:
 
87406
    {
 
87407
 
 
87408
attributeData->xref = attributeValue;
 
87409
 
 
87410
    break;
 
87411
    }
 
87412
    case HASH_ATTRIBUTE_ID:
 
87413
    {
 
87414
 
 
87415
attributeData->id = attributeValue;
 
87416
 
 
87417
    break;
 
87418
    }
 
87419
    case HASH_ATTRIBUTE_HREF:
 
87420
    {
 
87421
bool failed;
 
87422
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
87423
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
87424
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
87425
        HASH_ELEMENT_POWER,
 
87426
        HASH_ATTRIBUTE_HREF,
 
87427
        attributeValue))
 
87428
{
 
87429
    return false;
 
87430
}
 
87431
if ( !failed )
 
87432
    attributeData->present_attributes |= power__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
87433
 
 
87434
    break;
 
87435
    }
 
87436
    default:
 
87437
    {
 
87438
        if ( !attributeData->unknownAttributes.data )
 
87439
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
87440
        else
 
87441
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
87442
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
87443
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
87444
        attributeData->unknownAttributes.size += 2;
 
87445
 
 
87446
    }
 
87447
    }
 
87448
    }
 
87449
}
 
87450
if ((attributeData->present_attributes & power__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
87451
{
 
87452
    attributeData->definitionURL = COLLADABU::URI("");
 
87453
}
 
87454
if ((attributeData->present_attributes & power__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
87455
{
 
87456
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
87457
}
 
87458
if ((attributeData->present_attributes & power__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
87459
{
 
87460
    attributeData->href = COLLADABU::URI("");
 
87461
}
 
87462
 
 
87463
 
 
87464
    return true;
 
87465
}
 
87466
 
 
87467
//---------------------------------------------------------------------
 
87468
bool ColladaParserAutoGen15Private::_preEnd__power()
 
87469
{
 
87470
#ifdef GENERATEDSAXPARSER_VALIDATION
 
87471
    if ( mValidate )
 
87472
    {
 
87473
 
 
87474
        bool validationResult = _validateEnd__power();
 
87475
        if ( !validationResult ) return false;
 
87476
 
 
87477
    } // validation
 
87478
#endif
 
87479
 
 
87480
    return true;
 
87481
}
 
87482
 
 
87483
//---------------------------------------------------------------------
 
87484
bool ColladaParserAutoGen15Private::_freeAttributes__power( void* attributeData )
 
87485
{
 
87486
    power__AttributeData* typedAttributeData = static_cast<power__AttributeData*>(attributeData);
 
87487
    if (typedAttributeData->_class.data)
 
87488
    {
 
87489
        mStackMemoryManager.deleteObject();
 
87490
    }
 
87491
 
 
87492
    if (typedAttributeData->unknownAttributes.data)
 
87493
    {
 
87494
        mStackMemoryManager.deleteObject();
 
87495
    }
 
87496
 
 
87497
 
 
87498
    typedAttributeData->~power__AttributeData();
 
87499
 
 
87500
    return true;
 
87501
}
 
87502
 
 
87503
//---------------------------------------------------------------------
 
87504
const root__AttributeData root__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
87505
 
 
87506
//---------------------------------------------------------------------
 
87507
bool ColladaParserAutoGen15Private::_data__root( const ParserChar* text, size_t textLength )
 
87508
{
 
87509
    return true;
 
87510
}
 
87511
 
 
87512
//---------------------------------------------------------------------
 
87513
bool ColladaParserAutoGen15Private::_preBegin__root( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
87514
{
 
87515
#ifdef GENERATEDSAXPARSER_VALIDATION
 
87516
    if ( mValidate )
 
87517
    {
 
87518
 
 
87519
        bool validationResult = _validateBegin__root( attributes, attributeDataPtr, validationDataPtr );
 
87520
        if ( !validationResult ) return false;
 
87521
 
 
87522
    } // validation
 
87523
#endif
 
87524
 
 
87525
root__AttributeData* attributeData = newData<root__AttributeData>(attributeDataPtr);
 
87526
 
 
87527
const ParserChar** attributeArray = attributes.attributes;
 
87528
if ( attributeArray )
 
87529
{
 
87530
    while (true)
 
87531
    {
 
87532
        const ParserChar * attribute = *attributeArray;
 
87533
        if ( !attribute )
 
87534
            break;
 
87535
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
87536
        attributeArray++;
 
87537
        if ( !attributeArray )
 
87538
            return false;
 
87539
        const ParserChar* attributeValue = *attributeArray;
 
87540
        attributeArray++;
 
87541
 
 
87542
 
 
87543
    switch ( hash )
 
87544
    {
 
87545
    case HASH_ATTRIBUTE_ENCODING:
 
87546
    {
 
87547
 
 
87548
attributeData->encoding = attributeValue;
 
87549
 
 
87550
    break;
 
87551
    }
 
87552
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
87553
    {
 
87554
bool failed;
 
87555
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
87556
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
87557
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
87558
        HASH_ELEMENT_ROOT,
 
87559
        HASH_ATTRIBUTE_DEFINITIONURL,
 
87560
        attributeValue))
 
87561
{
 
87562
    return false;
 
87563
}
 
87564
if ( !failed )
 
87565
    attributeData->present_attributes |= root__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
87566
 
 
87567
    break;
 
87568
    }
 
87569
    case HASH_ATTRIBUTE_CLASS:
 
87570
    {
 
87571
bool failed;
 
87572
#ifdef GENERATEDSAXPARSER_VALIDATION
 
87573
    if ( mValidate )
 
87574
    {
 
87575
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_ROOT, HASH_ATTRIBUTE_CLASS);
 
87576
    }
 
87577
    else
 
87578
    {
 
87579
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
87580
    }
 
87581
#else
 
87582
    {
 
87583
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
87584
    } // validation
 
87585
#endif
 
87586
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
87587
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
87588
        HASH_ELEMENT_ROOT,
 
87589
        HASH_ATTRIBUTE_CLASS,
 
87590
        attributeValue))
 
87591
{
 
87592
    return false;
 
87593
}
 
87594
#ifdef GENERATEDSAXPARSER_VALIDATION
 
87595
    if ( mValidate )
 
87596
    {
 
87597
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
87598
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
87599
    {
 
87600
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
87601
            simpleTypeValidationResult,
 
87602
            HASH_ELEMENT_ROOT,
 
87603
            HASH_ATTRIBUTE_CLASS,
 
87604
            attributeValue) )
 
87605
        {
 
87606
            return false;
 
87607
        }
 
87608
    }
 
87609
    } // validation
 
87610
#endif
 
87611
 
 
87612
if ( !failed )
 
87613
    attributeData->present_attributes |= root__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
87614
 
 
87615
    break;
 
87616
    }
 
87617
    case HASH_ATTRIBUTE_STYLE:
 
87618
    {
 
87619
 
 
87620
attributeData->style = attributeValue;
 
87621
 
 
87622
    break;
 
87623
    }
 
87624
    case HASH_ATTRIBUTE_XREF:
 
87625
    {
 
87626
 
 
87627
attributeData->xref = attributeValue;
 
87628
 
 
87629
    break;
 
87630
    }
 
87631
    case HASH_ATTRIBUTE_ID:
 
87632
    {
 
87633
 
 
87634
attributeData->id = attributeValue;
 
87635
 
 
87636
    break;
 
87637
    }
 
87638
    case HASH_ATTRIBUTE_HREF:
 
87639
    {
 
87640
bool failed;
 
87641
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
87642
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
87643
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
87644
        HASH_ELEMENT_ROOT,
 
87645
        HASH_ATTRIBUTE_HREF,
 
87646
        attributeValue))
 
87647
{
 
87648
    return false;
 
87649
}
 
87650
if ( !failed )
 
87651
    attributeData->present_attributes |= root__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
87652
 
 
87653
    break;
 
87654
    }
 
87655
    default:
 
87656
    {
 
87657
        if ( !attributeData->unknownAttributes.data )
 
87658
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
87659
        else
 
87660
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
87661
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
87662
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
87663
        attributeData->unknownAttributes.size += 2;
 
87664
 
 
87665
    }
 
87666
    }
 
87667
    }
 
87668
}
 
87669
if ((attributeData->present_attributes & root__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
87670
{
 
87671
    attributeData->definitionURL = COLLADABU::URI("");
 
87672
}
 
87673
if ((attributeData->present_attributes & root__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
87674
{
 
87675
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
87676
}
 
87677
if ((attributeData->present_attributes & root__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
87678
{
 
87679
    attributeData->href = COLLADABU::URI("");
 
87680
}
 
87681
 
 
87682
 
 
87683
    return true;
 
87684
}
 
87685
 
 
87686
//---------------------------------------------------------------------
 
87687
bool ColladaParserAutoGen15Private::_preEnd__root()
 
87688
{
 
87689
#ifdef GENERATEDSAXPARSER_VALIDATION
 
87690
    if ( mValidate )
 
87691
    {
 
87692
 
 
87693
        bool validationResult = _validateEnd__root();
 
87694
        if ( !validationResult ) return false;
 
87695
 
 
87696
    } // validation
 
87697
#endif
 
87698
 
 
87699
    return true;
 
87700
}
 
87701
 
 
87702
//---------------------------------------------------------------------
 
87703
bool ColladaParserAutoGen15Private::_freeAttributes__root( void* attributeData )
 
87704
{
 
87705
    root__AttributeData* typedAttributeData = static_cast<root__AttributeData*>(attributeData);
 
87706
    if (typedAttributeData->_class.data)
 
87707
    {
 
87708
        mStackMemoryManager.deleteObject();
 
87709
    }
 
87710
 
 
87711
    if (typedAttributeData->unknownAttributes.data)
 
87712
    {
 
87713
        mStackMemoryManager.deleteObject();
 
87714
    }
 
87715
 
 
87716
 
 
87717
    typedAttributeData->~root__AttributeData();
 
87718
 
 
87719
    return true;
 
87720
}
 
87721
 
 
87722
//---------------------------------------------------------------------
 
87723
bool ColladaParserAutoGen15Private::_data__max____Arith_type( const ParserChar* text, size_t textLength )
 
87724
{
 
87725
    return true;
 
87726
}
 
87727
 
 
87728
//---------------------------------------------------------------------
 
87729
bool ColladaParserAutoGen15Private::_preBegin__max____Arith_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
87730
{
 
87731
#ifdef GENERATEDSAXPARSER_VALIDATION
 
87732
    if ( mValidate )
 
87733
    {
 
87734
 
 
87735
        bool validationResult = _validateBegin__max____Arith_type( attributes, attributeDataPtr, validationDataPtr );
 
87736
        if ( !validationResult ) return false;
 
87737
 
 
87738
    } // validation
 
87739
#endif
 
87740
 
 
87741
max____Arith_type__AttributeData* attributeData = newData<max____Arith_type__AttributeData>(attributeDataPtr);
 
87742
 
 
87743
const ParserChar** attributeArray = attributes.attributes;
 
87744
if ( attributeArray )
 
87745
{
 
87746
    while (true)
 
87747
    {
 
87748
        const ParserChar * attribute = *attributeArray;
 
87749
        if ( !attribute )
 
87750
            break;
 
87751
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
87752
        attributeArray++;
 
87753
        if ( !attributeArray )
 
87754
            return false;
 
87755
        const ParserChar* attributeValue = *attributeArray;
 
87756
        attributeArray++;
 
87757
 
 
87758
 
 
87759
    switch ( hash )
 
87760
    {
 
87761
    case HASH_ATTRIBUTE_ENCODING:
 
87762
    {
 
87763
 
 
87764
attributeData->encoding = attributeValue;
 
87765
 
 
87766
    break;
 
87767
    }
 
87768
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
87769
    {
 
87770
bool failed;
 
87771
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
87772
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
87773
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
87774
        HASH_ELEMENT_MAX,
 
87775
        HASH_ATTRIBUTE_DEFINITIONURL,
 
87776
        attributeValue))
 
87777
{
 
87778
    return false;
 
87779
}
 
87780
if ( !failed )
 
87781
    attributeData->present_attributes |= max____Arith_type__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
87782
 
 
87783
    break;
 
87784
    }
 
87785
    case HASH_ATTRIBUTE_CLASS:
 
87786
    {
 
87787
bool failed;
 
87788
#ifdef GENERATEDSAXPARSER_VALIDATION
 
87789
    if ( mValidate )
 
87790
    {
 
87791
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_MAX, HASH_ATTRIBUTE_CLASS);
 
87792
    }
 
87793
    else
 
87794
    {
 
87795
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
87796
    }
 
87797
#else
 
87798
    {
 
87799
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
87800
    } // validation
 
87801
#endif
 
87802
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
87803
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
87804
        HASH_ELEMENT_MAX,
 
87805
        HASH_ATTRIBUTE_CLASS,
 
87806
        attributeValue))
 
87807
{
 
87808
    return false;
 
87809
}
 
87810
#ifdef GENERATEDSAXPARSER_VALIDATION
 
87811
    if ( mValidate )
 
87812
    {
 
87813
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
87814
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
87815
    {
 
87816
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
87817
            simpleTypeValidationResult,
 
87818
            HASH_ELEMENT_MAX,
 
87819
            HASH_ATTRIBUTE_CLASS,
 
87820
            attributeValue) )
 
87821
        {
 
87822
            return false;
 
87823
        }
 
87824
    }
 
87825
    } // validation
 
87826
#endif
 
87827
 
 
87828
if ( !failed )
 
87829
    attributeData->present_attributes |= max____Arith_type__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
87830
 
 
87831
    break;
 
87832
    }
 
87833
    case HASH_ATTRIBUTE_STYLE:
 
87834
    {
 
87835
 
 
87836
attributeData->style = attributeValue;
 
87837
 
 
87838
    break;
 
87839
    }
 
87840
    case HASH_ATTRIBUTE_XREF:
 
87841
    {
 
87842
 
 
87843
attributeData->xref = attributeValue;
 
87844
 
 
87845
    break;
 
87846
    }
 
87847
    case HASH_ATTRIBUTE_ID:
 
87848
    {
 
87849
 
 
87850
attributeData->id = attributeValue;
 
87851
 
 
87852
    break;
 
87853
    }
 
87854
    case HASH_ATTRIBUTE_HREF:
 
87855
    {
 
87856
bool failed;
 
87857
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
87858
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
87859
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
87860
        HASH_ELEMENT_MAX,
 
87861
        HASH_ATTRIBUTE_HREF,
 
87862
        attributeValue))
 
87863
{
 
87864
    return false;
 
87865
}
 
87866
if ( !failed )
 
87867
    attributeData->present_attributes |= max____Arith_type__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
87868
 
 
87869
    break;
 
87870
    }
 
87871
    default:
 
87872
    {
 
87873
        if ( !attributeData->unknownAttributes.data )
 
87874
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
87875
        else
 
87876
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
87877
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
87878
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
87879
        attributeData->unknownAttributes.size += 2;
 
87880
 
 
87881
    }
 
87882
    }
 
87883
    }
 
87884
}
 
87885
if ((attributeData->present_attributes & max____Arith_type__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
87886
{
 
87887
    attributeData->definitionURL = COLLADABU::URI("");
 
87888
}
 
87889
if ((attributeData->present_attributes & max____Arith_type__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
87890
{
 
87891
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
87892
}
 
87893
if ((attributeData->present_attributes & max____Arith_type__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
87894
{
 
87895
    attributeData->href = COLLADABU::URI("");
 
87896
}
 
87897
 
 
87898
 
 
87899
    return true;
 
87900
}
 
87901
 
 
87902
//---------------------------------------------------------------------
 
87903
bool ColladaParserAutoGen15Private::_preEnd__max____Arith_type()
 
87904
{
 
87905
#ifdef GENERATEDSAXPARSER_VALIDATION
 
87906
    if ( mValidate )
 
87907
    {
 
87908
 
 
87909
        bool validationResult = _validateEnd__max____Arith_type();
 
87910
        if ( !validationResult ) return false;
 
87911
 
 
87912
    } // validation
 
87913
#endif
 
87914
 
 
87915
    return true;
 
87916
}
 
87917
 
 
87918
//---------------------------------------------------------------------
 
87919
bool ColladaParserAutoGen15Private::_freeAttributes__max____Arith_type( void* attributeData )
 
87920
{
 
87921
    max____Arith_type__AttributeData* typedAttributeData = static_cast<max____Arith_type__AttributeData*>(attributeData);
 
87922
    if (typedAttributeData->_class.data)
 
87923
    {
 
87924
        mStackMemoryManager.deleteObject();
 
87925
    }
 
87926
 
 
87927
    if (typedAttributeData->unknownAttributes.data)
 
87928
    {
 
87929
        mStackMemoryManager.deleteObject();
 
87930
    }
 
87931
 
 
87932
 
 
87933
    typedAttributeData->~max____Arith_type__AttributeData();
 
87934
 
 
87935
    return true;
 
87936
}
 
87937
 
 
87938
//---------------------------------------------------------------------
 
87939
bool ColladaParserAutoGen15Private::_data__min____Arith_type( const ParserChar* text, size_t textLength )
 
87940
{
 
87941
    return true;
 
87942
}
 
87943
 
 
87944
//---------------------------------------------------------------------
 
87945
bool ColladaParserAutoGen15Private::_preBegin__min____Arith_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
87946
{
 
87947
#ifdef GENERATEDSAXPARSER_VALIDATION
 
87948
    if ( mValidate )
 
87949
    {
 
87950
 
 
87951
        bool validationResult = _validateBegin__min____Arith_type( attributes, attributeDataPtr, validationDataPtr );
 
87952
        if ( !validationResult ) return false;
 
87953
 
 
87954
    } // validation
 
87955
#endif
 
87956
 
 
87957
min____Arith_type__AttributeData* attributeData = newData<min____Arith_type__AttributeData>(attributeDataPtr);
 
87958
 
 
87959
const ParserChar** attributeArray = attributes.attributes;
 
87960
if ( attributeArray )
 
87961
{
 
87962
    while (true)
 
87963
    {
 
87964
        const ParserChar * attribute = *attributeArray;
 
87965
        if ( !attribute )
 
87966
            break;
 
87967
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
87968
        attributeArray++;
 
87969
        if ( !attributeArray )
 
87970
            return false;
 
87971
        const ParserChar* attributeValue = *attributeArray;
 
87972
        attributeArray++;
 
87973
 
 
87974
 
 
87975
    switch ( hash )
 
87976
    {
 
87977
    case HASH_ATTRIBUTE_ENCODING:
 
87978
    {
 
87979
 
 
87980
attributeData->encoding = attributeValue;
 
87981
 
 
87982
    break;
 
87983
    }
 
87984
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
87985
    {
 
87986
bool failed;
 
87987
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
87988
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
87989
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
87990
        HASH_ELEMENT_MIN,
 
87991
        HASH_ATTRIBUTE_DEFINITIONURL,
 
87992
        attributeValue))
 
87993
{
 
87994
    return false;
 
87995
}
 
87996
if ( !failed )
 
87997
    attributeData->present_attributes |= min____Arith_type__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
87998
 
 
87999
    break;
 
88000
    }
 
88001
    case HASH_ATTRIBUTE_CLASS:
 
88002
    {
 
88003
bool failed;
 
88004
#ifdef GENERATEDSAXPARSER_VALIDATION
 
88005
    if ( mValidate )
 
88006
    {
 
88007
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_MIN, HASH_ATTRIBUTE_CLASS);
 
88008
    }
 
88009
    else
 
88010
    {
 
88011
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
88012
    }
 
88013
#else
 
88014
    {
 
88015
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
88016
    } // validation
 
88017
#endif
 
88018
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
88019
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
88020
        HASH_ELEMENT_MIN,
 
88021
        HASH_ATTRIBUTE_CLASS,
 
88022
        attributeValue))
 
88023
{
 
88024
    return false;
 
88025
}
 
88026
#ifdef GENERATEDSAXPARSER_VALIDATION
 
88027
    if ( mValidate )
 
88028
    {
 
88029
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
88030
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
88031
    {
 
88032
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
88033
            simpleTypeValidationResult,
 
88034
            HASH_ELEMENT_MIN,
 
88035
            HASH_ATTRIBUTE_CLASS,
 
88036
            attributeValue) )
 
88037
        {
 
88038
            return false;
 
88039
        }
 
88040
    }
 
88041
    } // validation
 
88042
#endif
 
88043
 
 
88044
if ( !failed )
 
88045
    attributeData->present_attributes |= min____Arith_type__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
88046
 
 
88047
    break;
 
88048
    }
 
88049
    case HASH_ATTRIBUTE_STYLE:
 
88050
    {
 
88051
 
 
88052
attributeData->style = attributeValue;
 
88053
 
 
88054
    break;
 
88055
    }
 
88056
    case HASH_ATTRIBUTE_XREF:
 
88057
    {
 
88058
 
 
88059
attributeData->xref = attributeValue;
 
88060
 
 
88061
    break;
 
88062
    }
 
88063
    case HASH_ATTRIBUTE_ID:
 
88064
    {
 
88065
 
 
88066
attributeData->id = attributeValue;
 
88067
 
 
88068
    break;
 
88069
    }
 
88070
    case HASH_ATTRIBUTE_HREF:
 
88071
    {
 
88072
bool failed;
 
88073
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
88074
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
88075
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
88076
        HASH_ELEMENT_MIN,
 
88077
        HASH_ATTRIBUTE_HREF,
 
88078
        attributeValue))
 
88079
{
 
88080
    return false;
 
88081
}
 
88082
if ( !failed )
 
88083
    attributeData->present_attributes |= min____Arith_type__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
88084
 
 
88085
    break;
 
88086
    }
 
88087
    default:
 
88088
    {
 
88089
        if ( !attributeData->unknownAttributes.data )
 
88090
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
88091
        else
 
88092
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
88093
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
88094
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
88095
        attributeData->unknownAttributes.size += 2;
 
88096
 
 
88097
    }
 
88098
    }
 
88099
    }
 
88100
}
 
88101
if ((attributeData->present_attributes & min____Arith_type__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
88102
{
 
88103
    attributeData->definitionURL = COLLADABU::URI("");
 
88104
}
 
88105
if ((attributeData->present_attributes & min____Arith_type__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
88106
{
 
88107
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
88108
}
 
88109
if ((attributeData->present_attributes & min____Arith_type__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
88110
{
 
88111
    attributeData->href = COLLADABU::URI("");
 
88112
}
 
88113
 
 
88114
 
 
88115
    return true;
 
88116
}
 
88117
 
 
88118
//---------------------------------------------------------------------
 
88119
bool ColladaParserAutoGen15Private::_preEnd__min____Arith_type()
 
88120
{
 
88121
#ifdef GENERATEDSAXPARSER_VALIDATION
 
88122
    if ( mValidate )
 
88123
    {
 
88124
 
 
88125
        bool validationResult = _validateEnd__min____Arith_type();
 
88126
        if ( !validationResult ) return false;
 
88127
 
 
88128
    } // validation
 
88129
#endif
 
88130
 
 
88131
    return true;
 
88132
}
 
88133
 
 
88134
//---------------------------------------------------------------------
 
88135
bool ColladaParserAutoGen15Private::_freeAttributes__min____Arith_type( void* attributeData )
 
88136
{
 
88137
    min____Arith_type__AttributeData* typedAttributeData = static_cast<min____Arith_type__AttributeData*>(attributeData);
 
88138
    if (typedAttributeData->_class.data)
 
88139
    {
 
88140
        mStackMemoryManager.deleteObject();
 
88141
    }
 
88142
 
 
88143
    if (typedAttributeData->unknownAttributes.data)
 
88144
    {
 
88145
        mStackMemoryManager.deleteObject();
 
88146
    }
 
88147
 
 
88148
 
 
88149
    typedAttributeData->~min____Arith_type__AttributeData();
 
88150
 
 
88151
    return true;
 
88152
}
 
88153
 
 
88154
//---------------------------------------------------------------------
 
88155
const gcd__AttributeData gcd__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
88156
 
 
88157
//---------------------------------------------------------------------
 
88158
bool ColladaParserAutoGen15Private::_data__gcd( const ParserChar* text, size_t textLength )
 
88159
{
 
88160
    return true;
 
88161
}
 
88162
 
 
88163
//---------------------------------------------------------------------
 
88164
bool ColladaParserAutoGen15Private::_preBegin__gcd( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
88165
{
 
88166
#ifdef GENERATEDSAXPARSER_VALIDATION
 
88167
    if ( mValidate )
 
88168
    {
 
88169
 
 
88170
        bool validationResult = _validateBegin__gcd( attributes, attributeDataPtr, validationDataPtr );
 
88171
        if ( !validationResult ) return false;
 
88172
 
 
88173
    } // validation
 
88174
#endif
 
88175
 
 
88176
gcd__AttributeData* attributeData = newData<gcd__AttributeData>(attributeDataPtr);
 
88177
 
 
88178
const ParserChar** attributeArray = attributes.attributes;
 
88179
if ( attributeArray )
 
88180
{
 
88181
    while (true)
 
88182
    {
 
88183
        const ParserChar * attribute = *attributeArray;
 
88184
        if ( !attribute )
 
88185
            break;
 
88186
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
88187
        attributeArray++;
 
88188
        if ( !attributeArray )
 
88189
            return false;
 
88190
        const ParserChar* attributeValue = *attributeArray;
 
88191
        attributeArray++;
 
88192
 
 
88193
 
 
88194
    switch ( hash )
 
88195
    {
 
88196
    case HASH_ATTRIBUTE_ENCODING:
 
88197
    {
 
88198
 
 
88199
attributeData->encoding = attributeValue;
 
88200
 
 
88201
    break;
 
88202
    }
 
88203
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
88204
    {
 
88205
bool failed;
 
88206
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
88207
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
88208
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
88209
        HASH_ELEMENT_GCD,
 
88210
        HASH_ATTRIBUTE_DEFINITIONURL,
 
88211
        attributeValue))
 
88212
{
 
88213
    return false;
 
88214
}
 
88215
if ( !failed )
 
88216
    attributeData->present_attributes |= gcd__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
88217
 
 
88218
    break;
 
88219
    }
 
88220
    case HASH_ATTRIBUTE_CLASS:
 
88221
    {
 
88222
bool failed;
 
88223
#ifdef GENERATEDSAXPARSER_VALIDATION
 
88224
    if ( mValidate )
 
88225
    {
 
88226
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_GCD, HASH_ATTRIBUTE_CLASS);
 
88227
    }
 
88228
    else
 
88229
    {
 
88230
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
88231
    }
 
88232
#else
 
88233
    {
 
88234
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
88235
    } // validation
 
88236
#endif
 
88237
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
88238
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
88239
        HASH_ELEMENT_GCD,
 
88240
        HASH_ATTRIBUTE_CLASS,
 
88241
        attributeValue))
 
88242
{
 
88243
    return false;
 
88244
}
 
88245
#ifdef GENERATEDSAXPARSER_VALIDATION
 
88246
    if ( mValidate )
 
88247
    {
 
88248
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
88249
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
88250
    {
 
88251
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
88252
            simpleTypeValidationResult,
 
88253
            HASH_ELEMENT_GCD,
 
88254
            HASH_ATTRIBUTE_CLASS,
 
88255
            attributeValue) )
 
88256
        {
 
88257
            return false;
 
88258
        }
 
88259
    }
 
88260
    } // validation
 
88261
#endif
 
88262
 
 
88263
if ( !failed )
 
88264
    attributeData->present_attributes |= gcd__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
88265
 
 
88266
    break;
 
88267
    }
 
88268
    case HASH_ATTRIBUTE_STYLE:
 
88269
    {
 
88270
 
 
88271
attributeData->style = attributeValue;
 
88272
 
 
88273
    break;
 
88274
    }
 
88275
    case HASH_ATTRIBUTE_XREF:
 
88276
    {
 
88277
 
 
88278
attributeData->xref = attributeValue;
 
88279
 
 
88280
    break;
 
88281
    }
 
88282
    case HASH_ATTRIBUTE_ID:
 
88283
    {
 
88284
 
 
88285
attributeData->id = attributeValue;
 
88286
 
 
88287
    break;
 
88288
    }
 
88289
    case HASH_ATTRIBUTE_HREF:
 
88290
    {
 
88291
bool failed;
 
88292
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
88293
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
88294
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
88295
        HASH_ELEMENT_GCD,
 
88296
        HASH_ATTRIBUTE_HREF,
 
88297
        attributeValue))
 
88298
{
 
88299
    return false;
 
88300
}
 
88301
if ( !failed )
 
88302
    attributeData->present_attributes |= gcd__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
88303
 
 
88304
    break;
 
88305
    }
 
88306
    default:
 
88307
    {
 
88308
        if ( !attributeData->unknownAttributes.data )
 
88309
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
88310
        else
 
88311
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
88312
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
88313
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
88314
        attributeData->unknownAttributes.size += 2;
 
88315
 
 
88316
    }
 
88317
    }
 
88318
    }
 
88319
}
 
88320
if ((attributeData->present_attributes & gcd__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
88321
{
 
88322
    attributeData->definitionURL = COLLADABU::URI("");
 
88323
}
 
88324
if ((attributeData->present_attributes & gcd__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
88325
{
 
88326
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
88327
}
 
88328
if ((attributeData->present_attributes & gcd__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
88329
{
 
88330
    attributeData->href = COLLADABU::URI("");
 
88331
}
 
88332
 
 
88333
 
 
88334
    return true;
 
88335
}
 
88336
 
 
88337
//---------------------------------------------------------------------
 
88338
bool ColladaParserAutoGen15Private::_preEnd__gcd()
 
88339
{
 
88340
#ifdef GENERATEDSAXPARSER_VALIDATION
 
88341
    if ( mValidate )
 
88342
    {
 
88343
 
 
88344
        bool validationResult = _validateEnd__gcd();
 
88345
        if ( !validationResult ) return false;
 
88346
 
 
88347
    } // validation
 
88348
#endif
 
88349
 
 
88350
    return true;
 
88351
}
 
88352
 
 
88353
//---------------------------------------------------------------------
 
88354
bool ColladaParserAutoGen15Private::_freeAttributes__gcd( void* attributeData )
 
88355
{
 
88356
    gcd__AttributeData* typedAttributeData = static_cast<gcd__AttributeData*>(attributeData);
 
88357
    if (typedAttributeData->_class.data)
 
88358
    {
 
88359
        mStackMemoryManager.deleteObject();
 
88360
    }
 
88361
 
 
88362
    if (typedAttributeData->unknownAttributes.data)
 
88363
    {
 
88364
        mStackMemoryManager.deleteObject();
 
88365
    }
 
88366
 
 
88367
 
 
88368
    typedAttributeData->~gcd__AttributeData();
 
88369
 
 
88370
    return true;
 
88371
}
 
88372
 
 
88373
//---------------------------------------------------------------------
 
88374
const lcm__AttributeData lcm__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
88375
 
 
88376
//---------------------------------------------------------------------
 
88377
bool ColladaParserAutoGen15Private::_data__lcm( const ParserChar* text, size_t textLength )
 
88378
{
 
88379
    return true;
 
88380
}
 
88381
 
 
88382
//---------------------------------------------------------------------
 
88383
bool ColladaParserAutoGen15Private::_preBegin__lcm( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
88384
{
 
88385
#ifdef GENERATEDSAXPARSER_VALIDATION
 
88386
    if ( mValidate )
 
88387
    {
 
88388
 
 
88389
        bool validationResult = _validateBegin__lcm( attributes, attributeDataPtr, validationDataPtr );
 
88390
        if ( !validationResult ) return false;
 
88391
 
 
88392
    } // validation
 
88393
#endif
 
88394
 
 
88395
lcm__AttributeData* attributeData = newData<lcm__AttributeData>(attributeDataPtr);
 
88396
 
 
88397
const ParserChar** attributeArray = attributes.attributes;
 
88398
if ( attributeArray )
 
88399
{
 
88400
    while (true)
 
88401
    {
 
88402
        const ParserChar * attribute = *attributeArray;
 
88403
        if ( !attribute )
 
88404
            break;
 
88405
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
88406
        attributeArray++;
 
88407
        if ( !attributeArray )
 
88408
            return false;
 
88409
        const ParserChar* attributeValue = *attributeArray;
 
88410
        attributeArray++;
 
88411
 
 
88412
 
 
88413
    switch ( hash )
 
88414
    {
 
88415
    case HASH_ATTRIBUTE_ENCODING:
 
88416
    {
 
88417
 
 
88418
attributeData->encoding = attributeValue;
 
88419
 
 
88420
    break;
 
88421
    }
 
88422
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
88423
    {
 
88424
bool failed;
 
88425
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
88426
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
88427
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
88428
        HASH_ELEMENT_LCM,
 
88429
        HASH_ATTRIBUTE_DEFINITIONURL,
 
88430
        attributeValue))
 
88431
{
 
88432
    return false;
 
88433
}
 
88434
if ( !failed )
 
88435
    attributeData->present_attributes |= lcm__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
88436
 
 
88437
    break;
 
88438
    }
 
88439
    case HASH_ATTRIBUTE_CLASS:
 
88440
    {
 
88441
bool failed;
 
88442
#ifdef GENERATEDSAXPARSER_VALIDATION
 
88443
    if ( mValidate )
 
88444
    {
 
88445
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_LCM, HASH_ATTRIBUTE_CLASS);
 
88446
    }
 
88447
    else
 
88448
    {
 
88449
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
88450
    }
 
88451
#else
 
88452
    {
 
88453
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
88454
    } // validation
 
88455
#endif
 
88456
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
88457
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
88458
        HASH_ELEMENT_LCM,
 
88459
        HASH_ATTRIBUTE_CLASS,
 
88460
        attributeValue))
 
88461
{
 
88462
    return false;
 
88463
}
 
88464
#ifdef GENERATEDSAXPARSER_VALIDATION
 
88465
    if ( mValidate )
 
88466
    {
 
88467
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
88468
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
88469
    {
 
88470
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
88471
            simpleTypeValidationResult,
 
88472
            HASH_ELEMENT_LCM,
 
88473
            HASH_ATTRIBUTE_CLASS,
 
88474
            attributeValue) )
 
88475
        {
 
88476
            return false;
 
88477
        }
 
88478
    }
 
88479
    } // validation
 
88480
#endif
 
88481
 
 
88482
if ( !failed )
 
88483
    attributeData->present_attributes |= lcm__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
88484
 
 
88485
    break;
 
88486
    }
 
88487
    case HASH_ATTRIBUTE_STYLE:
 
88488
    {
 
88489
 
 
88490
attributeData->style = attributeValue;
 
88491
 
 
88492
    break;
 
88493
    }
 
88494
    case HASH_ATTRIBUTE_XREF:
 
88495
    {
 
88496
 
 
88497
attributeData->xref = attributeValue;
 
88498
 
 
88499
    break;
 
88500
    }
 
88501
    case HASH_ATTRIBUTE_ID:
 
88502
    {
 
88503
 
 
88504
attributeData->id = attributeValue;
 
88505
 
 
88506
    break;
 
88507
    }
 
88508
    case HASH_ATTRIBUTE_HREF:
 
88509
    {
 
88510
bool failed;
 
88511
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
88512
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
88513
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
88514
        HASH_ELEMENT_LCM,
 
88515
        HASH_ATTRIBUTE_HREF,
 
88516
        attributeValue))
 
88517
{
 
88518
    return false;
 
88519
}
 
88520
if ( !failed )
 
88521
    attributeData->present_attributes |= lcm__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
88522
 
 
88523
    break;
 
88524
    }
 
88525
    default:
 
88526
    {
 
88527
        if ( !attributeData->unknownAttributes.data )
 
88528
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
88529
        else
 
88530
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
88531
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
88532
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
88533
        attributeData->unknownAttributes.size += 2;
 
88534
 
 
88535
    }
 
88536
    }
 
88537
    }
 
88538
}
 
88539
if ((attributeData->present_attributes & lcm__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
88540
{
 
88541
    attributeData->definitionURL = COLLADABU::URI("");
 
88542
}
 
88543
if ((attributeData->present_attributes & lcm__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
88544
{
 
88545
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
88546
}
 
88547
if ((attributeData->present_attributes & lcm__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
88548
{
 
88549
    attributeData->href = COLLADABU::URI("");
 
88550
}
 
88551
 
 
88552
 
 
88553
    return true;
 
88554
}
 
88555
 
 
88556
//---------------------------------------------------------------------
 
88557
bool ColladaParserAutoGen15Private::_preEnd__lcm()
 
88558
{
 
88559
#ifdef GENERATEDSAXPARSER_VALIDATION
 
88560
    if ( mValidate )
 
88561
    {
 
88562
 
 
88563
        bool validationResult = _validateEnd__lcm();
 
88564
        if ( !validationResult ) return false;
 
88565
 
 
88566
    } // validation
 
88567
#endif
 
88568
 
 
88569
    return true;
 
88570
}
 
88571
 
 
88572
//---------------------------------------------------------------------
 
88573
bool ColladaParserAutoGen15Private::_freeAttributes__lcm( void* attributeData )
 
88574
{
 
88575
    lcm__AttributeData* typedAttributeData = static_cast<lcm__AttributeData*>(attributeData);
 
88576
    if (typedAttributeData->_class.data)
 
88577
    {
 
88578
        mStackMemoryManager.deleteObject();
 
88579
    }
 
88580
 
 
88581
    if (typedAttributeData->unknownAttributes.data)
 
88582
    {
 
88583
        mStackMemoryManager.deleteObject();
 
88584
    }
 
88585
 
 
88586
 
 
88587
    typedAttributeData->~lcm__AttributeData();
 
88588
 
 
88589
    return true;
 
88590
}
 
88591
 
 
88592
//---------------------------------------------------------------------
 
88593
const sum__AttributeData sum__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
88594
 
 
88595
//---------------------------------------------------------------------
 
88596
bool ColladaParserAutoGen15Private::_data__sum( const ParserChar* text, size_t textLength )
 
88597
{
 
88598
    return true;
 
88599
}
 
88600
 
 
88601
//---------------------------------------------------------------------
 
88602
bool ColladaParserAutoGen15Private::_preBegin__sum( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
88603
{
 
88604
#ifdef GENERATEDSAXPARSER_VALIDATION
 
88605
    if ( mValidate )
 
88606
    {
 
88607
 
 
88608
        bool validationResult = _validateBegin__sum( attributes, attributeDataPtr, validationDataPtr );
 
88609
        if ( !validationResult ) return false;
 
88610
 
 
88611
    } // validation
 
88612
#endif
 
88613
 
 
88614
sum__AttributeData* attributeData = newData<sum__AttributeData>(attributeDataPtr);
 
88615
 
 
88616
const ParserChar** attributeArray = attributes.attributes;
 
88617
if ( attributeArray )
 
88618
{
 
88619
    while (true)
 
88620
    {
 
88621
        const ParserChar * attribute = *attributeArray;
 
88622
        if ( !attribute )
 
88623
            break;
 
88624
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
88625
        attributeArray++;
 
88626
        if ( !attributeArray )
 
88627
            return false;
 
88628
        const ParserChar* attributeValue = *attributeArray;
 
88629
        attributeArray++;
 
88630
 
 
88631
 
 
88632
    switch ( hash )
 
88633
    {
 
88634
    case HASH_ATTRIBUTE_ENCODING:
 
88635
    {
 
88636
 
 
88637
attributeData->encoding = attributeValue;
 
88638
 
 
88639
    break;
 
88640
    }
 
88641
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
88642
    {
 
88643
bool failed;
 
88644
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
88645
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
88646
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
88647
        HASH_ELEMENT_SUM,
 
88648
        HASH_ATTRIBUTE_DEFINITIONURL,
 
88649
        attributeValue))
 
88650
{
 
88651
    return false;
 
88652
}
 
88653
if ( !failed )
 
88654
    attributeData->present_attributes |= sum__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
88655
 
 
88656
    break;
 
88657
    }
 
88658
    case HASH_ATTRIBUTE_CLASS:
 
88659
    {
 
88660
bool failed;
 
88661
#ifdef GENERATEDSAXPARSER_VALIDATION
 
88662
    if ( mValidate )
 
88663
    {
 
88664
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_SUM, HASH_ATTRIBUTE_CLASS);
 
88665
    }
 
88666
    else
 
88667
    {
 
88668
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
88669
    }
 
88670
#else
 
88671
    {
 
88672
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
88673
    } // validation
 
88674
#endif
 
88675
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
88676
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
88677
        HASH_ELEMENT_SUM,
 
88678
        HASH_ATTRIBUTE_CLASS,
 
88679
        attributeValue))
 
88680
{
 
88681
    return false;
 
88682
}
 
88683
#ifdef GENERATEDSAXPARSER_VALIDATION
 
88684
    if ( mValidate )
 
88685
    {
 
88686
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
88687
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
88688
    {
 
88689
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
88690
            simpleTypeValidationResult,
 
88691
            HASH_ELEMENT_SUM,
 
88692
            HASH_ATTRIBUTE_CLASS,
 
88693
            attributeValue) )
 
88694
        {
 
88695
            return false;
 
88696
        }
 
88697
    }
 
88698
    } // validation
 
88699
#endif
 
88700
 
 
88701
if ( !failed )
 
88702
    attributeData->present_attributes |= sum__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
88703
 
 
88704
    break;
 
88705
    }
 
88706
    case HASH_ATTRIBUTE_STYLE:
 
88707
    {
 
88708
 
 
88709
attributeData->style = attributeValue;
 
88710
 
 
88711
    break;
 
88712
    }
 
88713
    case HASH_ATTRIBUTE_XREF:
 
88714
    {
 
88715
 
 
88716
attributeData->xref = attributeValue;
 
88717
 
 
88718
    break;
 
88719
    }
 
88720
    case HASH_ATTRIBUTE_ID:
 
88721
    {
 
88722
 
 
88723
attributeData->id = attributeValue;
 
88724
 
 
88725
    break;
 
88726
    }
 
88727
    case HASH_ATTRIBUTE_HREF:
 
88728
    {
 
88729
bool failed;
 
88730
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
88731
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
88732
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
88733
        HASH_ELEMENT_SUM,
 
88734
        HASH_ATTRIBUTE_HREF,
 
88735
        attributeValue))
 
88736
{
 
88737
    return false;
 
88738
}
 
88739
if ( !failed )
 
88740
    attributeData->present_attributes |= sum__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
88741
 
 
88742
    break;
 
88743
    }
 
88744
    default:
 
88745
    {
 
88746
        if ( !attributeData->unknownAttributes.data )
 
88747
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
88748
        else
 
88749
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
88750
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
88751
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
88752
        attributeData->unknownAttributes.size += 2;
 
88753
 
 
88754
    }
 
88755
    }
 
88756
    }
 
88757
}
 
88758
if ((attributeData->present_attributes & sum__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
88759
{
 
88760
    attributeData->definitionURL = COLLADABU::URI("");
 
88761
}
 
88762
if ((attributeData->present_attributes & sum__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
88763
{
 
88764
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
88765
}
 
88766
if ((attributeData->present_attributes & sum__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
88767
{
 
88768
    attributeData->href = COLLADABU::URI("");
 
88769
}
 
88770
 
 
88771
 
 
88772
    return true;
 
88773
}
 
88774
 
 
88775
//---------------------------------------------------------------------
 
88776
bool ColladaParserAutoGen15Private::_preEnd__sum()
 
88777
{
 
88778
#ifdef GENERATEDSAXPARSER_VALIDATION
 
88779
    if ( mValidate )
 
88780
    {
 
88781
 
 
88782
        bool validationResult = _validateEnd__sum();
 
88783
        if ( !validationResult ) return false;
 
88784
 
 
88785
    } // validation
 
88786
#endif
 
88787
 
 
88788
    return true;
 
88789
}
 
88790
 
 
88791
//---------------------------------------------------------------------
 
88792
bool ColladaParserAutoGen15Private::_freeAttributes__sum( void* attributeData )
 
88793
{
 
88794
    sum__AttributeData* typedAttributeData = static_cast<sum__AttributeData*>(attributeData);
 
88795
    if (typedAttributeData->_class.data)
 
88796
    {
 
88797
        mStackMemoryManager.deleteObject();
 
88798
    }
 
88799
 
 
88800
    if (typedAttributeData->unknownAttributes.data)
 
88801
    {
 
88802
        mStackMemoryManager.deleteObject();
 
88803
    }
 
88804
 
 
88805
 
 
88806
    typedAttributeData->~sum__AttributeData();
 
88807
 
 
88808
    return true;
 
88809
}
 
88810
 
 
88811
//---------------------------------------------------------------------
 
88812
const product__AttributeData product__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
88813
 
 
88814
//---------------------------------------------------------------------
 
88815
bool ColladaParserAutoGen15Private::_data__product( const ParserChar* text, size_t textLength )
 
88816
{
 
88817
    return true;
 
88818
}
 
88819
 
 
88820
//---------------------------------------------------------------------
 
88821
bool ColladaParserAutoGen15Private::_preBegin__product( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
88822
{
 
88823
#ifdef GENERATEDSAXPARSER_VALIDATION
 
88824
    if ( mValidate )
 
88825
    {
 
88826
 
 
88827
        bool validationResult = _validateBegin__product( attributes, attributeDataPtr, validationDataPtr );
 
88828
        if ( !validationResult ) return false;
 
88829
 
 
88830
    } // validation
 
88831
#endif
 
88832
 
 
88833
product__AttributeData* attributeData = newData<product__AttributeData>(attributeDataPtr);
 
88834
 
 
88835
const ParserChar** attributeArray = attributes.attributes;
 
88836
if ( attributeArray )
 
88837
{
 
88838
    while (true)
 
88839
    {
 
88840
        const ParserChar * attribute = *attributeArray;
 
88841
        if ( !attribute )
 
88842
            break;
 
88843
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
88844
        attributeArray++;
 
88845
        if ( !attributeArray )
 
88846
            return false;
 
88847
        const ParserChar* attributeValue = *attributeArray;
 
88848
        attributeArray++;
 
88849
 
 
88850
 
 
88851
    switch ( hash )
 
88852
    {
 
88853
    case HASH_ATTRIBUTE_ENCODING:
 
88854
    {
 
88855
 
 
88856
attributeData->encoding = attributeValue;
 
88857
 
 
88858
    break;
 
88859
    }
 
88860
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
88861
    {
 
88862
bool failed;
 
88863
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
88864
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
88865
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
88866
        HASH_ELEMENT_PRODUCT,
 
88867
        HASH_ATTRIBUTE_DEFINITIONURL,
 
88868
        attributeValue))
 
88869
{
 
88870
    return false;
 
88871
}
 
88872
if ( !failed )
 
88873
    attributeData->present_attributes |= product__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
88874
 
 
88875
    break;
 
88876
    }
 
88877
    case HASH_ATTRIBUTE_CLASS:
 
88878
    {
 
88879
bool failed;
 
88880
#ifdef GENERATEDSAXPARSER_VALIDATION
 
88881
    if ( mValidate )
 
88882
    {
 
88883
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_PRODUCT, HASH_ATTRIBUTE_CLASS);
 
88884
    }
 
88885
    else
 
88886
    {
 
88887
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
88888
    }
 
88889
#else
 
88890
    {
 
88891
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
88892
    } // validation
 
88893
#endif
 
88894
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
88895
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
88896
        HASH_ELEMENT_PRODUCT,
 
88897
        HASH_ATTRIBUTE_CLASS,
 
88898
        attributeValue))
 
88899
{
 
88900
    return false;
 
88901
}
 
88902
#ifdef GENERATEDSAXPARSER_VALIDATION
 
88903
    if ( mValidate )
 
88904
    {
 
88905
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
88906
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
88907
    {
 
88908
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
88909
            simpleTypeValidationResult,
 
88910
            HASH_ELEMENT_PRODUCT,
 
88911
            HASH_ATTRIBUTE_CLASS,
 
88912
            attributeValue) )
 
88913
        {
 
88914
            return false;
 
88915
        }
 
88916
    }
 
88917
    } // validation
 
88918
#endif
 
88919
 
 
88920
if ( !failed )
 
88921
    attributeData->present_attributes |= product__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
88922
 
 
88923
    break;
 
88924
    }
 
88925
    case HASH_ATTRIBUTE_STYLE:
 
88926
    {
 
88927
 
 
88928
attributeData->style = attributeValue;
 
88929
 
 
88930
    break;
 
88931
    }
 
88932
    case HASH_ATTRIBUTE_XREF:
 
88933
    {
 
88934
 
 
88935
attributeData->xref = attributeValue;
 
88936
 
 
88937
    break;
 
88938
    }
 
88939
    case HASH_ATTRIBUTE_ID:
 
88940
    {
 
88941
 
 
88942
attributeData->id = attributeValue;
 
88943
 
 
88944
    break;
 
88945
    }
 
88946
    case HASH_ATTRIBUTE_HREF:
 
88947
    {
 
88948
bool failed;
 
88949
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
88950
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
88951
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
88952
        HASH_ELEMENT_PRODUCT,
 
88953
        HASH_ATTRIBUTE_HREF,
 
88954
        attributeValue))
 
88955
{
 
88956
    return false;
 
88957
}
 
88958
if ( !failed )
 
88959
    attributeData->present_attributes |= product__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
88960
 
 
88961
    break;
 
88962
    }
 
88963
    default:
 
88964
    {
 
88965
        if ( !attributeData->unknownAttributes.data )
 
88966
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
88967
        else
 
88968
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
88969
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
88970
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
88971
        attributeData->unknownAttributes.size += 2;
 
88972
 
 
88973
    }
 
88974
    }
 
88975
    }
 
88976
}
 
88977
if ((attributeData->present_attributes & product__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
88978
{
 
88979
    attributeData->definitionURL = COLLADABU::URI("");
 
88980
}
 
88981
if ((attributeData->present_attributes & product__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
88982
{
 
88983
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
88984
}
 
88985
if ((attributeData->present_attributes & product__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
88986
{
 
88987
    attributeData->href = COLLADABU::URI("");
 
88988
}
 
88989
 
 
88990
 
 
88991
    return true;
 
88992
}
 
88993
 
 
88994
//---------------------------------------------------------------------
 
88995
bool ColladaParserAutoGen15Private::_preEnd__product()
 
88996
{
 
88997
#ifdef GENERATEDSAXPARSER_VALIDATION
 
88998
    if ( mValidate )
 
88999
    {
 
89000
 
 
89001
        bool validationResult = _validateEnd__product();
 
89002
        if ( !validationResult ) return false;
 
89003
 
 
89004
    } // validation
 
89005
#endif
 
89006
 
 
89007
    return true;
 
89008
}
 
89009
 
 
89010
//---------------------------------------------------------------------
 
89011
bool ColladaParserAutoGen15Private::_freeAttributes__product( void* attributeData )
 
89012
{
 
89013
    product__AttributeData* typedAttributeData = static_cast<product__AttributeData*>(attributeData);
 
89014
    if (typedAttributeData->_class.data)
 
89015
    {
 
89016
        mStackMemoryManager.deleteObject();
 
89017
    }
 
89018
 
 
89019
    if (typedAttributeData->unknownAttributes.data)
 
89020
    {
 
89021
        mStackMemoryManager.deleteObject();
 
89022
    }
 
89023
 
 
89024
 
 
89025
    typedAttributeData->~product__AttributeData();
 
89026
 
 
89027
    return true;
 
89028
}
 
89029
 
 
89030
//---------------------------------------------------------------------
 
89031
const compose__AttributeData compose__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
89032
 
 
89033
//---------------------------------------------------------------------
 
89034
bool ColladaParserAutoGen15Private::_data__compose( const ParserChar* text, size_t textLength )
 
89035
{
 
89036
    return true;
 
89037
}
 
89038
 
 
89039
//---------------------------------------------------------------------
 
89040
bool ColladaParserAutoGen15Private::_preBegin__compose( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
89041
{
 
89042
#ifdef GENERATEDSAXPARSER_VALIDATION
 
89043
    if ( mValidate )
 
89044
    {
 
89045
 
 
89046
        bool validationResult = _validateBegin__compose( attributes, attributeDataPtr, validationDataPtr );
 
89047
        if ( !validationResult ) return false;
 
89048
 
 
89049
    } // validation
 
89050
#endif
 
89051
 
 
89052
compose__AttributeData* attributeData = newData<compose__AttributeData>(attributeDataPtr);
 
89053
 
 
89054
const ParserChar** attributeArray = attributes.attributes;
 
89055
if ( attributeArray )
 
89056
{
 
89057
    while (true)
 
89058
    {
 
89059
        const ParserChar * attribute = *attributeArray;
 
89060
        if ( !attribute )
 
89061
            break;
 
89062
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
89063
        attributeArray++;
 
89064
        if ( !attributeArray )
 
89065
            return false;
 
89066
        const ParserChar* attributeValue = *attributeArray;
 
89067
        attributeArray++;
 
89068
 
 
89069
 
 
89070
    switch ( hash )
 
89071
    {
 
89072
    case HASH_ATTRIBUTE_ENCODING:
 
89073
    {
 
89074
 
 
89075
attributeData->encoding = attributeValue;
 
89076
 
 
89077
    break;
 
89078
    }
 
89079
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
89080
    {
 
89081
bool failed;
 
89082
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
89083
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
89084
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
89085
        HASH_ELEMENT_COMPOSE,
 
89086
        HASH_ATTRIBUTE_DEFINITIONURL,
 
89087
        attributeValue))
 
89088
{
 
89089
    return false;
 
89090
}
 
89091
if ( !failed )
 
89092
    attributeData->present_attributes |= compose__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
89093
 
 
89094
    break;
 
89095
    }
 
89096
    case HASH_ATTRIBUTE_CLASS:
 
89097
    {
 
89098
bool failed;
 
89099
#ifdef GENERATEDSAXPARSER_VALIDATION
 
89100
    if ( mValidate )
 
89101
    {
 
89102
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_COMPOSE, HASH_ATTRIBUTE_CLASS);
 
89103
    }
 
89104
    else
 
89105
    {
 
89106
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
89107
    }
 
89108
#else
 
89109
    {
 
89110
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
89111
    } // validation
 
89112
#endif
 
89113
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
89114
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
89115
        HASH_ELEMENT_COMPOSE,
 
89116
        HASH_ATTRIBUTE_CLASS,
 
89117
        attributeValue))
 
89118
{
 
89119
    return false;
 
89120
}
 
89121
#ifdef GENERATEDSAXPARSER_VALIDATION
 
89122
    if ( mValidate )
 
89123
    {
 
89124
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
89125
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
89126
    {
 
89127
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
89128
            simpleTypeValidationResult,
 
89129
            HASH_ELEMENT_COMPOSE,
 
89130
            HASH_ATTRIBUTE_CLASS,
 
89131
            attributeValue) )
 
89132
        {
 
89133
            return false;
 
89134
        }
 
89135
    }
 
89136
    } // validation
 
89137
#endif
 
89138
 
 
89139
if ( !failed )
 
89140
    attributeData->present_attributes |= compose__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
89141
 
 
89142
    break;
 
89143
    }
 
89144
    case HASH_ATTRIBUTE_STYLE:
 
89145
    {
 
89146
 
 
89147
attributeData->style = attributeValue;
 
89148
 
 
89149
    break;
 
89150
    }
 
89151
    case HASH_ATTRIBUTE_XREF:
 
89152
    {
 
89153
 
 
89154
attributeData->xref = attributeValue;
 
89155
 
 
89156
    break;
 
89157
    }
 
89158
    case HASH_ATTRIBUTE_ID:
 
89159
    {
 
89160
 
 
89161
attributeData->id = attributeValue;
 
89162
 
 
89163
    break;
 
89164
    }
 
89165
    case HASH_ATTRIBUTE_HREF:
 
89166
    {
 
89167
bool failed;
 
89168
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
89169
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
89170
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
89171
        HASH_ELEMENT_COMPOSE,
 
89172
        HASH_ATTRIBUTE_HREF,
 
89173
        attributeValue))
 
89174
{
 
89175
    return false;
 
89176
}
 
89177
if ( !failed )
 
89178
    attributeData->present_attributes |= compose__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
89179
 
 
89180
    break;
 
89181
    }
 
89182
    default:
 
89183
    {
 
89184
        if ( !attributeData->unknownAttributes.data )
 
89185
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
89186
        else
 
89187
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
89188
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
89189
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
89190
        attributeData->unknownAttributes.size += 2;
 
89191
 
 
89192
    }
 
89193
    }
 
89194
    }
 
89195
}
 
89196
if ((attributeData->present_attributes & compose__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
89197
{
 
89198
    attributeData->definitionURL = COLLADABU::URI("");
 
89199
}
 
89200
if ((attributeData->present_attributes & compose__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
89201
{
 
89202
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
89203
}
 
89204
if ((attributeData->present_attributes & compose__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
89205
{
 
89206
    attributeData->href = COLLADABU::URI("");
 
89207
}
 
89208
 
 
89209
 
 
89210
    return true;
 
89211
}
 
89212
 
 
89213
//---------------------------------------------------------------------
 
89214
bool ColladaParserAutoGen15Private::_preEnd__compose()
 
89215
{
 
89216
#ifdef GENERATEDSAXPARSER_VALIDATION
 
89217
    if ( mValidate )
 
89218
    {
 
89219
 
 
89220
        bool validationResult = _validateEnd__compose();
 
89221
        if ( !validationResult ) return false;
 
89222
 
 
89223
    } // validation
 
89224
#endif
 
89225
 
 
89226
    return true;
 
89227
}
 
89228
 
 
89229
//---------------------------------------------------------------------
 
89230
bool ColladaParserAutoGen15Private::_freeAttributes__compose( void* attributeData )
 
89231
{
 
89232
    compose__AttributeData* typedAttributeData = static_cast<compose__AttributeData*>(attributeData);
 
89233
    if (typedAttributeData->_class.data)
 
89234
    {
 
89235
        mStackMemoryManager.deleteObject();
 
89236
    }
 
89237
 
 
89238
    if (typedAttributeData->unknownAttributes.data)
 
89239
    {
 
89240
        mStackMemoryManager.deleteObject();
 
89241
    }
 
89242
 
 
89243
 
 
89244
    typedAttributeData->~compose__AttributeData();
 
89245
 
 
89246
    return true;
 
89247
}
 
89248
 
 
89249
//---------------------------------------------------------------------
 
89250
const domain__AttributeData domain__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
89251
 
 
89252
//---------------------------------------------------------------------
 
89253
bool ColladaParserAutoGen15Private::_data__domain( const ParserChar* text, size_t textLength )
 
89254
{
 
89255
    return true;
 
89256
}
 
89257
 
 
89258
//---------------------------------------------------------------------
 
89259
bool ColladaParserAutoGen15Private::_preBegin__domain( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
89260
{
 
89261
#ifdef GENERATEDSAXPARSER_VALIDATION
 
89262
    if ( mValidate )
 
89263
    {
 
89264
 
 
89265
        bool validationResult = _validateBegin__domain( attributes, attributeDataPtr, validationDataPtr );
 
89266
        if ( !validationResult ) return false;
 
89267
 
 
89268
    } // validation
 
89269
#endif
 
89270
 
 
89271
domain__AttributeData* attributeData = newData<domain__AttributeData>(attributeDataPtr);
 
89272
 
 
89273
const ParserChar** attributeArray = attributes.attributes;
 
89274
if ( attributeArray )
 
89275
{
 
89276
    while (true)
 
89277
    {
 
89278
        const ParserChar * attribute = *attributeArray;
 
89279
        if ( !attribute )
 
89280
            break;
 
89281
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
89282
        attributeArray++;
 
89283
        if ( !attributeArray )
 
89284
            return false;
 
89285
        const ParserChar* attributeValue = *attributeArray;
 
89286
        attributeArray++;
 
89287
 
 
89288
 
 
89289
    switch ( hash )
 
89290
    {
 
89291
    case HASH_ATTRIBUTE_ENCODING:
 
89292
    {
 
89293
 
 
89294
attributeData->encoding = attributeValue;
 
89295
 
 
89296
    break;
 
89297
    }
 
89298
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
89299
    {
 
89300
bool failed;
 
89301
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
89302
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
89303
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
89304
        HASH_ELEMENT_DOMAIN,
 
89305
        HASH_ATTRIBUTE_DEFINITIONURL,
 
89306
        attributeValue))
 
89307
{
 
89308
    return false;
 
89309
}
 
89310
if ( !failed )
 
89311
    attributeData->present_attributes |= domain__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
89312
 
 
89313
    break;
 
89314
    }
 
89315
    case HASH_ATTRIBUTE_CLASS:
 
89316
    {
 
89317
bool failed;
 
89318
#ifdef GENERATEDSAXPARSER_VALIDATION
 
89319
    if ( mValidate )
 
89320
    {
 
89321
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_DOMAIN, HASH_ATTRIBUTE_CLASS);
 
89322
    }
 
89323
    else
 
89324
    {
 
89325
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
89326
    }
 
89327
#else
 
89328
    {
 
89329
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
89330
    } // validation
 
89331
#endif
 
89332
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
89333
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
89334
        HASH_ELEMENT_DOMAIN,
 
89335
        HASH_ATTRIBUTE_CLASS,
 
89336
        attributeValue))
 
89337
{
 
89338
    return false;
 
89339
}
 
89340
#ifdef GENERATEDSAXPARSER_VALIDATION
 
89341
    if ( mValidate )
 
89342
    {
 
89343
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
89344
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
89345
    {
 
89346
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
89347
            simpleTypeValidationResult,
 
89348
            HASH_ELEMENT_DOMAIN,
 
89349
            HASH_ATTRIBUTE_CLASS,
 
89350
            attributeValue) )
 
89351
        {
 
89352
            return false;
 
89353
        }
 
89354
    }
 
89355
    } // validation
 
89356
#endif
 
89357
 
 
89358
if ( !failed )
 
89359
    attributeData->present_attributes |= domain__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
89360
 
 
89361
    break;
 
89362
    }
 
89363
    case HASH_ATTRIBUTE_STYLE:
 
89364
    {
 
89365
 
 
89366
attributeData->style = attributeValue;
 
89367
 
 
89368
    break;
 
89369
    }
 
89370
    case HASH_ATTRIBUTE_XREF:
 
89371
    {
 
89372
 
 
89373
attributeData->xref = attributeValue;
 
89374
 
 
89375
    break;
 
89376
    }
 
89377
    case HASH_ATTRIBUTE_ID:
 
89378
    {
 
89379
 
 
89380
attributeData->id = attributeValue;
 
89381
 
 
89382
    break;
 
89383
    }
 
89384
    case HASH_ATTRIBUTE_HREF:
 
89385
    {
 
89386
bool failed;
 
89387
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
89388
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
89389
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
89390
        HASH_ELEMENT_DOMAIN,
 
89391
        HASH_ATTRIBUTE_HREF,
 
89392
        attributeValue))
 
89393
{
 
89394
    return false;
 
89395
}
 
89396
if ( !failed )
 
89397
    attributeData->present_attributes |= domain__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
89398
 
 
89399
    break;
 
89400
    }
 
89401
    default:
 
89402
    {
 
89403
        if ( !attributeData->unknownAttributes.data )
 
89404
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
89405
        else
 
89406
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
89407
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
89408
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
89409
        attributeData->unknownAttributes.size += 2;
 
89410
 
 
89411
    }
 
89412
    }
 
89413
    }
 
89414
}
 
89415
if ((attributeData->present_attributes & domain__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
89416
{
 
89417
    attributeData->definitionURL = COLLADABU::URI("");
 
89418
}
 
89419
if ((attributeData->present_attributes & domain__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
89420
{
 
89421
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
89422
}
 
89423
if ((attributeData->present_attributes & domain__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
89424
{
 
89425
    attributeData->href = COLLADABU::URI("");
 
89426
}
 
89427
 
 
89428
 
 
89429
    return true;
 
89430
}
 
89431
 
 
89432
//---------------------------------------------------------------------
 
89433
bool ColladaParserAutoGen15Private::_preEnd__domain()
 
89434
{
 
89435
#ifdef GENERATEDSAXPARSER_VALIDATION
 
89436
    if ( mValidate )
 
89437
    {
 
89438
 
 
89439
        bool validationResult = _validateEnd__domain();
 
89440
        if ( !validationResult ) return false;
 
89441
 
 
89442
    } // validation
 
89443
#endif
 
89444
 
 
89445
    return true;
 
89446
}
 
89447
 
 
89448
//---------------------------------------------------------------------
 
89449
bool ColladaParserAutoGen15Private::_freeAttributes__domain( void* attributeData )
 
89450
{
 
89451
    domain__AttributeData* typedAttributeData = static_cast<domain__AttributeData*>(attributeData);
 
89452
    if (typedAttributeData->_class.data)
 
89453
    {
 
89454
        mStackMemoryManager.deleteObject();
 
89455
    }
 
89456
 
 
89457
    if (typedAttributeData->unknownAttributes.data)
 
89458
    {
 
89459
        mStackMemoryManager.deleteObject();
 
89460
    }
 
89461
 
 
89462
 
 
89463
    typedAttributeData->~domain__AttributeData();
 
89464
 
 
89465
    return true;
 
89466
}
 
89467
 
 
89468
//---------------------------------------------------------------------
 
89469
const codomain__AttributeData codomain__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
89470
 
 
89471
//---------------------------------------------------------------------
 
89472
bool ColladaParserAutoGen15Private::_data__codomain( const ParserChar* text, size_t textLength )
 
89473
{
 
89474
    return true;
 
89475
}
 
89476
 
 
89477
//---------------------------------------------------------------------
 
89478
bool ColladaParserAutoGen15Private::_preBegin__codomain( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
89479
{
 
89480
#ifdef GENERATEDSAXPARSER_VALIDATION
 
89481
    if ( mValidate )
 
89482
    {
 
89483
 
 
89484
        bool validationResult = _validateBegin__codomain( attributes, attributeDataPtr, validationDataPtr );
 
89485
        if ( !validationResult ) return false;
 
89486
 
 
89487
    } // validation
 
89488
#endif
 
89489
 
 
89490
codomain__AttributeData* attributeData = newData<codomain__AttributeData>(attributeDataPtr);
 
89491
 
 
89492
const ParserChar** attributeArray = attributes.attributes;
 
89493
if ( attributeArray )
 
89494
{
 
89495
    while (true)
 
89496
    {
 
89497
        const ParserChar * attribute = *attributeArray;
 
89498
        if ( !attribute )
 
89499
            break;
 
89500
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
89501
        attributeArray++;
 
89502
        if ( !attributeArray )
 
89503
            return false;
 
89504
        const ParserChar* attributeValue = *attributeArray;
 
89505
        attributeArray++;
 
89506
 
 
89507
 
 
89508
    switch ( hash )
 
89509
    {
 
89510
    case HASH_ATTRIBUTE_ENCODING:
 
89511
    {
 
89512
 
 
89513
attributeData->encoding = attributeValue;
 
89514
 
 
89515
    break;
 
89516
    }
 
89517
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
89518
    {
 
89519
bool failed;
 
89520
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
89521
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
89522
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
89523
        HASH_ELEMENT_CODOMAIN,
 
89524
        HASH_ATTRIBUTE_DEFINITIONURL,
 
89525
        attributeValue))
 
89526
{
 
89527
    return false;
 
89528
}
 
89529
if ( !failed )
 
89530
    attributeData->present_attributes |= codomain__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
89531
 
 
89532
    break;
 
89533
    }
 
89534
    case HASH_ATTRIBUTE_CLASS:
 
89535
    {
 
89536
bool failed;
 
89537
#ifdef GENERATEDSAXPARSER_VALIDATION
 
89538
    if ( mValidate )
 
89539
    {
 
89540
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_CODOMAIN, HASH_ATTRIBUTE_CLASS);
 
89541
    }
 
89542
    else
 
89543
    {
 
89544
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
89545
    }
 
89546
#else
 
89547
    {
 
89548
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
89549
    } // validation
 
89550
#endif
 
89551
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
89552
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
89553
        HASH_ELEMENT_CODOMAIN,
 
89554
        HASH_ATTRIBUTE_CLASS,
 
89555
        attributeValue))
 
89556
{
 
89557
    return false;
 
89558
}
 
89559
#ifdef GENERATEDSAXPARSER_VALIDATION
 
89560
    if ( mValidate )
 
89561
    {
 
89562
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
89563
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
89564
    {
 
89565
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
89566
            simpleTypeValidationResult,
 
89567
            HASH_ELEMENT_CODOMAIN,
 
89568
            HASH_ATTRIBUTE_CLASS,
 
89569
            attributeValue) )
 
89570
        {
 
89571
            return false;
 
89572
        }
 
89573
    }
 
89574
    } // validation
 
89575
#endif
 
89576
 
 
89577
if ( !failed )
 
89578
    attributeData->present_attributes |= codomain__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
89579
 
 
89580
    break;
 
89581
    }
 
89582
    case HASH_ATTRIBUTE_STYLE:
 
89583
    {
 
89584
 
 
89585
attributeData->style = attributeValue;
 
89586
 
 
89587
    break;
 
89588
    }
 
89589
    case HASH_ATTRIBUTE_XREF:
 
89590
    {
 
89591
 
 
89592
attributeData->xref = attributeValue;
 
89593
 
 
89594
    break;
 
89595
    }
 
89596
    case HASH_ATTRIBUTE_ID:
 
89597
    {
 
89598
 
 
89599
attributeData->id = attributeValue;
 
89600
 
 
89601
    break;
 
89602
    }
 
89603
    case HASH_ATTRIBUTE_HREF:
 
89604
    {
 
89605
bool failed;
 
89606
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
89607
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
89608
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
89609
        HASH_ELEMENT_CODOMAIN,
 
89610
        HASH_ATTRIBUTE_HREF,
 
89611
        attributeValue))
 
89612
{
 
89613
    return false;
 
89614
}
 
89615
if ( !failed )
 
89616
    attributeData->present_attributes |= codomain__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
89617
 
 
89618
    break;
 
89619
    }
 
89620
    default:
 
89621
    {
 
89622
        if ( !attributeData->unknownAttributes.data )
 
89623
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
89624
        else
 
89625
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
89626
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
89627
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
89628
        attributeData->unknownAttributes.size += 2;
 
89629
 
 
89630
    }
 
89631
    }
 
89632
    }
 
89633
}
 
89634
if ((attributeData->present_attributes & codomain__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
89635
{
 
89636
    attributeData->definitionURL = COLLADABU::URI("");
 
89637
}
 
89638
if ((attributeData->present_attributes & codomain__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
89639
{
 
89640
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
89641
}
 
89642
if ((attributeData->present_attributes & codomain__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
89643
{
 
89644
    attributeData->href = COLLADABU::URI("");
 
89645
}
 
89646
 
 
89647
 
 
89648
    return true;
 
89649
}
 
89650
 
 
89651
//---------------------------------------------------------------------
 
89652
bool ColladaParserAutoGen15Private::_preEnd__codomain()
 
89653
{
 
89654
#ifdef GENERATEDSAXPARSER_VALIDATION
 
89655
    if ( mValidate )
 
89656
    {
 
89657
 
 
89658
        bool validationResult = _validateEnd__codomain();
 
89659
        if ( !validationResult ) return false;
 
89660
 
 
89661
    } // validation
 
89662
#endif
 
89663
 
 
89664
    return true;
 
89665
}
 
89666
 
 
89667
//---------------------------------------------------------------------
 
89668
bool ColladaParserAutoGen15Private::_freeAttributes__codomain( void* attributeData )
 
89669
{
 
89670
    codomain__AttributeData* typedAttributeData = static_cast<codomain__AttributeData*>(attributeData);
 
89671
    if (typedAttributeData->_class.data)
 
89672
    {
 
89673
        mStackMemoryManager.deleteObject();
 
89674
    }
 
89675
 
 
89676
    if (typedAttributeData->unknownAttributes.data)
 
89677
    {
 
89678
        mStackMemoryManager.deleteObject();
 
89679
    }
 
89680
 
 
89681
 
 
89682
    typedAttributeData->~codomain__AttributeData();
 
89683
 
 
89684
    return true;
 
89685
}
 
89686
 
 
89687
//---------------------------------------------------------------------
 
89688
bool ColladaParserAutoGen15Private::_data__image____Functions_type( const ParserChar* text, size_t textLength )
 
89689
{
 
89690
    return true;
 
89691
}
 
89692
 
 
89693
//---------------------------------------------------------------------
 
89694
bool ColladaParserAutoGen15Private::_preBegin__image____Functions_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
89695
{
 
89696
#ifdef GENERATEDSAXPARSER_VALIDATION
 
89697
    if ( mValidate )
 
89698
    {
 
89699
 
 
89700
        bool validationResult = _validateBegin__image____Functions_type( attributes, attributeDataPtr, validationDataPtr );
 
89701
        if ( !validationResult ) return false;
 
89702
 
 
89703
    } // validation
 
89704
#endif
 
89705
 
 
89706
image____Functions_type__AttributeData* attributeData = newData<image____Functions_type__AttributeData>(attributeDataPtr);
 
89707
 
 
89708
const ParserChar** attributeArray = attributes.attributes;
 
89709
if ( attributeArray )
 
89710
{
 
89711
    while (true)
 
89712
    {
 
89713
        const ParserChar * attribute = *attributeArray;
 
89714
        if ( !attribute )
 
89715
            break;
 
89716
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
89717
        attributeArray++;
 
89718
        if ( !attributeArray )
 
89719
            return false;
 
89720
        const ParserChar* attributeValue = *attributeArray;
 
89721
        attributeArray++;
 
89722
 
 
89723
 
 
89724
    switch ( hash )
 
89725
    {
 
89726
    case HASH_ATTRIBUTE_ENCODING:
 
89727
    {
 
89728
 
 
89729
attributeData->encoding = attributeValue;
 
89730
 
 
89731
    break;
 
89732
    }
 
89733
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
89734
    {
 
89735
bool failed;
 
89736
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
89737
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
89738
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
89739
        HASH_ELEMENT_IMAGE,
 
89740
        HASH_ATTRIBUTE_DEFINITIONURL,
 
89741
        attributeValue))
 
89742
{
 
89743
    return false;
 
89744
}
 
89745
if ( !failed )
 
89746
    attributeData->present_attributes |= image____Functions_type__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
89747
 
 
89748
    break;
 
89749
    }
 
89750
    case HASH_ATTRIBUTE_CLASS:
 
89751
    {
 
89752
bool failed;
 
89753
#ifdef GENERATEDSAXPARSER_VALIDATION
 
89754
    if ( mValidate )
 
89755
    {
 
89756
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_IMAGE, HASH_ATTRIBUTE_CLASS);
 
89757
    }
 
89758
    else
 
89759
    {
 
89760
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
89761
    }
 
89762
#else
 
89763
    {
 
89764
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
89765
    } // validation
 
89766
#endif
 
89767
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
89768
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
89769
        HASH_ELEMENT_IMAGE,
 
89770
        HASH_ATTRIBUTE_CLASS,
 
89771
        attributeValue))
 
89772
{
 
89773
    return false;
 
89774
}
 
89775
#ifdef GENERATEDSAXPARSER_VALIDATION
 
89776
    if ( mValidate )
 
89777
    {
 
89778
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
89779
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
89780
    {
 
89781
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
89782
            simpleTypeValidationResult,
 
89783
            HASH_ELEMENT_IMAGE,
 
89784
            HASH_ATTRIBUTE_CLASS,
 
89785
            attributeValue) )
 
89786
        {
 
89787
            return false;
 
89788
        }
 
89789
    }
 
89790
    } // validation
 
89791
#endif
 
89792
 
 
89793
if ( !failed )
 
89794
    attributeData->present_attributes |= image____Functions_type__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
89795
 
 
89796
    break;
 
89797
    }
 
89798
    case HASH_ATTRIBUTE_STYLE:
 
89799
    {
 
89800
 
 
89801
attributeData->style = attributeValue;
 
89802
 
 
89803
    break;
 
89804
    }
 
89805
    case HASH_ATTRIBUTE_XREF:
 
89806
    {
 
89807
 
 
89808
attributeData->xref = attributeValue;
 
89809
 
 
89810
    break;
 
89811
    }
 
89812
    case HASH_ATTRIBUTE_ID:
 
89813
    {
 
89814
 
 
89815
attributeData->id = attributeValue;
 
89816
 
 
89817
    break;
 
89818
    }
 
89819
    case HASH_ATTRIBUTE_HREF:
 
89820
    {
 
89821
bool failed;
 
89822
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
89823
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
89824
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
89825
        HASH_ELEMENT_IMAGE,
 
89826
        HASH_ATTRIBUTE_HREF,
 
89827
        attributeValue))
 
89828
{
 
89829
    return false;
 
89830
}
 
89831
if ( !failed )
 
89832
    attributeData->present_attributes |= image____Functions_type__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
89833
 
 
89834
    break;
 
89835
    }
 
89836
    default:
 
89837
    {
 
89838
        if ( !attributeData->unknownAttributes.data )
 
89839
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
89840
        else
 
89841
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
89842
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
89843
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
89844
        attributeData->unknownAttributes.size += 2;
 
89845
 
 
89846
    }
 
89847
    }
 
89848
    }
 
89849
}
 
89850
if ((attributeData->present_attributes & image____Functions_type__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
89851
{
 
89852
    attributeData->definitionURL = COLLADABU::URI("");
 
89853
}
 
89854
if ((attributeData->present_attributes & image____Functions_type__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
89855
{
 
89856
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
89857
}
 
89858
if ((attributeData->present_attributes & image____Functions_type__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
89859
{
 
89860
    attributeData->href = COLLADABU::URI("");
 
89861
}
 
89862
 
 
89863
 
 
89864
    return true;
 
89865
}
 
89866
 
 
89867
//---------------------------------------------------------------------
 
89868
bool ColladaParserAutoGen15Private::_preEnd__image____Functions_type()
 
89869
{
 
89870
#ifdef GENERATEDSAXPARSER_VALIDATION
 
89871
    if ( mValidate )
 
89872
    {
 
89873
 
 
89874
        bool validationResult = _validateEnd__image____Functions_type();
 
89875
        if ( !validationResult ) return false;
 
89876
 
 
89877
    } // validation
 
89878
#endif
 
89879
 
 
89880
    return true;
 
89881
}
 
89882
 
 
89883
//---------------------------------------------------------------------
 
89884
bool ColladaParserAutoGen15Private::_freeAttributes__image____Functions_type( void* attributeData )
 
89885
{
 
89886
    image____Functions_type__AttributeData* typedAttributeData = static_cast<image____Functions_type__AttributeData*>(attributeData);
 
89887
    if (typedAttributeData->_class.data)
 
89888
    {
 
89889
        mStackMemoryManager.deleteObject();
 
89890
    }
 
89891
 
 
89892
    if (typedAttributeData->unknownAttributes.data)
 
89893
    {
 
89894
        mStackMemoryManager.deleteObject();
 
89895
    }
 
89896
 
 
89897
 
 
89898
    typedAttributeData->~image____Functions_type__AttributeData();
 
89899
 
 
89900
    return true;
 
89901
}
 
89902
 
 
89903
//---------------------------------------------------------------------
 
89904
const domainofapplication__AttributeData domainofapplication__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
89905
 
 
89906
//---------------------------------------------------------------------
 
89907
bool ColladaParserAutoGen15Private::_data__domainofapplication( const ParserChar* text, size_t textLength )
 
89908
{
 
89909
    return true;
 
89910
}
 
89911
 
 
89912
//---------------------------------------------------------------------
 
89913
bool ColladaParserAutoGen15Private::_preBegin__domainofapplication( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
89914
{
 
89915
#ifdef GENERATEDSAXPARSER_VALIDATION
 
89916
    if ( mValidate )
 
89917
    {
 
89918
 
 
89919
        bool validationResult = _validateBegin__domainofapplication( attributes, attributeDataPtr, validationDataPtr );
 
89920
        if ( !validationResult ) return false;
 
89921
 
 
89922
    } // validation
 
89923
#endif
 
89924
 
 
89925
domainofapplication__AttributeData* attributeData = newData<domainofapplication__AttributeData>(attributeDataPtr);
 
89926
 
 
89927
const ParserChar** attributeArray = attributes.attributes;
 
89928
if ( attributeArray )
 
89929
{
 
89930
    while (true)
 
89931
    {
 
89932
        const ParserChar * attribute = *attributeArray;
 
89933
        if ( !attribute )
 
89934
            break;
 
89935
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
89936
        attributeArray++;
 
89937
        if ( !attributeArray )
 
89938
            return false;
 
89939
        const ParserChar* attributeValue = *attributeArray;
 
89940
        attributeArray++;
 
89941
 
 
89942
 
 
89943
    switch ( hash )
 
89944
    {
 
89945
    case HASH_ATTRIBUTE_ENCODING:
 
89946
    {
 
89947
 
 
89948
attributeData->encoding = attributeValue;
 
89949
 
 
89950
    break;
 
89951
    }
 
89952
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
89953
    {
 
89954
bool failed;
 
89955
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
89956
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
89957
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
89958
        HASH_ELEMENT_DOMAINOFAPPLICATION,
 
89959
        HASH_ATTRIBUTE_DEFINITIONURL,
 
89960
        attributeValue))
 
89961
{
 
89962
    return false;
 
89963
}
 
89964
if ( !failed )
 
89965
    attributeData->present_attributes |= domainofapplication__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
89966
 
 
89967
    break;
 
89968
    }
 
89969
    case HASH_ATTRIBUTE_CLASS:
 
89970
    {
 
89971
bool failed;
 
89972
#ifdef GENERATEDSAXPARSER_VALIDATION
 
89973
    if ( mValidate )
 
89974
    {
 
89975
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_DOMAINOFAPPLICATION, HASH_ATTRIBUTE_CLASS);
 
89976
    }
 
89977
    else
 
89978
    {
 
89979
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
89980
    }
 
89981
#else
 
89982
    {
 
89983
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
89984
    } // validation
 
89985
#endif
 
89986
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
89987
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
89988
        HASH_ELEMENT_DOMAINOFAPPLICATION,
 
89989
        HASH_ATTRIBUTE_CLASS,
 
89990
        attributeValue))
 
89991
{
 
89992
    return false;
 
89993
}
 
89994
#ifdef GENERATEDSAXPARSER_VALIDATION
 
89995
    if ( mValidate )
 
89996
    {
 
89997
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
89998
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
89999
    {
 
90000
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
90001
            simpleTypeValidationResult,
 
90002
            HASH_ELEMENT_DOMAINOFAPPLICATION,
 
90003
            HASH_ATTRIBUTE_CLASS,
 
90004
            attributeValue) )
 
90005
        {
 
90006
            return false;
 
90007
        }
 
90008
    }
 
90009
    } // validation
 
90010
#endif
 
90011
 
 
90012
if ( !failed )
 
90013
    attributeData->present_attributes |= domainofapplication__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
90014
 
 
90015
    break;
 
90016
    }
 
90017
    case HASH_ATTRIBUTE_STYLE:
 
90018
    {
 
90019
 
 
90020
attributeData->style = attributeValue;
 
90021
 
 
90022
    break;
 
90023
    }
 
90024
    case HASH_ATTRIBUTE_XREF:
 
90025
    {
 
90026
 
 
90027
attributeData->xref = attributeValue;
 
90028
 
 
90029
    break;
 
90030
    }
 
90031
    case HASH_ATTRIBUTE_ID:
 
90032
    {
 
90033
 
 
90034
attributeData->id = attributeValue;
 
90035
 
 
90036
    break;
 
90037
    }
 
90038
    case HASH_ATTRIBUTE_HREF:
 
90039
    {
 
90040
bool failed;
 
90041
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
90042
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
90043
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
90044
        HASH_ELEMENT_DOMAINOFAPPLICATION,
 
90045
        HASH_ATTRIBUTE_HREF,
 
90046
        attributeValue))
 
90047
{
 
90048
    return false;
 
90049
}
 
90050
if ( !failed )
 
90051
    attributeData->present_attributes |= domainofapplication__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
90052
 
 
90053
    break;
 
90054
    }
 
90055
    default:
 
90056
    {
 
90057
        if ( !attributeData->unknownAttributes.data )
 
90058
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
90059
        else
 
90060
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
90061
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
90062
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
90063
        attributeData->unknownAttributes.size += 2;
 
90064
 
 
90065
    }
 
90066
    }
 
90067
    }
 
90068
}
 
90069
if ((attributeData->present_attributes & domainofapplication__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
90070
{
 
90071
    attributeData->definitionURL = COLLADABU::URI("");
 
90072
}
 
90073
if ((attributeData->present_attributes & domainofapplication__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
90074
{
 
90075
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
90076
}
 
90077
if ((attributeData->present_attributes & domainofapplication__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
90078
{
 
90079
    attributeData->href = COLLADABU::URI("");
 
90080
}
 
90081
 
 
90082
 
 
90083
    return true;
 
90084
}
 
90085
 
 
90086
//---------------------------------------------------------------------
 
90087
bool ColladaParserAutoGen15Private::_preEnd__domainofapplication()
 
90088
{
 
90089
#ifdef GENERATEDSAXPARSER_VALIDATION
 
90090
    if ( mValidate )
 
90091
    {
 
90092
 
 
90093
        bool validationResult = _validateEnd__domainofapplication();
 
90094
        if ( !validationResult ) return false;
 
90095
 
 
90096
    } // validation
 
90097
#endif
 
90098
 
 
90099
    return true;
 
90100
}
 
90101
 
 
90102
//---------------------------------------------------------------------
 
90103
bool ColladaParserAutoGen15Private::_freeAttributes__domainofapplication( void* attributeData )
 
90104
{
 
90105
    domainofapplication__AttributeData* typedAttributeData = static_cast<domainofapplication__AttributeData*>(attributeData);
 
90106
    if (typedAttributeData->_class.data)
 
90107
    {
 
90108
        mStackMemoryManager.deleteObject();
 
90109
    }
 
90110
 
 
90111
    if (typedAttributeData->unknownAttributes.data)
 
90112
    {
 
90113
        mStackMemoryManager.deleteObject();
 
90114
    }
 
90115
 
 
90116
 
 
90117
    typedAttributeData->~domainofapplication__AttributeData();
 
90118
 
 
90119
    return true;
 
90120
}
 
90121
 
 
90122
//---------------------------------------------------------------------
 
90123
const ident__AttributeData ident__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
90124
 
 
90125
//---------------------------------------------------------------------
 
90126
bool ColladaParserAutoGen15Private::_data__ident( const ParserChar* text, size_t textLength )
 
90127
{
 
90128
    return true;
 
90129
}
 
90130
 
 
90131
//---------------------------------------------------------------------
 
90132
bool ColladaParserAutoGen15Private::_preBegin__ident( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
90133
{
 
90134
#ifdef GENERATEDSAXPARSER_VALIDATION
 
90135
    if ( mValidate )
 
90136
    {
 
90137
 
 
90138
        bool validationResult = _validateBegin__ident( attributes, attributeDataPtr, validationDataPtr );
 
90139
        if ( !validationResult ) return false;
 
90140
 
 
90141
    } // validation
 
90142
#endif
 
90143
 
 
90144
ident__AttributeData* attributeData = newData<ident__AttributeData>(attributeDataPtr);
 
90145
 
 
90146
const ParserChar** attributeArray = attributes.attributes;
 
90147
if ( attributeArray )
 
90148
{
 
90149
    while (true)
 
90150
    {
 
90151
        const ParserChar * attribute = *attributeArray;
 
90152
        if ( !attribute )
 
90153
            break;
 
90154
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
90155
        attributeArray++;
 
90156
        if ( !attributeArray )
 
90157
            return false;
 
90158
        const ParserChar* attributeValue = *attributeArray;
 
90159
        attributeArray++;
 
90160
 
 
90161
 
 
90162
    switch ( hash )
 
90163
    {
 
90164
    case HASH_ATTRIBUTE_ENCODING:
 
90165
    {
 
90166
 
 
90167
attributeData->encoding = attributeValue;
 
90168
 
 
90169
    break;
 
90170
    }
 
90171
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
90172
    {
 
90173
bool failed;
 
90174
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
90175
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
90176
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
90177
        HASH_ELEMENT_IDENT,
 
90178
        HASH_ATTRIBUTE_DEFINITIONURL,
 
90179
        attributeValue))
 
90180
{
 
90181
    return false;
 
90182
}
 
90183
if ( !failed )
 
90184
    attributeData->present_attributes |= ident__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
90185
 
 
90186
    break;
 
90187
    }
 
90188
    case HASH_ATTRIBUTE_CLASS:
 
90189
    {
 
90190
bool failed;
 
90191
#ifdef GENERATEDSAXPARSER_VALIDATION
 
90192
    if ( mValidate )
 
90193
    {
 
90194
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_IDENT, HASH_ATTRIBUTE_CLASS);
 
90195
    }
 
90196
    else
 
90197
    {
 
90198
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
90199
    }
 
90200
#else
 
90201
    {
 
90202
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
90203
    } // validation
 
90204
#endif
 
90205
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
90206
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
90207
        HASH_ELEMENT_IDENT,
 
90208
        HASH_ATTRIBUTE_CLASS,
 
90209
        attributeValue))
 
90210
{
 
90211
    return false;
 
90212
}
 
90213
#ifdef GENERATEDSAXPARSER_VALIDATION
 
90214
    if ( mValidate )
 
90215
    {
 
90216
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
90217
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
90218
    {
 
90219
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
90220
            simpleTypeValidationResult,
 
90221
            HASH_ELEMENT_IDENT,
 
90222
            HASH_ATTRIBUTE_CLASS,
 
90223
            attributeValue) )
 
90224
        {
 
90225
            return false;
 
90226
        }
 
90227
    }
 
90228
    } // validation
 
90229
#endif
 
90230
 
 
90231
if ( !failed )
 
90232
    attributeData->present_attributes |= ident__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
90233
 
 
90234
    break;
 
90235
    }
 
90236
    case HASH_ATTRIBUTE_STYLE:
 
90237
    {
 
90238
 
 
90239
attributeData->style = attributeValue;
 
90240
 
 
90241
    break;
 
90242
    }
 
90243
    case HASH_ATTRIBUTE_XREF:
 
90244
    {
 
90245
 
 
90246
attributeData->xref = attributeValue;
 
90247
 
 
90248
    break;
 
90249
    }
 
90250
    case HASH_ATTRIBUTE_ID:
 
90251
    {
 
90252
 
 
90253
attributeData->id = attributeValue;
 
90254
 
 
90255
    break;
 
90256
    }
 
90257
    case HASH_ATTRIBUTE_HREF:
 
90258
    {
 
90259
bool failed;
 
90260
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
90261
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
90262
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
90263
        HASH_ELEMENT_IDENT,
 
90264
        HASH_ATTRIBUTE_HREF,
 
90265
        attributeValue))
 
90266
{
 
90267
    return false;
 
90268
}
 
90269
if ( !failed )
 
90270
    attributeData->present_attributes |= ident__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
90271
 
 
90272
    break;
 
90273
    }
 
90274
    default:
 
90275
    {
 
90276
        if ( !attributeData->unknownAttributes.data )
 
90277
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
90278
        else
 
90279
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
90280
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
90281
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
90282
        attributeData->unknownAttributes.size += 2;
 
90283
 
 
90284
    }
 
90285
    }
 
90286
    }
 
90287
}
 
90288
if ((attributeData->present_attributes & ident__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
90289
{
 
90290
    attributeData->definitionURL = COLLADABU::URI("");
 
90291
}
 
90292
if ((attributeData->present_attributes & ident__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
90293
{
 
90294
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
90295
}
 
90296
if ((attributeData->present_attributes & ident__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
90297
{
 
90298
    attributeData->href = COLLADABU::URI("");
 
90299
}
 
90300
 
 
90301
 
 
90302
    return true;
 
90303
}
 
90304
 
 
90305
//---------------------------------------------------------------------
 
90306
bool ColladaParserAutoGen15Private::_preEnd__ident()
 
90307
{
 
90308
#ifdef GENERATEDSAXPARSER_VALIDATION
 
90309
    if ( mValidate )
 
90310
    {
 
90311
 
 
90312
        bool validationResult = _validateEnd__ident();
 
90313
        if ( !validationResult ) return false;
 
90314
 
 
90315
    } // validation
 
90316
#endif
 
90317
 
 
90318
    return true;
 
90319
}
 
90320
 
 
90321
//---------------------------------------------------------------------
 
90322
bool ColladaParserAutoGen15Private::_freeAttributes__ident( void* attributeData )
 
90323
{
 
90324
    ident__AttributeData* typedAttributeData = static_cast<ident__AttributeData*>(attributeData);
 
90325
    if (typedAttributeData->_class.data)
 
90326
    {
 
90327
        mStackMemoryManager.deleteObject();
 
90328
    }
 
90329
 
 
90330
    if (typedAttributeData->unknownAttributes.data)
 
90331
    {
 
90332
        mStackMemoryManager.deleteObject();
 
90333
    }
 
90334
 
 
90335
 
 
90336
    typedAttributeData->~ident__AttributeData();
 
90337
 
 
90338
    return true;
 
90339
}
 
90340
 
 
90341
//---------------------------------------------------------------------
 
90342
const and__AttributeData and__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
90343
 
 
90344
//---------------------------------------------------------------------
 
90345
bool ColladaParserAutoGen15Private::_data__and( const ParserChar* text, size_t textLength )
 
90346
{
 
90347
    return true;
 
90348
}
 
90349
 
 
90350
//---------------------------------------------------------------------
 
90351
bool ColladaParserAutoGen15Private::_preBegin__and( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
90352
{
 
90353
#ifdef GENERATEDSAXPARSER_VALIDATION
 
90354
    if ( mValidate )
 
90355
    {
 
90356
 
 
90357
        bool validationResult = _validateBegin__and( attributes, attributeDataPtr, validationDataPtr );
 
90358
        if ( !validationResult ) return false;
 
90359
 
 
90360
    } // validation
 
90361
#endif
 
90362
 
 
90363
and__AttributeData* attributeData = newData<and__AttributeData>(attributeDataPtr);
 
90364
 
 
90365
const ParserChar** attributeArray = attributes.attributes;
 
90366
if ( attributeArray )
 
90367
{
 
90368
    while (true)
 
90369
    {
 
90370
        const ParserChar * attribute = *attributeArray;
 
90371
        if ( !attribute )
 
90372
            break;
 
90373
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
90374
        attributeArray++;
 
90375
        if ( !attributeArray )
 
90376
            return false;
 
90377
        const ParserChar* attributeValue = *attributeArray;
 
90378
        attributeArray++;
 
90379
 
 
90380
 
 
90381
    switch ( hash )
 
90382
    {
 
90383
    case HASH_ATTRIBUTE_ENCODING:
 
90384
    {
 
90385
 
 
90386
attributeData->encoding = attributeValue;
 
90387
 
 
90388
    break;
 
90389
    }
 
90390
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
90391
    {
 
90392
bool failed;
 
90393
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
90394
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
90395
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
90396
        HASH_ELEMENT_AND,
 
90397
        HASH_ATTRIBUTE_DEFINITIONURL,
 
90398
        attributeValue))
 
90399
{
 
90400
    return false;
 
90401
}
 
90402
if ( !failed )
 
90403
    attributeData->present_attributes |= and__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
90404
 
 
90405
    break;
 
90406
    }
 
90407
    case HASH_ATTRIBUTE_CLASS:
 
90408
    {
 
90409
bool failed;
 
90410
#ifdef GENERATEDSAXPARSER_VALIDATION
 
90411
    if ( mValidate )
 
90412
    {
 
90413
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_AND, HASH_ATTRIBUTE_CLASS);
 
90414
    }
 
90415
    else
 
90416
    {
 
90417
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
90418
    }
 
90419
#else
 
90420
    {
 
90421
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
90422
    } // validation
 
90423
#endif
 
90424
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
90425
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
90426
        HASH_ELEMENT_AND,
 
90427
        HASH_ATTRIBUTE_CLASS,
 
90428
        attributeValue))
 
90429
{
 
90430
    return false;
 
90431
}
 
90432
#ifdef GENERATEDSAXPARSER_VALIDATION
 
90433
    if ( mValidate )
 
90434
    {
 
90435
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
90436
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
90437
    {
 
90438
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
90439
            simpleTypeValidationResult,
 
90440
            HASH_ELEMENT_AND,
 
90441
            HASH_ATTRIBUTE_CLASS,
 
90442
            attributeValue) )
 
90443
        {
 
90444
            return false;
 
90445
        }
 
90446
    }
 
90447
    } // validation
 
90448
#endif
 
90449
 
 
90450
if ( !failed )
 
90451
    attributeData->present_attributes |= and__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
90452
 
 
90453
    break;
 
90454
    }
 
90455
    case HASH_ATTRIBUTE_STYLE:
 
90456
    {
 
90457
 
 
90458
attributeData->style = attributeValue;
 
90459
 
 
90460
    break;
 
90461
    }
 
90462
    case HASH_ATTRIBUTE_XREF:
 
90463
    {
 
90464
 
 
90465
attributeData->xref = attributeValue;
 
90466
 
 
90467
    break;
 
90468
    }
 
90469
    case HASH_ATTRIBUTE_ID:
 
90470
    {
 
90471
 
 
90472
attributeData->id = attributeValue;
 
90473
 
 
90474
    break;
 
90475
    }
 
90476
    case HASH_ATTRIBUTE_HREF:
 
90477
    {
 
90478
bool failed;
 
90479
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
90480
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
90481
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
90482
        HASH_ELEMENT_AND,
 
90483
        HASH_ATTRIBUTE_HREF,
 
90484
        attributeValue))
 
90485
{
 
90486
    return false;
 
90487
}
 
90488
if ( !failed )
 
90489
    attributeData->present_attributes |= and__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
90490
 
 
90491
    break;
 
90492
    }
 
90493
    default:
 
90494
    {
 
90495
        if ( !attributeData->unknownAttributes.data )
 
90496
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
90497
        else
 
90498
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
90499
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
90500
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
90501
        attributeData->unknownAttributes.size += 2;
 
90502
 
 
90503
    }
 
90504
    }
 
90505
    }
 
90506
}
 
90507
if ((attributeData->present_attributes & and__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
90508
{
 
90509
    attributeData->definitionURL = COLLADABU::URI("");
 
90510
}
 
90511
if ((attributeData->present_attributes & and__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
90512
{
 
90513
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
90514
}
 
90515
if ((attributeData->present_attributes & and__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
90516
{
 
90517
    attributeData->href = COLLADABU::URI("");
 
90518
}
 
90519
 
 
90520
 
 
90521
    return true;
 
90522
}
 
90523
 
 
90524
//---------------------------------------------------------------------
 
90525
bool ColladaParserAutoGen15Private::_preEnd__and()
 
90526
{
 
90527
#ifdef GENERATEDSAXPARSER_VALIDATION
 
90528
    if ( mValidate )
 
90529
    {
 
90530
 
 
90531
        bool validationResult = _validateEnd__and();
 
90532
        if ( !validationResult ) return false;
 
90533
 
 
90534
    } // validation
 
90535
#endif
 
90536
 
 
90537
    return true;
 
90538
}
 
90539
 
 
90540
//---------------------------------------------------------------------
 
90541
bool ColladaParserAutoGen15Private::_freeAttributes__and( void* attributeData )
 
90542
{
 
90543
    and__AttributeData* typedAttributeData = static_cast<and__AttributeData*>(attributeData);
 
90544
    if (typedAttributeData->_class.data)
 
90545
    {
 
90546
        mStackMemoryManager.deleteObject();
 
90547
    }
 
90548
 
 
90549
    if (typedAttributeData->unknownAttributes.data)
 
90550
    {
 
90551
        mStackMemoryManager.deleteObject();
 
90552
    }
 
90553
 
 
90554
 
 
90555
    typedAttributeData->~and__AttributeData();
 
90556
 
 
90557
    return true;
 
90558
}
 
90559
 
 
90560
//---------------------------------------------------------------------
 
90561
const or__AttributeData or__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
90562
 
 
90563
//---------------------------------------------------------------------
 
90564
bool ColladaParserAutoGen15Private::_data__or( const ParserChar* text, size_t textLength )
 
90565
{
 
90566
    return true;
 
90567
}
 
90568
 
 
90569
//---------------------------------------------------------------------
 
90570
bool ColladaParserAutoGen15Private::_preBegin__or( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
90571
{
 
90572
#ifdef GENERATEDSAXPARSER_VALIDATION
 
90573
    if ( mValidate )
 
90574
    {
 
90575
 
 
90576
        bool validationResult = _validateBegin__or( attributes, attributeDataPtr, validationDataPtr );
 
90577
        if ( !validationResult ) return false;
 
90578
 
 
90579
    } // validation
 
90580
#endif
 
90581
 
 
90582
or__AttributeData* attributeData = newData<or__AttributeData>(attributeDataPtr);
 
90583
 
 
90584
const ParserChar** attributeArray = attributes.attributes;
 
90585
if ( attributeArray )
 
90586
{
 
90587
    while (true)
 
90588
    {
 
90589
        const ParserChar * attribute = *attributeArray;
 
90590
        if ( !attribute )
 
90591
            break;
 
90592
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
90593
        attributeArray++;
 
90594
        if ( !attributeArray )
 
90595
            return false;
 
90596
        const ParserChar* attributeValue = *attributeArray;
 
90597
        attributeArray++;
 
90598
 
 
90599
 
 
90600
    switch ( hash )
 
90601
    {
 
90602
    case HASH_ATTRIBUTE_ENCODING:
 
90603
    {
 
90604
 
 
90605
attributeData->encoding = attributeValue;
 
90606
 
 
90607
    break;
 
90608
    }
 
90609
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
90610
    {
 
90611
bool failed;
 
90612
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
90613
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
90614
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
90615
        HASH_ELEMENT_OR,
 
90616
        HASH_ATTRIBUTE_DEFINITIONURL,
 
90617
        attributeValue))
 
90618
{
 
90619
    return false;
 
90620
}
 
90621
if ( !failed )
 
90622
    attributeData->present_attributes |= or__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
90623
 
 
90624
    break;
 
90625
    }
 
90626
    case HASH_ATTRIBUTE_CLASS:
 
90627
    {
 
90628
bool failed;
 
90629
#ifdef GENERATEDSAXPARSER_VALIDATION
 
90630
    if ( mValidate )
 
90631
    {
 
90632
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_OR, HASH_ATTRIBUTE_CLASS);
 
90633
    }
 
90634
    else
 
90635
    {
 
90636
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
90637
    }
 
90638
#else
 
90639
    {
 
90640
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
90641
    } // validation
 
90642
#endif
 
90643
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
90644
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
90645
        HASH_ELEMENT_OR,
 
90646
        HASH_ATTRIBUTE_CLASS,
 
90647
        attributeValue))
 
90648
{
 
90649
    return false;
 
90650
}
 
90651
#ifdef GENERATEDSAXPARSER_VALIDATION
 
90652
    if ( mValidate )
 
90653
    {
 
90654
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
90655
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
90656
    {
 
90657
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
90658
            simpleTypeValidationResult,
 
90659
            HASH_ELEMENT_OR,
 
90660
            HASH_ATTRIBUTE_CLASS,
 
90661
            attributeValue) )
 
90662
        {
 
90663
            return false;
 
90664
        }
 
90665
    }
 
90666
    } // validation
 
90667
#endif
 
90668
 
 
90669
if ( !failed )
 
90670
    attributeData->present_attributes |= or__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
90671
 
 
90672
    break;
 
90673
    }
 
90674
    case HASH_ATTRIBUTE_STYLE:
 
90675
    {
 
90676
 
 
90677
attributeData->style = attributeValue;
 
90678
 
 
90679
    break;
 
90680
    }
 
90681
    case HASH_ATTRIBUTE_XREF:
 
90682
    {
 
90683
 
 
90684
attributeData->xref = attributeValue;
 
90685
 
 
90686
    break;
 
90687
    }
 
90688
    case HASH_ATTRIBUTE_ID:
 
90689
    {
 
90690
 
 
90691
attributeData->id = attributeValue;
 
90692
 
 
90693
    break;
 
90694
    }
 
90695
    case HASH_ATTRIBUTE_HREF:
 
90696
    {
 
90697
bool failed;
 
90698
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
90699
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
90700
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
90701
        HASH_ELEMENT_OR,
 
90702
        HASH_ATTRIBUTE_HREF,
 
90703
        attributeValue))
 
90704
{
 
90705
    return false;
 
90706
}
 
90707
if ( !failed )
 
90708
    attributeData->present_attributes |= or__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
90709
 
 
90710
    break;
 
90711
    }
 
90712
    default:
 
90713
    {
 
90714
        if ( !attributeData->unknownAttributes.data )
 
90715
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
90716
        else
 
90717
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
90718
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
90719
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
90720
        attributeData->unknownAttributes.size += 2;
 
90721
 
 
90722
    }
 
90723
    }
 
90724
    }
 
90725
}
 
90726
if ((attributeData->present_attributes & or__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
90727
{
 
90728
    attributeData->definitionURL = COLLADABU::URI("");
 
90729
}
 
90730
if ((attributeData->present_attributes & or__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
90731
{
 
90732
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
90733
}
 
90734
if ((attributeData->present_attributes & or__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
90735
{
 
90736
    attributeData->href = COLLADABU::URI("");
 
90737
}
 
90738
 
 
90739
 
 
90740
    return true;
 
90741
}
 
90742
 
 
90743
//---------------------------------------------------------------------
 
90744
bool ColladaParserAutoGen15Private::_preEnd__or()
 
90745
{
 
90746
#ifdef GENERATEDSAXPARSER_VALIDATION
 
90747
    if ( mValidate )
 
90748
    {
 
90749
 
 
90750
        bool validationResult = _validateEnd__or();
 
90751
        if ( !validationResult ) return false;
 
90752
 
 
90753
    } // validation
 
90754
#endif
 
90755
 
 
90756
    return true;
 
90757
}
 
90758
 
 
90759
//---------------------------------------------------------------------
 
90760
bool ColladaParserAutoGen15Private::_freeAttributes__or( void* attributeData )
 
90761
{
 
90762
    or__AttributeData* typedAttributeData = static_cast<or__AttributeData*>(attributeData);
 
90763
    if (typedAttributeData->_class.data)
 
90764
    {
 
90765
        mStackMemoryManager.deleteObject();
 
90766
    }
 
90767
 
 
90768
    if (typedAttributeData->unknownAttributes.data)
 
90769
    {
 
90770
        mStackMemoryManager.deleteObject();
 
90771
    }
 
90772
 
 
90773
 
 
90774
    typedAttributeData->~or__AttributeData();
 
90775
 
 
90776
    return true;
 
90777
}
 
90778
 
 
90779
//---------------------------------------------------------------------
 
90780
const xor__AttributeData xor__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
90781
 
 
90782
//---------------------------------------------------------------------
 
90783
bool ColladaParserAutoGen15Private::_data__xor( const ParserChar* text, size_t textLength )
 
90784
{
 
90785
    return true;
 
90786
}
 
90787
 
 
90788
//---------------------------------------------------------------------
 
90789
bool ColladaParserAutoGen15Private::_preBegin__xor( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
90790
{
 
90791
#ifdef GENERATEDSAXPARSER_VALIDATION
 
90792
    if ( mValidate )
 
90793
    {
 
90794
 
 
90795
        bool validationResult = _validateBegin__xor( attributes, attributeDataPtr, validationDataPtr );
 
90796
        if ( !validationResult ) return false;
 
90797
 
 
90798
    } // validation
 
90799
#endif
 
90800
 
 
90801
xor__AttributeData* attributeData = newData<xor__AttributeData>(attributeDataPtr);
 
90802
 
 
90803
const ParserChar** attributeArray = attributes.attributes;
 
90804
if ( attributeArray )
 
90805
{
 
90806
    while (true)
 
90807
    {
 
90808
        const ParserChar * attribute = *attributeArray;
 
90809
        if ( !attribute )
 
90810
            break;
 
90811
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
90812
        attributeArray++;
 
90813
        if ( !attributeArray )
 
90814
            return false;
 
90815
        const ParserChar* attributeValue = *attributeArray;
 
90816
        attributeArray++;
 
90817
 
 
90818
 
 
90819
    switch ( hash )
 
90820
    {
 
90821
    case HASH_ATTRIBUTE_ENCODING:
 
90822
    {
 
90823
 
 
90824
attributeData->encoding = attributeValue;
 
90825
 
 
90826
    break;
 
90827
    }
 
90828
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
90829
    {
 
90830
bool failed;
 
90831
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
90832
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
90833
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
90834
        HASH_ELEMENT_XOR,
 
90835
        HASH_ATTRIBUTE_DEFINITIONURL,
 
90836
        attributeValue))
 
90837
{
 
90838
    return false;
 
90839
}
 
90840
if ( !failed )
 
90841
    attributeData->present_attributes |= xor__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
90842
 
 
90843
    break;
 
90844
    }
 
90845
    case HASH_ATTRIBUTE_CLASS:
 
90846
    {
 
90847
bool failed;
 
90848
#ifdef GENERATEDSAXPARSER_VALIDATION
 
90849
    if ( mValidate )
 
90850
    {
 
90851
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_XOR, HASH_ATTRIBUTE_CLASS);
 
90852
    }
 
90853
    else
 
90854
    {
 
90855
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
90856
    }
 
90857
#else
 
90858
    {
 
90859
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
90860
    } // validation
 
90861
#endif
 
90862
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
90863
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
90864
        HASH_ELEMENT_XOR,
 
90865
        HASH_ATTRIBUTE_CLASS,
 
90866
        attributeValue))
 
90867
{
 
90868
    return false;
 
90869
}
 
90870
#ifdef GENERATEDSAXPARSER_VALIDATION
 
90871
    if ( mValidate )
 
90872
    {
 
90873
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
90874
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
90875
    {
 
90876
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
90877
            simpleTypeValidationResult,
 
90878
            HASH_ELEMENT_XOR,
 
90879
            HASH_ATTRIBUTE_CLASS,
 
90880
            attributeValue) )
 
90881
        {
 
90882
            return false;
 
90883
        }
 
90884
    }
 
90885
    } // validation
 
90886
#endif
 
90887
 
 
90888
if ( !failed )
 
90889
    attributeData->present_attributes |= xor__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
90890
 
 
90891
    break;
 
90892
    }
 
90893
    case HASH_ATTRIBUTE_STYLE:
 
90894
    {
 
90895
 
 
90896
attributeData->style = attributeValue;
 
90897
 
 
90898
    break;
 
90899
    }
 
90900
    case HASH_ATTRIBUTE_XREF:
 
90901
    {
 
90902
 
 
90903
attributeData->xref = attributeValue;
 
90904
 
 
90905
    break;
 
90906
    }
 
90907
    case HASH_ATTRIBUTE_ID:
 
90908
    {
 
90909
 
 
90910
attributeData->id = attributeValue;
 
90911
 
 
90912
    break;
 
90913
    }
 
90914
    case HASH_ATTRIBUTE_HREF:
 
90915
    {
 
90916
bool failed;
 
90917
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
90918
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
90919
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
90920
        HASH_ELEMENT_XOR,
 
90921
        HASH_ATTRIBUTE_HREF,
 
90922
        attributeValue))
 
90923
{
 
90924
    return false;
 
90925
}
 
90926
if ( !failed )
 
90927
    attributeData->present_attributes |= xor__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
90928
 
 
90929
    break;
 
90930
    }
 
90931
    default:
 
90932
    {
 
90933
        if ( !attributeData->unknownAttributes.data )
 
90934
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
90935
        else
 
90936
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
90937
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
90938
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
90939
        attributeData->unknownAttributes.size += 2;
 
90940
 
 
90941
    }
 
90942
    }
 
90943
    }
 
90944
}
 
90945
if ((attributeData->present_attributes & xor__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
90946
{
 
90947
    attributeData->definitionURL = COLLADABU::URI("");
 
90948
}
 
90949
if ((attributeData->present_attributes & xor__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
90950
{
 
90951
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
90952
}
 
90953
if ((attributeData->present_attributes & xor__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
90954
{
 
90955
    attributeData->href = COLLADABU::URI("");
 
90956
}
 
90957
 
 
90958
 
 
90959
    return true;
 
90960
}
 
90961
 
 
90962
//---------------------------------------------------------------------
 
90963
bool ColladaParserAutoGen15Private::_preEnd__xor()
 
90964
{
 
90965
#ifdef GENERATEDSAXPARSER_VALIDATION
 
90966
    if ( mValidate )
 
90967
    {
 
90968
 
 
90969
        bool validationResult = _validateEnd__xor();
 
90970
        if ( !validationResult ) return false;
 
90971
 
 
90972
    } // validation
 
90973
#endif
 
90974
 
 
90975
    return true;
 
90976
}
 
90977
 
 
90978
//---------------------------------------------------------------------
 
90979
bool ColladaParserAutoGen15Private::_freeAttributes__xor( void* attributeData )
 
90980
{
 
90981
    xor__AttributeData* typedAttributeData = static_cast<xor__AttributeData*>(attributeData);
 
90982
    if (typedAttributeData->_class.data)
 
90983
    {
 
90984
        mStackMemoryManager.deleteObject();
 
90985
    }
 
90986
 
 
90987
    if (typedAttributeData->unknownAttributes.data)
 
90988
    {
 
90989
        mStackMemoryManager.deleteObject();
 
90990
    }
 
90991
 
 
90992
 
 
90993
    typedAttributeData->~xor__AttributeData();
 
90994
 
 
90995
    return true;
 
90996
}
 
90997
 
 
90998
//---------------------------------------------------------------------
 
90999
const not__AttributeData not__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
91000
 
 
91001
//---------------------------------------------------------------------
 
91002
bool ColladaParserAutoGen15Private::_data__not( const ParserChar* text, size_t textLength )
 
91003
{
 
91004
    return true;
 
91005
}
 
91006
 
 
91007
//---------------------------------------------------------------------
 
91008
bool ColladaParserAutoGen15Private::_preBegin__not( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
91009
{
 
91010
#ifdef GENERATEDSAXPARSER_VALIDATION
 
91011
    if ( mValidate )
 
91012
    {
 
91013
 
 
91014
        bool validationResult = _validateBegin__not( attributes, attributeDataPtr, validationDataPtr );
 
91015
        if ( !validationResult ) return false;
 
91016
 
 
91017
    } // validation
 
91018
#endif
 
91019
 
 
91020
not__AttributeData* attributeData = newData<not__AttributeData>(attributeDataPtr);
 
91021
 
 
91022
const ParserChar** attributeArray = attributes.attributes;
 
91023
if ( attributeArray )
 
91024
{
 
91025
    while (true)
 
91026
    {
 
91027
        const ParserChar * attribute = *attributeArray;
 
91028
        if ( !attribute )
 
91029
            break;
 
91030
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
91031
        attributeArray++;
 
91032
        if ( !attributeArray )
 
91033
            return false;
 
91034
        const ParserChar* attributeValue = *attributeArray;
 
91035
        attributeArray++;
 
91036
 
 
91037
 
 
91038
    switch ( hash )
 
91039
    {
 
91040
    case HASH_ATTRIBUTE_ENCODING:
 
91041
    {
 
91042
 
 
91043
attributeData->encoding = attributeValue;
 
91044
 
 
91045
    break;
 
91046
    }
 
91047
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
91048
    {
 
91049
bool failed;
 
91050
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
91051
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
91052
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
91053
        HASH_ELEMENT_NOT,
 
91054
        HASH_ATTRIBUTE_DEFINITIONURL,
 
91055
        attributeValue))
 
91056
{
 
91057
    return false;
 
91058
}
 
91059
if ( !failed )
 
91060
    attributeData->present_attributes |= not__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
91061
 
 
91062
    break;
 
91063
    }
 
91064
    case HASH_ATTRIBUTE_CLASS:
 
91065
    {
 
91066
bool failed;
 
91067
#ifdef GENERATEDSAXPARSER_VALIDATION
 
91068
    if ( mValidate )
 
91069
    {
 
91070
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_NOT, HASH_ATTRIBUTE_CLASS);
 
91071
    }
 
91072
    else
 
91073
    {
 
91074
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
91075
    }
 
91076
#else
 
91077
    {
 
91078
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
91079
    } // validation
 
91080
#endif
 
91081
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
91082
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
91083
        HASH_ELEMENT_NOT,
 
91084
        HASH_ATTRIBUTE_CLASS,
 
91085
        attributeValue))
 
91086
{
 
91087
    return false;
 
91088
}
 
91089
#ifdef GENERATEDSAXPARSER_VALIDATION
 
91090
    if ( mValidate )
 
91091
    {
 
91092
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
91093
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
91094
    {
 
91095
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
91096
            simpleTypeValidationResult,
 
91097
            HASH_ELEMENT_NOT,
 
91098
            HASH_ATTRIBUTE_CLASS,
 
91099
            attributeValue) )
 
91100
        {
 
91101
            return false;
 
91102
        }
 
91103
    }
 
91104
    } // validation
 
91105
#endif
 
91106
 
 
91107
if ( !failed )
 
91108
    attributeData->present_attributes |= not__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
91109
 
 
91110
    break;
 
91111
    }
 
91112
    case HASH_ATTRIBUTE_STYLE:
 
91113
    {
 
91114
 
 
91115
attributeData->style = attributeValue;
 
91116
 
 
91117
    break;
 
91118
    }
 
91119
    case HASH_ATTRIBUTE_XREF:
 
91120
    {
 
91121
 
 
91122
attributeData->xref = attributeValue;
 
91123
 
 
91124
    break;
 
91125
    }
 
91126
    case HASH_ATTRIBUTE_ID:
 
91127
    {
 
91128
 
 
91129
attributeData->id = attributeValue;
 
91130
 
 
91131
    break;
 
91132
    }
 
91133
    case HASH_ATTRIBUTE_HREF:
 
91134
    {
 
91135
bool failed;
 
91136
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
91137
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
91138
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
91139
        HASH_ELEMENT_NOT,
 
91140
        HASH_ATTRIBUTE_HREF,
 
91141
        attributeValue))
 
91142
{
 
91143
    return false;
 
91144
}
 
91145
if ( !failed )
 
91146
    attributeData->present_attributes |= not__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
91147
 
 
91148
    break;
 
91149
    }
 
91150
    default:
 
91151
    {
 
91152
        if ( !attributeData->unknownAttributes.data )
 
91153
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
91154
        else
 
91155
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
91156
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
91157
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
91158
        attributeData->unknownAttributes.size += 2;
 
91159
 
 
91160
    }
 
91161
    }
 
91162
    }
 
91163
}
 
91164
if ((attributeData->present_attributes & not__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
91165
{
 
91166
    attributeData->definitionURL = COLLADABU::URI("");
 
91167
}
 
91168
if ((attributeData->present_attributes & not__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
91169
{
 
91170
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
91171
}
 
91172
if ((attributeData->present_attributes & not__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
91173
{
 
91174
    attributeData->href = COLLADABU::URI("");
 
91175
}
 
91176
 
 
91177
 
 
91178
    return true;
 
91179
}
 
91180
 
 
91181
//---------------------------------------------------------------------
 
91182
bool ColladaParserAutoGen15Private::_preEnd__not()
 
91183
{
 
91184
#ifdef GENERATEDSAXPARSER_VALIDATION
 
91185
    if ( mValidate )
 
91186
    {
 
91187
 
 
91188
        bool validationResult = _validateEnd__not();
 
91189
        if ( !validationResult ) return false;
 
91190
 
 
91191
    } // validation
 
91192
#endif
 
91193
 
 
91194
    return true;
 
91195
}
 
91196
 
 
91197
//---------------------------------------------------------------------
 
91198
bool ColladaParserAutoGen15Private::_freeAttributes__not( void* attributeData )
 
91199
{
 
91200
    not__AttributeData* typedAttributeData = static_cast<not__AttributeData*>(attributeData);
 
91201
    if (typedAttributeData->_class.data)
 
91202
    {
 
91203
        mStackMemoryManager.deleteObject();
 
91204
    }
 
91205
 
 
91206
    if (typedAttributeData->unknownAttributes.data)
 
91207
    {
 
91208
        mStackMemoryManager.deleteObject();
 
91209
    }
 
91210
 
 
91211
 
 
91212
    typedAttributeData->~not__AttributeData();
 
91213
 
 
91214
    return true;
 
91215
}
 
91216
 
 
91217
//---------------------------------------------------------------------
 
91218
const exists__AttributeData exists__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
91219
 
 
91220
//---------------------------------------------------------------------
 
91221
bool ColladaParserAutoGen15Private::_data__exists( const ParserChar* text, size_t textLength )
 
91222
{
 
91223
    return true;
 
91224
}
 
91225
 
 
91226
//---------------------------------------------------------------------
 
91227
bool ColladaParserAutoGen15Private::_preBegin__exists( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
91228
{
 
91229
#ifdef GENERATEDSAXPARSER_VALIDATION
 
91230
    if ( mValidate )
 
91231
    {
 
91232
 
 
91233
        bool validationResult = _validateBegin__exists( attributes, attributeDataPtr, validationDataPtr );
 
91234
        if ( !validationResult ) return false;
 
91235
 
 
91236
    } // validation
 
91237
#endif
 
91238
 
 
91239
exists__AttributeData* attributeData = newData<exists__AttributeData>(attributeDataPtr);
 
91240
 
 
91241
const ParserChar** attributeArray = attributes.attributes;
 
91242
if ( attributeArray )
 
91243
{
 
91244
    while (true)
 
91245
    {
 
91246
        const ParserChar * attribute = *attributeArray;
 
91247
        if ( !attribute )
 
91248
            break;
 
91249
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
91250
        attributeArray++;
 
91251
        if ( !attributeArray )
 
91252
            return false;
 
91253
        const ParserChar* attributeValue = *attributeArray;
 
91254
        attributeArray++;
 
91255
 
 
91256
 
 
91257
    switch ( hash )
 
91258
    {
 
91259
    case HASH_ATTRIBUTE_ENCODING:
 
91260
    {
 
91261
 
 
91262
attributeData->encoding = attributeValue;
 
91263
 
 
91264
    break;
 
91265
    }
 
91266
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
91267
    {
 
91268
bool failed;
 
91269
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
91270
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
91271
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
91272
        HASH_ELEMENT_EXISTS,
 
91273
        HASH_ATTRIBUTE_DEFINITIONURL,
 
91274
        attributeValue))
 
91275
{
 
91276
    return false;
 
91277
}
 
91278
if ( !failed )
 
91279
    attributeData->present_attributes |= exists__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
91280
 
 
91281
    break;
 
91282
    }
 
91283
    case HASH_ATTRIBUTE_CLASS:
 
91284
    {
 
91285
bool failed;
 
91286
#ifdef GENERATEDSAXPARSER_VALIDATION
 
91287
    if ( mValidate )
 
91288
    {
 
91289
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_EXISTS, HASH_ATTRIBUTE_CLASS);
 
91290
    }
 
91291
    else
 
91292
    {
 
91293
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
91294
    }
 
91295
#else
 
91296
    {
 
91297
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
91298
    } // validation
 
91299
#endif
 
91300
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
91301
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
91302
        HASH_ELEMENT_EXISTS,
 
91303
        HASH_ATTRIBUTE_CLASS,
 
91304
        attributeValue))
 
91305
{
 
91306
    return false;
 
91307
}
 
91308
#ifdef GENERATEDSAXPARSER_VALIDATION
 
91309
    if ( mValidate )
 
91310
    {
 
91311
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
91312
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
91313
    {
 
91314
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
91315
            simpleTypeValidationResult,
 
91316
            HASH_ELEMENT_EXISTS,
 
91317
            HASH_ATTRIBUTE_CLASS,
 
91318
            attributeValue) )
 
91319
        {
 
91320
            return false;
 
91321
        }
 
91322
    }
 
91323
    } // validation
 
91324
#endif
 
91325
 
 
91326
if ( !failed )
 
91327
    attributeData->present_attributes |= exists__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
91328
 
 
91329
    break;
 
91330
    }
 
91331
    case HASH_ATTRIBUTE_STYLE:
 
91332
    {
 
91333
 
 
91334
attributeData->style = attributeValue;
 
91335
 
 
91336
    break;
 
91337
    }
 
91338
    case HASH_ATTRIBUTE_XREF:
 
91339
    {
 
91340
 
 
91341
attributeData->xref = attributeValue;
 
91342
 
 
91343
    break;
 
91344
    }
 
91345
    case HASH_ATTRIBUTE_ID:
 
91346
    {
 
91347
 
 
91348
attributeData->id = attributeValue;
 
91349
 
 
91350
    break;
 
91351
    }
 
91352
    case HASH_ATTRIBUTE_HREF:
 
91353
    {
 
91354
bool failed;
 
91355
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
91356
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
91357
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
91358
        HASH_ELEMENT_EXISTS,
 
91359
        HASH_ATTRIBUTE_HREF,
 
91360
        attributeValue))
 
91361
{
 
91362
    return false;
 
91363
}
 
91364
if ( !failed )
 
91365
    attributeData->present_attributes |= exists__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
91366
 
 
91367
    break;
 
91368
    }
 
91369
    default:
 
91370
    {
 
91371
        if ( !attributeData->unknownAttributes.data )
 
91372
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
91373
        else
 
91374
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
91375
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
91376
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
91377
        attributeData->unknownAttributes.size += 2;
 
91378
 
 
91379
    }
 
91380
    }
 
91381
    }
 
91382
}
 
91383
if ((attributeData->present_attributes & exists__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
91384
{
 
91385
    attributeData->definitionURL = COLLADABU::URI("");
 
91386
}
 
91387
if ((attributeData->present_attributes & exists__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
91388
{
 
91389
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
91390
}
 
91391
if ((attributeData->present_attributes & exists__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
91392
{
 
91393
    attributeData->href = COLLADABU::URI("");
 
91394
}
 
91395
 
 
91396
 
 
91397
    return true;
 
91398
}
 
91399
 
 
91400
//---------------------------------------------------------------------
 
91401
bool ColladaParserAutoGen15Private::_preEnd__exists()
 
91402
{
 
91403
#ifdef GENERATEDSAXPARSER_VALIDATION
 
91404
    if ( mValidate )
 
91405
    {
 
91406
 
 
91407
        bool validationResult = _validateEnd__exists();
 
91408
        if ( !validationResult ) return false;
 
91409
 
 
91410
    } // validation
 
91411
#endif
 
91412
 
 
91413
    return true;
 
91414
}
 
91415
 
 
91416
//---------------------------------------------------------------------
 
91417
bool ColladaParserAutoGen15Private::_freeAttributes__exists( void* attributeData )
 
91418
{
 
91419
    exists__AttributeData* typedAttributeData = static_cast<exists__AttributeData*>(attributeData);
 
91420
    if (typedAttributeData->_class.data)
 
91421
    {
 
91422
        mStackMemoryManager.deleteObject();
 
91423
    }
 
91424
 
 
91425
    if (typedAttributeData->unknownAttributes.data)
 
91426
    {
 
91427
        mStackMemoryManager.deleteObject();
 
91428
    }
 
91429
 
 
91430
 
 
91431
    typedAttributeData->~exists__AttributeData();
 
91432
 
 
91433
    return true;
 
91434
}
 
91435
 
 
91436
//---------------------------------------------------------------------
 
91437
const forall__AttributeData forall__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
91438
 
 
91439
//---------------------------------------------------------------------
 
91440
bool ColladaParserAutoGen15Private::_data__forall( const ParserChar* text, size_t textLength )
 
91441
{
 
91442
    return true;
 
91443
}
 
91444
 
 
91445
//---------------------------------------------------------------------
 
91446
bool ColladaParserAutoGen15Private::_preBegin__forall( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
91447
{
 
91448
#ifdef GENERATEDSAXPARSER_VALIDATION
 
91449
    if ( mValidate )
 
91450
    {
 
91451
 
 
91452
        bool validationResult = _validateBegin__forall( attributes, attributeDataPtr, validationDataPtr );
 
91453
        if ( !validationResult ) return false;
 
91454
 
 
91455
    } // validation
 
91456
#endif
 
91457
 
 
91458
forall__AttributeData* attributeData = newData<forall__AttributeData>(attributeDataPtr);
 
91459
 
 
91460
const ParserChar** attributeArray = attributes.attributes;
 
91461
if ( attributeArray )
 
91462
{
 
91463
    while (true)
 
91464
    {
 
91465
        const ParserChar * attribute = *attributeArray;
 
91466
        if ( !attribute )
 
91467
            break;
 
91468
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
91469
        attributeArray++;
 
91470
        if ( !attributeArray )
 
91471
            return false;
 
91472
        const ParserChar* attributeValue = *attributeArray;
 
91473
        attributeArray++;
 
91474
 
 
91475
 
 
91476
    switch ( hash )
 
91477
    {
 
91478
    case HASH_ATTRIBUTE_ENCODING:
 
91479
    {
 
91480
 
 
91481
attributeData->encoding = attributeValue;
 
91482
 
 
91483
    break;
 
91484
    }
 
91485
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
91486
    {
 
91487
bool failed;
 
91488
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
91489
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
91490
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
91491
        HASH_ELEMENT_FORALL,
 
91492
        HASH_ATTRIBUTE_DEFINITIONURL,
 
91493
        attributeValue))
 
91494
{
 
91495
    return false;
 
91496
}
 
91497
if ( !failed )
 
91498
    attributeData->present_attributes |= forall__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
91499
 
 
91500
    break;
 
91501
    }
 
91502
    case HASH_ATTRIBUTE_CLASS:
 
91503
    {
 
91504
bool failed;
 
91505
#ifdef GENERATEDSAXPARSER_VALIDATION
 
91506
    if ( mValidate )
 
91507
    {
 
91508
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_FORALL, HASH_ATTRIBUTE_CLASS);
 
91509
    }
 
91510
    else
 
91511
    {
 
91512
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
91513
    }
 
91514
#else
 
91515
    {
 
91516
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
91517
    } // validation
 
91518
#endif
 
91519
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
91520
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
91521
        HASH_ELEMENT_FORALL,
 
91522
        HASH_ATTRIBUTE_CLASS,
 
91523
        attributeValue))
 
91524
{
 
91525
    return false;
 
91526
}
 
91527
#ifdef GENERATEDSAXPARSER_VALIDATION
 
91528
    if ( mValidate )
 
91529
    {
 
91530
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
91531
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
91532
    {
 
91533
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
91534
            simpleTypeValidationResult,
 
91535
            HASH_ELEMENT_FORALL,
 
91536
            HASH_ATTRIBUTE_CLASS,
 
91537
            attributeValue) )
 
91538
        {
 
91539
            return false;
 
91540
        }
 
91541
    }
 
91542
    } // validation
 
91543
#endif
 
91544
 
 
91545
if ( !failed )
 
91546
    attributeData->present_attributes |= forall__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
91547
 
 
91548
    break;
 
91549
    }
 
91550
    case HASH_ATTRIBUTE_STYLE:
 
91551
    {
 
91552
 
 
91553
attributeData->style = attributeValue;
 
91554
 
 
91555
    break;
 
91556
    }
 
91557
    case HASH_ATTRIBUTE_XREF:
 
91558
    {
 
91559
 
 
91560
attributeData->xref = attributeValue;
 
91561
 
 
91562
    break;
 
91563
    }
 
91564
    case HASH_ATTRIBUTE_ID:
 
91565
    {
 
91566
 
 
91567
attributeData->id = attributeValue;
 
91568
 
 
91569
    break;
 
91570
    }
 
91571
    case HASH_ATTRIBUTE_HREF:
 
91572
    {
 
91573
bool failed;
 
91574
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
91575
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
91576
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
91577
        HASH_ELEMENT_FORALL,
 
91578
        HASH_ATTRIBUTE_HREF,
 
91579
        attributeValue))
 
91580
{
 
91581
    return false;
 
91582
}
 
91583
if ( !failed )
 
91584
    attributeData->present_attributes |= forall__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
91585
 
 
91586
    break;
 
91587
    }
 
91588
    default:
 
91589
    {
 
91590
        if ( !attributeData->unknownAttributes.data )
 
91591
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
91592
        else
 
91593
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
91594
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
91595
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
91596
        attributeData->unknownAttributes.size += 2;
 
91597
 
 
91598
    }
 
91599
    }
 
91600
    }
 
91601
}
 
91602
if ((attributeData->present_attributes & forall__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
91603
{
 
91604
    attributeData->definitionURL = COLLADABU::URI("");
 
91605
}
 
91606
if ((attributeData->present_attributes & forall__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
91607
{
 
91608
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
91609
}
 
91610
if ((attributeData->present_attributes & forall__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
91611
{
 
91612
    attributeData->href = COLLADABU::URI("");
 
91613
}
 
91614
 
 
91615
 
 
91616
    return true;
 
91617
}
 
91618
 
 
91619
//---------------------------------------------------------------------
 
91620
bool ColladaParserAutoGen15Private::_preEnd__forall()
 
91621
{
 
91622
#ifdef GENERATEDSAXPARSER_VALIDATION
 
91623
    if ( mValidate )
 
91624
    {
 
91625
 
 
91626
        bool validationResult = _validateEnd__forall();
 
91627
        if ( !validationResult ) return false;
 
91628
 
 
91629
    } // validation
 
91630
#endif
 
91631
 
 
91632
    return true;
 
91633
}
 
91634
 
 
91635
//---------------------------------------------------------------------
 
91636
bool ColladaParserAutoGen15Private::_freeAttributes__forall( void* attributeData )
 
91637
{
 
91638
    forall__AttributeData* typedAttributeData = static_cast<forall__AttributeData*>(attributeData);
 
91639
    if (typedAttributeData->_class.data)
 
91640
    {
 
91641
        mStackMemoryManager.deleteObject();
 
91642
    }
 
91643
 
 
91644
    if (typedAttributeData->unknownAttributes.data)
 
91645
    {
 
91646
        mStackMemoryManager.deleteObject();
 
91647
    }
 
91648
 
 
91649
 
 
91650
    typedAttributeData->~forall__AttributeData();
 
91651
 
 
91652
    return true;
 
91653
}
 
91654
 
 
91655
//---------------------------------------------------------------------
 
91656
const implies__AttributeData implies__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
91657
 
 
91658
//---------------------------------------------------------------------
 
91659
bool ColladaParserAutoGen15Private::_data__implies( const ParserChar* text, size_t textLength )
 
91660
{
 
91661
    return true;
 
91662
}
 
91663
 
 
91664
//---------------------------------------------------------------------
 
91665
bool ColladaParserAutoGen15Private::_preBegin__implies( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
91666
{
 
91667
#ifdef GENERATEDSAXPARSER_VALIDATION
 
91668
    if ( mValidate )
 
91669
    {
 
91670
 
 
91671
        bool validationResult = _validateBegin__implies( attributes, attributeDataPtr, validationDataPtr );
 
91672
        if ( !validationResult ) return false;
 
91673
 
 
91674
    } // validation
 
91675
#endif
 
91676
 
 
91677
implies__AttributeData* attributeData = newData<implies__AttributeData>(attributeDataPtr);
 
91678
 
 
91679
const ParserChar** attributeArray = attributes.attributes;
 
91680
if ( attributeArray )
 
91681
{
 
91682
    while (true)
 
91683
    {
 
91684
        const ParserChar * attribute = *attributeArray;
 
91685
        if ( !attribute )
 
91686
            break;
 
91687
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
91688
        attributeArray++;
 
91689
        if ( !attributeArray )
 
91690
            return false;
 
91691
        const ParserChar* attributeValue = *attributeArray;
 
91692
        attributeArray++;
 
91693
 
 
91694
 
 
91695
    switch ( hash )
 
91696
    {
 
91697
    case HASH_ATTRIBUTE_ENCODING:
 
91698
    {
 
91699
 
 
91700
attributeData->encoding = attributeValue;
 
91701
 
 
91702
    break;
 
91703
    }
 
91704
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
91705
    {
 
91706
bool failed;
 
91707
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
91708
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
91709
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
91710
        HASH_ELEMENT_IMPLIES,
 
91711
        HASH_ATTRIBUTE_DEFINITIONURL,
 
91712
        attributeValue))
 
91713
{
 
91714
    return false;
 
91715
}
 
91716
if ( !failed )
 
91717
    attributeData->present_attributes |= implies__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
91718
 
 
91719
    break;
 
91720
    }
 
91721
    case HASH_ATTRIBUTE_CLASS:
 
91722
    {
 
91723
bool failed;
 
91724
#ifdef GENERATEDSAXPARSER_VALIDATION
 
91725
    if ( mValidate )
 
91726
    {
 
91727
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_IMPLIES, HASH_ATTRIBUTE_CLASS);
 
91728
    }
 
91729
    else
 
91730
    {
 
91731
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
91732
    }
 
91733
#else
 
91734
    {
 
91735
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
91736
    } // validation
 
91737
#endif
 
91738
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
91739
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
91740
        HASH_ELEMENT_IMPLIES,
 
91741
        HASH_ATTRIBUTE_CLASS,
 
91742
        attributeValue))
 
91743
{
 
91744
    return false;
 
91745
}
 
91746
#ifdef GENERATEDSAXPARSER_VALIDATION
 
91747
    if ( mValidate )
 
91748
    {
 
91749
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
91750
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
91751
    {
 
91752
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
91753
            simpleTypeValidationResult,
 
91754
            HASH_ELEMENT_IMPLIES,
 
91755
            HASH_ATTRIBUTE_CLASS,
 
91756
            attributeValue) )
 
91757
        {
 
91758
            return false;
 
91759
        }
 
91760
    }
 
91761
    } // validation
 
91762
#endif
 
91763
 
 
91764
if ( !failed )
 
91765
    attributeData->present_attributes |= implies__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
91766
 
 
91767
    break;
 
91768
    }
 
91769
    case HASH_ATTRIBUTE_STYLE:
 
91770
    {
 
91771
 
 
91772
attributeData->style = attributeValue;
 
91773
 
 
91774
    break;
 
91775
    }
 
91776
    case HASH_ATTRIBUTE_XREF:
 
91777
    {
 
91778
 
 
91779
attributeData->xref = attributeValue;
 
91780
 
 
91781
    break;
 
91782
    }
 
91783
    case HASH_ATTRIBUTE_ID:
 
91784
    {
 
91785
 
 
91786
attributeData->id = attributeValue;
 
91787
 
 
91788
    break;
 
91789
    }
 
91790
    case HASH_ATTRIBUTE_HREF:
 
91791
    {
 
91792
bool failed;
 
91793
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
91794
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
91795
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
91796
        HASH_ELEMENT_IMPLIES,
 
91797
        HASH_ATTRIBUTE_HREF,
 
91798
        attributeValue))
 
91799
{
 
91800
    return false;
 
91801
}
 
91802
if ( !failed )
 
91803
    attributeData->present_attributes |= implies__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
91804
 
 
91805
    break;
 
91806
    }
 
91807
    default:
 
91808
    {
 
91809
        if ( !attributeData->unknownAttributes.data )
 
91810
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
91811
        else
 
91812
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
91813
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
91814
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
91815
        attributeData->unknownAttributes.size += 2;
 
91816
 
 
91817
    }
 
91818
    }
 
91819
    }
 
91820
}
 
91821
if ((attributeData->present_attributes & implies__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
91822
{
 
91823
    attributeData->definitionURL = COLLADABU::URI("");
 
91824
}
 
91825
if ((attributeData->present_attributes & implies__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
91826
{
 
91827
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
91828
}
 
91829
if ((attributeData->present_attributes & implies__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
91830
{
 
91831
    attributeData->href = COLLADABU::URI("");
 
91832
}
 
91833
 
 
91834
 
 
91835
    return true;
 
91836
}
 
91837
 
 
91838
//---------------------------------------------------------------------
 
91839
bool ColladaParserAutoGen15Private::_preEnd__implies()
 
91840
{
 
91841
#ifdef GENERATEDSAXPARSER_VALIDATION
 
91842
    if ( mValidate )
 
91843
    {
 
91844
 
 
91845
        bool validationResult = _validateEnd__implies();
 
91846
        if ( !validationResult ) return false;
 
91847
 
 
91848
    } // validation
 
91849
#endif
 
91850
 
 
91851
    return true;
 
91852
}
 
91853
 
 
91854
//---------------------------------------------------------------------
 
91855
bool ColladaParserAutoGen15Private::_freeAttributes__implies( void* attributeData )
 
91856
{
 
91857
    implies__AttributeData* typedAttributeData = static_cast<implies__AttributeData*>(attributeData);
 
91858
    if (typedAttributeData->_class.data)
 
91859
    {
 
91860
        mStackMemoryManager.deleteObject();
 
91861
    }
 
91862
 
 
91863
    if (typedAttributeData->unknownAttributes.data)
 
91864
    {
 
91865
        mStackMemoryManager.deleteObject();
 
91866
    }
 
91867
 
 
91868
 
 
91869
    typedAttributeData->~implies__AttributeData();
 
91870
 
 
91871
    return true;
 
91872
}
 
91873
 
 
91874
//---------------------------------------------------------------------
 
91875
const naturalnumbers__AttributeData naturalnumbers__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
91876
 
 
91877
//---------------------------------------------------------------------
 
91878
bool ColladaParserAutoGen15Private::_data__naturalnumbers( const ParserChar* text, size_t textLength )
 
91879
{
 
91880
    return true;
 
91881
}
 
91882
 
 
91883
//---------------------------------------------------------------------
 
91884
bool ColladaParserAutoGen15Private::_preBegin__naturalnumbers( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
91885
{
 
91886
#ifdef GENERATEDSAXPARSER_VALIDATION
 
91887
    if ( mValidate )
 
91888
    {
 
91889
 
 
91890
        bool validationResult = _validateBegin__naturalnumbers( attributes, attributeDataPtr, validationDataPtr );
 
91891
        if ( !validationResult ) return false;
 
91892
 
 
91893
    } // validation
 
91894
#endif
 
91895
 
 
91896
naturalnumbers__AttributeData* attributeData = newData<naturalnumbers__AttributeData>(attributeDataPtr);
 
91897
 
 
91898
const ParserChar** attributeArray = attributes.attributes;
 
91899
if ( attributeArray )
 
91900
{
 
91901
    while (true)
 
91902
    {
 
91903
        const ParserChar * attribute = *attributeArray;
 
91904
        if ( !attribute )
 
91905
            break;
 
91906
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
91907
        attributeArray++;
 
91908
        if ( !attributeArray )
 
91909
            return false;
 
91910
        const ParserChar* attributeValue = *attributeArray;
 
91911
        attributeArray++;
 
91912
 
 
91913
 
 
91914
    switch ( hash )
 
91915
    {
 
91916
    case HASH_ATTRIBUTE_ENCODING:
 
91917
    {
 
91918
 
 
91919
attributeData->encoding = attributeValue;
 
91920
 
 
91921
    break;
 
91922
    }
 
91923
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
91924
    {
 
91925
bool failed;
 
91926
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
91927
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
91928
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
91929
        HASH_ELEMENT_NATURALNUMBERS,
 
91930
        HASH_ATTRIBUTE_DEFINITIONURL,
 
91931
        attributeValue))
 
91932
{
 
91933
    return false;
 
91934
}
 
91935
if ( !failed )
 
91936
    attributeData->present_attributes |= naturalnumbers__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
91937
 
 
91938
    break;
 
91939
    }
 
91940
    case HASH_ATTRIBUTE_CLASS:
 
91941
    {
 
91942
bool failed;
 
91943
#ifdef GENERATEDSAXPARSER_VALIDATION
 
91944
    if ( mValidate )
 
91945
    {
 
91946
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_NATURALNUMBERS, HASH_ATTRIBUTE_CLASS);
 
91947
    }
 
91948
    else
 
91949
    {
 
91950
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
91951
    }
 
91952
#else
 
91953
    {
 
91954
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
91955
    } // validation
 
91956
#endif
 
91957
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
91958
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
91959
        HASH_ELEMENT_NATURALNUMBERS,
 
91960
        HASH_ATTRIBUTE_CLASS,
 
91961
        attributeValue))
 
91962
{
 
91963
    return false;
 
91964
}
 
91965
#ifdef GENERATEDSAXPARSER_VALIDATION
 
91966
    if ( mValidate )
 
91967
    {
 
91968
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
91969
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
91970
    {
 
91971
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
91972
            simpleTypeValidationResult,
 
91973
            HASH_ELEMENT_NATURALNUMBERS,
 
91974
            HASH_ATTRIBUTE_CLASS,
 
91975
            attributeValue) )
 
91976
        {
 
91977
            return false;
 
91978
        }
 
91979
    }
 
91980
    } // validation
 
91981
#endif
 
91982
 
 
91983
if ( !failed )
 
91984
    attributeData->present_attributes |= naturalnumbers__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
91985
 
 
91986
    break;
 
91987
    }
 
91988
    case HASH_ATTRIBUTE_STYLE:
 
91989
    {
 
91990
 
 
91991
attributeData->style = attributeValue;
 
91992
 
 
91993
    break;
 
91994
    }
 
91995
    case HASH_ATTRIBUTE_XREF:
 
91996
    {
 
91997
 
 
91998
attributeData->xref = attributeValue;
 
91999
 
 
92000
    break;
 
92001
    }
 
92002
    case HASH_ATTRIBUTE_ID:
 
92003
    {
 
92004
 
 
92005
attributeData->id = attributeValue;
 
92006
 
 
92007
    break;
 
92008
    }
 
92009
    case HASH_ATTRIBUTE_HREF:
 
92010
    {
 
92011
bool failed;
 
92012
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
92013
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
92014
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
92015
        HASH_ELEMENT_NATURALNUMBERS,
 
92016
        HASH_ATTRIBUTE_HREF,
 
92017
        attributeValue))
 
92018
{
 
92019
    return false;
 
92020
}
 
92021
if ( !failed )
 
92022
    attributeData->present_attributes |= naturalnumbers__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
92023
 
 
92024
    break;
 
92025
    }
 
92026
    default:
 
92027
    {
 
92028
        if ( !attributeData->unknownAttributes.data )
 
92029
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
92030
        else
 
92031
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
92032
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
92033
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
92034
        attributeData->unknownAttributes.size += 2;
 
92035
 
 
92036
    }
 
92037
    }
 
92038
    }
 
92039
}
 
92040
if ((attributeData->present_attributes & naturalnumbers__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
92041
{
 
92042
    attributeData->definitionURL = COLLADABU::URI("");
 
92043
}
 
92044
if ((attributeData->present_attributes & naturalnumbers__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
92045
{
 
92046
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
92047
}
 
92048
if ((attributeData->present_attributes & naturalnumbers__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
92049
{
 
92050
    attributeData->href = COLLADABU::URI("");
 
92051
}
 
92052
 
 
92053
 
 
92054
    return true;
 
92055
}
 
92056
 
 
92057
//---------------------------------------------------------------------
 
92058
bool ColladaParserAutoGen15Private::_preEnd__naturalnumbers()
 
92059
{
 
92060
#ifdef GENERATEDSAXPARSER_VALIDATION
 
92061
    if ( mValidate )
 
92062
    {
 
92063
 
 
92064
        bool validationResult = _validateEnd__naturalnumbers();
 
92065
        if ( !validationResult ) return false;
 
92066
 
 
92067
    } // validation
 
92068
#endif
 
92069
 
 
92070
    return true;
 
92071
}
 
92072
 
 
92073
//---------------------------------------------------------------------
 
92074
bool ColladaParserAutoGen15Private::_freeAttributes__naturalnumbers( void* attributeData )
 
92075
{
 
92076
    naturalnumbers__AttributeData* typedAttributeData = static_cast<naturalnumbers__AttributeData*>(attributeData);
 
92077
    if (typedAttributeData->_class.data)
 
92078
    {
 
92079
        mStackMemoryManager.deleteObject();
 
92080
    }
 
92081
 
 
92082
    if (typedAttributeData->unknownAttributes.data)
 
92083
    {
 
92084
        mStackMemoryManager.deleteObject();
 
92085
    }
 
92086
 
 
92087
 
 
92088
    typedAttributeData->~naturalnumbers__AttributeData();
 
92089
 
 
92090
    return true;
 
92091
}
 
92092
 
 
92093
//---------------------------------------------------------------------
 
92094
const primes__AttributeData primes__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
92095
 
 
92096
//---------------------------------------------------------------------
 
92097
bool ColladaParserAutoGen15Private::_data__primes( const ParserChar* text, size_t textLength )
 
92098
{
 
92099
    return true;
 
92100
}
 
92101
 
 
92102
//---------------------------------------------------------------------
 
92103
bool ColladaParserAutoGen15Private::_preBegin__primes( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
92104
{
 
92105
#ifdef GENERATEDSAXPARSER_VALIDATION
 
92106
    if ( mValidate )
 
92107
    {
 
92108
 
 
92109
        bool validationResult = _validateBegin__primes( attributes, attributeDataPtr, validationDataPtr );
 
92110
        if ( !validationResult ) return false;
 
92111
 
 
92112
    } // validation
 
92113
#endif
 
92114
 
 
92115
primes__AttributeData* attributeData = newData<primes__AttributeData>(attributeDataPtr);
 
92116
 
 
92117
const ParserChar** attributeArray = attributes.attributes;
 
92118
if ( attributeArray )
 
92119
{
 
92120
    while (true)
 
92121
    {
 
92122
        const ParserChar * attribute = *attributeArray;
 
92123
        if ( !attribute )
 
92124
            break;
 
92125
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
92126
        attributeArray++;
 
92127
        if ( !attributeArray )
 
92128
            return false;
 
92129
        const ParserChar* attributeValue = *attributeArray;
 
92130
        attributeArray++;
 
92131
 
 
92132
 
 
92133
    switch ( hash )
 
92134
    {
 
92135
    case HASH_ATTRIBUTE_ENCODING:
 
92136
    {
 
92137
 
 
92138
attributeData->encoding = attributeValue;
 
92139
 
 
92140
    break;
 
92141
    }
 
92142
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
92143
    {
 
92144
bool failed;
 
92145
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
92146
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
92147
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
92148
        HASH_ELEMENT_PRIMES,
 
92149
        HASH_ATTRIBUTE_DEFINITIONURL,
 
92150
        attributeValue))
 
92151
{
 
92152
    return false;
 
92153
}
 
92154
if ( !failed )
 
92155
    attributeData->present_attributes |= primes__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
92156
 
 
92157
    break;
 
92158
    }
 
92159
    case HASH_ATTRIBUTE_CLASS:
 
92160
    {
 
92161
bool failed;
 
92162
#ifdef GENERATEDSAXPARSER_VALIDATION
 
92163
    if ( mValidate )
 
92164
    {
 
92165
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_PRIMES, HASH_ATTRIBUTE_CLASS);
 
92166
    }
 
92167
    else
 
92168
    {
 
92169
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
92170
    }
 
92171
#else
 
92172
    {
 
92173
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
92174
    } // validation
 
92175
#endif
 
92176
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
92177
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
92178
        HASH_ELEMENT_PRIMES,
 
92179
        HASH_ATTRIBUTE_CLASS,
 
92180
        attributeValue))
 
92181
{
 
92182
    return false;
 
92183
}
 
92184
#ifdef GENERATEDSAXPARSER_VALIDATION
 
92185
    if ( mValidate )
 
92186
    {
 
92187
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
92188
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
92189
    {
 
92190
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
92191
            simpleTypeValidationResult,
 
92192
            HASH_ELEMENT_PRIMES,
 
92193
            HASH_ATTRIBUTE_CLASS,
 
92194
            attributeValue) )
 
92195
        {
 
92196
            return false;
 
92197
        }
 
92198
    }
 
92199
    } // validation
 
92200
#endif
 
92201
 
 
92202
if ( !failed )
 
92203
    attributeData->present_attributes |= primes__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
92204
 
 
92205
    break;
 
92206
    }
 
92207
    case HASH_ATTRIBUTE_STYLE:
 
92208
    {
 
92209
 
 
92210
attributeData->style = attributeValue;
 
92211
 
 
92212
    break;
 
92213
    }
 
92214
    case HASH_ATTRIBUTE_XREF:
 
92215
    {
 
92216
 
 
92217
attributeData->xref = attributeValue;
 
92218
 
 
92219
    break;
 
92220
    }
 
92221
    case HASH_ATTRIBUTE_ID:
 
92222
    {
 
92223
 
 
92224
attributeData->id = attributeValue;
 
92225
 
 
92226
    break;
 
92227
    }
 
92228
    case HASH_ATTRIBUTE_HREF:
 
92229
    {
 
92230
bool failed;
 
92231
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
92232
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
92233
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
92234
        HASH_ELEMENT_PRIMES,
 
92235
        HASH_ATTRIBUTE_HREF,
 
92236
        attributeValue))
 
92237
{
 
92238
    return false;
 
92239
}
 
92240
if ( !failed )
 
92241
    attributeData->present_attributes |= primes__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
92242
 
 
92243
    break;
 
92244
    }
 
92245
    default:
 
92246
    {
 
92247
        if ( !attributeData->unknownAttributes.data )
 
92248
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
92249
        else
 
92250
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
92251
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
92252
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
92253
        attributeData->unknownAttributes.size += 2;
 
92254
 
 
92255
    }
 
92256
    }
 
92257
    }
 
92258
}
 
92259
if ((attributeData->present_attributes & primes__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
92260
{
 
92261
    attributeData->definitionURL = COLLADABU::URI("");
 
92262
}
 
92263
if ((attributeData->present_attributes & primes__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
92264
{
 
92265
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
92266
}
 
92267
if ((attributeData->present_attributes & primes__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
92268
{
 
92269
    attributeData->href = COLLADABU::URI("");
 
92270
}
 
92271
 
 
92272
 
 
92273
    return true;
 
92274
}
 
92275
 
 
92276
//---------------------------------------------------------------------
 
92277
bool ColladaParserAutoGen15Private::_preEnd__primes()
 
92278
{
 
92279
#ifdef GENERATEDSAXPARSER_VALIDATION
 
92280
    if ( mValidate )
 
92281
    {
 
92282
 
 
92283
        bool validationResult = _validateEnd__primes();
 
92284
        if ( !validationResult ) return false;
 
92285
 
 
92286
    } // validation
 
92287
#endif
 
92288
 
 
92289
    return true;
 
92290
}
 
92291
 
 
92292
//---------------------------------------------------------------------
 
92293
bool ColladaParserAutoGen15Private::_freeAttributes__primes( void* attributeData )
 
92294
{
 
92295
    primes__AttributeData* typedAttributeData = static_cast<primes__AttributeData*>(attributeData);
 
92296
    if (typedAttributeData->_class.data)
 
92297
    {
 
92298
        mStackMemoryManager.deleteObject();
 
92299
    }
 
92300
 
 
92301
    if (typedAttributeData->unknownAttributes.data)
 
92302
    {
 
92303
        mStackMemoryManager.deleteObject();
 
92304
    }
 
92305
 
 
92306
 
 
92307
    typedAttributeData->~primes__AttributeData();
 
92308
 
 
92309
    return true;
 
92310
}
 
92311
 
 
92312
//---------------------------------------------------------------------
 
92313
const integers__AttributeData integers__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
92314
 
 
92315
//---------------------------------------------------------------------
 
92316
bool ColladaParserAutoGen15Private::_data__integers( const ParserChar* text, size_t textLength )
 
92317
{
 
92318
    return true;
 
92319
}
 
92320
 
 
92321
//---------------------------------------------------------------------
 
92322
bool ColladaParserAutoGen15Private::_preBegin__integers( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
92323
{
 
92324
#ifdef GENERATEDSAXPARSER_VALIDATION
 
92325
    if ( mValidate )
 
92326
    {
 
92327
 
 
92328
        bool validationResult = _validateBegin__integers( attributes, attributeDataPtr, validationDataPtr );
 
92329
        if ( !validationResult ) return false;
 
92330
 
 
92331
    } // validation
 
92332
#endif
 
92333
 
 
92334
integers__AttributeData* attributeData = newData<integers__AttributeData>(attributeDataPtr);
 
92335
 
 
92336
const ParserChar** attributeArray = attributes.attributes;
 
92337
if ( attributeArray )
 
92338
{
 
92339
    while (true)
 
92340
    {
 
92341
        const ParserChar * attribute = *attributeArray;
 
92342
        if ( !attribute )
 
92343
            break;
 
92344
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
92345
        attributeArray++;
 
92346
        if ( !attributeArray )
 
92347
            return false;
 
92348
        const ParserChar* attributeValue = *attributeArray;
 
92349
        attributeArray++;
 
92350
 
 
92351
 
 
92352
    switch ( hash )
 
92353
    {
 
92354
    case HASH_ATTRIBUTE_ENCODING:
 
92355
    {
 
92356
 
 
92357
attributeData->encoding = attributeValue;
 
92358
 
 
92359
    break;
 
92360
    }
 
92361
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
92362
    {
 
92363
bool failed;
 
92364
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
92365
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
92366
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
92367
        HASH_ELEMENT_INTEGERS,
 
92368
        HASH_ATTRIBUTE_DEFINITIONURL,
 
92369
        attributeValue))
 
92370
{
 
92371
    return false;
 
92372
}
 
92373
if ( !failed )
 
92374
    attributeData->present_attributes |= integers__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
92375
 
 
92376
    break;
 
92377
    }
 
92378
    case HASH_ATTRIBUTE_CLASS:
 
92379
    {
 
92380
bool failed;
 
92381
#ifdef GENERATEDSAXPARSER_VALIDATION
 
92382
    if ( mValidate )
 
92383
    {
 
92384
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_INTEGERS, HASH_ATTRIBUTE_CLASS);
 
92385
    }
 
92386
    else
 
92387
    {
 
92388
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
92389
    }
 
92390
#else
 
92391
    {
 
92392
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
92393
    } // validation
 
92394
#endif
 
92395
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
92396
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
92397
        HASH_ELEMENT_INTEGERS,
 
92398
        HASH_ATTRIBUTE_CLASS,
 
92399
        attributeValue))
 
92400
{
 
92401
    return false;
 
92402
}
 
92403
#ifdef GENERATEDSAXPARSER_VALIDATION
 
92404
    if ( mValidate )
 
92405
    {
 
92406
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
92407
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
92408
    {
 
92409
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
92410
            simpleTypeValidationResult,
 
92411
            HASH_ELEMENT_INTEGERS,
 
92412
            HASH_ATTRIBUTE_CLASS,
 
92413
            attributeValue) )
 
92414
        {
 
92415
            return false;
 
92416
        }
 
92417
    }
 
92418
    } // validation
 
92419
#endif
 
92420
 
 
92421
if ( !failed )
 
92422
    attributeData->present_attributes |= integers__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
92423
 
 
92424
    break;
 
92425
    }
 
92426
    case HASH_ATTRIBUTE_STYLE:
 
92427
    {
 
92428
 
 
92429
attributeData->style = attributeValue;
 
92430
 
 
92431
    break;
 
92432
    }
 
92433
    case HASH_ATTRIBUTE_XREF:
 
92434
    {
 
92435
 
 
92436
attributeData->xref = attributeValue;
 
92437
 
 
92438
    break;
 
92439
    }
 
92440
    case HASH_ATTRIBUTE_ID:
 
92441
    {
 
92442
 
 
92443
attributeData->id = attributeValue;
 
92444
 
 
92445
    break;
 
92446
    }
 
92447
    case HASH_ATTRIBUTE_HREF:
 
92448
    {
 
92449
bool failed;
 
92450
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
92451
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
92452
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
92453
        HASH_ELEMENT_INTEGERS,
 
92454
        HASH_ATTRIBUTE_HREF,
 
92455
        attributeValue))
 
92456
{
 
92457
    return false;
 
92458
}
 
92459
if ( !failed )
 
92460
    attributeData->present_attributes |= integers__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
92461
 
 
92462
    break;
 
92463
    }
 
92464
    default:
 
92465
    {
 
92466
        if ( !attributeData->unknownAttributes.data )
 
92467
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
92468
        else
 
92469
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
92470
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
92471
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
92472
        attributeData->unknownAttributes.size += 2;
 
92473
 
 
92474
    }
 
92475
    }
 
92476
    }
 
92477
}
 
92478
if ((attributeData->present_attributes & integers__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
92479
{
 
92480
    attributeData->definitionURL = COLLADABU::URI("");
 
92481
}
 
92482
if ((attributeData->present_attributes & integers__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
92483
{
 
92484
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
92485
}
 
92486
if ((attributeData->present_attributes & integers__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
92487
{
 
92488
    attributeData->href = COLLADABU::URI("");
 
92489
}
 
92490
 
 
92491
 
 
92492
    return true;
 
92493
}
 
92494
 
 
92495
//---------------------------------------------------------------------
 
92496
bool ColladaParserAutoGen15Private::_preEnd__integers()
 
92497
{
 
92498
#ifdef GENERATEDSAXPARSER_VALIDATION
 
92499
    if ( mValidate )
 
92500
    {
 
92501
 
 
92502
        bool validationResult = _validateEnd__integers();
 
92503
        if ( !validationResult ) return false;
 
92504
 
 
92505
    } // validation
 
92506
#endif
 
92507
 
 
92508
    return true;
 
92509
}
 
92510
 
 
92511
//---------------------------------------------------------------------
 
92512
bool ColladaParserAutoGen15Private::_freeAttributes__integers( void* attributeData )
 
92513
{
 
92514
    integers__AttributeData* typedAttributeData = static_cast<integers__AttributeData*>(attributeData);
 
92515
    if (typedAttributeData->_class.data)
 
92516
    {
 
92517
        mStackMemoryManager.deleteObject();
 
92518
    }
 
92519
 
 
92520
    if (typedAttributeData->unknownAttributes.data)
 
92521
    {
 
92522
        mStackMemoryManager.deleteObject();
 
92523
    }
 
92524
 
 
92525
 
 
92526
    typedAttributeData->~integers__AttributeData();
 
92527
 
 
92528
    return true;
 
92529
}
 
92530
 
 
92531
//---------------------------------------------------------------------
 
92532
const rationals__AttributeData rationals__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
92533
 
 
92534
//---------------------------------------------------------------------
 
92535
bool ColladaParserAutoGen15Private::_data__rationals( const ParserChar* text, size_t textLength )
 
92536
{
 
92537
    return true;
 
92538
}
 
92539
 
 
92540
//---------------------------------------------------------------------
 
92541
bool ColladaParserAutoGen15Private::_preBegin__rationals( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
92542
{
 
92543
#ifdef GENERATEDSAXPARSER_VALIDATION
 
92544
    if ( mValidate )
 
92545
    {
 
92546
 
 
92547
        bool validationResult = _validateBegin__rationals( attributes, attributeDataPtr, validationDataPtr );
 
92548
        if ( !validationResult ) return false;
 
92549
 
 
92550
    } // validation
 
92551
#endif
 
92552
 
 
92553
rationals__AttributeData* attributeData = newData<rationals__AttributeData>(attributeDataPtr);
 
92554
 
 
92555
const ParserChar** attributeArray = attributes.attributes;
 
92556
if ( attributeArray )
 
92557
{
 
92558
    while (true)
 
92559
    {
 
92560
        const ParserChar * attribute = *attributeArray;
 
92561
        if ( !attribute )
 
92562
            break;
 
92563
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
92564
        attributeArray++;
 
92565
        if ( !attributeArray )
 
92566
            return false;
 
92567
        const ParserChar* attributeValue = *attributeArray;
 
92568
        attributeArray++;
 
92569
 
 
92570
 
 
92571
    switch ( hash )
 
92572
    {
 
92573
    case HASH_ATTRIBUTE_ENCODING:
 
92574
    {
 
92575
 
 
92576
attributeData->encoding = attributeValue;
 
92577
 
 
92578
    break;
 
92579
    }
 
92580
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
92581
    {
 
92582
bool failed;
 
92583
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
92584
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
92585
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
92586
        HASH_ELEMENT_RATIONALS,
 
92587
        HASH_ATTRIBUTE_DEFINITIONURL,
 
92588
        attributeValue))
 
92589
{
 
92590
    return false;
 
92591
}
 
92592
if ( !failed )
 
92593
    attributeData->present_attributes |= rationals__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
92594
 
 
92595
    break;
 
92596
    }
 
92597
    case HASH_ATTRIBUTE_CLASS:
 
92598
    {
 
92599
bool failed;
 
92600
#ifdef GENERATEDSAXPARSER_VALIDATION
 
92601
    if ( mValidate )
 
92602
    {
 
92603
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_RATIONALS, HASH_ATTRIBUTE_CLASS);
 
92604
    }
 
92605
    else
 
92606
    {
 
92607
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
92608
    }
 
92609
#else
 
92610
    {
 
92611
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
92612
    } // validation
 
92613
#endif
 
92614
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
92615
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
92616
        HASH_ELEMENT_RATIONALS,
 
92617
        HASH_ATTRIBUTE_CLASS,
 
92618
        attributeValue))
 
92619
{
 
92620
    return false;
 
92621
}
 
92622
#ifdef GENERATEDSAXPARSER_VALIDATION
 
92623
    if ( mValidate )
 
92624
    {
 
92625
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
92626
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
92627
    {
 
92628
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
92629
            simpleTypeValidationResult,
 
92630
            HASH_ELEMENT_RATIONALS,
 
92631
            HASH_ATTRIBUTE_CLASS,
 
92632
            attributeValue) )
 
92633
        {
 
92634
            return false;
 
92635
        }
 
92636
    }
 
92637
    } // validation
 
92638
#endif
 
92639
 
 
92640
if ( !failed )
 
92641
    attributeData->present_attributes |= rationals__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
92642
 
 
92643
    break;
 
92644
    }
 
92645
    case HASH_ATTRIBUTE_STYLE:
 
92646
    {
 
92647
 
 
92648
attributeData->style = attributeValue;
 
92649
 
 
92650
    break;
 
92651
    }
 
92652
    case HASH_ATTRIBUTE_XREF:
 
92653
    {
 
92654
 
 
92655
attributeData->xref = attributeValue;
 
92656
 
 
92657
    break;
 
92658
    }
 
92659
    case HASH_ATTRIBUTE_ID:
 
92660
    {
 
92661
 
 
92662
attributeData->id = attributeValue;
 
92663
 
 
92664
    break;
 
92665
    }
 
92666
    case HASH_ATTRIBUTE_HREF:
 
92667
    {
 
92668
bool failed;
 
92669
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
92670
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
92671
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
92672
        HASH_ELEMENT_RATIONALS,
 
92673
        HASH_ATTRIBUTE_HREF,
 
92674
        attributeValue))
 
92675
{
 
92676
    return false;
 
92677
}
 
92678
if ( !failed )
 
92679
    attributeData->present_attributes |= rationals__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
92680
 
 
92681
    break;
 
92682
    }
 
92683
    default:
 
92684
    {
 
92685
        if ( !attributeData->unknownAttributes.data )
 
92686
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
92687
        else
 
92688
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
92689
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
92690
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
92691
        attributeData->unknownAttributes.size += 2;
 
92692
 
 
92693
    }
 
92694
    }
 
92695
    }
 
92696
}
 
92697
if ((attributeData->present_attributes & rationals__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
92698
{
 
92699
    attributeData->definitionURL = COLLADABU::URI("");
 
92700
}
 
92701
if ((attributeData->present_attributes & rationals__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
92702
{
 
92703
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
92704
}
 
92705
if ((attributeData->present_attributes & rationals__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
92706
{
 
92707
    attributeData->href = COLLADABU::URI("");
 
92708
}
 
92709
 
 
92710
 
 
92711
    return true;
 
92712
}
 
92713
 
 
92714
//---------------------------------------------------------------------
 
92715
bool ColladaParserAutoGen15Private::_preEnd__rationals()
 
92716
{
 
92717
#ifdef GENERATEDSAXPARSER_VALIDATION
 
92718
    if ( mValidate )
 
92719
    {
 
92720
 
 
92721
        bool validationResult = _validateEnd__rationals();
 
92722
        if ( !validationResult ) return false;
 
92723
 
 
92724
    } // validation
 
92725
#endif
 
92726
 
 
92727
    return true;
 
92728
}
 
92729
 
 
92730
//---------------------------------------------------------------------
 
92731
bool ColladaParserAutoGen15Private::_freeAttributes__rationals( void* attributeData )
 
92732
{
 
92733
    rationals__AttributeData* typedAttributeData = static_cast<rationals__AttributeData*>(attributeData);
 
92734
    if (typedAttributeData->_class.data)
 
92735
    {
 
92736
        mStackMemoryManager.deleteObject();
 
92737
    }
 
92738
 
 
92739
    if (typedAttributeData->unknownAttributes.data)
 
92740
    {
 
92741
        mStackMemoryManager.deleteObject();
 
92742
    }
 
92743
 
 
92744
 
 
92745
    typedAttributeData->~rationals__AttributeData();
 
92746
 
 
92747
    return true;
 
92748
}
 
92749
 
 
92750
//---------------------------------------------------------------------
 
92751
const reals__AttributeData reals__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
92752
 
 
92753
//---------------------------------------------------------------------
 
92754
bool ColladaParserAutoGen15Private::_data__reals( const ParserChar* text, size_t textLength )
 
92755
{
 
92756
    return true;
 
92757
}
 
92758
 
 
92759
//---------------------------------------------------------------------
 
92760
bool ColladaParserAutoGen15Private::_preBegin__reals( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
92761
{
 
92762
#ifdef GENERATEDSAXPARSER_VALIDATION
 
92763
    if ( mValidate )
 
92764
    {
 
92765
 
 
92766
        bool validationResult = _validateBegin__reals( attributes, attributeDataPtr, validationDataPtr );
 
92767
        if ( !validationResult ) return false;
 
92768
 
 
92769
    } // validation
 
92770
#endif
 
92771
 
 
92772
reals__AttributeData* attributeData = newData<reals__AttributeData>(attributeDataPtr);
 
92773
 
 
92774
const ParserChar** attributeArray = attributes.attributes;
 
92775
if ( attributeArray )
 
92776
{
 
92777
    while (true)
 
92778
    {
 
92779
        const ParserChar * attribute = *attributeArray;
 
92780
        if ( !attribute )
 
92781
            break;
 
92782
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
92783
        attributeArray++;
 
92784
        if ( !attributeArray )
 
92785
            return false;
 
92786
        const ParserChar* attributeValue = *attributeArray;
 
92787
        attributeArray++;
 
92788
 
 
92789
 
 
92790
    switch ( hash )
 
92791
    {
 
92792
    case HASH_ATTRIBUTE_ENCODING:
 
92793
    {
 
92794
 
 
92795
attributeData->encoding = attributeValue;
 
92796
 
 
92797
    break;
 
92798
    }
 
92799
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
92800
    {
 
92801
bool failed;
 
92802
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
92803
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
92804
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
92805
        HASH_ELEMENT_REALS,
 
92806
        HASH_ATTRIBUTE_DEFINITIONURL,
 
92807
        attributeValue))
 
92808
{
 
92809
    return false;
 
92810
}
 
92811
if ( !failed )
 
92812
    attributeData->present_attributes |= reals__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
92813
 
 
92814
    break;
 
92815
    }
 
92816
    case HASH_ATTRIBUTE_CLASS:
 
92817
    {
 
92818
bool failed;
 
92819
#ifdef GENERATEDSAXPARSER_VALIDATION
 
92820
    if ( mValidate )
 
92821
    {
 
92822
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_REALS, HASH_ATTRIBUTE_CLASS);
 
92823
    }
 
92824
    else
 
92825
    {
 
92826
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
92827
    }
 
92828
#else
 
92829
    {
 
92830
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
92831
    } // validation
 
92832
#endif
 
92833
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
92834
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
92835
        HASH_ELEMENT_REALS,
 
92836
        HASH_ATTRIBUTE_CLASS,
 
92837
        attributeValue))
 
92838
{
 
92839
    return false;
 
92840
}
 
92841
#ifdef GENERATEDSAXPARSER_VALIDATION
 
92842
    if ( mValidate )
 
92843
    {
 
92844
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
92845
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
92846
    {
 
92847
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
92848
            simpleTypeValidationResult,
 
92849
            HASH_ELEMENT_REALS,
 
92850
            HASH_ATTRIBUTE_CLASS,
 
92851
            attributeValue) )
 
92852
        {
 
92853
            return false;
 
92854
        }
 
92855
    }
 
92856
    } // validation
 
92857
#endif
 
92858
 
 
92859
if ( !failed )
 
92860
    attributeData->present_attributes |= reals__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
92861
 
 
92862
    break;
 
92863
    }
 
92864
    case HASH_ATTRIBUTE_STYLE:
 
92865
    {
 
92866
 
 
92867
attributeData->style = attributeValue;
 
92868
 
 
92869
    break;
 
92870
    }
 
92871
    case HASH_ATTRIBUTE_XREF:
 
92872
    {
 
92873
 
 
92874
attributeData->xref = attributeValue;
 
92875
 
 
92876
    break;
 
92877
    }
 
92878
    case HASH_ATTRIBUTE_ID:
 
92879
    {
 
92880
 
 
92881
attributeData->id = attributeValue;
 
92882
 
 
92883
    break;
 
92884
    }
 
92885
    case HASH_ATTRIBUTE_HREF:
 
92886
    {
 
92887
bool failed;
 
92888
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
92889
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
92890
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
92891
        HASH_ELEMENT_REALS,
 
92892
        HASH_ATTRIBUTE_HREF,
 
92893
        attributeValue))
 
92894
{
 
92895
    return false;
 
92896
}
 
92897
if ( !failed )
 
92898
    attributeData->present_attributes |= reals__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
92899
 
 
92900
    break;
 
92901
    }
 
92902
    default:
 
92903
    {
 
92904
        if ( !attributeData->unknownAttributes.data )
 
92905
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
92906
        else
 
92907
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
92908
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
92909
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
92910
        attributeData->unknownAttributes.size += 2;
 
92911
 
 
92912
    }
 
92913
    }
 
92914
    }
 
92915
}
 
92916
if ((attributeData->present_attributes & reals__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
92917
{
 
92918
    attributeData->definitionURL = COLLADABU::URI("");
 
92919
}
 
92920
if ((attributeData->present_attributes & reals__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
92921
{
 
92922
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
92923
}
 
92924
if ((attributeData->present_attributes & reals__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
92925
{
 
92926
    attributeData->href = COLLADABU::URI("");
 
92927
}
 
92928
 
 
92929
 
 
92930
    return true;
 
92931
}
 
92932
 
 
92933
//---------------------------------------------------------------------
 
92934
bool ColladaParserAutoGen15Private::_preEnd__reals()
 
92935
{
 
92936
#ifdef GENERATEDSAXPARSER_VALIDATION
 
92937
    if ( mValidate )
 
92938
    {
 
92939
 
 
92940
        bool validationResult = _validateEnd__reals();
 
92941
        if ( !validationResult ) return false;
 
92942
 
 
92943
    } // validation
 
92944
#endif
 
92945
 
 
92946
    return true;
 
92947
}
 
92948
 
 
92949
//---------------------------------------------------------------------
 
92950
bool ColladaParserAutoGen15Private::_freeAttributes__reals( void* attributeData )
 
92951
{
 
92952
    reals__AttributeData* typedAttributeData = static_cast<reals__AttributeData*>(attributeData);
 
92953
    if (typedAttributeData->_class.data)
 
92954
    {
 
92955
        mStackMemoryManager.deleteObject();
 
92956
    }
 
92957
 
 
92958
    if (typedAttributeData->unknownAttributes.data)
 
92959
    {
 
92960
        mStackMemoryManager.deleteObject();
 
92961
    }
 
92962
 
 
92963
 
 
92964
    typedAttributeData->~reals__AttributeData();
 
92965
 
 
92966
    return true;
 
92967
}
 
92968
 
 
92969
//---------------------------------------------------------------------
 
92970
const complexes__AttributeData complexes__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
92971
 
 
92972
//---------------------------------------------------------------------
 
92973
bool ColladaParserAutoGen15Private::_data__complexes( const ParserChar* text, size_t textLength )
 
92974
{
 
92975
    return true;
 
92976
}
 
92977
 
 
92978
//---------------------------------------------------------------------
 
92979
bool ColladaParserAutoGen15Private::_preBegin__complexes( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
92980
{
 
92981
#ifdef GENERATEDSAXPARSER_VALIDATION
 
92982
    if ( mValidate )
 
92983
    {
 
92984
 
 
92985
        bool validationResult = _validateBegin__complexes( attributes, attributeDataPtr, validationDataPtr );
 
92986
        if ( !validationResult ) return false;
 
92987
 
 
92988
    } // validation
 
92989
#endif
 
92990
 
 
92991
complexes__AttributeData* attributeData = newData<complexes__AttributeData>(attributeDataPtr);
 
92992
 
 
92993
const ParserChar** attributeArray = attributes.attributes;
 
92994
if ( attributeArray )
 
92995
{
 
92996
    while (true)
 
92997
    {
 
92998
        const ParserChar * attribute = *attributeArray;
 
92999
        if ( !attribute )
 
93000
            break;
 
93001
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
93002
        attributeArray++;
 
93003
        if ( !attributeArray )
 
93004
            return false;
 
93005
        const ParserChar* attributeValue = *attributeArray;
 
93006
        attributeArray++;
 
93007
 
 
93008
 
 
93009
    switch ( hash )
 
93010
    {
 
93011
    case HASH_ATTRIBUTE_ENCODING:
 
93012
    {
 
93013
 
 
93014
attributeData->encoding = attributeValue;
 
93015
 
 
93016
    break;
 
93017
    }
 
93018
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
93019
    {
 
93020
bool failed;
 
93021
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
93022
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
93023
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
93024
        HASH_ELEMENT_COMPLEXES,
 
93025
        HASH_ATTRIBUTE_DEFINITIONURL,
 
93026
        attributeValue))
 
93027
{
 
93028
    return false;
 
93029
}
 
93030
if ( !failed )
 
93031
    attributeData->present_attributes |= complexes__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
93032
 
 
93033
    break;
 
93034
    }
 
93035
    case HASH_ATTRIBUTE_CLASS:
 
93036
    {
 
93037
bool failed;
 
93038
#ifdef GENERATEDSAXPARSER_VALIDATION
 
93039
    if ( mValidate )
 
93040
    {
 
93041
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_COMPLEXES, HASH_ATTRIBUTE_CLASS);
 
93042
    }
 
93043
    else
 
93044
    {
 
93045
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
93046
    }
 
93047
#else
 
93048
    {
 
93049
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
93050
    } // validation
 
93051
#endif
 
93052
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
93053
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
93054
        HASH_ELEMENT_COMPLEXES,
 
93055
        HASH_ATTRIBUTE_CLASS,
 
93056
        attributeValue))
 
93057
{
 
93058
    return false;
 
93059
}
 
93060
#ifdef GENERATEDSAXPARSER_VALIDATION
 
93061
    if ( mValidate )
 
93062
    {
 
93063
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
93064
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
93065
    {
 
93066
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
93067
            simpleTypeValidationResult,
 
93068
            HASH_ELEMENT_COMPLEXES,
 
93069
            HASH_ATTRIBUTE_CLASS,
 
93070
            attributeValue) )
 
93071
        {
 
93072
            return false;
 
93073
        }
 
93074
    }
 
93075
    } // validation
 
93076
#endif
 
93077
 
 
93078
if ( !failed )
 
93079
    attributeData->present_attributes |= complexes__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
93080
 
 
93081
    break;
 
93082
    }
 
93083
    case HASH_ATTRIBUTE_STYLE:
 
93084
    {
 
93085
 
 
93086
attributeData->style = attributeValue;
 
93087
 
 
93088
    break;
 
93089
    }
 
93090
    case HASH_ATTRIBUTE_XREF:
 
93091
    {
 
93092
 
 
93093
attributeData->xref = attributeValue;
 
93094
 
 
93095
    break;
 
93096
    }
 
93097
    case HASH_ATTRIBUTE_ID:
 
93098
    {
 
93099
 
 
93100
attributeData->id = attributeValue;
 
93101
 
 
93102
    break;
 
93103
    }
 
93104
    case HASH_ATTRIBUTE_HREF:
 
93105
    {
 
93106
bool failed;
 
93107
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
93108
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
93109
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
93110
        HASH_ELEMENT_COMPLEXES,
 
93111
        HASH_ATTRIBUTE_HREF,
 
93112
        attributeValue))
 
93113
{
 
93114
    return false;
 
93115
}
 
93116
if ( !failed )
 
93117
    attributeData->present_attributes |= complexes__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
93118
 
 
93119
    break;
 
93120
    }
 
93121
    default:
 
93122
    {
 
93123
        if ( !attributeData->unknownAttributes.data )
 
93124
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
93125
        else
 
93126
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
93127
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
93128
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
93129
        attributeData->unknownAttributes.size += 2;
 
93130
 
 
93131
    }
 
93132
    }
 
93133
    }
 
93134
}
 
93135
if ((attributeData->present_attributes & complexes__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
93136
{
 
93137
    attributeData->definitionURL = COLLADABU::URI("");
 
93138
}
 
93139
if ((attributeData->present_attributes & complexes__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
93140
{
 
93141
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
93142
}
 
93143
if ((attributeData->present_attributes & complexes__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
93144
{
 
93145
    attributeData->href = COLLADABU::URI("");
 
93146
}
 
93147
 
 
93148
 
 
93149
    return true;
 
93150
}
 
93151
 
 
93152
//---------------------------------------------------------------------
 
93153
bool ColladaParserAutoGen15Private::_preEnd__complexes()
 
93154
{
 
93155
#ifdef GENERATEDSAXPARSER_VALIDATION
 
93156
    if ( mValidate )
 
93157
    {
 
93158
 
 
93159
        bool validationResult = _validateEnd__complexes();
 
93160
        if ( !validationResult ) return false;
 
93161
 
 
93162
    } // validation
 
93163
#endif
 
93164
 
 
93165
    return true;
 
93166
}
 
93167
 
 
93168
//---------------------------------------------------------------------
 
93169
bool ColladaParserAutoGen15Private::_freeAttributes__complexes( void* attributeData )
 
93170
{
 
93171
    complexes__AttributeData* typedAttributeData = static_cast<complexes__AttributeData*>(attributeData);
 
93172
    if (typedAttributeData->_class.data)
 
93173
    {
 
93174
        mStackMemoryManager.deleteObject();
 
93175
    }
 
93176
 
 
93177
    if (typedAttributeData->unknownAttributes.data)
 
93178
    {
 
93179
        mStackMemoryManager.deleteObject();
 
93180
    }
 
93181
 
 
93182
 
 
93183
    typedAttributeData->~complexes__AttributeData();
 
93184
 
 
93185
    return true;
 
93186
}
 
93187
 
 
93188
//---------------------------------------------------------------------
 
93189
const emptyset__AttributeData emptyset__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
93190
 
 
93191
//---------------------------------------------------------------------
 
93192
bool ColladaParserAutoGen15Private::_data__emptyset( const ParserChar* text, size_t textLength )
 
93193
{
 
93194
    return true;
 
93195
}
 
93196
 
 
93197
//---------------------------------------------------------------------
 
93198
bool ColladaParserAutoGen15Private::_preBegin__emptyset( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
93199
{
 
93200
#ifdef GENERATEDSAXPARSER_VALIDATION
 
93201
    if ( mValidate )
 
93202
    {
 
93203
 
 
93204
        bool validationResult = _validateBegin__emptyset( attributes, attributeDataPtr, validationDataPtr );
 
93205
        if ( !validationResult ) return false;
 
93206
 
 
93207
    } // validation
 
93208
#endif
 
93209
 
 
93210
emptyset__AttributeData* attributeData = newData<emptyset__AttributeData>(attributeDataPtr);
 
93211
 
 
93212
const ParserChar** attributeArray = attributes.attributes;
 
93213
if ( attributeArray )
 
93214
{
 
93215
    while (true)
 
93216
    {
 
93217
        const ParserChar * attribute = *attributeArray;
 
93218
        if ( !attribute )
 
93219
            break;
 
93220
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
93221
        attributeArray++;
 
93222
        if ( !attributeArray )
 
93223
            return false;
 
93224
        const ParserChar* attributeValue = *attributeArray;
 
93225
        attributeArray++;
 
93226
 
 
93227
 
 
93228
    switch ( hash )
 
93229
    {
 
93230
    case HASH_ATTRIBUTE_ENCODING:
 
93231
    {
 
93232
 
 
93233
attributeData->encoding = attributeValue;
 
93234
 
 
93235
    break;
 
93236
    }
 
93237
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
93238
    {
 
93239
bool failed;
 
93240
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
93241
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
93242
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
93243
        HASH_ELEMENT_EMPTYSET,
 
93244
        HASH_ATTRIBUTE_DEFINITIONURL,
 
93245
        attributeValue))
 
93246
{
 
93247
    return false;
 
93248
}
 
93249
if ( !failed )
 
93250
    attributeData->present_attributes |= emptyset__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
93251
 
 
93252
    break;
 
93253
    }
 
93254
    case HASH_ATTRIBUTE_CLASS:
 
93255
    {
 
93256
bool failed;
 
93257
#ifdef GENERATEDSAXPARSER_VALIDATION
 
93258
    if ( mValidate )
 
93259
    {
 
93260
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_EMPTYSET, HASH_ATTRIBUTE_CLASS);
 
93261
    }
 
93262
    else
 
93263
    {
 
93264
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
93265
    }
 
93266
#else
 
93267
    {
 
93268
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
93269
    } // validation
 
93270
#endif
 
93271
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
93272
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
93273
        HASH_ELEMENT_EMPTYSET,
 
93274
        HASH_ATTRIBUTE_CLASS,
 
93275
        attributeValue))
 
93276
{
 
93277
    return false;
 
93278
}
 
93279
#ifdef GENERATEDSAXPARSER_VALIDATION
 
93280
    if ( mValidate )
 
93281
    {
 
93282
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
93283
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
93284
    {
 
93285
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
93286
            simpleTypeValidationResult,
 
93287
            HASH_ELEMENT_EMPTYSET,
 
93288
            HASH_ATTRIBUTE_CLASS,
 
93289
            attributeValue) )
 
93290
        {
 
93291
            return false;
 
93292
        }
 
93293
    }
 
93294
    } // validation
 
93295
#endif
 
93296
 
 
93297
if ( !failed )
 
93298
    attributeData->present_attributes |= emptyset__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
93299
 
 
93300
    break;
 
93301
    }
 
93302
    case HASH_ATTRIBUTE_STYLE:
 
93303
    {
 
93304
 
 
93305
attributeData->style = attributeValue;
 
93306
 
 
93307
    break;
 
93308
    }
 
93309
    case HASH_ATTRIBUTE_XREF:
 
93310
    {
 
93311
 
 
93312
attributeData->xref = attributeValue;
 
93313
 
 
93314
    break;
 
93315
    }
 
93316
    case HASH_ATTRIBUTE_ID:
 
93317
    {
 
93318
 
 
93319
attributeData->id = attributeValue;
 
93320
 
 
93321
    break;
 
93322
    }
 
93323
    case HASH_ATTRIBUTE_HREF:
 
93324
    {
 
93325
bool failed;
 
93326
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
93327
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
93328
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
93329
        HASH_ELEMENT_EMPTYSET,
 
93330
        HASH_ATTRIBUTE_HREF,
 
93331
        attributeValue))
 
93332
{
 
93333
    return false;
 
93334
}
 
93335
if ( !failed )
 
93336
    attributeData->present_attributes |= emptyset__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
93337
 
 
93338
    break;
 
93339
    }
 
93340
    default:
 
93341
    {
 
93342
        if ( !attributeData->unknownAttributes.data )
 
93343
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
93344
        else
 
93345
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
93346
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
93347
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
93348
        attributeData->unknownAttributes.size += 2;
 
93349
 
 
93350
    }
 
93351
    }
 
93352
    }
 
93353
}
 
93354
if ((attributeData->present_attributes & emptyset__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
93355
{
 
93356
    attributeData->definitionURL = COLLADABU::URI("");
 
93357
}
 
93358
if ((attributeData->present_attributes & emptyset__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
93359
{
 
93360
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
93361
}
 
93362
if ((attributeData->present_attributes & emptyset__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
93363
{
 
93364
    attributeData->href = COLLADABU::URI("");
 
93365
}
 
93366
 
 
93367
 
 
93368
    return true;
 
93369
}
 
93370
 
 
93371
//---------------------------------------------------------------------
 
93372
bool ColladaParserAutoGen15Private::_preEnd__emptyset()
 
93373
{
 
93374
#ifdef GENERATEDSAXPARSER_VALIDATION
 
93375
    if ( mValidate )
 
93376
    {
 
93377
 
 
93378
        bool validationResult = _validateEnd__emptyset();
 
93379
        if ( !validationResult ) return false;
 
93380
 
 
93381
    } // validation
 
93382
#endif
 
93383
 
 
93384
    return true;
 
93385
}
 
93386
 
 
93387
//---------------------------------------------------------------------
 
93388
bool ColladaParserAutoGen15Private::_freeAttributes__emptyset( void* attributeData )
 
93389
{
 
93390
    emptyset__AttributeData* typedAttributeData = static_cast<emptyset__AttributeData*>(attributeData);
 
93391
    if (typedAttributeData->_class.data)
 
93392
    {
 
93393
        mStackMemoryManager.deleteObject();
 
93394
    }
 
93395
 
 
93396
    if (typedAttributeData->unknownAttributes.data)
 
93397
    {
 
93398
        mStackMemoryManager.deleteObject();
 
93399
    }
 
93400
 
 
93401
 
 
93402
    typedAttributeData->~emptyset__AttributeData();
 
93403
 
 
93404
    return true;
 
93405
}
 
93406
 
 
93407
//---------------------------------------------------------------------
 
93408
const exponentiale__AttributeData exponentiale__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
93409
 
 
93410
//---------------------------------------------------------------------
 
93411
bool ColladaParserAutoGen15Private::_data__exponentiale( const ParserChar* text, size_t textLength )
 
93412
{
 
93413
    return true;
 
93414
}
 
93415
 
 
93416
//---------------------------------------------------------------------
 
93417
bool ColladaParserAutoGen15Private::_preBegin__exponentiale( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
93418
{
 
93419
#ifdef GENERATEDSAXPARSER_VALIDATION
 
93420
    if ( mValidate )
 
93421
    {
 
93422
 
 
93423
        bool validationResult = _validateBegin__exponentiale( attributes, attributeDataPtr, validationDataPtr );
 
93424
        if ( !validationResult ) return false;
 
93425
 
 
93426
    } // validation
 
93427
#endif
 
93428
 
 
93429
exponentiale__AttributeData* attributeData = newData<exponentiale__AttributeData>(attributeDataPtr);
 
93430
 
 
93431
const ParserChar** attributeArray = attributes.attributes;
 
93432
if ( attributeArray )
 
93433
{
 
93434
    while (true)
 
93435
    {
 
93436
        const ParserChar * attribute = *attributeArray;
 
93437
        if ( !attribute )
 
93438
            break;
 
93439
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
93440
        attributeArray++;
 
93441
        if ( !attributeArray )
 
93442
            return false;
 
93443
        const ParserChar* attributeValue = *attributeArray;
 
93444
        attributeArray++;
 
93445
 
 
93446
 
 
93447
    switch ( hash )
 
93448
    {
 
93449
    case HASH_ATTRIBUTE_ENCODING:
 
93450
    {
 
93451
 
 
93452
attributeData->encoding = attributeValue;
 
93453
 
 
93454
    break;
 
93455
    }
 
93456
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
93457
    {
 
93458
bool failed;
 
93459
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
93460
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
93461
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
93462
        HASH_ELEMENT_EXPONENTIALE,
 
93463
        HASH_ATTRIBUTE_DEFINITIONURL,
 
93464
        attributeValue))
 
93465
{
 
93466
    return false;
 
93467
}
 
93468
if ( !failed )
 
93469
    attributeData->present_attributes |= exponentiale__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
93470
 
 
93471
    break;
 
93472
    }
 
93473
    case HASH_ATTRIBUTE_CLASS:
 
93474
    {
 
93475
bool failed;
 
93476
#ifdef GENERATEDSAXPARSER_VALIDATION
 
93477
    if ( mValidate )
 
93478
    {
 
93479
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_EXPONENTIALE, HASH_ATTRIBUTE_CLASS);
 
93480
    }
 
93481
    else
 
93482
    {
 
93483
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
93484
    }
 
93485
#else
 
93486
    {
 
93487
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
93488
    } // validation
 
93489
#endif
 
93490
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
93491
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
93492
        HASH_ELEMENT_EXPONENTIALE,
 
93493
        HASH_ATTRIBUTE_CLASS,
 
93494
        attributeValue))
 
93495
{
 
93496
    return false;
 
93497
}
 
93498
#ifdef GENERATEDSAXPARSER_VALIDATION
 
93499
    if ( mValidate )
 
93500
    {
 
93501
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
93502
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
93503
    {
 
93504
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
93505
            simpleTypeValidationResult,
 
93506
            HASH_ELEMENT_EXPONENTIALE,
 
93507
            HASH_ATTRIBUTE_CLASS,
 
93508
            attributeValue) )
 
93509
        {
 
93510
            return false;
 
93511
        }
 
93512
    }
 
93513
    } // validation
 
93514
#endif
 
93515
 
 
93516
if ( !failed )
 
93517
    attributeData->present_attributes |= exponentiale__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
93518
 
 
93519
    break;
 
93520
    }
 
93521
    case HASH_ATTRIBUTE_STYLE:
 
93522
    {
 
93523
 
 
93524
attributeData->style = attributeValue;
 
93525
 
 
93526
    break;
 
93527
    }
 
93528
    case HASH_ATTRIBUTE_XREF:
 
93529
    {
 
93530
 
 
93531
attributeData->xref = attributeValue;
 
93532
 
 
93533
    break;
 
93534
    }
 
93535
    case HASH_ATTRIBUTE_ID:
 
93536
    {
 
93537
 
 
93538
attributeData->id = attributeValue;
 
93539
 
 
93540
    break;
 
93541
    }
 
93542
    case HASH_ATTRIBUTE_HREF:
 
93543
    {
 
93544
bool failed;
 
93545
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
93546
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
93547
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
93548
        HASH_ELEMENT_EXPONENTIALE,
 
93549
        HASH_ATTRIBUTE_HREF,
 
93550
        attributeValue))
 
93551
{
 
93552
    return false;
 
93553
}
 
93554
if ( !failed )
 
93555
    attributeData->present_attributes |= exponentiale__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
93556
 
 
93557
    break;
 
93558
    }
 
93559
    default:
 
93560
    {
 
93561
        if ( !attributeData->unknownAttributes.data )
 
93562
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
93563
        else
 
93564
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
93565
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
93566
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
93567
        attributeData->unknownAttributes.size += 2;
 
93568
 
 
93569
    }
 
93570
    }
 
93571
    }
 
93572
}
 
93573
if ((attributeData->present_attributes & exponentiale__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
93574
{
 
93575
    attributeData->definitionURL = COLLADABU::URI("");
 
93576
}
 
93577
if ((attributeData->present_attributes & exponentiale__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
93578
{
 
93579
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
93580
}
 
93581
if ((attributeData->present_attributes & exponentiale__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
93582
{
 
93583
    attributeData->href = COLLADABU::URI("");
 
93584
}
 
93585
 
 
93586
 
 
93587
    return true;
 
93588
}
 
93589
 
 
93590
//---------------------------------------------------------------------
 
93591
bool ColladaParserAutoGen15Private::_preEnd__exponentiale()
 
93592
{
 
93593
#ifdef GENERATEDSAXPARSER_VALIDATION
 
93594
    if ( mValidate )
 
93595
    {
 
93596
 
 
93597
        bool validationResult = _validateEnd__exponentiale();
 
93598
        if ( !validationResult ) return false;
 
93599
 
 
93600
    } // validation
 
93601
#endif
 
93602
 
 
93603
    return true;
 
93604
}
 
93605
 
 
93606
//---------------------------------------------------------------------
 
93607
bool ColladaParserAutoGen15Private::_freeAttributes__exponentiale( void* attributeData )
 
93608
{
 
93609
    exponentiale__AttributeData* typedAttributeData = static_cast<exponentiale__AttributeData*>(attributeData);
 
93610
    if (typedAttributeData->_class.data)
 
93611
    {
 
93612
        mStackMemoryManager.deleteObject();
 
93613
    }
 
93614
 
 
93615
    if (typedAttributeData->unknownAttributes.data)
 
93616
    {
 
93617
        mStackMemoryManager.deleteObject();
 
93618
    }
 
93619
 
 
93620
 
 
93621
    typedAttributeData->~exponentiale__AttributeData();
 
93622
 
 
93623
    return true;
 
93624
}
 
93625
 
 
93626
//---------------------------------------------------------------------
 
93627
const imaginaryi__AttributeData imaginaryi__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
93628
 
 
93629
//---------------------------------------------------------------------
 
93630
bool ColladaParserAutoGen15Private::_data__imaginaryi( const ParserChar* text, size_t textLength )
 
93631
{
 
93632
    return true;
 
93633
}
 
93634
 
 
93635
//---------------------------------------------------------------------
 
93636
bool ColladaParserAutoGen15Private::_preBegin__imaginaryi( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
93637
{
 
93638
#ifdef GENERATEDSAXPARSER_VALIDATION
 
93639
    if ( mValidate )
 
93640
    {
 
93641
 
 
93642
        bool validationResult = _validateBegin__imaginaryi( attributes, attributeDataPtr, validationDataPtr );
 
93643
        if ( !validationResult ) return false;
 
93644
 
 
93645
    } // validation
 
93646
#endif
 
93647
 
 
93648
imaginaryi__AttributeData* attributeData = newData<imaginaryi__AttributeData>(attributeDataPtr);
 
93649
 
 
93650
const ParserChar** attributeArray = attributes.attributes;
 
93651
if ( attributeArray )
 
93652
{
 
93653
    while (true)
 
93654
    {
 
93655
        const ParserChar * attribute = *attributeArray;
 
93656
        if ( !attribute )
 
93657
            break;
 
93658
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
93659
        attributeArray++;
 
93660
        if ( !attributeArray )
 
93661
            return false;
 
93662
        const ParserChar* attributeValue = *attributeArray;
 
93663
        attributeArray++;
 
93664
 
 
93665
 
 
93666
    switch ( hash )
 
93667
    {
 
93668
    case HASH_ATTRIBUTE_ENCODING:
 
93669
    {
 
93670
 
 
93671
attributeData->encoding = attributeValue;
 
93672
 
 
93673
    break;
 
93674
    }
 
93675
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
93676
    {
 
93677
bool failed;
 
93678
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
93679
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
93680
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
93681
        HASH_ELEMENT_IMAGINARYI,
 
93682
        HASH_ATTRIBUTE_DEFINITIONURL,
 
93683
        attributeValue))
 
93684
{
 
93685
    return false;
 
93686
}
 
93687
if ( !failed )
 
93688
    attributeData->present_attributes |= imaginaryi__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
93689
 
 
93690
    break;
 
93691
    }
 
93692
    case HASH_ATTRIBUTE_CLASS:
 
93693
    {
 
93694
bool failed;
 
93695
#ifdef GENERATEDSAXPARSER_VALIDATION
 
93696
    if ( mValidate )
 
93697
    {
 
93698
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_IMAGINARYI, HASH_ATTRIBUTE_CLASS);
 
93699
    }
 
93700
    else
 
93701
    {
 
93702
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
93703
    }
 
93704
#else
 
93705
    {
 
93706
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
93707
    } // validation
 
93708
#endif
 
93709
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
93710
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
93711
        HASH_ELEMENT_IMAGINARYI,
 
93712
        HASH_ATTRIBUTE_CLASS,
 
93713
        attributeValue))
 
93714
{
 
93715
    return false;
 
93716
}
 
93717
#ifdef GENERATEDSAXPARSER_VALIDATION
 
93718
    if ( mValidate )
 
93719
    {
 
93720
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
93721
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
93722
    {
 
93723
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
93724
            simpleTypeValidationResult,
 
93725
            HASH_ELEMENT_IMAGINARYI,
 
93726
            HASH_ATTRIBUTE_CLASS,
 
93727
            attributeValue) )
 
93728
        {
 
93729
            return false;
 
93730
        }
 
93731
    }
 
93732
    } // validation
 
93733
#endif
 
93734
 
 
93735
if ( !failed )
 
93736
    attributeData->present_attributes |= imaginaryi__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
93737
 
 
93738
    break;
 
93739
    }
 
93740
    case HASH_ATTRIBUTE_STYLE:
 
93741
    {
 
93742
 
 
93743
attributeData->style = attributeValue;
 
93744
 
 
93745
    break;
 
93746
    }
 
93747
    case HASH_ATTRIBUTE_XREF:
 
93748
    {
 
93749
 
 
93750
attributeData->xref = attributeValue;
 
93751
 
 
93752
    break;
 
93753
    }
 
93754
    case HASH_ATTRIBUTE_ID:
 
93755
    {
 
93756
 
 
93757
attributeData->id = attributeValue;
 
93758
 
 
93759
    break;
 
93760
    }
 
93761
    case HASH_ATTRIBUTE_HREF:
 
93762
    {
 
93763
bool failed;
 
93764
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
93765
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
93766
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
93767
        HASH_ELEMENT_IMAGINARYI,
 
93768
        HASH_ATTRIBUTE_HREF,
 
93769
        attributeValue))
 
93770
{
 
93771
    return false;
 
93772
}
 
93773
if ( !failed )
 
93774
    attributeData->present_attributes |= imaginaryi__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
93775
 
 
93776
    break;
 
93777
    }
 
93778
    default:
 
93779
    {
 
93780
        if ( !attributeData->unknownAttributes.data )
 
93781
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
93782
        else
 
93783
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
93784
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
93785
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
93786
        attributeData->unknownAttributes.size += 2;
 
93787
 
 
93788
    }
 
93789
    }
 
93790
    }
 
93791
}
 
93792
if ((attributeData->present_attributes & imaginaryi__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
93793
{
 
93794
    attributeData->definitionURL = COLLADABU::URI("");
 
93795
}
 
93796
if ((attributeData->present_attributes & imaginaryi__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
93797
{
 
93798
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
93799
}
 
93800
if ((attributeData->present_attributes & imaginaryi__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
93801
{
 
93802
    attributeData->href = COLLADABU::URI("");
 
93803
}
 
93804
 
 
93805
 
 
93806
    return true;
 
93807
}
 
93808
 
 
93809
//---------------------------------------------------------------------
 
93810
bool ColladaParserAutoGen15Private::_preEnd__imaginaryi()
 
93811
{
 
93812
#ifdef GENERATEDSAXPARSER_VALIDATION
 
93813
    if ( mValidate )
 
93814
    {
 
93815
 
 
93816
        bool validationResult = _validateEnd__imaginaryi();
 
93817
        if ( !validationResult ) return false;
 
93818
 
 
93819
    } // validation
 
93820
#endif
 
93821
 
 
93822
    return true;
 
93823
}
 
93824
 
 
93825
//---------------------------------------------------------------------
 
93826
bool ColladaParserAutoGen15Private::_freeAttributes__imaginaryi( void* attributeData )
 
93827
{
 
93828
    imaginaryi__AttributeData* typedAttributeData = static_cast<imaginaryi__AttributeData*>(attributeData);
 
93829
    if (typedAttributeData->_class.data)
 
93830
    {
 
93831
        mStackMemoryManager.deleteObject();
 
93832
    }
 
93833
 
 
93834
    if (typedAttributeData->unknownAttributes.data)
 
93835
    {
 
93836
        mStackMemoryManager.deleteObject();
 
93837
    }
 
93838
 
 
93839
 
 
93840
    typedAttributeData->~imaginaryi__AttributeData();
 
93841
 
 
93842
    return true;
 
93843
}
 
93844
 
 
93845
//---------------------------------------------------------------------
 
93846
const pi__AttributeData pi__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
93847
 
 
93848
//---------------------------------------------------------------------
 
93849
bool ColladaParserAutoGen15Private::_data__pi( const ParserChar* text, size_t textLength )
 
93850
{
 
93851
    return true;
 
93852
}
 
93853
 
 
93854
//---------------------------------------------------------------------
 
93855
bool ColladaParserAutoGen15Private::_preBegin__pi( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
93856
{
 
93857
#ifdef GENERATEDSAXPARSER_VALIDATION
 
93858
    if ( mValidate )
 
93859
    {
 
93860
 
 
93861
        bool validationResult = _validateBegin__pi( attributes, attributeDataPtr, validationDataPtr );
 
93862
        if ( !validationResult ) return false;
 
93863
 
 
93864
    } // validation
 
93865
#endif
 
93866
 
 
93867
pi__AttributeData* attributeData = newData<pi__AttributeData>(attributeDataPtr);
 
93868
 
 
93869
const ParserChar** attributeArray = attributes.attributes;
 
93870
if ( attributeArray )
 
93871
{
 
93872
    while (true)
 
93873
    {
 
93874
        const ParserChar * attribute = *attributeArray;
 
93875
        if ( !attribute )
 
93876
            break;
 
93877
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
93878
        attributeArray++;
 
93879
        if ( !attributeArray )
 
93880
            return false;
 
93881
        const ParserChar* attributeValue = *attributeArray;
 
93882
        attributeArray++;
 
93883
 
 
93884
 
 
93885
    switch ( hash )
 
93886
    {
 
93887
    case HASH_ATTRIBUTE_ENCODING:
 
93888
    {
 
93889
 
 
93890
attributeData->encoding = attributeValue;
 
93891
 
 
93892
    break;
 
93893
    }
 
93894
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
93895
    {
 
93896
bool failed;
 
93897
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
93898
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
93899
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
93900
        HASH_ELEMENT_PI,
 
93901
        HASH_ATTRIBUTE_DEFINITIONURL,
 
93902
        attributeValue))
 
93903
{
 
93904
    return false;
 
93905
}
 
93906
if ( !failed )
 
93907
    attributeData->present_attributes |= pi__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
93908
 
 
93909
    break;
 
93910
    }
 
93911
    case HASH_ATTRIBUTE_CLASS:
 
93912
    {
 
93913
bool failed;
 
93914
#ifdef GENERATEDSAXPARSER_VALIDATION
 
93915
    if ( mValidate )
 
93916
    {
 
93917
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_PI, HASH_ATTRIBUTE_CLASS);
 
93918
    }
 
93919
    else
 
93920
    {
 
93921
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
93922
    }
 
93923
#else
 
93924
    {
 
93925
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
93926
    } // validation
 
93927
#endif
 
93928
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
93929
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
93930
        HASH_ELEMENT_PI,
 
93931
        HASH_ATTRIBUTE_CLASS,
 
93932
        attributeValue))
 
93933
{
 
93934
    return false;
 
93935
}
 
93936
#ifdef GENERATEDSAXPARSER_VALIDATION
 
93937
    if ( mValidate )
 
93938
    {
 
93939
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
93940
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
93941
    {
 
93942
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
93943
            simpleTypeValidationResult,
 
93944
            HASH_ELEMENT_PI,
 
93945
            HASH_ATTRIBUTE_CLASS,
 
93946
            attributeValue) )
 
93947
        {
 
93948
            return false;
 
93949
        }
 
93950
    }
 
93951
    } // validation
 
93952
#endif
 
93953
 
 
93954
if ( !failed )
 
93955
    attributeData->present_attributes |= pi__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
93956
 
 
93957
    break;
 
93958
    }
 
93959
    case HASH_ATTRIBUTE_STYLE:
 
93960
    {
 
93961
 
 
93962
attributeData->style = attributeValue;
 
93963
 
 
93964
    break;
 
93965
    }
 
93966
    case HASH_ATTRIBUTE_XREF:
 
93967
    {
 
93968
 
 
93969
attributeData->xref = attributeValue;
 
93970
 
 
93971
    break;
 
93972
    }
 
93973
    case HASH_ATTRIBUTE_ID:
 
93974
    {
 
93975
 
 
93976
attributeData->id = attributeValue;
 
93977
 
 
93978
    break;
 
93979
    }
 
93980
    case HASH_ATTRIBUTE_HREF:
 
93981
    {
 
93982
bool failed;
 
93983
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
93984
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
93985
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
93986
        HASH_ELEMENT_PI,
 
93987
        HASH_ATTRIBUTE_HREF,
 
93988
        attributeValue))
 
93989
{
 
93990
    return false;
 
93991
}
 
93992
if ( !failed )
 
93993
    attributeData->present_attributes |= pi__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
93994
 
 
93995
    break;
 
93996
    }
 
93997
    default:
 
93998
    {
 
93999
        if ( !attributeData->unknownAttributes.data )
 
94000
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
94001
        else
 
94002
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
94003
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
94004
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
94005
        attributeData->unknownAttributes.size += 2;
 
94006
 
 
94007
    }
 
94008
    }
 
94009
    }
 
94010
}
 
94011
if ((attributeData->present_attributes & pi__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
94012
{
 
94013
    attributeData->definitionURL = COLLADABU::URI("");
 
94014
}
 
94015
if ((attributeData->present_attributes & pi__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
94016
{
 
94017
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
94018
}
 
94019
if ((attributeData->present_attributes & pi__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
94020
{
 
94021
    attributeData->href = COLLADABU::URI("");
 
94022
}
 
94023
 
 
94024
 
 
94025
    return true;
 
94026
}
 
94027
 
 
94028
//---------------------------------------------------------------------
 
94029
bool ColladaParserAutoGen15Private::_preEnd__pi()
 
94030
{
 
94031
#ifdef GENERATEDSAXPARSER_VALIDATION
 
94032
    if ( mValidate )
 
94033
    {
 
94034
 
 
94035
        bool validationResult = _validateEnd__pi();
 
94036
        if ( !validationResult ) return false;
 
94037
 
 
94038
    } // validation
 
94039
#endif
 
94040
 
 
94041
    return true;
 
94042
}
 
94043
 
 
94044
//---------------------------------------------------------------------
 
94045
bool ColladaParserAutoGen15Private::_freeAttributes__pi( void* attributeData )
 
94046
{
 
94047
    pi__AttributeData* typedAttributeData = static_cast<pi__AttributeData*>(attributeData);
 
94048
    if (typedAttributeData->_class.data)
 
94049
    {
 
94050
        mStackMemoryManager.deleteObject();
 
94051
    }
 
94052
 
 
94053
    if (typedAttributeData->unknownAttributes.data)
 
94054
    {
 
94055
        mStackMemoryManager.deleteObject();
 
94056
    }
 
94057
 
 
94058
 
 
94059
    typedAttributeData->~pi__AttributeData();
 
94060
 
 
94061
    return true;
 
94062
}
 
94063
 
 
94064
//---------------------------------------------------------------------
 
94065
const eulergamma__AttributeData eulergamma__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
94066
 
 
94067
//---------------------------------------------------------------------
 
94068
bool ColladaParserAutoGen15Private::_data__eulergamma( const ParserChar* text, size_t textLength )
 
94069
{
 
94070
    return true;
 
94071
}
 
94072
 
 
94073
//---------------------------------------------------------------------
 
94074
bool ColladaParserAutoGen15Private::_preBegin__eulergamma( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
94075
{
 
94076
#ifdef GENERATEDSAXPARSER_VALIDATION
 
94077
    if ( mValidate )
 
94078
    {
 
94079
 
 
94080
        bool validationResult = _validateBegin__eulergamma( attributes, attributeDataPtr, validationDataPtr );
 
94081
        if ( !validationResult ) return false;
 
94082
 
 
94083
    } // validation
 
94084
#endif
 
94085
 
 
94086
eulergamma__AttributeData* attributeData = newData<eulergamma__AttributeData>(attributeDataPtr);
 
94087
 
 
94088
const ParserChar** attributeArray = attributes.attributes;
 
94089
if ( attributeArray )
 
94090
{
 
94091
    while (true)
 
94092
    {
 
94093
        const ParserChar * attribute = *attributeArray;
 
94094
        if ( !attribute )
 
94095
            break;
 
94096
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
94097
        attributeArray++;
 
94098
        if ( !attributeArray )
 
94099
            return false;
 
94100
        const ParserChar* attributeValue = *attributeArray;
 
94101
        attributeArray++;
 
94102
 
 
94103
 
 
94104
    switch ( hash )
 
94105
    {
 
94106
    case HASH_ATTRIBUTE_ENCODING:
 
94107
    {
 
94108
 
 
94109
attributeData->encoding = attributeValue;
 
94110
 
 
94111
    break;
 
94112
    }
 
94113
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
94114
    {
 
94115
bool failed;
 
94116
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
94117
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
94118
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
94119
        HASH_ELEMENT_EULERGAMMA,
 
94120
        HASH_ATTRIBUTE_DEFINITIONURL,
 
94121
        attributeValue))
 
94122
{
 
94123
    return false;
 
94124
}
 
94125
if ( !failed )
 
94126
    attributeData->present_attributes |= eulergamma__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
94127
 
 
94128
    break;
 
94129
    }
 
94130
    case HASH_ATTRIBUTE_CLASS:
 
94131
    {
 
94132
bool failed;
 
94133
#ifdef GENERATEDSAXPARSER_VALIDATION
 
94134
    if ( mValidate )
 
94135
    {
 
94136
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_EULERGAMMA, HASH_ATTRIBUTE_CLASS);
 
94137
    }
 
94138
    else
 
94139
    {
 
94140
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
94141
    }
 
94142
#else
 
94143
    {
 
94144
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
94145
    } // validation
 
94146
#endif
 
94147
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
94148
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
94149
        HASH_ELEMENT_EULERGAMMA,
 
94150
        HASH_ATTRIBUTE_CLASS,
 
94151
        attributeValue))
 
94152
{
 
94153
    return false;
 
94154
}
 
94155
#ifdef GENERATEDSAXPARSER_VALIDATION
 
94156
    if ( mValidate )
 
94157
    {
 
94158
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
94159
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
94160
    {
 
94161
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
94162
            simpleTypeValidationResult,
 
94163
            HASH_ELEMENT_EULERGAMMA,
 
94164
            HASH_ATTRIBUTE_CLASS,
 
94165
            attributeValue) )
 
94166
        {
 
94167
            return false;
 
94168
        }
 
94169
    }
 
94170
    } // validation
 
94171
#endif
 
94172
 
 
94173
if ( !failed )
 
94174
    attributeData->present_attributes |= eulergamma__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
94175
 
 
94176
    break;
 
94177
    }
 
94178
    case HASH_ATTRIBUTE_STYLE:
 
94179
    {
 
94180
 
 
94181
attributeData->style = attributeValue;
 
94182
 
 
94183
    break;
 
94184
    }
 
94185
    case HASH_ATTRIBUTE_XREF:
 
94186
    {
 
94187
 
 
94188
attributeData->xref = attributeValue;
 
94189
 
 
94190
    break;
 
94191
    }
 
94192
    case HASH_ATTRIBUTE_ID:
 
94193
    {
 
94194
 
 
94195
attributeData->id = attributeValue;
 
94196
 
 
94197
    break;
 
94198
    }
 
94199
    case HASH_ATTRIBUTE_HREF:
 
94200
    {
 
94201
bool failed;
 
94202
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
94203
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
94204
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
94205
        HASH_ELEMENT_EULERGAMMA,
 
94206
        HASH_ATTRIBUTE_HREF,
 
94207
        attributeValue))
 
94208
{
 
94209
    return false;
 
94210
}
 
94211
if ( !failed )
 
94212
    attributeData->present_attributes |= eulergamma__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
94213
 
 
94214
    break;
 
94215
    }
 
94216
    default:
 
94217
    {
 
94218
        if ( !attributeData->unknownAttributes.data )
 
94219
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
94220
        else
 
94221
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
94222
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
94223
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
94224
        attributeData->unknownAttributes.size += 2;
 
94225
 
 
94226
    }
 
94227
    }
 
94228
    }
 
94229
}
 
94230
if ((attributeData->present_attributes & eulergamma__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
94231
{
 
94232
    attributeData->definitionURL = COLLADABU::URI("");
 
94233
}
 
94234
if ((attributeData->present_attributes & eulergamma__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
94235
{
 
94236
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
94237
}
 
94238
if ((attributeData->present_attributes & eulergamma__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
94239
{
 
94240
    attributeData->href = COLLADABU::URI("");
 
94241
}
 
94242
 
 
94243
 
 
94244
    return true;
 
94245
}
 
94246
 
 
94247
//---------------------------------------------------------------------
 
94248
bool ColladaParserAutoGen15Private::_preEnd__eulergamma()
 
94249
{
 
94250
#ifdef GENERATEDSAXPARSER_VALIDATION
 
94251
    if ( mValidate )
 
94252
    {
 
94253
 
 
94254
        bool validationResult = _validateEnd__eulergamma();
 
94255
        if ( !validationResult ) return false;
 
94256
 
 
94257
    } // validation
 
94258
#endif
 
94259
 
 
94260
    return true;
 
94261
}
 
94262
 
 
94263
//---------------------------------------------------------------------
 
94264
bool ColladaParserAutoGen15Private::_freeAttributes__eulergamma( void* attributeData )
 
94265
{
 
94266
    eulergamma__AttributeData* typedAttributeData = static_cast<eulergamma__AttributeData*>(attributeData);
 
94267
    if (typedAttributeData->_class.data)
 
94268
    {
 
94269
        mStackMemoryManager.deleteObject();
 
94270
    }
 
94271
 
 
94272
    if (typedAttributeData->unknownAttributes.data)
 
94273
    {
 
94274
        mStackMemoryManager.deleteObject();
 
94275
    }
 
94276
 
 
94277
 
 
94278
    typedAttributeData->~eulergamma__AttributeData();
 
94279
 
 
94280
    return true;
 
94281
}
 
94282
 
 
94283
//---------------------------------------------------------------------
 
94284
const true__AttributeData true__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
94285
 
 
94286
//---------------------------------------------------------------------
 
94287
bool ColladaParserAutoGen15Private::_data__true( const ParserChar* text, size_t textLength )
 
94288
{
 
94289
    return true;
 
94290
}
 
94291
 
 
94292
//---------------------------------------------------------------------
 
94293
bool ColladaParserAutoGen15Private::_preBegin__true( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
94294
{
 
94295
#ifdef GENERATEDSAXPARSER_VALIDATION
 
94296
    if ( mValidate )
 
94297
    {
 
94298
 
 
94299
        bool validationResult = _validateBegin__true( attributes, attributeDataPtr, validationDataPtr );
 
94300
        if ( !validationResult ) return false;
 
94301
 
 
94302
    } // validation
 
94303
#endif
 
94304
 
 
94305
true__AttributeData* attributeData = newData<true__AttributeData>(attributeDataPtr);
 
94306
 
 
94307
const ParserChar** attributeArray = attributes.attributes;
 
94308
if ( attributeArray )
 
94309
{
 
94310
    while (true)
 
94311
    {
 
94312
        const ParserChar * attribute = *attributeArray;
 
94313
        if ( !attribute )
 
94314
            break;
 
94315
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
94316
        attributeArray++;
 
94317
        if ( !attributeArray )
 
94318
            return false;
 
94319
        const ParserChar* attributeValue = *attributeArray;
 
94320
        attributeArray++;
 
94321
 
 
94322
 
 
94323
    switch ( hash )
 
94324
    {
 
94325
    case HASH_ATTRIBUTE_ENCODING:
 
94326
    {
 
94327
 
 
94328
attributeData->encoding = attributeValue;
 
94329
 
 
94330
    break;
 
94331
    }
 
94332
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
94333
    {
 
94334
bool failed;
 
94335
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
94336
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
94337
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
94338
        HASH_ELEMENT_TRUE,
 
94339
        HASH_ATTRIBUTE_DEFINITIONURL,
 
94340
        attributeValue))
 
94341
{
 
94342
    return false;
 
94343
}
 
94344
if ( !failed )
 
94345
    attributeData->present_attributes |= true__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
94346
 
 
94347
    break;
 
94348
    }
 
94349
    case HASH_ATTRIBUTE_CLASS:
 
94350
    {
 
94351
bool failed;
 
94352
#ifdef GENERATEDSAXPARSER_VALIDATION
 
94353
    if ( mValidate )
 
94354
    {
 
94355
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_TRUE, HASH_ATTRIBUTE_CLASS);
 
94356
    }
 
94357
    else
 
94358
    {
 
94359
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
94360
    }
 
94361
#else
 
94362
    {
 
94363
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
94364
    } // validation
 
94365
#endif
 
94366
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
94367
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
94368
        HASH_ELEMENT_TRUE,
 
94369
        HASH_ATTRIBUTE_CLASS,
 
94370
        attributeValue))
 
94371
{
 
94372
    return false;
 
94373
}
 
94374
#ifdef GENERATEDSAXPARSER_VALIDATION
 
94375
    if ( mValidate )
 
94376
    {
 
94377
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
94378
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
94379
    {
 
94380
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
94381
            simpleTypeValidationResult,
 
94382
            HASH_ELEMENT_TRUE,
 
94383
            HASH_ATTRIBUTE_CLASS,
 
94384
            attributeValue) )
 
94385
        {
 
94386
            return false;
 
94387
        }
 
94388
    }
 
94389
    } // validation
 
94390
#endif
 
94391
 
 
94392
if ( !failed )
 
94393
    attributeData->present_attributes |= true__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
94394
 
 
94395
    break;
 
94396
    }
 
94397
    case HASH_ATTRIBUTE_STYLE:
 
94398
    {
 
94399
 
 
94400
attributeData->style = attributeValue;
 
94401
 
 
94402
    break;
 
94403
    }
 
94404
    case HASH_ATTRIBUTE_XREF:
 
94405
    {
 
94406
 
 
94407
attributeData->xref = attributeValue;
 
94408
 
 
94409
    break;
 
94410
    }
 
94411
    case HASH_ATTRIBUTE_ID:
 
94412
    {
 
94413
 
 
94414
attributeData->id = attributeValue;
 
94415
 
 
94416
    break;
 
94417
    }
 
94418
    case HASH_ATTRIBUTE_HREF:
 
94419
    {
 
94420
bool failed;
 
94421
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
94422
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
94423
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
94424
        HASH_ELEMENT_TRUE,
 
94425
        HASH_ATTRIBUTE_HREF,
 
94426
        attributeValue))
 
94427
{
 
94428
    return false;
 
94429
}
 
94430
if ( !failed )
 
94431
    attributeData->present_attributes |= true__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
94432
 
 
94433
    break;
 
94434
    }
 
94435
    default:
 
94436
    {
 
94437
        if ( !attributeData->unknownAttributes.data )
 
94438
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
94439
        else
 
94440
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
94441
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
94442
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
94443
        attributeData->unknownAttributes.size += 2;
 
94444
 
 
94445
    }
 
94446
    }
 
94447
    }
 
94448
}
 
94449
if ((attributeData->present_attributes & true__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
94450
{
 
94451
    attributeData->definitionURL = COLLADABU::URI("");
 
94452
}
 
94453
if ((attributeData->present_attributes & true__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
94454
{
 
94455
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
94456
}
 
94457
if ((attributeData->present_attributes & true__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
94458
{
 
94459
    attributeData->href = COLLADABU::URI("");
 
94460
}
 
94461
 
 
94462
 
 
94463
    return true;
 
94464
}
 
94465
 
 
94466
//---------------------------------------------------------------------
 
94467
bool ColladaParserAutoGen15Private::_preEnd__true()
 
94468
{
 
94469
#ifdef GENERATEDSAXPARSER_VALIDATION
 
94470
    if ( mValidate )
 
94471
    {
 
94472
 
 
94473
        bool validationResult = _validateEnd__true();
 
94474
        if ( !validationResult ) return false;
 
94475
 
 
94476
    } // validation
 
94477
#endif
 
94478
 
 
94479
    return true;
 
94480
}
 
94481
 
 
94482
//---------------------------------------------------------------------
 
94483
bool ColladaParserAutoGen15Private::_freeAttributes__true( void* attributeData )
 
94484
{
 
94485
    true__AttributeData* typedAttributeData = static_cast<true__AttributeData*>(attributeData);
 
94486
    if (typedAttributeData->_class.data)
 
94487
    {
 
94488
        mStackMemoryManager.deleteObject();
 
94489
    }
 
94490
 
 
94491
    if (typedAttributeData->unknownAttributes.data)
 
94492
    {
 
94493
        mStackMemoryManager.deleteObject();
 
94494
    }
 
94495
 
 
94496
 
 
94497
    typedAttributeData->~true__AttributeData();
 
94498
 
 
94499
    return true;
 
94500
}
 
94501
 
 
94502
//---------------------------------------------------------------------
 
94503
const false__AttributeData false__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
94504
 
 
94505
//---------------------------------------------------------------------
 
94506
bool ColladaParserAutoGen15Private::_data__false( const ParserChar* text, size_t textLength )
 
94507
{
 
94508
    return true;
 
94509
}
 
94510
 
 
94511
//---------------------------------------------------------------------
 
94512
bool ColladaParserAutoGen15Private::_preBegin__false( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
94513
{
 
94514
#ifdef GENERATEDSAXPARSER_VALIDATION
 
94515
    if ( mValidate )
 
94516
    {
 
94517
 
 
94518
        bool validationResult = _validateBegin__false( attributes, attributeDataPtr, validationDataPtr );
 
94519
        if ( !validationResult ) return false;
 
94520
 
 
94521
    } // validation
 
94522
#endif
 
94523
 
 
94524
false__AttributeData* attributeData = newData<false__AttributeData>(attributeDataPtr);
 
94525
 
 
94526
const ParserChar** attributeArray = attributes.attributes;
 
94527
if ( attributeArray )
 
94528
{
 
94529
    while (true)
 
94530
    {
 
94531
        const ParserChar * attribute = *attributeArray;
 
94532
        if ( !attribute )
 
94533
            break;
 
94534
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
94535
        attributeArray++;
 
94536
        if ( !attributeArray )
 
94537
            return false;
 
94538
        const ParserChar* attributeValue = *attributeArray;
 
94539
        attributeArray++;
 
94540
 
 
94541
 
 
94542
    switch ( hash )
 
94543
    {
 
94544
    case HASH_ATTRIBUTE_ENCODING:
 
94545
    {
 
94546
 
 
94547
attributeData->encoding = attributeValue;
 
94548
 
 
94549
    break;
 
94550
    }
 
94551
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
94552
    {
 
94553
bool failed;
 
94554
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
94555
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
94556
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
94557
        HASH_ELEMENT_FALSE,
 
94558
        HASH_ATTRIBUTE_DEFINITIONURL,
 
94559
        attributeValue))
 
94560
{
 
94561
    return false;
 
94562
}
 
94563
if ( !failed )
 
94564
    attributeData->present_attributes |= false__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
94565
 
 
94566
    break;
 
94567
    }
 
94568
    case HASH_ATTRIBUTE_CLASS:
 
94569
    {
 
94570
bool failed;
 
94571
#ifdef GENERATEDSAXPARSER_VALIDATION
 
94572
    if ( mValidate )
 
94573
    {
 
94574
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_FALSE, HASH_ATTRIBUTE_CLASS);
 
94575
    }
 
94576
    else
 
94577
    {
 
94578
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
94579
    }
 
94580
#else
 
94581
    {
 
94582
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
94583
    } // validation
 
94584
#endif
 
94585
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
94586
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
94587
        HASH_ELEMENT_FALSE,
 
94588
        HASH_ATTRIBUTE_CLASS,
 
94589
        attributeValue))
 
94590
{
 
94591
    return false;
 
94592
}
 
94593
#ifdef GENERATEDSAXPARSER_VALIDATION
 
94594
    if ( mValidate )
 
94595
    {
 
94596
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
94597
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
94598
    {
 
94599
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
94600
            simpleTypeValidationResult,
 
94601
            HASH_ELEMENT_FALSE,
 
94602
            HASH_ATTRIBUTE_CLASS,
 
94603
            attributeValue) )
 
94604
        {
 
94605
            return false;
 
94606
        }
 
94607
    }
 
94608
    } // validation
 
94609
#endif
 
94610
 
 
94611
if ( !failed )
 
94612
    attributeData->present_attributes |= false__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
94613
 
 
94614
    break;
 
94615
    }
 
94616
    case HASH_ATTRIBUTE_STYLE:
 
94617
    {
 
94618
 
 
94619
attributeData->style = attributeValue;
 
94620
 
 
94621
    break;
 
94622
    }
 
94623
    case HASH_ATTRIBUTE_XREF:
 
94624
    {
 
94625
 
 
94626
attributeData->xref = attributeValue;
 
94627
 
 
94628
    break;
 
94629
    }
 
94630
    case HASH_ATTRIBUTE_ID:
 
94631
    {
 
94632
 
 
94633
attributeData->id = attributeValue;
 
94634
 
 
94635
    break;
 
94636
    }
 
94637
    case HASH_ATTRIBUTE_HREF:
 
94638
    {
 
94639
bool failed;
 
94640
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
94641
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
94642
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
94643
        HASH_ELEMENT_FALSE,
 
94644
        HASH_ATTRIBUTE_HREF,
 
94645
        attributeValue))
 
94646
{
 
94647
    return false;
 
94648
}
 
94649
if ( !failed )
 
94650
    attributeData->present_attributes |= false__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
94651
 
 
94652
    break;
 
94653
    }
 
94654
    default:
 
94655
    {
 
94656
        if ( !attributeData->unknownAttributes.data )
 
94657
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
94658
        else
 
94659
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
94660
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
94661
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
94662
        attributeData->unknownAttributes.size += 2;
 
94663
 
 
94664
    }
 
94665
    }
 
94666
    }
 
94667
}
 
94668
if ((attributeData->present_attributes & false__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
94669
{
 
94670
    attributeData->definitionURL = COLLADABU::URI("");
 
94671
}
 
94672
if ((attributeData->present_attributes & false__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
94673
{
 
94674
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
94675
}
 
94676
if ((attributeData->present_attributes & false__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
94677
{
 
94678
    attributeData->href = COLLADABU::URI("");
 
94679
}
 
94680
 
 
94681
 
 
94682
    return true;
 
94683
}
 
94684
 
 
94685
//---------------------------------------------------------------------
 
94686
bool ColladaParserAutoGen15Private::_preEnd__false()
 
94687
{
 
94688
#ifdef GENERATEDSAXPARSER_VALIDATION
 
94689
    if ( mValidate )
 
94690
    {
 
94691
 
 
94692
        bool validationResult = _validateEnd__false();
 
94693
        if ( !validationResult ) return false;
 
94694
 
 
94695
    } // validation
 
94696
#endif
 
94697
 
 
94698
    return true;
 
94699
}
 
94700
 
 
94701
//---------------------------------------------------------------------
 
94702
bool ColladaParserAutoGen15Private::_freeAttributes__false( void* attributeData )
 
94703
{
 
94704
    false__AttributeData* typedAttributeData = static_cast<false__AttributeData*>(attributeData);
 
94705
    if (typedAttributeData->_class.data)
 
94706
    {
 
94707
        mStackMemoryManager.deleteObject();
 
94708
    }
 
94709
 
 
94710
    if (typedAttributeData->unknownAttributes.data)
 
94711
    {
 
94712
        mStackMemoryManager.deleteObject();
 
94713
    }
 
94714
 
 
94715
 
 
94716
    typedAttributeData->~false__AttributeData();
 
94717
 
 
94718
    return true;
 
94719
}
 
94720
 
 
94721
//---------------------------------------------------------------------
 
94722
const infinity__AttributeData infinity__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
94723
 
 
94724
//---------------------------------------------------------------------
 
94725
bool ColladaParserAutoGen15Private::_data__infinity( const ParserChar* text, size_t textLength )
 
94726
{
 
94727
    return true;
 
94728
}
 
94729
 
 
94730
//---------------------------------------------------------------------
 
94731
bool ColladaParserAutoGen15Private::_preBegin__infinity( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
94732
{
 
94733
#ifdef GENERATEDSAXPARSER_VALIDATION
 
94734
    if ( mValidate )
 
94735
    {
 
94736
 
 
94737
        bool validationResult = _validateBegin__infinity( attributes, attributeDataPtr, validationDataPtr );
 
94738
        if ( !validationResult ) return false;
 
94739
 
 
94740
    } // validation
 
94741
#endif
 
94742
 
 
94743
infinity__AttributeData* attributeData = newData<infinity__AttributeData>(attributeDataPtr);
 
94744
 
 
94745
const ParserChar** attributeArray = attributes.attributes;
 
94746
if ( attributeArray )
 
94747
{
 
94748
    while (true)
 
94749
    {
 
94750
        const ParserChar * attribute = *attributeArray;
 
94751
        if ( !attribute )
 
94752
            break;
 
94753
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
94754
        attributeArray++;
 
94755
        if ( !attributeArray )
 
94756
            return false;
 
94757
        const ParserChar* attributeValue = *attributeArray;
 
94758
        attributeArray++;
 
94759
 
 
94760
 
 
94761
    switch ( hash )
 
94762
    {
 
94763
    case HASH_ATTRIBUTE_ENCODING:
 
94764
    {
 
94765
 
 
94766
attributeData->encoding = attributeValue;
 
94767
 
 
94768
    break;
 
94769
    }
 
94770
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
94771
    {
 
94772
bool failed;
 
94773
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
94774
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
94775
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
94776
        HASH_ELEMENT_INFINITY,
 
94777
        HASH_ATTRIBUTE_DEFINITIONURL,
 
94778
        attributeValue))
 
94779
{
 
94780
    return false;
 
94781
}
 
94782
if ( !failed )
 
94783
    attributeData->present_attributes |= infinity__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
94784
 
 
94785
    break;
 
94786
    }
 
94787
    case HASH_ATTRIBUTE_CLASS:
 
94788
    {
 
94789
bool failed;
 
94790
#ifdef GENERATEDSAXPARSER_VALIDATION
 
94791
    if ( mValidate )
 
94792
    {
 
94793
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_INFINITY, HASH_ATTRIBUTE_CLASS);
 
94794
    }
 
94795
    else
 
94796
    {
 
94797
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
94798
    }
 
94799
#else
 
94800
    {
 
94801
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
94802
    } // validation
 
94803
#endif
 
94804
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
94805
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
94806
        HASH_ELEMENT_INFINITY,
 
94807
        HASH_ATTRIBUTE_CLASS,
 
94808
        attributeValue))
 
94809
{
 
94810
    return false;
 
94811
}
 
94812
#ifdef GENERATEDSAXPARSER_VALIDATION
 
94813
    if ( mValidate )
 
94814
    {
 
94815
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
94816
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
94817
    {
 
94818
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
94819
            simpleTypeValidationResult,
 
94820
            HASH_ELEMENT_INFINITY,
 
94821
            HASH_ATTRIBUTE_CLASS,
 
94822
            attributeValue) )
 
94823
        {
 
94824
            return false;
 
94825
        }
 
94826
    }
 
94827
    } // validation
 
94828
#endif
 
94829
 
 
94830
if ( !failed )
 
94831
    attributeData->present_attributes |= infinity__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
94832
 
 
94833
    break;
 
94834
    }
 
94835
    case HASH_ATTRIBUTE_STYLE:
 
94836
    {
 
94837
 
 
94838
attributeData->style = attributeValue;
 
94839
 
 
94840
    break;
 
94841
    }
 
94842
    case HASH_ATTRIBUTE_XREF:
 
94843
    {
 
94844
 
 
94845
attributeData->xref = attributeValue;
 
94846
 
 
94847
    break;
 
94848
    }
 
94849
    case HASH_ATTRIBUTE_ID:
 
94850
    {
 
94851
 
 
94852
attributeData->id = attributeValue;
 
94853
 
 
94854
    break;
 
94855
    }
 
94856
    case HASH_ATTRIBUTE_HREF:
 
94857
    {
 
94858
bool failed;
 
94859
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
94860
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
94861
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
94862
        HASH_ELEMENT_INFINITY,
 
94863
        HASH_ATTRIBUTE_HREF,
 
94864
        attributeValue))
 
94865
{
 
94866
    return false;
 
94867
}
 
94868
if ( !failed )
 
94869
    attributeData->present_attributes |= infinity__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
94870
 
 
94871
    break;
 
94872
    }
 
94873
    default:
 
94874
    {
 
94875
        if ( !attributeData->unknownAttributes.data )
 
94876
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
94877
        else
 
94878
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
94879
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
94880
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
94881
        attributeData->unknownAttributes.size += 2;
 
94882
 
 
94883
    }
 
94884
    }
 
94885
    }
 
94886
}
 
94887
if ((attributeData->present_attributes & infinity__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
94888
{
 
94889
    attributeData->definitionURL = COLLADABU::URI("");
 
94890
}
 
94891
if ((attributeData->present_attributes & infinity__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
94892
{
 
94893
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
94894
}
 
94895
if ((attributeData->present_attributes & infinity__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
94896
{
 
94897
    attributeData->href = COLLADABU::URI("");
 
94898
}
 
94899
 
 
94900
 
 
94901
    return true;
 
94902
}
 
94903
 
 
94904
//---------------------------------------------------------------------
 
94905
bool ColladaParserAutoGen15Private::_preEnd__infinity()
 
94906
{
 
94907
#ifdef GENERATEDSAXPARSER_VALIDATION
 
94908
    if ( mValidate )
 
94909
    {
 
94910
 
 
94911
        bool validationResult = _validateEnd__infinity();
 
94912
        if ( !validationResult ) return false;
 
94913
 
 
94914
    } // validation
 
94915
#endif
 
94916
 
 
94917
    return true;
 
94918
}
 
94919
 
 
94920
//---------------------------------------------------------------------
 
94921
bool ColladaParserAutoGen15Private::_freeAttributes__infinity( void* attributeData )
 
94922
{
 
94923
    infinity__AttributeData* typedAttributeData = static_cast<infinity__AttributeData*>(attributeData);
 
94924
    if (typedAttributeData->_class.data)
 
94925
    {
 
94926
        mStackMemoryManager.deleteObject();
 
94927
    }
 
94928
 
 
94929
    if (typedAttributeData->unknownAttributes.data)
 
94930
    {
 
94931
        mStackMemoryManager.deleteObject();
 
94932
    }
 
94933
 
 
94934
 
 
94935
    typedAttributeData->~infinity__AttributeData();
 
94936
 
 
94937
    return true;
 
94938
}
 
94939
 
 
94940
//---------------------------------------------------------------------
 
94941
const notanumber__AttributeData notanumber__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
94942
 
 
94943
//---------------------------------------------------------------------
 
94944
bool ColladaParserAutoGen15Private::_data__notanumber( const ParserChar* text, size_t textLength )
 
94945
{
 
94946
    return true;
 
94947
}
 
94948
 
 
94949
//---------------------------------------------------------------------
 
94950
bool ColladaParserAutoGen15Private::_preBegin__notanumber( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
94951
{
 
94952
#ifdef GENERATEDSAXPARSER_VALIDATION
 
94953
    if ( mValidate )
 
94954
    {
 
94955
 
 
94956
        bool validationResult = _validateBegin__notanumber( attributes, attributeDataPtr, validationDataPtr );
 
94957
        if ( !validationResult ) return false;
 
94958
 
 
94959
    } // validation
 
94960
#endif
 
94961
 
 
94962
notanumber__AttributeData* attributeData = newData<notanumber__AttributeData>(attributeDataPtr);
 
94963
 
 
94964
const ParserChar** attributeArray = attributes.attributes;
 
94965
if ( attributeArray )
 
94966
{
 
94967
    while (true)
 
94968
    {
 
94969
        const ParserChar * attribute = *attributeArray;
 
94970
        if ( !attribute )
 
94971
            break;
 
94972
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
94973
        attributeArray++;
 
94974
        if ( !attributeArray )
 
94975
            return false;
 
94976
        const ParserChar* attributeValue = *attributeArray;
 
94977
        attributeArray++;
 
94978
 
 
94979
 
 
94980
    switch ( hash )
 
94981
    {
 
94982
    case HASH_ATTRIBUTE_ENCODING:
 
94983
    {
 
94984
 
 
94985
attributeData->encoding = attributeValue;
 
94986
 
 
94987
    break;
 
94988
    }
 
94989
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
94990
    {
 
94991
bool failed;
 
94992
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
94993
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
94994
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
94995
        HASH_ELEMENT_NOTANUMBER,
 
94996
        HASH_ATTRIBUTE_DEFINITIONURL,
 
94997
        attributeValue))
 
94998
{
 
94999
    return false;
 
95000
}
 
95001
if ( !failed )
 
95002
    attributeData->present_attributes |= notanumber__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
95003
 
 
95004
    break;
 
95005
    }
 
95006
    case HASH_ATTRIBUTE_CLASS:
 
95007
    {
 
95008
bool failed;
 
95009
#ifdef GENERATEDSAXPARSER_VALIDATION
 
95010
    if ( mValidate )
 
95011
    {
 
95012
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_NOTANUMBER, HASH_ATTRIBUTE_CLASS);
 
95013
    }
 
95014
    else
 
95015
    {
 
95016
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
95017
    }
 
95018
#else
 
95019
    {
 
95020
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
95021
    } // validation
 
95022
#endif
 
95023
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
95024
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
95025
        HASH_ELEMENT_NOTANUMBER,
 
95026
        HASH_ATTRIBUTE_CLASS,
 
95027
        attributeValue))
 
95028
{
 
95029
    return false;
 
95030
}
 
95031
#ifdef GENERATEDSAXPARSER_VALIDATION
 
95032
    if ( mValidate )
 
95033
    {
 
95034
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
95035
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
95036
    {
 
95037
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
95038
            simpleTypeValidationResult,
 
95039
            HASH_ELEMENT_NOTANUMBER,
 
95040
            HASH_ATTRIBUTE_CLASS,
 
95041
            attributeValue) )
 
95042
        {
 
95043
            return false;
 
95044
        }
 
95045
    }
 
95046
    } // validation
 
95047
#endif
 
95048
 
 
95049
if ( !failed )
 
95050
    attributeData->present_attributes |= notanumber__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
95051
 
 
95052
    break;
 
95053
    }
 
95054
    case HASH_ATTRIBUTE_STYLE:
 
95055
    {
 
95056
 
 
95057
attributeData->style = attributeValue;
 
95058
 
 
95059
    break;
 
95060
    }
 
95061
    case HASH_ATTRIBUTE_XREF:
 
95062
    {
 
95063
 
 
95064
attributeData->xref = attributeValue;
 
95065
 
 
95066
    break;
 
95067
    }
 
95068
    case HASH_ATTRIBUTE_ID:
 
95069
    {
 
95070
 
 
95071
attributeData->id = attributeValue;
 
95072
 
 
95073
    break;
 
95074
    }
 
95075
    case HASH_ATTRIBUTE_HREF:
 
95076
    {
 
95077
bool failed;
 
95078
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
95079
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
95080
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
95081
        HASH_ELEMENT_NOTANUMBER,
 
95082
        HASH_ATTRIBUTE_HREF,
 
95083
        attributeValue))
 
95084
{
 
95085
    return false;
 
95086
}
 
95087
if ( !failed )
 
95088
    attributeData->present_attributes |= notanumber__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
95089
 
 
95090
    break;
 
95091
    }
 
95092
    default:
 
95093
    {
 
95094
        if ( !attributeData->unknownAttributes.data )
 
95095
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
95096
        else
 
95097
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
95098
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
95099
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
95100
        attributeData->unknownAttributes.size += 2;
 
95101
 
 
95102
    }
 
95103
    }
 
95104
    }
 
95105
}
 
95106
if ((attributeData->present_attributes & notanumber__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
95107
{
 
95108
    attributeData->definitionURL = COLLADABU::URI("");
 
95109
}
 
95110
if ((attributeData->present_attributes & notanumber__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
95111
{
 
95112
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
95113
}
 
95114
if ((attributeData->present_attributes & notanumber__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
95115
{
 
95116
    attributeData->href = COLLADABU::URI("");
 
95117
}
 
95118
 
 
95119
 
 
95120
    return true;
 
95121
}
 
95122
 
 
95123
//---------------------------------------------------------------------
 
95124
bool ColladaParserAutoGen15Private::_preEnd__notanumber()
 
95125
{
 
95126
#ifdef GENERATEDSAXPARSER_VALIDATION
 
95127
    if ( mValidate )
 
95128
    {
 
95129
 
 
95130
        bool validationResult = _validateEnd__notanumber();
 
95131
        if ( !validationResult ) return false;
 
95132
 
 
95133
    } // validation
 
95134
#endif
 
95135
 
 
95136
    return true;
 
95137
}
 
95138
 
 
95139
//---------------------------------------------------------------------
 
95140
bool ColladaParserAutoGen15Private::_freeAttributes__notanumber( void* attributeData )
 
95141
{
 
95142
    notanumber__AttributeData* typedAttributeData = static_cast<notanumber__AttributeData*>(attributeData);
 
95143
    if (typedAttributeData->_class.data)
 
95144
    {
 
95145
        mStackMemoryManager.deleteObject();
 
95146
    }
 
95147
 
 
95148
    if (typedAttributeData->unknownAttributes.data)
 
95149
    {
 
95150
        mStackMemoryManager.deleteObject();
 
95151
    }
 
95152
 
 
95153
 
 
95154
    typedAttributeData->~notanumber__AttributeData();
 
95155
 
 
95156
    return true;
 
95157
}
 
95158
 
 
95159
//---------------------------------------------------------------------
 
95160
const set__AttributeData set__AttributeData::DEFAULT = {0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
95161
 
 
95162
//---------------------------------------------------------------------
 
95163
bool ColladaParserAutoGen15Private::_data__set( const ParserChar* text, size_t textLength )
 
95164
{
 
95165
    return true;
 
95166
}
 
95167
 
 
95168
//---------------------------------------------------------------------
 
95169
bool ColladaParserAutoGen15Private::_preBegin__set( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
95170
{
 
95171
#ifdef GENERATEDSAXPARSER_VALIDATION
 
95172
    if ( mValidate )
 
95173
    {
 
95174
 
 
95175
        bool validationResult = _validateBegin__set( attributes, attributeDataPtr, validationDataPtr );
 
95176
        if ( !validationResult ) return false;
 
95177
 
 
95178
    } // validation
 
95179
#endif
 
95180
 
 
95181
set__AttributeData* attributeData = newData<set__AttributeData>(attributeDataPtr);
 
95182
 
 
95183
const ParserChar** attributeArray = attributes.attributes;
 
95184
if ( attributeArray )
 
95185
{
 
95186
    while (true)
 
95187
    {
 
95188
        const ParserChar * attribute = *attributeArray;
 
95189
        if ( !attribute )
 
95190
            break;
 
95191
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
95192
        attributeArray++;
 
95193
        if ( !attributeArray )
 
95194
            return false;
 
95195
        const ParserChar* attributeValue = *attributeArray;
 
95196
        attributeArray++;
 
95197
 
 
95198
 
 
95199
    switch ( hash )
 
95200
    {
 
95201
    case HASH_ATTRIBUTE_TYPE:
 
95202
    {
 
95203
 
 
95204
attributeData->type = attributeValue;
 
95205
 
 
95206
    break;
 
95207
    }
 
95208
    case HASH_ATTRIBUTE_CLASS:
 
95209
    {
 
95210
bool failed;
 
95211
#ifdef GENERATEDSAXPARSER_VALIDATION
 
95212
    if ( mValidate )
 
95213
    {
 
95214
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_SET, HASH_ATTRIBUTE_CLASS);
 
95215
    }
 
95216
    else
 
95217
    {
 
95218
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
95219
    }
 
95220
#else
 
95221
    {
 
95222
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
95223
    } // validation
 
95224
#endif
 
95225
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
95226
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
95227
        HASH_ELEMENT_SET,
 
95228
        HASH_ATTRIBUTE_CLASS,
 
95229
        attributeValue))
 
95230
{
 
95231
    return false;
 
95232
}
 
95233
#ifdef GENERATEDSAXPARSER_VALIDATION
 
95234
    if ( mValidate )
 
95235
    {
 
95236
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
95237
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
95238
    {
 
95239
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
95240
            simpleTypeValidationResult,
 
95241
            HASH_ELEMENT_SET,
 
95242
            HASH_ATTRIBUTE_CLASS,
 
95243
            attributeValue) )
 
95244
        {
 
95245
            return false;
 
95246
        }
 
95247
    }
 
95248
    } // validation
 
95249
#endif
 
95250
 
 
95251
if ( !failed )
 
95252
    attributeData->present_attributes |= set__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
95253
 
 
95254
    break;
 
95255
    }
 
95256
    case HASH_ATTRIBUTE_STYLE:
 
95257
    {
 
95258
 
 
95259
attributeData->style = attributeValue;
 
95260
 
 
95261
    break;
 
95262
    }
 
95263
    case HASH_ATTRIBUTE_XREF:
 
95264
    {
 
95265
 
 
95266
attributeData->xref = attributeValue;
 
95267
 
 
95268
    break;
 
95269
    }
 
95270
    case HASH_ATTRIBUTE_ID:
 
95271
    {
 
95272
 
 
95273
attributeData->id = attributeValue;
 
95274
 
 
95275
    break;
 
95276
    }
 
95277
    case HASH_ATTRIBUTE_HREF:
 
95278
    {
 
95279
bool failed;
 
95280
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
95281
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
95282
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
95283
        HASH_ELEMENT_SET,
 
95284
        HASH_ATTRIBUTE_HREF,
 
95285
        attributeValue))
 
95286
{
 
95287
    return false;
 
95288
}
 
95289
if ( !failed )
 
95290
    attributeData->present_attributes |= set__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
95291
 
 
95292
    break;
 
95293
    }
 
95294
    default:
 
95295
    {
 
95296
        if ( !attributeData->unknownAttributes.data )
 
95297
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
95298
        else
 
95299
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
95300
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
95301
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
95302
        attributeData->unknownAttributes.size += 2;
 
95303
 
 
95304
    }
 
95305
    }
 
95306
    }
 
95307
}
 
95308
if ((attributeData->present_attributes & set__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
95309
{
 
95310
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
95311
}
 
95312
if ((attributeData->present_attributes & set__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
95313
{
 
95314
    attributeData->href = COLLADABU::URI("");
 
95315
}
 
95316
 
 
95317
 
 
95318
    return true;
 
95319
}
 
95320
 
 
95321
//---------------------------------------------------------------------
 
95322
bool ColladaParserAutoGen15Private::_preEnd__set()
 
95323
{
 
95324
#ifdef GENERATEDSAXPARSER_VALIDATION
 
95325
    if ( mValidate )
 
95326
    {
 
95327
 
 
95328
        bool validationResult = _validateEnd__set();
 
95329
        if ( !validationResult ) return false;
 
95330
 
 
95331
    } // validation
 
95332
#endif
 
95333
 
 
95334
    return true;
 
95335
}
 
95336
 
 
95337
//---------------------------------------------------------------------
 
95338
bool ColladaParserAutoGen15Private::_freeAttributes__set( void* attributeData )
 
95339
{
 
95340
    set__AttributeData* typedAttributeData = static_cast<set__AttributeData*>(attributeData);
 
95341
    if (typedAttributeData->_class.data)
 
95342
    {
 
95343
        mStackMemoryManager.deleteObject();
 
95344
    }
 
95345
 
 
95346
    if (typedAttributeData->unknownAttributes.data)
 
95347
    {
 
95348
        mStackMemoryManager.deleteObject();
 
95349
    }
 
95350
 
 
95351
 
 
95352
    typedAttributeData->~set__AttributeData();
 
95353
 
 
95354
    return true;
 
95355
}
 
95356
 
 
95357
//---------------------------------------------------------------------
 
95358
const list__AttributeData list__AttributeData::DEFAULT = {0, ENUM__mathml__list__order__NOT_PRESENT, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
95359
 
 
95360
//---------------------------------------------------------------------
 
95361
bool ColladaParserAutoGen15Private::_data__list( const ParserChar* text, size_t textLength )
 
95362
{
 
95363
    return true;
 
95364
}
 
95365
 
 
95366
//---------------------------------------------------------------------
 
95367
bool ColladaParserAutoGen15Private::_preBegin__list( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
95368
{
 
95369
#ifdef GENERATEDSAXPARSER_VALIDATION
 
95370
    if ( mValidate )
 
95371
    {
 
95372
 
 
95373
        bool validationResult = _validateBegin__list( attributes, attributeDataPtr, validationDataPtr );
 
95374
        if ( !validationResult ) return false;
 
95375
 
 
95376
    } // validation
 
95377
#endif
 
95378
 
 
95379
list__AttributeData* attributeData = newData<list__AttributeData>(attributeDataPtr);
 
95380
 
 
95381
const ParserChar** attributeArray = attributes.attributes;
 
95382
if ( attributeArray )
 
95383
{
 
95384
    while (true)
 
95385
    {
 
95386
        const ParserChar * attribute = *attributeArray;
 
95387
        if ( !attribute )
 
95388
            break;
 
95389
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
95390
        attributeArray++;
 
95391
        if ( !attributeArray )
 
95392
            return false;
 
95393
        const ParserChar* attributeValue = *attributeArray;
 
95394
        attributeArray++;
 
95395
 
 
95396
 
 
95397
    switch ( hash )
 
95398
    {
 
95399
    case HASH_ATTRIBUTE_ORDER:
 
95400
    {
 
95401
bool failed;
 
95402
attributeData->order = Utils::toEnum<ENUM__mathml__list__order, StringHash, ENUM__mathml__list__order__COUNT>(attributeValue, failed, ENUM__mathml__list__orderMap, Utils::calculateStringHash);
 
95403
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
95404
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
95405
        HASH_ELEMENT_LIST,
 
95406
        HASH_ATTRIBUTE_ORDER,
 
95407
        attributeValue))
 
95408
{
 
95409
    return false;
 
95410
}
 
95411
 
 
95412
    break;
 
95413
    }
 
95414
    case HASH_ATTRIBUTE_CLASS:
 
95415
    {
 
95416
bool failed;
 
95417
#ifdef GENERATEDSAXPARSER_VALIDATION
 
95418
    if ( mValidate )
 
95419
    {
 
95420
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_LIST, HASH_ATTRIBUTE_CLASS);
 
95421
    }
 
95422
    else
 
95423
    {
 
95424
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
95425
    }
 
95426
#else
 
95427
    {
 
95428
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
95429
    } // validation
 
95430
#endif
 
95431
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
95432
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
95433
        HASH_ELEMENT_LIST,
 
95434
        HASH_ATTRIBUTE_CLASS,
 
95435
        attributeValue))
 
95436
{
 
95437
    return false;
 
95438
}
 
95439
#ifdef GENERATEDSAXPARSER_VALIDATION
 
95440
    if ( mValidate )
 
95441
    {
 
95442
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
95443
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
95444
    {
 
95445
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
95446
            simpleTypeValidationResult,
 
95447
            HASH_ELEMENT_LIST,
 
95448
            HASH_ATTRIBUTE_CLASS,
 
95449
            attributeValue) )
 
95450
        {
 
95451
            return false;
 
95452
        }
 
95453
    }
 
95454
    } // validation
 
95455
#endif
 
95456
 
 
95457
if ( !failed )
 
95458
    attributeData->present_attributes |= list__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
95459
 
 
95460
    break;
 
95461
    }
 
95462
    case HASH_ATTRIBUTE_STYLE:
 
95463
    {
 
95464
 
 
95465
attributeData->style = attributeValue;
 
95466
 
 
95467
    break;
 
95468
    }
 
95469
    case HASH_ATTRIBUTE_XREF:
 
95470
    {
 
95471
 
 
95472
attributeData->xref = attributeValue;
 
95473
 
 
95474
    break;
 
95475
    }
 
95476
    case HASH_ATTRIBUTE_ID:
 
95477
    {
 
95478
 
 
95479
attributeData->id = attributeValue;
 
95480
 
 
95481
    break;
 
95482
    }
 
95483
    case HASH_ATTRIBUTE_HREF:
 
95484
    {
 
95485
bool failed;
 
95486
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
95487
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
95488
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
95489
        HASH_ELEMENT_LIST,
 
95490
        HASH_ATTRIBUTE_HREF,
 
95491
        attributeValue))
 
95492
{
 
95493
    return false;
 
95494
}
 
95495
if ( !failed )
 
95496
    attributeData->present_attributes |= list__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
95497
 
 
95498
    break;
 
95499
    }
 
95500
    default:
 
95501
    {
 
95502
        if ( !attributeData->unknownAttributes.data )
 
95503
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
95504
        else
 
95505
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
95506
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
95507
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
95508
        attributeData->unknownAttributes.size += 2;
 
95509
 
 
95510
    }
 
95511
    }
 
95512
    }
 
95513
}
 
95514
if ((attributeData->present_attributes & list__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
95515
{
 
95516
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
95517
}
 
95518
if ((attributeData->present_attributes & list__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
95519
{
 
95520
    attributeData->href = COLLADABU::URI("");
 
95521
}
 
95522
 
 
95523
 
 
95524
    return true;
 
95525
}
 
95526
 
 
95527
//---------------------------------------------------------------------
 
95528
bool ColladaParserAutoGen15Private::_preEnd__list()
 
95529
{
 
95530
#ifdef GENERATEDSAXPARSER_VALIDATION
 
95531
    if ( mValidate )
 
95532
    {
 
95533
 
 
95534
        bool validationResult = _validateEnd__list();
 
95535
        if ( !validationResult ) return false;
 
95536
 
 
95537
    } // validation
 
95538
#endif
 
95539
 
 
95540
    return true;
 
95541
}
 
95542
 
 
95543
//---------------------------------------------------------------------
 
95544
bool ColladaParserAutoGen15Private::_freeAttributes__list( void* attributeData )
 
95545
{
 
95546
    list__AttributeData* typedAttributeData = static_cast<list__AttributeData*>(attributeData);
 
95547
    if (typedAttributeData->_class.data)
 
95548
    {
 
95549
        mStackMemoryManager.deleteObject();
 
95550
    }
 
95551
 
 
95552
    if (typedAttributeData->unknownAttributes.data)
 
95553
    {
 
95554
        mStackMemoryManager.deleteObject();
 
95555
    }
 
95556
 
 
95557
 
 
95558
    typedAttributeData->~list__AttributeData();
 
95559
 
 
95560
    return true;
 
95561
}
 
95562
 
 
95563
//---------------------------------------------------------------------
 
95564
ENUM__mathml__list__order ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__mathml__list__order (
 
95565
    const ParserChar* prefixedBuffer,
 
95566
    const ParserChar* prefixedBufferEnd,
 
95567
    const ParserChar** buffer,
 
95568
    const ParserChar* bufferEnd,
 
95569
    bool& failed,
 
95570
    const std::pair<StringHash, ENUM__mathml__list__order>* enumMap,
 
95571
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
95572
)
 
95573
{
 
95574
    return toEnumDataPrefix<ENUM__mathml__list__order, StringHash, ENUM__mathml__list__order__COUNT, &toEnum_ENUM__mathml__list__order>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
95575
}
 
95576
 
 
95577
//---------------------------------------------------------------------
 
95578
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__mathml__list__order (
 
95579
    const ParserChar* text,
 
95580
    size_t textLength,
 
95581
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__mathml__list__order*, size_t ),
 
95582
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
95583
)
 
95584
{
 
95585
    return characterData2EnumData<ENUM__mathml__list__order, StringHash, ENUM__mathml__list__order__COUNT>(text, textLength, dataFunction, ENUM__mathml__list__orderMap, baseConversionFunc, &toEnum_ENUM__mathml__list__order, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__mathml__list__order);
 
95586
}
 
95587
 
 
95588
//---------------------------------------------------------------------
 
95589
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__mathml__list__order (
 
95590
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__mathml__list__order*, size_t ),
 
95591
    const std::pair<StringHash, ENUM__mathml__list__order>* enumMap,
 
95592
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
95593
    ENUM__mathml__list__order (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__mathml__list__order>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
95594
)
 
95595
{
 
95596
    return dataEnumEnd<ENUM__mathml__list__order, StringHash, ENUM__mathml__list__order__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
95597
}
 
95598
 
 
95599
//---------------------------------------------------------------------
 
95600
const union__AttributeData union__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
95601
 
 
95602
//---------------------------------------------------------------------
 
95603
bool ColladaParserAutoGen15Private::_data__union( const ParserChar* text, size_t textLength )
 
95604
{
 
95605
    return true;
 
95606
}
 
95607
 
 
95608
//---------------------------------------------------------------------
 
95609
bool ColladaParserAutoGen15Private::_preBegin__union( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
95610
{
 
95611
#ifdef GENERATEDSAXPARSER_VALIDATION
 
95612
    if ( mValidate )
 
95613
    {
 
95614
 
 
95615
        bool validationResult = _validateBegin__union( attributes, attributeDataPtr, validationDataPtr );
 
95616
        if ( !validationResult ) return false;
 
95617
 
 
95618
    } // validation
 
95619
#endif
 
95620
 
 
95621
union__AttributeData* attributeData = newData<union__AttributeData>(attributeDataPtr);
 
95622
 
 
95623
const ParserChar** attributeArray = attributes.attributes;
 
95624
if ( attributeArray )
 
95625
{
 
95626
    while (true)
 
95627
    {
 
95628
        const ParserChar * attribute = *attributeArray;
 
95629
        if ( !attribute )
 
95630
            break;
 
95631
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
95632
        attributeArray++;
 
95633
        if ( !attributeArray )
 
95634
            return false;
 
95635
        const ParserChar* attributeValue = *attributeArray;
 
95636
        attributeArray++;
 
95637
 
 
95638
 
 
95639
    switch ( hash )
 
95640
    {
 
95641
    case HASH_ATTRIBUTE_ENCODING:
 
95642
    {
 
95643
 
 
95644
attributeData->encoding = attributeValue;
 
95645
 
 
95646
    break;
 
95647
    }
 
95648
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
95649
    {
 
95650
bool failed;
 
95651
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
95652
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
95653
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
95654
        HASH_ELEMENT_UNION,
 
95655
        HASH_ATTRIBUTE_DEFINITIONURL,
 
95656
        attributeValue))
 
95657
{
 
95658
    return false;
 
95659
}
 
95660
if ( !failed )
 
95661
    attributeData->present_attributes |= union__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
95662
 
 
95663
    break;
 
95664
    }
 
95665
    case HASH_ATTRIBUTE_CLASS:
 
95666
    {
 
95667
bool failed;
 
95668
#ifdef GENERATEDSAXPARSER_VALIDATION
 
95669
    if ( mValidate )
 
95670
    {
 
95671
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_UNION, HASH_ATTRIBUTE_CLASS);
 
95672
    }
 
95673
    else
 
95674
    {
 
95675
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
95676
    }
 
95677
#else
 
95678
    {
 
95679
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
95680
    } // validation
 
95681
#endif
 
95682
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
95683
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
95684
        HASH_ELEMENT_UNION,
 
95685
        HASH_ATTRIBUTE_CLASS,
 
95686
        attributeValue))
 
95687
{
 
95688
    return false;
 
95689
}
 
95690
#ifdef GENERATEDSAXPARSER_VALIDATION
 
95691
    if ( mValidate )
 
95692
    {
 
95693
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
95694
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
95695
    {
 
95696
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
95697
            simpleTypeValidationResult,
 
95698
            HASH_ELEMENT_UNION,
 
95699
            HASH_ATTRIBUTE_CLASS,
 
95700
            attributeValue) )
 
95701
        {
 
95702
            return false;
 
95703
        }
 
95704
    }
 
95705
    } // validation
 
95706
#endif
 
95707
 
 
95708
if ( !failed )
 
95709
    attributeData->present_attributes |= union__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
95710
 
 
95711
    break;
 
95712
    }
 
95713
    case HASH_ATTRIBUTE_STYLE:
 
95714
    {
 
95715
 
 
95716
attributeData->style = attributeValue;
 
95717
 
 
95718
    break;
 
95719
    }
 
95720
    case HASH_ATTRIBUTE_XREF:
 
95721
    {
 
95722
 
 
95723
attributeData->xref = attributeValue;
 
95724
 
 
95725
    break;
 
95726
    }
 
95727
    case HASH_ATTRIBUTE_ID:
 
95728
    {
 
95729
 
 
95730
attributeData->id = attributeValue;
 
95731
 
 
95732
    break;
 
95733
    }
 
95734
    case HASH_ATTRIBUTE_HREF:
 
95735
    {
 
95736
bool failed;
 
95737
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
95738
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
95739
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
95740
        HASH_ELEMENT_UNION,
 
95741
        HASH_ATTRIBUTE_HREF,
 
95742
        attributeValue))
 
95743
{
 
95744
    return false;
 
95745
}
 
95746
if ( !failed )
 
95747
    attributeData->present_attributes |= union__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
95748
 
 
95749
    break;
 
95750
    }
 
95751
    default:
 
95752
    {
 
95753
        if ( !attributeData->unknownAttributes.data )
 
95754
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
95755
        else
 
95756
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
95757
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
95758
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
95759
        attributeData->unknownAttributes.size += 2;
 
95760
 
 
95761
    }
 
95762
    }
 
95763
    }
 
95764
}
 
95765
if ((attributeData->present_attributes & union__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
95766
{
 
95767
    attributeData->definitionURL = COLLADABU::URI("");
 
95768
}
 
95769
if ((attributeData->present_attributes & union__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
95770
{
 
95771
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
95772
}
 
95773
if ((attributeData->present_attributes & union__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
95774
{
 
95775
    attributeData->href = COLLADABU::URI("");
 
95776
}
 
95777
 
 
95778
 
 
95779
    return true;
 
95780
}
 
95781
 
 
95782
//---------------------------------------------------------------------
 
95783
bool ColladaParserAutoGen15Private::_preEnd__union()
 
95784
{
 
95785
#ifdef GENERATEDSAXPARSER_VALIDATION
 
95786
    if ( mValidate )
 
95787
    {
 
95788
 
 
95789
        bool validationResult = _validateEnd__union();
 
95790
        if ( !validationResult ) return false;
 
95791
 
 
95792
    } // validation
 
95793
#endif
 
95794
 
 
95795
    return true;
 
95796
}
 
95797
 
 
95798
//---------------------------------------------------------------------
 
95799
bool ColladaParserAutoGen15Private::_freeAttributes__union( void* attributeData )
 
95800
{
 
95801
    union__AttributeData* typedAttributeData = static_cast<union__AttributeData*>(attributeData);
 
95802
    if (typedAttributeData->_class.data)
 
95803
    {
 
95804
        mStackMemoryManager.deleteObject();
 
95805
    }
 
95806
 
 
95807
    if (typedAttributeData->unknownAttributes.data)
 
95808
    {
 
95809
        mStackMemoryManager.deleteObject();
 
95810
    }
 
95811
 
 
95812
 
 
95813
    typedAttributeData->~union__AttributeData();
 
95814
 
 
95815
    return true;
 
95816
}
 
95817
 
 
95818
//---------------------------------------------------------------------
 
95819
const intersect__AttributeData intersect__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
95820
 
 
95821
//---------------------------------------------------------------------
 
95822
bool ColladaParserAutoGen15Private::_data__intersect( const ParserChar* text, size_t textLength )
 
95823
{
 
95824
    return true;
 
95825
}
 
95826
 
 
95827
//---------------------------------------------------------------------
 
95828
bool ColladaParserAutoGen15Private::_preBegin__intersect( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
95829
{
 
95830
#ifdef GENERATEDSAXPARSER_VALIDATION
 
95831
    if ( mValidate )
 
95832
    {
 
95833
 
 
95834
        bool validationResult = _validateBegin__intersect( attributes, attributeDataPtr, validationDataPtr );
 
95835
        if ( !validationResult ) return false;
 
95836
 
 
95837
    } // validation
 
95838
#endif
 
95839
 
 
95840
intersect__AttributeData* attributeData = newData<intersect__AttributeData>(attributeDataPtr);
 
95841
 
 
95842
const ParserChar** attributeArray = attributes.attributes;
 
95843
if ( attributeArray )
 
95844
{
 
95845
    while (true)
 
95846
    {
 
95847
        const ParserChar * attribute = *attributeArray;
 
95848
        if ( !attribute )
 
95849
            break;
 
95850
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
95851
        attributeArray++;
 
95852
        if ( !attributeArray )
 
95853
            return false;
 
95854
        const ParserChar* attributeValue = *attributeArray;
 
95855
        attributeArray++;
 
95856
 
 
95857
 
 
95858
    switch ( hash )
 
95859
    {
 
95860
    case HASH_ATTRIBUTE_ENCODING:
 
95861
    {
 
95862
 
 
95863
attributeData->encoding = attributeValue;
 
95864
 
 
95865
    break;
 
95866
    }
 
95867
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
95868
    {
 
95869
bool failed;
 
95870
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
95871
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
95872
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
95873
        HASH_ELEMENT_INTERSECT,
 
95874
        HASH_ATTRIBUTE_DEFINITIONURL,
 
95875
        attributeValue))
 
95876
{
 
95877
    return false;
 
95878
}
 
95879
if ( !failed )
 
95880
    attributeData->present_attributes |= intersect__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
95881
 
 
95882
    break;
 
95883
    }
 
95884
    case HASH_ATTRIBUTE_CLASS:
 
95885
    {
 
95886
bool failed;
 
95887
#ifdef GENERATEDSAXPARSER_VALIDATION
 
95888
    if ( mValidate )
 
95889
    {
 
95890
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_INTERSECT, HASH_ATTRIBUTE_CLASS);
 
95891
    }
 
95892
    else
 
95893
    {
 
95894
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
95895
    }
 
95896
#else
 
95897
    {
 
95898
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
95899
    } // validation
 
95900
#endif
 
95901
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
95902
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
95903
        HASH_ELEMENT_INTERSECT,
 
95904
        HASH_ATTRIBUTE_CLASS,
 
95905
        attributeValue))
 
95906
{
 
95907
    return false;
 
95908
}
 
95909
#ifdef GENERATEDSAXPARSER_VALIDATION
 
95910
    if ( mValidate )
 
95911
    {
 
95912
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
95913
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
95914
    {
 
95915
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
95916
            simpleTypeValidationResult,
 
95917
            HASH_ELEMENT_INTERSECT,
 
95918
            HASH_ATTRIBUTE_CLASS,
 
95919
            attributeValue) )
 
95920
        {
 
95921
            return false;
 
95922
        }
 
95923
    }
 
95924
    } // validation
 
95925
#endif
 
95926
 
 
95927
if ( !failed )
 
95928
    attributeData->present_attributes |= intersect__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
95929
 
 
95930
    break;
 
95931
    }
 
95932
    case HASH_ATTRIBUTE_STYLE:
 
95933
    {
 
95934
 
 
95935
attributeData->style = attributeValue;
 
95936
 
 
95937
    break;
 
95938
    }
 
95939
    case HASH_ATTRIBUTE_XREF:
 
95940
    {
 
95941
 
 
95942
attributeData->xref = attributeValue;
 
95943
 
 
95944
    break;
 
95945
    }
 
95946
    case HASH_ATTRIBUTE_ID:
 
95947
    {
 
95948
 
 
95949
attributeData->id = attributeValue;
 
95950
 
 
95951
    break;
 
95952
    }
 
95953
    case HASH_ATTRIBUTE_HREF:
 
95954
    {
 
95955
bool failed;
 
95956
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
95957
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
95958
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
95959
        HASH_ELEMENT_INTERSECT,
 
95960
        HASH_ATTRIBUTE_HREF,
 
95961
        attributeValue))
 
95962
{
 
95963
    return false;
 
95964
}
 
95965
if ( !failed )
 
95966
    attributeData->present_attributes |= intersect__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
95967
 
 
95968
    break;
 
95969
    }
 
95970
    default:
 
95971
    {
 
95972
        if ( !attributeData->unknownAttributes.data )
 
95973
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
95974
        else
 
95975
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
95976
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
95977
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
95978
        attributeData->unknownAttributes.size += 2;
 
95979
 
 
95980
    }
 
95981
    }
 
95982
    }
 
95983
}
 
95984
if ((attributeData->present_attributes & intersect__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
95985
{
 
95986
    attributeData->definitionURL = COLLADABU::URI("");
 
95987
}
 
95988
if ((attributeData->present_attributes & intersect__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
95989
{
 
95990
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
95991
}
 
95992
if ((attributeData->present_attributes & intersect__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
95993
{
 
95994
    attributeData->href = COLLADABU::URI("");
 
95995
}
 
95996
 
 
95997
 
 
95998
    return true;
 
95999
}
 
96000
 
 
96001
//---------------------------------------------------------------------
 
96002
bool ColladaParserAutoGen15Private::_preEnd__intersect()
 
96003
{
 
96004
#ifdef GENERATEDSAXPARSER_VALIDATION
 
96005
    if ( mValidate )
 
96006
    {
 
96007
 
 
96008
        bool validationResult = _validateEnd__intersect();
 
96009
        if ( !validationResult ) return false;
 
96010
 
 
96011
    } // validation
 
96012
#endif
 
96013
 
 
96014
    return true;
 
96015
}
 
96016
 
 
96017
//---------------------------------------------------------------------
 
96018
bool ColladaParserAutoGen15Private::_freeAttributes__intersect( void* attributeData )
 
96019
{
 
96020
    intersect__AttributeData* typedAttributeData = static_cast<intersect__AttributeData*>(attributeData);
 
96021
    if (typedAttributeData->_class.data)
 
96022
    {
 
96023
        mStackMemoryManager.deleteObject();
 
96024
    }
 
96025
 
 
96026
    if (typedAttributeData->unknownAttributes.data)
 
96027
    {
 
96028
        mStackMemoryManager.deleteObject();
 
96029
    }
 
96030
 
 
96031
 
 
96032
    typedAttributeData->~intersect__AttributeData();
 
96033
 
 
96034
    return true;
 
96035
}
 
96036
 
 
96037
//---------------------------------------------------------------------
 
96038
const in__AttributeData in__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
96039
 
 
96040
//---------------------------------------------------------------------
 
96041
bool ColladaParserAutoGen15Private::_data__in( const ParserChar* text, size_t textLength )
 
96042
{
 
96043
    return true;
 
96044
}
 
96045
 
 
96046
//---------------------------------------------------------------------
 
96047
bool ColladaParserAutoGen15Private::_preBegin__in( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
96048
{
 
96049
#ifdef GENERATEDSAXPARSER_VALIDATION
 
96050
    if ( mValidate )
 
96051
    {
 
96052
 
 
96053
        bool validationResult = _validateBegin__in( attributes, attributeDataPtr, validationDataPtr );
 
96054
        if ( !validationResult ) return false;
 
96055
 
 
96056
    } // validation
 
96057
#endif
 
96058
 
 
96059
in__AttributeData* attributeData = newData<in__AttributeData>(attributeDataPtr);
 
96060
 
 
96061
const ParserChar** attributeArray = attributes.attributes;
 
96062
if ( attributeArray )
 
96063
{
 
96064
    while (true)
 
96065
    {
 
96066
        const ParserChar * attribute = *attributeArray;
 
96067
        if ( !attribute )
 
96068
            break;
 
96069
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
96070
        attributeArray++;
 
96071
        if ( !attributeArray )
 
96072
            return false;
 
96073
        const ParserChar* attributeValue = *attributeArray;
 
96074
        attributeArray++;
 
96075
 
 
96076
 
 
96077
    switch ( hash )
 
96078
    {
 
96079
    case HASH_ATTRIBUTE_ENCODING:
 
96080
    {
 
96081
 
 
96082
attributeData->encoding = attributeValue;
 
96083
 
 
96084
    break;
 
96085
    }
 
96086
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
96087
    {
 
96088
bool failed;
 
96089
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
96090
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
96091
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
96092
        HASH_ELEMENT_IN,
 
96093
        HASH_ATTRIBUTE_DEFINITIONURL,
 
96094
        attributeValue))
 
96095
{
 
96096
    return false;
 
96097
}
 
96098
if ( !failed )
 
96099
    attributeData->present_attributes |= in__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
96100
 
 
96101
    break;
 
96102
    }
 
96103
    case HASH_ATTRIBUTE_CLASS:
 
96104
    {
 
96105
bool failed;
 
96106
#ifdef GENERATEDSAXPARSER_VALIDATION
 
96107
    if ( mValidate )
 
96108
    {
 
96109
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_IN, HASH_ATTRIBUTE_CLASS);
 
96110
    }
 
96111
    else
 
96112
    {
 
96113
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
96114
    }
 
96115
#else
 
96116
    {
 
96117
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
96118
    } // validation
 
96119
#endif
 
96120
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
96121
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
96122
        HASH_ELEMENT_IN,
 
96123
        HASH_ATTRIBUTE_CLASS,
 
96124
        attributeValue))
 
96125
{
 
96126
    return false;
 
96127
}
 
96128
#ifdef GENERATEDSAXPARSER_VALIDATION
 
96129
    if ( mValidate )
 
96130
    {
 
96131
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
96132
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
96133
    {
 
96134
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
96135
            simpleTypeValidationResult,
 
96136
            HASH_ELEMENT_IN,
 
96137
            HASH_ATTRIBUTE_CLASS,
 
96138
            attributeValue) )
 
96139
        {
 
96140
            return false;
 
96141
        }
 
96142
    }
 
96143
    } // validation
 
96144
#endif
 
96145
 
 
96146
if ( !failed )
 
96147
    attributeData->present_attributes |= in__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
96148
 
 
96149
    break;
 
96150
    }
 
96151
    case HASH_ATTRIBUTE_STYLE:
 
96152
    {
 
96153
 
 
96154
attributeData->style = attributeValue;
 
96155
 
 
96156
    break;
 
96157
    }
 
96158
    case HASH_ATTRIBUTE_XREF:
 
96159
    {
 
96160
 
 
96161
attributeData->xref = attributeValue;
 
96162
 
 
96163
    break;
 
96164
    }
 
96165
    case HASH_ATTRIBUTE_ID:
 
96166
    {
 
96167
 
 
96168
attributeData->id = attributeValue;
 
96169
 
 
96170
    break;
 
96171
    }
 
96172
    case HASH_ATTRIBUTE_HREF:
 
96173
    {
 
96174
bool failed;
 
96175
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
96176
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
96177
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
96178
        HASH_ELEMENT_IN,
 
96179
        HASH_ATTRIBUTE_HREF,
 
96180
        attributeValue))
 
96181
{
 
96182
    return false;
 
96183
}
 
96184
if ( !failed )
 
96185
    attributeData->present_attributes |= in__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
96186
 
 
96187
    break;
 
96188
    }
 
96189
    default:
 
96190
    {
 
96191
        if ( !attributeData->unknownAttributes.data )
 
96192
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
96193
        else
 
96194
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
96195
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
96196
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
96197
        attributeData->unknownAttributes.size += 2;
 
96198
 
 
96199
    }
 
96200
    }
 
96201
    }
 
96202
}
 
96203
if ((attributeData->present_attributes & in__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
96204
{
 
96205
    attributeData->definitionURL = COLLADABU::URI("");
 
96206
}
 
96207
if ((attributeData->present_attributes & in__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
96208
{
 
96209
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
96210
}
 
96211
if ((attributeData->present_attributes & in__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
96212
{
 
96213
    attributeData->href = COLLADABU::URI("");
 
96214
}
 
96215
 
 
96216
 
 
96217
    return true;
 
96218
}
 
96219
 
 
96220
//---------------------------------------------------------------------
 
96221
bool ColladaParserAutoGen15Private::_preEnd__in()
 
96222
{
 
96223
#ifdef GENERATEDSAXPARSER_VALIDATION
 
96224
    if ( mValidate )
 
96225
    {
 
96226
 
 
96227
        bool validationResult = _validateEnd__in();
 
96228
        if ( !validationResult ) return false;
 
96229
 
 
96230
    } // validation
 
96231
#endif
 
96232
 
 
96233
    return true;
 
96234
}
 
96235
 
 
96236
//---------------------------------------------------------------------
 
96237
bool ColladaParserAutoGen15Private::_freeAttributes__in( void* attributeData )
 
96238
{
 
96239
    in__AttributeData* typedAttributeData = static_cast<in__AttributeData*>(attributeData);
 
96240
    if (typedAttributeData->_class.data)
 
96241
    {
 
96242
        mStackMemoryManager.deleteObject();
 
96243
    }
 
96244
 
 
96245
    if (typedAttributeData->unknownAttributes.data)
 
96246
    {
 
96247
        mStackMemoryManager.deleteObject();
 
96248
    }
 
96249
 
 
96250
 
 
96251
    typedAttributeData->~in__AttributeData();
 
96252
 
 
96253
    return true;
 
96254
}
 
96255
 
 
96256
//---------------------------------------------------------------------
 
96257
const notin__AttributeData notin__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
96258
 
 
96259
//---------------------------------------------------------------------
 
96260
bool ColladaParserAutoGen15Private::_data__notin( const ParserChar* text, size_t textLength )
 
96261
{
 
96262
    return true;
 
96263
}
 
96264
 
 
96265
//---------------------------------------------------------------------
 
96266
bool ColladaParserAutoGen15Private::_preBegin__notin( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
96267
{
 
96268
#ifdef GENERATEDSAXPARSER_VALIDATION
 
96269
    if ( mValidate )
 
96270
    {
 
96271
 
 
96272
        bool validationResult = _validateBegin__notin( attributes, attributeDataPtr, validationDataPtr );
 
96273
        if ( !validationResult ) return false;
 
96274
 
 
96275
    } // validation
 
96276
#endif
 
96277
 
 
96278
notin__AttributeData* attributeData = newData<notin__AttributeData>(attributeDataPtr);
 
96279
 
 
96280
const ParserChar** attributeArray = attributes.attributes;
 
96281
if ( attributeArray )
 
96282
{
 
96283
    while (true)
 
96284
    {
 
96285
        const ParserChar * attribute = *attributeArray;
 
96286
        if ( !attribute )
 
96287
            break;
 
96288
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
96289
        attributeArray++;
 
96290
        if ( !attributeArray )
 
96291
            return false;
 
96292
        const ParserChar* attributeValue = *attributeArray;
 
96293
        attributeArray++;
 
96294
 
 
96295
 
 
96296
    switch ( hash )
 
96297
    {
 
96298
    case HASH_ATTRIBUTE_ENCODING:
 
96299
    {
 
96300
 
 
96301
attributeData->encoding = attributeValue;
 
96302
 
 
96303
    break;
 
96304
    }
 
96305
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
96306
    {
 
96307
bool failed;
 
96308
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
96309
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
96310
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
96311
        HASH_ELEMENT_NOTIN,
 
96312
        HASH_ATTRIBUTE_DEFINITIONURL,
 
96313
        attributeValue))
 
96314
{
 
96315
    return false;
 
96316
}
 
96317
if ( !failed )
 
96318
    attributeData->present_attributes |= notin__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
96319
 
 
96320
    break;
 
96321
    }
 
96322
    case HASH_ATTRIBUTE_CLASS:
 
96323
    {
 
96324
bool failed;
 
96325
#ifdef GENERATEDSAXPARSER_VALIDATION
 
96326
    if ( mValidate )
 
96327
    {
 
96328
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_NOTIN, HASH_ATTRIBUTE_CLASS);
 
96329
    }
 
96330
    else
 
96331
    {
 
96332
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
96333
    }
 
96334
#else
 
96335
    {
 
96336
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
96337
    } // validation
 
96338
#endif
 
96339
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
96340
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
96341
        HASH_ELEMENT_NOTIN,
 
96342
        HASH_ATTRIBUTE_CLASS,
 
96343
        attributeValue))
 
96344
{
 
96345
    return false;
 
96346
}
 
96347
#ifdef GENERATEDSAXPARSER_VALIDATION
 
96348
    if ( mValidate )
 
96349
    {
 
96350
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
96351
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
96352
    {
 
96353
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
96354
            simpleTypeValidationResult,
 
96355
            HASH_ELEMENT_NOTIN,
 
96356
            HASH_ATTRIBUTE_CLASS,
 
96357
            attributeValue) )
 
96358
        {
 
96359
            return false;
 
96360
        }
 
96361
    }
 
96362
    } // validation
 
96363
#endif
 
96364
 
 
96365
if ( !failed )
 
96366
    attributeData->present_attributes |= notin__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
96367
 
 
96368
    break;
 
96369
    }
 
96370
    case HASH_ATTRIBUTE_STYLE:
 
96371
    {
 
96372
 
 
96373
attributeData->style = attributeValue;
 
96374
 
 
96375
    break;
 
96376
    }
 
96377
    case HASH_ATTRIBUTE_XREF:
 
96378
    {
 
96379
 
 
96380
attributeData->xref = attributeValue;
 
96381
 
 
96382
    break;
 
96383
    }
 
96384
    case HASH_ATTRIBUTE_ID:
 
96385
    {
 
96386
 
 
96387
attributeData->id = attributeValue;
 
96388
 
 
96389
    break;
 
96390
    }
 
96391
    case HASH_ATTRIBUTE_HREF:
 
96392
    {
 
96393
bool failed;
 
96394
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
96395
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
96396
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
96397
        HASH_ELEMENT_NOTIN,
 
96398
        HASH_ATTRIBUTE_HREF,
 
96399
        attributeValue))
 
96400
{
 
96401
    return false;
 
96402
}
 
96403
if ( !failed )
 
96404
    attributeData->present_attributes |= notin__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
96405
 
 
96406
    break;
 
96407
    }
 
96408
    default:
 
96409
    {
 
96410
        if ( !attributeData->unknownAttributes.data )
 
96411
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
96412
        else
 
96413
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
96414
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
96415
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
96416
        attributeData->unknownAttributes.size += 2;
 
96417
 
 
96418
    }
 
96419
    }
 
96420
    }
 
96421
}
 
96422
if ((attributeData->present_attributes & notin__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
96423
{
 
96424
    attributeData->definitionURL = COLLADABU::URI("");
 
96425
}
 
96426
if ((attributeData->present_attributes & notin__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
96427
{
 
96428
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
96429
}
 
96430
if ((attributeData->present_attributes & notin__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
96431
{
 
96432
    attributeData->href = COLLADABU::URI("");
 
96433
}
 
96434
 
 
96435
 
 
96436
    return true;
 
96437
}
 
96438
 
 
96439
//---------------------------------------------------------------------
 
96440
bool ColladaParserAutoGen15Private::_preEnd__notin()
 
96441
{
 
96442
#ifdef GENERATEDSAXPARSER_VALIDATION
 
96443
    if ( mValidate )
 
96444
    {
 
96445
 
 
96446
        bool validationResult = _validateEnd__notin();
 
96447
        if ( !validationResult ) return false;
 
96448
 
 
96449
    } // validation
 
96450
#endif
 
96451
 
 
96452
    return true;
 
96453
}
 
96454
 
 
96455
//---------------------------------------------------------------------
 
96456
bool ColladaParserAutoGen15Private::_freeAttributes__notin( void* attributeData )
 
96457
{
 
96458
    notin__AttributeData* typedAttributeData = static_cast<notin__AttributeData*>(attributeData);
 
96459
    if (typedAttributeData->_class.data)
 
96460
    {
 
96461
        mStackMemoryManager.deleteObject();
 
96462
    }
 
96463
 
 
96464
    if (typedAttributeData->unknownAttributes.data)
 
96465
    {
 
96466
        mStackMemoryManager.deleteObject();
 
96467
    }
 
96468
 
 
96469
 
 
96470
    typedAttributeData->~notin__AttributeData();
 
96471
 
 
96472
    return true;
 
96473
}
 
96474
 
 
96475
//---------------------------------------------------------------------
 
96476
const subset__AttributeData subset__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
96477
 
 
96478
//---------------------------------------------------------------------
 
96479
bool ColladaParserAutoGen15Private::_data__subset( const ParserChar* text, size_t textLength )
 
96480
{
 
96481
    return true;
 
96482
}
 
96483
 
 
96484
//---------------------------------------------------------------------
 
96485
bool ColladaParserAutoGen15Private::_preBegin__subset( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
96486
{
 
96487
#ifdef GENERATEDSAXPARSER_VALIDATION
 
96488
    if ( mValidate )
 
96489
    {
 
96490
 
 
96491
        bool validationResult = _validateBegin__subset( attributes, attributeDataPtr, validationDataPtr );
 
96492
        if ( !validationResult ) return false;
 
96493
 
 
96494
    } // validation
 
96495
#endif
 
96496
 
 
96497
subset__AttributeData* attributeData = newData<subset__AttributeData>(attributeDataPtr);
 
96498
 
 
96499
const ParserChar** attributeArray = attributes.attributes;
 
96500
if ( attributeArray )
 
96501
{
 
96502
    while (true)
 
96503
    {
 
96504
        const ParserChar * attribute = *attributeArray;
 
96505
        if ( !attribute )
 
96506
            break;
 
96507
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
96508
        attributeArray++;
 
96509
        if ( !attributeArray )
 
96510
            return false;
 
96511
        const ParserChar* attributeValue = *attributeArray;
 
96512
        attributeArray++;
 
96513
 
 
96514
 
 
96515
    switch ( hash )
 
96516
    {
 
96517
    case HASH_ATTRIBUTE_ENCODING:
 
96518
    {
 
96519
 
 
96520
attributeData->encoding = attributeValue;
 
96521
 
 
96522
    break;
 
96523
    }
 
96524
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
96525
    {
 
96526
bool failed;
 
96527
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
96528
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
96529
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
96530
        HASH_ELEMENT_SUBSET,
 
96531
        HASH_ATTRIBUTE_DEFINITIONURL,
 
96532
        attributeValue))
 
96533
{
 
96534
    return false;
 
96535
}
 
96536
if ( !failed )
 
96537
    attributeData->present_attributes |= subset__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
96538
 
 
96539
    break;
 
96540
    }
 
96541
    case HASH_ATTRIBUTE_CLASS:
 
96542
    {
 
96543
bool failed;
 
96544
#ifdef GENERATEDSAXPARSER_VALIDATION
 
96545
    if ( mValidate )
 
96546
    {
 
96547
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_SUBSET, HASH_ATTRIBUTE_CLASS);
 
96548
    }
 
96549
    else
 
96550
    {
 
96551
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
96552
    }
 
96553
#else
 
96554
    {
 
96555
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
96556
    } // validation
 
96557
#endif
 
96558
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
96559
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
96560
        HASH_ELEMENT_SUBSET,
 
96561
        HASH_ATTRIBUTE_CLASS,
 
96562
        attributeValue))
 
96563
{
 
96564
    return false;
 
96565
}
 
96566
#ifdef GENERATEDSAXPARSER_VALIDATION
 
96567
    if ( mValidate )
 
96568
    {
 
96569
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
96570
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
96571
    {
 
96572
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
96573
            simpleTypeValidationResult,
 
96574
            HASH_ELEMENT_SUBSET,
 
96575
            HASH_ATTRIBUTE_CLASS,
 
96576
            attributeValue) )
 
96577
        {
 
96578
            return false;
 
96579
        }
 
96580
    }
 
96581
    } // validation
 
96582
#endif
 
96583
 
 
96584
if ( !failed )
 
96585
    attributeData->present_attributes |= subset__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
96586
 
 
96587
    break;
 
96588
    }
 
96589
    case HASH_ATTRIBUTE_STYLE:
 
96590
    {
 
96591
 
 
96592
attributeData->style = attributeValue;
 
96593
 
 
96594
    break;
 
96595
    }
 
96596
    case HASH_ATTRIBUTE_XREF:
 
96597
    {
 
96598
 
 
96599
attributeData->xref = attributeValue;
 
96600
 
 
96601
    break;
 
96602
    }
 
96603
    case HASH_ATTRIBUTE_ID:
 
96604
    {
 
96605
 
 
96606
attributeData->id = attributeValue;
 
96607
 
 
96608
    break;
 
96609
    }
 
96610
    case HASH_ATTRIBUTE_HREF:
 
96611
    {
 
96612
bool failed;
 
96613
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
96614
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
96615
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
96616
        HASH_ELEMENT_SUBSET,
 
96617
        HASH_ATTRIBUTE_HREF,
 
96618
        attributeValue))
 
96619
{
 
96620
    return false;
 
96621
}
 
96622
if ( !failed )
 
96623
    attributeData->present_attributes |= subset__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
96624
 
 
96625
    break;
 
96626
    }
 
96627
    default:
 
96628
    {
 
96629
        if ( !attributeData->unknownAttributes.data )
 
96630
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
96631
        else
 
96632
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
96633
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
96634
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
96635
        attributeData->unknownAttributes.size += 2;
 
96636
 
 
96637
    }
 
96638
    }
 
96639
    }
 
96640
}
 
96641
if ((attributeData->present_attributes & subset__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
96642
{
 
96643
    attributeData->definitionURL = COLLADABU::URI("");
 
96644
}
 
96645
if ((attributeData->present_attributes & subset__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
96646
{
 
96647
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
96648
}
 
96649
if ((attributeData->present_attributes & subset__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
96650
{
 
96651
    attributeData->href = COLLADABU::URI("");
 
96652
}
 
96653
 
 
96654
 
 
96655
    return true;
 
96656
}
 
96657
 
 
96658
//---------------------------------------------------------------------
 
96659
bool ColladaParserAutoGen15Private::_preEnd__subset()
 
96660
{
 
96661
#ifdef GENERATEDSAXPARSER_VALIDATION
 
96662
    if ( mValidate )
 
96663
    {
 
96664
 
 
96665
        bool validationResult = _validateEnd__subset();
 
96666
        if ( !validationResult ) return false;
 
96667
 
 
96668
    } // validation
 
96669
#endif
 
96670
 
 
96671
    return true;
 
96672
}
 
96673
 
 
96674
//---------------------------------------------------------------------
 
96675
bool ColladaParserAutoGen15Private::_freeAttributes__subset( void* attributeData )
 
96676
{
 
96677
    subset__AttributeData* typedAttributeData = static_cast<subset__AttributeData*>(attributeData);
 
96678
    if (typedAttributeData->_class.data)
 
96679
    {
 
96680
        mStackMemoryManager.deleteObject();
 
96681
    }
 
96682
 
 
96683
    if (typedAttributeData->unknownAttributes.data)
 
96684
    {
 
96685
        mStackMemoryManager.deleteObject();
 
96686
    }
 
96687
 
 
96688
 
 
96689
    typedAttributeData->~subset__AttributeData();
 
96690
 
 
96691
    return true;
 
96692
}
 
96693
 
 
96694
//---------------------------------------------------------------------
 
96695
const prsubset__AttributeData prsubset__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
96696
 
 
96697
//---------------------------------------------------------------------
 
96698
bool ColladaParserAutoGen15Private::_data__prsubset( const ParserChar* text, size_t textLength )
 
96699
{
 
96700
    return true;
 
96701
}
 
96702
 
 
96703
//---------------------------------------------------------------------
 
96704
bool ColladaParserAutoGen15Private::_preBegin__prsubset( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
96705
{
 
96706
#ifdef GENERATEDSAXPARSER_VALIDATION
 
96707
    if ( mValidate )
 
96708
    {
 
96709
 
 
96710
        bool validationResult = _validateBegin__prsubset( attributes, attributeDataPtr, validationDataPtr );
 
96711
        if ( !validationResult ) return false;
 
96712
 
 
96713
    } // validation
 
96714
#endif
 
96715
 
 
96716
prsubset__AttributeData* attributeData = newData<prsubset__AttributeData>(attributeDataPtr);
 
96717
 
 
96718
const ParserChar** attributeArray = attributes.attributes;
 
96719
if ( attributeArray )
 
96720
{
 
96721
    while (true)
 
96722
    {
 
96723
        const ParserChar * attribute = *attributeArray;
 
96724
        if ( !attribute )
 
96725
            break;
 
96726
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
96727
        attributeArray++;
 
96728
        if ( !attributeArray )
 
96729
            return false;
 
96730
        const ParserChar* attributeValue = *attributeArray;
 
96731
        attributeArray++;
 
96732
 
 
96733
 
 
96734
    switch ( hash )
 
96735
    {
 
96736
    case HASH_ATTRIBUTE_ENCODING:
 
96737
    {
 
96738
 
 
96739
attributeData->encoding = attributeValue;
 
96740
 
 
96741
    break;
 
96742
    }
 
96743
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
96744
    {
 
96745
bool failed;
 
96746
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
96747
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
96748
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
96749
        HASH_ELEMENT_PRSUBSET,
 
96750
        HASH_ATTRIBUTE_DEFINITIONURL,
 
96751
        attributeValue))
 
96752
{
 
96753
    return false;
 
96754
}
 
96755
if ( !failed )
 
96756
    attributeData->present_attributes |= prsubset__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
96757
 
 
96758
    break;
 
96759
    }
 
96760
    case HASH_ATTRIBUTE_CLASS:
 
96761
    {
 
96762
bool failed;
 
96763
#ifdef GENERATEDSAXPARSER_VALIDATION
 
96764
    if ( mValidate )
 
96765
    {
 
96766
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_PRSUBSET, HASH_ATTRIBUTE_CLASS);
 
96767
    }
 
96768
    else
 
96769
    {
 
96770
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
96771
    }
 
96772
#else
 
96773
    {
 
96774
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
96775
    } // validation
 
96776
#endif
 
96777
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
96778
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
96779
        HASH_ELEMENT_PRSUBSET,
 
96780
        HASH_ATTRIBUTE_CLASS,
 
96781
        attributeValue))
 
96782
{
 
96783
    return false;
 
96784
}
 
96785
#ifdef GENERATEDSAXPARSER_VALIDATION
 
96786
    if ( mValidate )
 
96787
    {
 
96788
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
96789
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
96790
    {
 
96791
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
96792
            simpleTypeValidationResult,
 
96793
            HASH_ELEMENT_PRSUBSET,
 
96794
            HASH_ATTRIBUTE_CLASS,
 
96795
            attributeValue) )
 
96796
        {
 
96797
            return false;
 
96798
        }
 
96799
    }
 
96800
    } // validation
 
96801
#endif
 
96802
 
 
96803
if ( !failed )
 
96804
    attributeData->present_attributes |= prsubset__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
96805
 
 
96806
    break;
 
96807
    }
 
96808
    case HASH_ATTRIBUTE_STYLE:
 
96809
    {
 
96810
 
 
96811
attributeData->style = attributeValue;
 
96812
 
 
96813
    break;
 
96814
    }
 
96815
    case HASH_ATTRIBUTE_XREF:
 
96816
    {
 
96817
 
 
96818
attributeData->xref = attributeValue;
 
96819
 
 
96820
    break;
 
96821
    }
 
96822
    case HASH_ATTRIBUTE_ID:
 
96823
    {
 
96824
 
 
96825
attributeData->id = attributeValue;
 
96826
 
 
96827
    break;
 
96828
    }
 
96829
    case HASH_ATTRIBUTE_HREF:
 
96830
    {
 
96831
bool failed;
 
96832
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
96833
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
96834
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
96835
        HASH_ELEMENT_PRSUBSET,
 
96836
        HASH_ATTRIBUTE_HREF,
 
96837
        attributeValue))
 
96838
{
 
96839
    return false;
 
96840
}
 
96841
if ( !failed )
 
96842
    attributeData->present_attributes |= prsubset__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
96843
 
 
96844
    break;
 
96845
    }
 
96846
    default:
 
96847
    {
 
96848
        if ( !attributeData->unknownAttributes.data )
 
96849
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
96850
        else
 
96851
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
96852
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
96853
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
96854
        attributeData->unknownAttributes.size += 2;
 
96855
 
 
96856
    }
 
96857
    }
 
96858
    }
 
96859
}
 
96860
if ((attributeData->present_attributes & prsubset__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
96861
{
 
96862
    attributeData->definitionURL = COLLADABU::URI("");
 
96863
}
 
96864
if ((attributeData->present_attributes & prsubset__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
96865
{
 
96866
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
96867
}
 
96868
if ((attributeData->present_attributes & prsubset__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
96869
{
 
96870
    attributeData->href = COLLADABU::URI("");
 
96871
}
 
96872
 
 
96873
 
 
96874
    return true;
 
96875
}
 
96876
 
 
96877
//---------------------------------------------------------------------
 
96878
bool ColladaParserAutoGen15Private::_preEnd__prsubset()
 
96879
{
 
96880
#ifdef GENERATEDSAXPARSER_VALIDATION
 
96881
    if ( mValidate )
 
96882
    {
 
96883
 
 
96884
        bool validationResult = _validateEnd__prsubset();
 
96885
        if ( !validationResult ) return false;
 
96886
 
 
96887
    } // validation
 
96888
#endif
 
96889
 
 
96890
    return true;
 
96891
}
 
96892
 
 
96893
//---------------------------------------------------------------------
 
96894
bool ColladaParserAutoGen15Private::_freeAttributes__prsubset( void* attributeData )
 
96895
{
 
96896
    prsubset__AttributeData* typedAttributeData = static_cast<prsubset__AttributeData*>(attributeData);
 
96897
    if (typedAttributeData->_class.data)
 
96898
    {
 
96899
        mStackMemoryManager.deleteObject();
 
96900
    }
 
96901
 
 
96902
    if (typedAttributeData->unknownAttributes.data)
 
96903
    {
 
96904
        mStackMemoryManager.deleteObject();
 
96905
    }
 
96906
 
 
96907
 
 
96908
    typedAttributeData->~prsubset__AttributeData();
 
96909
 
 
96910
    return true;
 
96911
}
 
96912
 
 
96913
//---------------------------------------------------------------------
 
96914
const notsubset__AttributeData notsubset__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
96915
 
 
96916
//---------------------------------------------------------------------
 
96917
bool ColladaParserAutoGen15Private::_data__notsubset( const ParserChar* text, size_t textLength )
 
96918
{
 
96919
    return true;
 
96920
}
 
96921
 
 
96922
//---------------------------------------------------------------------
 
96923
bool ColladaParserAutoGen15Private::_preBegin__notsubset( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
96924
{
 
96925
#ifdef GENERATEDSAXPARSER_VALIDATION
 
96926
    if ( mValidate )
 
96927
    {
 
96928
 
 
96929
        bool validationResult = _validateBegin__notsubset( attributes, attributeDataPtr, validationDataPtr );
 
96930
        if ( !validationResult ) return false;
 
96931
 
 
96932
    } // validation
 
96933
#endif
 
96934
 
 
96935
notsubset__AttributeData* attributeData = newData<notsubset__AttributeData>(attributeDataPtr);
 
96936
 
 
96937
const ParserChar** attributeArray = attributes.attributes;
 
96938
if ( attributeArray )
 
96939
{
 
96940
    while (true)
 
96941
    {
 
96942
        const ParserChar * attribute = *attributeArray;
 
96943
        if ( !attribute )
 
96944
            break;
 
96945
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
96946
        attributeArray++;
 
96947
        if ( !attributeArray )
 
96948
            return false;
 
96949
        const ParserChar* attributeValue = *attributeArray;
 
96950
        attributeArray++;
 
96951
 
 
96952
 
 
96953
    switch ( hash )
 
96954
    {
 
96955
    case HASH_ATTRIBUTE_ENCODING:
 
96956
    {
 
96957
 
 
96958
attributeData->encoding = attributeValue;
 
96959
 
 
96960
    break;
 
96961
    }
 
96962
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
96963
    {
 
96964
bool failed;
 
96965
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
96966
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
96967
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
96968
        HASH_ELEMENT_NOTSUBSET,
 
96969
        HASH_ATTRIBUTE_DEFINITIONURL,
 
96970
        attributeValue))
 
96971
{
 
96972
    return false;
 
96973
}
 
96974
if ( !failed )
 
96975
    attributeData->present_attributes |= notsubset__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
96976
 
 
96977
    break;
 
96978
    }
 
96979
    case HASH_ATTRIBUTE_CLASS:
 
96980
    {
 
96981
bool failed;
 
96982
#ifdef GENERATEDSAXPARSER_VALIDATION
 
96983
    if ( mValidate )
 
96984
    {
 
96985
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_NOTSUBSET, HASH_ATTRIBUTE_CLASS);
 
96986
    }
 
96987
    else
 
96988
    {
 
96989
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
96990
    }
 
96991
#else
 
96992
    {
 
96993
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
96994
    } // validation
 
96995
#endif
 
96996
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
96997
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
96998
        HASH_ELEMENT_NOTSUBSET,
 
96999
        HASH_ATTRIBUTE_CLASS,
 
97000
        attributeValue))
 
97001
{
 
97002
    return false;
 
97003
}
 
97004
#ifdef GENERATEDSAXPARSER_VALIDATION
 
97005
    if ( mValidate )
 
97006
    {
 
97007
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
97008
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
97009
    {
 
97010
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
97011
            simpleTypeValidationResult,
 
97012
            HASH_ELEMENT_NOTSUBSET,
 
97013
            HASH_ATTRIBUTE_CLASS,
 
97014
            attributeValue) )
 
97015
        {
 
97016
            return false;
 
97017
        }
 
97018
    }
 
97019
    } // validation
 
97020
#endif
 
97021
 
 
97022
if ( !failed )
 
97023
    attributeData->present_attributes |= notsubset__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
97024
 
 
97025
    break;
 
97026
    }
 
97027
    case HASH_ATTRIBUTE_STYLE:
 
97028
    {
 
97029
 
 
97030
attributeData->style = attributeValue;
 
97031
 
 
97032
    break;
 
97033
    }
 
97034
    case HASH_ATTRIBUTE_XREF:
 
97035
    {
 
97036
 
 
97037
attributeData->xref = attributeValue;
 
97038
 
 
97039
    break;
 
97040
    }
 
97041
    case HASH_ATTRIBUTE_ID:
 
97042
    {
 
97043
 
 
97044
attributeData->id = attributeValue;
 
97045
 
 
97046
    break;
 
97047
    }
 
97048
    case HASH_ATTRIBUTE_HREF:
 
97049
    {
 
97050
bool failed;
 
97051
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
97052
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
97053
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
97054
        HASH_ELEMENT_NOTSUBSET,
 
97055
        HASH_ATTRIBUTE_HREF,
 
97056
        attributeValue))
 
97057
{
 
97058
    return false;
 
97059
}
 
97060
if ( !failed )
 
97061
    attributeData->present_attributes |= notsubset__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
97062
 
 
97063
    break;
 
97064
    }
 
97065
    default:
 
97066
    {
 
97067
        if ( !attributeData->unknownAttributes.data )
 
97068
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
97069
        else
 
97070
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
97071
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
97072
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
97073
        attributeData->unknownAttributes.size += 2;
 
97074
 
 
97075
    }
 
97076
    }
 
97077
    }
 
97078
}
 
97079
if ((attributeData->present_attributes & notsubset__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
97080
{
 
97081
    attributeData->definitionURL = COLLADABU::URI("");
 
97082
}
 
97083
if ((attributeData->present_attributes & notsubset__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
97084
{
 
97085
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
97086
}
 
97087
if ((attributeData->present_attributes & notsubset__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
97088
{
 
97089
    attributeData->href = COLLADABU::URI("");
 
97090
}
 
97091
 
 
97092
 
 
97093
    return true;
 
97094
}
 
97095
 
 
97096
//---------------------------------------------------------------------
 
97097
bool ColladaParserAutoGen15Private::_preEnd__notsubset()
 
97098
{
 
97099
#ifdef GENERATEDSAXPARSER_VALIDATION
 
97100
    if ( mValidate )
 
97101
    {
 
97102
 
 
97103
        bool validationResult = _validateEnd__notsubset();
 
97104
        if ( !validationResult ) return false;
 
97105
 
 
97106
    } // validation
 
97107
#endif
 
97108
 
 
97109
    return true;
 
97110
}
 
97111
 
 
97112
//---------------------------------------------------------------------
 
97113
bool ColladaParserAutoGen15Private::_freeAttributes__notsubset( void* attributeData )
 
97114
{
 
97115
    notsubset__AttributeData* typedAttributeData = static_cast<notsubset__AttributeData*>(attributeData);
 
97116
    if (typedAttributeData->_class.data)
 
97117
    {
 
97118
        mStackMemoryManager.deleteObject();
 
97119
    }
 
97120
 
 
97121
    if (typedAttributeData->unknownAttributes.data)
 
97122
    {
 
97123
        mStackMemoryManager.deleteObject();
 
97124
    }
 
97125
 
 
97126
 
 
97127
    typedAttributeData->~notsubset__AttributeData();
 
97128
 
 
97129
    return true;
 
97130
}
 
97131
 
 
97132
//---------------------------------------------------------------------
 
97133
const notprsubset__AttributeData notprsubset__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
97134
 
 
97135
//---------------------------------------------------------------------
 
97136
bool ColladaParserAutoGen15Private::_data__notprsubset( const ParserChar* text, size_t textLength )
 
97137
{
 
97138
    return true;
 
97139
}
 
97140
 
 
97141
//---------------------------------------------------------------------
 
97142
bool ColladaParserAutoGen15Private::_preBegin__notprsubset( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
97143
{
 
97144
#ifdef GENERATEDSAXPARSER_VALIDATION
 
97145
    if ( mValidate )
 
97146
    {
 
97147
 
 
97148
        bool validationResult = _validateBegin__notprsubset( attributes, attributeDataPtr, validationDataPtr );
 
97149
        if ( !validationResult ) return false;
 
97150
 
 
97151
    } // validation
 
97152
#endif
 
97153
 
 
97154
notprsubset__AttributeData* attributeData = newData<notprsubset__AttributeData>(attributeDataPtr);
 
97155
 
 
97156
const ParserChar** attributeArray = attributes.attributes;
 
97157
if ( attributeArray )
 
97158
{
 
97159
    while (true)
 
97160
    {
 
97161
        const ParserChar * attribute = *attributeArray;
 
97162
        if ( !attribute )
 
97163
            break;
 
97164
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
97165
        attributeArray++;
 
97166
        if ( !attributeArray )
 
97167
            return false;
 
97168
        const ParserChar* attributeValue = *attributeArray;
 
97169
        attributeArray++;
 
97170
 
 
97171
 
 
97172
    switch ( hash )
 
97173
    {
 
97174
    case HASH_ATTRIBUTE_ENCODING:
 
97175
    {
 
97176
 
 
97177
attributeData->encoding = attributeValue;
 
97178
 
 
97179
    break;
 
97180
    }
 
97181
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
97182
    {
 
97183
bool failed;
 
97184
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
97185
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
97186
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
97187
        HASH_ELEMENT_NOTPRSUBSET,
 
97188
        HASH_ATTRIBUTE_DEFINITIONURL,
 
97189
        attributeValue))
 
97190
{
 
97191
    return false;
 
97192
}
 
97193
if ( !failed )
 
97194
    attributeData->present_attributes |= notprsubset__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
97195
 
 
97196
    break;
 
97197
    }
 
97198
    case HASH_ATTRIBUTE_CLASS:
 
97199
    {
 
97200
bool failed;
 
97201
#ifdef GENERATEDSAXPARSER_VALIDATION
 
97202
    if ( mValidate )
 
97203
    {
 
97204
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_NOTPRSUBSET, HASH_ATTRIBUTE_CLASS);
 
97205
    }
 
97206
    else
 
97207
    {
 
97208
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
97209
    }
 
97210
#else
 
97211
    {
 
97212
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
97213
    } // validation
 
97214
#endif
 
97215
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
97216
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
97217
        HASH_ELEMENT_NOTPRSUBSET,
 
97218
        HASH_ATTRIBUTE_CLASS,
 
97219
        attributeValue))
 
97220
{
 
97221
    return false;
 
97222
}
 
97223
#ifdef GENERATEDSAXPARSER_VALIDATION
 
97224
    if ( mValidate )
 
97225
    {
 
97226
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
97227
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
97228
    {
 
97229
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
97230
            simpleTypeValidationResult,
 
97231
            HASH_ELEMENT_NOTPRSUBSET,
 
97232
            HASH_ATTRIBUTE_CLASS,
 
97233
            attributeValue) )
 
97234
        {
 
97235
            return false;
 
97236
        }
 
97237
    }
 
97238
    } // validation
 
97239
#endif
 
97240
 
 
97241
if ( !failed )
 
97242
    attributeData->present_attributes |= notprsubset__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
97243
 
 
97244
    break;
 
97245
    }
 
97246
    case HASH_ATTRIBUTE_STYLE:
 
97247
    {
 
97248
 
 
97249
attributeData->style = attributeValue;
 
97250
 
 
97251
    break;
 
97252
    }
 
97253
    case HASH_ATTRIBUTE_XREF:
 
97254
    {
 
97255
 
 
97256
attributeData->xref = attributeValue;
 
97257
 
 
97258
    break;
 
97259
    }
 
97260
    case HASH_ATTRIBUTE_ID:
 
97261
    {
 
97262
 
 
97263
attributeData->id = attributeValue;
 
97264
 
 
97265
    break;
 
97266
    }
 
97267
    case HASH_ATTRIBUTE_HREF:
 
97268
    {
 
97269
bool failed;
 
97270
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
97271
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
97272
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
97273
        HASH_ELEMENT_NOTPRSUBSET,
 
97274
        HASH_ATTRIBUTE_HREF,
 
97275
        attributeValue))
 
97276
{
 
97277
    return false;
 
97278
}
 
97279
if ( !failed )
 
97280
    attributeData->present_attributes |= notprsubset__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
97281
 
 
97282
    break;
 
97283
    }
 
97284
    default:
 
97285
    {
 
97286
        if ( !attributeData->unknownAttributes.data )
 
97287
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
97288
        else
 
97289
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
97290
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
97291
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
97292
        attributeData->unknownAttributes.size += 2;
 
97293
 
 
97294
    }
 
97295
    }
 
97296
    }
 
97297
}
 
97298
if ((attributeData->present_attributes & notprsubset__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
97299
{
 
97300
    attributeData->definitionURL = COLLADABU::URI("");
 
97301
}
 
97302
if ((attributeData->present_attributes & notprsubset__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
97303
{
 
97304
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
97305
}
 
97306
if ((attributeData->present_attributes & notprsubset__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
97307
{
 
97308
    attributeData->href = COLLADABU::URI("");
 
97309
}
 
97310
 
 
97311
 
 
97312
    return true;
 
97313
}
 
97314
 
 
97315
//---------------------------------------------------------------------
 
97316
bool ColladaParserAutoGen15Private::_preEnd__notprsubset()
 
97317
{
 
97318
#ifdef GENERATEDSAXPARSER_VALIDATION
 
97319
    if ( mValidate )
 
97320
    {
 
97321
 
 
97322
        bool validationResult = _validateEnd__notprsubset();
 
97323
        if ( !validationResult ) return false;
 
97324
 
 
97325
    } // validation
 
97326
#endif
 
97327
 
 
97328
    return true;
 
97329
}
 
97330
 
 
97331
//---------------------------------------------------------------------
 
97332
bool ColladaParserAutoGen15Private::_freeAttributes__notprsubset( void* attributeData )
 
97333
{
 
97334
    notprsubset__AttributeData* typedAttributeData = static_cast<notprsubset__AttributeData*>(attributeData);
 
97335
    if (typedAttributeData->_class.data)
 
97336
    {
 
97337
        mStackMemoryManager.deleteObject();
 
97338
    }
 
97339
 
 
97340
    if (typedAttributeData->unknownAttributes.data)
 
97341
    {
 
97342
        mStackMemoryManager.deleteObject();
 
97343
    }
 
97344
 
 
97345
 
 
97346
    typedAttributeData->~notprsubset__AttributeData();
 
97347
 
 
97348
    return true;
 
97349
}
 
97350
 
 
97351
//---------------------------------------------------------------------
 
97352
const setdiff__AttributeData setdiff__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
97353
 
 
97354
//---------------------------------------------------------------------
 
97355
bool ColladaParserAutoGen15Private::_data__setdiff( const ParserChar* text, size_t textLength )
 
97356
{
 
97357
    return true;
 
97358
}
 
97359
 
 
97360
//---------------------------------------------------------------------
 
97361
bool ColladaParserAutoGen15Private::_preBegin__setdiff( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
97362
{
 
97363
#ifdef GENERATEDSAXPARSER_VALIDATION
 
97364
    if ( mValidate )
 
97365
    {
 
97366
 
 
97367
        bool validationResult = _validateBegin__setdiff( attributes, attributeDataPtr, validationDataPtr );
 
97368
        if ( !validationResult ) return false;
 
97369
 
 
97370
    } // validation
 
97371
#endif
 
97372
 
 
97373
setdiff__AttributeData* attributeData = newData<setdiff__AttributeData>(attributeDataPtr);
 
97374
 
 
97375
const ParserChar** attributeArray = attributes.attributes;
 
97376
if ( attributeArray )
 
97377
{
 
97378
    while (true)
 
97379
    {
 
97380
        const ParserChar * attribute = *attributeArray;
 
97381
        if ( !attribute )
 
97382
            break;
 
97383
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
97384
        attributeArray++;
 
97385
        if ( !attributeArray )
 
97386
            return false;
 
97387
        const ParserChar* attributeValue = *attributeArray;
 
97388
        attributeArray++;
 
97389
 
 
97390
 
 
97391
    switch ( hash )
 
97392
    {
 
97393
    case HASH_ATTRIBUTE_ENCODING:
 
97394
    {
 
97395
 
 
97396
attributeData->encoding = attributeValue;
 
97397
 
 
97398
    break;
 
97399
    }
 
97400
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
97401
    {
 
97402
bool failed;
 
97403
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
97404
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
97405
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
97406
        HASH_ELEMENT_SETDIFF,
 
97407
        HASH_ATTRIBUTE_DEFINITIONURL,
 
97408
        attributeValue))
 
97409
{
 
97410
    return false;
 
97411
}
 
97412
if ( !failed )
 
97413
    attributeData->present_attributes |= setdiff__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
97414
 
 
97415
    break;
 
97416
    }
 
97417
    case HASH_ATTRIBUTE_CLASS:
 
97418
    {
 
97419
bool failed;
 
97420
#ifdef GENERATEDSAXPARSER_VALIDATION
 
97421
    if ( mValidate )
 
97422
    {
 
97423
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_SETDIFF, HASH_ATTRIBUTE_CLASS);
 
97424
    }
 
97425
    else
 
97426
    {
 
97427
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
97428
    }
 
97429
#else
 
97430
    {
 
97431
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
97432
    } // validation
 
97433
#endif
 
97434
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
97435
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
97436
        HASH_ELEMENT_SETDIFF,
 
97437
        HASH_ATTRIBUTE_CLASS,
 
97438
        attributeValue))
 
97439
{
 
97440
    return false;
 
97441
}
 
97442
#ifdef GENERATEDSAXPARSER_VALIDATION
 
97443
    if ( mValidate )
 
97444
    {
 
97445
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
97446
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
97447
    {
 
97448
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
97449
            simpleTypeValidationResult,
 
97450
            HASH_ELEMENT_SETDIFF,
 
97451
            HASH_ATTRIBUTE_CLASS,
 
97452
            attributeValue) )
 
97453
        {
 
97454
            return false;
 
97455
        }
 
97456
    }
 
97457
    } // validation
 
97458
#endif
 
97459
 
 
97460
if ( !failed )
 
97461
    attributeData->present_attributes |= setdiff__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
97462
 
 
97463
    break;
 
97464
    }
 
97465
    case HASH_ATTRIBUTE_STYLE:
 
97466
    {
 
97467
 
 
97468
attributeData->style = attributeValue;
 
97469
 
 
97470
    break;
 
97471
    }
 
97472
    case HASH_ATTRIBUTE_XREF:
 
97473
    {
 
97474
 
 
97475
attributeData->xref = attributeValue;
 
97476
 
 
97477
    break;
 
97478
    }
 
97479
    case HASH_ATTRIBUTE_ID:
 
97480
    {
 
97481
 
 
97482
attributeData->id = attributeValue;
 
97483
 
 
97484
    break;
 
97485
    }
 
97486
    case HASH_ATTRIBUTE_HREF:
 
97487
    {
 
97488
bool failed;
 
97489
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
97490
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
97491
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
97492
        HASH_ELEMENT_SETDIFF,
 
97493
        HASH_ATTRIBUTE_HREF,
 
97494
        attributeValue))
 
97495
{
 
97496
    return false;
 
97497
}
 
97498
if ( !failed )
 
97499
    attributeData->present_attributes |= setdiff__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
97500
 
 
97501
    break;
 
97502
    }
 
97503
    default:
 
97504
    {
 
97505
        if ( !attributeData->unknownAttributes.data )
 
97506
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
97507
        else
 
97508
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
97509
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
97510
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
97511
        attributeData->unknownAttributes.size += 2;
 
97512
 
 
97513
    }
 
97514
    }
 
97515
    }
 
97516
}
 
97517
if ((attributeData->present_attributes & setdiff__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
97518
{
 
97519
    attributeData->definitionURL = COLLADABU::URI("");
 
97520
}
 
97521
if ((attributeData->present_attributes & setdiff__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
97522
{
 
97523
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
97524
}
 
97525
if ((attributeData->present_attributes & setdiff__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
97526
{
 
97527
    attributeData->href = COLLADABU::URI("");
 
97528
}
 
97529
 
 
97530
 
 
97531
    return true;
 
97532
}
 
97533
 
 
97534
//---------------------------------------------------------------------
 
97535
bool ColladaParserAutoGen15Private::_preEnd__setdiff()
 
97536
{
 
97537
#ifdef GENERATEDSAXPARSER_VALIDATION
 
97538
    if ( mValidate )
 
97539
    {
 
97540
 
 
97541
        bool validationResult = _validateEnd__setdiff();
 
97542
        if ( !validationResult ) return false;
 
97543
 
 
97544
    } // validation
 
97545
#endif
 
97546
 
 
97547
    return true;
 
97548
}
 
97549
 
 
97550
//---------------------------------------------------------------------
 
97551
bool ColladaParserAutoGen15Private::_freeAttributes__setdiff( void* attributeData )
 
97552
{
 
97553
    setdiff__AttributeData* typedAttributeData = static_cast<setdiff__AttributeData*>(attributeData);
 
97554
    if (typedAttributeData->_class.data)
 
97555
    {
 
97556
        mStackMemoryManager.deleteObject();
 
97557
    }
 
97558
 
 
97559
    if (typedAttributeData->unknownAttributes.data)
 
97560
    {
 
97561
        mStackMemoryManager.deleteObject();
 
97562
    }
 
97563
 
 
97564
 
 
97565
    typedAttributeData->~setdiff__AttributeData();
 
97566
 
 
97567
    return true;
 
97568
}
 
97569
 
 
97570
//---------------------------------------------------------------------
 
97571
const card__AttributeData card__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
97572
 
 
97573
//---------------------------------------------------------------------
 
97574
bool ColladaParserAutoGen15Private::_data__card( const ParserChar* text, size_t textLength )
 
97575
{
 
97576
    return true;
 
97577
}
 
97578
 
 
97579
//---------------------------------------------------------------------
 
97580
bool ColladaParserAutoGen15Private::_preBegin__card( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
97581
{
 
97582
#ifdef GENERATEDSAXPARSER_VALIDATION
 
97583
    if ( mValidate )
 
97584
    {
 
97585
 
 
97586
        bool validationResult = _validateBegin__card( attributes, attributeDataPtr, validationDataPtr );
 
97587
        if ( !validationResult ) return false;
 
97588
 
 
97589
    } // validation
 
97590
#endif
 
97591
 
 
97592
card__AttributeData* attributeData = newData<card__AttributeData>(attributeDataPtr);
 
97593
 
 
97594
const ParserChar** attributeArray = attributes.attributes;
 
97595
if ( attributeArray )
 
97596
{
 
97597
    while (true)
 
97598
    {
 
97599
        const ParserChar * attribute = *attributeArray;
 
97600
        if ( !attribute )
 
97601
            break;
 
97602
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
97603
        attributeArray++;
 
97604
        if ( !attributeArray )
 
97605
            return false;
 
97606
        const ParserChar* attributeValue = *attributeArray;
 
97607
        attributeArray++;
 
97608
 
 
97609
 
 
97610
    switch ( hash )
 
97611
    {
 
97612
    case HASH_ATTRIBUTE_ENCODING:
 
97613
    {
 
97614
 
 
97615
attributeData->encoding = attributeValue;
 
97616
 
 
97617
    break;
 
97618
    }
 
97619
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
97620
    {
 
97621
bool failed;
 
97622
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
97623
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
97624
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
97625
        HASH_ELEMENT_CARD,
 
97626
        HASH_ATTRIBUTE_DEFINITIONURL,
 
97627
        attributeValue))
 
97628
{
 
97629
    return false;
 
97630
}
 
97631
if ( !failed )
 
97632
    attributeData->present_attributes |= card__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
97633
 
 
97634
    break;
 
97635
    }
 
97636
    case HASH_ATTRIBUTE_CLASS:
 
97637
    {
 
97638
bool failed;
 
97639
#ifdef GENERATEDSAXPARSER_VALIDATION
 
97640
    if ( mValidate )
 
97641
    {
 
97642
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_CARD, HASH_ATTRIBUTE_CLASS);
 
97643
    }
 
97644
    else
 
97645
    {
 
97646
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
97647
    }
 
97648
#else
 
97649
    {
 
97650
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
97651
    } // validation
 
97652
#endif
 
97653
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
97654
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
97655
        HASH_ELEMENT_CARD,
 
97656
        HASH_ATTRIBUTE_CLASS,
 
97657
        attributeValue))
 
97658
{
 
97659
    return false;
 
97660
}
 
97661
#ifdef GENERATEDSAXPARSER_VALIDATION
 
97662
    if ( mValidate )
 
97663
    {
 
97664
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
97665
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
97666
    {
 
97667
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
97668
            simpleTypeValidationResult,
 
97669
            HASH_ELEMENT_CARD,
 
97670
            HASH_ATTRIBUTE_CLASS,
 
97671
            attributeValue) )
 
97672
        {
 
97673
            return false;
 
97674
        }
 
97675
    }
 
97676
    } // validation
 
97677
#endif
 
97678
 
 
97679
if ( !failed )
 
97680
    attributeData->present_attributes |= card__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
97681
 
 
97682
    break;
 
97683
    }
 
97684
    case HASH_ATTRIBUTE_STYLE:
 
97685
    {
 
97686
 
 
97687
attributeData->style = attributeValue;
 
97688
 
 
97689
    break;
 
97690
    }
 
97691
    case HASH_ATTRIBUTE_XREF:
 
97692
    {
 
97693
 
 
97694
attributeData->xref = attributeValue;
 
97695
 
 
97696
    break;
 
97697
    }
 
97698
    case HASH_ATTRIBUTE_ID:
 
97699
    {
 
97700
 
 
97701
attributeData->id = attributeValue;
 
97702
 
 
97703
    break;
 
97704
    }
 
97705
    case HASH_ATTRIBUTE_HREF:
 
97706
    {
 
97707
bool failed;
 
97708
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
97709
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
97710
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
97711
        HASH_ELEMENT_CARD,
 
97712
        HASH_ATTRIBUTE_HREF,
 
97713
        attributeValue))
 
97714
{
 
97715
    return false;
 
97716
}
 
97717
if ( !failed )
 
97718
    attributeData->present_attributes |= card__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
97719
 
 
97720
    break;
 
97721
    }
 
97722
    default:
 
97723
    {
 
97724
        if ( !attributeData->unknownAttributes.data )
 
97725
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
97726
        else
 
97727
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
97728
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
97729
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
97730
        attributeData->unknownAttributes.size += 2;
 
97731
 
 
97732
    }
 
97733
    }
 
97734
    }
 
97735
}
 
97736
if ((attributeData->present_attributes & card__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
97737
{
 
97738
    attributeData->definitionURL = COLLADABU::URI("");
 
97739
}
 
97740
if ((attributeData->present_attributes & card__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
97741
{
 
97742
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
97743
}
 
97744
if ((attributeData->present_attributes & card__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
97745
{
 
97746
    attributeData->href = COLLADABU::URI("");
 
97747
}
 
97748
 
 
97749
 
 
97750
    return true;
 
97751
}
 
97752
 
 
97753
//---------------------------------------------------------------------
 
97754
bool ColladaParserAutoGen15Private::_preEnd__card()
 
97755
{
 
97756
#ifdef GENERATEDSAXPARSER_VALIDATION
 
97757
    if ( mValidate )
 
97758
    {
 
97759
 
 
97760
        bool validationResult = _validateEnd__card();
 
97761
        if ( !validationResult ) return false;
 
97762
 
 
97763
    } // validation
 
97764
#endif
 
97765
 
 
97766
    return true;
 
97767
}
 
97768
 
 
97769
//---------------------------------------------------------------------
 
97770
bool ColladaParserAutoGen15Private::_freeAttributes__card( void* attributeData )
 
97771
{
 
97772
    card__AttributeData* typedAttributeData = static_cast<card__AttributeData*>(attributeData);
 
97773
    if (typedAttributeData->_class.data)
 
97774
    {
 
97775
        mStackMemoryManager.deleteObject();
 
97776
    }
 
97777
 
 
97778
    if (typedAttributeData->unknownAttributes.data)
 
97779
    {
 
97780
        mStackMemoryManager.deleteObject();
 
97781
    }
 
97782
 
 
97783
 
 
97784
    typedAttributeData->~card__AttributeData();
 
97785
 
 
97786
    return true;
 
97787
}
 
97788
 
 
97789
//---------------------------------------------------------------------
 
97790
const cartesianproduct__AttributeData cartesianproduct__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
97791
 
 
97792
//---------------------------------------------------------------------
 
97793
bool ColladaParserAutoGen15Private::_data__cartesianproduct( const ParserChar* text, size_t textLength )
 
97794
{
 
97795
    return true;
 
97796
}
 
97797
 
 
97798
//---------------------------------------------------------------------
 
97799
bool ColladaParserAutoGen15Private::_preBegin__cartesianproduct( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
97800
{
 
97801
#ifdef GENERATEDSAXPARSER_VALIDATION
 
97802
    if ( mValidate )
 
97803
    {
 
97804
 
 
97805
        bool validationResult = _validateBegin__cartesianproduct( attributes, attributeDataPtr, validationDataPtr );
 
97806
        if ( !validationResult ) return false;
 
97807
 
 
97808
    } // validation
 
97809
#endif
 
97810
 
 
97811
cartesianproduct__AttributeData* attributeData = newData<cartesianproduct__AttributeData>(attributeDataPtr);
 
97812
 
 
97813
const ParserChar** attributeArray = attributes.attributes;
 
97814
if ( attributeArray )
 
97815
{
 
97816
    while (true)
 
97817
    {
 
97818
        const ParserChar * attribute = *attributeArray;
 
97819
        if ( !attribute )
 
97820
            break;
 
97821
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
97822
        attributeArray++;
 
97823
        if ( !attributeArray )
 
97824
            return false;
 
97825
        const ParserChar* attributeValue = *attributeArray;
 
97826
        attributeArray++;
 
97827
 
 
97828
 
 
97829
    switch ( hash )
 
97830
    {
 
97831
    case HASH_ATTRIBUTE_ENCODING:
 
97832
    {
 
97833
 
 
97834
attributeData->encoding = attributeValue;
 
97835
 
 
97836
    break;
 
97837
    }
 
97838
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
97839
    {
 
97840
bool failed;
 
97841
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
97842
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
97843
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
97844
        HASH_ELEMENT_CARTESIANPRODUCT,
 
97845
        HASH_ATTRIBUTE_DEFINITIONURL,
 
97846
        attributeValue))
 
97847
{
 
97848
    return false;
 
97849
}
 
97850
if ( !failed )
 
97851
    attributeData->present_attributes |= cartesianproduct__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
97852
 
 
97853
    break;
 
97854
    }
 
97855
    case HASH_ATTRIBUTE_CLASS:
 
97856
    {
 
97857
bool failed;
 
97858
#ifdef GENERATEDSAXPARSER_VALIDATION
 
97859
    if ( mValidate )
 
97860
    {
 
97861
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_CARTESIANPRODUCT, HASH_ATTRIBUTE_CLASS);
 
97862
    }
 
97863
    else
 
97864
    {
 
97865
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
97866
    }
 
97867
#else
 
97868
    {
 
97869
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
97870
    } // validation
 
97871
#endif
 
97872
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
97873
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
97874
        HASH_ELEMENT_CARTESIANPRODUCT,
 
97875
        HASH_ATTRIBUTE_CLASS,
 
97876
        attributeValue))
 
97877
{
 
97878
    return false;
 
97879
}
 
97880
#ifdef GENERATEDSAXPARSER_VALIDATION
 
97881
    if ( mValidate )
 
97882
    {
 
97883
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
97884
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
97885
    {
 
97886
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
97887
            simpleTypeValidationResult,
 
97888
            HASH_ELEMENT_CARTESIANPRODUCT,
 
97889
            HASH_ATTRIBUTE_CLASS,
 
97890
            attributeValue) )
 
97891
        {
 
97892
            return false;
 
97893
        }
 
97894
    }
 
97895
    } // validation
 
97896
#endif
 
97897
 
 
97898
if ( !failed )
 
97899
    attributeData->present_attributes |= cartesianproduct__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
97900
 
 
97901
    break;
 
97902
    }
 
97903
    case HASH_ATTRIBUTE_STYLE:
 
97904
    {
 
97905
 
 
97906
attributeData->style = attributeValue;
 
97907
 
 
97908
    break;
 
97909
    }
 
97910
    case HASH_ATTRIBUTE_XREF:
 
97911
    {
 
97912
 
 
97913
attributeData->xref = attributeValue;
 
97914
 
 
97915
    break;
 
97916
    }
 
97917
    case HASH_ATTRIBUTE_ID:
 
97918
    {
 
97919
 
 
97920
attributeData->id = attributeValue;
 
97921
 
 
97922
    break;
 
97923
    }
 
97924
    case HASH_ATTRIBUTE_HREF:
 
97925
    {
 
97926
bool failed;
 
97927
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
97928
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
97929
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
97930
        HASH_ELEMENT_CARTESIANPRODUCT,
 
97931
        HASH_ATTRIBUTE_HREF,
 
97932
        attributeValue))
 
97933
{
 
97934
    return false;
 
97935
}
 
97936
if ( !failed )
 
97937
    attributeData->present_attributes |= cartesianproduct__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
97938
 
 
97939
    break;
 
97940
    }
 
97941
    default:
 
97942
    {
 
97943
        if ( !attributeData->unknownAttributes.data )
 
97944
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
97945
        else
 
97946
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
97947
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
97948
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
97949
        attributeData->unknownAttributes.size += 2;
 
97950
 
 
97951
    }
 
97952
    }
 
97953
    }
 
97954
}
 
97955
if ((attributeData->present_attributes & cartesianproduct__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
97956
{
 
97957
    attributeData->definitionURL = COLLADABU::URI("");
 
97958
}
 
97959
if ((attributeData->present_attributes & cartesianproduct__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
97960
{
 
97961
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
97962
}
 
97963
if ((attributeData->present_attributes & cartesianproduct__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
97964
{
 
97965
    attributeData->href = COLLADABU::URI("");
 
97966
}
 
97967
 
 
97968
 
 
97969
    return true;
 
97970
}
 
97971
 
 
97972
//---------------------------------------------------------------------
 
97973
bool ColladaParserAutoGen15Private::_preEnd__cartesianproduct()
 
97974
{
 
97975
#ifdef GENERATEDSAXPARSER_VALIDATION
 
97976
    if ( mValidate )
 
97977
    {
 
97978
 
 
97979
        bool validationResult = _validateEnd__cartesianproduct();
 
97980
        if ( !validationResult ) return false;
 
97981
 
 
97982
    } // validation
 
97983
#endif
 
97984
 
 
97985
    return true;
 
97986
}
 
97987
 
 
97988
//---------------------------------------------------------------------
 
97989
bool ColladaParserAutoGen15Private::_freeAttributes__cartesianproduct( void* attributeData )
 
97990
{
 
97991
    cartesianproduct__AttributeData* typedAttributeData = static_cast<cartesianproduct__AttributeData*>(attributeData);
 
97992
    if (typedAttributeData->_class.data)
 
97993
    {
 
97994
        mStackMemoryManager.deleteObject();
 
97995
    }
 
97996
 
 
97997
    if (typedAttributeData->unknownAttributes.data)
 
97998
    {
 
97999
        mStackMemoryManager.deleteObject();
 
98000
    }
 
98001
 
 
98002
 
 
98003
    typedAttributeData->~cartesianproduct__AttributeData();
 
98004
 
 
98005
    return true;
 
98006
}
 
98007
 
 
98008
//---------------------------------------------------------------------
 
98009
const eq__AttributeData eq__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
98010
 
 
98011
//---------------------------------------------------------------------
 
98012
bool ColladaParserAutoGen15Private::_data__eq( const ParserChar* text, size_t textLength )
 
98013
{
 
98014
    return true;
 
98015
}
 
98016
 
 
98017
//---------------------------------------------------------------------
 
98018
bool ColladaParserAutoGen15Private::_preBegin__eq( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
98019
{
 
98020
#ifdef GENERATEDSAXPARSER_VALIDATION
 
98021
    if ( mValidate )
 
98022
    {
 
98023
 
 
98024
        bool validationResult = _validateBegin__eq( attributes, attributeDataPtr, validationDataPtr );
 
98025
        if ( !validationResult ) return false;
 
98026
 
 
98027
    } // validation
 
98028
#endif
 
98029
 
 
98030
eq__AttributeData* attributeData = newData<eq__AttributeData>(attributeDataPtr);
 
98031
 
 
98032
const ParserChar** attributeArray = attributes.attributes;
 
98033
if ( attributeArray )
 
98034
{
 
98035
    while (true)
 
98036
    {
 
98037
        const ParserChar * attribute = *attributeArray;
 
98038
        if ( !attribute )
 
98039
            break;
 
98040
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
98041
        attributeArray++;
 
98042
        if ( !attributeArray )
 
98043
            return false;
 
98044
        const ParserChar* attributeValue = *attributeArray;
 
98045
        attributeArray++;
 
98046
 
 
98047
 
 
98048
    switch ( hash )
 
98049
    {
 
98050
    case HASH_ATTRIBUTE_ENCODING:
 
98051
    {
 
98052
 
 
98053
attributeData->encoding = attributeValue;
 
98054
 
 
98055
    break;
 
98056
    }
 
98057
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
98058
    {
 
98059
bool failed;
 
98060
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
98061
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
98062
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
98063
        HASH_ELEMENT_EQ,
 
98064
        HASH_ATTRIBUTE_DEFINITIONURL,
 
98065
        attributeValue))
 
98066
{
 
98067
    return false;
 
98068
}
 
98069
if ( !failed )
 
98070
    attributeData->present_attributes |= eq__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
98071
 
 
98072
    break;
 
98073
    }
 
98074
    case HASH_ATTRIBUTE_CLASS:
 
98075
    {
 
98076
bool failed;
 
98077
#ifdef GENERATEDSAXPARSER_VALIDATION
 
98078
    if ( mValidate )
 
98079
    {
 
98080
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_EQ, HASH_ATTRIBUTE_CLASS);
 
98081
    }
 
98082
    else
 
98083
    {
 
98084
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
98085
    }
 
98086
#else
 
98087
    {
 
98088
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
98089
    } // validation
 
98090
#endif
 
98091
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
98092
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
98093
        HASH_ELEMENT_EQ,
 
98094
        HASH_ATTRIBUTE_CLASS,
 
98095
        attributeValue))
 
98096
{
 
98097
    return false;
 
98098
}
 
98099
#ifdef GENERATEDSAXPARSER_VALIDATION
 
98100
    if ( mValidate )
 
98101
    {
 
98102
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
98103
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
98104
    {
 
98105
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
98106
            simpleTypeValidationResult,
 
98107
            HASH_ELEMENT_EQ,
 
98108
            HASH_ATTRIBUTE_CLASS,
 
98109
            attributeValue) )
 
98110
        {
 
98111
            return false;
 
98112
        }
 
98113
    }
 
98114
    } // validation
 
98115
#endif
 
98116
 
 
98117
if ( !failed )
 
98118
    attributeData->present_attributes |= eq__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
98119
 
 
98120
    break;
 
98121
    }
 
98122
    case HASH_ATTRIBUTE_STYLE:
 
98123
    {
 
98124
 
 
98125
attributeData->style = attributeValue;
 
98126
 
 
98127
    break;
 
98128
    }
 
98129
    case HASH_ATTRIBUTE_XREF:
 
98130
    {
 
98131
 
 
98132
attributeData->xref = attributeValue;
 
98133
 
 
98134
    break;
 
98135
    }
 
98136
    case HASH_ATTRIBUTE_ID:
 
98137
    {
 
98138
 
 
98139
attributeData->id = attributeValue;
 
98140
 
 
98141
    break;
 
98142
    }
 
98143
    case HASH_ATTRIBUTE_HREF:
 
98144
    {
 
98145
bool failed;
 
98146
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
98147
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
98148
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
98149
        HASH_ELEMENT_EQ,
 
98150
        HASH_ATTRIBUTE_HREF,
 
98151
        attributeValue))
 
98152
{
 
98153
    return false;
 
98154
}
 
98155
if ( !failed )
 
98156
    attributeData->present_attributes |= eq__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
98157
 
 
98158
    break;
 
98159
    }
 
98160
    default:
 
98161
    {
 
98162
        if ( !attributeData->unknownAttributes.data )
 
98163
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
98164
        else
 
98165
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
98166
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
98167
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
98168
        attributeData->unknownAttributes.size += 2;
 
98169
 
 
98170
    }
 
98171
    }
 
98172
    }
 
98173
}
 
98174
if ((attributeData->present_attributes & eq__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
98175
{
 
98176
    attributeData->definitionURL = COLLADABU::URI("");
 
98177
}
 
98178
if ((attributeData->present_attributes & eq__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
98179
{
 
98180
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
98181
}
 
98182
if ((attributeData->present_attributes & eq__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
98183
{
 
98184
    attributeData->href = COLLADABU::URI("");
 
98185
}
 
98186
 
 
98187
 
 
98188
    return true;
 
98189
}
 
98190
 
 
98191
//---------------------------------------------------------------------
 
98192
bool ColladaParserAutoGen15Private::_preEnd__eq()
 
98193
{
 
98194
#ifdef GENERATEDSAXPARSER_VALIDATION
 
98195
    if ( mValidate )
 
98196
    {
 
98197
 
 
98198
        bool validationResult = _validateEnd__eq();
 
98199
        if ( !validationResult ) return false;
 
98200
 
 
98201
    } // validation
 
98202
#endif
 
98203
 
 
98204
    return true;
 
98205
}
 
98206
 
 
98207
//---------------------------------------------------------------------
 
98208
bool ColladaParserAutoGen15Private::_freeAttributes__eq( void* attributeData )
 
98209
{
 
98210
    eq__AttributeData* typedAttributeData = static_cast<eq__AttributeData*>(attributeData);
 
98211
    if (typedAttributeData->_class.data)
 
98212
    {
 
98213
        mStackMemoryManager.deleteObject();
 
98214
    }
 
98215
 
 
98216
    if (typedAttributeData->unknownAttributes.data)
 
98217
    {
 
98218
        mStackMemoryManager.deleteObject();
 
98219
    }
 
98220
 
 
98221
 
 
98222
    typedAttributeData->~eq__AttributeData();
 
98223
 
 
98224
    return true;
 
98225
}
 
98226
 
 
98227
//---------------------------------------------------------------------
 
98228
const neq__AttributeData neq__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
98229
 
 
98230
//---------------------------------------------------------------------
 
98231
bool ColladaParserAutoGen15Private::_data__neq( const ParserChar* text, size_t textLength )
 
98232
{
 
98233
    return true;
 
98234
}
 
98235
 
 
98236
//---------------------------------------------------------------------
 
98237
bool ColladaParserAutoGen15Private::_preBegin__neq( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
98238
{
 
98239
#ifdef GENERATEDSAXPARSER_VALIDATION
 
98240
    if ( mValidate )
 
98241
    {
 
98242
 
 
98243
        bool validationResult = _validateBegin__neq( attributes, attributeDataPtr, validationDataPtr );
 
98244
        if ( !validationResult ) return false;
 
98245
 
 
98246
    } // validation
 
98247
#endif
 
98248
 
 
98249
neq__AttributeData* attributeData = newData<neq__AttributeData>(attributeDataPtr);
 
98250
 
 
98251
const ParserChar** attributeArray = attributes.attributes;
 
98252
if ( attributeArray )
 
98253
{
 
98254
    while (true)
 
98255
    {
 
98256
        const ParserChar * attribute = *attributeArray;
 
98257
        if ( !attribute )
 
98258
            break;
 
98259
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
98260
        attributeArray++;
 
98261
        if ( !attributeArray )
 
98262
            return false;
 
98263
        const ParserChar* attributeValue = *attributeArray;
 
98264
        attributeArray++;
 
98265
 
 
98266
 
 
98267
    switch ( hash )
 
98268
    {
 
98269
    case HASH_ATTRIBUTE_ENCODING:
 
98270
    {
 
98271
 
 
98272
attributeData->encoding = attributeValue;
 
98273
 
 
98274
    break;
 
98275
    }
 
98276
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
98277
    {
 
98278
bool failed;
 
98279
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
98280
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
98281
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
98282
        HASH_ELEMENT_NEQ,
 
98283
        HASH_ATTRIBUTE_DEFINITIONURL,
 
98284
        attributeValue))
 
98285
{
 
98286
    return false;
 
98287
}
 
98288
if ( !failed )
 
98289
    attributeData->present_attributes |= neq__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
98290
 
 
98291
    break;
 
98292
    }
 
98293
    case HASH_ATTRIBUTE_CLASS:
 
98294
    {
 
98295
bool failed;
 
98296
#ifdef GENERATEDSAXPARSER_VALIDATION
 
98297
    if ( mValidate )
 
98298
    {
 
98299
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_NEQ, HASH_ATTRIBUTE_CLASS);
 
98300
    }
 
98301
    else
 
98302
    {
 
98303
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
98304
    }
 
98305
#else
 
98306
    {
 
98307
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
98308
    } // validation
 
98309
#endif
 
98310
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
98311
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
98312
        HASH_ELEMENT_NEQ,
 
98313
        HASH_ATTRIBUTE_CLASS,
 
98314
        attributeValue))
 
98315
{
 
98316
    return false;
 
98317
}
 
98318
#ifdef GENERATEDSAXPARSER_VALIDATION
 
98319
    if ( mValidate )
 
98320
    {
 
98321
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
98322
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
98323
    {
 
98324
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
98325
            simpleTypeValidationResult,
 
98326
            HASH_ELEMENT_NEQ,
 
98327
            HASH_ATTRIBUTE_CLASS,
 
98328
            attributeValue) )
 
98329
        {
 
98330
            return false;
 
98331
        }
 
98332
    }
 
98333
    } // validation
 
98334
#endif
 
98335
 
 
98336
if ( !failed )
 
98337
    attributeData->present_attributes |= neq__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
98338
 
 
98339
    break;
 
98340
    }
 
98341
    case HASH_ATTRIBUTE_STYLE:
 
98342
    {
 
98343
 
 
98344
attributeData->style = attributeValue;
 
98345
 
 
98346
    break;
 
98347
    }
 
98348
    case HASH_ATTRIBUTE_XREF:
 
98349
    {
 
98350
 
 
98351
attributeData->xref = attributeValue;
 
98352
 
 
98353
    break;
 
98354
    }
 
98355
    case HASH_ATTRIBUTE_ID:
 
98356
    {
 
98357
 
 
98358
attributeData->id = attributeValue;
 
98359
 
 
98360
    break;
 
98361
    }
 
98362
    case HASH_ATTRIBUTE_HREF:
 
98363
    {
 
98364
bool failed;
 
98365
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
98366
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
98367
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
98368
        HASH_ELEMENT_NEQ,
 
98369
        HASH_ATTRIBUTE_HREF,
 
98370
        attributeValue))
 
98371
{
 
98372
    return false;
 
98373
}
 
98374
if ( !failed )
 
98375
    attributeData->present_attributes |= neq__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
98376
 
 
98377
    break;
 
98378
    }
 
98379
    default:
 
98380
    {
 
98381
        if ( !attributeData->unknownAttributes.data )
 
98382
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
98383
        else
 
98384
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
98385
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
98386
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
98387
        attributeData->unknownAttributes.size += 2;
 
98388
 
 
98389
    }
 
98390
    }
 
98391
    }
 
98392
}
 
98393
if ((attributeData->present_attributes & neq__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
98394
{
 
98395
    attributeData->definitionURL = COLLADABU::URI("");
 
98396
}
 
98397
if ((attributeData->present_attributes & neq__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
98398
{
 
98399
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
98400
}
 
98401
if ((attributeData->present_attributes & neq__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
98402
{
 
98403
    attributeData->href = COLLADABU::URI("");
 
98404
}
 
98405
 
 
98406
 
 
98407
    return true;
 
98408
}
 
98409
 
 
98410
//---------------------------------------------------------------------
 
98411
bool ColladaParserAutoGen15Private::_preEnd__neq()
 
98412
{
 
98413
#ifdef GENERATEDSAXPARSER_VALIDATION
 
98414
    if ( mValidate )
 
98415
    {
 
98416
 
 
98417
        bool validationResult = _validateEnd__neq();
 
98418
        if ( !validationResult ) return false;
 
98419
 
 
98420
    } // validation
 
98421
#endif
 
98422
 
 
98423
    return true;
 
98424
}
 
98425
 
 
98426
//---------------------------------------------------------------------
 
98427
bool ColladaParserAutoGen15Private::_freeAttributes__neq( void* attributeData )
 
98428
{
 
98429
    neq__AttributeData* typedAttributeData = static_cast<neq__AttributeData*>(attributeData);
 
98430
    if (typedAttributeData->_class.data)
 
98431
    {
 
98432
        mStackMemoryManager.deleteObject();
 
98433
    }
 
98434
 
 
98435
    if (typedAttributeData->unknownAttributes.data)
 
98436
    {
 
98437
        mStackMemoryManager.deleteObject();
 
98438
    }
 
98439
 
 
98440
 
 
98441
    typedAttributeData->~neq__AttributeData();
 
98442
 
 
98443
    return true;
 
98444
}
 
98445
 
 
98446
//---------------------------------------------------------------------
 
98447
const leq__AttributeData leq__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
98448
 
 
98449
//---------------------------------------------------------------------
 
98450
bool ColladaParserAutoGen15Private::_data__leq( const ParserChar* text, size_t textLength )
 
98451
{
 
98452
    return true;
 
98453
}
 
98454
 
 
98455
//---------------------------------------------------------------------
 
98456
bool ColladaParserAutoGen15Private::_preBegin__leq( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
98457
{
 
98458
#ifdef GENERATEDSAXPARSER_VALIDATION
 
98459
    if ( mValidate )
 
98460
    {
 
98461
 
 
98462
        bool validationResult = _validateBegin__leq( attributes, attributeDataPtr, validationDataPtr );
 
98463
        if ( !validationResult ) return false;
 
98464
 
 
98465
    } // validation
 
98466
#endif
 
98467
 
 
98468
leq__AttributeData* attributeData = newData<leq__AttributeData>(attributeDataPtr);
 
98469
 
 
98470
const ParserChar** attributeArray = attributes.attributes;
 
98471
if ( attributeArray )
 
98472
{
 
98473
    while (true)
 
98474
    {
 
98475
        const ParserChar * attribute = *attributeArray;
 
98476
        if ( !attribute )
 
98477
            break;
 
98478
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
98479
        attributeArray++;
 
98480
        if ( !attributeArray )
 
98481
            return false;
 
98482
        const ParserChar* attributeValue = *attributeArray;
 
98483
        attributeArray++;
 
98484
 
 
98485
 
 
98486
    switch ( hash )
 
98487
    {
 
98488
    case HASH_ATTRIBUTE_ENCODING:
 
98489
    {
 
98490
 
 
98491
attributeData->encoding = attributeValue;
 
98492
 
 
98493
    break;
 
98494
    }
 
98495
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
98496
    {
 
98497
bool failed;
 
98498
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
98499
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
98500
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
98501
        HASH_ELEMENT_LEQ,
 
98502
        HASH_ATTRIBUTE_DEFINITIONURL,
 
98503
        attributeValue))
 
98504
{
 
98505
    return false;
 
98506
}
 
98507
if ( !failed )
 
98508
    attributeData->present_attributes |= leq__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
98509
 
 
98510
    break;
 
98511
    }
 
98512
    case HASH_ATTRIBUTE_CLASS:
 
98513
    {
 
98514
bool failed;
 
98515
#ifdef GENERATEDSAXPARSER_VALIDATION
 
98516
    if ( mValidate )
 
98517
    {
 
98518
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_LEQ, HASH_ATTRIBUTE_CLASS);
 
98519
    }
 
98520
    else
 
98521
    {
 
98522
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
98523
    }
 
98524
#else
 
98525
    {
 
98526
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
98527
    } // validation
 
98528
#endif
 
98529
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
98530
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
98531
        HASH_ELEMENT_LEQ,
 
98532
        HASH_ATTRIBUTE_CLASS,
 
98533
        attributeValue))
 
98534
{
 
98535
    return false;
 
98536
}
 
98537
#ifdef GENERATEDSAXPARSER_VALIDATION
 
98538
    if ( mValidate )
 
98539
    {
 
98540
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
98541
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
98542
    {
 
98543
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
98544
            simpleTypeValidationResult,
 
98545
            HASH_ELEMENT_LEQ,
 
98546
            HASH_ATTRIBUTE_CLASS,
 
98547
            attributeValue) )
 
98548
        {
 
98549
            return false;
 
98550
        }
 
98551
    }
 
98552
    } // validation
 
98553
#endif
 
98554
 
 
98555
if ( !failed )
 
98556
    attributeData->present_attributes |= leq__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
98557
 
 
98558
    break;
 
98559
    }
 
98560
    case HASH_ATTRIBUTE_STYLE:
 
98561
    {
 
98562
 
 
98563
attributeData->style = attributeValue;
 
98564
 
 
98565
    break;
 
98566
    }
 
98567
    case HASH_ATTRIBUTE_XREF:
 
98568
    {
 
98569
 
 
98570
attributeData->xref = attributeValue;
 
98571
 
 
98572
    break;
 
98573
    }
 
98574
    case HASH_ATTRIBUTE_ID:
 
98575
    {
 
98576
 
 
98577
attributeData->id = attributeValue;
 
98578
 
 
98579
    break;
 
98580
    }
 
98581
    case HASH_ATTRIBUTE_HREF:
 
98582
    {
 
98583
bool failed;
 
98584
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
98585
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
98586
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
98587
        HASH_ELEMENT_LEQ,
 
98588
        HASH_ATTRIBUTE_HREF,
 
98589
        attributeValue))
 
98590
{
 
98591
    return false;
 
98592
}
 
98593
if ( !failed )
 
98594
    attributeData->present_attributes |= leq__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
98595
 
 
98596
    break;
 
98597
    }
 
98598
    default:
 
98599
    {
 
98600
        if ( !attributeData->unknownAttributes.data )
 
98601
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
98602
        else
 
98603
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
98604
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
98605
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
98606
        attributeData->unknownAttributes.size += 2;
 
98607
 
 
98608
    }
 
98609
    }
 
98610
    }
 
98611
}
 
98612
if ((attributeData->present_attributes & leq__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
98613
{
 
98614
    attributeData->definitionURL = COLLADABU::URI("");
 
98615
}
 
98616
if ((attributeData->present_attributes & leq__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
98617
{
 
98618
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
98619
}
 
98620
if ((attributeData->present_attributes & leq__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
98621
{
 
98622
    attributeData->href = COLLADABU::URI("");
 
98623
}
 
98624
 
 
98625
 
 
98626
    return true;
 
98627
}
 
98628
 
 
98629
//---------------------------------------------------------------------
 
98630
bool ColladaParserAutoGen15Private::_preEnd__leq()
 
98631
{
 
98632
#ifdef GENERATEDSAXPARSER_VALIDATION
 
98633
    if ( mValidate )
 
98634
    {
 
98635
 
 
98636
        bool validationResult = _validateEnd__leq();
 
98637
        if ( !validationResult ) return false;
 
98638
 
 
98639
    } // validation
 
98640
#endif
 
98641
 
 
98642
    return true;
 
98643
}
 
98644
 
 
98645
//---------------------------------------------------------------------
 
98646
bool ColladaParserAutoGen15Private::_freeAttributes__leq( void* attributeData )
 
98647
{
 
98648
    leq__AttributeData* typedAttributeData = static_cast<leq__AttributeData*>(attributeData);
 
98649
    if (typedAttributeData->_class.data)
 
98650
    {
 
98651
        mStackMemoryManager.deleteObject();
 
98652
    }
 
98653
 
 
98654
    if (typedAttributeData->unknownAttributes.data)
 
98655
    {
 
98656
        mStackMemoryManager.deleteObject();
 
98657
    }
 
98658
 
 
98659
 
 
98660
    typedAttributeData->~leq__AttributeData();
 
98661
 
 
98662
    return true;
 
98663
}
 
98664
 
 
98665
//---------------------------------------------------------------------
 
98666
const lt__AttributeData lt__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
98667
 
 
98668
//---------------------------------------------------------------------
 
98669
bool ColladaParserAutoGen15Private::_data__lt( const ParserChar* text, size_t textLength )
 
98670
{
 
98671
    return true;
 
98672
}
 
98673
 
 
98674
//---------------------------------------------------------------------
 
98675
bool ColladaParserAutoGen15Private::_preBegin__lt( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
98676
{
 
98677
#ifdef GENERATEDSAXPARSER_VALIDATION
 
98678
    if ( mValidate )
 
98679
    {
 
98680
 
 
98681
        bool validationResult = _validateBegin__lt( attributes, attributeDataPtr, validationDataPtr );
 
98682
        if ( !validationResult ) return false;
 
98683
 
 
98684
    } // validation
 
98685
#endif
 
98686
 
 
98687
lt__AttributeData* attributeData = newData<lt__AttributeData>(attributeDataPtr);
 
98688
 
 
98689
const ParserChar** attributeArray = attributes.attributes;
 
98690
if ( attributeArray )
 
98691
{
 
98692
    while (true)
 
98693
    {
 
98694
        const ParserChar * attribute = *attributeArray;
 
98695
        if ( !attribute )
 
98696
            break;
 
98697
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
98698
        attributeArray++;
 
98699
        if ( !attributeArray )
 
98700
            return false;
 
98701
        const ParserChar* attributeValue = *attributeArray;
 
98702
        attributeArray++;
 
98703
 
 
98704
 
 
98705
    switch ( hash )
 
98706
    {
 
98707
    case HASH_ATTRIBUTE_ENCODING:
 
98708
    {
 
98709
 
 
98710
attributeData->encoding = attributeValue;
 
98711
 
 
98712
    break;
 
98713
    }
 
98714
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
98715
    {
 
98716
bool failed;
 
98717
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
98718
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
98719
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
98720
        HASH_ELEMENT_LT,
 
98721
        HASH_ATTRIBUTE_DEFINITIONURL,
 
98722
        attributeValue))
 
98723
{
 
98724
    return false;
 
98725
}
 
98726
if ( !failed )
 
98727
    attributeData->present_attributes |= lt__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
98728
 
 
98729
    break;
 
98730
    }
 
98731
    case HASH_ATTRIBUTE_CLASS:
 
98732
    {
 
98733
bool failed;
 
98734
#ifdef GENERATEDSAXPARSER_VALIDATION
 
98735
    if ( mValidate )
 
98736
    {
 
98737
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_LT, HASH_ATTRIBUTE_CLASS);
 
98738
    }
 
98739
    else
 
98740
    {
 
98741
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
98742
    }
 
98743
#else
 
98744
    {
 
98745
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
98746
    } // validation
 
98747
#endif
 
98748
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
98749
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
98750
        HASH_ELEMENT_LT,
 
98751
        HASH_ATTRIBUTE_CLASS,
 
98752
        attributeValue))
 
98753
{
 
98754
    return false;
 
98755
}
 
98756
#ifdef GENERATEDSAXPARSER_VALIDATION
 
98757
    if ( mValidate )
 
98758
    {
 
98759
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
98760
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
98761
    {
 
98762
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
98763
            simpleTypeValidationResult,
 
98764
            HASH_ELEMENT_LT,
 
98765
            HASH_ATTRIBUTE_CLASS,
 
98766
            attributeValue) )
 
98767
        {
 
98768
            return false;
 
98769
        }
 
98770
    }
 
98771
    } // validation
 
98772
#endif
 
98773
 
 
98774
if ( !failed )
 
98775
    attributeData->present_attributes |= lt__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
98776
 
 
98777
    break;
 
98778
    }
 
98779
    case HASH_ATTRIBUTE_STYLE:
 
98780
    {
 
98781
 
 
98782
attributeData->style = attributeValue;
 
98783
 
 
98784
    break;
 
98785
    }
 
98786
    case HASH_ATTRIBUTE_XREF:
 
98787
    {
 
98788
 
 
98789
attributeData->xref = attributeValue;
 
98790
 
 
98791
    break;
 
98792
    }
 
98793
    case HASH_ATTRIBUTE_ID:
 
98794
    {
 
98795
 
 
98796
attributeData->id = attributeValue;
 
98797
 
 
98798
    break;
 
98799
    }
 
98800
    case HASH_ATTRIBUTE_HREF:
 
98801
    {
 
98802
bool failed;
 
98803
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
98804
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
98805
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
98806
        HASH_ELEMENT_LT,
 
98807
        HASH_ATTRIBUTE_HREF,
 
98808
        attributeValue))
 
98809
{
 
98810
    return false;
 
98811
}
 
98812
if ( !failed )
 
98813
    attributeData->present_attributes |= lt__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
98814
 
 
98815
    break;
 
98816
    }
 
98817
    default:
 
98818
    {
 
98819
        if ( !attributeData->unknownAttributes.data )
 
98820
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
98821
        else
 
98822
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
98823
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
98824
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
98825
        attributeData->unknownAttributes.size += 2;
 
98826
 
 
98827
    }
 
98828
    }
 
98829
    }
 
98830
}
 
98831
if ((attributeData->present_attributes & lt__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
98832
{
 
98833
    attributeData->definitionURL = COLLADABU::URI("");
 
98834
}
 
98835
if ((attributeData->present_attributes & lt__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
98836
{
 
98837
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
98838
}
 
98839
if ((attributeData->present_attributes & lt__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
98840
{
 
98841
    attributeData->href = COLLADABU::URI("");
 
98842
}
 
98843
 
 
98844
 
 
98845
    return true;
 
98846
}
 
98847
 
 
98848
//---------------------------------------------------------------------
 
98849
bool ColladaParserAutoGen15Private::_preEnd__lt()
 
98850
{
 
98851
#ifdef GENERATEDSAXPARSER_VALIDATION
 
98852
    if ( mValidate )
 
98853
    {
 
98854
 
 
98855
        bool validationResult = _validateEnd__lt();
 
98856
        if ( !validationResult ) return false;
 
98857
 
 
98858
    } // validation
 
98859
#endif
 
98860
 
 
98861
    return true;
 
98862
}
 
98863
 
 
98864
//---------------------------------------------------------------------
 
98865
bool ColladaParserAutoGen15Private::_freeAttributes__lt( void* attributeData )
 
98866
{
 
98867
    lt__AttributeData* typedAttributeData = static_cast<lt__AttributeData*>(attributeData);
 
98868
    if (typedAttributeData->_class.data)
 
98869
    {
 
98870
        mStackMemoryManager.deleteObject();
 
98871
    }
 
98872
 
 
98873
    if (typedAttributeData->unknownAttributes.data)
 
98874
    {
 
98875
        mStackMemoryManager.deleteObject();
 
98876
    }
 
98877
 
 
98878
 
 
98879
    typedAttributeData->~lt__AttributeData();
 
98880
 
 
98881
    return true;
 
98882
}
 
98883
 
 
98884
//---------------------------------------------------------------------
 
98885
const geq__AttributeData geq__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
98886
 
 
98887
//---------------------------------------------------------------------
 
98888
bool ColladaParserAutoGen15Private::_data__geq( const ParserChar* text, size_t textLength )
 
98889
{
 
98890
    return true;
 
98891
}
 
98892
 
 
98893
//---------------------------------------------------------------------
 
98894
bool ColladaParserAutoGen15Private::_preBegin__geq( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
98895
{
 
98896
#ifdef GENERATEDSAXPARSER_VALIDATION
 
98897
    if ( mValidate )
 
98898
    {
 
98899
 
 
98900
        bool validationResult = _validateBegin__geq( attributes, attributeDataPtr, validationDataPtr );
 
98901
        if ( !validationResult ) return false;
 
98902
 
 
98903
    } // validation
 
98904
#endif
 
98905
 
 
98906
geq__AttributeData* attributeData = newData<geq__AttributeData>(attributeDataPtr);
 
98907
 
 
98908
const ParserChar** attributeArray = attributes.attributes;
 
98909
if ( attributeArray )
 
98910
{
 
98911
    while (true)
 
98912
    {
 
98913
        const ParserChar * attribute = *attributeArray;
 
98914
        if ( !attribute )
 
98915
            break;
 
98916
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
98917
        attributeArray++;
 
98918
        if ( !attributeArray )
 
98919
            return false;
 
98920
        const ParserChar* attributeValue = *attributeArray;
 
98921
        attributeArray++;
 
98922
 
 
98923
 
 
98924
    switch ( hash )
 
98925
    {
 
98926
    case HASH_ATTRIBUTE_ENCODING:
 
98927
    {
 
98928
 
 
98929
attributeData->encoding = attributeValue;
 
98930
 
 
98931
    break;
 
98932
    }
 
98933
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
98934
    {
 
98935
bool failed;
 
98936
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
98937
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
98938
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
98939
        HASH_ELEMENT_GEQ,
 
98940
        HASH_ATTRIBUTE_DEFINITIONURL,
 
98941
        attributeValue))
 
98942
{
 
98943
    return false;
 
98944
}
 
98945
if ( !failed )
 
98946
    attributeData->present_attributes |= geq__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
98947
 
 
98948
    break;
 
98949
    }
 
98950
    case HASH_ATTRIBUTE_CLASS:
 
98951
    {
 
98952
bool failed;
 
98953
#ifdef GENERATEDSAXPARSER_VALIDATION
 
98954
    if ( mValidate )
 
98955
    {
 
98956
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_GEQ, HASH_ATTRIBUTE_CLASS);
 
98957
    }
 
98958
    else
 
98959
    {
 
98960
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
98961
    }
 
98962
#else
 
98963
    {
 
98964
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
98965
    } // validation
 
98966
#endif
 
98967
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
98968
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
98969
        HASH_ELEMENT_GEQ,
 
98970
        HASH_ATTRIBUTE_CLASS,
 
98971
        attributeValue))
 
98972
{
 
98973
    return false;
 
98974
}
 
98975
#ifdef GENERATEDSAXPARSER_VALIDATION
 
98976
    if ( mValidate )
 
98977
    {
 
98978
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
98979
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
98980
    {
 
98981
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
98982
            simpleTypeValidationResult,
 
98983
            HASH_ELEMENT_GEQ,
 
98984
            HASH_ATTRIBUTE_CLASS,
 
98985
            attributeValue) )
 
98986
        {
 
98987
            return false;
 
98988
        }
 
98989
    }
 
98990
    } // validation
 
98991
#endif
 
98992
 
 
98993
if ( !failed )
 
98994
    attributeData->present_attributes |= geq__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
98995
 
 
98996
    break;
 
98997
    }
 
98998
    case HASH_ATTRIBUTE_STYLE:
 
98999
    {
 
99000
 
 
99001
attributeData->style = attributeValue;
 
99002
 
 
99003
    break;
 
99004
    }
 
99005
    case HASH_ATTRIBUTE_XREF:
 
99006
    {
 
99007
 
 
99008
attributeData->xref = attributeValue;
 
99009
 
 
99010
    break;
 
99011
    }
 
99012
    case HASH_ATTRIBUTE_ID:
 
99013
    {
 
99014
 
 
99015
attributeData->id = attributeValue;
 
99016
 
 
99017
    break;
 
99018
    }
 
99019
    case HASH_ATTRIBUTE_HREF:
 
99020
    {
 
99021
bool failed;
 
99022
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
99023
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
99024
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
99025
        HASH_ELEMENT_GEQ,
 
99026
        HASH_ATTRIBUTE_HREF,
 
99027
        attributeValue))
 
99028
{
 
99029
    return false;
 
99030
}
 
99031
if ( !failed )
 
99032
    attributeData->present_attributes |= geq__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
99033
 
 
99034
    break;
 
99035
    }
 
99036
    default:
 
99037
    {
 
99038
        if ( !attributeData->unknownAttributes.data )
 
99039
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
99040
        else
 
99041
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
99042
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
99043
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
99044
        attributeData->unknownAttributes.size += 2;
 
99045
 
 
99046
    }
 
99047
    }
 
99048
    }
 
99049
}
 
99050
if ((attributeData->present_attributes & geq__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
99051
{
 
99052
    attributeData->definitionURL = COLLADABU::URI("");
 
99053
}
 
99054
if ((attributeData->present_attributes & geq__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
99055
{
 
99056
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
99057
}
 
99058
if ((attributeData->present_attributes & geq__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
99059
{
 
99060
    attributeData->href = COLLADABU::URI("");
 
99061
}
 
99062
 
 
99063
 
 
99064
    return true;
 
99065
}
 
99066
 
 
99067
//---------------------------------------------------------------------
 
99068
bool ColladaParserAutoGen15Private::_preEnd__geq()
 
99069
{
 
99070
#ifdef GENERATEDSAXPARSER_VALIDATION
 
99071
    if ( mValidate )
 
99072
    {
 
99073
 
 
99074
        bool validationResult = _validateEnd__geq();
 
99075
        if ( !validationResult ) return false;
 
99076
 
 
99077
    } // validation
 
99078
#endif
 
99079
 
 
99080
    return true;
 
99081
}
 
99082
 
 
99083
//---------------------------------------------------------------------
 
99084
bool ColladaParserAutoGen15Private::_freeAttributes__geq( void* attributeData )
 
99085
{
 
99086
    geq__AttributeData* typedAttributeData = static_cast<geq__AttributeData*>(attributeData);
 
99087
    if (typedAttributeData->_class.data)
 
99088
    {
 
99089
        mStackMemoryManager.deleteObject();
 
99090
    }
 
99091
 
 
99092
    if (typedAttributeData->unknownAttributes.data)
 
99093
    {
 
99094
        mStackMemoryManager.deleteObject();
 
99095
    }
 
99096
 
 
99097
 
 
99098
    typedAttributeData->~geq__AttributeData();
 
99099
 
 
99100
    return true;
 
99101
}
 
99102
 
 
99103
//---------------------------------------------------------------------
 
99104
const gt__AttributeData gt__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
99105
 
 
99106
//---------------------------------------------------------------------
 
99107
bool ColladaParserAutoGen15Private::_data__gt( const ParserChar* text, size_t textLength )
 
99108
{
 
99109
    return true;
 
99110
}
 
99111
 
 
99112
//---------------------------------------------------------------------
 
99113
bool ColladaParserAutoGen15Private::_preBegin__gt( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
99114
{
 
99115
#ifdef GENERATEDSAXPARSER_VALIDATION
 
99116
    if ( mValidate )
 
99117
    {
 
99118
 
 
99119
        bool validationResult = _validateBegin__gt( attributes, attributeDataPtr, validationDataPtr );
 
99120
        if ( !validationResult ) return false;
 
99121
 
 
99122
    } // validation
 
99123
#endif
 
99124
 
 
99125
gt__AttributeData* attributeData = newData<gt__AttributeData>(attributeDataPtr);
 
99126
 
 
99127
const ParserChar** attributeArray = attributes.attributes;
 
99128
if ( attributeArray )
 
99129
{
 
99130
    while (true)
 
99131
    {
 
99132
        const ParserChar * attribute = *attributeArray;
 
99133
        if ( !attribute )
 
99134
            break;
 
99135
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
99136
        attributeArray++;
 
99137
        if ( !attributeArray )
 
99138
            return false;
 
99139
        const ParserChar* attributeValue = *attributeArray;
 
99140
        attributeArray++;
 
99141
 
 
99142
 
 
99143
    switch ( hash )
 
99144
    {
 
99145
    case HASH_ATTRIBUTE_ENCODING:
 
99146
    {
 
99147
 
 
99148
attributeData->encoding = attributeValue;
 
99149
 
 
99150
    break;
 
99151
    }
 
99152
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
99153
    {
 
99154
bool failed;
 
99155
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
99156
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
99157
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
99158
        HASH_ELEMENT_GT,
 
99159
        HASH_ATTRIBUTE_DEFINITIONURL,
 
99160
        attributeValue))
 
99161
{
 
99162
    return false;
 
99163
}
 
99164
if ( !failed )
 
99165
    attributeData->present_attributes |= gt__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
99166
 
 
99167
    break;
 
99168
    }
 
99169
    case HASH_ATTRIBUTE_CLASS:
 
99170
    {
 
99171
bool failed;
 
99172
#ifdef GENERATEDSAXPARSER_VALIDATION
 
99173
    if ( mValidate )
 
99174
    {
 
99175
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_GT, HASH_ATTRIBUTE_CLASS);
 
99176
    }
 
99177
    else
 
99178
    {
 
99179
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
99180
    }
 
99181
#else
 
99182
    {
 
99183
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
99184
    } // validation
 
99185
#endif
 
99186
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
99187
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
99188
        HASH_ELEMENT_GT,
 
99189
        HASH_ATTRIBUTE_CLASS,
 
99190
        attributeValue))
 
99191
{
 
99192
    return false;
 
99193
}
 
99194
#ifdef GENERATEDSAXPARSER_VALIDATION
 
99195
    if ( mValidate )
 
99196
    {
 
99197
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
99198
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
99199
    {
 
99200
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
99201
            simpleTypeValidationResult,
 
99202
            HASH_ELEMENT_GT,
 
99203
            HASH_ATTRIBUTE_CLASS,
 
99204
            attributeValue) )
 
99205
        {
 
99206
            return false;
 
99207
        }
 
99208
    }
 
99209
    } // validation
 
99210
#endif
 
99211
 
 
99212
if ( !failed )
 
99213
    attributeData->present_attributes |= gt__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
99214
 
 
99215
    break;
 
99216
    }
 
99217
    case HASH_ATTRIBUTE_STYLE:
 
99218
    {
 
99219
 
 
99220
attributeData->style = attributeValue;
 
99221
 
 
99222
    break;
 
99223
    }
 
99224
    case HASH_ATTRIBUTE_XREF:
 
99225
    {
 
99226
 
 
99227
attributeData->xref = attributeValue;
 
99228
 
 
99229
    break;
 
99230
    }
 
99231
    case HASH_ATTRIBUTE_ID:
 
99232
    {
 
99233
 
 
99234
attributeData->id = attributeValue;
 
99235
 
 
99236
    break;
 
99237
    }
 
99238
    case HASH_ATTRIBUTE_HREF:
 
99239
    {
 
99240
bool failed;
 
99241
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
99242
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
99243
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
99244
        HASH_ELEMENT_GT,
 
99245
        HASH_ATTRIBUTE_HREF,
 
99246
        attributeValue))
 
99247
{
 
99248
    return false;
 
99249
}
 
99250
if ( !failed )
 
99251
    attributeData->present_attributes |= gt__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
99252
 
 
99253
    break;
 
99254
    }
 
99255
    default:
 
99256
    {
 
99257
        if ( !attributeData->unknownAttributes.data )
 
99258
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
99259
        else
 
99260
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
99261
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
99262
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
99263
        attributeData->unknownAttributes.size += 2;
 
99264
 
 
99265
    }
 
99266
    }
 
99267
    }
 
99268
}
 
99269
if ((attributeData->present_attributes & gt__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
99270
{
 
99271
    attributeData->definitionURL = COLLADABU::URI("");
 
99272
}
 
99273
if ((attributeData->present_attributes & gt__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
99274
{
 
99275
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
99276
}
 
99277
if ((attributeData->present_attributes & gt__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
99278
{
 
99279
    attributeData->href = COLLADABU::URI("");
 
99280
}
 
99281
 
 
99282
 
 
99283
    return true;
 
99284
}
 
99285
 
 
99286
//---------------------------------------------------------------------
 
99287
bool ColladaParserAutoGen15Private::_preEnd__gt()
 
99288
{
 
99289
#ifdef GENERATEDSAXPARSER_VALIDATION
 
99290
    if ( mValidate )
 
99291
    {
 
99292
 
 
99293
        bool validationResult = _validateEnd__gt();
 
99294
        if ( !validationResult ) return false;
 
99295
 
 
99296
    } // validation
 
99297
#endif
 
99298
 
 
99299
    return true;
 
99300
}
 
99301
 
 
99302
//---------------------------------------------------------------------
 
99303
bool ColladaParserAutoGen15Private::_freeAttributes__gt( void* attributeData )
 
99304
{
 
99305
    gt__AttributeData* typedAttributeData = static_cast<gt__AttributeData*>(attributeData);
 
99306
    if (typedAttributeData->_class.data)
 
99307
    {
 
99308
        mStackMemoryManager.deleteObject();
 
99309
    }
 
99310
 
 
99311
    if (typedAttributeData->unknownAttributes.data)
 
99312
    {
 
99313
        mStackMemoryManager.deleteObject();
 
99314
    }
 
99315
 
 
99316
 
 
99317
    typedAttributeData->~gt__AttributeData();
 
99318
 
 
99319
    return true;
 
99320
}
 
99321
 
 
99322
//---------------------------------------------------------------------
 
99323
const equivalent__AttributeData equivalent__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
99324
 
 
99325
//---------------------------------------------------------------------
 
99326
bool ColladaParserAutoGen15Private::_data__equivalent( const ParserChar* text, size_t textLength )
 
99327
{
 
99328
    return true;
 
99329
}
 
99330
 
 
99331
//---------------------------------------------------------------------
 
99332
bool ColladaParserAutoGen15Private::_preBegin__equivalent( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
99333
{
 
99334
#ifdef GENERATEDSAXPARSER_VALIDATION
 
99335
    if ( mValidate )
 
99336
    {
 
99337
 
 
99338
        bool validationResult = _validateBegin__equivalent( attributes, attributeDataPtr, validationDataPtr );
 
99339
        if ( !validationResult ) return false;
 
99340
 
 
99341
    } // validation
 
99342
#endif
 
99343
 
 
99344
equivalent__AttributeData* attributeData = newData<equivalent__AttributeData>(attributeDataPtr);
 
99345
 
 
99346
const ParserChar** attributeArray = attributes.attributes;
 
99347
if ( attributeArray )
 
99348
{
 
99349
    while (true)
 
99350
    {
 
99351
        const ParserChar * attribute = *attributeArray;
 
99352
        if ( !attribute )
 
99353
            break;
 
99354
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
99355
        attributeArray++;
 
99356
        if ( !attributeArray )
 
99357
            return false;
 
99358
        const ParserChar* attributeValue = *attributeArray;
 
99359
        attributeArray++;
 
99360
 
 
99361
 
 
99362
    switch ( hash )
 
99363
    {
 
99364
    case HASH_ATTRIBUTE_ENCODING:
 
99365
    {
 
99366
 
 
99367
attributeData->encoding = attributeValue;
 
99368
 
 
99369
    break;
 
99370
    }
 
99371
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
99372
    {
 
99373
bool failed;
 
99374
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
99375
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
99376
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
99377
        HASH_ELEMENT_EQUIVALENT,
 
99378
        HASH_ATTRIBUTE_DEFINITIONURL,
 
99379
        attributeValue))
 
99380
{
 
99381
    return false;
 
99382
}
 
99383
if ( !failed )
 
99384
    attributeData->present_attributes |= equivalent__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
99385
 
 
99386
    break;
 
99387
    }
 
99388
    case HASH_ATTRIBUTE_CLASS:
 
99389
    {
 
99390
bool failed;
 
99391
#ifdef GENERATEDSAXPARSER_VALIDATION
 
99392
    if ( mValidate )
 
99393
    {
 
99394
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_EQUIVALENT, HASH_ATTRIBUTE_CLASS);
 
99395
    }
 
99396
    else
 
99397
    {
 
99398
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
99399
    }
 
99400
#else
 
99401
    {
 
99402
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
99403
    } // validation
 
99404
#endif
 
99405
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
99406
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
99407
        HASH_ELEMENT_EQUIVALENT,
 
99408
        HASH_ATTRIBUTE_CLASS,
 
99409
        attributeValue))
 
99410
{
 
99411
    return false;
 
99412
}
 
99413
#ifdef GENERATEDSAXPARSER_VALIDATION
 
99414
    if ( mValidate )
 
99415
    {
 
99416
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
99417
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
99418
    {
 
99419
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
99420
            simpleTypeValidationResult,
 
99421
            HASH_ELEMENT_EQUIVALENT,
 
99422
            HASH_ATTRIBUTE_CLASS,
 
99423
            attributeValue) )
 
99424
        {
 
99425
            return false;
 
99426
        }
 
99427
    }
 
99428
    } // validation
 
99429
#endif
 
99430
 
 
99431
if ( !failed )
 
99432
    attributeData->present_attributes |= equivalent__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
99433
 
 
99434
    break;
 
99435
    }
 
99436
    case HASH_ATTRIBUTE_STYLE:
 
99437
    {
 
99438
 
 
99439
attributeData->style = attributeValue;
 
99440
 
 
99441
    break;
 
99442
    }
 
99443
    case HASH_ATTRIBUTE_XREF:
 
99444
    {
 
99445
 
 
99446
attributeData->xref = attributeValue;
 
99447
 
 
99448
    break;
 
99449
    }
 
99450
    case HASH_ATTRIBUTE_ID:
 
99451
    {
 
99452
 
 
99453
attributeData->id = attributeValue;
 
99454
 
 
99455
    break;
 
99456
    }
 
99457
    case HASH_ATTRIBUTE_HREF:
 
99458
    {
 
99459
bool failed;
 
99460
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
99461
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
99462
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
99463
        HASH_ELEMENT_EQUIVALENT,
 
99464
        HASH_ATTRIBUTE_HREF,
 
99465
        attributeValue))
 
99466
{
 
99467
    return false;
 
99468
}
 
99469
if ( !failed )
 
99470
    attributeData->present_attributes |= equivalent__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
99471
 
 
99472
    break;
 
99473
    }
 
99474
    default:
 
99475
    {
 
99476
        if ( !attributeData->unknownAttributes.data )
 
99477
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
99478
        else
 
99479
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
99480
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
99481
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
99482
        attributeData->unknownAttributes.size += 2;
 
99483
 
 
99484
    }
 
99485
    }
 
99486
    }
 
99487
}
 
99488
if ((attributeData->present_attributes & equivalent__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
99489
{
 
99490
    attributeData->definitionURL = COLLADABU::URI("");
 
99491
}
 
99492
if ((attributeData->present_attributes & equivalent__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
99493
{
 
99494
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
99495
}
 
99496
if ((attributeData->present_attributes & equivalent__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
99497
{
 
99498
    attributeData->href = COLLADABU::URI("");
 
99499
}
 
99500
 
 
99501
 
 
99502
    return true;
 
99503
}
 
99504
 
 
99505
//---------------------------------------------------------------------
 
99506
bool ColladaParserAutoGen15Private::_preEnd__equivalent()
 
99507
{
 
99508
#ifdef GENERATEDSAXPARSER_VALIDATION
 
99509
    if ( mValidate )
 
99510
    {
 
99511
 
 
99512
        bool validationResult = _validateEnd__equivalent();
 
99513
        if ( !validationResult ) return false;
 
99514
 
 
99515
    } // validation
 
99516
#endif
 
99517
 
 
99518
    return true;
 
99519
}
 
99520
 
 
99521
//---------------------------------------------------------------------
 
99522
bool ColladaParserAutoGen15Private::_freeAttributes__equivalent( void* attributeData )
 
99523
{
 
99524
    equivalent__AttributeData* typedAttributeData = static_cast<equivalent__AttributeData*>(attributeData);
 
99525
    if (typedAttributeData->_class.data)
 
99526
    {
 
99527
        mStackMemoryManager.deleteObject();
 
99528
    }
 
99529
 
 
99530
    if (typedAttributeData->unknownAttributes.data)
 
99531
    {
 
99532
        mStackMemoryManager.deleteObject();
 
99533
    }
 
99534
 
 
99535
 
 
99536
    typedAttributeData->~equivalent__AttributeData();
 
99537
 
 
99538
    return true;
 
99539
}
 
99540
 
 
99541
//---------------------------------------------------------------------
 
99542
const approx__AttributeData approx__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
99543
 
 
99544
//---------------------------------------------------------------------
 
99545
bool ColladaParserAutoGen15Private::_data__approx( const ParserChar* text, size_t textLength )
 
99546
{
 
99547
    return true;
 
99548
}
 
99549
 
 
99550
//---------------------------------------------------------------------
 
99551
bool ColladaParserAutoGen15Private::_preBegin__approx( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
99552
{
 
99553
#ifdef GENERATEDSAXPARSER_VALIDATION
 
99554
    if ( mValidate )
 
99555
    {
 
99556
 
 
99557
        bool validationResult = _validateBegin__approx( attributes, attributeDataPtr, validationDataPtr );
 
99558
        if ( !validationResult ) return false;
 
99559
 
 
99560
    } // validation
 
99561
#endif
 
99562
 
 
99563
approx__AttributeData* attributeData = newData<approx__AttributeData>(attributeDataPtr);
 
99564
 
 
99565
const ParserChar** attributeArray = attributes.attributes;
 
99566
if ( attributeArray )
 
99567
{
 
99568
    while (true)
 
99569
    {
 
99570
        const ParserChar * attribute = *attributeArray;
 
99571
        if ( !attribute )
 
99572
            break;
 
99573
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
99574
        attributeArray++;
 
99575
        if ( !attributeArray )
 
99576
            return false;
 
99577
        const ParserChar* attributeValue = *attributeArray;
 
99578
        attributeArray++;
 
99579
 
 
99580
 
 
99581
    switch ( hash )
 
99582
    {
 
99583
    case HASH_ATTRIBUTE_ENCODING:
 
99584
    {
 
99585
 
 
99586
attributeData->encoding = attributeValue;
 
99587
 
 
99588
    break;
 
99589
    }
 
99590
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
99591
    {
 
99592
bool failed;
 
99593
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
99594
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
99595
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
99596
        HASH_ELEMENT_APPROX,
 
99597
        HASH_ATTRIBUTE_DEFINITIONURL,
 
99598
        attributeValue))
 
99599
{
 
99600
    return false;
 
99601
}
 
99602
if ( !failed )
 
99603
    attributeData->present_attributes |= approx__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
99604
 
 
99605
    break;
 
99606
    }
 
99607
    case HASH_ATTRIBUTE_CLASS:
 
99608
    {
 
99609
bool failed;
 
99610
#ifdef GENERATEDSAXPARSER_VALIDATION
 
99611
    if ( mValidate )
 
99612
    {
 
99613
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_APPROX, HASH_ATTRIBUTE_CLASS);
 
99614
    }
 
99615
    else
 
99616
    {
 
99617
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
99618
    }
 
99619
#else
 
99620
    {
 
99621
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
99622
    } // validation
 
99623
#endif
 
99624
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
99625
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
99626
        HASH_ELEMENT_APPROX,
 
99627
        HASH_ATTRIBUTE_CLASS,
 
99628
        attributeValue))
 
99629
{
 
99630
    return false;
 
99631
}
 
99632
#ifdef GENERATEDSAXPARSER_VALIDATION
 
99633
    if ( mValidate )
 
99634
    {
 
99635
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
99636
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
99637
    {
 
99638
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
99639
            simpleTypeValidationResult,
 
99640
            HASH_ELEMENT_APPROX,
 
99641
            HASH_ATTRIBUTE_CLASS,
 
99642
            attributeValue) )
 
99643
        {
 
99644
            return false;
 
99645
        }
 
99646
    }
 
99647
    } // validation
 
99648
#endif
 
99649
 
 
99650
if ( !failed )
 
99651
    attributeData->present_attributes |= approx__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
99652
 
 
99653
    break;
 
99654
    }
 
99655
    case HASH_ATTRIBUTE_STYLE:
 
99656
    {
 
99657
 
 
99658
attributeData->style = attributeValue;
 
99659
 
 
99660
    break;
 
99661
    }
 
99662
    case HASH_ATTRIBUTE_XREF:
 
99663
    {
 
99664
 
 
99665
attributeData->xref = attributeValue;
 
99666
 
 
99667
    break;
 
99668
    }
 
99669
    case HASH_ATTRIBUTE_ID:
 
99670
    {
 
99671
 
 
99672
attributeData->id = attributeValue;
 
99673
 
 
99674
    break;
 
99675
    }
 
99676
    case HASH_ATTRIBUTE_HREF:
 
99677
    {
 
99678
bool failed;
 
99679
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
99680
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
99681
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
99682
        HASH_ELEMENT_APPROX,
 
99683
        HASH_ATTRIBUTE_HREF,
 
99684
        attributeValue))
 
99685
{
 
99686
    return false;
 
99687
}
 
99688
if ( !failed )
 
99689
    attributeData->present_attributes |= approx__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
99690
 
 
99691
    break;
 
99692
    }
 
99693
    default:
 
99694
    {
 
99695
        if ( !attributeData->unknownAttributes.data )
 
99696
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
99697
        else
 
99698
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
99699
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
99700
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
99701
        attributeData->unknownAttributes.size += 2;
 
99702
 
 
99703
    }
 
99704
    }
 
99705
    }
 
99706
}
 
99707
if ((attributeData->present_attributes & approx__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
99708
{
 
99709
    attributeData->definitionURL = COLLADABU::URI("");
 
99710
}
 
99711
if ((attributeData->present_attributes & approx__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
99712
{
 
99713
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
99714
}
 
99715
if ((attributeData->present_attributes & approx__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
99716
{
 
99717
    attributeData->href = COLLADABU::URI("");
 
99718
}
 
99719
 
 
99720
 
 
99721
    return true;
 
99722
}
 
99723
 
 
99724
//---------------------------------------------------------------------
 
99725
bool ColladaParserAutoGen15Private::_preEnd__approx()
 
99726
{
 
99727
#ifdef GENERATEDSAXPARSER_VALIDATION
 
99728
    if ( mValidate )
 
99729
    {
 
99730
 
 
99731
        bool validationResult = _validateEnd__approx();
 
99732
        if ( !validationResult ) return false;
 
99733
 
 
99734
    } // validation
 
99735
#endif
 
99736
 
 
99737
    return true;
 
99738
}
 
99739
 
 
99740
//---------------------------------------------------------------------
 
99741
bool ColladaParserAutoGen15Private::_freeAttributes__approx( void* attributeData )
 
99742
{
 
99743
    approx__AttributeData* typedAttributeData = static_cast<approx__AttributeData*>(attributeData);
 
99744
    if (typedAttributeData->_class.data)
 
99745
    {
 
99746
        mStackMemoryManager.deleteObject();
 
99747
    }
 
99748
 
 
99749
    if (typedAttributeData->unknownAttributes.data)
 
99750
    {
 
99751
        mStackMemoryManager.deleteObject();
 
99752
    }
 
99753
 
 
99754
 
 
99755
    typedAttributeData->~approx__AttributeData();
 
99756
 
 
99757
    return true;
 
99758
}
 
99759
 
 
99760
//---------------------------------------------------------------------
 
99761
const factorof__AttributeData factorof__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
99762
 
 
99763
//---------------------------------------------------------------------
 
99764
bool ColladaParserAutoGen15Private::_data__factorof( const ParserChar* text, size_t textLength )
 
99765
{
 
99766
    return true;
 
99767
}
 
99768
 
 
99769
//---------------------------------------------------------------------
 
99770
bool ColladaParserAutoGen15Private::_preBegin__factorof( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
99771
{
 
99772
#ifdef GENERATEDSAXPARSER_VALIDATION
 
99773
    if ( mValidate )
 
99774
    {
 
99775
 
 
99776
        bool validationResult = _validateBegin__factorof( attributes, attributeDataPtr, validationDataPtr );
 
99777
        if ( !validationResult ) return false;
 
99778
 
 
99779
    } // validation
 
99780
#endif
 
99781
 
 
99782
factorof__AttributeData* attributeData = newData<factorof__AttributeData>(attributeDataPtr);
 
99783
 
 
99784
const ParserChar** attributeArray = attributes.attributes;
 
99785
if ( attributeArray )
 
99786
{
 
99787
    while (true)
 
99788
    {
 
99789
        const ParserChar * attribute = *attributeArray;
 
99790
        if ( !attribute )
 
99791
            break;
 
99792
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
99793
        attributeArray++;
 
99794
        if ( !attributeArray )
 
99795
            return false;
 
99796
        const ParserChar* attributeValue = *attributeArray;
 
99797
        attributeArray++;
 
99798
 
 
99799
 
 
99800
    switch ( hash )
 
99801
    {
 
99802
    case HASH_ATTRIBUTE_ENCODING:
 
99803
    {
 
99804
 
 
99805
attributeData->encoding = attributeValue;
 
99806
 
 
99807
    break;
 
99808
    }
 
99809
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
99810
    {
 
99811
bool failed;
 
99812
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
99813
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
99814
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
99815
        HASH_ELEMENT_FACTOROF,
 
99816
        HASH_ATTRIBUTE_DEFINITIONURL,
 
99817
        attributeValue))
 
99818
{
 
99819
    return false;
 
99820
}
 
99821
if ( !failed )
 
99822
    attributeData->present_attributes |= factorof__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
99823
 
 
99824
    break;
 
99825
    }
 
99826
    case HASH_ATTRIBUTE_CLASS:
 
99827
    {
 
99828
bool failed;
 
99829
#ifdef GENERATEDSAXPARSER_VALIDATION
 
99830
    if ( mValidate )
 
99831
    {
 
99832
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_FACTOROF, HASH_ATTRIBUTE_CLASS);
 
99833
    }
 
99834
    else
 
99835
    {
 
99836
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
99837
    }
 
99838
#else
 
99839
    {
 
99840
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
99841
    } // validation
 
99842
#endif
 
99843
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
99844
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
99845
        HASH_ELEMENT_FACTOROF,
 
99846
        HASH_ATTRIBUTE_CLASS,
 
99847
        attributeValue))
 
99848
{
 
99849
    return false;
 
99850
}
 
99851
#ifdef GENERATEDSAXPARSER_VALIDATION
 
99852
    if ( mValidate )
 
99853
    {
 
99854
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
99855
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
99856
    {
 
99857
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
99858
            simpleTypeValidationResult,
 
99859
            HASH_ELEMENT_FACTOROF,
 
99860
            HASH_ATTRIBUTE_CLASS,
 
99861
            attributeValue) )
 
99862
        {
 
99863
            return false;
 
99864
        }
 
99865
    }
 
99866
    } // validation
 
99867
#endif
 
99868
 
 
99869
if ( !failed )
 
99870
    attributeData->present_attributes |= factorof__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
99871
 
 
99872
    break;
 
99873
    }
 
99874
    case HASH_ATTRIBUTE_STYLE:
 
99875
    {
 
99876
 
 
99877
attributeData->style = attributeValue;
 
99878
 
 
99879
    break;
 
99880
    }
 
99881
    case HASH_ATTRIBUTE_XREF:
 
99882
    {
 
99883
 
 
99884
attributeData->xref = attributeValue;
 
99885
 
 
99886
    break;
 
99887
    }
 
99888
    case HASH_ATTRIBUTE_ID:
 
99889
    {
 
99890
 
 
99891
attributeData->id = attributeValue;
 
99892
 
 
99893
    break;
 
99894
    }
 
99895
    case HASH_ATTRIBUTE_HREF:
 
99896
    {
 
99897
bool failed;
 
99898
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
99899
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
99900
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
99901
        HASH_ELEMENT_FACTOROF,
 
99902
        HASH_ATTRIBUTE_HREF,
 
99903
        attributeValue))
 
99904
{
 
99905
    return false;
 
99906
}
 
99907
if ( !failed )
 
99908
    attributeData->present_attributes |= factorof__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
99909
 
 
99910
    break;
 
99911
    }
 
99912
    default:
 
99913
    {
 
99914
        if ( !attributeData->unknownAttributes.data )
 
99915
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
99916
        else
 
99917
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
99918
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
99919
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
99920
        attributeData->unknownAttributes.size += 2;
 
99921
 
 
99922
    }
 
99923
    }
 
99924
    }
 
99925
}
 
99926
if ((attributeData->present_attributes & factorof__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
99927
{
 
99928
    attributeData->definitionURL = COLLADABU::URI("");
 
99929
}
 
99930
if ((attributeData->present_attributes & factorof__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
99931
{
 
99932
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
99933
}
 
99934
if ((attributeData->present_attributes & factorof__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
99935
{
 
99936
    attributeData->href = COLLADABU::URI("");
 
99937
}
 
99938
 
 
99939
 
 
99940
    return true;
 
99941
}
 
99942
 
 
99943
//---------------------------------------------------------------------
 
99944
bool ColladaParserAutoGen15Private::_preEnd__factorof()
 
99945
{
 
99946
#ifdef GENERATEDSAXPARSER_VALIDATION
 
99947
    if ( mValidate )
 
99948
    {
 
99949
 
 
99950
        bool validationResult = _validateEnd__factorof();
 
99951
        if ( !validationResult ) return false;
 
99952
 
 
99953
    } // validation
 
99954
#endif
 
99955
 
 
99956
    return true;
 
99957
}
 
99958
 
 
99959
//---------------------------------------------------------------------
 
99960
bool ColladaParserAutoGen15Private::_freeAttributes__factorof( void* attributeData )
 
99961
{
 
99962
    factorof__AttributeData* typedAttributeData = static_cast<factorof__AttributeData*>(attributeData);
 
99963
    if (typedAttributeData->_class.data)
 
99964
    {
 
99965
        mStackMemoryManager.deleteObject();
 
99966
    }
 
99967
 
 
99968
    if (typedAttributeData->unknownAttributes.data)
 
99969
    {
 
99970
        mStackMemoryManager.deleteObject();
 
99971
    }
 
99972
 
 
99973
 
 
99974
    typedAttributeData->~factorof__AttributeData();
 
99975
 
 
99976
    return true;
 
99977
}
 
99978
 
 
99979
//---------------------------------------------------------------------
 
99980
const exp__AttributeData exp__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
99981
 
 
99982
//---------------------------------------------------------------------
 
99983
bool ColladaParserAutoGen15Private::_data__exp( const ParserChar* text, size_t textLength )
 
99984
{
 
99985
    return true;
 
99986
}
 
99987
 
 
99988
//---------------------------------------------------------------------
 
99989
bool ColladaParserAutoGen15Private::_preBegin__exp( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
99990
{
 
99991
#ifdef GENERATEDSAXPARSER_VALIDATION
 
99992
    if ( mValidate )
 
99993
    {
 
99994
 
 
99995
        bool validationResult = _validateBegin__exp( attributes, attributeDataPtr, validationDataPtr );
 
99996
        if ( !validationResult ) return false;
 
99997
 
 
99998
    } // validation
 
99999
#endif
 
100000
 
 
100001
exp__AttributeData* attributeData = newData<exp__AttributeData>(attributeDataPtr);
 
100002
 
 
100003
const ParserChar** attributeArray = attributes.attributes;
 
100004
if ( attributeArray )
 
100005
{
 
100006
    while (true)
 
100007
    {
 
100008
        const ParserChar * attribute = *attributeArray;
 
100009
        if ( !attribute )
 
100010
            break;
 
100011
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
100012
        attributeArray++;
 
100013
        if ( !attributeArray )
 
100014
            return false;
 
100015
        const ParserChar* attributeValue = *attributeArray;
 
100016
        attributeArray++;
 
100017
 
 
100018
 
 
100019
    switch ( hash )
 
100020
    {
 
100021
    case HASH_ATTRIBUTE_ENCODING:
 
100022
    {
 
100023
 
 
100024
attributeData->encoding = attributeValue;
 
100025
 
 
100026
    break;
 
100027
    }
 
100028
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
100029
    {
 
100030
bool failed;
 
100031
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
100032
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
100033
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
100034
        HASH_ELEMENT_EXP,
 
100035
        HASH_ATTRIBUTE_DEFINITIONURL,
 
100036
        attributeValue))
 
100037
{
 
100038
    return false;
 
100039
}
 
100040
if ( !failed )
 
100041
    attributeData->present_attributes |= exp__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
100042
 
 
100043
    break;
 
100044
    }
 
100045
    case HASH_ATTRIBUTE_CLASS:
 
100046
    {
 
100047
bool failed;
 
100048
#ifdef GENERATEDSAXPARSER_VALIDATION
 
100049
    if ( mValidate )
 
100050
    {
 
100051
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_EXP, HASH_ATTRIBUTE_CLASS);
 
100052
    }
 
100053
    else
 
100054
    {
 
100055
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
100056
    }
 
100057
#else
 
100058
    {
 
100059
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
100060
    } // validation
 
100061
#endif
 
100062
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
100063
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
100064
        HASH_ELEMENT_EXP,
 
100065
        HASH_ATTRIBUTE_CLASS,
 
100066
        attributeValue))
 
100067
{
 
100068
    return false;
 
100069
}
 
100070
#ifdef GENERATEDSAXPARSER_VALIDATION
 
100071
    if ( mValidate )
 
100072
    {
 
100073
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
100074
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
100075
    {
 
100076
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
100077
            simpleTypeValidationResult,
 
100078
            HASH_ELEMENT_EXP,
 
100079
            HASH_ATTRIBUTE_CLASS,
 
100080
            attributeValue) )
 
100081
        {
 
100082
            return false;
 
100083
        }
 
100084
    }
 
100085
    } // validation
 
100086
#endif
 
100087
 
 
100088
if ( !failed )
 
100089
    attributeData->present_attributes |= exp__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
100090
 
 
100091
    break;
 
100092
    }
 
100093
    case HASH_ATTRIBUTE_STYLE:
 
100094
    {
 
100095
 
 
100096
attributeData->style = attributeValue;
 
100097
 
 
100098
    break;
 
100099
    }
 
100100
    case HASH_ATTRIBUTE_XREF:
 
100101
    {
 
100102
 
 
100103
attributeData->xref = attributeValue;
 
100104
 
 
100105
    break;
 
100106
    }
 
100107
    case HASH_ATTRIBUTE_ID:
 
100108
    {
 
100109
 
 
100110
attributeData->id = attributeValue;
 
100111
 
 
100112
    break;
 
100113
    }
 
100114
    case HASH_ATTRIBUTE_HREF:
 
100115
    {
 
100116
bool failed;
 
100117
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
100118
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
100119
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
100120
        HASH_ELEMENT_EXP,
 
100121
        HASH_ATTRIBUTE_HREF,
 
100122
        attributeValue))
 
100123
{
 
100124
    return false;
 
100125
}
 
100126
if ( !failed )
 
100127
    attributeData->present_attributes |= exp__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
100128
 
 
100129
    break;
 
100130
    }
 
100131
    default:
 
100132
    {
 
100133
        if ( !attributeData->unknownAttributes.data )
 
100134
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
100135
        else
 
100136
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
100137
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
100138
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
100139
        attributeData->unknownAttributes.size += 2;
 
100140
 
 
100141
    }
 
100142
    }
 
100143
    }
 
100144
}
 
100145
if ((attributeData->present_attributes & exp__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
100146
{
 
100147
    attributeData->definitionURL = COLLADABU::URI("");
 
100148
}
 
100149
if ((attributeData->present_attributes & exp__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
100150
{
 
100151
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
100152
}
 
100153
if ((attributeData->present_attributes & exp__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
100154
{
 
100155
    attributeData->href = COLLADABU::URI("");
 
100156
}
 
100157
 
 
100158
 
 
100159
    return true;
 
100160
}
 
100161
 
 
100162
//---------------------------------------------------------------------
 
100163
bool ColladaParserAutoGen15Private::_preEnd__exp()
 
100164
{
 
100165
#ifdef GENERATEDSAXPARSER_VALIDATION
 
100166
    if ( mValidate )
 
100167
    {
 
100168
 
 
100169
        bool validationResult = _validateEnd__exp();
 
100170
        if ( !validationResult ) return false;
 
100171
 
 
100172
    } // validation
 
100173
#endif
 
100174
 
 
100175
    return true;
 
100176
}
 
100177
 
 
100178
//---------------------------------------------------------------------
 
100179
bool ColladaParserAutoGen15Private::_freeAttributes__exp( void* attributeData )
 
100180
{
 
100181
    exp__AttributeData* typedAttributeData = static_cast<exp__AttributeData*>(attributeData);
 
100182
    if (typedAttributeData->_class.data)
 
100183
    {
 
100184
        mStackMemoryManager.deleteObject();
 
100185
    }
 
100186
 
 
100187
    if (typedAttributeData->unknownAttributes.data)
 
100188
    {
 
100189
        mStackMemoryManager.deleteObject();
 
100190
    }
 
100191
 
 
100192
 
 
100193
    typedAttributeData->~exp__AttributeData();
 
100194
 
 
100195
    return true;
 
100196
}
 
100197
 
 
100198
//---------------------------------------------------------------------
 
100199
const ln__AttributeData ln__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
100200
 
 
100201
//---------------------------------------------------------------------
 
100202
bool ColladaParserAutoGen15Private::_data__ln( const ParserChar* text, size_t textLength )
 
100203
{
 
100204
    return true;
 
100205
}
 
100206
 
 
100207
//---------------------------------------------------------------------
 
100208
bool ColladaParserAutoGen15Private::_preBegin__ln( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
100209
{
 
100210
#ifdef GENERATEDSAXPARSER_VALIDATION
 
100211
    if ( mValidate )
 
100212
    {
 
100213
 
 
100214
        bool validationResult = _validateBegin__ln( attributes, attributeDataPtr, validationDataPtr );
 
100215
        if ( !validationResult ) return false;
 
100216
 
 
100217
    } // validation
 
100218
#endif
 
100219
 
 
100220
ln__AttributeData* attributeData = newData<ln__AttributeData>(attributeDataPtr);
 
100221
 
 
100222
const ParserChar** attributeArray = attributes.attributes;
 
100223
if ( attributeArray )
 
100224
{
 
100225
    while (true)
 
100226
    {
 
100227
        const ParserChar * attribute = *attributeArray;
 
100228
        if ( !attribute )
 
100229
            break;
 
100230
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
100231
        attributeArray++;
 
100232
        if ( !attributeArray )
 
100233
            return false;
 
100234
        const ParserChar* attributeValue = *attributeArray;
 
100235
        attributeArray++;
 
100236
 
 
100237
 
 
100238
    switch ( hash )
 
100239
    {
 
100240
    case HASH_ATTRIBUTE_ENCODING:
 
100241
    {
 
100242
 
 
100243
attributeData->encoding = attributeValue;
 
100244
 
 
100245
    break;
 
100246
    }
 
100247
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
100248
    {
 
100249
bool failed;
 
100250
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
100251
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
100252
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
100253
        HASH_ELEMENT_LN,
 
100254
        HASH_ATTRIBUTE_DEFINITIONURL,
 
100255
        attributeValue))
 
100256
{
 
100257
    return false;
 
100258
}
 
100259
if ( !failed )
 
100260
    attributeData->present_attributes |= ln__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
100261
 
 
100262
    break;
 
100263
    }
 
100264
    case HASH_ATTRIBUTE_CLASS:
 
100265
    {
 
100266
bool failed;
 
100267
#ifdef GENERATEDSAXPARSER_VALIDATION
 
100268
    if ( mValidate )
 
100269
    {
 
100270
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_LN, HASH_ATTRIBUTE_CLASS);
 
100271
    }
 
100272
    else
 
100273
    {
 
100274
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
100275
    }
 
100276
#else
 
100277
    {
 
100278
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
100279
    } // validation
 
100280
#endif
 
100281
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
100282
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
100283
        HASH_ELEMENT_LN,
 
100284
        HASH_ATTRIBUTE_CLASS,
 
100285
        attributeValue))
 
100286
{
 
100287
    return false;
 
100288
}
 
100289
#ifdef GENERATEDSAXPARSER_VALIDATION
 
100290
    if ( mValidate )
 
100291
    {
 
100292
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
100293
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
100294
    {
 
100295
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
100296
            simpleTypeValidationResult,
 
100297
            HASH_ELEMENT_LN,
 
100298
            HASH_ATTRIBUTE_CLASS,
 
100299
            attributeValue) )
 
100300
        {
 
100301
            return false;
 
100302
        }
 
100303
    }
 
100304
    } // validation
 
100305
#endif
 
100306
 
 
100307
if ( !failed )
 
100308
    attributeData->present_attributes |= ln__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
100309
 
 
100310
    break;
 
100311
    }
 
100312
    case HASH_ATTRIBUTE_STYLE:
 
100313
    {
 
100314
 
 
100315
attributeData->style = attributeValue;
 
100316
 
 
100317
    break;
 
100318
    }
 
100319
    case HASH_ATTRIBUTE_XREF:
 
100320
    {
 
100321
 
 
100322
attributeData->xref = attributeValue;
 
100323
 
 
100324
    break;
 
100325
    }
 
100326
    case HASH_ATTRIBUTE_ID:
 
100327
    {
 
100328
 
 
100329
attributeData->id = attributeValue;
 
100330
 
 
100331
    break;
 
100332
    }
 
100333
    case HASH_ATTRIBUTE_HREF:
 
100334
    {
 
100335
bool failed;
 
100336
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
100337
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
100338
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
100339
        HASH_ELEMENT_LN,
 
100340
        HASH_ATTRIBUTE_HREF,
 
100341
        attributeValue))
 
100342
{
 
100343
    return false;
 
100344
}
 
100345
if ( !failed )
 
100346
    attributeData->present_attributes |= ln__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
100347
 
 
100348
    break;
 
100349
    }
 
100350
    default:
 
100351
    {
 
100352
        if ( !attributeData->unknownAttributes.data )
 
100353
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
100354
        else
 
100355
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
100356
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
100357
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
100358
        attributeData->unknownAttributes.size += 2;
 
100359
 
 
100360
    }
 
100361
    }
 
100362
    }
 
100363
}
 
100364
if ((attributeData->present_attributes & ln__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
100365
{
 
100366
    attributeData->definitionURL = COLLADABU::URI("");
 
100367
}
 
100368
if ((attributeData->present_attributes & ln__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
100369
{
 
100370
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
100371
}
 
100372
if ((attributeData->present_attributes & ln__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
100373
{
 
100374
    attributeData->href = COLLADABU::URI("");
 
100375
}
 
100376
 
 
100377
 
 
100378
    return true;
 
100379
}
 
100380
 
 
100381
//---------------------------------------------------------------------
 
100382
bool ColladaParserAutoGen15Private::_preEnd__ln()
 
100383
{
 
100384
#ifdef GENERATEDSAXPARSER_VALIDATION
 
100385
    if ( mValidate )
 
100386
    {
 
100387
 
 
100388
        bool validationResult = _validateEnd__ln();
 
100389
        if ( !validationResult ) return false;
 
100390
 
 
100391
    } // validation
 
100392
#endif
 
100393
 
 
100394
    return true;
 
100395
}
 
100396
 
 
100397
//---------------------------------------------------------------------
 
100398
bool ColladaParserAutoGen15Private::_freeAttributes__ln( void* attributeData )
 
100399
{
 
100400
    ln__AttributeData* typedAttributeData = static_cast<ln__AttributeData*>(attributeData);
 
100401
    if (typedAttributeData->_class.data)
 
100402
    {
 
100403
        mStackMemoryManager.deleteObject();
 
100404
    }
 
100405
 
 
100406
    if (typedAttributeData->unknownAttributes.data)
 
100407
    {
 
100408
        mStackMemoryManager.deleteObject();
 
100409
    }
 
100410
 
 
100411
 
 
100412
    typedAttributeData->~ln__AttributeData();
 
100413
 
 
100414
    return true;
 
100415
}
 
100416
 
 
100417
//---------------------------------------------------------------------
 
100418
const log__AttributeData log__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
100419
 
 
100420
//---------------------------------------------------------------------
 
100421
bool ColladaParserAutoGen15Private::_data__log( const ParserChar* text, size_t textLength )
 
100422
{
 
100423
    return true;
 
100424
}
 
100425
 
 
100426
//---------------------------------------------------------------------
 
100427
bool ColladaParserAutoGen15Private::_preBegin__log( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
100428
{
 
100429
#ifdef GENERATEDSAXPARSER_VALIDATION
 
100430
    if ( mValidate )
 
100431
    {
 
100432
 
 
100433
        bool validationResult = _validateBegin__log( attributes, attributeDataPtr, validationDataPtr );
 
100434
        if ( !validationResult ) return false;
 
100435
 
 
100436
    } // validation
 
100437
#endif
 
100438
 
 
100439
log__AttributeData* attributeData = newData<log__AttributeData>(attributeDataPtr);
 
100440
 
 
100441
const ParserChar** attributeArray = attributes.attributes;
 
100442
if ( attributeArray )
 
100443
{
 
100444
    while (true)
 
100445
    {
 
100446
        const ParserChar * attribute = *attributeArray;
 
100447
        if ( !attribute )
 
100448
            break;
 
100449
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
100450
        attributeArray++;
 
100451
        if ( !attributeArray )
 
100452
            return false;
 
100453
        const ParserChar* attributeValue = *attributeArray;
 
100454
        attributeArray++;
 
100455
 
 
100456
 
 
100457
    switch ( hash )
 
100458
    {
 
100459
    case HASH_ATTRIBUTE_ENCODING:
 
100460
    {
 
100461
 
 
100462
attributeData->encoding = attributeValue;
 
100463
 
 
100464
    break;
 
100465
    }
 
100466
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
100467
    {
 
100468
bool failed;
 
100469
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
100470
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
100471
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
100472
        HASH_ELEMENT_LOG,
 
100473
        HASH_ATTRIBUTE_DEFINITIONURL,
 
100474
        attributeValue))
 
100475
{
 
100476
    return false;
 
100477
}
 
100478
if ( !failed )
 
100479
    attributeData->present_attributes |= log__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
100480
 
 
100481
    break;
 
100482
    }
 
100483
    case HASH_ATTRIBUTE_CLASS:
 
100484
    {
 
100485
bool failed;
 
100486
#ifdef GENERATEDSAXPARSER_VALIDATION
 
100487
    if ( mValidate )
 
100488
    {
 
100489
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_LOG, HASH_ATTRIBUTE_CLASS);
 
100490
    }
 
100491
    else
 
100492
    {
 
100493
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
100494
    }
 
100495
#else
 
100496
    {
 
100497
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
100498
    } // validation
 
100499
#endif
 
100500
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
100501
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
100502
        HASH_ELEMENT_LOG,
 
100503
        HASH_ATTRIBUTE_CLASS,
 
100504
        attributeValue))
 
100505
{
 
100506
    return false;
 
100507
}
 
100508
#ifdef GENERATEDSAXPARSER_VALIDATION
 
100509
    if ( mValidate )
 
100510
    {
 
100511
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
100512
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
100513
    {
 
100514
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
100515
            simpleTypeValidationResult,
 
100516
            HASH_ELEMENT_LOG,
 
100517
            HASH_ATTRIBUTE_CLASS,
 
100518
            attributeValue) )
 
100519
        {
 
100520
            return false;
 
100521
        }
 
100522
    }
 
100523
    } // validation
 
100524
#endif
 
100525
 
 
100526
if ( !failed )
 
100527
    attributeData->present_attributes |= log__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
100528
 
 
100529
    break;
 
100530
    }
 
100531
    case HASH_ATTRIBUTE_STYLE:
 
100532
    {
 
100533
 
 
100534
attributeData->style = attributeValue;
 
100535
 
 
100536
    break;
 
100537
    }
 
100538
    case HASH_ATTRIBUTE_XREF:
 
100539
    {
 
100540
 
 
100541
attributeData->xref = attributeValue;
 
100542
 
 
100543
    break;
 
100544
    }
 
100545
    case HASH_ATTRIBUTE_ID:
 
100546
    {
 
100547
 
 
100548
attributeData->id = attributeValue;
 
100549
 
 
100550
    break;
 
100551
    }
 
100552
    case HASH_ATTRIBUTE_HREF:
 
100553
    {
 
100554
bool failed;
 
100555
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
100556
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
100557
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
100558
        HASH_ELEMENT_LOG,
 
100559
        HASH_ATTRIBUTE_HREF,
 
100560
        attributeValue))
 
100561
{
 
100562
    return false;
 
100563
}
 
100564
if ( !failed )
 
100565
    attributeData->present_attributes |= log__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
100566
 
 
100567
    break;
 
100568
    }
 
100569
    default:
 
100570
    {
 
100571
        if ( !attributeData->unknownAttributes.data )
 
100572
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
100573
        else
 
100574
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
100575
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
100576
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
100577
        attributeData->unknownAttributes.size += 2;
 
100578
 
 
100579
    }
 
100580
    }
 
100581
    }
 
100582
}
 
100583
if ((attributeData->present_attributes & log__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
100584
{
 
100585
    attributeData->definitionURL = COLLADABU::URI("");
 
100586
}
 
100587
if ((attributeData->present_attributes & log__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
100588
{
 
100589
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
100590
}
 
100591
if ((attributeData->present_attributes & log__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
100592
{
 
100593
    attributeData->href = COLLADABU::URI("");
 
100594
}
 
100595
 
 
100596
 
 
100597
    return true;
 
100598
}
 
100599
 
 
100600
//---------------------------------------------------------------------
 
100601
bool ColladaParserAutoGen15Private::_preEnd__log()
 
100602
{
 
100603
#ifdef GENERATEDSAXPARSER_VALIDATION
 
100604
    if ( mValidate )
 
100605
    {
 
100606
 
 
100607
        bool validationResult = _validateEnd__log();
 
100608
        if ( !validationResult ) return false;
 
100609
 
 
100610
    } // validation
 
100611
#endif
 
100612
 
 
100613
    return true;
 
100614
}
 
100615
 
 
100616
//---------------------------------------------------------------------
 
100617
bool ColladaParserAutoGen15Private::_freeAttributes__log( void* attributeData )
 
100618
{
 
100619
    log__AttributeData* typedAttributeData = static_cast<log__AttributeData*>(attributeData);
 
100620
    if (typedAttributeData->_class.data)
 
100621
    {
 
100622
        mStackMemoryManager.deleteObject();
 
100623
    }
 
100624
 
 
100625
    if (typedAttributeData->unknownAttributes.data)
 
100626
    {
 
100627
        mStackMemoryManager.deleteObject();
 
100628
    }
 
100629
 
 
100630
 
 
100631
    typedAttributeData->~log__AttributeData();
 
100632
 
 
100633
    return true;
 
100634
}
 
100635
 
 
100636
//---------------------------------------------------------------------
 
100637
const logbase__AttributeData logbase__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
100638
 
 
100639
//---------------------------------------------------------------------
 
100640
bool ColladaParserAutoGen15Private::_data__logbase( const ParserChar* text, size_t textLength )
 
100641
{
 
100642
    return true;
 
100643
}
 
100644
 
 
100645
//---------------------------------------------------------------------
 
100646
bool ColladaParserAutoGen15Private::_preBegin__logbase( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
100647
{
 
100648
#ifdef GENERATEDSAXPARSER_VALIDATION
 
100649
    if ( mValidate )
 
100650
    {
 
100651
 
 
100652
        bool validationResult = _validateBegin__logbase( attributes, attributeDataPtr, validationDataPtr );
 
100653
        if ( !validationResult ) return false;
 
100654
 
 
100655
    } // validation
 
100656
#endif
 
100657
 
 
100658
logbase__AttributeData* attributeData = newData<logbase__AttributeData>(attributeDataPtr);
 
100659
 
 
100660
const ParserChar** attributeArray = attributes.attributes;
 
100661
if ( attributeArray )
 
100662
{
 
100663
    while (true)
 
100664
    {
 
100665
        const ParserChar * attribute = *attributeArray;
 
100666
        if ( !attribute )
 
100667
            break;
 
100668
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
100669
        attributeArray++;
 
100670
        if ( !attributeArray )
 
100671
            return false;
 
100672
        const ParserChar* attributeValue = *attributeArray;
 
100673
        attributeArray++;
 
100674
 
 
100675
 
 
100676
    switch ( hash )
 
100677
    {
 
100678
    case HASH_ATTRIBUTE_CLASS:
 
100679
    {
 
100680
bool failed;
 
100681
#ifdef GENERATEDSAXPARSER_VALIDATION
 
100682
    if ( mValidate )
 
100683
    {
 
100684
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_LOGBASE, HASH_ATTRIBUTE_CLASS);
 
100685
    }
 
100686
    else
 
100687
    {
 
100688
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
100689
    }
 
100690
#else
 
100691
    {
 
100692
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
100693
    } // validation
 
100694
#endif
 
100695
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
100696
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
100697
        HASH_ELEMENT_LOGBASE,
 
100698
        HASH_ATTRIBUTE_CLASS,
 
100699
        attributeValue))
 
100700
{
 
100701
    return false;
 
100702
}
 
100703
#ifdef GENERATEDSAXPARSER_VALIDATION
 
100704
    if ( mValidate )
 
100705
    {
 
100706
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
100707
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
100708
    {
 
100709
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
100710
            simpleTypeValidationResult,
 
100711
            HASH_ELEMENT_LOGBASE,
 
100712
            HASH_ATTRIBUTE_CLASS,
 
100713
            attributeValue) )
 
100714
        {
 
100715
            return false;
 
100716
        }
 
100717
    }
 
100718
    } // validation
 
100719
#endif
 
100720
 
 
100721
if ( !failed )
 
100722
    attributeData->present_attributes |= logbase__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
100723
 
 
100724
    break;
 
100725
    }
 
100726
    case HASH_ATTRIBUTE_STYLE:
 
100727
    {
 
100728
 
 
100729
attributeData->style = attributeValue;
 
100730
 
 
100731
    break;
 
100732
    }
 
100733
    case HASH_ATTRIBUTE_XREF:
 
100734
    {
 
100735
 
 
100736
attributeData->xref = attributeValue;
 
100737
 
 
100738
    break;
 
100739
    }
 
100740
    case HASH_ATTRIBUTE_ID:
 
100741
    {
 
100742
 
 
100743
attributeData->id = attributeValue;
 
100744
 
 
100745
    break;
 
100746
    }
 
100747
    case HASH_ATTRIBUTE_HREF:
 
100748
    {
 
100749
bool failed;
 
100750
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
100751
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
100752
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
100753
        HASH_ELEMENT_LOGBASE,
 
100754
        HASH_ATTRIBUTE_HREF,
 
100755
        attributeValue))
 
100756
{
 
100757
    return false;
 
100758
}
 
100759
if ( !failed )
 
100760
    attributeData->present_attributes |= logbase__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
100761
 
 
100762
    break;
 
100763
    }
 
100764
    default:
 
100765
    {
 
100766
        if ( !attributeData->unknownAttributes.data )
 
100767
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
100768
        else
 
100769
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
100770
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
100771
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
100772
        attributeData->unknownAttributes.size += 2;
 
100773
 
 
100774
    }
 
100775
    }
 
100776
    }
 
100777
}
 
100778
if ((attributeData->present_attributes & logbase__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
100779
{
 
100780
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
100781
}
 
100782
if ((attributeData->present_attributes & logbase__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
100783
{
 
100784
    attributeData->href = COLLADABU::URI("");
 
100785
}
 
100786
 
 
100787
 
 
100788
    return true;
 
100789
}
 
100790
 
 
100791
//---------------------------------------------------------------------
 
100792
bool ColladaParserAutoGen15Private::_preEnd__logbase()
 
100793
{
 
100794
#ifdef GENERATEDSAXPARSER_VALIDATION
 
100795
    if ( mValidate )
 
100796
    {
 
100797
 
 
100798
        bool validationResult = _validateEnd__logbase();
 
100799
        if ( !validationResult ) return false;
 
100800
 
 
100801
    } // validation
 
100802
#endif
 
100803
 
 
100804
    return true;
 
100805
}
 
100806
 
 
100807
//---------------------------------------------------------------------
 
100808
bool ColladaParserAutoGen15Private::_freeAttributes__logbase( void* attributeData )
 
100809
{
 
100810
    logbase__AttributeData* typedAttributeData = static_cast<logbase__AttributeData*>(attributeData);
 
100811
    if (typedAttributeData->_class.data)
 
100812
    {
 
100813
        mStackMemoryManager.deleteObject();
 
100814
    }
 
100815
 
 
100816
    if (typedAttributeData->unknownAttributes.data)
 
100817
    {
 
100818
        mStackMemoryManager.deleteObject();
 
100819
    }
 
100820
 
 
100821
 
 
100822
    typedAttributeData->~logbase__AttributeData();
 
100823
 
 
100824
    return true;
 
100825
}
 
100826
 
 
100827
//---------------------------------------------------------------------
 
100828
const sin__AttributeData sin__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
100829
 
 
100830
//---------------------------------------------------------------------
 
100831
bool ColladaParserAutoGen15Private::_data__sin( const ParserChar* text, size_t textLength )
 
100832
{
 
100833
    return true;
 
100834
}
 
100835
 
 
100836
//---------------------------------------------------------------------
 
100837
bool ColladaParserAutoGen15Private::_preBegin__sin( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
100838
{
 
100839
#ifdef GENERATEDSAXPARSER_VALIDATION
 
100840
    if ( mValidate )
 
100841
    {
 
100842
 
 
100843
        bool validationResult = _validateBegin__sin( attributes, attributeDataPtr, validationDataPtr );
 
100844
        if ( !validationResult ) return false;
 
100845
 
 
100846
    } // validation
 
100847
#endif
 
100848
 
 
100849
sin__AttributeData* attributeData = newData<sin__AttributeData>(attributeDataPtr);
 
100850
 
 
100851
const ParserChar** attributeArray = attributes.attributes;
 
100852
if ( attributeArray )
 
100853
{
 
100854
    while (true)
 
100855
    {
 
100856
        const ParserChar * attribute = *attributeArray;
 
100857
        if ( !attribute )
 
100858
            break;
 
100859
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
100860
        attributeArray++;
 
100861
        if ( !attributeArray )
 
100862
            return false;
 
100863
        const ParserChar* attributeValue = *attributeArray;
 
100864
        attributeArray++;
 
100865
 
 
100866
 
 
100867
    switch ( hash )
 
100868
    {
 
100869
    case HASH_ATTRIBUTE_ENCODING:
 
100870
    {
 
100871
 
 
100872
attributeData->encoding = attributeValue;
 
100873
 
 
100874
    break;
 
100875
    }
 
100876
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
100877
    {
 
100878
bool failed;
 
100879
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
100880
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
100881
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
100882
        HASH_ELEMENT_SIN,
 
100883
        HASH_ATTRIBUTE_DEFINITIONURL,
 
100884
        attributeValue))
 
100885
{
 
100886
    return false;
 
100887
}
 
100888
if ( !failed )
 
100889
    attributeData->present_attributes |= sin__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
100890
 
 
100891
    break;
 
100892
    }
 
100893
    case HASH_ATTRIBUTE_CLASS:
 
100894
    {
 
100895
bool failed;
 
100896
#ifdef GENERATEDSAXPARSER_VALIDATION
 
100897
    if ( mValidate )
 
100898
    {
 
100899
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_SIN, HASH_ATTRIBUTE_CLASS);
 
100900
    }
 
100901
    else
 
100902
    {
 
100903
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
100904
    }
 
100905
#else
 
100906
    {
 
100907
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
100908
    } // validation
 
100909
#endif
 
100910
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
100911
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
100912
        HASH_ELEMENT_SIN,
 
100913
        HASH_ATTRIBUTE_CLASS,
 
100914
        attributeValue))
 
100915
{
 
100916
    return false;
 
100917
}
 
100918
#ifdef GENERATEDSAXPARSER_VALIDATION
 
100919
    if ( mValidate )
 
100920
    {
 
100921
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
100922
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
100923
    {
 
100924
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
100925
            simpleTypeValidationResult,
 
100926
            HASH_ELEMENT_SIN,
 
100927
            HASH_ATTRIBUTE_CLASS,
 
100928
            attributeValue) )
 
100929
        {
 
100930
            return false;
 
100931
        }
 
100932
    }
 
100933
    } // validation
 
100934
#endif
 
100935
 
 
100936
if ( !failed )
 
100937
    attributeData->present_attributes |= sin__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
100938
 
 
100939
    break;
 
100940
    }
 
100941
    case HASH_ATTRIBUTE_STYLE:
 
100942
    {
 
100943
 
 
100944
attributeData->style = attributeValue;
 
100945
 
 
100946
    break;
 
100947
    }
 
100948
    case HASH_ATTRIBUTE_XREF:
 
100949
    {
 
100950
 
 
100951
attributeData->xref = attributeValue;
 
100952
 
 
100953
    break;
 
100954
    }
 
100955
    case HASH_ATTRIBUTE_ID:
 
100956
    {
 
100957
 
 
100958
attributeData->id = attributeValue;
 
100959
 
 
100960
    break;
 
100961
    }
 
100962
    case HASH_ATTRIBUTE_HREF:
 
100963
    {
 
100964
bool failed;
 
100965
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
100966
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
100967
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
100968
        HASH_ELEMENT_SIN,
 
100969
        HASH_ATTRIBUTE_HREF,
 
100970
        attributeValue))
 
100971
{
 
100972
    return false;
 
100973
}
 
100974
if ( !failed )
 
100975
    attributeData->present_attributes |= sin__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
100976
 
 
100977
    break;
 
100978
    }
 
100979
    default:
 
100980
    {
 
100981
        if ( !attributeData->unknownAttributes.data )
 
100982
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
100983
        else
 
100984
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
100985
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
100986
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
100987
        attributeData->unknownAttributes.size += 2;
 
100988
 
 
100989
    }
 
100990
    }
 
100991
    }
 
100992
}
 
100993
if ((attributeData->present_attributes & sin__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
100994
{
 
100995
    attributeData->definitionURL = COLLADABU::URI("");
 
100996
}
 
100997
if ((attributeData->present_attributes & sin__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
100998
{
 
100999
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
101000
}
 
101001
if ((attributeData->present_attributes & sin__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
101002
{
 
101003
    attributeData->href = COLLADABU::URI("");
 
101004
}
 
101005
 
 
101006
 
 
101007
    return true;
 
101008
}
 
101009
 
 
101010
//---------------------------------------------------------------------
 
101011
bool ColladaParserAutoGen15Private::_preEnd__sin()
 
101012
{
 
101013
#ifdef GENERATEDSAXPARSER_VALIDATION
 
101014
    if ( mValidate )
 
101015
    {
 
101016
 
 
101017
        bool validationResult = _validateEnd__sin();
 
101018
        if ( !validationResult ) return false;
 
101019
 
 
101020
    } // validation
 
101021
#endif
 
101022
 
 
101023
    return true;
 
101024
}
 
101025
 
 
101026
//---------------------------------------------------------------------
 
101027
bool ColladaParserAutoGen15Private::_freeAttributes__sin( void* attributeData )
 
101028
{
 
101029
    sin__AttributeData* typedAttributeData = static_cast<sin__AttributeData*>(attributeData);
 
101030
    if (typedAttributeData->_class.data)
 
101031
    {
 
101032
        mStackMemoryManager.deleteObject();
 
101033
    }
 
101034
 
 
101035
    if (typedAttributeData->unknownAttributes.data)
 
101036
    {
 
101037
        mStackMemoryManager.deleteObject();
 
101038
    }
 
101039
 
 
101040
 
 
101041
    typedAttributeData->~sin__AttributeData();
 
101042
 
 
101043
    return true;
 
101044
}
 
101045
 
 
101046
//---------------------------------------------------------------------
 
101047
const cos__AttributeData cos__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
101048
 
 
101049
//---------------------------------------------------------------------
 
101050
bool ColladaParserAutoGen15Private::_data__cos( const ParserChar* text, size_t textLength )
 
101051
{
 
101052
    return true;
 
101053
}
 
101054
 
 
101055
//---------------------------------------------------------------------
 
101056
bool ColladaParserAutoGen15Private::_preBegin__cos( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
101057
{
 
101058
#ifdef GENERATEDSAXPARSER_VALIDATION
 
101059
    if ( mValidate )
 
101060
    {
 
101061
 
 
101062
        bool validationResult = _validateBegin__cos( attributes, attributeDataPtr, validationDataPtr );
 
101063
        if ( !validationResult ) return false;
 
101064
 
 
101065
    } // validation
 
101066
#endif
 
101067
 
 
101068
cos__AttributeData* attributeData = newData<cos__AttributeData>(attributeDataPtr);
 
101069
 
 
101070
const ParserChar** attributeArray = attributes.attributes;
 
101071
if ( attributeArray )
 
101072
{
 
101073
    while (true)
 
101074
    {
 
101075
        const ParserChar * attribute = *attributeArray;
 
101076
        if ( !attribute )
 
101077
            break;
 
101078
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
101079
        attributeArray++;
 
101080
        if ( !attributeArray )
 
101081
            return false;
 
101082
        const ParserChar* attributeValue = *attributeArray;
 
101083
        attributeArray++;
 
101084
 
 
101085
 
 
101086
    switch ( hash )
 
101087
    {
 
101088
    case HASH_ATTRIBUTE_ENCODING:
 
101089
    {
 
101090
 
 
101091
attributeData->encoding = attributeValue;
 
101092
 
 
101093
    break;
 
101094
    }
 
101095
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
101096
    {
 
101097
bool failed;
 
101098
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
101099
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
101100
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
101101
        HASH_ELEMENT_COS,
 
101102
        HASH_ATTRIBUTE_DEFINITIONURL,
 
101103
        attributeValue))
 
101104
{
 
101105
    return false;
 
101106
}
 
101107
if ( !failed )
 
101108
    attributeData->present_attributes |= cos__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
101109
 
 
101110
    break;
 
101111
    }
 
101112
    case HASH_ATTRIBUTE_CLASS:
 
101113
    {
 
101114
bool failed;
 
101115
#ifdef GENERATEDSAXPARSER_VALIDATION
 
101116
    if ( mValidate )
 
101117
    {
 
101118
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_COS, HASH_ATTRIBUTE_CLASS);
 
101119
    }
 
101120
    else
 
101121
    {
 
101122
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
101123
    }
 
101124
#else
 
101125
    {
 
101126
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
101127
    } // validation
 
101128
#endif
 
101129
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
101130
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
101131
        HASH_ELEMENT_COS,
 
101132
        HASH_ATTRIBUTE_CLASS,
 
101133
        attributeValue))
 
101134
{
 
101135
    return false;
 
101136
}
 
101137
#ifdef GENERATEDSAXPARSER_VALIDATION
 
101138
    if ( mValidate )
 
101139
    {
 
101140
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
101141
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
101142
    {
 
101143
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
101144
            simpleTypeValidationResult,
 
101145
            HASH_ELEMENT_COS,
 
101146
            HASH_ATTRIBUTE_CLASS,
 
101147
            attributeValue) )
 
101148
        {
 
101149
            return false;
 
101150
        }
 
101151
    }
 
101152
    } // validation
 
101153
#endif
 
101154
 
 
101155
if ( !failed )
 
101156
    attributeData->present_attributes |= cos__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
101157
 
 
101158
    break;
 
101159
    }
 
101160
    case HASH_ATTRIBUTE_STYLE:
 
101161
    {
 
101162
 
 
101163
attributeData->style = attributeValue;
 
101164
 
 
101165
    break;
 
101166
    }
 
101167
    case HASH_ATTRIBUTE_XREF:
 
101168
    {
 
101169
 
 
101170
attributeData->xref = attributeValue;
 
101171
 
 
101172
    break;
 
101173
    }
 
101174
    case HASH_ATTRIBUTE_ID:
 
101175
    {
 
101176
 
 
101177
attributeData->id = attributeValue;
 
101178
 
 
101179
    break;
 
101180
    }
 
101181
    case HASH_ATTRIBUTE_HREF:
 
101182
    {
 
101183
bool failed;
 
101184
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
101185
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
101186
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
101187
        HASH_ELEMENT_COS,
 
101188
        HASH_ATTRIBUTE_HREF,
 
101189
        attributeValue))
 
101190
{
 
101191
    return false;
 
101192
}
 
101193
if ( !failed )
 
101194
    attributeData->present_attributes |= cos__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
101195
 
 
101196
    break;
 
101197
    }
 
101198
    default:
 
101199
    {
 
101200
        if ( !attributeData->unknownAttributes.data )
 
101201
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
101202
        else
 
101203
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
101204
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
101205
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
101206
        attributeData->unknownAttributes.size += 2;
 
101207
 
 
101208
    }
 
101209
    }
 
101210
    }
 
101211
}
 
101212
if ((attributeData->present_attributes & cos__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
101213
{
 
101214
    attributeData->definitionURL = COLLADABU::URI("");
 
101215
}
 
101216
if ((attributeData->present_attributes & cos__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
101217
{
 
101218
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
101219
}
 
101220
if ((attributeData->present_attributes & cos__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
101221
{
 
101222
    attributeData->href = COLLADABU::URI("");
 
101223
}
 
101224
 
 
101225
 
 
101226
    return true;
 
101227
}
 
101228
 
 
101229
//---------------------------------------------------------------------
 
101230
bool ColladaParserAutoGen15Private::_preEnd__cos()
 
101231
{
 
101232
#ifdef GENERATEDSAXPARSER_VALIDATION
 
101233
    if ( mValidate )
 
101234
    {
 
101235
 
 
101236
        bool validationResult = _validateEnd__cos();
 
101237
        if ( !validationResult ) return false;
 
101238
 
 
101239
    } // validation
 
101240
#endif
 
101241
 
 
101242
    return true;
 
101243
}
 
101244
 
 
101245
//---------------------------------------------------------------------
 
101246
bool ColladaParserAutoGen15Private::_freeAttributes__cos( void* attributeData )
 
101247
{
 
101248
    cos__AttributeData* typedAttributeData = static_cast<cos__AttributeData*>(attributeData);
 
101249
    if (typedAttributeData->_class.data)
 
101250
    {
 
101251
        mStackMemoryManager.deleteObject();
 
101252
    }
 
101253
 
 
101254
    if (typedAttributeData->unknownAttributes.data)
 
101255
    {
 
101256
        mStackMemoryManager.deleteObject();
 
101257
    }
 
101258
 
 
101259
 
 
101260
    typedAttributeData->~cos__AttributeData();
 
101261
 
 
101262
    return true;
 
101263
}
 
101264
 
 
101265
//---------------------------------------------------------------------
 
101266
const tan__AttributeData tan__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
101267
 
 
101268
//---------------------------------------------------------------------
 
101269
bool ColladaParserAutoGen15Private::_data__tan( const ParserChar* text, size_t textLength )
 
101270
{
 
101271
    return true;
 
101272
}
 
101273
 
 
101274
//---------------------------------------------------------------------
 
101275
bool ColladaParserAutoGen15Private::_preBegin__tan( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
101276
{
 
101277
#ifdef GENERATEDSAXPARSER_VALIDATION
 
101278
    if ( mValidate )
 
101279
    {
 
101280
 
 
101281
        bool validationResult = _validateBegin__tan( attributes, attributeDataPtr, validationDataPtr );
 
101282
        if ( !validationResult ) return false;
 
101283
 
 
101284
    } // validation
 
101285
#endif
 
101286
 
 
101287
tan__AttributeData* attributeData = newData<tan__AttributeData>(attributeDataPtr);
 
101288
 
 
101289
const ParserChar** attributeArray = attributes.attributes;
 
101290
if ( attributeArray )
 
101291
{
 
101292
    while (true)
 
101293
    {
 
101294
        const ParserChar * attribute = *attributeArray;
 
101295
        if ( !attribute )
 
101296
            break;
 
101297
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
101298
        attributeArray++;
 
101299
        if ( !attributeArray )
 
101300
            return false;
 
101301
        const ParserChar* attributeValue = *attributeArray;
 
101302
        attributeArray++;
 
101303
 
 
101304
 
 
101305
    switch ( hash )
 
101306
    {
 
101307
    case HASH_ATTRIBUTE_ENCODING:
 
101308
    {
 
101309
 
 
101310
attributeData->encoding = attributeValue;
 
101311
 
 
101312
    break;
 
101313
    }
 
101314
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
101315
    {
 
101316
bool failed;
 
101317
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
101318
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
101319
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
101320
        HASH_ELEMENT_TAN,
 
101321
        HASH_ATTRIBUTE_DEFINITIONURL,
 
101322
        attributeValue))
 
101323
{
 
101324
    return false;
 
101325
}
 
101326
if ( !failed )
 
101327
    attributeData->present_attributes |= tan__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
101328
 
 
101329
    break;
 
101330
    }
 
101331
    case HASH_ATTRIBUTE_CLASS:
 
101332
    {
 
101333
bool failed;
 
101334
#ifdef GENERATEDSAXPARSER_VALIDATION
 
101335
    if ( mValidate )
 
101336
    {
 
101337
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_TAN, HASH_ATTRIBUTE_CLASS);
 
101338
    }
 
101339
    else
 
101340
    {
 
101341
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
101342
    }
 
101343
#else
 
101344
    {
 
101345
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
101346
    } // validation
 
101347
#endif
 
101348
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
101349
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
101350
        HASH_ELEMENT_TAN,
 
101351
        HASH_ATTRIBUTE_CLASS,
 
101352
        attributeValue))
 
101353
{
 
101354
    return false;
 
101355
}
 
101356
#ifdef GENERATEDSAXPARSER_VALIDATION
 
101357
    if ( mValidate )
 
101358
    {
 
101359
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
101360
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
101361
    {
 
101362
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
101363
            simpleTypeValidationResult,
 
101364
            HASH_ELEMENT_TAN,
 
101365
            HASH_ATTRIBUTE_CLASS,
 
101366
            attributeValue) )
 
101367
        {
 
101368
            return false;
 
101369
        }
 
101370
    }
 
101371
    } // validation
 
101372
#endif
 
101373
 
 
101374
if ( !failed )
 
101375
    attributeData->present_attributes |= tan__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
101376
 
 
101377
    break;
 
101378
    }
 
101379
    case HASH_ATTRIBUTE_STYLE:
 
101380
    {
 
101381
 
 
101382
attributeData->style = attributeValue;
 
101383
 
 
101384
    break;
 
101385
    }
 
101386
    case HASH_ATTRIBUTE_XREF:
 
101387
    {
 
101388
 
 
101389
attributeData->xref = attributeValue;
 
101390
 
 
101391
    break;
 
101392
    }
 
101393
    case HASH_ATTRIBUTE_ID:
 
101394
    {
 
101395
 
 
101396
attributeData->id = attributeValue;
 
101397
 
 
101398
    break;
 
101399
    }
 
101400
    case HASH_ATTRIBUTE_HREF:
 
101401
    {
 
101402
bool failed;
 
101403
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
101404
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
101405
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
101406
        HASH_ELEMENT_TAN,
 
101407
        HASH_ATTRIBUTE_HREF,
 
101408
        attributeValue))
 
101409
{
 
101410
    return false;
 
101411
}
 
101412
if ( !failed )
 
101413
    attributeData->present_attributes |= tan__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
101414
 
 
101415
    break;
 
101416
    }
 
101417
    default:
 
101418
    {
 
101419
        if ( !attributeData->unknownAttributes.data )
 
101420
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
101421
        else
 
101422
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
101423
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
101424
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
101425
        attributeData->unknownAttributes.size += 2;
 
101426
 
 
101427
    }
 
101428
    }
 
101429
    }
 
101430
}
 
101431
if ((attributeData->present_attributes & tan__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
101432
{
 
101433
    attributeData->definitionURL = COLLADABU::URI("");
 
101434
}
 
101435
if ((attributeData->present_attributes & tan__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
101436
{
 
101437
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
101438
}
 
101439
if ((attributeData->present_attributes & tan__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
101440
{
 
101441
    attributeData->href = COLLADABU::URI("");
 
101442
}
 
101443
 
 
101444
 
 
101445
    return true;
 
101446
}
 
101447
 
 
101448
//---------------------------------------------------------------------
 
101449
bool ColladaParserAutoGen15Private::_preEnd__tan()
 
101450
{
 
101451
#ifdef GENERATEDSAXPARSER_VALIDATION
 
101452
    if ( mValidate )
 
101453
    {
 
101454
 
 
101455
        bool validationResult = _validateEnd__tan();
 
101456
        if ( !validationResult ) return false;
 
101457
 
 
101458
    } // validation
 
101459
#endif
 
101460
 
 
101461
    return true;
 
101462
}
 
101463
 
 
101464
//---------------------------------------------------------------------
 
101465
bool ColladaParserAutoGen15Private::_freeAttributes__tan( void* attributeData )
 
101466
{
 
101467
    tan__AttributeData* typedAttributeData = static_cast<tan__AttributeData*>(attributeData);
 
101468
    if (typedAttributeData->_class.data)
 
101469
    {
 
101470
        mStackMemoryManager.deleteObject();
 
101471
    }
 
101472
 
 
101473
    if (typedAttributeData->unknownAttributes.data)
 
101474
    {
 
101475
        mStackMemoryManager.deleteObject();
 
101476
    }
 
101477
 
 
101478
 
 
101479
    typedAttributeData->~tan__AttributeData();
 
101480
 
 
101481
    return true;
 
101482
}
 
101483
 
 
101484
//---------------------------------------------------------------------
 
101485
const sec__AttributeData sec__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
101486
 
 
101487
//---------------------------------------------------------------------
 
101488
bool ColladaParserAutoGen15Private::_data__sec( const ParserChar* text, size_t textLength )
 
101489
{
 
101490
    return true;
 
101491
}
 
101492
 
 
101493
//---------------------------------------------------------------------
 
101494
bool ColladaParserAutoGen15Private::_preBegin__sec( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
101495
{
 
101496
#ifdef GENERATEDSAXPARSER_VALIDATION
 
101497
    if ( mValidate )
 
101498
    {
 
101499
 
 
101500
        bool validationResult = _validateBegin__sec( attributes, attributeDataPtr, validationDataPtr );
 
101501
        if ( !validationResult ) return false;
 
101502
 
 
101503
    } // validation
 
101504
#endif
 
101505
 
 
101506
sec__AttributeData* attributeData = newData<sec__AttributeData>(attributeDataPtr);
 
101507
 
 
101508
const ParserChar** attributeArray = attributes.attributes;
 
101509
if ( attributeArray )
 
101510
{
 
101511
    while (true)
 
101512
    {
 
101513
        const ParserChar * attribute = *attributeArray;
 
101514
        if ( !attribute )
 
101515
            break;
 
101516
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
101517
        attributeArray++;
 
101518
        if ( !attributeArray )
 
101519
            return false;
 
101520
        const ParserChar* attributeValue = *attributeArray;
 
101521
        attributeArray++;
 
101522
 
 
101523
 
 
101524
    switch ( hash )
 
101525
    {
 
101526
    case HASH_ATTRIBUTE_ENCODING:
 
101527
    {
 
101528
 
 
101529
attributeData->encoding = attributeValue;
 
101530
 
 
101531
    break;
 
101532
    }
 
101533
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
101534
    {
 
101535
bool failed;
 
101536
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
101537
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
101538
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
101539
        HASH_ELEMENT_SEC,
 
101540
        HASH_ATTRIBUTE_DEFINITIONURL,
 
101541
        attributeValue))
 
101542
{
 
101543
    return false;
 
101544
}
 
101545
if ( !failed )
 
101546
    attributeData->present_attributes |= sec__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
101547
 
 
101548
    break;
 
101549
    }
 
101550
    case HASH_ATTRIBUTE_CLASS:
 
101551
    {
 
101552
bool failed;
 
101553
#ifdef GENERATEDSAXPARSER_VALIDATION
 
101554
    if ( mValidate )
 
101555
    {
 
101556
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_SEC, HASH_ATTRIBUTE_CLASS);
 
101557
    }
 
101558
    else
 
101559
    {
 
101560
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
101561
    }
 
101562
#else
 
101563
    {
 
101564
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
101565
    } // validation
 
101566
#endif
 
101567
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
101568
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
101569
        HASH_ELEMENT_SEC,
 
101570
        HASH_ATTRIBUTE_CLASS,
 
101571
        attributeValue))
 
101572
{
 
101573
    return false;
 
101574
}
 
101575
#ifdef GENERATEDSAXPARSER_VALIDATION
 
101576
    if ( mValidate )
 
101577
    {
 
101578
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
101579
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
101580
    {
 
101581
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
101582
            simpleTypeValidationResult,
 
101583
            HASH_ELEMENT_SEC,
 
101584
            HASH_ATTRIBUTE_CLASS,
 
101585
            attributeValue) )
 
101586
        {
 
101587
            return false;
 
101588
        }
 
101589
    }
 
101590
    } // validation
 
101591
#endif
 
101592
 
 
101593
if ( !failed )
 
101594
    attributeData->present_attributes |= sec__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
101595
 
 
101596
    break;
 
101597
    }
 
101598
    case HASH_ATTRIBUTE_STYLE:
 
101599
    {
 
101600
 
 
101601
attributeData->style = attributeValue;
 
101602
 
 
101603
    break;
 
101604
    }
 
101605
    case HASH_ATTRIBUTE_XREF:
 
101606
    {
 
101607
 
 
101608
attributeData->xref = attributeValue;
 
101609
 
 
101610
    break;
 
101611
    }
 
101612
    case HASH_ATTRIBUTE_ID:
 
101613
    {
 
101614
 
 
101615
attributeData->id = attributeValue;
 
101616
 
 
101617
    break;
 
101618
    }
 
101619
    case HASH_ATTRIBUTE_HREF:
 
101620
    {
 
101621
bool failed;
 
101622
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
101623
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
101624
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
101625
        HASH_ELEMENT_SEC,
 
101626
        HASH_ATTRIBUTE_HREF,
 
101627
        attributeValue))
 
101628
{
 
101629
    return false;
 
101630
}
 
101631
if ( !failed )
 
101632
    attributeData->present_attributes |= sec__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
101633
 
 
101634
    break;
 
101635
    }
 
101636
    default:
 
101637
    {
 
101638
        if ( !attributeData->unknownAttributes.data )
 
101639
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
101640
        else
 
101641
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
101642
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
101643
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
101644
        attributeData->unknownAttributes.size += 2;
 
101645
 
 
101646
    }
 
101647
    }
 
101648
    }
 
101649
}
 
101650
if ((attributeData->present_attributes & sec__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
101651
{
 
101652
    attributeData->definitionURL = COLLADABU::URI("");
 
101653
}
 
101654
if ((attributeData->present_attributes & sec__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
101655
{
 
101656
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
101657
}
 
101658
if ((attributeData->present_attributes & sec__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
101659
{
 
101660
    attributeData->href = COLLADABU::URI("");
 
101661
}
 
101662
 
 
101663
 
 
101664
    return true;
 
101665
}
 
101666
 
 
101667
//---------------------------------------------------------------------
 
101668
bool ColladaParserAutoGen15Private::_preEnd__sec()
 
101669
{
 
101670
#ifdef GENERATEDSAXPARSER_VALIDATION
 
101671
    if ( mValidate )
 
101672
    {
 
101673
 
 
101674
        bool validationResult = _validateEnd__sec();
 
101675
        if ( !validationResult ) return false;
 
101676
 
 
101677
    } // validation
 
101678
#endif
 
101679
 
 
101680
    return true;
 
101681
}
 
101682
 
 
101683
//---------------------------------------------------------------------
 
101684
bool ColladaParserAutoGen15Private::_freeAttributes__sec( void* attributeData )
 
101685
{
 
101686
    sec__AttributeData* typedAttributeData = static_cast<sec__AttributeData*>(attributeData);
 
101687
    if (typedAttributeData->_class.data)
 
101688
    {
 
101689
        mStackMemoryManager.deleteObject();
 
101690
    }
 
101691
 
 
101692
    if (typedAttributeData->unknownAttributes.data)
 
101693
    {
 
101694
        mStackMemoryManager.deleteObject();
 
101695
    }
 
101696
 
 
101697
 
 
101698
    typedAttributeData->~sec__AttributeData();
 
101699
 
 
101700
    return true;
 
101701
}
 
101702
 
 
101703
//---------------------------------------------------------------------
 
101704
const csc__AttributeData csc__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
101705
 
 
101706
//---------------------------------------------------------------------
 
101707
bool ColladaParserAutoGen15Private::_data__csc( const ParserChar* text, size_t textLength )
 
101708
{
 
101709
    return true;
 
101710
}
 
101711
 
 
101712
//---------------------------------------------------------------------
 
101713
bool ColladaParserAutoGen15Private::_preBegin__csc( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
101714
{
 
101715
#ifdef GENERATEDSAXPARSER_VALIDATION
 
101716
    if ( mValidate )
 
101717
    {
 
101718
 
 
101719
        bool validationResult = _validateBegin__csc( attributes, attributeDataPtr, validationDataPtr );
 
101720
        if ( !validationResult ) return false;
 
101721
 
 
101722
    } // validation
 
101723
#endif
 
101724
 
 
101725
csc__AttributeData* attributeData = newData<csc__AttributeData>(attributeDataPtr);
 
101726
 
 
101727
const ParserChar** attributeArray = attributes.attributes;
 
101728
if ( attributeArray )
 
101729
{
 
101730
    while (true)
 
101731
    {
 
101732
        const ParserChar * attribute = *attributeArray;
 
101733
        if ( !attribute )
 
101734
            break;
 
101735
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
101736
        attributeArray++;
 
101737
        if ( !attributeArray )
 
101738
            return false;
 
101739
        const ParserChar* attributeValue = *attributeArray;
 
101740
        attributeArray++;
 
101741
 
 
101742
 
 
101743
    switch ( hash )
 
101744
    {
 
101745
    case HASH_ATTRIBUTE_ENCODING:
 
101746
    {
 
101747
 
 
101748
attributeData->encoding = attributeValue;
 
101749
 
 
101750
    break;
 
101751
    }
 
101752
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
101753
    {
 
101754
bool failed;
 
101755
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
101756
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
101757
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
101758
        HASH_ELEMENT_CSC,
 
101759
        HASH_ATTRIBUTE_DEFINITIONURL,
 
101760
        attributeValue))
 
101761
{
 
101762
    return false;
 
101763
}
 
101764
if ( !failed )
 
101765
    attributeData->present_attributes |= csc__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
101766
 
 
101767
    break;
 
101768
    }
 
101769
    case HASH_ATTRIBUTE_CLASS:
 
101770
    {
 
101771
bool failed;
 
101772
#ifdef GENERATEDSAXPARSER_VALIDATION
 
101773
    if ( mValidate )
 
101774
    {
 
101775
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_CSC, HASH_ATTRIBUTE_CLASS);
 
101776
    }
 
101777
    else
 
101778
    {
 
101779
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
101780
    }
 
101781
#else
 
101782
    {
 
101783
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
101784
    } // validation
 
101785
#endif
 
101786
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
101787
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
101788
        HASH_ELEMENT_CSC,
 
101789
        HASH_ATTRIBUTE_CLASS,
 
101790
        attributeValue))
 
101791
{
 
101792
    return false;
 
101793
}
 
101794
#ifdef GENERATEDSAXPARSER_VALIDATION
 
101795
    if ( mValidate )
 
101796
    {
 
101797
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
101798
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
101799
    {
 
101800
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
101801
            simpleTypeValidationResult,
 
101802
            HASH_ELEMENT_CSC,
 
101803
            HASH_ATTRIBUTE_CLASS,
 
101804
            attributeValue) )
 
101805
        {
 
101806
            return false;
 
101807
        }
 
101808
    }
 
101809
    } // validation
 
101810
#endif
 
101811
 
 
101812
if ( !failed )
 
101813
    attributeData->present_attributes |= csc__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
101814
 
 
101815
    break;
 
101816
    }
 
101817
    case HASH_ATTRIBUTE_STYLE:
 
101818
    {
 
101819
 
 
101820
attributeData->style = attributeValue;
 
101821
 
 
101822
    break;
 
101823
    }
 
101824
    case HASH_ATTRIBUTE_XREF:
 
101825
    {
 
101826
 
 
101827
attributeData->xref = attributeValue;
 
101828
 
 
101829
    break;
 
101830
    }
 
101831
    case HASH_ATTRIBUTE_ID:
 
101832
    {
 
101833
 
 
101834
attributeData->id = attributeValue;
 
101835
 
 
101836
    break;
 
101837
    }
 
101838
    case HASH_ATTRIBUTE_HREF:
 
101839
    {
 
101840
bool failed;
 
101841
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
101842
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
101843
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
101844
        HASH_ELEMENT_CSC,
 
101845
        HASH_ATTRIBUTE_HREF,
 
101846
        attributeValue))
 
101847
{
 
101848
    return false;
 
101849
}
 
101850
if ( !failed )
 
101851
    attributeData->present_attributes |= csc__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
101852
 
 
101853
    break;
 
101854
    }
 
101855
    default:
 
101856
    {
 
101857
        if ( !attributeData->unknownAttributes.data )
 
101858
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
101859
        else
 
101860
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
101861
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
101862
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
101863
        attributeData->unknownAttributes.size += 2;
 
101864
 
 
101865
    }
 
101866
    }
 
101867
    }
 
101868
}
 
101869
if ((attributeData->present_attributes & csc__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
101870
{
 
101871
    attributeData->definitionURL = COLLADABU::URI("");
 
101872
}
 
101873
if ((attributeData->present_attributes & csc__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
101874
{
 
101875
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
101876
}
 
101877
if ((attributeData->present_attributes & csc__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
101878
{
 
101879
    attributeData->href = COLLADABU::URI("");
 
101880
}
 
101881
 
 
101882
 
 
101883
    return true;
 
101884
}
 
101885
 
 
101886
//---------------------------------------------------------------------
 
101887
bool ColladaParserAutoGen15Private::_preEnd__csc()
 
101888
{
 
101889
#ifdef GENERATEDSAXPARSER_VALIDATION
 
101890
    if ( mValidate )
 
101891
    {
 
101892
 
 
101893
        bool validationResult = _validateEnd__csc();
 
101894
        if ( !validationResult ) return false;
 
101895
 
 
101896
    } // validation
 
101897
#endif
 
101898
 
 
101899
    return true;
 
101900
}
 
101901
 
 
101902
//---------------------------------------------------------------------
 
101903
bool ColladaParserAutoGen15Private::_freeAttributes__csc( void* attributeData )
 
101904
{
 
101905
    csc__AttributeData* typedAttributeData = static_cast<csc__AttributeData*>(attributeData);
 
101906
    if (typedAttributeData->_class.data)
 
101907
    {
 
101908
        mStackMemoryManager.deleteObject();
 
101909
    }
 
101910
 
 
101911
    if (typedAttributeData->unknownAttributes.data)
 
101912
    {
 
101913
        mStackMemoryManager.deleteObject();
 
101914
    }
 
101915
 
 
101916
 
 
101917
    typedAttributeData->~csc__AttributeData();
 
101918
 
 
101919
    return true;
 
101920
}
 
101921
 
 
101922
//---------------------------------------------------------------------
 
101923
const cot__AttributeData cot__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
101924
 
 
101925
//---------------------------------------------------------------------
 
101926
bool ColladaParserAutoGen15Private::_data__cot( const ParserChar* text, size_t textLength )
 
101927
{
 
101928
    return true;
 
101929
}
 
101930
 
 
101931
//---------------------------------------------------------------------
 
101932
bool ColladaParserAutoGen15Private::_preBegin__cot( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
101933
{
 
101934
#ifdef GENERATEDSAXPARSER_VALIDATION
 
101935
    if ( mValidate )
 
101936
    {
 
101937
 
 
101938
        bool validationResult = _validateBegin__cot( attributes, attributeDataPtr, validationDataPtr );
 
101939
        if ( !validationResult ) return false;
 
101940
 
 
101941
    } // validation
 
101942
#endif
 
101943
 
 
101944
cot__AttributeData* attributeData = newData<cot__AttributeData>(attributeDataPtr);
 
101945
 
 
101946
const ParserChar** attributeArray = attributes.attributes;
 
101947
if ( attributeArray )
 
101948
{
 
101949
    while (true)
 
101950
    {
 
101951
        const ParserChar * attribute = *attributeArray;
 
101952
        if ( !attribute )
 
101953
            break;
 
101954
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
101955
        attributeArray++;
 
101956
        if ( !attributeArray )
 
101957
            return false;
 
101958
        const ParserChar* attributeValue = *attributeArray;
 
101959
        attributeArray++;
 
101960
 
 
101961
 
 
101962
    switch ( hash )
 
101963
    {
 
101964
    case HASH_ATTRIBUTE_ENCODING:
 
101965
    {
 
101966
 
 
101967
attributeData->encoding = attributeValue;
 
101968
 
 
101969
    break;
 
101970
    }
 
101971
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
101972
    {
 
101973
bool failed;
 
101974
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
101975
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
101976
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
101977
        HASH_ELEMENT_COT,
 
101978
        HASH_ATTRIBUTE_DEFINITIONURL,
 
101979
        attributeValue))
 
101980
{
 
101981
    return false;
 
101982
}
 
101983
if ( !failed )
 
101984
    attributeData->present_attributes |= cot__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
101985
 
 
101986
    break;
 
101987
    }
 
101988
    case HASH_ATTRIBUTE_CLASS:
 
101989
    {
 
101990
bool failed;
 
101991
#ifdef GENERATEDSAXPARSER_VALIDATION
 
101992
    if ( mValidate )
 
101993
    {
 
101994
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_COT, HASH_ATTRIBUTE_CLASS);
 
101995
    }
 
101996
    else
 
101997
    {
 
101998
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
101999
    }
 
102000
#else
 
102001
    {
 
102002
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
102003
    } // validation
 
102004
#endif
 
102005
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
102006
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
102007
        HASH_ELEMENT_COT,
 
102008
        HASH_ATTRIBUTE_CLASS,
 
102009
        attributeValue))
 
102010
{
 
102011
    return false;
 
102012
}
 
102013
#ifdef GENERATEDSAXPARSER_VALIDATION
 
102014
    if ( mValidate )
 
102015
    {
 
102016
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
102017
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
102018
    {
 
102019
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
102020
            simpleTypeValidationResult,
 
102021
            HASH_ELEMENT_COT,
 
102022
            HASH_ATTRIBUTE_CLASS,
 
102023
            attributeValue) )
 
102024
        {
 
102025
            return false;
 
102026
        }
 
102027
    }
 
102028
    } // validation
 
102029
#endif
 
102030
 
 
102031
if ( !failed )
 
102032
    attributeData->present_attributes |= cot__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
102033
 
 
102034
    break;
 
102035
    }
 
102036
    case HASH_ATTRIBUTE_STYLE:
 
102037
    {
 
102038
 
 
102039
attributeData->style = attributeValue;
 
102040
 
 
102041
    break;
 
102042
    }
 
102043
    case HASH_ATTRIBUTE_XREF:
 
102044
    {
 
102045
 
 
102046
attributeData->xref = attributeValue;
 
102047
 
 
102048
    break;
 
102049
    }
 
102050
    case HASH_ATTRIBUTE_ID:
 
102051
    {
 
102052
 
 
102053
attributeData->id = attributeValue;
 
102054
 
 
102055
    break;
 
102056
    }
 
102057
    case HASH_ATTRIBUTE_HREF:
 
102058
    {
 
102059
bool failed;
 
102060
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
102061
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
102062
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
102063
        HASH_ELEMENT_COT,
 
102064
        HASH_ATTRIBUTE_HREF,
 
102065
        attributeValue))
 
102066
{
 
102067
    return false;
 
102068
}
 
102069
if ( !failed )
 
102070
    attributeData->present_attributes |= cot__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
102071
 
 
102072
    break;
 
102073
    }
 
102074
    default:
 
102075
    {
 
102076
        if ( !attributeData->unknownAttributes.data )
 
102077
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
102078
        else
 
102079
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
102080
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
102081
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
102082
        attributeData->unknownAttributes.size += 2;
 
102083
 
 
102084
    }
 
102085
    }
 
102086
    }
 
102087
}
 
102088
if ((attributeData->present_attributes & cot__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
102089
{
 
102090
    attributeData->definitionURL = COLLADABU::URI("");
 
102091
}
 
102092
if ((attributeData->present_attributes & cot__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
102093
{
 
102094
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
102095
}
 
102096
if ((attributeData->present_attributes & cot__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
102097
{
 
102098
    attributeData->href = COLLADABU::URI("");
 
102099
}
 
102100
 
 
102101
 
 
102102
    return true;
 
102103
}
 
102104
 
 
102105
//---------------------------------------------------------------------
 
102106
bool ColladaParserAutoGen15Private::_preEnd__cot()
 
102107
{
 
102108
#ifdef GENERATEDSAXPARSER_VALIDATION
 
102109
    if ( mValidate )
 
102110
    {
 
102111
 
 
102112
        bool validationResult = _validateEnd__cot();
 
102113
        if ( !validationResult ) return false;
 
102114
 
 
102115
    } // validation
 
102116
#endif
 
102117
 
 
102118
    return true;
 
102119
}
 
102120
 
 
102121
//---------------------------------------------------------------------
 
102122
bool ColladaParserAutoGen15Private::_freeAttributes__cot( void* attributeData )
 
102123
{
 
102124
    cot__AttributeData* typedAttributeData = static_cast<cot__AttributeData*>(attributeData);
 
102125
    if (typedAttributeData->_class.data)
 
102126
    {
 
102127
        mStackMemoryManager.deleteObject();
 
102128
    }
 
102129
 
 
102130
    if (typedAttributeData->unknownAttributes.data)
 
102131
    {
 
102132
        mStackMemoryManager.deleteObject();
 
102133
    }
 
102134
 
 
102135
 
 
102136
    typedAttributeData->~cot__AttributeData();
 
102137
 
 
102138
    return true;
 
102139
}
 
102140
 
 
102141
//---------------------------------------------------------------------
 
102142
const arcsin__AttributeData arcsin__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
102143
 
 
102144
//---------------------------------------------------------------------
 
102145
bool ColladaParserAutoGen15Private::_data__arcsin( const ParserChar* text, size_t textLength )
 
102146
{
 
102147
    return true;
 
102148
}
 
102149
 
 
102150
//---------------------------------------------------------------------
 
102151
bool ColladaParserAutoGen15Private::_preBegin__arcsin( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
102152
{
 
102153
#ifdef GENERATEDSAXPARSER_VALIDATION
 
102154
    if ( mValidate )
 
102155
    {
 
102156
 
 
102157
        bool validationResult = _validateBegin__arcsin( attributes, attributeDataPtr, validationDataPtr );
 
102158
        if ( !validationResult ) return false;
 
102159
 
 
102160
    } // validation
 
102161
#endif
 
102162
 
 
102163
arcsin__AttributeData* attributeData = newData<arcsin__AttributeData>(attributeDataPtr);
 
102164
 
 
102165
const ParserChar** attributeArray = attributes.attributes;
 
102166
if ( attributeArray )
 
102167
{
 
102168
    while (true)
 
102169
    {
 
102170
        const ParserChar * attribute = *attributeArray;
 
102171
        if ( !attribute )
 
102172
            break;
 
102173
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
102174
        attributeArray++;
 
102175
        if ( !attributeArray )
 
102176
            return false;
 
102177
        const ParserChar* attributeValue = *attributeArray;
 
102178
        attributeArray++;
 
102179
 
 
102180
 
 
102181
    switch ( hash )
 
102182
    {
 
102183
    case HASH_ATTRIBUTE_ENCODING:
 
102184
    {
 
102185
 
 
102186
attributeData->encoding = attributeValue;
 
102187
 
 
102188
    break;
 
102189
    }
 
102190
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
102191
    {
 
102192
bool failed;
 
102193
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
102194
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
102195
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
102196
        HASH_ELEMENT_ARCSIN,
 
102197
        HASH_ATTRIBUTE_DEFINITIONURL,
 
102198
        attributeValue))
 
102199
{
 
102200
    return false;
 
102201
}
 
102202
if ( !failed )
 
102203
    attributeData->present_attributes |= arcsin__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
102204
 
 
102205
    break;
 
102206
    }
 
102207
    case HASH_ATTRIBUTE_CLASS:
 
102208
    {
 
102209
bool failed;
 
102210
#ifdef GENERATEDSAXPARSER_VALIDATION
 
102211
    if ( mValidate )
 
102212
    {
 
102213
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_ARCSIN, HASH_ATTRIBUTE_CLASS);
 
102214
    }
 
102215
    else
 
102216
    {
 
102217
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
102218
    }
 
102219
#else
 
102220
    {
 
102221
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
102222
    } // validation
 
102223
#endif
 
102224
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
102225
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
102226
        HASH_ELEMENT_ARCSIN,
 
102227
        HASH_ATTRIBUTE_CLASS,
 
102228
        attributeValue))
 
102229
{
 
102230
    return false;
 
102231
}
 
102232
#ifdef GENERATEDSAXPARSER_VALIDATION
 
102233
    if ( mValidate )
 
102234
    {
 
102235
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
102236
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
102237
    {
 
102238
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
102239
            simpleTypeValidationResult,
 
102240
            HASH_ELEMENT_ARCSIN,
 
102241
            HASH_ATTRIBUTE_CLASS,
 
102242
            attributeValue) )
 
102243
        {
 
102244
            return false;
 
102245
        }
 
102246
    }
 
102247
    } // validation
 
102248
#endif
 
102249
 
 
102250
if ( !failed )
 
102251
    attributeData->present_attributes |= arcsin__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
102252
 
 
102253
    break;
 
102254
    }
 
102255
    case HASH_ATTRIBUTE_STYLE:
 
102256
    {
 
102257
 
 
102258
attributeData->style = attributeValue;
 
102259
 
 
102260
    break;
 
102261
    }
 
102262
    case HASH_ATTRIBUTE_XREF:
 
102263
    {
 
102264
 
 
102265
attributeData->xref = attributeValue;
 
102266
 
 
102267
    break;
 
102268
    }
 
102269
    case HASH_ATTRIBUTE_ID:
 
102270
    {
 
102271
 
 
102272
attributeData->id = attributeValue;
 
102273
 
 
102274
    break;
 
102275
    }
 
102276
    case HASH_ATTRIBUTE_HREF:
 
102277
    {
 
102278
bool failed;
 
102279
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
102280
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
102281
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
102282
        HASH_ELEMENT_ARCSIN,
 
102283
        HASH_ATTRIBUTE_HREF,
 
102284
        attributeValue))
 
102285
{
 
102286
    return false;
 
102287
}
 
102288
if ( !failed )
 
102289
    attributeData->present_attributes |= arcsin__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
102290
 
 
102291
    break;
 
102292
    }
 
102293
    default:
 
102294
    {
 
102295
        if ( !attributeData->unknownAttributes.data )
 
102296
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
102297
        else
 
102298
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
102299
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
102300
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
102301
        attributeData->unknownAttributes.size += 2;
 
102302
 
 
102303
    }
 
102304
    }
 
102305
    }
 
102306
}
 
102307
if ((attributeData->present_attributes & arcsin__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
102308
{
 
102309
    attributeData->definitionURL = COLLADABU::URI("");
 
102310
}
 
102311
if ((attributeData->present_attributes & arcsin__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
102312
{
 
102313
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
102314
}
 
102315
if ((attributeData->present_attributes & arcsin__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
102316
{
 
102317
    attributeData->href = COLLADABU::URI("");
 
102318
}
 
102319
 
 
102320
 
 
102321
    return true;
 
102322
}
 
102323
 
 
102324
//---------------------------------------------------------------------
 
102325
bool ColladaParserAutoGen15Private::_preEnd__arcsin()
 
102326
{
 
102327
#ifdef GENERATEDSAXPARSER_VALIDATION
 
102328
    if ( mValidate )
 
102329
    {
 
102330
 
 
102331
        bool validationResult = _validateEnd__arcsin();
 
102332
        if ( !validationResult ) return false;
 
102333
 
 
102334
    } // validation
 
102335
#endif
 
102336
 
 
102337
    return true;
 
102338
}
 
102339
 
 
102340
//---------------------------------------------------------------------
 
102341
bool ColladaParserAutoGen15Private::_freeAttributes__arcsin( void* attributeData )
 
102342
{
 
102343
    arcsin__AttributeData* typedAttributeData = static_cast<arcsin__AttributeData*>(attributeData);
 
102344
    if (typedAttributeData->_class.data)
 
102345
    {
 
102346
        mStackMemoryManager.deleteObject();
 
102347
    }
 
102348
 
 
102349
    if (typedAttributeData->unknownAttributes.data)
 
102350
    {
 
102351
        mStackMemoryManager.deleteObject();
 
102352
    }
 
102353
 
 
102354
 
 
102355
    typedAttributeData->~arcsin__AttributeData();
 
102356
 
 
102357
    return true;
 
102358
}
 
102359
 
 
102360
//---------------------------------------------------------------------
 
102361
const arccos__AttributeData arccos__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
102362
 
 
102363
//---------------------------------------------------------------------
 
102364
bool ColladaParserAutoGen15Private::_data__arccos( const ParserChar* text, size_t textLength )
 
102365
{
 
102366
    return true;
 
102367
}
 
102368
 
 
102369
//---------------------------------------------------------------------
 
102370
bool ColladaParserAutoGen15Private::_preBegin__arccos( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
102371
{
 
102372
#ifdef GENERATEDSAXPARSER_VALIDATION
 
102373
    if ( mValidate )
 
102374
    {
 
102375
 
 
102376
        bool validationResult = _validateBegin__arccos( attributes, attributeDataPtr, validationDataPtr );
 
102377
        if ( !validationResult ) return false;
 
102378
 
 
102379
    } // validation
 
102380
#endif
 
102381
 
 
102382
arccos__AttributeData* attributeData = newData<arccos__AttributeData>(attributeDataPtr);
 
102383
 
 
102384
const ParserChar** attributeArray = attributes.attributes;
 
102385
if ( attributeArray )
 
102386
{
 
102387
    while (true)
 
102388
    {
 
102389
        const ParserChar * attribute = *attributeArray;
 
102390
        if ( !attribute )
 
102391
            break;
 
102392
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
102393
        attributeArray++;
 
102394
        if ( !attributeArray )
 
102395
            return false;
 
102396
        const ParserChar* attributeValue = *attributeArray;
 
102397
        attributeArray++;
 
102398
 
 
102399
 
 
102400
    switch ( hash )
 
102401
    {
 
102402
    case HASH_ATTRIBUTE_ENCODING:
 
102403
    {
 
102404
 
 
102405
attributeData->encoding = attributeValue;
 
102406
 
 
102407
    break;
 
102408
    }
 
102409
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
102410
    {
 
102411
bool failed;
 
102412
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
102413
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
102414
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
102415
        HASH_ELEMENT_ARCCOS,
 
102416
        HASH_ATTRIBUTE_DEFINITIONURL,
 
102417
        attributeValue))
 
102418
{
 
102419
    return false;
 
102420
}
 
102421
if ( !failed )
 
102422
    attributeData->present_attributes |= arccos__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
102423
 
 
102424
    break;
 
102425
    }
 
102426
    case HASH_ATTRIBUTE_CLASS:
 
102427
    {
 
102428
bool failed;
 
102429
#ifdef GENERATEDSAXPARSER_VALIDATION
 
102430
    if ( mValidate )
 
102431
    {
 
102432
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_ARCCOS, HASH_ATTRIBUTE_CLASS);
 
102433
    }
 
102434
    else
 
102435
    {
 
102436
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
102437
    }
 
102438
#else
 
102439
    {
 
102440
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
102441
    } // validation
 
102442
#endif
 
102443
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
102444
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
102445
        HASH_ELEMENT_ARCCOS,
 
102446
        HASH_ATTRIBUTE_CLASS,
 
102447
        attributeValue))
 
102448
{
 
102449
    return false;
 
102450
}
 
102451
#ifdef GENERATEDSAXPARSER_VALIDATION
 
102452
    if ( mValidate )
 
102453
    {
 
102454
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
102455
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
102456
    {
 
102457
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
102458
            simpleTypeValidationResult,
 
102459
            HASH_ELEMENT_ARCCOS,
 
102460
            HASH_ATTRIBUTE_CLASS,
 
102461
            attributeValue) )
 
102462
        {
 
102463
            return false;
 
102464
        }
 
102465
    }
 
102466
    } // validation
 
102467
#endif
 
102468
 
 
102469
if ( !failed )
 
102470
    attributeData->present_attributes |= arccos__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
102471
 
 
102472
    break;
 
102473
    }
 
102474
    case HASH_ATTRIBUTE_STYLE:
 
102475
    {
 
102476
 
 
102477
attributeData->style = attributeValue;
 
102478
 
 
102479
    break;
 
102480
    }
 
102481
    case HASH_ATTRIBUTE_XREF:
 
102482
    {
 
102483
 
 
102484
attributeData->xref = attributeValue;
 
102485
 
 
102486
    break;
 
102487
    }
 
102488
    case HASH_ATTRIBUTE_ID:
 
102489
    {
 
102490
 
 
102491
attributeData->id = attributeValue;
 
102492
 
 
102493
    break;
 
102494
    }
 
102495
    case HASH_ATTRIBUTE_HREF:
 
102496
    {
 
102497
bool failed;
 
102498
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
102499
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
102500
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
102501
        HASH_ELEMENT_ARCCOS,
 
102502
        HASH_ATTRIBUTE_HREF,
 
102503
        attributeValue))
 
102504
{
 
102505
    return false;
 
102506
}
 
102507
if ( !failed )
 
102508
    attributeData->present_attributes |= arccos__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
102509
 
 
102510
    break;
 
102511
    }
 
102512
    default:
 
102513
    {
 
102514
        if ( !attributeData->unknownAttributes.data )
 
102515
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
102516
        else
 
102517
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
102518
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
102519
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
102520
        attributeData->unknownAttributes.size += 2;
 
102521
 
 
102522
    }
 
102523
    }
 
102524
    }
 
102525
}
 
102526
if ((attributeData->present_attributes & arccos__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
102527
{
 
102528
    attributeData->definitionURL = COLLADABU::URI("");
 
102529
}
 
102530
if ((attributeData->present_attributes & arccos__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
102531
{
 
102532
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
102533
}
 
102534
if ((attributeData->present_attributes & arccos__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
102535
{
 
102536
    attributeData->href = COLLADABU::URI("");
 
102537
}
 
102538
 
 
102539
 
 
102540
    return true;
 
102541
}
 
102542
 
 
102543
//---------------------------------------------------------------------
 
102544
bool ColladaParserAutoGen15Private::_preEnd__arccos()
 
102545
{
 
102546
#ifdef GENERATEDSAXPARSER_VALIDATION
 
102547
    if ( mValidate )
 
102548
    {
 
102549
 
 
102550
        bool validationResult = _validateEnd__arccos();
 
102551
        if ( !validationResult ) return false;
 
102552
 
 
102553
    } // validation
 
102554
#endif
 
102555
 
 
102556
    return true;
 
102557
}
 
102558
 
 
102559
//---------------------------------------------------------------------
 
102560
bool ColladaParserAutoGen15Private::_freeAttributes__arccos( void* attributeData )
 
102561
{
 
102562
    arccos__AttributeData* typedAttributeData = static_cast<arccos__AttributeData*>(attributeData);
 
102563
    if (typedAttributeData->_class.data)
 
102564
    {
 
102565
        mStackMemoryManager.deleteObject();
 
102566
    }
 
102567
 
 
102568
    if (typedAttributeData->unknownAttributes.data)
 
102569
    {
 
102570
        mStackMemoryManager.deleteObject();
 
102571
    }
 
102572
 
 
102573
 
 
102574
    typedAttributeData->~arccos__AttributeData();
 
102575
 
 
102576
    return true;
 
102577
}
 
102578
 
 
102579
//---------------------------------------------------------------------
 
102580
const arctan__AttributeData arctan__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
102581
 
 
102582
//---------------------------------------------------------------------
 
102583
bool ColladaParserAutoGen15Private::_data__arctan( const ParserChar* text, size_t textLength )
 
102584
{
 
102585
    return true;
 
102586
}
 
102587
 
 
102588
//---------------------------------------------------------------------
 
102589
bool ColladaParserAutoGen15Private::_preBegin__arctan( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
102590
{
 
102591
#ifdef GENERATEDSAXPARSER_VALIDATION
 
102592
    if ( mValidate )
 
102593
    {
 
102594
 
 
102595
        bool validationResult = _validateBegin__arctan( attributes, attributeDataPtr, validationDataPtr );
 
102596
        if ( !validationResult ) return false;
 
102597
 
 
102598
    } // validation
 
102599
#endif
 
102600
 
 
102601
arctan__AttributeData* attributeData = newData<arctan__AttributeData>(attributeDataPtr);
 
102602
 
 
102603
const ParserChar** attributeArray = attributes.attributes;
 
102604
if ( attributeArray )
 
102605
{
 
102606
    while (true)
 
102607
    {
 
102608
        const ParserChar * attribute = *attributeArray;
 
102609
        if ( !attribute )
 
102610
            break;
 
102611
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
102612
        attributeArray++;
 
102613
        if ( !attributeArray )
 
102614
            return false;
 
102615
        const ParserChar* attributeValue = *attributeArray;
 
102616
        attributeArray++;
 
102617
 
 
102618
 
 
102619
    switch ( hash )
 
102620
    {
 
102621
    case HASH_ATTRIBUTE_ENCODING:
 
102622
    {
 
102623
 
 
102624
attributeData->encoding = attributeValue;
 
102625
 
 
102626
    break;
 
102627
    }
 
102628
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
102629
    {
 
102630
bool failed;
 
102631
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
102632
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
102633
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
102634
        HASH_ELEMENT_ARCTAN,
 
102635
        HASH_ATTRIBUTE_DEFINITIONURL,
 
102636
        attributeValue))
 
102637
{
 
102638
    return false;
 
102639
}
 
102640
if ( !failed )
 
102641
    attributeData->present_attributes |= arctan__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
102642
 
 
102643
    break;
 
102644
    }
 
102645
    case HASH_ATTRIBUTE_CLASS:
 
102646
    {
 
102647
bool failed;
 
102648
#ifdef GENERATEDSAXPARSER_VALIDATION
 
102649
    if ( mValidate )
 
102650
    {
 
102651
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_ARCTAN, HASH_ATTRIBUTE_CLASS);
 
102652
    }
 
102653
    else
 
102654
    {
 
102655
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
102656
    }
 
102657
#else
 
102658
    {
 
102659
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
102660
    } // validation
 
102661
#endif
 
102662
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
102663
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
102664
        HASH_ELEMENT_ARCTAN,
 
102665
        HASH_ATTRIBUTE_CLASS,
 
102666
        attributeValue))
 
102667
{
 
102668
    return false;
 
102669
}
 
102670
#ifdef GENERATEDSAXPARSER_VALIDATION
 
102671
    if ( mValidate )
 
102672
    {
 
102673
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
102674
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
102675
    {
 
102676
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
102677
            simpleTypeValidationResult,
 
102678
            HASH_ELEMENT_ARCTAN,
 
102679
            HASH_ATTRIBUTE_CLASS,
 
102680
            attributeValue) )
 
102681
        {
 
102682
            return false;
 
102683
        }
 
102684
    }
 
102685
    } // validation
 
102686
#endif
 
102687
 
 
102688
if ( !failed )
 
102689
    attributeData->present_attributes |= arctan__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
102690
 
 
102691
    break;
 
102692
    }
 
102693
    case HASH_ATTRIBUTE_STYLE:
 
102694
    {
 
102695
 
 
102696
attributeData->style = attributeValue;
 
102697
 
 
102698
    break;
 
102699
    }
 
102700
    case HASH_ATTRIBUTE_XREF:
 
102701
    {
 
102702
 
 
102703
attributeData->xref = attributeValue;
 
102704
 
 
102705
    break;
 
102706
    }
 
102707
    case HASH_ATTRIBUTE_ID:
 
102708
    {
 
102709
 
 
102710
attributeData->id = attributeValue;
 
102711
 
 
102712
    break;
 
102713
    }
 
102714
    case HASH_ATTRIBUTE_HREF:
 
102715
    {
 
102716
bool failed;
 
102717
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
102718
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
102719
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
102720
        HASH_ELEMENT_ARCTAN,
 
102721
        HASH_ATTRIBUTE_HREF,
 
102722
        attributeValue))
 
102723
{
 
102724
    return false;
 
102725
}
 
102726
if ( !failed )
 
102727
    attributeData->present_attributes |= arctan__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
102728
 
 
102729
    break;
 
102730
    }
 
102731
    default:
 
102732
    {
 
102733
        if ( !attributeData->unknownAttributes.data )
 
102734
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
102735
        else
 
102736
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
102737
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
102738
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
102739
        attributeData->unknownAttributes.size += 2;
 
102740
 
 
102741
    }
 
102742
    }
 
102743
    }
 
102744
}
 
102745
if ((attributeData->present_attributes & arctan__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
102746
{
 
102747
    attributeData->definitionURL = COLLADABU::URI("");
 
102748
}
 
102749
if ((attributeData->present_attributes & arctan__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
102750
{
 
102751
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
102752
}
 
102753
if ((attributeData->present_attributes & arctan__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
102754
{
 
102755
    attributeData->href = COLLADABU::URI("");
 
102756
}
 
102757
 
 
102758
 
 
102759
    return true;
 
102760
}
 
102761
 
 
102762
//---------------------------------------------------------------------
 
102763
bool ColladaParserAutoGen15Private::_preEnd__arctan()
 
102764
{
 
102765
#ifdef GENERATEDSAXPARSER_VALIDATION
 
102766
    if ( mValidate )
 
102767
    {
 
102768
 
 
102769
        bool validationResult = _validateEnd__arctan();
 
102770
        if ( !validationResult ) return false;
 
102771
 
 
102772
    } // validation
 
102773
#endif
 
102774
 
 
102775
    return true;
 
102776
}
 
102777
 
 
102778
//---------------------------------------------------------------------
 
102779
bool ColladaParserAutoGen15Private::_freeAttributes__arctan( void* attributeData )
 
102780
{
 
102781
    arctan__AttributeData* typedAttributeData = static_cast<arctan__AttributeData*>(attributeData);
 
102782
    if (typedAttributeData->_class.data)
 
102783
    {
 
102784
        mStackMemoryManager.deleteObject();
 
102785
    }
 
102786
 
 
102787
    if (typedAttributeData->unknownAttributes.data)
 
102788
    {
 
102789
        mStackMemoryManager.deleteObject();
 
102790
    }
 
102791
 
 
102792
 
 
102793
    typedAttributeData->~arctan__AttributeData();
 
102794
 
 
102795
    return true;
 
102796
}
 
102797
 
 
102798
//---------------------------------------------------------------------
 
102799
const arcsec__AttributeData arcsec__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
102800
 
 
102801
//---------------------------------------------------------------------
 
102802
bool ColladaParserAutoGen15Private::_data__arcsec( const ParserChar* text, size_t textLength )
 
102803
{
 
102804
    return true;
 
102805
}
 
102806
 
 
102807
//---------------------------------------------------------------------
 
102808
bool ColladaParserAutoGen15Private::_preBegin__arcsec( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
102809
{
 
102810
#ifdef GENERATEDSAXPARSER_VALIDATION
 
102811
    if ( mValidate )
 
102812
    {
 
102813
 
 
102814
        bool validationResult = _validateBegin__arcsec( attributes, attributeDataPtr, validationDataPtr );
 
102815
        if ( !validationResult ) return false;
 
102816
 
 
102817
    } // validation
 
102818
#endif
 
102819
 
 
102820
arcsec__AttributeData* attributeData = newData<arcsec__AttributeData>(attributeDataPtr);
 
102821
 
 
102822
const ParserChar** attributeArray = attributes.attributes;
 
102823
if ( attributeArray )
 
102824
{
 
102825
    while (true)
 
102826
    {
 
102827
        const ParserChar * attribute = *attributeArray;
 
102828
        if ( !attribute )
 
102829
            break;
 
102830
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
102831
        attributeArray++;
 
102832
        if ( !attributeArray )
 
102833
            return false;
 
102834
        const ParserChar* attributeValue = *attributeArray;
 
102835
        attributeArray++;
 
102836
 
 
102837
 
 
102838
    switch ( hash )
 
102839
    {
 
102840
    case HASH_ATTRIBUTE_ENCODING:
 
102841
    {
 
102842
 
 
102843
attributeData->encoding = attributeValue;
 
102844
 
 
102845
    break;
 
102846
    }
 
102847
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
102848
    {
 
102849
bool failed;
 
102850
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
102851
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
102852
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
102853
        HASH_ELEMENT_ARCSEC,
 
102854
        HASH_ATTRIBUTE_DEFINITIONURL,
 
102855
        attributeValue))
 
102856
{
 
102857
    return false;
 
102858
}
 
102859
if ( !failed )
 
102860
    attributeData->present_attributes |= arcsec__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
102861
 
 
102862
    break;
 
102863
    }
 
102864
    case HASH_ATTRIBUTE_CLASS:
 
102865
    {
 
102866
bool failed;
 
102867
#ifdef GENERATEDSAXPARSER_VALIDATION
 
102868
    if ( mValidate )
 
102869
    {
 
102870
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_ARCSEC, HASH_ATTRIBUTE_CLASS);
 
102871
    }
 
102872
    else
 
102873
    {
 
102874
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
102875
    }
 
102876
#else
 
102877
    {
 
102878
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
102879
    } // validation
 
102880
#endif
 
102881
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
102882
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
102883
        HASH_ELEMENT_ARCSEC,
 
102884
        HASH_ATTRIBUTE_CLASS,
 
102885
        attributeValue))
 
102886
{
 
102887
    return false;
 
102888
}
 
102889
#ifdef GENERATEDSAXPARSER_VALIDATION
 
102890
    if ( mValidate )
 
102891
    {
 
102892
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
102893
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
102894
    {
 
102895
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
102896
            simpleTypeValidationResult,
 
102897
            HASH_ELEMENT_ARCSEC,
 
102898
            HASH_ATTRIBUTE_CLASS,
 
102899
            attributeValue) )
 
102900
        {
 
102901
            return false;
 
102902
        }
 
102903
    }
 
102904
    } // validation
 
102905
#endif
 
102906
 
 
102907
if ( !failed )
 
102908
    attributeData->present_attributes |= arcsec__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
102909
 
 
102910
    break;
 
102911
    }
 
102912
    case HASH_ATTRIBUTE_STYLE:
 
102913
    {
 
102914
 
 
102915
attributeData->style = attributeValue;
 
102916
 
 
102917
    break;
 
102918
    }
 
102919
    case HASH_ATTRIBUTE_XREF:
 
102920
    {
 
102921
 
 
102922
attributeData->xref = attributeValue;
 
102923
 
 
102924
    break;
 
102925
    }
 
102926
    case HASH_ATTRIBUTE_ID:
 
102927
    {
 
102928
 
 
102929
attributeData->id = attributeValue;
 
102930
 
 
102931
    break;
 
102932
    }
 
102933
    case HASH_ATTRIBUTE_HREF:
 
102934
    {
 
102935
bool failed;
 
102936
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
102937
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
102938
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
102939
        HASH_ELEMENT_ARCSEC,
 
102940
        HASH_ATTRIBUTE_HREF,
 
102941
        attributeValue))
 
102942
{
 
102943
    return false;
 
102944
}
 
102945
if ( !failed )
 
102946
    attributeData->present_attributes |= arcsec__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
102947
 
 
102948
    break;
 
102949
    }
 
102950
    default:
 
102951
    {
 
102952
        if ( !attributeData->unknownAttributes.data )
 
102953
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
102954
        else
 
102955
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
102956
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
102957
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
102958
        attributeData->unknownAttributes.size += 2;
 
102959
 
 
102960
    }
 
102961
    }
 
102962
    }
 
102963
}
 
102964
if ((attributeData->present_attributes & arcsec__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
102965
{
 
102966
    attributeData->definitionURL = COLLADABU::URI("");
 
102967
}
 
102968
if ((attributeData->present_attributes & arcsec__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
102969
{
 
102970
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
102971
}
 
102972
if ((attributeData->present_attributes & arcsec__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
102973
{
 
102974
    attributeData->href = COLLADABU::URI("");
 
102975
}
 
102976
 
 
102977
 
 
102978
    return true;
 
102979
}
 
102980
 
 
102981
//---------------------------------------------------------------------
 
102982
bool ColladaParserAutoGen15Private::_preEnd__arcsec()
 
102983
{
 
102984
#ifdef GENERATEDSAXPARSER_VALIDATION
 
102985
    if ( mValidate )
 
102986
    {
 
102987
 
 
102988
        bool validationResult = _validateEnd__arcsec();
 
102989
        if ( !validationResult ) return false;
 
102990
 
 
102991
    } // validation
 
102992
#endif
 
102993
 
 
102994
    return true;
 
102995
}
 
102996
 
 
102997
//---------------------------------------------------------------------
 
102998
bool ColladaParserAutoGen15Private::_freeAttributes__arcsec( void* attributeData )
 
102999
{
 
103000
    arcsec__AttributeData* typedAttributeData = static_cast<arcsec__AttributeData*>(attributeData);
 
103001
    if (typedAttributeData->_class.data)
 
103002
    {
 
103003
        mStackMemoryManager.deleteObject();
 
103004
    }
 
103005
 
 
103006
    if (typedAttributeData->unknownAttributes.data)
 
103007
    {
 
103008
        mStackMemoryManager.deleteObject();
 
103009
    }
 
103010
 
 
103011
 
 
103012
    typedAttributeData->~arcsec__AttributeData();
 
103013
 
 
103014
    return true;
 
103015
}
 
103016
 
 
103017
//---------------------------------------------------------------------
 
103018
const arccsc__AttributeData arccsc__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
103019
 
 
103020
//---------------------------------------------------------------------
 
103021
bool ColladaParserAutoGen15Private::_data__arccsc( const ParserChar* text, size_t textLength )
 
103022
{
 
103023
    return true;
 
103024
}
 
103025
 
 
103026
//---------------------------------------------------------------------
 
103027
bool ColladaParserAutoGen15Private::_preBegin__arccsc( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
103028
{
 
103029
#ifdef GENERATEDSAXPARSER_VALIDATION
 
103030
    if ( mValidate )
 
103031
    {
 
103032
 
 
103033
        bool validationResult = _validateBegin__arccsc( attributes, attributeDataPtr, validationDataPtr );
 
103034
        if ( !validationResult ) return false;
 
103035
 
 
103036
    } // validation
 
103037
#endif
 
103038
 
 
103039
arccsc__AttributeData* attributeData = newData<arccsc__AttributeData>(attributeDataPtr);
 
103040
 
 
103041
const ParserChar** attributeArray = attributes.attributes;
 
103042
if ( attributeArray )
 
103043
{
 
103044
    while (true)
 
103045
    {
 
103046
        const ParserChar * attribute = *attributeArray;
 
103047
        if ( !attribute )
 
103048
            break;
 
103049
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
103050
        attributeArray++;
 
103051
        if ( !attributeArray )
 
103052
            return false;
 
103053
        const ParserChar* attributeValue = *attributeArray;
 
103054
        attributeArray++;
 
103055
 
 
103056
 
 
103057
    switch ( hash )
 
103058
    {
 
103059
    case HASH_ATTRIBUTE_ENCODING:
 
103060
    {
 
103061
 
 
103062
attributeData->encoding = attributeValue;
 
103063
 
 
103064
    break;
 
103065
    }
 
103066
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
103067
    {
 
103068
bool failed;
 
103069
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
103070
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
103071
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
103072
        HASH_ELEMENT_ARCCSC,
 
103073
        HASH_ATTRIBUTE_DEFINITIONURL,
 
103074
        attributeValue))
 
103075
{
 
103076
    return false;
 
103077
}
 
103078
if ( !failed )
 
103079
    attributeData->present_attributes |= arccsc__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
103080
 
 
103081
    break;
 
103082
    }
 
103083
    case HASH_ATTRIBUTE_CLASS:
 
103084
    {
 
103085
bool failed;
 
103086
#ifdef GENERATEDSAXPARSER_VALIDATION
 
103087
    if ( mValidate )
 
103088
    {
 
103089
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_ARCCSC, HASH_ATTRIBUTE_CLASS);
 
103090
    }
 
103091
    else
 
103092
    {
 
103093
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
103094
    }
 
103095
#else
 
103096
    {
 
103097
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
103098
    } // validation
 
103099
#endif
 
103100
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
103101
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
103102
        HASH_ELEMENT_ARCCSC,
 
103103
        HASH_ATTRIBUTE_CLASS,
 
103104
        attributeValue))
 
103105
{
 
103106
    return false;
 
103107
}
 
103108
#ifdef GENERATEDSAXPARSER_VALIDATION
 
103109
    if ( mValidate )
 
103110
    {
 
103111
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
103112
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
103113
    {
 
103114
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
103115
            simpleTypeValidationResult,
 
103116
            HASH_ELEMENT_ARCCSC,
 
103117
            HASH_ATTRIBUTE_CLASS,
 
103118
            attributeValue) )
 
103119
        {
 
103120
            return false;
 
103121
        }
 
103122
    }
 
103123
    } // validation
 
103124
#endif
 
103125
 
 
103126
if ( !failed )
 
103127
    attributeData->present_attributes |= arccsc__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
103128
 
 
103129
    break;
 
103130
    }
 
103131
    case HASH_ATTRIBUTE_STYLE:
 
103132
    {
 
103133
 
 
103134
attributeData->style = attributeValue;
 
103135
 
 
103136
    break;
 
103137
    }
 
103138
    case HASH_ATTRIBUTE_XREF:
 
103139
    {
 
103140
 
 
103141
attributeData->xref = attributeValue;
 
103142
 
 
103143
    break;
 
103144
    }
 
103145
    case HASH_ATTRIBUTE_ID:
 
103146
    {
 
103147
 
 
103148
attributeData->id = attributeValue;
 
103149
 
 
103150
    break;
 
103151
    }
 
103152
    case HASH_ATTRIBUTE_HREF:
 
103153
    {
 
103154
bool failed;
 
103155
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
103156
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
103157
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
103158
        HASH_ELEMENT_ARCCSC,
 
103159
        HASH_ATTRIBUTE_HREF,
 
103160
        attributeValue))
 
103161
{
 
103162
    return false;
 
103163
}
 
103164
if ( !failed )
 
103165
    attributeData->present_attributes |= arccsc__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
103166
 
 
103167
    break;
 
103168
    }
 
103169
    default:
 
103170
    {
 
103171
        if ( !attributeData->unknownAttributes.data )
 
103172
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
103173
        else
 
103174
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
103175
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
103176
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
103177
        attributeData->unknownAttributes.size += 2;
 
103178
 
 
103179
    }
 
103180
    }
 
103181
    }
 
103182
}
 
103183
if ((attributeData->present_attributes & arccsc__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
103184
{
 
103185
    attributeData->definitionURL = COLLADABU::URI("");
 
103186
}
 
103187
if ((attributeData->present_attributes & arccsc__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
103188
{
 
103189
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
103190
}
 
103191
if ((attributeData->present_attributes & arccsc__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
103192
{
 
103193
    attributeData->href = COLLADABU::URI("");
 
103194
}
 
103195
 
 
103196
 
 
103197
    return true;
 
103198
}
 
103199
 
 
103200
//---------------------------------------------------------------------
 
103201
bool ColladaParserAutoGen15Private::_preEnd__arccsc()
 
103202
{
 
103203
#ifdef GENERATEDSAXPARSER_VALIDATION
 
103204
    if ( mValidate )
 
103205
    {
 
103206
 
 
103207
        bool validationResult = _validateEnd__arccsc();
 
103208
        if ( !validationResult ) return false;
 
103209
 
 
103210
    } // validation
 
103211
#endif
 
103212
 
 
103213
    return true;
 
103214
}
 
103215
 
 
103216
//---------------------------------------------------------------------
 
103217
bool ColladaParserAutoGen15Private::_freeAttributes__arccsc( void* attributeData )
 
103218
{
 
103219
    arccsc__AttributeData* typedAttributeData = static_cast<arccsc__AttributeData*>(attributeData);
 
103220
    if (typedAttributeData->_class.data)
 
103221
    {
 
103222
        mStackMemoryManager.deleteObject();
 
103223
    }
 
103224
 
 
103225
    if (typedAttributeData->unknownAttributes.data)
 
103226
    {
 
103227
        mStackMemoryManager.deleteObject();
 
103228
    }
 
103229
 
 
103230
 
 
103231
    typedAttributeData->~arccsc__AttributeData();
 
103232
 
 
103233
    return true;
 
103234
}
 
103235
 
 
103236
//---------------------------------------------------------------------
 
103237
const arccot__AttributeData arccot__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
103238
 
 
103239
//---------------------------------------------------------------------
 
103240
bool ColladaParserAutoGen15Private::_data__arccot( const ParserChar* text, size_t textLength )
 
103241
{
 
103242
    return true;
 
103243
}
 
103244
 
 
103245
//---------------------------------------------------------------------
 
103246
bool ColladaParserAutoGen15Private::_preBegin__arccot( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
103247
{
 
103248
#ifdef GENERATEDSAXPARSER_VALIDATION
 
103249
    if ( mValidate )
 
103250
    {
 
103251
 
 
103252
        bool validationResult = _validateBegin__arccot( attributes, attributeDataPtr, validationDataPtr );
 
103253
        if ( !validationResult ) return false;
 
103254
 
 
103255
    } // validation
 
103256
#endif
 
103257
 
 
103258
arccot__AttributeData* attributeData = newData<arccot__AttributeData>(attributeDataPtr);
 
103259
 
 
103260
const ParserChar** attributeArray = attributes.attributes;
 
103261
if ( attributeArray )
 
103262
{
 
103263
    while (true)
 
103264
    {
 
103265
        const ParserChar * attribute = *attributeArray;
 
103266
        if ( !attribute )
 
103267
            break;
 
103268
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
103269
        attributeArray++;
 
103270
        if ( !attributeArray )
 
103271
            return false;
 
103272
        const ParserChar* attributeValue = *attributeArray;
 
103273
        attributeArray++;
 
103274
 
 
103275
 
 
103276
    switch ( hash )
 
103277
    {
 
103278
    case HASH_ATTRIBUTE_ENCODING:
 
103279
    {
 
103280
 
 
103281
attributeData->encoding = attributeValue;
 
103282
 
 
103283
    break;
 
103284
    }
 
103285
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
103286
    {
 
103287
bool failed;
 
103288
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
103289
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
103290
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
103291
        HASH_ELEMENT_ARCCOT,
 
103292
        HASH_ATTRIBUTE_DEFINITIONURL,
 
103293
        attributeValue))
 
103294
{
 
103295
    return false;
 
103296
}
 
103297
if ( !failed )
 
103298
    attributeData->present_attributes |= arccot__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
103299
 
 
103300
    break;
 
103301
    }
 
103302
    case HASH_ATTRIBUTE_CLASS:
 
103303
    {
 
103304
bool failed;
 
103305
#ifdef GENERATEDSAXPARSER_VALIDATION
 
103306
    if ( mValidate )
 
103307
    {
 
103308
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_ARCCOT, HASH_ATTRIBUTE_CLASS);
 
103309
    }
 
103310
    else
 
103311
    {
 
103312
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
103313
    }
 
103314
#else
 
103315
    {
 
103316
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
103317
    } // validation
 
103318
#endif
 
103319
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
103320
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
103321
        HASH_ELEMENT_ARCCOT,
 
103322
        HASH_ATTRIBUTE_CLASS,
 
103323
        attributeValue))
 
103324
{
 
103325
    return false;
 
103326
}
 
103327
#ifdef GENERATEDSAXPARSER_VALIDATION
 
103328
    if ( mValidate )
 
103329
    {
 
103330
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
103331
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
103332
    {
 
103333
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
103334
            simpleTypeValidationResult,
 
103335
            HASH_ELEMENT_ARCCOT,
 
103336
            HASH_ATTRIBUTE_CLASS,
 
103337
            attributeValue) )
 
103338
        {
 
103339
            return false;
 
103340
        }
 
103341
    }
 
103342
    } // validation
 
103343
#endif
 
103344
 
 
103345
if ( !failed )
 
103346
    attributeData->present_attributes |= arccot__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
103347
 
 
103348
    break;
 
103349
    }
 
103350
    case HASH_ATTRIBUTE_STYLE:
 
103351
    {
 
103352
 
 
103353
attributeData->style = attributeValue;
 
103354
 
 
103355
    break;
 
103356
    }
 
103357
    case HASH_ATTRIBUTE_XREF:
 
103358
    {
 
103359
 
 
103360
attributeData->xref = attributeValue;
 
103361
 
 
103362
    break;
 
103363
    }
 
103364
    case HASH_ATTRIBUTE_ID:
 
103365
    {
 
103366
 
 
103367
attributeData->id = attributeValue;
 
103368
 
 
103369
    break;
 
103370
    }
 
103371
    case HASH_ATTRIBUTE_HREF:
 
103372
    {
 
103373
bool failed;
 
103374
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
103375
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
103376
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
103377
        HASH_ELEMENT_ARCCOT,
 
103378
        HASH_ATTRIBUTE_HREF,
 
103379
        attributeValue))
 
103380
{
 
103381
    return false;
 
103382
}
 
103383
if ( !failed )
 
103384
    attributeData->present_attributes |= arccot__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
103385
 
 
103386
    break;
 
103387
    }
 
103388
    default:
 
103389
    {
 
103390
        if ( !attributeData->unknownAttributes.data )
 
103391
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
103392
        else
 
103393
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
103394
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
103395
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
103396
        attributeData->unknownAttributes.size += 2;
 
103397
 
 
103398
    }
 
103399
    }
 
103400
    }
 
103401
}
 
103402
if ((attributeData->present_attributes & arccot__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
103403
{
 
103404
    attributeData->definitionURL = COLLADABU::URI("");
 
103405
}
 
103406
if ((attributeData->present_attributes & arccot__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
103407
{
 
103408
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
103409
}
 
103410
if ((attributeData->present_attributes & arccot__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
103411
{
 
103412
    attributeData->href = COLLADABU::URI("");
 
103413
}
 
103414
 
 
103415
 
 
103416
    return true;
 
103417
}
 
103418
 
 
103419
//---------------------------------------------------------------------
 
103420
bool ColladaParserAutoGen15Private::_preEnd__arccot()
 
103421
{
 
103422
#ifdef GENERATEDSAXPARSER_VALIDATION
 
103423
    if ( mValidate )
 
103424
    {
 
103425
 
 
103426
        bool validationResult = _validateEnd__arccot();
 
103427
        if ( !validationResult ) return false;
 
103428
 
 
103429
    } // validation
 
103430
#endif
 
103431
 
 
103432
    return true;
 
103433
}
 
103434
 
 
103435
//---------------------------------------------------------------------
 
103436
bool ColladaParserAutoGen15Private::_freeAttributes__arccot( void* attributeData )
 
103437
{
 
103438
    arccot__AttributeData* typedAttributeData = static_cast<arccot__AttributeData*>(attributeData);
 
103439
    if (typedAttributeData->_class.data)
 
103440
    {
 
103441
        mStackMemoryManager.deleteObject();
 
103442
    }
 
103443
 
 
103444
    if (typedAttributeData->unknownAttributes.data)
 
103445
    {
 
103446
        mStackMemoryManager.deleteObject();
 
103447
    }
 
103448
 
 
103449
 
 
103450
    typedAttributeData->~arccot__AttributeData();
 
103451
 
 
103452
    return true;
 
103453
}
 
103454
 
 
103455
//---------------------------------------------------------------------
 
103456
const sinh__AttributeData sinh__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
103457
 
 
103458
//---------------------------------------------------------------------
 
103459
bool ColladaParserAutoGen15Private::_data__sinh( const ParserChar* text, size_t textLength )
 
103460
{
 
103461
    return true;
 
103462
}
 
103463
 
 
103464
//---------------------------------------------------------------------
 
103465
bool ColladaParserAutoGen15Private::_preBegin__sinh( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
103466
{
 
103467
#ifdef GENERATEDSAXPARSER_VALIDATION
 
103468
    if ( mValidate )
 
103469
    {
 
103470
 
 
103471
        bool validationResult = _validateBegin__sinh( attributes, attributeDataPtr, validationDataPtr );
 
103472
        if ( !validationResult ) return false;
 
103473
 
 
103474
    } // validation
 
103475
#endif
 
103476
 
 
103477
sinh__AttributeData* attributeData = newData<sinh__AttributeData>(attributeDataPtr);
 
103478
 
 
103479
const ParserChar** attributeArray = attributes.attributes;
 
103480
if ( attributeArray )
 
103481
{
 
103482
    while (true)
 
103483
    {
 
103484
        const ParserChar * attribute = *attributeArray;
 
103485
        if ( !attribute )
 
103486
            break;
 
103487
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
103488
        attributeArray++;
 
103489
        if ( !attributeArray )
 
103490
            return false;
 
103491
        const ParserChar* attributeValue = *attributeArray;
 
103492
        attributeArray++;
 
103493
 
 
103494
 
 
103495
    switch ( hash )
 
103496
    {
 
103497
    case HASH_ATTRIBUTE_ENCODING:
 
103498
    {
 
103499
 
 
103500
attributeData->encoding = attributeValue;
 
103501
 
 
103502
    break;
 
103503
    }
 
103504
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
103505
    {
 
103506
bool failed;
 
103507
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
103508
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
103509
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
103510
        HASH_ELEMENT_SINH,
 
103511
        HASH_ATTRIBUTE_DEFINITIONURL,
 
103512
        attributeValue))
 
103513
{
 
103514
    return false;
 
103515
}
 
103516
if ( !failed )
 
103517
    attributeData->present_attributes |= sinh__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
103518
 
 
103519
    break;
 
103520
    }
 
103521
    case HASH_ATTRIBUTE_CLASS:
 
103522
    {
 
103523
bool failed;
 
103524
#ifdef GENERATEDSAXPARSER_VALIDATION
 
103525
    if ( mValidate )
 
103526
    {
 
103527
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_SINH, HASH_ATTRIBUTE_CLASS);
 
103528
    }
 
103529
    else
 
103530
    {
 
103531
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
103532
    }
 
103533
#else
 
103534
    {
 
103535
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
103536
    } // validation
 
103537
#endif
 
103538
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
103539
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
103540
        HASH_ELEMENT_SINH,
 
103541
        HASH_ATTRIBUTE_CLASS,
 
103542
        attributeValue))
 
103543
{
 
103544
    return false;
 
103545
}
 
103546
#ifdef GENERATEDSAXPARSER_VALIDATION
 
103547
    if ( mValidate )
 
103548
    {
 
103549
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
103550
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
103551
    {
 
103552
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
103553
            simpleTypeValidationResult,
 
103554
            HASH_ELEMENT_SINH,
 
103555
            HASH_ATTRIBUTE_CLASS,
 
103556
            attributeValue) )
 
103557
        {
 
103558
            return false;
 
103559
        }
 
103560
    }
 
103561
    } // validation
 
103562
#endif
 
103563
 
 
103564
if ( !failed )
 
103565
    attributeData->present_attributes |= sinh__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
103566
 
 
103567
    break;
 
103568
    }
 
103569
    case HASH_ATTRIBUTE_STYLE:
 
103570
    {
 
103571
 
 
103572
attributeData->style = attributeValue;
 
103573
 
 
103574
    break;
 
103575
    }
 
103576
    case HASH_ATTRIBUTE_XREF:
 
103577
    {
 
103578
 
 
103579
attributeData->xref = attributeValue;
 
103580
 
 
103581
    break;
 
103582
    }
 
103583
    case HASH_ATTRIBUTE_ID:
 
103584
    {
 
103585
 
 
103586
attributeData->id = attributeValue;
 
103587
 
 
103588
    break;
 
103589
    }
 
103590
    case HASH_ATTRIBUTE_HREF:
 
103591
    {
 
103592
bool failed;
 
103593
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
103594
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
103595
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
103596
        HASH_ELEMENT_SINH,
 
103597
        HASH_ATTRIBUTE_HREF,
 
103598
        attributeValue))
 
103599
{
 
103600
    return false;
 
103601
}
 
103602
if ( !failed )
 
103603
    attributeData->present_attributes |= sinh__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
103604
 
 
103605
    break;
 
103606
    }
 
103607
    default:
 
103608
    {
 
103609
        if ( !attributeData->unknownAttributes.data )
 
103610
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
103611
        else
 
103612
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
103613
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
103614
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
103615
        attributeData->unknownAttributes.size += 2;
 
103616
 
 
103617
    }
 
103618
    }
 
103619
    }
 
103620
}
 
103621
if ((attributeData->present_attributes & sinh__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
103622
{
 
103623
    attributeData->definitionURL = COLLADABU::URI("");
 
103624
}
 
103625
if ((attributeData->present_attributes & sinh__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
103626
{
 
103627
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
103628
}
 
103629
if ((attributeData->present_attributes & sinh__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
103630
{
 
103631
    attributeData->href = COLLADABU::URI("");
 
103632
}
 
103633
 
 
103634
 
 
103635
    return true;
 
103636
}
 
103637
 
 
103638
//---------------------------------------------------------------------
 
103639
bool ColladaParserAutoGen15Private::_preEnd__sinh()
 
103640
{
 
103641
#ifdef GENERATEDSAXPARSER_VALIDATION
 
103642
    if ( mValidate )
 
103643
    {
 
103644
 
 
103645
        bool validationResult = _validateEnd__sinh();
 
103646
        if ( !validationResult ) return false;
 
103647
 
 
103648
    } // validation
 
103649
#endif
 
103650
 
 
103651
    return true;
 
103652
}
 
103653
 
 
103654
//---------------------------------------------------------------------
 
103655
bool ColladaParserAutoGen15Private::_freeAttributes__sinh( void* attributeData )
 
103656
{
 
103657
    sinh__AttributeData* typedAttributeData = static_cast<sinh__AttributeData*>(attributeData);
 
103658
    if (typedAttributeData->_class.data)
 
103659
    {
 
103660
        mStackMemoryManager.deleteObject();
 
103661
    }
 
103662
 
 
103663
    if (typedAttributeData->unknownAttributes.data)
 
103664
    {
 
103665
        mStackMemoryManager.deleteObject();
 
103666
    }
 
103667
 
 
103668
 
 
103669
    typedAttributeData->~sinh__AttributeData();
 
103670
 
 
103671
    return true;
 
103672
}
 
103673
 
 
103674
//---------------------------------------------------------------------
 
103675
const cosh__AttributeData cosh__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
103676
 
 
103677
//---------------------------------------------------------------------
 
103678
bool ColladaParserAutoGen15Private::_data__cosh( const ParserChar* text, size_t textLength )
 
103679
{
 
103680
    return true;
 
103681
}
 
103682
 
 
103683
//---------------------------------------------------------------------
 
103684
bool ColladaParserAutoGen15Private::_preBegin__cosh( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
103685
{
 
103686
#ifdef GENERATEDSAXPARSER_VALIDATION
 
103687
    if ( mValidate )
 
103688
    {
 
103689
 
 
103690
        bool validationResult = _validateBegin__cosh( attributes, attributeDataPtr, validationDataPtr );
 
103691
        if ( !validationResult ) return false;
 
103692
 
 
103693
    } // validation
 
103694
#endif
 
103695
 
 
103696
cosh__AttributeData* attributeData = newData<cosh__AttributeData>(attributeDataPtr);
 
103697
 
 
103698
const ParserChar** attributeArray = attributes.attributes;
 
103699
if ( attributeArray )
 
103700
{
 
103701
    while (true)
 
103702
    {
 
103703
        const ParserChar * attribute = *attributeArray;
 
103704
        if ( !attribute )
 
103705
            break;
 
103706
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
103707
        attributeArray++;
 
103708
        if ( !attributeArray )
 
103709
            return false;
 
103710
        const ParserChar* attributeValue = *attributeArray;
 
103711
        attributeArray++;
 
103712
 
 
103713
 
 
103714
    switch ( hash )
 
103715
    {
 
103716
    case HASH_ATTRIBUTE_ENCODING:
 
103717
    {
 
103718
 
 
103719
attributeData->encoding = attributeValue;
 
103720
 
 
103721
    break;
 
103722
    }
 
103723
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
103724
    {
 
103725
bool failed;
 
103726
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
103727
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
103728
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
103729
        HASH_ELEMENT_COSH,
 
103730
        HASH_ATTRIBUTE_DEFINITIONURL,
 
103731
        attributeValue))
 
103732
{
 
103733
    return false;
 
103734
}
 
103735
if ( !failed )
 
103736
    attributeData->present_attributes |= cosh__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
103737
 
 
103738
    break;
 
103739
    }
 
103740
    case HASH_ATTRIBUTE_CLASS:
 
103741
    {
 
103742
bool failed;
 
103743
#ifdef GENERATEDSAXPARSER_VALIDATION
 
103744
    if ( mValidate )
 
103745
    {
 
103746
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_COSH, HASH_ATTRIBUTE_CLASS);
 
103747
    }
 
103748
    else
 
103749
    {
 
103750
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
103751
    }
 
103752
#else
 
103753
    {
 
103754
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
103755
    } // validation
 
103756
#endif
 
103757
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
103758
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
103759
        HASH_ELEMENT_COSH,
 
103760
        HASH_ATTRIBUTE_CLASS,
 
103761
        attributeValue))
 
103762
{
 
103763
    return false;
 
103764
}
 
103765
#ifdef GENERATEDSAXPARSER_VALIDATION
 
103766
    if ( mValidate )
 
103767
    {
 
103768
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
103769
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
103770
    {
 
103771
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
103772
            simpleTypeValidationResult,
 
103773
            HASH_ELEMENT_COSH,
 
103774
            HASH_ATTRIBUTE_CLASS,
 
103775
            attributeValue) )
 
103776
        {
 
103777
            return false;
 
103778
        }
 
103779
    }
 
103780
    } // validation
 
103781
#endif
 
103782
 
 
103783
if ( !failed )
 
103784
    attributeData->present_attributes |= cosh__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
103785
 
 
103786
    break;
 
103787
    }
 
103788
    case HASH_ATTRIBUTE_STYLE:
 
103789
    {
 
103790
 
 
103791
attributeData->style = attributeValue;
 
103792
 
 
103793
    break;
 
103794
    }
 
103795
    case HASH_ATTRIBUTE_XREF:
 
103796
    {
 
103797
 
 
103798
attributeData->xref = attributeValue;
 
103799
 
 
103800
    break;
 
103801
    }
 
103802
    case HASH_ATTRIBUTE_ID:
 
103803
    {
 
103804
 
 
103805
attributeData->id = attributeValue;
 
103806
 
 
103807
    break;
 
103808
    }
 
103809
    case HASH_ATTRIBUTE_HREF:
 
103810
    {
 
103811
bool failed;
 
103812
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
103813
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
103814
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
103815
        HASH_ELEMENT_COSH,
 
103816
        HASH_ATTRIBUTE_HREF,
 
103817
        attributeValue))
 
103818
{
 
103819
    return false;
 
103820
}
 
103821
if ( !failed )
 
103822
    attributeData->present_attributes |= cosh__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
103823
 
 
103824
    break;
 
103825
    }
 
103826
    default:
 
103827
    {
 
103828
        if ( !attributeData->unknownAttributes.data )
 
103829
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
103830
        else
 
103831
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
103832
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
103833
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
103834
        attributeData->unknownAttributes.size += 2;
 
103835
 
 
103836
    }
 
103837
    }
 
103838
    }
 
103839
}
 
103840
if ((attributeData->present_attributes & cosh__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
103841
{
 
103842
    attributeData->definitionURL = COLLADABU::URI("");
 
103843
}
 
103844
if ((attributeData->present_attributes & cosh__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
103845
{
 
103846
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
103847
}
 
103848
if ((attributeData->present_attributes & cosh__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
103849
{
 
103850
    attributeData->href = COLLADABU::URI("");
 
103851
}
 
103852
 
 
103853
 
 
103854
    return true;
 
103855
}
 
103856
 
 
103857
//---------------------------------------------------------------------
 
103858
bool ColladaParserAutoGen15Private::_preEnd__cosh()
 
103859
{
 
103860
#ifdef GENERATEDSAXPARSER_VALIDATION
 
103861
    if ( mValidate )
 
103862
    {
 
103863
 
 
103864
        bool validationResult = _validateEnd__cosh();
 
103865
        if ( !validationResult ) return false;
 
103866
 
 
103867
    } // validation
 
103868
#endif
 
103869
 
 
103870
    return true;
 
103871
}
 
103872
 
 
103873
//---------------------------------------------------------------------
 
103874
bool ColladaParserAutoGen15Private::_freeAttributes__cosh( void* attributeData )
 
103875
{
 
103876
    cosh__AttributeData* typedAttributeData = static_cast<cosh__AttributeData*>(attributeData);
 
103877
    if (typedAttributeData->_class.data)
 
103878
    {
 
103879
        mStackMemoryManager.deleteObject();
 
103880
    }
 
103881
 
 
103882
    if (typedAttributeData->unknownAttributes.data)
 
103883
    {
 
103884
        mStackMemoryManager.deleteObject();
 
103885
    }
 
103886
 
 
103887
 
 
103888
    typedAttributeData->~cosh__AttributeData();
 
103889
 
 
103890
    return true;
 
103891
}
 
103892
 
 
103893
//---------------------------------------------------------------------
 
103894
const tanh__AttributeData tanh__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
103895
 
 
103896
//---------------------------------------------------------------------
 
103897
bool ColladaParserAutoGen15Private::_data__tanh( const ParserChar* text, size_t textLength )
 
103898
{
 
103899
    return true;
 
103900
}
 
103901
 
 
103902
//---------------------------------------------------------------------
 
103903
bool ColladaParserAutoGen15Private::_preBegin__tanh( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
103904
{
 
103905
#ifdef GENERATEDSAXPARSER_VALIDATION
 
103906
    if ( mValidate )
 
103907
    {
 
103908
 
 
103909
        bool validationResult = _validateBegin__tanh( attributes, attributeDataPtr, validationDataPtr );
 
103910
        if ( !validationResult ) return false;
 
103911
 
 
103912
    } // validation
 
103913
#endif
 
103914
 
 
103915
tanh__AttributeData* attributeData = newData<tanh__AttributeData>(attributeDataPtr);
 
103916
 
 
103917
const ParserChar** attributeArray = attributes.attributes;
 
103918
if ( attributeArray )
 
103919
{
 
103920
    while (true)
 
103921
    {
 
103922
        const ParserChar * attribute = *attributeArray;
 
103923
        if ( !attribute )
 
103924
            break;
 
103925
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
103926
        attributeArray++;
 
103927
        if ( !attributeArray )
 
103928
            return false;
 
103929
        const ParserChar* attributeValue = *attributeArray;
 
103930
        attributeArray++;
 
103931
 
 
103932
 
 
103933
    switch ( hash )
 
103934
    {
 
103935
    case HASH_ATTRIBUTE_ENCODING:
 
103936
    {
 
103937
 
 
103938
attributeData->encoding = attributeValue;
 
103939
 
 
103940
    break;
 
103941
    }
 
103942
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
103943
    {
 
103944
bool failed;
 
103945
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
103946
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
103947
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
103948
        HASH_ELEMENT_TANH,
 
103949
        HASH_ATTRIBUTE_DEFINITIONURL,
 
103950
        attributeValue))
 
103951
{
 
103952
    return false;
 
103953
}
 
103954
if ( !failed )
 
103955
    attributeData->present_attributes |= tanh__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
103956
 
 
103957
    break;
 
103958
    }
 
103959
    case HASH_ATTRIBUTE_CLASS:
 
103960
    {
 
103961
bool failed;
 
103962
#ifdef GENERATEDSAXPARSER_VALIDATION
 
103963
    if ( mValidate )
 
103964
    {
 
103965
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_TANH, HASH_ATTRIBUTE_CLASS);
 
103966
    }
 
103967
    else
 
103968
    {
 
103969
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
103970
    }
 
103971
#else
 
103972
    {
 
103973
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
103974
    } // validation
 
103975
#endif
 
103976
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
103977
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
103978
        HASH_ELEMENT_TANH,
 
103979
        HASH_ATTRIBUTE_CLASS,
 
103980
        attributeValue))
 
103981
{
 
103982
    return false;
 
103983
}
 
103984
#ifdef GENERATEDSAXPARSER_VALIDATION
 
103985
    if ( mValidate )
 
103986
    {
 
103987
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
103988
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
103989
    {
 
103990
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
103991
            simpleTypeValidationResult,
 
103992
            HASH_ELEMENT_TANH,
 
103993
            HASH_ATTRIBUTE_CLASS,
 
103994
            attributeValue) )
 
103995
        {
 
103996
            return false;
 
103997
        }
 
103998
    }
 
103999
    } // validation
 
104000
#endif
 
104001
 
 
104002
if ( !failed )
 
104003
    attributeData->present_attributes |= tanh__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
104004
 
 
104005
    break;
 
104006
    }
 
104007
    case HASH_ATTRIBUTE_STYLE:
 
104008
    {
 
104009
 
 
104010
attributeData->style = attributeValue;
 
104011
 
 
104012
    break;
 
104013
    }
 
104014
    case HASH_ATTRIBUTE_XREF:
 
104015
    {
 
104016
 
 
104017
attributeData->xref = attributeValue;
 
104018
 
 
104019
    break;
 
104020
    }
 
104021
    case HASH_ATTRIBUTE_ID:
 
104022
    {
 
104023
 
 
104024
attributeData->id = attributeValue;
 
104025
 
 
104026
    break;
 
104027
    }
 
104028
    case HASH_ATTRIBUTE_HREF:
 
104029
    {
 
104030
bool failed;
 
104031
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
104032
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
104033
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
104034
        HASH_ELEMENT_TANH,
 
104035
        HASH_ATTRIBUTE_HREF,
 
104036
        attributeValue))
 
104037
{
 
104038
    return false;
 
104039
}
 
104040
if ( !failed )
 
104041
    attributeData->present_attributes |= tanh__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
104042
 
 
104043
    break;
 
104044
    }
 
104045
    default:
 
104046
    {
 
104047
        if ( !attributeData->unknownAttributes.data )
 
104048
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
104049
        else
 
104050
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
104051
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
104052
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
104053
        attributeData->unknownAttributes.size += 2;
 
104054
 
 
104055
    }
 
104056
    }
 
104057
    }
 
104058
}
 
104059
if ((attributeData->present_attributes & tanh__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
104060
{
 
104061
    attributeData->definitionURL = COLLADABU::URI("");
 
104062
}
 
104063
if ((attributeData->present_attributes & tanh__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
104064
{
 
104065
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
104066
}
 
104067
if ((attributeData->present_attributes & tanh__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
104068
{
 
104069
    attributeData->href = COLLADABU::URI("");
 
104070
}
 
104071
 
 
104072
 
 
104073
    return true;
 
104074
}
 
104075
 
 
104076
//---------------------------------------------------------------------
 
104077
bool ColladaParserAutoGen15Private::_preEnd__tanh()
 
104078
{
 
104079
#ifdef GENERATEDSAXPARSER_VALIDATION
 
104080
    if ( mValidate )
 
104081
    {
 
104082
 
 
104083
        bool validationResult = _validateEnd__tanh();
 
104084
        if ( !validationResult ) return false;
 
104085
 
 
104086
    } // validation
 
104087
#endif
 
104088
 
 
104089
    return true;
 
104090
}
 
104091
 
 
104092
//---------------------------------------------------------------------
 
104093
bool ColladaParserAutoGen15Private::_freeAttributes__tanh( void* attributeData )
 
104094
{
 
104095
    tanh__AttributeData* typedAttributeData = static_cast<tanh__AttributeData*>(attributeData);
 
104096
    if (typedAttributeData->_class.data)
 
104097
    {
 
104098
        mStackMemoryManager.deleteObject();
 
104099
    }
 
104100
 
 
104101
    if (typedAttributeData->unknownAttributes.data)
 
104102
    {
 
104103
        mStackMemoryManager.deleteObject();
 
104104
    }
 
104105
 
 
104106
 
 
104107
    typedAttributeData->~tanh__AttributeData();
 
104108
 
 
104109
    return true;
 
104110
}
 
104111
 
 
104112
//---------------------------------------------------------------------
 
104113
const sech__AttributeData sech__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
104114
 
 
104115
//---------------------------------------------------------------------
 
104116
bool ColladaParserAutoGen15Private::_data__sech( const ParserChar* text, size_t textLength )
 
104117
{
 
104118
    return true;
 
104119
}
 
104120
 
 
104121
//---------------------------------------------------------------------
 
104122
bool ColladaParserAutoGen15Private::_preBegin__sech( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
104123
{
 
104124
#ifdef GENERATEDSAXPARSER_VALIDATION
 
104125
    if ( mValidate )
 
104126
    {
 
104127
 
 
104128
        bool validationResult = _validateBegin__sech( attributes, attributeDataPtr, validationDataPtr );
 
104129
        if ( !validationResult ) return false;
 
104130
 
 
104131
    } // validation
 
104132
#endif
 
104133
 
 
104134
sech__AttributeData* attributeData = newData<sech__AttributeData>(attributeDataPtr);
 
104135
 
 
104136
const ParserChar** attributeArray = attributes.attributes;
 
104137
if ( attributeArray )
 
104138
{
 
104139
    while (true)
 
104140
    {
 
104141
        const ParserChar * attribute = *attributeArray;
 
104142
        if ( !attribute )
 
104143
            break;
 
104144
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
104145
        attributeArray++;
 
104146
        if ( !attributeArray )
 
104147
            return false;
 
104148
        const ParserChar* attributeValue = *attributeArray;
 
104149
        attributeArray++;
 
104150
 
 
104151
 
 
104152
    switch ( hash )
 
104153
    {
 
104154
    case HASH_ATTRIBUTE_ENCODING:
 
104155
    {
 
104156
 
 
104157
attributeData->encoding = attributeValue;
 
104158
 
 
104159
    break;
 
104160
    }
 
104161
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
104162
    {
 
104163
bool failed;
 
104164
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
104165
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
104166
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
104167
        HASH_ELEMENT_SECH,
 
104168
        HASH_ATTRIBUTE_DEFINITIONURL,
 
104169
        attributeValue))
 
104170
{
 
104171
    return false;
 
104172
}
 
104173
if ( !failed )
 
104174
    attributeData->present_attributes |= sech__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
104175
 
 
104176
    break;
 
104177
    }
 
104178
    case HASH_ATTRIBUTE_CLASS:
 
104179
    {
 
104180
bool failed;
 
104181
#ifdef GENERATEDSAXPARSER_VALIDATION
 
104182
    if ( mValidate )
 
104183
    {
 
104184
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_SECH, HASH_ATTRIBUTE_CLASS);
 
104185
    }
 
104186
    else
 
104187
    {
 
104188
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
104189
    }
 
104190
#else
 
104191
    {
 
104192
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
104193
    } // validation
 
104194
#endif
 
104195
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
104196
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
104197
        HASH_ELEMENT_SECH,
 
104198
        HASH_ATTRIBUTE_CLASS,
 
104199
        attributeValue))
 
104200
{
 
104201
    return false;
 
104202
}
 
104203
#ifdef GENERATEDSAXPARSER_VALIDATION
 
104204
    if ( mValidate )
 
104205
    {
 
104206
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
104207
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
104208
    {
 
104209
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
104210
            simpleTypeValidationResult,
 
104211
            HASH_ELEMENT_SECH,
 
104212
            HASH_ATTRIBUTE_CLASS,
 
104213
            attributeValue) )
 
104214
        {
 
104215
            return false;
 
104216
        }
 
104217
    }
 
104218
    } // validation
 
104219
#endif
 
104220
 
 
104221
if ( !failed )
 
104222
    attributeData->present_attributes |= sech__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
104223
 
 
104224
    break;
 
104225
    }
 
104226
    case HASH_ATTRIBUTE_STYLE:
 
104227
    {
 
104228
 
 
104229
attributeData->style = attributeValue;
 
104230
 
 
104231
    break;
 
104232
    }
 
104233
    case HASH_ATTRIBUTE_XREF:
 
104234
    {
 
104235
 
 
104236
attributeData->xref = attributeValue;
 
104237
 
 
104238
    break;
 
104239
    }
 
104240
    case HASH_ATTRIBUTE_ID:
 
104241
    {
 
104242
 
 
104243
attributeData->id = attributeValue;
 
104244
 
 
104245
    break;
 
104246
    }
 
104247
    case HASH_ATTRIBUTE_HREF:
 
104248
    {
 
104249
bool failed;
 
104250
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
104251
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
104252
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
104253
        HASH_ELEMENT_SECH,
 
104254
        HASH_ATTRIBUTE_HREF,
 
104255
        attributeValue))
 
104256
{
 
104257
    return false;
 
104258
}
 
104259
if ( !failed )
 
104260
    attributeData->present_attributes |= sech__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
104261
 
 
104262
    break;
 
104263
    }
 
104264
    default:
 
104265
    {
 
104266
        if ( !attributeData->unknownAttributes.data )
 
104267
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
104268
        else
 
104269
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
104270
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
104271
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
104272
        attributeData->unknownAttributes.size += 2;
 
104273
 
 
104274
    }
 
104275
    }
 
104276
    }
 
104277
}
 
104278
if ((attributeData->present_attributes & sech__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
104279
{
 
104280
    attributeData->definitionURL = COLLADABU::URI("");
 
104281
}
 
104282
if ((attributeData->present_attributes & sech__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
104283
{
 
104284
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
104285
}
 
104286
if ((attributeData->present_attributes & sech__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
104287
{
 
104288
    attributeData->href = COLLADABU::URI("");
 
104289
}
 
104290
 
 
104291
 
 
104292
    return true;
 
104293
}
 
104294
 
 
104295
//---------------------------------------------------------------------
 
104296
bool ColladaParserAutoGen15Private::_preEnd__sech()
 
104297
{
 
104298
#ifdef GENERATEDSAXPARSER_VALIDATION
 
104299
    if ( mValidate )
 
104300
    {
 
104301
 
 
104302
        bool validationResult = _validateEnd__sech();
 
104303
        if ( !validationResult ) return false;
 
104304
 
 
104305
    } // validation
 
104306
#endif
 
104307
 
 
104308
    return true;
 
104309
}
 
104310
 
 
104311
//---------------------------------------------------------------------
 
104312
bool ColladaParserAutoGen15Private::_freeAttributes__sech( void* attributeData )
 
104313
{
 
104314
    sech__AttributeData* typedAttributeData = static_cast<sech__AttributeData*>(attributeData);
 
104315
    if (typedAttributeData->_class.data)
 
104316
    {
 
104317
        mStackMemoryManager.deleteObject();
 
104318
    }
 
104319
 
 
104320
    if (typedAttributeData->unknownAttributes.data)
 
104321
    {
 
104322
        mStackMemoryManager.deleteObject();
 
104323
    }
 
104324
 
 
104325
 
 
104326
    typedAttributeData->~sech__AttributeData();
 
104327
 
 
104328
    return true;
 
104329
}
 
104330
 
 
104331
//---------------------------------------------------------------------
 
104332
const csch__AttributeData csch__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
104333
 
 
104334
//---------------------------------------------------------------------
 
104335
bool ColladaParserAutoGen15Private::_data__csch( const ParserChar* text, size_t textLength )
 
104336
{
 
104337
    return true;
 
104338
}
 
104339
 
 
104340
//---------------------------------------------------------------------
 
104341
bool ColladaParserAutoGen15Private::_preBegin__csch( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
104342
{
 
104343
#ifdef GENERATEDSAXPARSER_VALIDATION
 
104344
    if ( mValidate )
 
104345
    {
 
104346
 
 
104347
        bool validationResult = _validateBegin__csch( attributes, attributeDataPtr, validationDataPtr );
 
104348
        if ( !validationResult ) return false;
 
104349
 
 
104350
    } // validation
 
104351
#endif
 
104352
 
 
104353
csch__AttributeData* attributeData = newData<csch__AttributeData>(attributeDataPtr);
 
104354
 
 
104355
const ParserChar** attributeArray = attributes.attributes;
 
104356
if ( attributeArray )
 
104357
{
 
104358
    while (true)
 
104359
    {
 
104360
        const ParserChar * attribute = *attributeArray;
 
104361
        if ( !attribute )
 
104362
            break;
 
104363
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
104364
        attributeArray++;
 
104365
        if ( !attributeArray )
 
104366
            return false;
 
104367
        const ParserChar* attributeValue = *attributeArray;
 
104368
        attributeArray++;
 
104369
 
 
104370
 
 
104371
    switch ( hash )
 
104372
    {
 
104373
    case HASH_ATTRIBUTE_ENCODING:
 
104374
    {
 
104375
 
 
104376
attributeData->encoding = attributeValue;
 
104377
 
 
104378
    break;
 
104379
    }
 
104380
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
104381
    {
 
104382
bool failed;
 
104383
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
104384
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
104385
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
104386
        HASH_ELEMENT_CSCH,
 
104387
        HASH_ATTRIBUTE_DEFINITIONURL,
 
104388
        attributeValue))
 
104389
{
 
104390
    return false;
 
104391
}
 
104392
if ( !failed )
 
104393
    attributeData->present_attributes |= csch__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
104394
 
 
104395
    break;
 
104396
    }
 
104397
    case HASH_ATTRIBUTE_CLASS:
 
104398
    {
 
104399
bool failed;
 
104400
#ifdef GENERATEDSAXPARSER_VALIDATION
 
104401
    if ( mValidate )
 
104402
    {
 
104403
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_CSCH, HASH_ATTRIBUTE_CLASS);
 
104404
    }
 
104405
    else
 
104406
    {
 
104407
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
104408
    }
 
104409
#else
 
104410
    {
 
104411
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
104412
    } // validation
 
104413
#endif
 
104414
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
104415
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
104416
        HASH_ELEMENT_CSCH,
 
104417
        HASH_ATTRIBUTE_CLASS,
 
104418
        attributeValue))
 
104419
{
 
104420
    return false;
 
104421
}
 
104422
#ifdef GENERATEDSAXPARSER_VALIDATION
 
104423
    if ( mValidate )
 
104424
    {
 
104425
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
104426
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
104427
    {
 
104428
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
104429
            simpleTypeValidationResult,
 
104430
            HASH_ELEMENT_CSCH,
 
104431
            HASH_ATTRIBUTE_CLASS,
 
104432
            attributeValue) )
 
104433
        {
 
104434
            return false;
 
104435
        }
 
104436
    }
 
104437
    } // validation
 
104438
#endif
 
104439
 
 
104440
if ( !failed )
 
104441
    attributeData->present_attributes |= csch__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
104442
 
 
104443
    break;
 
104444
    }
 
104445
    case HASH_ATTRIBUTE_STYLE:
 
104446
    {
 
104447
 
 
104448
attributeData->style = attributeValue;
 
104449
 
 
104450
    break;
 
104451
    }
 
104452
    case HASH_ATTRIBUTE_XREF:
 
104453
    {
 
104454
 
 
104455
attributeData->xref = attributeValue;
 
104456
 
 
104457
    break;
 
104458
    }
 
104459
    case HASH_ATTRIBUTE_ID:
 
104460
    {
 
104461
 
 
104462
attributeData->id = attributeValue;
 
104463
 
 
104464
    break;
 
104465
    }
 
104466
    case HASH_ATTRIBUTE_HREF:
 
104467
    {
 
104468
bool failed;
 
104469
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
104470
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
104471
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
104472
        HASH_ELEMENT_CSCH,
 
104473
        HASH_ATTRIBUTE_HREF,
 
104474
        attributeValue))
 
104475
{
 
104476
    return false;
 
104477
}
 
104478
if ( !failed )
 
104479
    attributeData->present_attributes |= csch__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
104480
 
 
104481
    break;
 
104482
    }
 
104483
    default:
 
104484
    {
 
104485
        if ( !attributeData->unknownAttributes.data )
 
104486
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
104487
        else
 
104488
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
104489
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
104490
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
104491
        attributeData->unknownAttributes.size += 2;
 
104492
 
 
104493
    }
 
104494
    }
 
104495
    }
 
104496
}
 
104497
if ((attributeData->present_attributes & csch__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
104498
{
 
104499
    attributeData->definitionURL = COLLADABU::URI("");
 
104500
}
 
104501
if ((attributeData->present_attributes & csch__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
104502
{
 
104503
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
104504
}
 
104505
if ((attributeData->present_attributes & csch__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
104506
{
 
104507
    attributeData->href = COLLADABU::URI("");
 
104508
}
 
104509
 
 
104510
 
 
104511
    return true;
 
104512
}
 
104513
 
 
104514
//---------------------------------------------------------------------
 
104515
bool ColladaParserAutoGen15Private::_preEnd__csch()
 
104516
{
 
104517
#ifdef GENERATEDSAXPARSER_VALIDATION
 
104518
    if ( mValidate )
 
104519
    {
 
104520
 
 
104521
        bool validationResult = _validateEnd__csch();
 
104522
        if ( !validationResult ) return false;
 
104523
 
 
104524
    } // validation
 
104525
#endif
 
104526
 
 
104527
    return true;
 
104528
}
 
104529
 
 
104530
//---------------------------------------------------------------------
 
104531
bool ColladaParserAutoGen15Private::_freeAttributes__csch( void* attributeData )
 
104532
{
 
104533
    csch__AttributeData* typedAttributeData = static_cast<csch__AttributeData*>(attributeData);
 
104534
    if (typedAttributeData->_class.data)
 
104535
    {
 
104536
        mStackMemoryManager.deleteObject();
 
104537
    }
 
104538
 
 
104539
    if (typedAttributeData->unknownAttributes.data)
 
104540
    {
 
104541
        mStackMemoryManager.deleteObject();
 
104542
    }
 
104543
 
 
104544
 
 
104545
    typedAttributeData->~csch__AttributeData();
 
104546
 
 
104547
    return true;
 
104548
}
 
104549
 
 
104550
//---------------------------------------------------------------------
 
104551
const coth__AttributeData coth__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
104552
 
 
104553
//---------------------------------------------------------------------
 
104554
bool ColladaParserAutoGen15Private::_data__coth( const ParserChar* text, size_t textLength )
 
104555
{
 
104556
    return true;
 
104557
}
 
104558
 
 
104559
//---------------------------------------------------------------------
 
104560
bool ColladaParserAutoGen15Private::_preBegin__coth( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
104561
{
 
104562
#ifdef GENERATEDSAXPARSER_VALIDATION
 
104563
    if ( mValidate )
 
104564
    {
 
104565
 
 
104566
        bool validationResult = _validateBegin__coth( attributes, attributeDataPtr, validationDataPtr );
 
104567
        if ( !validationResult ) return false;
 
104568
 
 
104569
    } // validation
 
104570
#endif
 
104571
 
 
104572
coth__AttributeData* attributeData = newData<coth__AttributeData>(attributeDataPtr);
 
104573
 
 
104574
const ParserChar** attributeArray = attributes.attributes;
 
104575
if ( attributeArray )
 
104576
{
 
104577
    while (true)
 
104578
    {
 
104579
        const ParserChar * attribute = *attributeArray;
 
104580
        if ( !attribute )
 
104581
            break;
 
104582
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
104583
        attributeArray++;
 
104584
        if ( !attributeArray )
 
104585
            return false;
 
104586
        const ParserChar* attributeValue = *attributeArray;
 
104587
        attributeArray++;
 
104588
 
 
104589
 
 
104590
    switch ( hash )
 
104591
    {
 
104592
    case HASH_ATTRIBUTE_ENCODING:
 
104593
    {
 
104594
 
 
104595
attributeData->encoding = attributeValue;
 
104596
 
 
104597
    break;
 
104598
    }
 
104599
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
104600
    {
 
104601
bool failed;
 
104602
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
104603
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
104604
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
104605
        HASH_ELEMENT_COTH,
 
104606
        HASH_ATTRIBUTE_DEFINITIONURL,
 
104607
        attributeValue))
 
104608
{
 
104609
    return false;
 
104610
}
 
104611
if ( !failed )
 
104612
    attributeData->present_attributes |= coth__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
104613
 
 
104614
    break;
 
104615
    }
 
104616
    case HASH_ATTRIBUTE_CLASS:
 
104617
    {
 
104618
bool failed;
 
104619
#ifdef GENERATEDSAXPARSER_VALIDATION
 
104620
    if ( mValidate )
 
104621
    {
 
104622
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_COTH, HASH_ATTRIBUTE_CLASS);
 
104623
    }
 
104624
    else
 
104625
    {
 
104626
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
104627
    }
 
104628
#else
 
104629
    {
 
104630
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
104631
    } // validation
 
104632
#endif
 
104633
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
104634
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
104635
        HASH_ELEMENT_COTH,
 
104636
        HASH_ATTRIBUTE_CLASS,
 
104637
        attributeValue))
 
104638
{
 
104639
    return false;
 
104640
}
 
104641
#ifdef GENERATEDSAXPARSER_VALIDATION
 
104642
    if ( mValidate )
 
104643
    {
 
104644
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
104645
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
104646
    {
 
104647
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
104648
            simpleTypeValidationResult,
 
104649
            HASH_ELEMENT_COTH,
 
104650
            HASH_ATTRIBUTE_CLASS,
 
104651
            attributeValue) )
 
104652
        {
 
104653
            return false;
 
104654
        }
 
104655
    }
 
104656
    } // validation
 
104657
#endif
 
104658
 
 
104659
if ( !failed )
 
104660
    attributeData->present_attributes |= coth__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
104661
 
 
104662
    break;
 
104663
    }
 
104664
    case HASH_ATTRIBUTE_STYLE:
 
104665
    {
 
104666
 
 
104667
attributeData->style = attributeValue;
 
104668
 
 
104669
    break;
 
104670
    }
 
104671
    case HASH_ATTRIBUTE_XREF:
 
104672
    {
 
104673
 
 
104674
attributeData->xref = attributeValue;
 
104675
 
 
104676
    break;
 
104677
    }
 
104678
    case HASH_ATTRIBUTE_ID:
 
104679
    {
 
104680
 
 
104681
attributeData->id = attributeValue;
 
104682
 
 
104683
    break;
 
104684
    }
 
104685
    case HASH_ATTRIBUTE_HREF:
 
104686
    {
 
104687
bool failed;
 
104688
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
104689
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
104690
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
104691
        HASH_ELEMENT_COTH,
 
104692
        HASH_ATTRIBUTE_HREF,
 
104693
        attributeValue))
 
104694
{
 
104695
    return false;
 
104696
}
 
104697
if ( !failed )
 
104698
    attributeData->present_attributes |= coth__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
104699
 
 
104700
    break;
 
104701
    }
 
104702
    default:
 
104703
    {
 
104704
        if ( !attributeData->unknownAttributes.data )
 
104705
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
104706
        else
 
104707
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
104708
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
104709
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
104710
        attributeData->unknownAttributes.size += 2;
 
104711
 
 
104712
    }
 
104713
    }
 
104714
    }
 
104715
}
 
104716
if ((attributeData->present_attributes & coth__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
104717
{
 
104718
    attributeData->definitionURL = COLLADABU::URI("");
 
104719
}
 
104720
if ((attributeData->present_attributes & coth__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
104721
{
 
104722
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
104723
}
 
104724
if ((attributeData->present_attributes & coth__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
104725
{
 
104726
    attributeData->href = COLLADABU::URI("");
 
104727
}
 
104728
 
 
104729
 
 
104730
    return true;
 
104731
}
 
104732
 
 
104733
//---------------------------------------------------------------------
 
104734
bool ColladaParserAutoGen15Private::_preEnd__coth()
 
104735
{
 
104736
#ifdef GENERATEDSAXPARSER_VALIDATION
 
104737
    if ( mValidate )
 
104738
    {
 
104739
 
 
104740
        bool validationResult = _validateEnd__coth();
 
104741
        if ( !validationResult ) return false;
 
104742
 
 
104743
    } // validation
 
104744
#endif
 
104745
 
 
104746
    return true;
 
104747
}
 
104748
 
 
104749
//---------------------------------------------------------------------
 
104750
bool ColladaParserAutoGen15Private::_freeAttributes__coth( void* attributeData )
 
104751
{
 
104752
    coth__AttributeData* typedAttributeData = static_cast<coth__AttributeData*>(attributeData);
 
104753
    if (typedAttributeData->_class.data)
 
104754
    {
 
104755
        mStackMemoryManager.deleteObject();
 
104756
    }
 
104757
 
 
104758
    if (typedAttributeData->unknownAttributes.data)
 
104759
    {
 
104760
        mStackMemoryManager.deleteObject();
 
104761
    }
 
104762
 
 
104763
 
 
104764
    typedAttributeData->~coth__AttributeData();
 
104765
 
 
104766
    return true;
 
104767
}
 
104768
 
 
104769
//---------------------------------------------------------------------
 
104770
const arccosh__AttributeData arccosh__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
104771
 
 
104772
//---------------------------------------------------------------------
 
104773
bool ColladaParserAutoGen15Private::_data__arccosh( const ParserChar* text, size_t textLength )
 
104774
{
 
104775
    return true;
 
104776
}
 
104777
 
 
104778
//---------------------------------------------------------------------
 
104779
bool ColladaParserAutoGen15Private::_preBegin__arccosh( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
104780
{
 
104781
#ifdef GENERATEDSAXPARSER_VALIDATION
 
104782
    if ( mValidate )
 
104783
    {
 
104784
 
 
104785
        bool validationResult = _validateBegin__arccosh( attributes, attributeDataPtr, validationDataPtr );
 
104786
        if ( !validationResult ) return false;
 
104787
 
 
104788
    } // validation
 
104789
#endif
 
104790
 
 
104791
arccosh__AttributeData* attributeData = newData<arccosh__AttributeData>(attributeDataPtr);
 
104792
 
 
104793
const ParserChar** attributeArray = attributes.attributes;
 
104794
if ( attributeArray )
 
104795
{
 
104796
    while (true)
 
104797
    {
 
104798
        const ParserChar * attribute = *attributeArray;
 
104799
        if ( !attribute )
 
104800
            break;
 
104801
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
104802
        attributeArray++;
 
104803
        if ( !attributeArray )
 
104804
            return false;
 
104805
        const ParserChar* attributeValue = *attributeArray;
 
104806
        attributeArray++;
 
104807
 
 
104808
 
 
104809
    switch ( hash )
 
104810
    {
 
104811
    case HASH_ATTRIBUTE_ENCODING:
 
104812
    {
 
104813
 
 
104814
attributeData->encoding = attributeValue;
 
104815
 
 
104816
    break;
 
104817
    }
 
104818
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
104819
    {
 
104820
bool failed;
 
104821
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
104822
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
104823
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
104824
        HASH_ELEMENT_ARCCOSH,
 
104825
        HASH_ATTRIBUTE_DEFINITIONURL,
 
104826
        attributeValue))
 
104827
{
 
104828
    return false;
 
104829
}
 
104830
if ( !failed )
 
104831
    attributeData->present_attributes |= arccosh__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
104832
 
 
104833
    break;
 
104834
    }
 
104835
    case HASH_ATTRIBUTE_CLASS:
 
104836
    {
 
104837
bool failed;
 
104838
#ifdef GENERATEDSAXPARSER_VALIDATION
 
104839
    if ( mValidate )
 
104840
    {
 
104841
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_ARCCOSH, HASH_ATTRIBUTE_CLASS);
 
104842
    }
 
104843
    else
 
104844
    {
 
104845
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
104846
    }
 
104847
#else
 
104848
    {
 
104849
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
104850
    } // validation
 
104851
#endif
 
104852
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
104853
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
104854
        HASH_ELEMENT_ARCCOSH,
 
104855
        HASH_ATTRIBUTE_CLASS,
 
104856
        attributeValue))
 
104857
{
 
104858
    return false;
 
104859
}
 
104860
#ifdef GENERATEDSAXPARSER_VALIDATION
 
104861
    if ( mValidate )
 
104862
    {
 
104863
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
104864
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
104865
    {
 
104866
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
104867
            simpleTypeValidationResult,
 
104868
            HASH_ELEMENT_ARCCOSH,
 
104869
            HASH_ATTRIBUTE_CLASS,
 
104870
            attributeValue) )
 
104871
        {
 
104872
            return false;
 
104873
        }
 
104874
    }
 
104875
    } // validation
 
104876
#endif
 
104877
 
 
104878
if ( !failed )
 
104879
    attributeData->present_attributes |= arccosh__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
104880
 
 
104881
    break;
 
104882
    }
 
104883
    case HASH_ATTRIBUTE_STYLE:
 
104884
    {
 
104885
 
 
104886
attributeData->style = attributeValue;
 
104887
 
 
104888
    break;
 
104889
    }
 
104890
    case HASH_ATTRIBUTE_XREF:
 
104891
    {
 
104892
 
 
104893
attributeData->xref = attributeValue;
 
104894
 
 
104895
    break;
 
104896
    }
 
104897
    case HASH_ATTRIBUTE_ID:
 
104898
    {
 
104899
 
 
104900
attributeData->id = attributeValue;
 
104901
 
 
104902
    break;
 
104903
    }
 
104904
    case HASH_ATTRIBUTE_HREF:
 
104905
    {
 
104906
bool failed;
 
104907
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
104908
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
104909
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
104910
        HASH_ELEMENT_ARCCOSH,
 
104911
        HASH_ATTRIBUTE_HREF,
 
104912
        attributeValue))
 
104913
{
 
104914
    return false;
 
104915
}
 
104916
if ( !failed )
 
104917
    attributeData->present_attributes |= arccosh__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
104918
 
 
104919
    break;
 
104920
    }
 
104921
    default:
 
104922
    {
 
104923
        if ( !attributeData->unknownAttributes.data )
 
104924
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
104925
        else
 
104926
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
104927
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
104928
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
104929
        attributeData->unknownAttributes.size += 2;
 
104930
 
 
104931
    }
 
104932
    }
 
104933
    }
 
104934
}
 
104935
if ((attributeData->present_attributes & arccosh__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
104936
{
 
104937
    attributeData->definitionURL = COLLADABU::URI("");
 
104938
}
 
104939
if ((attributeData->present_attributes & arccosh__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
104940
{
 
104941
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
104942
}
 
104943
if ((attributeData->present_attributes & arccosh__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
104944
{
 
104945
    attributeData->href = COLLADABU::URI("");
 
104946
}
 
104947
 
 
104948
 
 
104949
    return true;
 
104950
}
 
104951
 
 
104952
//---------------------------------------------------------------------
 
104953
bool ColladaParserAutoGen15Private::_preEnd__arccosh()
 
104954
{
 
104955
#ifdef GENERATEDSAXPARSER_VALIDATION
 
104956
    if ( mValidate )
 
104957
    {
 
104958
 
 
104959
        bool validationResult = _validateEnd__arccosh();
 
104960
        if ( !validationResult ) return false;
 
104961
 
 
104962
    } // validation
 
104963
#endif
 
104964
 
 
104965
    return true;
 
104966
}
 
104967
 
 
104968
//---------------------------------------------------------------------
 
104969
bool ColladaParserAutoGen15Private::_freeAttributes__arccosh( void* attributeData )
 
104970
{
 
104971
    arccosh__AttributeData* typedAttributeData = static_cast<arccosh__AttributeData*>(attributeData);
 
104972
    if (typedAttributeData->_class.data)
 
104973
    {
 
104974
        mStackMemoryManager.deleteObject();
 
104975
    }
 
104976
 
 
104977
    if (typedAttributeData->unknownAttributes.data)
 
104978
    {
 
104979
        mStackMemoryManager.deleteObject();
 
104980
    }
 
104981
 
 
104982
 
 
104983
    typedAttributeData->~arccosh__AttributeData();
 
104984
 
 
104985
    return true;
 
104986
}
 
104987
 
 
104988
//---------------------------------------------------------------------
 
104989
const arccoth__AttributeData arccoth__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
104990
 
 
104991
//---------------------------------------------------------------------
 
104992
bool ColladaParserAutoGen15Private::_data__arccoth( const ParserChar* text, size_t textLength )
 
104993
{
 
104994
    return true;
 
104995
}
 
104996
 
 
104997
//---------------------------------------------------------------------
 
104998
bool ColladaParserAutoGen15Private::_preBegin__arccoth( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
104999
{
 
105000
#ifdef GENERATEDSAXPARSER_VALIDATION
 
105001
    if ( mValidate )
 
105002
    {
 
105003
 
 
105004
        bool validationResult = _validateBegin__arccoth( attributes, attributeDataPtr, validationDataPtr );
 
105005
        if ( !validationResult ) return false;
 
105006
 
 
105007
    } // validation
 
105008
#endif
 
105009
 
 
105010
arccoth__AttributeData* attributeData = newData<arccoth__AttributeData>(attributeDataPtr);
 
105011
 
 
105012
const ParserChar** attributeArray = attributes.attributes;
 
105013
if ( attributeArray )
 
105014
{
 
105015
    while (true)
 
105016
    {
 
105017
        const ParserChar * attribute = *attributeArray;
 
105018
        if ( !attribute )
 
105019
            break;
 
105020
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
105021
        attributeArray++;
 
105022
        if ( !attributeArray )
 
105023
            return false;
 
105024
        const ParserChar* attributeValue = *attributeArray;
 
105025
        attributeArray++;
 
105026
 
 
105027
 
 
105028
    switch ( hash )
 
105029
    {
 
105030
    case HASH_ATTRIBUTE_ENCODING:
 
105031
    {
 
105032
 
 
105033
attributeData->encoding = attributeValue;
 
105034
 
 
105035
    break;
 
105036
    }
 
105037
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
105038
    {
 
105039
bool failed;
 
105040
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
105041
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
105042
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
105043
        HASH_ELEMENT_ARCCOTH,
 
105044
        HASH_ATTRIBUTE_DEFINITIONURL,
 
105045
        attributeValue))
 
105046
{
 
105047
    return false;
 
105048
}
 
105049
if ( !failed )
 
105050
    attributeData->present_attributes |= arccoth__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
105051
 
 
105052
    break;
 
105053
    }
 
105054
    case HASH_ATTRIBUTE_CLASS:
 
105055
    {
 
105056
bool failed;
 
105057
#ifdef GENERATEDSAXPARSER_VALIDATION
 
105058
    if ( mValidate )
 
105059
    {
 
105060
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_ARCCOTH, HASH_ATTRIBUTE_CLASS);
 
105061
    }
 
105062
    else
 
105063
    {
 
105064
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
105065
    }
 
105066
#else
 
105067
    {
 
105068
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
105069
    } // validation
 
105070
#endif
 
105071
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
105072
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
105073
        HASH_ELEMENT_ARCCOTH,
 
105074
        HASH_ATTRIBUTE_CLASS,
 
105075
        attributeValue))
 
105076
{
 
105077
    return false;
 
105078
}
 
105079
#ifdef GENERATEDSAXPARSER_VALIDATION
 
105080
    if ( mValidate )
 
105081
    {
 
105082
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
105083
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
105084
    {
 
105085
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
105086
            simpleTypeValidationResult,
 
105087
            HASH_ELEMENT_ARCCOTH,
 
105088
            HASH_ATTRIBUTE_CLASS,
 
105089
            attributeValue) )
 
105090
        {
 
105091
            return false;
 
105092
        }
 
105093
    }
 
105094
    } // validation
 
105095
#endif
 
105096
 
 
105097
if ( !failed )
 
105098
    attributeData->present_attributes |= arccoth__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
105099
 
 
105100
    break;
 
105101
    }
 
105102
    case HASH_ATTRIBUTE_STYLE:
 
105103
    {
 
105104
 
 
105105
attributeData->style = attributeValue;
 
105106
 
 
105107
    break;
 
105108
    }
 
105109
    case HASH_ATTRIBUTE_XREF:
 
105110
    {
 
105111
 
 
105112
attributeData->xref = attributeValue;
 
105113
 
 
105114
    break;
 
105115
    }
 
105116
    case HASH_ATTRIBUTE_ID:
 
105117
    {
 
105118
 
 
105119
attributeData->id = attributeValue;
 
105120
 
 
105121
    break;
 
105122
    }
 
105123
    case HASH_ATTRIBUTE_HREF:
 
105124
    {
 
105125
bool failed;
 
105126
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
105127
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
105128
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
105129
        HASH_ELEMENT_ARCCOTH,
 
105130
        HASH_ATTRIBUTE_HREF,
 
105131
        attributeValue))
 
105132
{
 
105133
    return false;
 
105134
}
 
105135
if ( !failed )
 
105136
    attributeData->present_attributes |= arccoth__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
105137
 
 
105138
    break;
 
105139
    }
 
105140
    default:
 
105141
    {
 
105142
        if ( !attributeData->unknownAttributes.data )
 
105143
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
105144
        else
 
105145
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
105146
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
105147
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
105148
        attributeData->unknownAttributes.size += 2;
 
105149
 
 
105150
    }
 
105151
    }
 
105152
    }
 
105153
}
 
105154
if ((attributeData->present_attributes & arccoth__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
105155
{
 
105156
    attributeData->definitionURL = COLLADABU::URI("");
 
105157
}
 
105158
if ((attributeData->present_attributes & arccoth__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
105159
{
 
105160
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
105161
}
 
105162
if ((attributeData->present_attributes & arccoth__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
105163
{
 
105164
    attributeData->href = COLLADABU::URI("");
 
105165
}
 
105166
 
 
105167
 
 
105168
    return true;
 
105169
}
 
105170
 
 
105171
//---------------------------------------------------------------------
 
105172
bool ColladaParserAutoGen15Private::_preEnd__arccoth()
 
105173
{
 
105174
#ifdef GENERATEDSAXPARSER_VALIDATION
 
105175
    if ( mValidate )
 
105176
    {
 
105177
 
 
105178
        bool validationResult = _validateEnd__arccoth();
 
105179
        if ( !validationResult ) return false;
 
105180
 
 
105181
    } // validation
 
105182
#endif
 
105183
 
 
105184
    return true;
 
105185
}
 
105186
 
 
105187
//---------------------------------------------------------------------
 
105188
bool ColladaParserAutoGen15Private::_freeAttributes__arccoth( void* attributeData )
 
105189
{
 
105190
    arccoth__AttributeData* typedAttributeData = static_cast<arccoth__AttributeData*>(attributeData);
 
105191
    if (typedAttributeData->_class.data)
 
105192
    {
 
105193
        mStackMemoryManager.deleteObject();
 
105194
    }
 
105195
 
 
105196
    if (typedAttributeData->unknownAttributes.data)
 
105197
    {
 
105198
        mStackMemoryManager.deleteObject();
 
105199
    }
 
105200
 
 
105201
 
 
105202
    typedAttributeData->~arccoth__AttributeData();
 
105203
 
 
105204
    return true;
 
105205
}
 
105206
 
 
105207
//---------------------------------------------------------------------
 
105208
const arccsch__AttributeData arccsch__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
105209
 
 
105210
//---------------------------------------------------------------------
 
105211
bool ColladaParserAutoGen15Private::_data__arccsch( const ParserChar* text, size_t textLength )
 
105212
{
 
105213
    return true;
 
105214
}
 
105215
 
 
105216
//---------------------------------------------------------------------
 
105217
bool ColladaParserAutoGen15Private::_preBegin__arccsch( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
105218
{
 
105219
#ifdef GENERATEDSAXPARSER_VALIDATION
 
105220
    if ( mValidate )
 
105221
    {
 
105222
 
 
105223
        bool validationResult = _validateBegin__arccsch( attributes, attributeDataPtr, validationDataPtr );
 
105224
        if ( !validationResult ) return false;
 
105225
 
 
105226
    } // validation
 
105227
#endif
 
105228
 
 
105229
arccsch__AttributeData* attributeData = newData<arccsch__AttributeData>(attributeDataPtr);
 
105230
 
 
105231
const ParserChar** attributeArray = attributes.attributes;
 
105232
if ( attributeArray )
 
105233
{
 
105234
    while (true)
 
105235
    {
 
105236
        const ParserChar * attribute = *attributeArray;
 
105237
        if ( !attribute )
 
105238
            break;
 
105239
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
105240
        attributeArray++;
 
105241
        if ( !attributeArray )
 
105242
            return false;
 
105243
        const ParserChar* attributeValue = *attributeArray;
 
105244
        attributeArray++;
 
105245
 
 
105246
 
 
105247
    switch ( hash )
 
105248
    {
 
105249
    case HASH_ATTRIBUTE_ENCODING:
 
105250
    {
 
105251
 
 
105252
attributeData->encoding = attributeValue;
 
105253
 
 
105254
    break;
 
105255
    }
 
105256
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
105257
    {
 
105258
bool failed;
 
105259
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
105260
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
105261
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
105262
        HASH_ELEMENT_ARCCSCH,
 
105263
        HASH_ATTRIBUTE_DEFINITIONURL,
 
105264
        attributeValue))
 
105265
{
 
105266
    return false;
 
105267
}
 
105268
if ( !failed )
 
105269
    attributeData->present_attributes |= arccsch__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
105270
 
 
105271
    break;
 
105272
    }
 
105273
    case HASH_ATTRIBUTE_CLASS:
 
105274
    {
 
105275
bool failed;
 
105276
#ifdef GENERATEDSAXPARSER_VALIDATION
 
105277
    if ( mValidate )
 
105278
    {
 
105279
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_ARCCSCH, HASH_ATTRIBUTE_CLASS);
 
105280
    }
 
105281
    else
 
105282
    {
 
105283
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
105284
    }
 
105285
#else
 
105286
    {
 
105287
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
105288
    } // validation
 
105289
#endif
 
105290
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
105291
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
105292
        HASH_ELEMENT_ARCCSCH,
 
105293
        HASH_ATTRIBUTE_CLASS,
 
105294
        attributeValue))
 
105295
{
 
105296
    return false;
 
105297
}
 
105298
#ifdef GENERATEDSAXPARSER_VALIDATION
 
105299
    if ( mValidate )
 
105300
    {
 
105301
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
105302
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
105303
    {
 
105304
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
105305
            simpleTypeValidationResult,
 
105306
            HASH_ELEMENT_ARCCSCH,
 
105307
            HASH_ATTRIBUTE_CLASS,
 
105308
            attributeValue) )
 
105309
        {
 
105310
            return false;
 
105311
        }
 
105312
    }
 
105313
    } // validation
 
105314
#endif
 
105315
 
 
105316
if ( !failed )
 
105317
    attributeData->present_attributes |= arccsch__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
105318
 
 
105319
    break;
 
105320
    }
 
105321
    case HASH_ATTRIBUTE_STYLE:
 
105322
    {
 
105323
 
 
105324
attributeData->style = attributeValue;
 
105325
 
 
105326
    break;
 
105327
    }
 
105328
    case HASH_ATTRIBUTE_XREF:
 
105329
    {
 
105330
 
 
105331
attributeData->xref = attributeValue;
 
105332
 
 
105333
    break;
 
105334
    }
 
105335
    case HASH_ATTRIBUTE_ID:
 
105336
    {
 
105337
 
 
105338
attributeData->id = attributeValue;
 
105339
 
 
105340
    break;
 
105341
    }
 
105342
    case HASH_ATTRIBUTE_HREF:
 
105343
    {
 
105344
bool failed;
 
105345
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
105346
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
105347
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
105348
        HASH_ELEMENT_ARCCSCH,
 
105349
        HASH_ATTRIBUTE_HREF,
 
105350
        attributeValue))
 
105351
{
 
105352
    return false;
 
105353
}
 
105354
if ( !failed )
 
105355
    attributeData->present_attributes |= arccsch__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
105356
 
 
105357
    break;
 
105358
    }
 
105359
    default:
 
105360
    {
 
105361
        if ( !attributeData->unknownAttributes.data )
 
105362
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
105363
        else
 
105364
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
105365
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
105366
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
105367
        attributeData->unknownAttributes.size += 2;
 
105368
 
 
105369
    }
 
105370
    }
 
105371
    }
 
105372
}
 
105373
if ((attributeData->present_attributes & arccsch__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
105374
{
 
105375
    attributeData->definitionURL = COLLADABU::URI("");
 
105376
}
 
105377
if ((attributeData->present_attributes & arccsch__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
105378
{
 
105379
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
105380
}
 
105381
if ((attributeData->present_attributes & arccsch__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
105382
{
 
105383
    attributeData->href = COLLADABU::URI("");
 
105384
}
 
105385
 
 
105386
 
 
105387
    return true;
 
105388
}
 
105389
 
 
105390
//---------------------------------------------------------------------
 
105391
bool ColladaParserAutoGen15Private::_preEnd__arccsch()
 
105392
{
 
105393
#ifdef GENERATEDSAXPARSER_VALIDATION
 
105394
    if ( mValidate )
 
105395
    {
 
105396
 
 
105397
        bool validationResult = _validateEnd__arccsch();
 
105398
        if ( !validationResult ) return false;
 
105399
 
 
105400
    } // validation
 
105401
#endif
 
105402
 
 
105403
    return true;
 
105404
}
 
105405
 
 
105406
//---------------------------------------------------------------------
 
105407
bool ColladaParserAutoGen15Private::_freeAttributes__arccsch( void* attributeData )
 
105408
{
 
105409
    arccsch__AttributeData* typedAttributeData = static_cast<arccsch__AttributeData*>(attributeData);
 
105410
    if (typedAttributeData->_class.data)
 
105411
    {
 
105412
        mStackMemoryManager.deleteObject();
 
105413
    }
 
105414
 
 
105415
    if (typedAttributeData->unknownAttributes.data)
 
105416
    {
 
105417
        mStackMemoryManager.deleteObject();
 
105418
    }
 
105419
 
 
105420
 
 
105421
    typedAttributeData->~arccsch__AttributeData();
 
105422
 
 
105423
    return true;
 
105424
}
 
105425
 
 
105426
//---------------------------------------------------------------------
 
105427
const arcsech__AttributeData arcsech__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
105428
 
 
105429
//---------------------------------------------------------------------
 
105430
bool ColladaParserAutoGen15Private::_data__arcsech( const ParserChar* text, size_t textLength )
 
105431
{
 
105432
    return true;
 
105433
}
 
105434
 
 
105435
//---------------------------------------------------------------------
 
105436
bool ColladaParserAutoGen15Private::_preBegin__arcsech( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
105437
{
 
105438
#ifdef GENERATEDSAXPARSER_VALIDATION
 
105439
    if ( mValidate )
 
105440
    {
 
105441
 
 
105442
        bool validationResult = _validateBegin__arcsech( attributes, attributeDataPtr, validationDataPtr );
 
105443
        if ( !validationResult ) return false;
 
105444
 
 
105445
    } // validation
 
105446
#endif
 
105447
 
 
105448
arcsech__AttributeData* attributeData = newData<arcsech__AttributeData>(attributeDataPtr);
 
105449
 
 
105450
const ParserChar** attributeArray = attributes.attributes;
 
105451
if ( attributeArray )
 
105452
{
 
105453
    while (true)
 
105454
    {
 
105455
        const ParserChar * attribute = *attributeArray;
 
105456
        if ( !attribute )
 
105457
            break;
 
105458
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
105459
        attributeArray++;
 
105460
        if ( !attributeArray )
 
105461
            return false;
 
105462
        const ParserChar* attributeValue = *attributeArray;
 
105463
        attributeArray++;
 
105464
 
 
105465
 
 
105466
    switch ( hash )
 
105467
    {
 
105468
    case HASH_ATTRIBUTE_ENCODING:
 
105469
    {
 
105470
 
 
105471
attributeData->encoding = attributeValue;
 
105472
 
 
105473
    break;
 
105474
    }
 
105475
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
105476
    {
 
105477
bool failed;
 
105478
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
105479
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
105480
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
105481
        HASH_ELEMENT_ARCSECH,
 
105482
        HASH_ATTRIBUTE_DEFINITIONURL,
 
105483
        attributeValue))
 
105484
{
 
105485
    return false;
 
105486
}
 
105487
if ( !failed )
 
105488
    attributeData->present_attributes |= arcsech__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
105489
 
 
105490
    break;
 
105491
    }
 
105492
    case HASH_ATTRIBUTE_CLASS:
 
105493
    {
 
105494
bool failed;
 
105495
#ifdef GENERATEDSAXPARSER_VALIDATION
 
105496
    if ( mValidate )
 
105497
    {
 
105498
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_ARCSECH, HASH_ATTRIBUTE_CLASS);
 
105499
    }
 
105500
    else
 
105501
    {
 
105502
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
105503
    }
 
105504
#else
 
105505
    {
 
105506
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
105507
    } // validation
 
105508
#endif
 
105509
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
105510
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
105511
        HASH_ELEMENT_ARCSECH,
 
105512
        HASH_ATTRIBUTE_CLASS,
 
105513
        attributeValue))
 
105514
{
 
105515
    return false;
 
105516
}
 
105517
#ifdef GENERATEDSAXPARSER_VALIDATION
 
105518
    if ( mValidate )
 
105519
    {
 
105520
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
105521
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
105522
    {
 
105523
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
105524
            simpleTypeValidationResult,
 
105525
            HASH_ELEMENT_ARCSECH,
 
105526
            HASH_ATTRIBUTE_CLASS,
 
105527
            attributeValue) )
 
105528
        {
 
105529
            return false;
 
105530
        }
 
105531
    }
 
105532
    } // validation
 
105533
#endif
 
105534
 
 
105535
if ( !failed )
 
105536
    attributeData->present_attributes |= arcsech__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
105537
 
 
105538
    break;
 
105539
    }
 
105540
    case HASH_ATTRIBUTE_STYLE:
 
105541
    {
 
105542
 
 
105543
attributeData->style = attributeValue;
 
105544
 
 
105545
    break;
 
105546
    }
 
105547
    case HASH_ATTRIBUTE_XREF:
 
105548
    {
 
105549
 
 
105550
attributeData->xref = attributeValue;
 
105551
 
 
105552
    break;
 
105553
    }
 
105554
    case HASH_ATTRIBUTE_ID:
 
105555
    {
 
105556
 
 
105557
attributeData->id = attributeValue;
 
105558
 
 
105559
    break;
 
105560
    }
 
105561
    case HASH_ATTRIBUTE_HREF:
 
105562
    {
 
105563
bool failed;
 
105564
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
105565
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
105566
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
105567
        HASH_ELEMENT_ARCSECH,
 
105568
        HASH_ATTRIBUTE_HREF,
 
105569
        attributeValue))
 
105570
{
 
105571
    return false;
 
105572
}
 
105573
if ( !failed )
 
105574
    attributeData->present_attributes |= arcsech__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
105575
 
 
105576
    break;
 
105577
    }
 
105578
    default:
 
105579
    {
 
105580
        if ( !attributeData->unknownAttributes.data )
 
105581
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
105582
        else
 
105583
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
105584
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
105585
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
105586
        attributeData->unknownAttributes.size += 2;
 
105587
 
 
105588
    }
 
105589
    }
 
105590
    }
 
105591
}
 
105592
if ((attributeData->present_attributes & arcsech__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
105593
{
 
105594
    attributeData->definitionURL = COLLADABU::URI("");
 
105595
}
 
105596
if ((attributeData->present_attributes & arcsech__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
105597
{
 
105598
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
105599
}
 
105600
if ((attributeData->present_attributes & arcsech__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
105601
{
 
105602
    attributeData->href = COLLADABU::URI("");
 
105603
}
 
105604
 
 
105605
 
 
105606
    return true;
 
105607
}
 
105608
 
 
105609
//---------------------------------------------------------------------
 
105610
bool ColladaParserAutoGen15Private::_preEnd__arcsech()
 
105611
{
 
105612
#ifdef GENERATEDSAXPARSER_VALIDATION
 
105613
    if ( mValidate )
 
105614
    {
 
105615
 
 
105616
        bool validationResult = _validateEnd__arcsech();
 
105617
        if ( !validationResult ) return false;
 
105618
 
 
105619
    } // validation
 
105620
#endif
 
105621
 
 
105622
    return true;
 
105623
}
 
105624
 
 
105625
//---------------------------------------------------------------------
 
105626
bool ColladaParserAutoGen15Private::_freeAttributes__arcsech( void* attributeData )
 
105627
{
 
105628
    arcsech__AttributeData* typedAttributeData = static_cast<arcsech__AttributeData*>(attributeData);
 
105629
    if (typedAttributeData->_class.data)
 
105630
    {
 
105631
        mStackMemoryManager.deleteObject();
 
105632
    }
 
105633
 
 
105634
    if (typedAttributeData->unknownAttributes.data)
 
105635
    {
 
105636
        mStackMemoryManager.deleteObject();
 
105637
    }
 
105638
 
 
105639
 
 
105640
    typedAttributeData->~arcsech__AttributeData();
 
105641
 
 
105642
    return true;
 
105643
}
 
105644
 
 
105645
//---------------------------------------------------------------------
 
105646
const arcsinh__AttributeData arcsinh__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
105647
 
 
105648
//---------------------------------------------------------------------
 
105649
bool ColladaParserAutoGen15Private::_data__arcsinh( const ParserChar* text, size_t textLength )
 
105650
{
 
105651
    return true;
 
105652
}
 
105653
 
 
105654
//---------------------------------------------------------------------
 
105655
bool ColladaParserAutoGen15Private::_preBegin__arcsinh( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
105656
{
 
105657
#ifdef GENERATEDSAXPARSER_VALIDATION
 
105658
    if ( mValidate )
 
105659
    {
 
105660
 
 
105661
        bool validationResult = _validateBegin__arcsinh( attributes, attributeDataPtr, validationDataPtr );
 
105662
        if ( !validationResult ) return false;
 
105663
 
 
105664
    } // validation
 
105665
#endif
 
105666
 
 
105667
arcsinh__AttributeData* attributeData = newData<arcsinh__AttributeData>(attributeDataPtr);
 
105668
 
 
105669
const ParserChar** attributeArray = attributes.attributes;
 
105670
if ( attributeArray )
 
105671
{
 
105672
    while (true)
 
105673
    {
 
105674
        const ParserChar * attribute = *attributeArray;
 
105675
        if ( !attribute )
 
105676
            break;
 
105677
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
105678
        attributeArray++;
 
105679
        if ( !attributeArray )
 
105680
            return false;
 
105681
        const ParserChar* attributeValue = *attributeArray;
 
105682
        attributeArray++;
 
105683
 
 
105684
 
 
105685
    switch ( hash )
 
105686
    {
 
105687
    case HASH_ATTRIBUTE_ENCODING:
 
105688
    {
 
105689
 
 
105690
attributeData->encoding = attributeValue;
 
105691
 
 
105692
    break;
 
105693
    }
 
105694
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
105695
    {
 
105696
bool failed;
 
105697
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
105698
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
105699
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
105700
        HASH_ELEMENT_ARCSINH,
 
105701
        HASH_ATTRIBUTE_DEFINITIONURL,
 
105702
        attributeValue))
 
105703
{
 
105704
    return false;
 
105705
}
 
105706
if ( !failed )
 
105707
    attributeData->present_attributes |= arcsinh__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
105708
 
 
105709
    break;
 
105710
    }
 
105711
    case HASH_ATTRIBUTE_CLASS:
 
105712
    {
 
105713
bool failed;
 
105714
#ifdef GENERATEDSAXPARSER_VALIDATION
 
105715
    if ( mValidate )
 
105716
    {
 
105717
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_ARCSINH, HASH_ATTRIBUTE_CLASS);
 
105718
    }
 
105719
    else
 
105720
    {
 
105721
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
105722
    }
 
105723
#else
 
105724
    {
 
105725
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
105726
    } // validation
 
105727
#endif
 
105728
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
105729
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
105730
        HASH_ELEMENT_ARCSINH,
 
105731
        HASH_ATTRIBUTE_CLASS,
 
105732
        attributeValue))
 
105733
{
 
105734
    return false;
 
105735
}
 
105736
#ifdef GENERATEDSAXPARSER_VALIDATION
 
105737
    if ( mValidate )
 
105738
    {
 
105739
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
105740
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
105741
    {
 
105742
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
105743
            simpleTypeValidationResult,
 
105744
            HASH_ELEMENT_ARCSINH,
 
105745
            HASH_ATTRIBUTE_CLASS,
 
105746
            attributeValue) )
 
105747
        {
 
105748
            return false;
 
105749
        }
 
105750
    }
 
105751
    } // validation
 
105752
#endif
 
105753
 
 
105754
if ( !failed )
 
105755
    attributeData->present_attributes |= arcsinh__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
105756
 
 
105757
    break;
 
105758
    }
 
105759
    case HASH_ATTRIBUTE_STYLE:
 
105760
    {
 
105761
 
 
105762
attributeData->style = attributeValue;
 
105763
 
 
105764
    break;
 
105765
    }
 
105766
    case HASH_ATTRIBUTE_XREF:
 
105767
    {
 
105768
 
 
105769
attributeData->xref = attributeValue;
 
105770
 
 
105771
    break;
 
105772
    }
 
105773
    case HASH_ATTRIBUTE_ID:
 
105774
    {
 
105775
 
 
105776
attributeData->id = attributeValue;
 
105777
 
 
105778
    break;
 
105779
    }
 
105780
    case HASH_ATTRIBUTE_HREF:
 
105781
    {
 
105782
bool failed;
 
105783
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
105784
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
105785
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
105786
        HASH_ELEMENT_ARCSINH,
 
105787
        HASH_ATTRIBUTE_HREF,
 
105788
        attributeValue))
 
105789
{
 
105790
    return false;
 
105791
}
 
105792
if ( !failed )
 
105793
    attributeData->present_attributes |= arcsinh__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
105794
 
 
105795
    break;
 
105796
    }
 
105797
    default:
 
105798
    {
 
105799
        if ( !attributeData->unknownAttributes.data )
 
105800
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
105801
        else
 
105802
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
105803
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
105804
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
105805
        attributeData->unknownAttributes.size += 2;
 
105806
 
 
105807
    }
 
105808
    }
 
105809
    }
 
105810
}
 
105811
if ((attributeData->present_attributes & arcsinh__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
105812
{
 
105813
    attributeData->definitionURL = COLLADABU::URI("");
 
105814
}
 
105815
if ((attributeData->present_attributes & arcsinh__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
105816
{
 
105817
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
105818
}
 
105819
if ((attributeData->present_attributes & arcsinh__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
105820
{
 
105821
    attributeData->href = COLLADABU::URI("");
 
105822
}
 
105823
 
 
105824
 
 
105825
    return true;
 
105826
}
 
105827
 
 
105828
//---------------------------------------------------------------------
 
105829
bool ColladaParserAutoGen15Private::_preEnd__arcsinh()
 
105830
{
 
105831
#ifdef GENERATEDSAXPARSER_VALIDATION
 
105832
    if ( mValidate )
 
105833
    {
 
105834
 
 
105835
        bool validationResult = _validateEnd__arcsinh();
 
105836
        if ( !validationResult ) return false;
 
105837
 
 
105838
    } // validation
 
105839
#endif
 
105840
 
 
105841
    return true;
 
105842
}
 
105843
 
 
105844
//---------------------------------------------------------------------
 
105845
bool ColladaParserAutoGen15Private::_freeAttributes__arcsinh( void* attributeData )
 
105846
{
 
105847
    arcsinh__AttributeData* typedAttributeData = static_cast<arcsinh__AttributeData*>(attributeData);
 
105848
    if (typedAttributeData->_class.data)
 
105849
    {
 
105850
        mStackMemoryManager.deleteObject();
 
105851
    }
 
105852
 
 
105853
    if (typedAttributeData->unknownAttributes.data)
 
105854
    {
 
105855
        mStackMemoryManager.deleteObject();
 
105856
    }
 
105857
 
 
105858
 
 
105859
    typedAttributeData->~arcsinh__AttributeData();
 
105860
 
 
105861
    return true;
 
105862
}
 
105863
 
 
105864
//---------------------------------------------------------------------
 
105865
const arctanh__AttributeData arctanh__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
105866
 
 
105867
//---------------------------------------------------------------------
 
105868
bool ColladaParserAutoGen15Private::_data__arctanh( const ParserChar* text, size_t textLength )
 
105869
{
 
105870
    return true;
 
105871
}
 
105872
 
 
105873
//---------------------------------------------------------------------
 
105874
bool ColladaParserAutoGen15Private::_preBegin__arctanh( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
105875
{
 
105876
#ifdef GENERATEDSAXPARSER_VALIDATION
 
105877
    if ( mValidate )
 
105878
    {
 
105879
 
 
105880
        bool validationResult = _validateBegin__arctanh( attributes, attributeDataPtr, validationDataPtr );
 
105881
        if ( !validationResult ) return false;
 
105882
 
 
105883
    } // validation
 
105884
#endif
 
105885
 
 
105886
arctanh__AttributeData* attributeData = newData<arctanh__AttributeData>(attributeDataPtr);
 
105887
 
 
105888
const ParserChar** attributeArray = attributes.attributes;
 
105889
if ( attributeArray )
 
105890
{
 
105891
    while (true)
 
105892
    {
 
105893
        const ParserChar * attribute = *attributeArray;
 
105894
        if ( !attribute )
 
105895
            break;
 
105896
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
105897
        attributeArray++;
 
105898
        if ( !attributeArray )
 
105899
            return false;
 
105900
        const ParserChar* attributeValue = *attributeArray;
 
105901
        attributeArray++;
 
105902
 
 
105903
 
 
105904
    switch ( hash )
 
105905
    {
 
105906
    case HASH_ATTRIBUTE_ENCODING:
 
105907
    {
 
105908
 
 
105909
attributeData->encoding = attributeValue;
 
105910
 
 
105911
    break;
 
105912
    }
 
105913
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
105914
    {
 
105915
bool failed;
 
105916
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
105917
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
105918
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
105919
        HASH_ELEMENT_ARCTANH,
 
105920
        HASH_ATTRIBUTE_DEFINITIONURL,
 
105921
        attributeValue))
 
105922
{
 
105923
    return false;
 
105924
}
 
105925
if ( !failed )
 
105926
    attributeData->present_attributes |= arctanh__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
105927
 
 
105928
    break;
 
105929
    }
 
105930
    case HASH_ATTRIBUTE_CLASS:
 
105931
    {
 
105932
bool failed;
 
105933
#ifdef GENERATEDSAXPARSER_VALIDATION
 
105934
    if ( mValidate )
 
105935
    {
 
105936
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_ARCTANH, HASH_ATTRIBUTE_CLASS);
 
105937
    }
 
105938
    else
 
105939
    {
 
105940
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
105941
    }
 
105942
#else
 
105943
    {
 
105944
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
105945
    } // validation
 
105946
#endif
 
105947
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
105948
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
105949
        HASH_ELEMENT_ARCTANH,
 
105950
        HASH_ATTRIBUTE_CLASS,
 
105951
        attributeValue))
 
105952
{
 
105953
    return false;
 
105954
}
 
105955
#ifdef GENERATEDSAXPARSER_VALIDATION
 
105956
    if ( mValidate )
 
105957
    {
 
105958
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
105959
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
105960
    {
 
105961
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
105962
            simpleTypeValidationResult,
 
105963
            HASH_ELEMENT_ARCTANH,
 
105964
            HASH_ATTRIBUTE_CLASS,
 
105965
            attributeValue) )
 
105966
        {
 
105967
            return false;
 
105968
        }
 
105969
    }
 
105970
    } // validation
 
105971
#endif
 
105972
 
 
105973
if ( !failed )
 
105974
    attributeData->present_attributes |= arctanh__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
105975
 
 
105976
    break;
 
105977
    }
 
105978
    case HASH_ATTRIBUTE_STYLE:
 
105979
    {
 
105980
 
 
105981
attributeData->style = attributeValue;
 
105982
 
 
105983
    break;
 
105984
    }
 
105985
    case HASH_ATTRIBUTE_XREF:
 
105986
    {
 
105987
 
 
105988
attributeData->xref = attributeValue;
 
105989
 
 
105990
    break;
 
105991
    }
 
105992
    case HASH_ATTRIBUTE_ID:
 
105993
    {
 
105994
 
 
105995
attributeData->id = attributeValue;
 
105996
 
 
105997
    break;
 
105998
    }
 
105999
    case HASH_ATTRIBUTE_HREF:
 
106000
    {
 
106001
bool failed;
 
106002
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
106003
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
106004
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
106005
        HASH_ELEMENT_ARCTANH,
 
106006
        HASH_ATTRIBUTE_HREF,
 
106007
        attributeValue))
 
106008
{
 
106009
    return false;
 
106010
}
 
106011
if ( !failed )
 
106012
    attributeData->present_attributes |= arctanh__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
106013
 
 
106014
    break;
 
106015
    }
 
106016
    default:
 
106017
    {
 
106018
        if ( !attributeData->unknownAttributes.data )
 
106019
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
106020
        else
 
106021
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
106022
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
106023
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
106024
        attributeData->unknownAttributes.size += 2;
 
106025
 
 
106026
    }
 
106027
    }
 
106028
    }
 
106029
}
 
106030
if ((attributeData->present_attributes & arctanh__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
106031
{
 
106032
    attributeData->definitionURL = COLLADABU::URI("");
 
106033
}
 
106034
if ((attributeData->present_attributes & arctanh__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
106035
{
 
106036
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
106037
}
 
106038
if ((attributeData->present_attributes & arctanh__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
106039
{
 
106040
    attributeData->href = COLLADABU::URI("");
 
106041
}
 
106042
 
 
106043
 
 
106044
    return true;
 
106045
}
 
106046
 
 
106047
//---------------------------------------------------------------------
 
106048
bool ColladaParserAutoGen15Private::_preEnd__arctanh()
 
106049
{
 
106050
#ifdef GENERATEDSAXPARSER_VALIDATION
 
106051
    if ( mValidate )
 
106052
    {
 
106053
 
 
106054
        bool validationResult = _validateEnd__arctanh();
 
106055
        if ( !validationResult ) return false;
 
106056
 
 
106057
    } // validation
 
106058
#endif
 
106059
 
 
106060
    return true;
 
106061
}
 
106062
 
 
106063
//---------------------------------------------------------------------
 
106064
bool ColladaParserAutoGen15Private::_freeAttributes__arctanh( void* attributeData )
 
106065
{
 
106066
    arctanh__AttributeData* typedAttributeData = static_cast<arctanh__AttributeData*>(attributeData);
 
106067
    if (typedAttributeData->_class.data)
 
106068
    {
 
106069
        mStackMemoryManager.deleteObject();
 
106070
    }
 
106071
 
 
106072
    if (typedAttributeData->unknownAttributes.data)
 
106073
    {
 
106074
        mStackMemoryManager.deleteObject();
 
106075
    }
 
106076
 
 
106077
 
 
106078
    typedAttributeData->~arctanh__AttributeData();
 
106079
 
 
106080
    return true;
 
106081
}
 
106082
 
 
106083
//---------------------------------------------------------------------
 
106084
const int____int_type____mathml__AttributeData int____int_type____mathml__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
106085
 
 
106086
//---------------------------------------------------------------------
 
106087
bool ColladaParserAutoGen15Private::_data__int____int_type____mathml( const ParserChar* text, size_t textLength )
 
106088
{
 
106089
    return true;
 
106090
}
 
106091
 
 
106092
//---------------------------------------------------------------------
 
106093
bool ColladaParserAutoGen15Private::_preBegin__int____int_type____mathml( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
106094
{
 
106095
#ifdef GENERATEDSAXPARSER_VALIDATION
 
106096
    if ( mValidate )
 
106097
    {
 
106098
 
 
106099
        bool validationResult = _validateBegin__int____int_type____mathml( attributes, attributeDataPtr, validationDataPtr );
 
106100
        if ( !validationResult ) return false;
 
106101
 
 
106102
    } // validation
 
106103
#endif
 
106104
 
 
106105
int____int_type____mathml__AttributeData* attributeData = newData<int____int_type____mathml__AttributeData>(attributeDataPtr);
 
106106
 
 
106107
const ParserChar** attributeArray = attributes.attributes;
 
106108
if ( attributeArray )
 
106109
{
 
106110
    while (true)
 
106111
    {
 
106112
        const ParserChar * attribute = *attributeArray;
 
106113
        if ( !attribute )
 
106114
            break;
 
106115
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
106116
        attributeArray++;
 
106117
        if ( !attributeArray )
 
106118
            return false;
 
106119
        const ParserChar* attributeValue = *attributeArray;
 
106120
        attributeArray++;
 
106121
 
 
106122
 
 
106123
    switch ( hash )
 
106124
    {
 
106125
    case HASH_ATTRIBUTE_ENCODING:
 
106126
    {
 
106127
 
 
106128
attributeData->encoding = attributeValue;
 
106129
 
 
106130
    break;
 
106131
    }
 
106132
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
106133
    {
 
106134
bool failed;
 
106135
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
106136
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
106137
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
106138
        HASH_ELEMENT_INT,
 
106139
        HASH_ATTRIBUTE_DEFINITIONURL,
 
106140
        attributeValue))
 
106141
{
 
106142
    return false;
 
106143
}
 
106144
if ( !failed )
 
106145
    attributeData->present_attributes |= int____int_type____mathml__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
106146
 
 
106147
    break;
 
106148
    }
 
106149
    case HASH_ATTRIBUTE_CLASS:
 
106150
    {
 
106151
bool failed;
 
106152
#ifdef GENERATEDSAXPARSER_VALIDATION
 
106153
    if ( mValidate )
 
106154
    {
 
106155
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_INT, HASH_ATTRIBUTE_CLASS);
 
106156
    }
 
106157
    else
 
106158
    {
 
106159
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
106160
    }
 
106161
#else
 
106162
    {
 
106163
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
106164
    } // validation
 
106165
#endif
 
106166
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
106167
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
106168
        HASH_ELEMENT_INT,
 
106169
        HASH_ATTRIBUTE_CLASS,
 
106170
        attributeValue))
 
106171
{
 
106172
    return false;
 
106173
}
 
106174
#ifdef GENERATEDSAXPARSER_VALIDATION
 
106175
    if ( mValidate )
 
106176
    {
 
106177
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
106178
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
106179
    {
 
106180
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
106181
            simpleTypeValidationResult,
 
106182
            HASH_ELEMENT_INT,
 
106183
            HASH_ATTRIBUTE_CLASS,
 
106184
            attributeValue) )
 
106185
        {
 
106186
            return false;
 
106187
        }
 
106188
    }
 
106189
    } // validation
 
106190
#endif
 
106191
 
 
106192
if ( !failed )
 
106193
    attributeData->present_attributes |= int____int_type____mathml__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
106194
 
 
106195
    break;
 
106196
    }
 
106197
    case HASH_ATTRIBUTE_STYLE:
 
106198
    {
 
106199
 
 
106200
attributeData->style = attributeValue;
 
106201
 
 
106202
    break;
 
106203
    }
 
106204
    case HASH_ATTRIBUTE_XREF:
 
106205
    {
 
106206
 
 
106207
attributeData->xref = attributeValue;
 
106208
 
 
106209
    break;
 
106210
    }
 
106211
    case HASH_ATTRIBUTE_ID:
 
106212
    {
 
106213
 
 
106214
attributeData->id = attributeValue;
 
106215
 
 
106216
    break;
 
106217
    }
 
106218
    case HASH_ATTRIBUTE_HREF:
 
106219
    {
 
106220
bool failed;
 
106221
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
106222
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
106223
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
106224
        HASH_ELEMENT_INT,
 
106225
        HASH_ATTRIBUTE_HREF,
 
106226
        attributeValue))
 
106227
{
 
106228
    return false;
 
106229
}
 
106230
if ( !failed )
 
106231
    attributeData->present_attributes |= int____int_type____mathml__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
106232
 
 
106233
    break;
 
106234
    }
 
106235
    default:
 
106236
    {
 
106237
        if ( !attributeData->unknownAttributes.data )
 
106238
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
106239
        else
 
106240
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
106241
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
106242
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
106243
        attributeData->unknownAttributes.size += 2;
 
106244
 
 
106245
    }
 
106246
    }
 
106247
    }
 
106248
}
 
106249
if ((attributeData->present_attributes & int____int_type____mathml__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
106250
{
 
106251
    attributeData->definitionURL = COLLADABU::URI("");
 
106252
}
 
106253
if ((attributeData->present_attributes & int____int_type____mathml__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
106254
{
 
106255
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
106256
}
 
106257
if ((attributeData->present_attributes & int____int_type____mathml__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
106258
{
 
106259
    attributeData->href = COLLADABU::URI("");
 
106260
}
 
106261
 
 
106262
 
 
106263
    return true;
 
106264
}
 
106265
 
 
106266
//---------------------------------------------------------------------
 
106267
bool ColladaParserAutoGen15Private::_preEnd__int____int_type____mathml()
 
106268
{
 
106269
#ifdef GENERATEDSAXPARSER_VALIDATION
 
106270
    if ( mValidate )
 
106271
    {
 
106272
 
 
106273
        bool validationResult = _validateEnd__int____int_type____mathml();
 
106274
        if ( !validationResult ) return false;
 
106275
 
 
106276
    } // validation
 
106277
#endif
 
106278
 
 
106279
    return true;
 
106280
}
 
106281
 
 
106282
//---------------------------------------------------------------------
 
106283
bool ColladaParserAutoGen15Private::_freeAttributes__int____int_type____mathml( void* attributeData )
 
106284
{
 
106285
    int____int_type____mathml__AttributeData* typedAttributeData = static_cast<int____int_type____mathml__AttributeData*>(attributeData);
 
106286
    if (typedAttributeData->_class.data)
 
106287
    {
 
106288
        mStackMemoryManager.deleteObject();
 
106289
    }
 
106290
 
 
106291
    if (typedAttributeData->unknownAttributes.data)
 
106292
    {
 
106293
        mStackMemoryManager.deleteObject();
 
106294
    }
 
106295
 
 
106296
 
 
106297
    typedAttributeData->~int____int_type____mathml__AttributeData();
 
106298
 
 
106299
    return true;
 
106300
}
 
106301
 
 
106302
//---------------------------------------------------------------------
 
106303
const diff__AttributeData diff__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
106304
 
 
106305
//---------------------------------------------------------------------
 
106306
bool ColladaParserAutoGen15Private::_data__diff( const ParserChar* text, size_t textLength )
 
106307
{
 
106308
    return true;
 
106309
}
 
106310
 
 
106311
//---------------------------------------------------------------------
 
106312
bool ColladaParserAutoGen15Private::_preBegin__diff( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
106313
{
 
106314
#ifdef GENERATEDSAXPARSER_VALIDATION
 
106315
    if ( mValidate )
 
106316
    {
 
106317
 
 
106318
        bool validationResult = _validateBegin__diff( attributes, attributeDataPtr, validationDataPtr );
 
106319
        if ( !validationResult ) return false;
 
106320
 
 
106321
    } // validation
 
106322
#endif
 
106323
 
 
106324
diff__AttributeData* attributeData = newData<diff__AttributeData>(attributeDataPtr);
 
106325
 
 
106326
const ParserChar** attributeArray = attributes.attributes;
 
106327
if ( attributeArray )
 
106328
{
 
106329
    while (true)
 
106330
    {
 
106331
        const ParserChar * attribute = *attributeArray;
 
106332
        if ( !attribute )
 
106333
            break;
 
106334
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
106335
        attributeArray++;
 
106336
        if ( !attributeArray )
 
106337
            return false;
 
106338
        const ParserChar* attributeValue = *attributeArray;
 
106339
        attributeArray++;
 
106340
 
 
106341
 
 
106342
    switch ( hash )
 
106343
    {
 
106344
    case HASH_ATTRIBUTE_ENCODING:
 
106345
    {
 
106346
 
 
106347
attributeData->encoding = attributeValue;
 
106348
 
 
106349
    break;
 
106350
    }
 
106351
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
106352
    {
 
106353
bool failed;
 
106354
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
106355
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
106356
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
106357
        HASH_ELEMENT_DIFF,
 
106358
        HASH_ATTRIBUTE_DEFINITIONURL,
 
106359
        attributeValue))
 
106360
{
 
106361
    return false;
 
106362
}
 
106363
if ( !failed )
 
106364
    attributeData->present_attributes |= diff__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
106365
 
 
106366
    break;
 
106367
    }
 
106368
    case HASH_ATTRIBUTE_CLASS:
 
106369
    {
 
106370
bool failed;
 
106371
#ifdef GENERATEDSAXPARSER_VALIDATION
 
106372
    if ( mValidate )
 
106373
    {
 
106374
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_DIFF, HASH_ATTRIBUTE_CLASS);
 
106375
    }
 
106376
    else
 
106377
    {
 
106378
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
106379
    }
 
106380
#else
 
106381
    {
 
106382
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
106383
    } // validation
 
106384
#endif
 
106385
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
106386
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
106387
        HASH_ELEMENT_DIFF,
 
106388
        HASH_ATTRIBUTE_CLASS,
 
106389
        attributeValue))
 
106390
{
 
106391
    return false;
 
106392
}
 
106393
#ifdef GENERATEDSAXPARSER_VALIDATION
 
106394
    if ( mValidate )
 
106395
    {
 
106396
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
106397
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
106398
    {
 
106399
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
106400
            simpleTypeValidationResult,
 
106401
            HASH_ELEMENT_DIFF,
 
106402
            HASH_ATTRIBUTE_CLASS,
 
106403
            attributeValue) )
 
106404
        {
 
106405
            return false;
 
106406
        }
 
106407
    }
 
106408
    } // validation
 
106409
#endif
 
106410
 
 
106411
if ( !failed )
 
106412
    attributeData->present_attributes |= diff__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
106413
 
 
106414
    break;
 
106415
    }
 
106416
    case HASH_ATTRIBUTE_STYLE:
 
106417
    {
 
106418
 
 
106419
attributeData->style = attributeValue;
 
106420
 
 
106421
    break;
 
106422
    }
 
106423
    case HASH_ATTRIBUTE_XREF:
 
106424
    {
 
106425
 
 
106426
attributeData->xref = attributeValue;
 
106427
 
 
106428
    break;
 
106429
    }
 
106430
    case HASH_ATTRIBUTE_ID:
 
106431
    {
 
106432
 
 
106433
attributeData->id = attributeValue;
 
106434
 
 
106435
    break;
 
106436
    }
 
106437
    case HASH_ATTRIBUTE_HREF:
 
106438
    {
 
106439
bool failed;
 
106440
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
106441
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
106442
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
106443
        HASH_ELEMENT_DIFF,
 
106444
        HASH_ATTRIBUTE_HREF,
 
106445
        attributeValue))
 
106446
{
 
106447
    return false;
 
106448
}
 
106449
if ( !failed )
 
106450
    attributeData->present_attributes |= diff__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
106451
 
 
106452
    break;
 
106453
    }
 
106454
    default:
 
106455
    {
 
106456
        if ( !attributeData->unknownAttributes.data )
 
106457
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
106458
        else
 
106459
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
106460
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
106461
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
106462
        attributeData->unknownAttributes.size += 2;
 
106463
 
 
106464
    }
 
106465
    }
 
106466
    }
 
106467
}
 
106468
if ((attributeData->present_attributes & diff__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
106469
{
 
106470
    attributeData->definitionURL = COLLADABU::URI("");
 
106471
}
 
106472
if ((attributeData->present_attributes & diff__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
106473
{
 
106474
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
106475
}
 
106476
if ((attributeData->present_attributes & diff__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
106477
{
 
106478
    attributeData->href = COLLADABU::URI("");
 
106479
}
 
106480
 
 
106481
 
 
106482
    return true;
 
106483
}
 
106484
 
 
106485
//---------------------------------------------------------------------
 
106486
bool ColladaParserAutoGen15Private::_preEnd__diff()
 
106487
{
 
106488
#ifdef GENERATEDSAXPARSER_VALIDATION
 
106489
    if ( mValidate )
 
106490
    {
 
106491
 
 
106492
        bool validationResult = _validateEnd__diff();
 
106493
        if ( !validationResult ) return false;
 
106494
 
 
106495
    } // validation
 
106496
#endif
 
106497
 
 
106498
    return true;
 
106499
}
 
106500
 
 
106501
//---------------------------------------------------------------------
 
106502
bool ColladaParserAutoGen15Private::_freeAttributes__diff( void* attributeData )
 
106503
{
 
106504
    diff__AttributeData* typedAttributeData = static_cast<diff__AttributeData*>(attributeData);
 
106505
    if (typedAttributeData->_class.data)
 
106506
    {
 
106507
        mStackMemoryManager.deleteObject();
 
106508
    }
 
106509
 
 
106510
    if (typedAttributeData->unknownAttributes.data)
 
106511
    {
 
106512
        mStackMemoryManager.deleteObject();
 
106513
    }
 
106514
 
 
106515
 
 
106516
    typedAttributeData->~diff__AttributeData();
 
106517
 
 
106518
    return true;
 
106519
}
 
106520
 
 
106521
//---------------------------------------------------------------------
 
106522
const partialdiff__AttributeData partialdiff__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
106523
 
 
106524
//---------------------------------------------------------------------
 
106525
bool ColladaParserAutoGen15Private::_data__partialdiff( const ParserChar* text, size_t textLength )
 
106526
{
 
106527
    return true;
 
106528
}
 
106529
 
 
106530
//---------------------------------------------------------------------
 
106531
bool ColladaParserAutoGen15Private::_preBegin__partialdiff( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
106532
{
 
106533
#ifdef GENERATEDSAXPARSER_VALIDATION
 
106534
    if ( mValidate )
 
106535
    {
 
106536
 
 
106537
        bool validationResult = _validateBegin__partialdiff( attributes, attributeDataPtr, validationDataPtr );
 
106538
        if ( !validationResult ) return false;
 
106539
 
 
106540
    } // validation
 
106541
#endif
 
106542
 
 
106543
partialdiff__AttributeData* attributeData = newData<partialdiff__AttributeData>(attributeDataPtr);
 
106544
 
 
106545
const ParserChar** attributeArray = attributes.attributes;
 
106546
if ( attributeArray )
 
106547
{
 
106548
    while (true)
 
106549
    {
 
106550
        const ParserChar * attribute = *attributeArray;
 
106551
        if ( !attribute )
 
106552
            break;
 
106553
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
106554
        attributeArray++;
 
106555
        if ( !attributeArray )
 
106556
            return false;
 
106557
        const ParserChar* attributeValue = *attributeArray;
 
106558
        attributeArray++;
 
106559
 
 
106560
 
 
106561
    switch ( hash )
 
106562
    {
 
106563
    case HASH_ATTRIBUTE_ENCODING:
 
106564
    {
 
106565
 
 
106566
attributeData->encoding = attributeValue;
 
106567
 
 
106568
    break;
 
106569
    }
 
106570
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
106571
    {
 
106572
bool failed;
 
106573
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
106574
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
106575
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
106576
        HASH_ELEMENT_PARTIALDIFF,
 
106577
        HASH_ATTRIBUTE_DEFINITIONURL,
 
106578
        attributeValue))
 
106579
{
 
106580
    return false;
 
106581
}
 
106582
if ( !failed )
 
106583
    attributeData->present_attributes |= partialdiff__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
106584
 
 
106585
    break;
 
106586
    }
 
106587
    case HASH_ATTRIBUTE_CLASS:
 
106588
    {
 
106589
bool failed;
 
106590
#ifdef GENERATEDSAXPARSER_VALIDATION
 
106591
    if ( mValidate )
 
106592
    {
 
106593
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_PARTIALDIFF, HASH_ATTRIBUTE_CLASS);
 
106594
    }
 
106595
    else
 
106596
    {
 
106597
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
106598
    }
 
106599
#else
 
106600
    {
 
106601
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
106602
    } // validation
 
106603
#endif
 
106604
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
106605
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
106606
        HASH_ELEMENT_PARTIALDIFF,
 
106607
        HASH_ATTRIBUTE_CLASS,
 
106608
        attributeValue))
 
106609
{
 
106610
    return false;
 
106611
}
 
106612
#ifdef GENERATEDSAXPARSER_VALIDATION
 
106613
    if ( mValidate )
 
106614
    {
 
106615
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
106616
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
106617
    {
 
106618
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
106619
            simpleTypeValidationResult,
 
106620
            HASH_ELEMENT_PARTIALDIFF,
 
106621
            HASH_ATTRIBUTE_CLASS,
 
106622
            attributeValue) )
 
106623
        {
 
106624
            return false;
 
106625
        }
 
106626
    }
 
106627
    } // validation
 
106628
#endif
 
106629
 
 
106630
if ( !failed )
 
106631
    attributeData->present_attributes |= partialdiff__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
106632
 
 
106633
    break;
 
106634
    }
 
106635
    case HASH_ATTRIBUTE_STYLE:
 
106636
    {
 
106637
 
 
106638
attributeData->style = attributeValue;
 
106639
 
 
106640
    break;
 
106641
    }
 
106642
    case HASH_ATTRIBUTE_XREF:
 
106643
    {
 
106644
 
 
106645
attributeData->xref = attributeValue;
 
106646
 
 
106647
    break;
 
106648
    }
 
106649
    case HASH_ATTRIBUTE_ID:
 
106650
    {
 
106651
 
 
106652
attributeData->id = attributeValue;
 
106653
 
 
106654
    break;
 
106655
    }
 
106656
    case HASH_ATTRIBUTE_HREF:
 
106657
    {
 
106658
bool failed;
 
106659
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
106660
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
106661
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
106662
        HASH_ELEMENT_PARTIALDIFF,
 
106663
        HASH_ATTRIBUTE_HREF,
 
106664
        attributeValue))
 
106665
{
 
106666
    return false;
 
106667
}
 
106668
if ( !failed )
 
106669
    attributeData->present_attributes |= partialdiff__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
106670
 
 
106671
    break;
 
106672
    }
 
106673
    default:
 
106674
    {
 
106675
        if ( !attributeData->unknownAttributes.data )
 
106676
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
106677
        else
 
106678
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
106679
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
106680
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
106681
        attributeData->unknownAttributes.size += 2;
 
106682
 
 
106683
    }
 
106684
    }
 
106685
    }
 
106686
}
 
106687
if ((attributeData->present_attributes & partialdiff__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
106688
{
 
106689
    attributeData->definitionURL = COLLADABU::URI("");
 
106690
}
 
106691
if ((attributeData->present_attributes & partialdiff__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
106692
{
 
106693
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
106694
}
 
106695
if ((attributeData->present_attributes & partialdiff__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
106696
{
 
106697
    attributeData->href = COLLADABU::URI("");
 
106698
}
 
106699
 
 
106700
 
 
106701
    return true;
 
106702
}
 
106703
 
 
106704
//---------------------------------------------------------------------
 
106705
bool ColladaParserAutoGen15Private::_preEnd__partialdiff()
 
106706
{
 
106707
#ifdef GENERATEDSAXPARSER_VALIDATION
 
106708
    if ( mValidate )
 
106709
    {
 
106710
 
 
106711
        bool validationResult = _validateEnd__partialdiff();
 
106712
        if ( !validationResult ) return false;
 
106713
 
 
106714
    } // validation
 
106715
#endif
 
106716
 
 
106717
    return true;
 
106718
}
 
106719
 
 
106720
//---------------------------------------------------------------------
 
106721
bool ColladaParserAutoGen15Private::_freeAttributes__partialdiff( void* attributeData )
 
106722
{
 
106723
    partialdiff__AttributeData* typedAttributeData = static_cast<partialdiff__AttributeData*>(attributeData);
 
106724
    if (typedAttributeData->_class.data)
 
106725
    {
 
106726
        mStackMemoryManager.deleteObject();
 
106727
    }
 
106728
 
 
106729
    if (typedAttributeData->unknownAttributes.data)
 
106730
    {
 
106731
        mStackMemoryManager.deleteObject();
 
106732
    }
 
106733
 
 
106734
 
 
106735
    typedAttributeData->~partialdiff__AttributeData();
 
106736
 
 
106737
    return true;
 
106738
}
 
106739
 
 
106740
//---------------------------------------------------------------------
 
106741
const limit__AttributeData limit__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
106742
 
 
106743
//---------------------------------------------------------------------
 
106744
bool ColladaParserAutoGen15Private::_data__limit( const ParserChar* text, size_t textLength )
 
106745
{
 
106746
    return true;
 
106747
}
 
106748
 
 
106749
//---------------------------------------------------------------------
 
106750
bool ColladaParserAutoGen15Private::_preBegin__limit( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
106751
{
 
106752
#ifdef GENERATEDSAXPARSER_VALIDATION
 
106753
    if ( mValidate )
 
106754
    {
 
106755
 
 
106756
        bool validationResult = _validateBegin__limit( attributes, attributeDataPtr, validationDataPtr );
 
106757
        if ( !validationResult ) return false;
 
106758
 
 
106759
    } // validation
 
106760
#endif
 
106761
 
 
106762
limit__AttributeData* attributeData = newData<limit__AttributeData>(attributeDataPtr);
 
106763
 
 
106764
const ParserChar** attributeArray = attributes.attributes;
 
106765
if ( attributeArray )
 
106766
{
 
106767
    while (true)
 
106768
    {
 
106769
        const ParserChar * attribute = *attributeArray;
 
106770
        if ( !attribute )
 
106771
            break;
 
106772
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
106773
        attributeArray++;
 
106774
        if ( !attributeArray )
 
106775
            return false;
 
106776
        const ParserChar* attributeValue = *attributeArray;
 
106777
        attributeArray++;
 
106778
 
 
106779
 
 
106780
    switch ( hash )
 
106781
    {
 
106782
    case HASH_ATTRIBUTE_ENCODING:
 
106783
    {
 
106784
 
 
106785
attributeData->encoding = attributeValue;
 
106786
 
 
106787
    break;
 
106788
    }
 
106789
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
106790
    {
 
106791
bool failed;
 
106792
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
106793
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
106794
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
106795
        HASH_ELEMENT_LIMIT,
 
106796
        HASH_ATTRIBUTE_DEFINITIONURL,
 
106797
        attributeValue))
 
106798
{
 
106799
    return false;
 
106800
}
 
106801
if ( !failed )
 
106802
    attributeData->present_attributes |= limit__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
106803
 
 
106804
    break;
 
106805
    }
 
106806
    case HASH_ATTRIBUTE_CLASS:
 
106807
    {
 
106808
bool failed;
 
106809
#ifdef GENERATEDSAXPARSER_VALIDATION
 
106810
    if ( mValidate )
 
106811
    {
 
106812
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_LIMIT, HASH_ATTRIBUTE_CLASS);
 
106813
    }
 
106814
    else
 
106815
    {
 
106816
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
106817
    }
 
106818
#else
 
106819
    {
 
106820
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
106821
    } // validation
 
106822
#endif
 
106823
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
106824
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
106825
        HASH_ELEMENT_LIMIT,
 
106826
        HASH_ATTRIBUTE_CLASS,
 
106827
        attributeValue))
 
106828
{
 
106829
    return false;
 
106830
}
 
106831
#ifdef GENERATEDSAXPARSER_VALIDATION
 
106832
    if ( mValidate )
 
106833
    {
 
106834
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
106835
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
106836
    {
 
106837
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
106838
            simpleTypeValidationResult,
 
106839
            HASH_ELEMENT_LIMIT,
 
106840
            HASH_ATTRIBUTE_CLASS,
 
106841
            attributeValue) )
 
106842
        {
 
106843
            return false;
 
106844
        }
 
106845
    }
 
106846
    } // validation
 
106847
#endif
 
106848
 
 
106849
if ( !failed )
 
106850
    attributeData->present_attributes |= limit__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
106851
 
 
106852
    break;
 
106853
    }
 
106854
    case HASH_ATTRIBUTE_STYLE:
 
106855
    {
 
106856
 
 
106857
attributeData->style = attributeValue;
 
106858
 
 
106859
    break;
 
106860
    }
 
106861
    case HASH_ATTRIBUTE_XREF:
 
106862
    {
 
106863
 
 
106864
attributeData->xref = attributeValue;
 
106865
 
 
106866
    break;
 
106867
    }
 
106868
    case HASH_ATTRIBUTE_ID:
 
106869
    {
 
106870
 
 
106871
attributeData->id = attributeValue;
 
106872
 
 
106873
    break;
 
106874
    }
 
106875
    case HASH_ATTRIBUTE_HREF:
 
106876
    {
 
106877
bool failed;
 
106878
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
106879
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
106880
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
106881
        HASH_ELEMENT_LIMIT,
 
106882
        HASH_ATTRIBUTE_HREF,
 
106883
        attributeValue))
 
106884
{
 
106885
    return false;
 
106886
}
 
106887
if ( !failed )
 
106888
    attributeData->present_attributes |= limit__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
106889
 
 
106890
    break;
 
106891
    }
 
106892
    default:
 
106893
    {
 
106894
        if ( !attributeData->unknownAttributes.data )
 
106895
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
106896
        else
 
106897
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
106898
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
106899
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
106900
        attributeData->unknownAttributes.size += 2;
 
106901
 
 
106902
    }
 
106903
    }
 
106904
    }
 
106905
}
 
106906
if ((attributeData->present_attributes & limit__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
106907
{
 
106908
    attributeData->definitionURL = COLLADABU::URI("");
 
106909
}
 
106910
if ((attributeData->present_attributes & limit__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
106911
{
 
106912
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
106913
}
 
106914
if ((attributeData->present_attributes & limit__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
106915
{
 
106916
    attributeData->href = COLLADABU::URI("");
 
106917
}
 
106918
 
 
106919
 
 
106920
    return true;
 
106921
}
 
106922
 
 
106923
//---------------------------------------------------------------------
 
106924
bool ColladaParserAutoGen15Private::_preEnd__limit()
 
106925
{
 
106926
#ifdef GENERATEDSAXPARSER_VALIDATION
 
106927
    if ( mValidate )
 
106928
    {
 
106929
 
 
106930
        bool validationResult = _validateEnd__limit();
 
106931
        if ( !validationResult ) return false;
 
106932
 
 
106933
    } // validation
 
106934
#endif
 
106935
 
 
106936
    return true;
 
106937
}
 
106938
 
 
106939
//---------------------------------------------------------------------
 
106940
bool ColladaParserAutoGen15Private::_freeAttributes__limit( void* attributeData )
 
106941
{
 
106942
    limit__AttributeData* typedAttributeData = static_cast<limit__AttributeData*>(attributeData);
 
106943
    if (typedAttributeData->_class.data)
 
106944
    {
 
106945
        mStackMemoryManager.deleteObject();
 
106946
    }
 
106947
 
 
106948
    if (typedAttributeData->unknownAttributes.data)
 
106949
    {
 
106950
        mStackMemoryManager.deleteObject();
 
106951
    }
 
106952
 
 
106953
 
 
106954
    typedAttributeData->~limit__AttributeData();
 
106955
 
 
106956
    return true;
 
106957
}
 
106958
 
 
106959
//---------------------------------------------------------------------
 
106960
const lowlimit__AttributeData lowlimit__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
106961
 
 
106962
//---------------------------------------------------------------------
 
106963
bool ColladaParserAutoGen15Private::_data__lowlimit( const ParserChar* text, size_t textLength )
 
106964
{
 
106965
    return true;
 
106966
}
 
106967
 
 
106968
//---------------------------------------------------------------------
 
106969
bool ColladaParserAutoGen15Private::_preBegin__lowlimit( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
106970
{
 
106971
#ifdef GENERATEDSAXPARSER_VALIDATION
 
106972
    if ( mValidate )
 
106973
    {
 
106974
 
 
106975
        bool validationResult = _validateBegin__lowlimit( attributes, attributeDataPtr, validationDataPtr );
 
106976
        if ( !validationResult ) return false;
 
106977
 
 
106978
    } // validation
 
106979
#endif
 
106980
 
 
106981
lowlimit__AttributeData* attributeData = newData<lowlimit__AttributeData>(attributeDataPtr);
 
106982
 
 
106983
const ParserChar** attributeArray = attributes.attributes;
 
106984
if ( attributeArray )
 
106985
{
 
106986
    while (true)
 
106987
    {
 
106988
        const ParserChar * attribute = *attributeArray;
 
106989
        if ( !attribute )
 
106990
            break;
 
106991
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
106992
        attributeArray++;
 
106993
        if ( !attributeArray )
 
106994
            return false;
 
106995
        const ParserChar* attributeValue = *attributeArray;
 
106996
        attributeArray++;
 
106997
 
 
106998
 
 
106999
    switch ( hash )
 
107000
    {
 
107001
    case HASH_ATTRIBUTE_ENCODING:
 
107002
    {
 
107003
 
 
107004
attributeData->encoding = attributeValue;
 
107005
 
 
107006
    break;
 
107007
    }
 
107008
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
107009
    {
 
107010
bool failed;
 
107011
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
107012
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
107013
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
107014
        HASH_ELEMENT_LOWLIMIT,
 
107015
        HASH_ATTRIBUTE_DEFINITIONURL,
 
107016
        attributeValue))
 
107017
{
 
107018
    return false;
 
107019
}
 
107020
if ( !failed )
 
107021
    attributeData->present_attributes |= lowlimit__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
107022
 
 
107023
    break;
 
107024
    }
 
107025
    case HASH_ATTRIBUTE_CLASS:
 
107026
    {
 
107027
bool failed;
 
107028
#ifdef GENERATEDSAXPARSER_VALIDATION
 
107029
    if ( mValidate )
 
107030
    {
 
107031
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_LOWLIMIT, HASH_ATTRIBUTE_CLASS);
 
107032
    }
 
107033
    else
 
107034
    {
 
107035
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
107036
    }
 
107037
#else
 
107038
    {
 
107039
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
107040
    } // validation
 
107041
#endif
 
107042
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
107043
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
107044
        HASH_ELEMENT_LOWLIMIT,
 
107045
        HASH_ATTRIBUTE_CLASS,
 
107046
        attributeValue))
 
107047
{
 
107048
    return false;
 
107049
}
 
107050
#ifdef GENERATEDSAXPARSER_VALIDATION
 
107051
    if ( mValidate )
 
107052
    {
 
107053
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
107054
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
107055
    {
 
107056
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
107057
            simpleTypeValidationResult,
 
107058
            HASH_ELEMENT_LOWLIMIT,
 
107059
            HASH_ATTRIBUTE_CLASS,
 
107060
            attributeValue) )
 
107061
        {
 
107062
            return false;
 
107063
        }
 
107064
    }
 
107065
    } // validation
 
107066
#endif
 
107067
 
 
107068
if ( !failed )
 
107069
    attributeData->present_attributes |= lowlimit__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
107070
 
 
107071
    break;
 
107072
    }
 
107073
    case HASH_ATTRIBUTE_STYLE:
 
107074
    {
 
107075
 
 
107076
attributeData->style = attributeValue;
 
107077
 
 
107078
    break;
 
107079
    }
 
107080
    case HASH_ATTRIBUTE_XREF:
 
107081
    {
 
107082
 
 
107083
attributeData->xref = attributeValue;
 
107084
 
 
107085
    break;
 
107086
    }
 
107087
    case HASH_ATTRIBUTE_ID:
 
107088
    {
 
107089
 
 
107090
attributeData->id = attributeValue;
 
107091
 
 
107092
    break;
 
107093
    }
 
107094
    case HASH_ATTRIBUTE_HREF:
 
107095
    {
 
107096
bool failed;
 
107097
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
107098
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
107099
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
107100
        HASH_ELEMENT_LOWLIMIT,
 
107101
        HASH_ATTRIBUTE_HREF,
 
107102
        attributeValue))
 
107103
{
 
107104
    return false;
 
107105
}
 
107106
if ( !failed )
 
107107
    attributeData->present_attributes |= lowlimit__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
107108
 
 
107109
    break;
 
107110
    }
 
107111
    default:
 
107112
    {
 
107113
        if ( !attributeData->unknownAttributes.data )
 
107114
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
107115
        else
 
107116
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
107117
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
107118
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
107119
        attributeData->unknownAttributes.size += 2;
 
107120
 
 
107121
    }
 
107122
    }
 
107123
    }
 
107124
}
 
107125
if ((attributeData->present_attributes & lowlimit__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
107126
{
 
107127
    attributeData->definitionURL = COLLADABU::URI("");
 
107128
}
 
107129
if ((attributeData->present_attributes & lowlimit__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
107130
{
 
107131
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
107132
}
 
107133
if ((attributeData->present_attributes & lowlimit__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
107134
{
 
107135
    attributeData->href = COLLADABU::URI("");
 
107136
}
 
107137
 
 
107138
 
 
107139
    return true;
 
107140
}
 
107141
 
 
107142
//---------------------------------------------------------------------
 
107143
bool ColladaParserAutoGen15Private::_preEnd__lowlimit()
 
107144
{
 
107145
#ifdef GENERATEDSAXPARSER_VALIDATION
 
107146
    if ( mValidate )
 
107147
    {
 
107148
 
 
107149
        bool validationResult = _validateEnd__lowlimit();
 
107150
        if ( !validationResult ) return false;
 
107151
 
 
107152
    } // validation
 
107153
#endif
 
107154
 
 
107155
    return true;
 
107156
}
 
107157
 
 
107158
//---------------------------------------------------------------------
 
107159
bool ColladaParserAutoGen15Private::_freeAttributes__lowlimit( void* attributeData )
 
107160
{
 
107161
    lowlimit__AttributeData* typedAttributeData = static_cast<lowlimit__AttributeData*>(attributeData);
 
107162
    if (typedAttributeData->_class.data)
 
107163
    {
 
107164
        mStackMemoryManager.deleteObject();
 
107165
    }
 
107166
 
 
107167
    if (typedAttributeData->unknownAttributes.data)
 
107168
    {
 
107169
        mStackMemoryManager.deleteObject();
 
107170
    }
 
107171
 
 
107172
 
 
107173
    typedAttributeData->~lowlimit__AttributeData();
 
107174
 
 
107175
    return true;
 
107176
}
 
107177
 
 
107178
//---------------------------------------------------------------------
 
107179
const uplimit__AttributeData uplimit__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
107180
 
 
107181
//---------------------------------------------------------------------
 
107182
bool ColladaParserAutoGen15Private::_data__uplimit( const ParserChar* text, size_t textLength )
 
107183
{
 
107184
    return true;
 
107185
}
 
107186
 
 
107187
//---------------------------------------------------------------------
 
107188
bool ColladaParserAutoGen15Private::_preBegin__uplimit( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
107189
{
 
107190
#ifdef GENERATEDSAXPARSER_VALIDATION
 
107191
    if ( mValidate )
 
107192
    {
 
107193
 
 
107194
        bool validationResult = _validateBegin__uplimit( attributes, attributeDataPtr, validationDataPtr );
 
107195
        if ( !validationResult ) return false;
 
107196
 
 
107197
    } // validation
 
107198
#endif
 
107199
 
 
107200
uplimit__AttributeData* attributeData = newData<uplimit__AttributeData>(attributeDataPtr);
 
107201
 
 
107202
const ParserChar** attributeArray = attributes.attributes;
 
107203
if ( attributeArray )
 
107204
{
 
107205
    while (true)
 
107206
    {
 
107207
        const ParserChar * attribute = *attributeArray;
 
107208
        if ( !attribute )
 
107209
            break;
 
107210
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
107211
        attributeArray++;
 
107212
        if ( !attributeArray )
 
107213
            return false;
 
107214
        const ParserChar* attributeValue = *attributeArray;
 
107215
        attributeArray++;
 
107216
 
 
107217
 
 
107218
    switch ( hash )
 
107219
    {
 
107220
    case HASH_ATTRIBUTE_ENCODING:
 
107221
    {
 
107222
 
 
107223
attributeData->encoding = attributeValue;
 
107224
 
 
107225
    break;
 
107226
    }
 
107227
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
107228
    {
 
107229
bool failed;
 
107230
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
107231
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
107232
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
107233
        HASH_ELEMENT_UPLIMIT,
 
107234
        HASH_ATTRIBUTE_DEFINITIONURL,
 
107235
        attributeValue))
 
107236
{
 
107237
    return false;
 
107238
}
 
107239
if ( !failed )
 
107240
    attributeData->present_attributes |= uplimit__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
107241
 
 
107242
    break;
 
107243
    }
 
107244
    case HASH_ATTRIBUTE_CLASS:
 
107245
    {
 
107246
bool failed;
 
107247
#ifdef GENERATEDSAXPARSER_VALIDATION
 
107248
    if ( mValidate )
 
107249
    {
 
107250
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_UPLIMIT, HASH_ATTRIBUTE_CLASS);
 
107251
    }
 
107252
    else
 
107253
    {
 
107254
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
107255
    }
 
107256
#else
 
107257
    {
 
107258
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
107259
    } // validation
 
107260
#endif
 
107261
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
107262
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
107263
        HASH_ELEMENT_UPLIMIT,
 
107264
        HASH_ATTRIBUTE_CLASS,
 
107265
        attributeValue))
 
107266
{
 
107267
    return false;
 
107268
}
 
107269
#ifdef GENERATEDSAXPARSER_VALIDATION
 
107270
    if ( mValidate )
 
107271
    {
 
107272
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
107273
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
107274
    {
 
107275
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
107276
            simpleTypeValidationResult,
 
107277
            HASH_ELEMENT_UPLIMIT,
 
107278
            HASH_ATTRIBUTE_CLASS,
 
107279
            attributeValue) )
 
107280
        {
 
107281
            return false;
 
107282
        }
 
107283
    }
 
107284
    } // validation
 
107285
#endif
 
107286
 
 
107287
if ( !failed )
 
107288
    attributeData->present_attributes |= uplimit__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
107289
 
 
107290
    break;
 
107291
    }
 
107292
    case HASH_ATTRIBUTE_STYLE:
 
107293
    {
 
107294
 
 
107295
attributeData->style = attributeValue;
 
107296
 
 
107297
    break;
 
107298
    }
 
107299
    case HASH_ATTRIBUTE_XREF:
 
107300
    {
 
107301
 
 
107302
attributeData->xref = attributeValue;
 
107303
 
 
107304
    break;
 
107305
    }
 
107306
    case HASH_ATTRIBUTE_ID:
 
107307
    {
 
107308
 
 
107309
attributeData->id = attributeValue;
 
107310
 
 
107311
    break;
 
107312
    }
 
107313
    case HASH_ATTRIBUTE_HREF:
 
107314
    {
 
107315
bool failed;
 
107316
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
107317
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
107318
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
107319
        HASH_ELEMENT_UPLIMIT,
 
107320
        HASH_ATTRIBUTE_HREF,
 
107321
        attributeValue))
 
107322
{
 
107323
    return false;
 
107324
}
 
107325
if ( !failed )
 
107326
    attributeData->present_attributes |= uplimit__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
107327
 
 
107328
    break;
 
107329
    }
 
107330
    default:
 
107331
    {
 
107332
        if ( !attributeData->unknownAttributes.data )
 
107333
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
107334
        else
 
107335
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
107336
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
107337
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
107338
        attributeData->unknownAttributes.size += 2;
 
107339
 
 
107340
    }
 
107341
    }
 
107342
    }
 
107343
}
 
107344
if ((attributeData->present_attributes & uplimit__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
107345
{
 
107346
    attributeData->definitionURL = COLLADABU::URI("");
 
107347
}
 
107348
if ((attributeData->present_attributes & uplimit__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
107349
{
 
107350
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
107351
}
 
107352
if ((attributeData->present_attributes & uplimit__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
107353
{
 
107354
    attributeData->href = COLLADABU::URI("");
 
107355
}
 
107356
 
 
107357
 
 
107358
    return true;
 
107359
}
 
107360
 
 
107361
//---------------------------------------------------------------------
 
107362
bool ColladaParserAutoGen15Private::_preEnd__uplimit()
 
107363
{
 
107364
#ifdef GENERATEDSAXPARSER_VALIDATION
 
107365
    if ( mValidate )
 
107366
    {
 
107367
 
 
107368
        bool validationResult = _validateEnd__uplimit();
 
107369
        if ( !validationResult ) return false;
 
107370
 
 
107371
    } // validation
 
107372
#endif
 
107373
 
 
107374
    return true;
 
107375
}
 
107376
 
 
107377
//---------------------------------------------------------------------
 
107378
bool ColladaParserAutoGen15Private::_freeAttributes__uplimit( void* attributeData )
 
107379
{
 
107380
    uplimit__AttributeData* typedAttributeData = static_cast<uplimit__AttributeData*>(attributeData);
 
107381
    if (typedAttributeData->_class.data)
 
107382
    {
 
107383
        mStackMemoryManager.deleteObject();
 
107384
    }
 
107385
 
 
107386
    if (typedAttributeData->unknownAttributes.data)
 
107387
    {
 
107388
        mStackMemoryManager.deleteObject();
 
107389
    }
 
107390
 
 
107391
 
 
107392
    typedAttributeData->~uplimit__AttributeData();
 
107393
 
 
107394
    return true;
 
107395
}
 
107396
 
 
107397
//---------------------------------------------------------------------
 
107398
const tendsto__AttributeData tendsto__AttributeData::DEFAULT = {0, 0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
107399
 
 
107400
//---------------------------------------------------------------------
 
107401
bool ColladaParserAutoGen15Private::_data__tendsto( const ParserChar* text, size_t textLength )
 
107402
{
 
107403
    return true;
 
107404
}
 
107405
 
 
107406
//---------------------------------------------------------------------
 
107407
bool ColladaParserAutoGen15Private::_preBegin__tendsto( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
107408
{
 
107409
#ifdef GENERATEDSAXPARSER_VALIDATION
 
107410
    if ( mValidate )
 
107411
    {
 
107412
 
 
107413
        bool validationResult = _validateBegin__tendsto( attributes, attributeDataPtr, validationDataPtr );
 
107414
        if ( !validationResult ) return false;
 
107415
 
 
107416
    } // validation
 
107417
#endif
 
107418
 
 
107419
tendsto__AttributeData* attributeData = newData<tendsto__AttributeData>(attributeDataPtr);
 
107420
 
 
107421
const ParserChar** attributeArray = attributes.attributes;
 
107422
if ( attributeArray )
 
107423
{
 
107424
    while (true)
 
107425
    {
 
107426
        const ParserChar * attribute = *attributeArray;
 
107427
        if ( !attribute )
 
107428
            break;
 
107429
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
107430
        attributeArray++;
 
107431
        if ( !attributeArray )
 
107432
            return false;
 
107433
        const ParserChar* attributeValue = *attributeArray;
 
107434
        attributeArray++;
 
107435
 
 
107436
 
 
107437
    switch ( hash )
 
107438
    {
 
107439
    case HASH_ATTRIBUTE_TYPE:
 
107440
    {
 
107441
 
 
107442
attributeData->type = attributeValue;
 
107443
 
 
107444
    break;
 
107445
    }
 
107446
    case HASH_ATTRIBUTE_ENCODING:
 
107447
    {
 
107448
 
 
107449
attributeData->encoding = attributeValue;
 
107450
 
 
107451
    break;
 
107452
    }
 
107453
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
107454
    {
 
107455
bool failed;
 
107456
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
107457
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
107458
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
107459
        HASH_ELEMENT_TENDSTO,
 
107460
        HASH_ATTRIBUTE_DEFINITIONURL,
 
107461
        attributeValue))
 
107462
{
 
107463
    return false;
 
107464
}
 
107465
if ( !failed )
 
107466
    attributeData->present_attributes |= tendsto__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
107467
 
 
107468
    break;
 
107469
    }
 
107470
    case HASH_ATTRIBUTE_CLASS:
 
107471
    {
 
107472
bool failed;
 
107473
#ifdef GENERATEDSAXPARSER_VALIDATION
 
107474
    if ( mValidate )
 
107475
    {
 
107476
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_TENDSTO, HASH_ATTRIBUTE_CLASS);
 
107477
    }
 
107478
    else
 
107479
    {
 
107480
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
107481
    }
 
107482
#else
 
107483
    {
 
107484
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
107485
    } // validation
 
107486
#endif
 
107487
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
107488
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
107489
        HASH_ELEMENT_TENDSTO,
 
107490
        HASH_ATTRIBUTE_CLASS,
 
107491
        attributeValue))
 
107492
{
 
107493
    return false;
 
107494
}
 
107495
#ifdef GENERATEDSAXPARSER_VALIDATION
 
107496
    if ( mValidate )
 
107497
    {
 
107498
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
107499
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
107500
    {
 
107501
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
107502
            simpleTypeValidationResult,
 
107503
            HASH_ELEMENT_TENDSTO,
 
107504
            HASH_ATTRIBUTE_CLASS,
 
107505
            attributeValue) )
 
107506
        {
 
107507
            return false;
 
107508
        }
 
107509
    }
 
107510
    } // validation
 
107511
#endif
 
107512
 
 
107513
if ( !failed )
 
107514
    attributeData->present_attributes |= tendsto__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
107515
 
 
107516
    break;
 
107517
    }
 
107518
    case HASH_ATTRIBUTE_STYLE:
 
107519
    {
 
107520
 
 
107521
attributeData->style = attributeValue;
 
107522
 
 
107523
    break;
 
107524
    }
 
107525
    case HASH_ATTRIBUTE_XREF:
 
107526
    {
 
107527
 
 
107528
attributeData->xref = attributeValue;
 
107529
 
 
107530
    break;
 
107531
    }
 
107532
    case HASH_ATTRIBUTE_ID:
 
107533
    {
 
107534
 
 
107535
attributeData->id = attributeValue;
 
107536
 
 
107537
    break;
 
107538
    }
 
107539
    case HASH_ATTRIBUTE_HREF:
 
107540
    {
 
107541
bool failed;
 
107542
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
107543
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
107544
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
107545
        HASH_ELEMENT_TENDSTO,
 
107546
        HASH_ATTRIBUTE_HREF,
 
107547
        attributeValue))
 
107548
{
 
107549
    return false;
 
107550
}
 
107551
if ( !failed )
 
107552
    attributeData->present_attributes |= tendsto__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
107553
 
 
107554
    break;
 
107555
    }
 
107556
    default:
 
107557
    {
 
107558
        if ( !attributeData->unknownAttributes.data )
 
107559
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
107560
        else
 
107561
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
107562
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
107563
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
107564
        attributeData->unknownAttributes.size += 2;
 
107565
 
 
107566
    }
 
107567
    }
 
107568
    }
 
107569
}
 
107570
if ((attributeData->present_attributes & tendsto__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
107571
{
 
107572
    attributeData->definitionURL = COLLADABU::URI("");
 
107573
}
 
107574
if ((attributeData->present_attributes & tendsto__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
107575
{
 
107576
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
107577
}
 
107578
if ((attributeData->present_attributes & tendsto__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
107579
{
 
107580
    attributeData->href = COLLADABU::URI("");
 
107581
}
 
107582
 
 
107583
 
 
107584
    return true;
 
107585
}
 
107586
 
 
107587
//---------------------------------------------------------------------
 
107588
bool ColladaParserAutoGen15Private::_preEnd__tendsto()
 
107589
{
 
107590
#ifdef GENERATEDSAXPARSER_VALIDATION
 
107591
    if ( mValidate )
 
107592
    {
 
107593
 
 
107594
        bool validationResult = _validateEnd__tendsto();
 
107595
        if ( !validationResult ) return false;
 
107596
 
 
107597
    } // validation
 
107598
#endif
 
107599
 
 
107600
    return true;
 
107601
}
 
107602
 
 
107603
//---------------------------------------------------------------------
 
107604
bool ColladaParserAutoGen15Private::_freeAttributes__tendsto( void* attributeData )
 
107605
{
 
107606
    tendsto__AttributeData* typedAttributeData = static_cast<tendsto__AttributeData*>(attributeData);
 
107607
    if (typedAttributeData->_class.data)
 
107608
    {
 
107609
        mStackMemoryManager.deleteObject();
 
107610
    }
 
107611
 
 
107612
    if (typedAttributeData->unknownAttributes.data)
 
107613
    {
 
107614
        mStackMemoryManager.deleteObject();
 
107615
    }
 
107616
 
 
107617
 
 
107618
    typedAttributeData->~tendsto__AttributeData();
 
107619
 
 
107620
    return true;
 
107621
}
 
107622
 
 
107623
//---------------------------------------------------------------------
 
107624
const vector__AttributeData vector__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
107625
 
 
107626
//---------------------------------------------------------------------
 
107627
bool ColladaParserAutoGen15Private::_data__vector( const ParserChar* text, size_t textLength )
 
107628
{
 
107629
    return true;
 
107630
}
 
107631
 
 
107632
//---------------------------------------------------------------------
 
107633
bool ColladaParserAutoGen15Private::_preBegin__vector( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
107634
{
 
107635
#ifdef GENERATEDSAXPARSER_VALIDATION
 
107636
    if ( mValidate )
 
107637
    {
 
107638
 
 
107639
        bool validationResult = _validateBegin__vector( attributes, attributeDataPtr, validationDataPtr );
 
107640
        if ( !validationResult ) return false;
 
107641
 
 
107642
    } // validation
 
107643
#endif
 
107644
 
 
107645
vector__AttributeData* attributeData = newData<vector__AttributeData>(attributeDataPtr);
 
107646
 
 
107647
const ParserChar** attributeArray = attributes.attributes;
 
107648
if ( attributeArray )
 
107649
{
 
107650
    while (true)
 
107651
    {
 
107652
        const ParserChar * attribute = *attributeArray;
 
107653
        if ( !attribute )
 
107654
            break;
 
107655
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
107656
        attributeArray++;
 
107657
        if ( !attributeArray )
 
107658
            return false;
 
107659
        const ParserChar* attributeValue = *attributeArray;
 
107660
        attributeArray++;
 
107661
 
 
107662
 
 
107663
    switch ( hash )
 
107664
    {
 
107665
    case HASH_ATTRIBUTE_CLASS:
 
107666
    {
 
107667
bool failed;
 
107668
#ifdef GENERATEDSAXPARSER_VALIDATION
 
107669
    if ( mValidate )
 
107670
    {
 
107671
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_VECTOR, HASH_ATTRIBUTE_CLASS);
 
107672
    }
 
107673
    else
 
107674
    {
 
107675
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
107676
    }
 
107677
#else
 
107678
    {
 
107679
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
107680
    } // validation
 
107681
#endif
 
107682
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
107683
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
107684
        HASH_ELEMENT_VECTOR,
 
107685
        HASH_ATTRIBUTE_CLASS,
 
107686
        attributeValue))
 
107687
{
 
107688
    return false;
 
107689
}
 
107690
#ifdef GENERATEDSAXPARSER_VALIDATION
 
107691
    if ( mValidate )
 
107692
    {
 
107693
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
107694
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
107695
    {
 
107696
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
107697
            simpleTypeValidationResult,
 
107698
            HASH_ELEMENT_VECTOR,
 
107699
            HASH_ATTRIBUTE_CLASS,
 
107700
            attributeValue) )
 
107701
        {
 
107702
            return false;
 
107703
        }
 
107704
    }
 
107705
    } // validation
 
107706
#endif
 
107707
 
 
107708
if ( !failed )
 
107709
    attributeData->present_attributes |= vector__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
107710
 
 
107711
    break;
 
107712
    }
 
107713
    case HASH_ATTRIBUTE_STYLE:
 
107714
    {
 
107715
 
 
107716
attributeData->style = attributeValue;
 
107717
 
 
107718
    break;
 
107719
    }
 
107720
    case HASH_ATTRIBUTE_XREF:
 
107721
    {
 
107722
 
 
107723
attributeData->xref = attributeValue;
 
107724
 
 
107725
    break;
 
107726
    }
 
107727
    case HASH_ATTRIBUTE_ID:
 
107728
    {
 
107729
 
 
107730
attributeData->id = attributeValue;
 
107731
 
 
107732
    break;
 
107733
    }
 
107734
    case HASH_ATTRIBUTE_HREF:
 
107735
    {
 
107736
bool failed;
 
107737
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
107738
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
107739
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
107740
        HASH_ELEMENT_VECTOR,
 
107741
        HASH_ATTRIBUTE_HREF,
 
107742
        attributeValue))
 
107743
{
 
107744
    return false;
 
107745
}
 
107746
if ( !failed )
 
107747
    attributeData->present_attributes |= vector__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
107748
 
 
107749
    break;
 
107750
    }
 
107751
    default:
 
107752
    {
 
107753
        if ( !attributeData->unknownAttributes.data )
 
107754
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
107755
        else
 
107756
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
107757
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
107758
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
107759
        attributeData->unknownAttributes.size += 2;
 
107760
 
 
107761
    }
 
107762
    }
 
107763
    }
 
107764
}
 
107765
if ((attributeData->present_attributes & vector__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
107766
{
 
107767
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
107768
}
 
107769
if ((attributeData->present_attributes & vector__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
107770
{
 
107771
    attributeData->href = COLLADABU::URI("");
 
107772
}
 
107773
 
 
107774
 
 
107775
    return true;
 
107776
}
 
107777
 
 
107778
//---------------------------------------------------------------------
 
107779
bool ColladaParserAutoGen15Private::_preEnd__vector()
 
107780
{
 
107781
#ifdef GENERATEDSAXPARSER_VALIDATION
 
107782
    if ( mValidate )
 
107783
    {
 
107784
 
 
107785
        bool validationResult = _validateEnd__vector();
 
107786
        if ( !validationResult ) return false;
 
107787
 
 
107788
    } // validation
 
107789
#endif
 
107790
 
 
107791
    return true;
 
107792
}
 
107793
 
 
107794
//---------------------------------------------------------------------
 
107795
bool ColladaParserAutoGen15Private::_freeAttributes__vector( void* attributeData )
 
107796
{
 
107797
    vector__AttributeData* typedAttributeData = static_cast<vector__AttributeData*>(attributeData);
 
107798
    if (typedAttributeData->_class.data)
 
107799
    {
 
107800
        mStackMemoryManager.deleteObject();
 
107801
    }
 
107802
 
 
107803
    if (typedAttributeData->unknownAttributes.data)
 
107804
    {
 
107805
        mStackMemoryManager.deleteObject();
 
107806
    }
 
107807
 
 
107808
 
 
107809
    typedAttributeData->~vector__AttributeData();
 
107810
 
 
107811
    return true;
 
107812
}
 
107813
 
 
107814
//---------------------------------------------------------------------
 
107815
const matrix____matrix_type____mathml__AttributeData matrix____matrix_type____mathml__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
107816
 
 
107817
//---------------------------------------------------------------------
 
107818
bool ColladaParserAutoGen15Private::_data__matrix____matrix_type____mathml( const ParserChar* text, size_t textLength )
 
107819
{
 
107820
    return true;
 
107821
}
 
107822
 
 
107823
//---------------------------------------------------------------------
 
107824
bool ColladaParserAutoGen15Private::_preBegin__matrix____matrix_type____mathml( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
107825
{
 
107826
#ifdef GENERATEDSAXPARSER_VALIDATION
 
107827
    if ( mValidate )
 
107828
    {
 
107829
 
 
107830
        bool validationResult = _validateBegin__matrix____matrix_type____mathml( attributes, attributeDataPtr, validationDataPtr );
 
107831
        if ( !validationResult ) return false;
 
107832
 
 
107833
    } // validation
 
107834
#endif
 
107835
 
 
107836
matrix____matrix_type____mathml__AttributeData* attributeData = newData<matrix____matrix_type____mathml__AttributeData>(attributeDataPtr);
 
107837
 
 
107838
const ParserChar** attributeArray = attributes.attributes;
 
107839
if ( attributeArray )
 
107840
{
 
107841
    while (true)
 
107842
    {
 
107843
        const ParserChar * attribute = *attributeArray;
 
107844
        if ( !attribute )
 
107845
            break;
 
107846
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
107847
        attributeArray++;
 
107848
        if ( !attributeArray )
 
107849
            return false;
 
107850
        const ParserChar* attributeValue = *attributeArray;
 
107851
        attributeArray++;
 
107852
 
 
107853
 
 
107854
    switch ( hash )
 
107855
    {
 
107856
    case HASH_ATTRIBUTE_CLASS:
 
107857
    {
 
107858
bool failed;
 
107859
#ifdef GENERATEDSAXPARSER_VALIDATION
 
107860
    if ( mValidate )
 
107861
    {
 
107862
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_MATRIX, HASH_ATTRIBUTE_CLASS);
 
107863
    }
 
107864
    else
 
107865
    {
 
107866
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
107867
    }
 
107868
#else
 
107869
    {
 
107870
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
107871
    } // validation
 
107872
#endif
 
107873
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
107874
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
107875
        HASH_ELEMENT_MATRIX,
 
107876
        HASH_ATTRIBUTE_CLASS,
 
107877
        attributeValue))
 
107878
{
 
107879
    return false;
 
107880
}
 
107881
#ifdef GENERATEDSAXPARSER_VALIDATION
 
107882
    if ( mValidate )
 
107883
    {
 
107884
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
107885
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
107886
    {
 
107887
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
107888
            simpleTypeValidationResult,
 
107889
            HASH_ELEMENT_MATRIX,
 
107890
            HASH_ATTRIBUTE_CLASS,
 
107891
            attributeValue) )
 
107892
        {
 
107893
            return false;
 
107894
        }
 
107895
    }
 
107896
    } // validation
 
107897
#endif
 
107898
 
 
107899
if ( !failed )
 
107900
    attributeData->present_attributes |= matrix____matrix_type____mathml__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
107901
 
 
107902
    break;
 
107903
    }
 
107904
    case HASH_ATTRIBUTE_STYLE:
 
107905
    {
 
107906
 
 
107907
attributeData->style = attributeValue;
 
107908
 
 
107909
    break;
 
107910
    }
 
107911
    case HASH_ATTRIBUTE_XREF:
 
107912
    {
 
107913
 
 
107914
attributeData->xref = attributeValue;
 
107915
 
 
107916
    break;
 
107917
    }
 
107918
    case HASH_ATTRIBUTE_ID:
 
107919
    {
 
107920
 
 
107921
attributeData->id = attributeValue;
 
107922
 
 
107923
    break;
 
107924
    }
 
107925
    case HASH_ATTRIBUTE_HREF:
 
107926
    {
 
107927
bool failed;
 
107928
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
107929
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
107930
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
107931
        HASH_ELEMENT_MATRIX,
 
107932
        HASH_ATTRIBUTE_HREF,
 
107933
        attributeValue))
 
107934
{
 
107935
    return false;
 
107936
}
 
107937
if ( !failed )
 
107938
    attributeData->present_attributes |= matrix____matrix_type____mathml__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
107939
 
 
107940
    break;
 
107941
    }
 
107942
    default:
 
107943
    {
 
107944
        if ( !attributeData->unknownAttributes.data )
 
107945
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
107946
        else
 
107947
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
107948
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
107949
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
107950
        attributeData->unknownAttributes.size += 2;
 
107951
 
 
107952
    }
 
107953
    }
 
107954
    }
 
107955
}
 
107956
if ((attributeData->present_attributes & matrix____matrix_type____mathml__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
107957
{
 
107958
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
107959
}
 
107960
if ((attributeData->present_attributes & matrix____matrix_type____mathml__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
107961
{
 
107962
    attributeData->href = COLLADABU::URI("");
 
107963
}
 
107964
 
 
107965
 
 
107966
    return true;
 
107967
}
 
107968
 
 
107969
//---------------------------------------------------------------------
 
107970
bool ColladaParserAutoGen15Private::_preEnd__matrix____matrix_type____mathml()
 
107971
{
 
107972
#ifdef GENERATEDSAXPARSER_VALIDATION
 
107973
    if ( mValidate )
 
107974
    {
 
107975
 
 
107976
        bool validationResult = _validateEnd__matrix____matrix_type____mathml();
 
107977
        if ( !validationResult ) return false;
 
107978
 
 
107979
    } // validation
 
107980
#endif
 
107981
 
 
107982
    return true;
 
107983
}
 
107984
 
 
107985
//---------------------------------------------------------------------
 
107986
bool ColladaParserAutoGen15Private::_freeAttributes__matrix____matrix_type____mathml( void* attributeData )
 
107987
{
 
107988
    matrix____matrix_type____mathml__AttributeData* typedAttributeData = static_cast<matrix____matrix_type____mathml__AttributeData*>(attributeData);
 
107989
    if (typedAttributeData->_class.data)
 
107990
    {
 
107991
        mStackMemoryManager.deleteObject();
 
107992
    }
 
107993
 
 
107994
    if (typedAttributeData->unknownAttributes.data)
 
107995
    {
 
107996
        mStackMemoryManager.deleteObject();
 
107997
    }
 
107998
 
 
107999
 
 
108000
    typedAttributeData->~matrix____matrix_type____mathml__AttributeData();
 
108001
 
 
108002
    return true;
 
108003
}
 
108004
 
 
108005
//---------------------------------------------------------------------
 
108006
const matrixrow__AttributeData matrixrow__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
108007
 
 
108008
//---------------------------------------------------------------------
 
108009
bool ColladaParserAutoGen15Private::_data__matrixrow( const ParserChar* text, size_t textLength )
 
108010
{
 
108011
    return true;
 
108012
}
 
108013
 
 
108014
//---------------------------------------------------------------------
 
108015
bool ColladaParserAutoGen15Private::_preBegin__matrixrow( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
108016
{
 
108017
#ifdef GENERATEDSAXPARSER_VALIDATION
 
108018
    if ( mValidate )
 
108019
    {
 
108020
 
 
108021
        bool validationResult = _validateBegin__matrixrow( attributes, attributeDataPtr, validationDataPtr );
 
108022
        if ( !validationResult ) return false;
 
108023
 
 
108024
    } // validation
 
108025
#endif
 
108026
 
 
108027
matrixrow__AttributeData* attributeData = newData<matrixrow__AttributeData>(attributeDataPtr);
 
108028
 
 
108029
const ParserChar** attributeArray = attributes.attributes;
 
108030
if ( attributeArray )
 
108031
{
 
108032
    while (true)
 
108033
    {
 
108034
        const ParserChar * attribute = *attributeArray;
 
108035
        if ( !attribute )
 
108036
            break;
 
108037
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
108038
        attributeArray++;
 
108039
        if ( !attributeArray )
 
108040
            return false;
 
108041
        const ParserChar* attributeValue = *attributeArray;
 
108042
        attributeArray++;
 
108043
 
 
108044
 
 
108045
    switch ( hash )
 
108046
    {
 
108047
    case HASH_ATTRIBUTE_CLASS:
 
108048
    {
 
108049
bool failed;
 
108050
#ifdef GENERATEDSAXPARSER_VALIDATION
 
108051
    if ( mValidate )
 
108052
    {
 
108053
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_MATRIXROW, HASH_ATTRIBUTE_CLASS);
 
108054
    }
 
108055
    else
 
108056
    {
 
108057
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
108058
    }
 
108059
#else
 
108060
    {
 
108061
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
108062
    } // validation
 
108063
#endif
 
108064
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
108065
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
108066
        HASH_ELEMENT_MATRIXROW,
 
108067
        HASH_ATTRIBUTE_CLASS,
 
108068
        attributeValue))
 
108069
{
 
108070
    return false;
 
108071
}
 
108072
#ifdef GENERATEDSAXPARSER_VALIDATION
 
108073
    if ( mValidate )
 
108074
    {
 
108075
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
108076
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
108077
    {
 
108078
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
108079
            simpleTypeValidationResult,
 
108080
            HASH_ELEMENT_MATRIXROW,
 
108081
            HASH_ATTRIBUTE_CLASS,
 
108082
            attributeValue) )
 
108083
        {
 
108084
            return false;
 
108085
        }
 
108086
    }
 
108087
    } // validation
 
108088
#endif
 
108089
 
 
108090
if ( !failed )
 
108091
    attributeData->present_attributes |= matrixrow__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
108092
 
 
108093
    break;
 
108094
    }
 
108095
    case HASH_ATTRIBUTE_STYLE:
 
108096
    {
 
108097
 
 
108098
attributeData->style = attributeValue;
 
108099
 
 
108100
    break;
 
108101
    }
 
108102
    case HASH_ATTRIBUTE_XREF:
 
108103
    {
 
108104
 
 
108105
attributeData->xref = attributeValue;
 
108106
 
 
108107
    break;
 
108108
    }
 
108109
    case HASH_ATTRIBUTE_ID:
 
108110
    {
 
108111
 
 
108112
attributeData->id = attributeValue;
 
108113
 
 
108114
    break;
 
108115
    }
 
108116
    case HASH_ATTRIBUTE_HREF:
 
108117
    {
 
108118
bool failed;
 
108119
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
108120
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
108121
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
108122
        HASH_ELEMENT_MATRIXROW,
 
108123
        HASH_ATTRIBUTE_HREF,
 
108124
        attributeValue))
 
108125
{
 
108126
    return false;
 
108127
}
 
108128
if ( !failed )
 
108129
    attributeData->present_attributes |= matrixrow__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
108130
 
 
108131
    break;
 
108132
    }
 
108133
    default:
 
108134
    {
 
108135
        if ( !attributeData->unknownAttributes.data )
 
108136
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
108137
        else
 
108138
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
108139
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
108140
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
108141
        attributeData->unknownAttributes.size += 2;
 
108142
 
 
108143
    }
 
108144
    }
 
108145
    }
 
108146
}
 
108147
if ((attributeData->present_attributes & matrixrow__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
108148
{
 
108149
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
108150
}
 
108151
if ((attributeData->present_attributes & matrixrow__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
108152
{
 
108153
    attributeData->href = COLLADABU::URI("");
 
108154
}
 
108155
 
 
108156
 
 
108157
    return true;
 
108158
}
 
108159
 
 
108160
//---------------------------------------------------------------------
 
108161
bool ColladaParserAutoGen15Private::_preEnd__matrixrow()
 
108162
{
 
108163
#ifdef GENERATEDSAXPARSER_VALIDATION
 
108164
    if ( mValidate )
 
108165
    {
 
108166
 
 
108167
        bool validationResult = _validateEnd__matrixrow();
 
108168
        if ( !validationResult ) return false;
 
108169
 
 
108170
    } // validation
 
108171
#endif
 
108172
 
 
108173
    return true;
 
108174
}
 
108175
 
 
108176
//---------------------------------------------------------------------
 
108177
bool ColladaParserAutoGen15Private::_freeAttributes__matrixrow( void* attributeData )
 
108178
{
 
108179
    matrixrow__AttributeData* typedAttributeData = static_cast<matrixrow__AttributeData*>(attributeData);
 
108180
    if (typedAttributeData->_class.data)
 
108181
    {
 
108182
        mStackMemoryManager.deleteObject();
 
108183
    }
 
108184
 
 
108185
    if (typedAttributeData->unknownAttributes.data)
 
108186
    {
 
108187
        mStackMemoryManager.deleteObject();
 
108188
    }
 
108189
 
 
108190
 
 
108191
    typedAttributeData->~matrixrow__AttributeData();
 
108192
 
 
108193
    return true;
 
108194
}
 
108195
 
 
108196
//---------------------------------------------------------------------
 
108197
const determinant__AttributeData determinant__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
108198
 
 
108199
//---------------------------------------------------------------------
 
108200
bool ColladaParserAutoGen15Private::_data__determinant( const ParserChar* text, size_t textLength )
 
108201
{
 
108202
    return true;
 
108203
}
 
108204
 
 
108205
//---------------------------------------------------------------------
 
108206
bool ColladaParserAutoGen15Private::_preBegin__determinant( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
108207
{
 
108208
#ifdef GENERATEDSAXPARSER_VALIDATION
 
108209
    if ( mValidate )
 
108210
    {
 
108211
 
 
108212
        bool validationResult = _validateBegin__determinant( attributes, attributeDataPtr, validationDataPtr );
 
108213
        if ( !validationResult ) return false;
 
108214
 
 
108215
    } // validation
 
108216
#endif
 
108217
 
 
108218
determinant__AttributeData* attributeData = newData<determinant__AttributeData>(attributeDataPtr);
 
108219
 
 
108220
const ParserChar** attributeArray = attributes.attributes;
 
108221
if ( attributeArray )
 
108222
{
 
108223
    while (true)
 
108224
    {
 
108225
        const ParserChar * attribute = *attributeArray;
 
108226
        if ( !attribute )
 
108227
            break;
 
108228
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
108229
        attributeArray++;
 
108230
        if ( !attributeArray )
 
108231
            return false;
 
108232
        const ParserChar* attributeValue = *attributeArray;
 
108233
        attributeArray++;
 
108234
 
 
108235
 
 
108236
    switch ( hash )
 
108237
    {
 
108238
    case HASH_ATTRIBUTE_ENCODING:
 
108239
    {
 
108240
 
 
108241
attributeData->encoding = attributeValue;
 
108242
 
 
108243
    break;
 
108244
    }
 
108245
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
108246
    {
 
108247
bool failed;
 
108248
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
108249
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
108250
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
108251
        HASH_ELEMENT_DETERMINANT,
 
108252
        HASH_ATTRIBUTE_DEFINITIONURL,
 
108253
        attributeValue))
 
108254
{
 
108255
    return false;
 
108256
}
 
108257
if ( !failed )
 
108258
    attributeData->present_attributes |= determinant__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
108259
 
 
108260
    break;
 
108261
    }
 
108262
    case HASH_ATTRIBUTE_CLASS:
 
108263
    {
 
108264
bool failed;
 
108265
#ifdef GENERATEDSAXPARSER_VALIDATION
 
108266
    if ( mValidate )
 
108267
    {
 
108268
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_DETERMINANT, HASH_ATTRIBUTE_CLASS);
 
108269
    }
 
108270
    else
 
108271
    {
 
108272
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
108273
    }
 
108274
#else
 
108275
    {
 
108276
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
108277
    } // validation
 
108278
#endif
 
108279
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
108280
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
108281
        HASH_ELEMENT_DETERMINANT,
 
108282
        HASH_ATTRIBUTE_CLASS,
 
108283
        attributeValue))
 
108284
{
 
108285
    return false;
 
108286
}
 
108287
#ifdef GENERATEDSAXPARSER_VALIDATION
 
108288
    if ( mValidate )
 
108289
    {
 
108290
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
108291
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
108292
    {
 
108293
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
108294
            simpleTypeValidationResult,
 
108295
            HASH_ELEMENT_DETERMINANT,
 
108296
            HASH_ATTRIBUTE_CLASS,
 
108297
            attributeValue) )
 
108298
        {
 
108299
            return false;
 
108300
        }
 
108301
    }
 
108302
    } // validation
 
108303
#endif
 
108304
 
 
108305
if ( !failed )
 
108306
    attributeData->present_attributes |= determinant__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
108307
 
 
108308
    break;
 
108309
    }
 
108310
    case HASH_ATTRIBUTE_STYLE:
 
108311
    {
 
108312
 
 
108313
attributeData->style = attributeValue;
 
108314
 
 
108315
    break;
 
108316
    }
 
108317
    case HASH_ATTRIBUTE_XREF:
 
108318
    {
 
108319
 
 
108320
attributeData->xref = attributeValue;
 
108321
 
 
108322
    break;
 
108323
    }
 
108324
    case HASH_ATTRIBUTE_ID:
 
108325
    {
 
108326
 
 
108327
attributeData->id = attributeValue;
 
108328
 
 
108329
    break;
 
108330
    }
 
108331
    case HASH_ATTRIBUTE_HREF:
 
108332
    {
 
108333
bool failed;
 
108334
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
108335
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
108336
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
108337
        HASH_ELEMENT_DETERMINANT,
 
108338
        HASH_ATTRIBUTE_HREF,
 
108339
        attributeValue))
 
108340
{
 
108341
    return false;
 
108342
}
 
108343
if ( !failed )
 
108344
    attributeData->present_attributes |= determinant__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
108345
 
 
108346
    break;
 
108347
    }
 
108348
    default:
 
108349
    {
 
108350
        if ( !attributeData->unknownAttributes.data )
 
108351
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
108352
        else
 
108353
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
108354
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
108355
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
108356
        attributeData->unknownAttributes.size += 2;
 
108357
 
 
108358
    }
 
108359
    }
 
108360
    }
 
108361
}
 
108362
if ((attributeData->present_attributes & determinant__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
108363
{
 
108364
    attributeData->definitionURL = COLLADABU::URI("");
 
108365
}
 
108366
if ((attributeData->present_attributes & determinant__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
108367
{
 
108368
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
108369
}
 
108370
if ((attributeData->present_attributes & determinant__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
108371
{
 
108372
    attributeData->href = COLLADABU::URI("");
 
108373
}
 
108374
 
 
108375
 
 
108376
    return true;
 
108377
}
 
108378
 
 
108379
//---------------------------------------------------------------------
 
108380
bool ColladaParserAutoGen15Private::_preEnd__determinant()
 
108381
{
 
108382
#ifdef GENERATEDSAXPARSER_VALIDATION
 
108383
    if ( mValidate )
 
108384
    {
 
108385
 
 
108386
        bool validationResult = _validateEnd__determinant();
 
108387
        if ( !validationResult ) return false;
 
108388
 
 
108389
    } // validation
 
108390
#endif
 
108391
 
 
108392
    return true;
 
108393
}
 
108394
 
 
108395
//---------------------------------------------------------------------
 
108396
bool ColladaParserAutoGen15Private::_freeAttributes__determinant( void* attributeData )
 
108397
{
 
108398
    determinant__AttributeData* typedAttributeData = static_cast<determinant__AttributeData*>(attributeData);
 
108399
    if (typedAttributeData->_class.data)
 
108400
    {
 
108401
        mStackMemoryManager.deleteObject();
 
108402
    }
 
108403
 
 
108404
    if (typedAttributeData->unknownAttributes.data)
 
108405
    {
 
108406
        mStackMemoryManager.deleteObject();
 
108407
    }
 
108408
 
 
108409
 
 
108410
    typedAttributeData->~determinant__AttributeData();
 
108411
 
 
108412
    return true;
 
108413
}
 
108414
 
 
108415
//---------------------------------------------------------------------
 
108416
const transpose__AttributeData transpose__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
108417
 
 
108418
//---------------------------------------------------------------------
 
108419
bool ColladaParserAutoGen15Private::_data__transpose( const ParserChar* text, size_t textLength )
 
108420
{
 
108421
    return true;
 
108422
}
 
108423
 
 
108424
//---------------------------------------------------------------------
 
108425
bool ColladaParserAutoGen15Private::_preBegin__transpose( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
108426
{
 
108427
#ifdef GENERATEDSAXPARSER_VALIDATION
 
108428
    if ( mValidate )
 
108429
    {
 
108430
 
 
108431
        bool validationResult = _validateBegin__transpose( attributes, attributeDataPtr, validationDataPtr );
 
108432
        if ( !validationResult ) return false;
 
108433
 
 
108434
    } // validation
 
108435
#endif
 
108436
 
 
108437
transpose__AttributeData* attributeData = newData<transpose__AttributeData>(attributeDataPtr);
 
108438
 
 
108439
const ParserChar** attributeArray = attributes.attributes;
 
108440
if ( attributeArray )
 
108441
{
 
108442
    while (true)
 
108443
    {
 
108444
        const ParserChar * attribute = *attributeArray;
 
108445
        if ( !attribute )
 
108446
            break;
 
108447
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
108448
        attributeArray++;
 
108449
        if ( !attributeArray )
 
108450
            return false;
 
108451
        const ParserChar* attributeValue = *attributeArray;
 
108452
        attributeArray++;
 
108453
 
 
108454
 
 
108455
    switch ( hash )
 
108456
    {
 
108457
    case HASH_ATTRIBUTE_ENCODING:
 
108458
    {
 
108459
 
 
108460
attributeData->encoding = attributeValue;
 
108461
 
 
108462
    break;
 
108463
    }
 
108464
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
108465
    {
 
108466
bool failed;
 
108467
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
108468
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
108469
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
108470
        HASH_ELEMENT_TRANSPOSE,
 
108471
        HASH_ATTRIBUTE_DEFINITIONURL,
 
108472
        attributeValue))
 
108473
{
 
108474
    return false;
 
108475
}
 
108476
if ( !failed )
 
108477
    attributeData->present_attributes |= transpose__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
108478
 
 
108479
    break;
 
108480
    }
 
108481
    case HASH_ATTRIBUTE_CLASS:
 
108482
    {
 
108483
bool failed;
 
108484
#ifdef GENERATEDSAXPARSER_VALIDATION
 
108485
    if ( mValidate )
 
108486
    {
 
108487
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_TRANSPOSE, HASH_ATTRIBUTE_CLASS);
 
108488
    }
 
108489
    else
 
108490
    {
 
108491
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
108492
    }
 
108493
#else
 
108494
    {
 
108495
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
108496
    } // validation
 
108497
#endif
 
108498
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
108499
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
108500
        HASH_ELEMENT_TRANSPOSE,
 
108501
        HASH_ATTRIBUTE_CLASS,
 
108502
        attributeValue))
 
108503
{
 
108504
    return false;
 
108505
}
 
108506
#ifdef GENERATEDSAXPARSER_VALIDATION
 
108507
    if ( mValidate )
 
108508
    {
 
108509
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
108510
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
108511
    {
 
108512
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
108513
            simpleTypeValidationResult,
 
108514
            HASH_ELEMENT_TRANSPOSE,
 
108515
            HASH_ATTRIBUTE_CLASS,
 
108516
            attributeValue) )
 
108517
        {
 
108518
            return false;
 
108519
        }
 
108520
    }
 
108521
    } // validation
 
108522
#endif
 
108523
 
 
108524
if ( !failed )
 
108525
    attributeData->present_attributes |= transpose__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
108526
 
 
108527
    break;
 
108528
    }
 
108529
    case HASH_ATTRIBUTE_STYLE:
 
108530
    {
 
108531
 
 
108532
attributeData->style = attributeValue;
 
108533
 
 
108534
    break;
 
108535
    }
 
108536
    case HASH_ATTRIBUTE_XREF:
 
108537
    {
 
108538
 
 
108539
attributeData->xref = attributeValue;
 
108540
 
 
108541
    break;
 
108542
    }
 
108543
    case HASH_ATTRIBUTE_ID:
 
108544
    {
 
108545
 
 
108546
attributeData->id = attributeValue;
 
108547
 
 
108548
    break;
 
108549
    }
 
108550
    case HASH_ATTRIBUTE_HREF:
 
108551
    {
 
108552
bool failed;
 
108553
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
108554
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
108555
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
108556
        HASH_ELEMENT_TRANSPOSE,
 
108557
        HASH_ATTRIBUTE_HREF,
 
108558
        attributeValue))
 
108559
{
 
108560
    return false;
 
108561
}
 
108562
if ( !failed )
 
108563
    attributeData->present_attributes |= transpose__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
108564
 
 
108565
    break;
 
108566
    }
 
108567
    default:
 
108568
    {
 
108569
        if ( !attributeData->unknownAttributes.data )
 
108570
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
108571
        else
 
108572
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
108573
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
108574
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
108575
        attributeData->unknownAttributes.size += 2;
 
108576
 
 
108577
    }
 
108578
    }
 
108579
    }
 
108580
}
 
108581
if ((attributeData->present_attributes & transpose__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
108582
{
 
108583
    attributeData->definitionURL = COLLADABU::URI("");
 
108584
}
 
108585
if ((attributeData->present_attributes & transpose__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
108586
{
 
108587
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
108588
}
 
108589
if ((attributeData->present_attributes & transpose__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
108590
{
 
108591
    attributeData->href = COLLADABU::URI("");
 
108592
}
 
108593
 
 
108594
 
 
108595
    return true;
 
108596
}
 
108597
 
 
108598
//---------------------------------------------------------------------
 
108599
bool ColladaParserAutoGen15Private::_preEnd__transpose()
 
108600
{
 
108601
#ifdef GENERATEDSAXPARSER_VALIDATION
 
108602
    if ( mValidate )
 
108603
    {
 
108604
 
 
108605
        bool validationResult = _validateEnd__transpose();
 
108606
        if ( !validationResult ) return false;
 
108607
 
 
108608
    } // validation
 
108609
#endif
 
108610
 
 
108611
    return true;
 
108612
}
 
108613
 
 
108614
//---------------------------------------------------------------------
 
108615
bool ColladaParserAutoGen15Private::_freeAttributes__transpose( void* attributeData )
 
108616
{
 
108617
    transpose__AttributeData* typedAttributeData = static_cast<transpose__AttributeData*>(attributeData);
 
108618
    if (typedAttributeData->_class.data)
 
108619
    {
 
108620
        mStackMemoryManager.deleteObject();
 
108621
    }
 
108622
 
 
108623
    if (typedAttributeData->unknownAttributes.data)
 
108624
    {
 
108625
        mStackMemoryManager.deleteObject();
 
108626
    }
 
108627
 
 
108628
 
 
108629
    typedAttributeData->~transpose__AttributeData();
 
108630
 
 
108631
    return true;
 
108632
}
 
108633
 
 
108634
//---------------------------------------------------------------------
 
108635
const selector__AttributeData selector__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
108636
 
 
108637
//---------------------------------------------------------------------
 
108638
bool ColladaParserAutoGen15Private::_data__selector( const ParserChar* text, size_t textLength )
 
108639
{
 
108640
    return true;
 
108641
}
 
108642
 
 
108643
//---------------------------------------------------------------------
 
108644
bool ColladaParserAutoGen15Private::_preBegin__selector( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
108645
{
 
108646
#ifdef GENERATEDSAXPARSER_VALIDATION
 
108647
    if ( mValidate )
 
108648
    {
 
108649
 
 
108650
        bool validationResult = _validateBegin__selector( attributes, attributeDataPtr, validationDataPtr );
 
108651
        if ( !validationResult ) return false;
 
108652
 
 
108653
    } // validation
 
108654
#endif
 
108655
 
 
108656
selector__AttributeData* attributeData = newData<selector__AttributeData>(attributeDataPtr);
 
108657
 
 
108658
const ParserChar** attributeArray = attributes.attributes;
 
108659
if ( attributeArray )
 
108660
{
 
108661
    while (true)
 
108662
    {
 
108663
        const ParserChar * attribute = *attributeArray;
 
108664
        if ( !attribute )
 
108665
            break;
 
108666
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
108667
        attributeArray++;
 
108668
        if ( !attributeArray )
 
108669
            return false;
 
108670
        const ParserChar* attributeValue = *attributeArray;
 
108671
        attributeArray++;
 
108672
 
 
108673
 
 
108674
    switch ( hash )
 
108675
    {
 
108676
    case HASH_ATTRIBUTE_ENCODING:
 
108677
    {
 
108678
 
 
108679
attributeData->encoding = attributeValue;
 
108680
 
 
108681
    break;
 
108682
    }
 
108683
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
108684
    {
 
108685
bool failed;
 
108686
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
108687
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
108688
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
108689
        HASH_ELEMENT_SELECTOR,
 
108690
        HASH_ATTRIBUTE_DEFINITIONURL,
 
108691
        attributeValue))
 
108692
{
 
108693
    return false;
 
108694
}
 
108695
if ( !failed )
 
108696
    attributeData->present_attributes |= selector__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
108697
 
 
108698
    break;
 
108699
    }
 
108700
    case HASH_ATTRIBUTE_CLASS:
 
108701
    {
 
108702
bool failed;
 
108703
#ifdef GENERATEDSAXPARSER_VALIDATION
 
108704
    if ( mValidate )
 
108705
    {
 
108706
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_SELECTOR, HASH_ATTRIBUTE_CLASS);
 
108707
    }
 
108708
    else
 
108709
    {
 
108710
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
108711
    }
 
108712
#else
 
108713
    {
 
108714
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
108715
    } // validation
 
108716
#endif
 
108717
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
108718
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
108719
        HASH_ELEMENT_SELECTOR,
 
108720
        HASH_ATTRIBUTE_CLASS,
 
108721
        attributeValue))
 
108722
{
 
108723
    return false;
 
108724
}
 
108725
#ifdef GENERATEDSAXPARSER_VALIDATION
 
108726
    if ( mValidate )
 
108727
    {
 
108728
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
108729
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
108730
    {
 
108731
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
108732
            simpleTypeValidationResult,
 
108733
            HASH_ELEMENT_SELECTOR,
 
108734
            HASH_ATTRIBUTE_CLASS,
 
108735
            attributeValue) )
 
108736
        {
 
108737
            return false;
 
108738
        }
 
108739
    }
 
108740
    } // validation
 
108741
#endif
 
108742
 
 
108743
if ( !failed )
 
108744
    attributeData->present_attributes |= selector__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
108745
 
 
108746
    break;
 
108747
    }
 
108748
    case HASH_ATTRIBUTE_STYLE:
 
108749
    {
 
108750
 
 
108751
attributeData->style = attributeValue;
 
108752
 
 
108753
    break;
 
108754
    }
 
108755
    case HASH_ATTRIBUTE_XREF:
 
108756
    {
 
108757
 
 
108758
attributeData->xref = attributeValue;
 
108759
 
 
108760
    break;
 
108761
    }
 
108762
    case HASH_ATTRIBUTE_ID:
 
108763
    {
 
108764
 
 
108765
attributeData->id = attributeValue;
 
108766
 
 
108767
    break;
 
108768
    }
 
108769
    case HASH_ATTRIBUTE_HREF:
 
108770
    {
 
108771
bool failed;
 
108772
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
108773
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
108774
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
108775
        HASH_ELEMENT_SELECTOR,
 
108776
        HASH_ATTRIBUTE_HREF,
 
108777
        attributeValue))
 
108778
{
 
108779
    return false;
 
108780
}
 
108781
if ( !failed )
 
108782
    attributeData->present_attributes |= selector__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
108783
 
 
108784
    break;
 
108785
    }
 
108786
    default:
 
108787
    {
 
108788
        if ( !attributeData->unknownAttributes.data )
 
108789
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
108790
        else
 
108791
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
108792
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
108793
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
108794
        attributeData->unknownAttributes.size += 2;
 
108795
 
 
108796
    }
 
108797
    }
 
108798
    }
 
108799
}
 
108800
if ((attributeData->present_attributes & selector__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
108801
{
 
108802
    attributeData->definitionURL = COLLADABU::URI("");
 
108803
}
 
108804
if ((attributeData->present_attributes & selector__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
108805
{
 
108806
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
108807
}
 
108808
if ((attributeData->present_attributes & selector__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
108809
{
 
108810
    attributeData->href = COLLADABU::URI("");
 
108811
}
 
108812
 
 
108813
 
 
108814
    return true;
 
108815
}
 
108816
 
 
108817
//---------------------------------------------------------------------
 
108818
bool ColladaParserAutoGen15Private::_preEnd__selector()
 
108819
{
 
108820
#ifdef GENERATEDSAXPARSER_VALIDATION
 
108821
    if ( mValidate )
 
108822
    {
 
108823
 
 
108824
        bool validationResult = _validateEnd__selector();
 
108825
        if ( !validationResult ) return false;
 
108826
 
 
108827
    } // validation
 
108828
#endif
 
108829
 
 
108830
    return true;
 
108831
}
 
108832
 
 
108833
//---------------------------------------------------------------------
 
108834
bool ColladaParserAutoGen15Private::_freeAttributes__selector( void* attributeData )
 
108835
{
 
108836
    selector__AttributeData* typedAttributeData = static_cast<selector__AttributeData*>(attributeData);
 
108837
    if (typedAttributeData->_class.data)
 
108838
    {
 
108839
        mStackMemoryManager.deleteObject();
 
108840
    }
 
108841
 
 
108842
    if (typedAttributeData->unknownAttributes.data)
 
108843
    {
 
108844
        mStackMemoryManager.deleteObject();
 
108845
    }
 
108846
 
 
108847
 
 
108848
    typedAttributeData->~selector__AttributeData();
 
108849
 
 
108850
    return true;
 
108851
}
 
108852
 
 
108853
//---------------------------------------------------------------------
 
108854
const vectorproduct__AttributeData vectorproduct__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
108855
 
 
108856
//---------------------------------------------------------------------
 
108857
bool ColladaParserAutoGen15Private::_data__vectorproduct( const ParserChar* text, size_t textLength )
 
108858
{
 
108859
    return true;
 
108860
}
 
108861
 
 
108862
//---------------------------------------------------------------------
 
108863
bool ColladaParserAutoGen15Private::_preBegin__vectorproduct( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
108864
{
 
108865
#ifdef GENERATEDSAXPARSER_VALIDATION
 
108866
    if ( mValidate )
 
108867
    {
 
108868
 
 
108869
        bool validationResult = _validateBegin__vectorproduct( attributes, attributeDataPtr, validationDataPtr );
 
108870
        if ( !validationResult ) return false;
 
108871
 
 
108872
    } // validation
 
108873
#endif
 
108874
 
 
108875
vectorproduct__AttributeData* attributeData = newData<vectorproduct__AttributeData>(attributeDataPtr);
 
108876
 
 
108877
const ParserChar** attributeArray = attributes.attributes;
 
108878
if ( attributeArray )
 
108879
{
 
108880
    while (true)
 
108881
    {
 
108882
        const ParserChar * attribute = *attributeArray;
 
108883
        if ( !attribute )
 
108884
            break;
 
108885
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
108886
        attributeArray++;
 
108887
        if ( !attributeArray )
 
108888
            return false;
 
108889
        const ParserChar* attributeValue = *attributeArray;
 
108890
        attributeArray++;
 
108891
 
 
108892
 
 
108893
    switch ( hash )
 
108894
    {
 
108895
    case HASH_ATTRIBUTE_ENCODING:
 
108896
    {
 
108897
 
 
108898
attributeData->encoding = attributeValue;
 
108899
 
 
108900
    break;
 
108901
    }
 
108902
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
108903
    {
 
108904
bool failed;
 
108905
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
108906
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
108907
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
108908
        HASH_ELEMENT_VECTORPRODUCT,
 
108909
        HASH_ATTRIBUTE_DEFINITIONURL,
 
108910
        attributeValue))
 
108911
{
 
108912
    return false;
 
108913
}
 
108914
if ( !failed )
 
108915
    attributeData->present_attributes |= vectorproduct__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
108916
 
 
108917
    break;
 
108918
    }
 
108919
    case HASH_ATTRIBUTE_CLASS:
 
108920
    {
 
108921
bool failed;
 
108922
#ifdef GENERATEDSAXPARSER_VALIDATION
 
108923
    if ( mValidate )
 
108924
    {
 
108925
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_VECTORPRODUCT, HASH_ATTRIBUTE_CLASS);
 
108926
    }
 
108927
    else
 
108928
    {
 
108929
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
108930
    }
 
108931
#else
 
108932
    {
 
108933
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
108934
    } // validation
 
108935
#endif
 
108936
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
108937
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
108938
        HASH_ELEMENT_VECTORPRODUCT,
 
108939
        HASH_ATTRIBUTE_CLASS,
 
108940
        attributeValue))
 
108941
{
 
108942
    return false;
 
108943
}
 
108944
#ifdef GENERATEDSAXPARSER_VALIDATION
 
108945
    if ( mValidate )
 
108946
    {
 
108947
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
108948
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
108949
    {
 
108950
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
108951
            simpleTypeValidationResult,
 
108952
            HASH_ELEMENT_VECTORPRODUCT,
 
108953
            HASH_ATTRIBUTE_CLASS,
 
108954
            attributeValue) )
 
108955
        {
 
108956
            return false;
 
108957
        }
 
108958
    }
 
108959
    } // validation
 
108960
#endif
 
108961
 
 
108962
if ( !failed )
 
108963
    attributeData->present_attributes |= vectorproduct__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
108964
 
 
108965
    break;
 
108966
    }
 
108967
    case HASH_ATTRIBUTE_STYLE:
 
108968
    {
 
108969
 
 
108970
attributeData->style = attributeValue;
 
108971
 
 
108972
    break;
 
108973
    }
 
108974
    case HASH_ATTRIBUTE_XREF:
 
108975
    {
 
108976
 
 
108977
attributeData->xref = attributeValue;
 
108978
 
 
108979
    break;
 
108980
    }
 
108981
    case HASH_ATTRIBUTE_ID:
 
108982
    {
 
108983
 
 
108984
attributeData->id = attributeValue;
 
108985
 
 
108986
    break;
 
108987
    }
 
108988
    case HASH_ATTRIBUTE_HREF:
 
108989
    {
 
108990
bool failed;
 
108991
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
108992
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
108993
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
108994
        HASH_ELEMENT_VECTORPRODUCT,
 
108995
        HASH_ATTRIBUTE_HREF,
 
108996
        attributeValue))
 
108997
{
 
108998
    return false;
 
108999
}
 
109000
if ( !failed )
 
109001
    attributeData->present_attributes |= vectorproduct__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
109002
 
 
109003
    break;
 
109004
    }
 
109005
    default:
 
109006
    {
 
109007
        if ( !attributeData->unknownAttributes.data )
 
109008
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
109009
        else
 
109010
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
109011
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
109012
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
109013
        attributeData->unknownAttributes.size += 2;
 
109014
 
 
109015
    }
 
109016
    }
 
109017
    }
 
109018
}
 
109019
if ((attributeData->present_attributes & vectorproduct__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
109020
{
 
109021
    attributeData->definitionURL = COLLADABU::URI("");
 
109022
}
 
109023
if ((attributeData->present_attributes & vectorproduct__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
109024
{
 
109025
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
109026
}
 
109027
if ((attributeData->present_attributes & vectorproduct__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
109028
{
 
109029
    attributeData->href = COLLADABU::URI("");
 
109030
}
 
109031
 
 
109032
 
 
109033
    return true;
 
109034
}
 
109035
 
 
109036
//---------------------------------------------------------------------
 
109037
bool ColladaParserAutoGen15Private::_preEnd__vectorproduct()
 
109038
{
 
109039
#ifdef GENERATEDSAXPARSER_VALIDATION
 
109040
    if ( mValidate )
 
109041
    {
 
109042
 
 
109043
        bool validationResult = _validateEnd__vectorproduct();
 
109044
        if ( !validationResult ) return false;
 
109045
 
 
109046
    } // validation
 
109047
#endif
 
109048
 
 
109049
    return true;
 
109050
}
 
109051
 
 
109052
//---------------------------------------------------------------------
 
109053
bool ColladaParserAutoGen15Private::_freeAttributes__vectorproduct( void* attributeData )
 
109054
{
 
109055
    vectorproduct__AttributeData* typedAttributeData = static_cast<vectorproduct__AttributeData*>(attributeData);
 
109056
    if (typedAttributeData->_class.data)
 
109057
    {
 
109058
        mStackMemoryManager.deleteObject();
 
109059
    }
 
109060
 
 
109061
    if (typedAttributeData->unknownAttributes.data)
 
109062
    {
 
109063
        mStackMemoryManager.deleteObject();
 
109064
    }
 
109065
 
 
109066
 
 
109067
    typedAttributeData->~vectorproduct__AttributeData();
 
109068
 
 
109069
    return true;
 
109070
}
 
109071
 
 
109072
//---------------------------------------------------------------------
 
109073
const scalarproduct__AttributeData scalarproduct__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
109074
 
 
109075
//---------------------------------------------------------------------
 
109076
bool ColladaParserAutoGen15Private::_data__scalarproduct( const ParserChar* text, size_t textLength )
 
109077
{
 
109078
    return true;
 
109079
}
 
109080
 
 
109081
//---------------------------------------------------------------------
 
109082
bool ColladaParserAutoGen15Private::_preBegin__scalarproduct( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
109083
{
 
109084
#ifdef GENERATEDSAXPARSER_VALIDATION
 
109085
    if ( mValidate )
 
109086
    {
 
109087
 
 
109088
        bool validationResult = _validateBegin__scalarproduct( attributes, attributeDataPtr, validationDataPtr );
 
109089
        if ( !validationResult ) return false;
 
109090
 
 
109091
    } // validation
 
109092
#endif
 
109093
 
 
109094
scalarproduct__AttributeData* attributeData = newData<scalarproduct__AttributeData>(attributeDataPtr);
 
109095
 
 
109096
const ParserChar** attributeArray = attributes.attributes;
 
109097
if ( attributeArray )
 
109098
{
 
109099
    while (true)
 
109100
    {
 
109101
        const ParserChar * attribute = *attributeArray;
 
109102
        if ( !attribute )
 
109103
            break;
 
109104
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
109105
        attributeArray++;
 
109106
        if ( !attributeArray )
 
109107
            return false;
 
109108
        const ParserChar* attributeValue = *attributeArray;
 
109109
        attributeArray++;
 
109110
 
 
109111
 
 
109112
    switch ( hash )
 
109113
    {
 
109114
    case HASH_ATTRIBUTE_ENCODING:
 
109115
    {
 
109116
 
 
109117
attributeData->encoding = attributeValue;
 
109118
 
 
109119
    break;
 
109120
    }
 
109121
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
109122
    {
 
109123
bool failed;
 
109124
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
109125
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
109126
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
109127
        HASH_ELEMENT_SCALARPRODUCT,
 
109128
        HASH_ATTRIBUTE_DEFINITIONURL,
 
109129
        attributeValue))
 
109130
{
 
109131
    return false;
 
109132
}
 
109133
if ( !failed )
 
109134
    attributeData->present_attributes |= scalarproduct__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
109135
 
 
109136
    break;
 
109137
    }
 
109138
    case HASH_ATTRIBUTE_CLASS:
 
109139
    {
 
109140
bool failed;
 
109141
#ifdef GENERATEDSAXPARSER_VALIDATION
 
109142
    if ( mValidate )
 
109143
    {
 
109144
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_SCALARPRODUCT, HASH_ATTRIBUTE_CLASS);
 
109145
    }
 
109146
    else
 
109147
    {
 
109148
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
109149
    }
 
109150
#else
 
109151
    {
 
109152
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
109153
    } // validation
 
109154
#endif
 
109155
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
109156
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
109157
        HASH_ELEMENT_SCALARPRODUCT,
 
109158
        HASH_ATTRIBUTE_CLASS,
 
109159
        attributeValue))
 
109160
{
 
109161
    return false;
 
109162
}
 
109163
#ifdef GENERATEDSAXPARSER_VALIDATION
 
109164
    if ( mValidate )
 
109165
    {
 
109166
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
109167
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
109168
    {
 
109169
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
109170
            simpleTypeValidationResult,
 
109171
            HASH_ELEMENT_SCALARPRODUCT,
 
109172
            HASH_ATTRIBUTE_CLASS,
 
109173
            attributeValue) )
 
109174
        {
 
109175
            return false;
 
109176
        }
 
109177
    }
 
109178
    } // validation
 
109179
#endif
 
109180
 
 
109181
if ( !failed )
 
109182
    attributeData->present_attributes |= scalarproduct__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
109183
 
 
109184
    break;
 
109185
    }
 
109186
    case HASH_ATTRIBUTE_STYLE:
 
109187
    {
 
109188
 
 
109189
attributeData->style = attributeValue;
 
109190
 
 
109191
    break;
 
109192
    }
 
109193
    case HASH_ATTRIBUTE_XREF:
 
109194
    {
 
109195
 
 
109196
attributeData->xref = attributeValue;
 
109197
 
 
109198
    break;
 
109199
    }
 
109200
    case HASH_ATTRIBUTE_ID:
 
109201
    {
 
109202
 
 
109203
attributeData->id = attributeValue;
 
109204
 
 
109205
    break;
 
109206
    }
 
109207
    case HASH_ATTRIBUTE_HREF:
 
109208
    {
 
109209
bool failed;
 
109210
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
109211
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
109212
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
109213
        HASH_ELEMENT_SCALARPRODUCT,
 
109214
        HASH_ATTRIBUTE_HREF,
 
109215
        attributeValue))
 
109216
{
 
109217
    return false;
 
109218
}
 
109219
if ( !failed )
 
109220
    attributeData->present_attributes |= scalarproduct__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
109221
 
 
109222
    break;
 
109223
    }
 
109224
    default:
 
109225
    {
 
109226
        if ( !attributeData->unknownAttributes.data )
 
109227
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
109228
        else
 
109229
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
109230
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
109231
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
109232
        attributeData->unknownAttributes.size += 2;
 
109233
 
 
109234
    }
 
109235
    }
 
109236
    }
 
109237
}
 
109238
if ((attributeData->present_attributes & scalarproduct__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
109239
{
 
109240
    attributeData->definitionURL = COLLADABU::URI("");
 
109241
}
 
109242
if ((attributeData->present_attributes & scalarproduct__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
109243
{
 
109244
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
109245
}
 
109246
if ((attributeData->present_attributes & scalarproduct__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
109247
{
 
109248
    attributeData->href = COLLADABU::URI("");
 
109249
}
 
109250
 
 
109251
 
 
109252
    return true;
 
109253
}
 
109254
 
 
109255
//---------------------------------------------------------------------
 
109256
bool ColladaParserAutoGen15Private::_preEnd__scalarproduct()
 
109257
{
 
109258
#ifdef GENERATEDSAXPARSER_VALIDATION
 
109259
    if ( mValidate )
 
109260
    {
 
109261
 
 
109262
        bool validationResult = _validateEnd__scalarproduct();
 
109263
        if ( !validationResult ) return false;
 
109264
 
 
109265
    } // validation
 
109266
#endif
 
109267
 
 
109268
    return true;
 
109269
}
 
109270
 
 
109271
//---------------------------------------------------------------------
 
109272
bool ColladaParserAutoGen15Private::_freeAttributes__scalarproduct( void* attributeData )
 
109273
{
 
109274
    scalarproduct__AttributeData* typedAttributeData = static_cast<scalarproduct__AttributeData*>(attributeData);
 
109275
    if (typedAttributeData->_class.data)
 
109276
    {
 
109277
        mStackMemoryManager.deleteObject();
 
109278
    }
 
109279
 
 
109280
    if (typedAttributeData->unknownAttributes.data)
 
109281
    {
 
109282
        mStackMemoryManager.deleteObject();
 
109283
    }
 
109284
 
 
109285
 
 
109286
    typedAttributeData->~scalarproduct__AttributeData();
 
109287
 
 
109288
    return true;
 
109289
}
 
109290
 
 
109291
//---------------------------------------------------------------------
 
109292
const outerproduct__AttributeData outerproduct__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
109293
 
 
109294
//---------------------------------------------------------------------
 
109295
bool ColladaParserAutoGen15Private::_data__outerproduct( const ParserChar* text, size_t textLength )
 
109296
{
 
109297
    return true;
 
109298
}
 
109299
 
 
109300
//---------------------------------------------------------------------
 
109301
bool ColladaParserAutoGen15Private::_preBegin__outerproduct( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
109302
{
 
109303
#ifdef GENERATEDSAXPARSER_VALIDATION
 
109304
    if ( mValidate )
 
109305
    {
 
109306
 
 
109307
        bool validationResult = _validateBegin__outerproduct( attributes, attributeDataPtr, validationDataPtr );
 
109308
        if ( !validationResult ) return false;
 
109309
 
 
109310
    } // validation
 
109311
#endif
 
109312
 
 
109313
outerproduct__AttributeData* attributeData = newData<outerproduct__AttributeData>(attributeDataPtr);
 
109314
 
 
109315
const ParserChar** attributeArray = attributes.attributes;
 
109316
if ( attributeArray )
 
109317
{
 
109318
    while (true)
 
109319
    {
 
109320
        const ParserChar * attribute = *attributeArray;
 
109321
        if ( !attribute )
 
109322
            break;
 
109323
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
109324
        attributeArray++;
 
109325
        if ( !attributeArray )
 
109326
            return false;
 
109327
        const ParserChar* attributeValue = *attributeArray;
 
109328
        attributeArray++;
 
109329
 
 
109330
 
 
109331
    switch ( hash )
 
109332
    {
 
109333
    case HASH_ATTRIBUTE_ENCODING:
 
109334
    {
 
109335
 
 
109336
attributeData->encoding = attributeValue;
 
109337
 
 
109338
    break;
 
109339
    }
 
109340
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
109341
    {
 
109342
bool failed;
 
109343
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
109344
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
109345
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
109346
        HASH_ELEMENT_OUTERPRODUCT,
 
109347
        HASH_ATTRIBUTE_DEFINITIONURL,
 
109348
        attributeValue))
 
109349
{
 
109350
    return false;
 
109351
}
 
109352
if ( !failed )
 
109353
    attributeData->present_attributes |= outerproduct__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
109354
 
 
109355
    break;
 
109356
    }
 
109357
    case HASH_ATTRIBUTE_CLASS:
 
109358
    {
 
109359
bool failed;
 
109360
#ifdef GENERATEDSAXPARSER_VALIDATION
 
109361
    if ( mValidate )
 
109362
    {
 
109363
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_OUTERPRODUCT, HASH_ATTRIBUTE_CLASS);
 
109364
    }
 
109365
    else
 
109366
    {
 
109367
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
109368
    }
 
109369
#else
 
109370
    {
 
109371
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
109372
    } // validation
 
109373
#endif
 
109374
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
109375
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
109376
        HASH_ELEMENT_OUTERPRODUCT,
 
109377
        HASH_ATTRIBUTE_CLASS,
 
109378
        attributeValue))
 
109379
{
 
109380
    return false;
 
109381
}
 
109382
#ifdef GENERATEDSAXPARSER_VALIDATION
 
109383
    if ( mValidate )
 
109384
    {
 
109385
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
109386
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
109387
    {
 
109388
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
109389
            simpleTypeValidationResult,
 
109390
            HASH_ELEMENT_OUTERPRODUCT,
 
109391
            HASH_ATTRIBUTE_CLASS,
 
109392
            attributeValue) )
 
109393
        {
 
109394
            return false;
 
109395
        }
 
109396
    }
 
109397
    } // validation
 
109398
#endif
 
109399
 
 
109400
if ( !failed )
 
109401
    attributeData->present_attributes |= outerproduct__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
109402
 
 
109403
    break;
 
109404
    }
 
109405
    case HASH_ATTRIBUTE_STYLE:
 
109406
    {
 
109407
 
 
109408
attributeData->style = attributeValue;
 
109409
 
 
109410
    break;
 
109411
    }
 
109412
    case HASH_ATTRIBUTE_XREF:
 
109413
    {
 
109414
 
 
109415
attributeData->xref = attributeValue;
 
109416
 
 
109417
    break;
 
109418
    }
 
109419
    case HASH_ATTRIBUTE_ID:
 
109420
    {
 
109421
 
 
109422
attributeData->id = attributeValue;
 
109423
 
 
109424
    break;
 
109425
    }
 
109426
    case HASH_ATTRIBUTE_HREF:
 
109427
    {
 
109428
bool failed;
 
109429
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
109430
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
109431
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
109432
        HASH_ELEMENT_OUTERPRODUCT,
 
109433
        HASH_ATTRIBUTE_HREF,
 
109434
        attributeValue))
 
109435
{
 
109436
    return false;
 
109437
}
 
109438
if ( !failed )
 
109439
    attributeData->present_attributes |= outerproduct__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
109440
 
 
109441
    break;
 
109442
    }
 
109443
    default:
 
109444
    {
 
109445
        if ( !attributeData->unknownAttributes.data )
 
109446
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
109447
        else
 
109448
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
109449
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
109450
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
109451
        attributeData->unknownAttributes.size += 2;
 
109452
 
 
109453
    }
 
109454
    }
 
109455
    }
 
109456
}
 
109457
if ((attributeData->present_attributes & outerproduct__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
109458
{
 
109459
    attributeData->definitionURL = COLLADABU::URI("");
 
109460
}
 
109461
if ((attributeData->present_attributes & outerproduct__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
109462
{
 
109463
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
109464
}
 
109465
if ((attributeData->present_attributes & outerproduct__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
109466
{
 
109467
    attributeData->href = COLLADABU::URI("");
 
109468
}
 
109469
 
 
109470
 
 
109471
    return true;
 
109472
}
 
109473
 
 
109474
//---------------------------------------------------------------------
 
109475
bool ColladaParserAutoGen15Private::_preEnd__outerproduct()
 
109476
{
 
109477
#ifdef GENERATEDSAXPARSER_VALIDATION
 
109478
    if ( mValidate )
 
109479
    {
 
109480
 
 
109481
        bool validationResult = _validateEnd__outerproduct();
 
109482
        if ( !validationResult ) return false;
 
109483
 
 
109484
    } // validation
 
109485
#endif
 
109486
 
 
109487
    return true;
 
109488
}
 
109489
 
 
109490
//---------------------------------------------------------------------
 
109491
bool ColladaParserAutoGen15Private::_freeAttributes__outerproduct( void* attributeData )
 
109492
{
 
109493
    outerproduct__AttributeData* typedAttributeData = static_cast<outerproduct__AttributeData*>(attributeData);
 
109494
    if (typedAttributeData->_class.data)
 
109495
    {
 
109496
        mStackMemoryManager.deleteObject();
 
109497
    }
 
109498
 
 
109499
    if (typedAttributeData->unknownAttributes.data)
 
109500
    {
 
109501
        mStackMemoryManager.deleteObject();
 
109502
    }
 
109503
 
 
109504
 
 
109505
    typedAttributeData->~outerproduct__AttributeData();
 
109506
 
 
109507
    return true;
 
109508
}
 
109509
 
 
109510
//---------------------------------------------------------------------
 
109511
const divergence__AttributeData divergence__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
109512
 
 
109513
//---------------------------------------------------------------------
 
109514
bool ColladaParserAutoGen15Private::_data__divergence( const ParserChar* text, size_t textLength )
 
109515
{
 
109516
    return true;
 
109517
}
 
109518
 
 
109519
//---------------------------------------------------------------------
 
109520
bool ColladaParserAutoGen15Private::_preBegin__divergence( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
109521
{
 
109522
#ifdef GENERATEDSAXPARSER_VALIDATION
 
109523
    if ( mValidate )
 
109524
    {
 
109525
 
 
109526
        bool validationResult = _validateBegin__divergence( attributes, attributeDataPtr, validationDataPtr );
 
109527
        if ( !validationResult ) return false;
 
109528
 
 
109529
    } // validation
 
109530
#endif
 
109531
 
 
109532
divergence__AttributeData* attributeData = newData<divergence__AttributeData>(attributeDataPtr);
 
109533
 
 
109534
const ParserChar** attributeArray = attributes.attributes;
 
109535
if ( attributeArray )
 
109536
{
 
109537
    while (true)
 
109538
    {
 
109539
        const ParserChar * attribute = *attributeArray;
 
109540
        if ( !attribute )
 
109541
            break;
 
109542
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
109543
        attributeArray++;
 
109544
        if ( !attributeArray )
 
109545
            return false;
 
109546
        const ParserChar* attributeValue = *attributeArray;
 
109547
        attributeArray++;
 
109548
 
 
109549
 
 
109550
    switch ( hash )
 
109551
    {
 
109552
    case HASH_ATTRIBUTE_ENCODING:
 
109553
    {
 
109554
 
 
109555
attributeData->encoding = attributeValue;
 
109556
 
 
109557
    break;
 
109558
    }
 
109559
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
109560
    {
 
109561
bool failed;
 
109562
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
109563
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
109564
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
109565
        HASH_ELEMENT_DIVERGENCE,
 
109566
        HASH_ATTRIBUTE_DEFINITIONURL,
 
109567
        attributeValue))
 
109568
{
 
109569
    return false;
 
109570
}
 
109571
if ( !failed )
 
109572
    attributeData->present_attributes |= divergence__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
109573
 
 
109574
    break;
 
109575
    }
 
109576
    case HASH_ATTRIBUTE_CLASS:
 
109577
    {
 
109578
bool failed;
 
109579
#ifdef GENERATEDSAXPARSER_VALIDATION
 
109580
    if ( mValidate )
 
109581
    {
 
109582
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_DIVERGENCE, HASH_ATTRIBUTE_CLASS);
 
109583
    }
 
109584
    else
 
109585
    {
 
109586
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
109587
    }
 
109588
#else
 
109589
    {
 
109590
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
109591
    } // validation
 
109592
#endif
 
109593
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
109594
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
109595
        HASH_ELEMENT_DIVERGENCE,
 
109596
        HASH_ATTRIBUTE_CLASS,
 
109597
        attributeValue))
 
109598
{
 
109599
    return false;
 
109600
}
 
109601
#ifdef GENERATEDSAXPARSER_VALIDATION
 
109602
    if ( mValidate )
 
109603
    {
 
109604
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
109605
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
109606
    {
 
109607
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
109608
            simpleTypeValidationResult,
 
109609
            HASH_ELEMENT_DIVERGENCE,
 
109610
            HASH_ATTRIBUTE_CLASS,
 
109611
            attributeValue) )
 
109612
        {
 
109613
            return false;
 
109614
        }
 
109615
    }
 
109616
    } // validation
 
109617
#endif
 
109618
 
 
109619
if ( !failed )
 
109620
    attributeData->present_attributes |= divergence__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
109621
 
 
109622
    break;
 
109623
    }
 
109624
    case HASH_ATTRIBUTE_STYLE:
 
109625
    {
 
109626
 
 
109627
attributeData->style = attributeValue;
 
109628
 
 
109629
    break;
 
109630
    }
 
109631
    case HASH_ATTRIBUTE_XREF:
 
109632
    {
 
109633
 
 
109634
attributeData->xref = attributeValue;
 
109635
 
 
109636
    break;
 
109637
    }
 
109638
    case HASH_ATTRIBUTE_ID:
 
109639
    {
 
109640
 
 
109641
attributeData->id = attributeValue;
 
109642
 
 
109643
    break;
 
109644
    }
 
109645
    case HASH_ATTRIBUTE_HREF:
 
109646
    {
 
109647
bool failed;
 
109648
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
109649
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
109650
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
109651
        HASH_ELEMENT_DIVERGENCE,
 
109652
        HASH_ATTRIBUTE_HREF,
 
109653
        attributeValue))
 
109654
{
 
109655
    return false;
 
109656
}
 
109657
if ( !failed )
 
109658
    attributeData->present_attributes |= divergence__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
109659
 
 
109660
    break;
 
109661
    }
 
109662
    default:
 
109663
    {
 
109664
        if ( !attributeData->unknownAttributes.data )
 
109665
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
109666
        else
 
109667
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
109668
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
109669
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
109670
        attributeData->unknownAttributes.size += 2;
 
109671
 
 
109672
    }
 
109673
    }
 
109674
    }
 
109675
}
 
109676
if ((attributeData->present_attributes & divergence__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
109677
{
 
109678
    attributeData->definitionURL = COLLADABU::URI("");
 
109679
}
 
109680
if ((attributeData->present_attributes & divergence__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
109681
{
 
109682
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
109683
}
 
109684
if ((attributeData->present_attributes & divergence__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
109685
{
 
109686
    attributeData->href = COLLADABU::URI("");
 
109687
}
 
109688
 
 
109689
 
 
109690
    return true;
 
109691
}
 
109692
 
 
109693
//---------------------------------------------------------------------
 
109694
bool ColladaParserAutoGen15Private::_preEnd__divergence()
 
109695
{
 
109696
#ifdef GENERATEDSAXPARSER_VALIDATION
 
109697
    if ( mValidate )
 
109698
    {
 
109699
 
 
109700
        bool validationResult = _validateEnd__divergence();
 
109701
        if ( !validationResult ) return false;
 
109702
 
 
109703
    } // validation
 
109704
#endif
 
109705
 
 
109706
    return true;
 
109707
}
 
109708
 
 
109709
//---------------------------------------------------------------------
 
109710
bool ColladaParserAutoGen15Private::_freeAttributes__divergence( void* attributeData )
 
109711
{
 
109712
    divergence__AttributeData* typedAttributeData = static_cast<divergence__AttributeData*>(attributeData);
 
109713
    if (typedAttributeData->_class.data)
 
109714
    {
 
109715
        mStackMemoryManager.deleteObject();
 
109716
    }
 
109717
 
 
109718
    if (typedAttributeData->unknownAttributes.data)
 
109719
    {
 
109720
        mStackMemoryManager.deleteObject();
 
109721
    }
 
109722
 
 
109723
 
 
109724
    typedAttributeData->~divergence__AttributeData();
 
109725
 
 
109726
    return true;
 
109727
}
 
109728
 
 
109729
//---------------------------------------------------------------------
 
109730
const grad__AttributeData grad__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
109731
 
 
109732
//---------------------------------------------------------------------
 
109733
bool ColladaParserAutoGen15Private::_data__grad( const ParserChar* text, size_t textLength )
 
109734
{
 
109735
    return true;
 
109736
}
 
109737
 
 
109738
//---------------------------------------------------------------------
 
109739
bool ColladaParserAutoGen15Private::_preBegin__grad( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
109740
{
 
109741
#ifdef GENERATEDSAXPARSER_VALIDATION
 
109742
    if ( mValidate )
 
109743
    {
 
109744
 
 
109745
        bool validationResult = _validateBegin__grad( attributes, attributeDataPtr, validationDataPtr );
 
109746
        if ( !validationResult ) return false;
 
109747
 
 
109748
    } // validation
 
109749
#endif
 
109750
 
 
109751
grad__AttributeData* attributeData = newData<grad__AttributeData>(attributeDataPtr);
 
109752
 
 
109753
const ParserChar** attributeArray = attributes.attributes;
 
109754
if ( attributeArray )
 
109755
{
 
109756
    while (true)
 
109757
    {
 
109758
        const ParserChar * attribute = *attributeArray;
 
109759
        if ( !attribute )
 
109760
            break;
 
109761
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
109762
        attributeArray++;
 
109763
        if ( !attributeArray )
 
109764
            return false;
 
109765
        const ParserChar* attributeValue = *attributeArray;
 
109766
        attributeArray++;
 
109767
 
 
109768
 
 
109769
    switch ( hash )
 
109770
    {
 
109771
    case HASH_ATTRIBUTE_ENCODING:
 
109772
    {
 
109773
 
 
109774
attributeData->encoding = attributeValue;
 
109775
 
 
109776
    break;
 
109777
    }
 
109778
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
109779
    {
 
109780
bool failed;
 
109781
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
109782
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
109783
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
109784
        HASH_ELEMENT_GRAD,
 
109785
        HASH_ATTRIBUTE_DEFINITIONURL,
 
109786
        attributeValue))
 
109787
{
 
109788
    return false;
 
109789
}
 
109790
if ( !failed )
 
109791
    attributeData->present_attributes |= grad__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
109792
 
 
109793
    break;
 
109794
    }
 
109795
    case HASH_ATTRIBUTE_CLASS:
 
109796
    {
 
109797
bool failed;
 
109798
#ifdef GENERATEDSAXPARSER_VALIDATION
 
109799
    if ( mValidate )
 
109800
    {
 
109801
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_GRAD, HASH_ATTRIBUTE_CLASS);
 
109802
    }
 
109803
    else
 
109804
    {
 
109805
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
109806
    }
 
109807
#else
 
109808
    {
 
109809
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
109810
    } // validation
 
109811
#endif
 
109812
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
109813
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
109814
        HASH_ELEMENT_GRAD,
 
109815
        HASH_ATTRIBUTE_CLASS,
 
109816
        attributeValue))
 
109817
{
 
109818
    return false;
 
109819
}
 
109820
#ifdef GENERATEDSAXPARSER_VALIDATION
 
109821
    if ( mValidate )
 
109822
    {
 
109823
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
109824
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
109825
    {
 
109826
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
109827
            simpleTypeValidationResult,
 
109828
            HASH_ELEMENT_GRAD,
 
109829
            HASH_ATTRIBUTE_CLASS,
 
109830
            attributeValue) )
 
109831
        {
 
109832
            return false;
 
109833
        }
 
109834
    }
 
109835
    } // validation
 
109836
#endif
 
109837
 
 
109838
if ( !failed )
 
109839
    attributeData->present_attributes |= grad__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
109840
 
 
109841
    break;
 
109842
    }
 
109843
    case HASH_ATTRIBUTE_STYLE:
 
109844
    {
 
109845
 
 
109846
attributeData->style = attributeValue;
 
109847
 
 
109848
    break;
 
109849
    }
 
109850
    case HASH_ATTRIBUTE_XREF:
 
109851
    {
 
109852
 
 
109853
attributeData->xref = attributeValue;
 
109854
 
 
109855
    break;
 
109856
    }
 
109857
    case HASH_ATTRIBUTE_ID:
 
109858
    {
 
109859
 
 
109860
attributeData->id = attributeValue;
 
109861
 
 
109862
    break;
 
109863
    }
 
109864
    case HASH_ATTRIBUTE_HREF:
 
109865
    {
 
109866
bool failed;
 
109867
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
109868
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
109869
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
109870
        HASH_ELEMENT_GRAD,
 
109871
        HASH_ATTRIBUTE_HREF,
 
109872
        attributeValue))
 
109873
{
 
109874
    return false;
 
109875
}
 
109876
if ( !failed )
 
109877
    attributeData->present_attributes |= grad__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
109878
 
 
109879
    break;
 
109880
    }
 
109881
    default:
 
109882
    {
 
109883
        if ( !attributeData->unknownAttributes.data )
 
109884
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
109885
        else
 
109886
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
109887
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
109888
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
109889
        attributeData->unknownAttributes.size += 2;
 
109890
 
 
109891
    }
 
109892
    }
 
109893
    }
 
109894
}
 
109895
if ((attributeData->present_attributes & grad__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
109896
{
 
109897
    attributeData->definitionURL = COLLADABU::URI("");
 
109898
}
 
109899
if ((attributeData->present_attributes & grad__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
109900
{
 
109901
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
109902
}
 
109903
if ((attributeData->present_attributes & grad__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
109904
{
 
109905
    attributeData->href = COLLADABU::URI("");
 
109906
}
 
109907
 
 
109908
 
 
109909
    return true;
 
109910
}
 
109911
 
 
109912
//---------------------------------------------------------------------
 
109913
bool ColladaParserAutoGen15Private::_preEnd__grad()
 
109914
{
 
109915
#ifdef GENERATEDSAXPARSER_VALIDATION
 
109916
    if ( mValidate )
 
109917
    {
 
109918
 
 
109919
        bool validationResult = _validateEnd__grad();
 
109920
        if ( !validationResult ) return false;
 
109921
 
 
109922
    } // validation
 
109923
#endif
 
109924
 
 
109925
    return true;
 
109926
}
 
109927
 
 
109928
//---------------------------------------------------------------------
 
109929
bool ColladaParserAutoGen15Private::_freeAttributes__grad( void* attributeData )
 
109930
{
 
109931
    grad__AttributeData* typedAttributeData = static_cast<grad__AttributeData*>(attributeData);
 
109932
    if (typedAttributeData->_class.data)
 
109933
    {
 
109934
        mStackMemoryManager.deleteObject();
 
109935
    }
 
109936
 
 
109937
    if (typedAttributeData->unknownAttributes.data)
 
109938
    {
 
109939
        mStackMemoryManager.deleteObject();
 
109940
    }
 
109941
 
 
109942
 
 
109943
    typedAttributeData->~grad__AttributeData();
 
109944
 
 
109945
    return true;
 
109946
}
 
109947
 
 
109948
//---------------------------------------------------------------------
 
109949
const curl__AttributeData curl__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
109950
 
 
109951
//---------------------------------------------------------------------
 
109952
bool ColladaParserAutoGen15Private::_data__curl( const ParserChar* text, size_t textLength )
 
109953
{
 
109954
    return true;
 
109955
}
 
109956
 
 
109957
//---------------------------------------------------------------------
 
109958
bool ColladaParserAutoGen15Private::_preBegin__curl( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
109959
{
 
109960
#ifdef GENERATEDSAXPARSER_VALIDATION
 
109961
    if ( mValidate )
 
109962
    {
 
109963
 
 
109964
        bool validationResult = _validateBegin__curl( attributes, attributeDataPtr, validationDataPtr );
 
109965
        if ( !validationResult ) return false;
 
109966
 
 
109967
    } // validation
 
109968
#endif
 
109969
 
 
109970
curl__AttributeData* attributeData = newData<curl__AttributeData>(attributeDataPtr);
 
109971
 
 
109972
const ParserChar** attributeArray = attributes.attributes;
 
109973
if ( attributeArray )
 
109974
{
 
109975
    while (true)
 
109976
    {
 
109977
        const ParserChar * attribute = *attributeArray;
 
109978
        if ( !attribute )
 
109979
            break;
 
109980
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
109981
        attributeArray++;
 
109982
        if ( !attributeArray )
 
109983
            return false;
 
109984
        const ParserChar* attributeValue = *attributeArray;
 
109985
        attributeArray++;
 
109986
 
 
109987
 
 
109988
    switch ( hash )
 
109989
    {
 
109990
    case HASH_ATTRIBUTE_ENCODING:
 
109991
    {
 
109992
 
 
109993
attributeData->encoding = attributeValue;
 
109994
 
 
109995
    break;
 
109996
    }
 
109997
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
109998
    {
 
109999
bool failed;
 
110000
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
110001
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
110002
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
110003
        HASH_ELEMENT_CURL,
 
110004
        HASH_ATTRIBUTE_DEFINITIONURL,
 
110005
        attributeValue))
 
110006
{
 
110007
    return false;
 
110008
}
 
110009
if ( !failed )
 
110010
    attributeData->present_attributes |= curl__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
110011
 
 
110012
    break;
 
110013
    }
 
110014
    case HASH_ATTRIBUTE_CLASS:
 
110015
    {
 
110016
bool failed;
 
110017
#ifdef GENERATEDSAXPARSER_VALIDATION
 
110018
    if ( mValidate )
 
110019
    {
 
110020
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_CURL, HASH_ATTRIBUTE_CLASS);
 
110021
    }
 
110022
    else
 
110023
    {
 
110024
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
110025
    }
 
110026
#else
 
110027
    {
 
110028
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
110029
    } // validation
 
110030
#endif
 
110031
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
110032
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
110033
        HASH_ELEMENT_CURL,
 
110034
        HASH_ATTRIBUTE_CLASS,
 
110035
        attributeValue))
 
110036
{
 
110037
    return false;
 
110038
}
 
110039
#ifdef GENERATEDSAXPARSER_VALIDATION
 
110040
    if ( mValidate )
 
110041
    {
 
110042
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
110043
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
110044
    {
 
110045
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
110046
            simpleTypeValidationResult,
 
110047
            HASH_ELEMENT_CURL,
 
110048
            HASH_ATTRIBUTE_CLASS,
 
110049
            attributeValue) )
 
110050
        {
 
110051
            return false;
 
110052
        }
 
110053
    }
 
110054
    } // validation
 
110055
#endif
 
110056
 
 
110057
if ( !failed )
 
110058
    attributeData->present_attributes |= curl__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
110059
 
 
110060
    break;
 
110061
    }
 
110062
    case HASH_ATTRIBUTE_STYLE:
 
110063
    {
 
110064
 
 
110065
attributeData->style = attributeValue;
 
110066
 
 
110067
    break;
 
110068
    }
 
110069
    case HASH_ATTRIBUTE_XREF:
 
110070
    {
 
110071
 
 
110072
attributeData->xref = attributeValue;
 
110073
 
 
110074
    break;
 
110075
    }
 
110076
    case HASH_ATTRIBUTE_ID:
 
110077
    {
 
110078
 
 
110079
attributeData->id = attributeValue;
 
110080
 
 
110081
    break;
 
110082
    }
 
110083
    case HASH_ATTRIBUTE_HREF:
 
110084
    {
 
110085
bool failed;
 
110086
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
110087
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
110088
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
110089
        HASH_ELEMENT_CURL,
 
110090
        HASH_ATTRIBUTE_HREF,
 
110091
        attributeValue))
 
110092
{
 
110093
    return false;
 
110094
}
 
110095
if ( !failed )
 
110096
    attributeData->present_attributes |= curl__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
110097
 
 
110098
    break;
 
110099
    }
 
110100
    default:
 
110101
    {
 
110102
        if ( !attributeData->unknownAttributes.data )
 
110103
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
110104
        else
 
110105
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
110106
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
110107
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
110108
        attributeData->unknownAttributes.size += 2;
 
110109
 
 
110110
    }
 
110111
    }
 
110112
    }
 
110113
}
 
110114
if ((attributeData->present_attributes & curl__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
110115
{
 
110116
    attributeData->definitionURL = COLLADABU::URI("");
 
110117
}
 
110118
if ((attributeData->present_attributes & curl__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
110119
{
 
110120
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
110121
}
 
110122
if ((attributeData->present_attributes & curl__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
110123
{
 
110124
    attributeData->href = COLLADABU::URI("");
 
110125
}
 
110126
 
 
110127
 
 
110128
    return true;
 
110129
}
 
110130
 
 
110131
//---------------------------------------------------------------------
 
110132
bool ColladaParserAutoGen15Private::_preEnd__curl()
 
110133
{
 
110134
#ifdef GENERATEDSAXPARSER_VALIDATION
 
110135
    if ( mValidate )
 
110136
    {
 
110137
 
 
110138
        bool validationResult = _validateEnd__curl();
 
110139
        if ( !validationResult ) return false;
 
110140
 
 
110141
    } // validation
 
110142
#endif
 
110143
 
 
110144
    return true;
 
110145
}
 
110146
 
 
110147
//---------------------------------------------------------------------
 
110148
bool ColladaParserAutoGen15Private::_freeAttributes__curl( void* attributeData )
 
110149
{
 
110150
    curl__AttributeData* typedAttributeData = static_cast<curl__AttributeData*>(attributeData);
 
110151
    if (typedAttributeData->_class.data)
 
110152
    {
 
110153
        mStackMemoryManager.deleteObject();
 
110154
    }
 
110155
 
 
110156
    if (typedAttributeData->unknownAttributes.data)
 
110157
    {
 
110158
        mStackMemoryManager.deleteObject();
 
110159
    }
 
110160
 
 
110161
 
 
110162
    typedAttributeData->~curl__AttributeData();
 
110163
 
 
110164
    return true;
 
110165
}
 
110166
 
 
110167
//---------------------------------------------------------------------
 
110168
const laplacian__AttributeData laplacian__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
110169
 
 
110170
//---------------------------------------------------------------------
 
110171
bool ColladaParserAutoGen15Private::_data__laplacian( const ParserChar* text, size_t textLength )
 
110172
{
 
110173
    return true;
 
110174
}
 
110175
 
 
110176
//---------------------------------------------------------------------
 
110177
bool ColladaParserAutoGen15Private::_preBegin__laplacian( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
110178
{
 
110179
#ifdef GENERATEDSAXPARSER_VALIDATION
 
110180
    if ( mValidate )
 
110181
    {
 
110182
 
 
110183
        bool validationResult = _validateBegin__laplacian( attributes, attributeDataPtr, validationDataPtr );
 
110184
        if ( !validationResult ) return false;
 
110185
 
 
110186
    } // validation
 
110187
#endif
 
110188
 
 
110189
laplacian__AttributeData* attributeData = newData<laplacian__AttributeData>(attributeDataPtr);
 
110190
 
 
110191
const ParserChar** attributeArray = attributes.attributes;
 
110192
if ( attributeArray )
 
110193
{
 
110194
    while (true)
 
110195
    {
 
110196
        const ParserChar * attribute = *attributeArray;
 
110197
        if ( !attribute )
 
110198
            break;
 
110199
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
110200
        attributeArray++;
 
110201
        if ( !attributeArray )
 
110202
            return false;
 
110203
        const ParserChar* attributeValue = *attributeArray;
 
110204
        attributeArray++;
 
110205
 
 
110206
 
 
110207
    switch ( hash )
 
110208
    {
 
110209
    case HASH_ATTRIBUTE_ENCODING:
 
110210
    {
 
110211
 
 
110212
attributeData->encoding = attributeValue;
 
110213
 
 
110214
    break;
 
110215
    }
 
110216
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
110217
    {
 
110218
bool failed;
 
110219
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
110220
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
110221
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
110222
        HASH_ELEMENT_LAPLACIAN,
 
110223
        HASH_ATTRIBUTE_DEFINITIONURL,
 
110224
        attributeValue))
 
110225
{
 
110226
    return false;
 
110227
}
 
110228
if ( !failed )
 
110229
    attributeData->present_attributes |= laplacian__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
110230
 
 
110231
    break;
 
110232
    }
 
110233
    case HASH_ATTRIBUTE_CLASS:
 
110234
    {
 
110235
bool failed;
 
110236
#ifdef GENERATEDSAXPARSER_VALIDATION
 
110237
    if ( mValidate )
 
110238
    {
 
110239
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_LAPLACIAN, HASH_ATTRIBUTE_CLASS);
 
110240
    }
 
110241
    else
 
110242
    {
 
110243
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
110244
    }
 
110245
#else
 
110246
    {
 
110247
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
110248
    } // validation
 
110249
#endif
 
110250
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
110251
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
110252
        HASH_ELEMENT_LAPLACIAN,
 
110253
        HASH_ATTRIBUTE_CLASS,
 
110254
        attributeValue))
 
110255
{
 
110256
    return false;
 
110257
}
 
110258
#ifdef GENERATEDSAXPARSER_VALIDATION
 
110259
    if ( mValidate )
 
110260
    {
 
110261
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
110262
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
110263
    {
 
110264
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
110265
            simpleTypeValidationResult,
 
110266
            HASH_ELEMENT_LAPLACIAN,
 
110267
            HASH_ATTRIBUTE_CLASS,
 
110268
            attributeValue) )
 
110269
        {
 
110270
            return false;
 
110271
        }
 
110272
    }
 
110273
    } // validation
 
110274
#endif
 
110275
 
 
110276
if ( !failed )
 
110277
    attributeData->present_attributes |= laplacian__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
110278
 
 
110279
    break;
 
110280
    }
 
110281
    case HASH_ATTRIBUTE_STYLE:
 
110282
    {
 
110283
 
 
110284
attributeData->style = attributeValue;
 
110285
 
 
110286
    break;
 
110287
    }
 
110288
    case HASH_ATTRIBUTE_XREF:
 
110289
    {
 
110290
 
 
110291
attributeData->xref = attributeValue;
 
110292
 
 
110293
    break;
 
110294
    }
 
110295
    case HASH_ATTRIBUTE_ID:
 
110296
    {
 
110297
 
 
110298
attributeData->id = attributeValue;
 
110299
 
 
110300
    break;
 
110301
    }
 
110302
    case HASH_ATTRIBUTE_HREF:
 
110303
    {
 
110304
bool failed;
 
110305
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
110306
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
110307
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
110308
        HASH_ELEMENT_LAPLACIAN,
 
110309
        HASH_ATTRIBUTE_HREF,
 
110310
        attributeValue))
 
110311
{
 
110312
    return false;
 
110313
}
 
110314
if ( !failed )
 
110315
    attributeData->present_attributes |= laplacian__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
110316
 
 
110317
    break;
 
110318
    }
 
110319
    default:
 
110320
    {
 
110321
        if ( !attributeData->unknownAttributes.data )
 
110322
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
110323
        else
 
110324
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
110325
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
110326
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
110327
        attributeData->unknownAttributes.size += 2;
 
110328
 
 
110329
    }
 
110330
    }
 
110331
    }
 
110332
}
 
110333
if ((attributeData->present_attributes & laplacian__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
110334
{
 
110335
    attributeData->definitionURL = COLLADABU::URI("");
 
110336
}
 
110337
if ((attributeData->present_attributes & laplacian__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
110338
{
 
110339
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
110340
}
 
110341
if ((attributeData->present_attributes & laplacian__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
110342
{
 
110343
    attributeData->href = COLLADABU::URI("");
 
110344
}
 
110345
 
 
110346
 
 
110347
    return true;
 
110348
}
 
110349
 
 
110350
//---------------------------------------------------------------------
 
110351
bool ColladaParserAutoGen15Private::_preEnd__laplacian()
 
110352
{
 
110353
#ifdef GENERATEDSAXPARSER_VALIDATION
 
110354
    if ( mValidate )
 
110355
    {
 
110356
 
 
110357
        bool validationResult = _validateEnd__laplacian();
 
110358
        if ( !validationResult ) return false;
 
110359
 
 
110360
    } // validation
 
110361
#endif
 
110362
 
 
110363
    return true;
 
110364
}
 
110365
 
 
110366
//---------------------------------------------------------------------
 
110367
bool ColladaParserAutoGen15Private::_freeAttributes__laplacian( void* attributeData )
 
110368
{
 
110369
    laplacian__AttributeData* typedAttributeData = static_cast<laplacian__AttributeData*>(attributeData);
 
110370
    if (typedAttributeData->_class.data)
 
110371
    {
 
110372
        mStackMemoryManager.deleteObject();
 
110373
    }
 
110374
 
 
110375
    if (typedAttributeData->unknownAttributes.data)
 
110376
    {
 
110377
        mStackMemoryManager.deleteObject();
 
110378
    }
 
110379
 
 
110380
 
 
110381
    typedAttributeData->~laplacian__AttributeData();
 
110382
 
 
110383
    return true;
 
110384
}
 
110385
 
 
110386
//---------------------------------------------------------------------
 
110387
const mean__AttributeData mean__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
110388
 
 
110389
//---------------------------------------------------------------------
 
110390
bool ColladaParserAutoGen15Private::_data__mean( const ParserChar* text, size_t textLength )
 
110391
{
 
110392
    return true;
 
110393
}
 
110394
 
 
110395
//---------------------------------------------------------------------
 
110396
bool ColladaParserAutoGen15Private::_preBegin__mean( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
110397
{
 
110398
#ifdef GENERATEDSAXPARSER_VALIDATION
 
110399
    if ( mValidate )
 
110400
    {
 
110401
 
 
110402
        bool validationResult = _validateBegin__mean( attributes, attributeDataPtr, validationDataPtr );
 
110403
        if ( !validationResult ) return false;
 
110404
 
 
110405
    } // validation
 
110406
#endif
 
110407
 
 
110408
mean__AttributeData* attributeData = newData<mean__AttributeData>(attributeDataPtr);
 
110409
 
 
110410
const ParserChar** attributeArray = attributes.attributes;
 
110411
if ( attributeArray )
 
110412
{
 
110413
    while (true)
 
110414
    {
 
110415
        const ParserChar * attribute = *attributeArray;
 
110416
        if ( !attribute )
 
110417
            break;
 
110418
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
110419
        attributeArray++;
 
110420
        if ( !attributeArray )
 
110421
            return false;
 
110422
        const ParserChar* attributeValue = *attributeArray;
 
110423
        attributeArray++;
 
110424
 
 
110425
 
 
110426
    switch ( hash )
 
110427
    {
 
110428
    case HASH_ATTRIBUTE_ENCODING:
 
110429
    {
 
110430
 
 
110431
attributeData->encoding = attributeValue;
 
110432
 
 
110433
    break;
 
110434
    }
 
110435
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
110436
    {
 
110437
bool failed;
 
110438
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
110439
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
110440
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
110441
        HASH_ELEMENT_MEAN,
 
110442
        HASH_ATTRIBUTE_DEFINITIONURL,
 
110443
        attributeValue))
 
110444
{
 
110445
    return false;
 
110446
}
 
110447
if ( !failed )
 
110448
    attributeData->present_attributes |= mean__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
110449
 
 
110450
    break;
 
110451
    }
 
110452
    case HASH_ATTRIBUTE_CLASS:
 
110453
    {
 
110454
bool failed;
 
110455
#ifdef GENERATEDSAXPARSER_VALIDATION
 
110456
    if ( mValidate )
 
110457
    {
 
110458
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_MEAN, HASH_ATTRIBUTE_CLASS);
 
110459
    }
 
110460
    else
 
110461
    {
 
110462
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
110463
    }
 
110464
#else
 
110465
    {
 
110466
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
110467
    } // validation
 
110468
#endif
 
110469
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
110470
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
110471
        HASH_ELEMENT_MEAN,
 
110472
        HASH_ATTRIBUTE_CLASS,
 
110473
        attributeValue))
 
110474
{
 
110475
    return false;
 
110476
}
 
110477
#ifdef GENERATEDSAXPARSER_VALIDATION
 
110478
    if ( mValidate )
 
110479
    {
 
110480
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
110481
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
110482
    {
 
110483
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
110484
            simpleTypeValidationResult,
 
110485
            HASH_ELEMENT_MEAN,
 
110486
            HASH_ATTRIBUTE_CLASS,
 
110487
            attributeValue) )
 
110488
        {
 
110489
            return false;
 
110490
        }
 
110491
    }
 
110492
    } // validation
 
110493
#endif
 
110494
 
 
110495
if ( !failed )
 
110496
    attributeData->present_attributes |= mean__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
110497
 
 
110498
    break;
 
110499
    }
 
110500
    case HASH_ATTRIBUTE_STYLE:
 
110501
    {
 
110502
 
 
110503
attributeData->style = attributeValue;
 
110504
 
 
110505
    break;
 
110506
    }
 
110507
    case HASH_ATTRIBUTE_XREF:
 
110508
    {
 
110509
 
 
110510
attributeData->xref = attributeValue;
 
110511
 
 
110512
    break;
 
110513
    }
 
110514
    case HASH_ATTRIBUTE_ID:
 
110515
    {
 
110516
 
 
110517
attributeData->id = attributeValue;
 
110518
 
 
110519
    break;
 
110520
    }
 
110521
    case HASH_ATTRIBUTE_HREF:
 
110522
    {
 
110523
bool failed;
 
110524
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
110525
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
110526
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
110527
        HASH_ELEMENT_MEAN,
 
110528
        HASH_ATTRIBUTE_HREF,
 
110529
        attributeValue))
 
110530
{
 
110531
    return false;
 
110532
}
 
110533
if ( !failed )
 
110534
    attributeData->present_attributes |= mean__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
110535
 
 
110536
    break;
 
110537
    }
 
110538
    default:
 
110539
    {
 
110540
        if ( !attributeData->unknownAttributes.data )
 
110541
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
110542
        else
 
110543
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
110544
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
110545
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
110546
        attributeData->unknownAttributes.size += 2;
 
110547
 
 
110548
    }
 
110549
    }
 
110550
    }
 
110551
}
 
110552
if ((attributeData->present_attributes & mean__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
110553
{
 
110554
    attributeData->definitionURL = COLLADABU::URI("");
 
110555
}
 
110556
if ((attributeData->present_attributes & mean__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
110557
{
 
110558
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
110559
}
 
110560
if ((attributeData->present_attributes & mean__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
110561
{
 
110562
    attributeData->href = COLLADABU::URI("");
 
110563
}
 
110564
 
 
110565
 
 
110566
    return true;
 
110567
}
 
110568
 
 
110569
//---------------------------------------------------------------------
 
110570
bool ColladaParserAutoGen15Private::_preEnd__mean()
 
110571
{
 
110572
#ifdef GENERATEDSAXPARSER_VALIDATION
 
110573
    if ( mValidate )
 
110574
    {
 
110575
 
 
110576
        bool validationResult = _validateEnd__mean();
 
110577
        if ( !validationResult ) return false;
 
110578
 
 
110579
    } // validation
 
110580
#endif
 
110581
 
 
110582
    return true;
 
110583
}
 
110584
 
 
110585
//---------------------------------------------------------------------
 
110586
bool ColladaParserAutoGen15Private::_freeAttributes__mean( void* attributeData )
 
110587
{
 
110588
    mean__AttributeData* typedAttributeData = static_cast<mean__AttributeData*>(attributeData);
 
110589
    if (typedAttributeData->_class.data)
 
110590
    {
 
110591
        mStackMemoryManager.deleteObject();
 
110592
    }
 
110593
 
 
110594
    if (typedAttributeData->unknownAttributes.data)
 
110595
    {
 
110596
        mStackMemoryManager.deleteObject();
 
110597
    }
 
110598
 
 
110599
 
 
110600
    typedAttributeData->~mean__AttributeData();
 
110601
 
 
110602
    return true;
 
110603
}
 
110604
 
 
110605
//---------------------------------------------------------------------
 
110606
const sdev__AttributeData sdev__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
110607
 
 
110608
//---------------------------------------------------------------------
 
110609
bool ColladaParserAutoGen15Private::_data__sdev( const ParserChar* text, size_t textLength )
 
110610
{
 
110611
    return true;
 
110612
}
 
110613
 
 
110614
//---------------------------------------------------------------------
 
110615
bool ColladaParserAutoGen15Private::_preBegin__sdev( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
110616
{
 
110617
#ifdef GENERATEDSAXPARSER_VALIDATION
 
110618
    if ( mValidate )
 
110619
    {
 
110620
 
 
110621
        bool validationResult = _validateBegin__sdev( attributes, attributeDataPtr, validationDataPtr );
 
110622
        if ( !validationResult ) return false;
 
110623
 
 
110624
    } // validation
 
110625
#endif
 
110626
 
 
110627
sdev__AttributeData* attributeData = newData<sdev__AttributeData>(attributeDataPtr);
 
110628
 
 
110629
const ParserChar** attributeArray = attributes.attributes;
 
110630
if ( attributeArray )
 
110631
{
 
110632
    while (true)
 
110633
    {
 
110634
        const ParserChar * attribute = *attributeArray;
 
110635
        if ( !attribute )
 
110636
            break;
 
110637
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
110638
        attributeArray++;
 
110639
        if ( !attributeArray )
 
110640
            return false;
 
110641
        const ParserChar* attributeValue = *attributeArray;
 
110642
        attributeArray++;
 
110643
 
 
110644
 
 
110645
    switch ( hash )
 
110646
    {
 
110647
    case HASH_ATTRIBUTE_ENCODING:
 
110648
    {
 
110649
 
 
110650
attributeData->encoding = attributeValue;
 
110651
 
 
110652
    break;
 
110653
    }
 
110654
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
110655
    {
 
110656
bool failed;
 
110657
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
110658
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
110659
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
110660
        HASH_ELEMENT_SDEV,
 
110661
        HASH_ATTRIBUTE_DEFINITIONURL,
 
110662
        attributeValue))
 
110663
{
 
110664
    return false;
 
110665
}
 
110666
if ( !failed )
 
110667
    attributeData->present_attributes |= sdev__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
110668
 
 
110669
    break;
 
110670
    }
 
110671
    case HASH_ATTRIBUTE_CLASS:
 
110672
    {
 
110673
bool failed;
 
110674
#ifdef GENERATEDSAXPARSER_VALIDATION
 
110675
    if ( mValidate )
 
110676
    {
 
110677
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_SDEV, HASH_ATTRIBUTE_CLASS);
 
110678
    }
 
110679
    else
 
110680
    {
 
110681
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
110682
    }
 
110683
#else
 
110684
    {
 
110685
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
110686
    } // validation
 
110687
#endif
 
110688
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
110689
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
110690
        HASH_ELEMENT_SDEV,
 
110691
        HASH_ATTRIBUTE_CLASS,
 
110692
        attributeValue))
 
110693
{
 
110694
    return false;
 
110695
}
 
110696
#ifdef GENERATEDSAXPARSER_VALIDATION
 
110697
    if ( mValidate )
 
110698
    {
 
110699
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
110700
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
110701
    {
 
110702
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
110703
            simpleTypeValidationResult,
 
110704
            HASH_ELEMENT_SDEV,
 
110705
            HASH_ATTRIBUTE_CLASS,
 
110706
            attributeValue) )
 
110707
        {
 
110708
            return false;
 
110709
        }
 
110710
    }
 
110711
    } // validation
 
110712
#endif
 
110713
 
 
110714
if ( !failed )
 
110715
    attributeData->present_attributes |= sdev__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
110716
 
 
110717
    break;
 
110718
    }
 
110719
    case HASH_ATTRIBUTE_STYLE:
 
110720
    {
 
110721
 
 
110722
attributeData->style = attributeValue;
 
110723
 
 
110724
    break;
 
110725
    }
 
110726
    case HASH_ATTRIBUTE_XREF:
 
110727
    {
 
110728
 
 
110729
attributeData->xref = attributeValue;
 
110730
 
 
110731
    break;
 
110732
    }
 
110733
    case HASH_ATTRIBUTE_ID:
 
110734
    {
 
110735
 
 
110736
attributeData->id = attributeValue;
 
110737
 
 
110738
    break;
 
110739
    }
 
110740
    case HASH_ATTRIBUTE_HREF:
 
110741
    {
 
110742
bool failed;
 
110743
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
110744
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
110745
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
110746
        HASH_ELEMENT_SDEV,
 
110747
        HASH_ATTRIBUTE_HREF,
 
110748
        attributeValue))
 
110749
{
 
110750
    return false;
 
110751
}
 
110752
if ( !failed )
 
110753
    attributeData->present_attributes |= sdev__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
110754
 
 
110755
    break;
 
110756
    }
 
110757
    default:
 
110758
    {
 
110759
        if ( !attributeData->unknownAttributes.data )
 
110760
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
110761
        else
 
110762
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
110763
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
110764
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
110765
        attributeData->unknownAttributes.size += 2;
 
110766
 
 
110767
    }
 
110768
    }
 
110769
    }
 
110770
}
 
110771
if ((attributeData->present_attributes & sdev__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
110772
{
 
110773
    attributeData->definitionURL = COLLADABU::URI("");
 
110774
}
 
110775
if ((attributeData->present_attributes & sdev__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
110776
{
 
110777
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
110778
}
 
110779
if ((attributeData->present_attributes & sdev__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
110780
{
 
110781
    attributeData->href = COLLADABU::URI("");
 
110782
}
 
110783
 
 
110784
 
 
110785
    return true;
 
110786
}
 
110787
 
 
110788
//---------------------------------------------------------------------
 
110789
bool ColladaParserAutoGen15Private::_preEnd__sdev()
 
110790
{
 
110791
#ifdef GENERATEDSAXPARSER_VALIDATION
 
110792
    if ( mValidate )
 
110793
    {
 
110794
 
 
110795
        bool validationResult = _validateEnd__sdev();
 
110796
        if ( !validationResult ) return false;
 
110797
 
 
110798
    } // validation
 
110799
#endif
 
110800
 
 
110801
    return true;
 
110802
}
 
110803
 
 
110804
//---------------------------------------------------------------------
 
110805
bool ColladaParserAutoGen15Private::_freeAttributes__sdev( void* attributeData )
 
110806
{
 
110807
    sdev__AttributeData* typedAttributeData = static_cast<sdev__AttributeData*>(attributeData);
 
110808
    if (typedAttributeData->_class.data)
 
110809
    {
 
110810
        mStackMemoryManager.deleteObject();
 
110811
    }
 
110812
 
 
110813
    if (typedAttributeData->unknownAttributes.data)
 
110814
    {
 
110815
        mStackMemoryManager.deleteObject();
 
110816
    }
 
110817
 
 
110818
 
 
110819
    typedAttributeData->~sdev__AttributeData();
 
110820
 
 
110821
    return true;
 
110822
}
 
110823
 
 
110824
//---------------------------------------------------------------------
 
110825
const variance__AttributeData variance__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
110826
 
 
110827
//---------------------------------------------------------------------
 
110828
bool ColladaParserAutoGen15Private::_data__variance( const ParserChar* text, size_t textLength )
 
110829
{
 
110830
    return true;
 
110831
}
 
110832
 
 
110833
//---------------------------------------------------------------------
 
110834
bool ColladaParserAutoGen15Private::_preBegin__variance( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
110835
{
 
110836
#ifdef GENERATEDSAXPARSER_VALIDATION
 
110837
    if ( mValidate )
 
110838
    {
 
110839
 
 
110840
        bool validationResult = _validateBegin__variance( attributes, attributeDataPtr, validationDataPtr );
 
110841
        if ( !validationResult ) return false;
 
110842
 
 
110843
    } // validation
 
110844
#endif
 
110845
 
 
110846
variance__AttributeData* attributeData = newData<variance__AttributeData>(attributeDataPtr);
 
110847
 
 
110848
const ParserChar** attributeArray = attributes.attributes;
 
110849
if ( attributeArray )
 
110850
{
 
110851
    while (true)
 
110852
    {
 
110853
        const ParserChar * attribute = *attributeArray;
 
110854
        if ( !attribute )
 
110855
            break;
 
110856
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
110857
        attributeArray++;
 
110858
        if ( !attributeArray )
 
110859
            return false;
 
110860
        const ParserChar* attributeValue = *attributeArray;
 
110861
        attributeArray++;
 
110862
 
 
110863
 
 
110864
    switch ( hash )
 
110865
    {
 
110866
    case HASH_ATTRIBUTE_ENCODING:
 
110867
    {
 
110868
 
 
110869
attributeData->encoding = attributeValue;
 
110870
 
 
110871
    break;
 
110872
    }
 
110873
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
110874
    {
 
110875
bool failed;
 
110876
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
110877
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
110878
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
110879
        HASH_ELEMENT_VARIANCE,
 
110880
        HASH_ATTRIBUTE_DEFINITIONURL,
 
110881
        attributeValue))
 
110882
{
 
110883
    return false;
 
110884
}
 
110885
if ( !failed )
 
110886
    attributeData->present_attributes |= variance__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
110887
 
 
110888
    break;
 
110889
    }
 
110890
    case HASH_ATTRIBUTE_CLASS:
 
110891
    {
 
110892
bool failed;
 
110893
#ifdef GENERATEDSAXPARSER_VALIDATION
 
110894
    if ( mValidate )
 
110895
    {
 
110896
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_VARIANCE, HASH_ATTRIBUTE_CLASS);
 
110897
    }
 
110898
    else
 
110899
    {
 
110900
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
110901
    }
 
110902
#else
 
110903
    {
 
110904
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
110905
    } // validation
 
110906
#endif
 
110907
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
110908
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
110909
        HASH_ELEMENT_VARIANCE,
 
110910
        HASH_ATTRIBUTE_CLASS,
 
110911
        attributeValue))
 
110912
{
 
110913
    return false;
 
110914
}
 
110915
#ifdef GENERATEDSAXPARSER_VALIDATION
 
110916
    if ( mValidate )
 
110917
    {
 
110918
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
110919
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
110920
    {
 
110921
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
110922
            simpleTypeValidationResult,
 
110923
            HASH_ELEMENT_VARIANCE,
 
110924
            HASH_ATTRIBUTE_CLASS,
 
110925
            attributeValue) )
 
110926
        {
 
110927
            return false;
 
110928
        }
 
110929
    }
 
110930
    } // validation
 
110931
#endif
 
110932
 
 
110933
if ( !failed )
 
110934
    attributeData->present_attributes |= variance__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
110935
 
 
110936
    break;
 
110937
    }
 
110938
    case HASH_ATTRIBUTE_STYLE:
 
110939
    {
 
110940
 
 
110941
attributeData->style = attributeValue;
 
110942
 
 
110943
    break;
 
110944
    }
 
110945
    case HASH_ATTRIBUTE_XREF:
 
110946
    {
 
110947
 
 
110948
attributeData->xref = attributeValue;
 
110949
 
 
110950
    break;
 
110951
    }
 
110952
    case HASH_ATTRIBUTE_ID:
 
110953
    {
 
110954
 
 
110955
attributeData->id = attributeValue;
 
110956
 
 
110957
    break;
 
110958
    }
 
110959
    case HASH_ATTRIBUTE_HREF:
 
110960
    {
 
110961
bool failed;
 
110962
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
110963
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
110964
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
110965
        HASH_ELEMENT_VARIANCE,
 
110966
        HASH_ATTRIBUTE_HREF,
 
110967
        attributeValue))
 
110968
{
 
110969
    return false;
 
110970
}
 
110971
if ( !failed )
 
110972
    attributeData->present_attributes |= variance__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
110973
 
 
110974
    break;
 
110975
    }
 
110976
    default:
 
110977
    {
 
110978
        if ( !attributeData->unknownAttributes.data )
 
110979
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
110980
        else
 
110981
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
110982
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
110983
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
110984
        attributeData->unknownAttributes.size += 2;
 
110985
 
 
110986
    }
 
110987
    }
 
110988
    }
 
110989
}
 
110990
if ((attributeData->present_attributes & variance__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
110991
{
 
110992
    attributeData->definitionURL = COLLADABU::URI("");
 
110993
}
 
110994
if ((attributeData->present_attributes & variance__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
110995
{
 
110996
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
110997
}
 
110998
if ((attributeData->present_attributes & variance__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
110999
{
 
111000
    attributeData->href = COLLADABU::URI("");
 
111001
}
 
111002
 
 
111003
 
 
111004
    return true;
 
111005
}
 
111006
 
 
111007
//---------------------------------------------------------------------
 
111008
bool ColladaParserAutoGen15Private::_preEnd__variance()
 
111009
{
 
111010
#ifdef GENERATEDSAXPARSER_VALIDATION
 
111011
    if ( mValidate )
 
111012
    {
 
111013
 
 
111014
        bool validationResult = _validateEnd__variance();
 
111015
        if ( !validationResult ) return false;
 
111016
 
 
111017
    } // validation
 
111018
#endif
 
111019
 
 
111020
    return true;
 
111021
}
 
111022
 
 
111023
//---------------------------------------------------------------------
 
111024
bool ColladaParserAutoGen15Private::_freeAttributes__variance( void* attributeData )
 
111025
{
 
111026
    variance__AttributeData* typedAttributeData = static_cast<variance__AttributeData*>(attributeData);
 
111027
    if (typedAttributeData->_class.data)
 
111028
    {
 
111029
        mStackMemoryManager.deleteObject();
 
111030
    }
 
111031
 
 
111032
    if (typedAttributeData->unknownAttributes.data)
 
111033
    {
 
111034
        mStackMemoryManager.deleteObject();
 
111035
    }
 
111036
 
 
111037
 
 
111038
    typedAttributeData->~variance__AttributeData();
 
111039
 
 
111040
    return true;
 
111041
}
 
111042
 
 
111043
//---------------------------------------------------------------------
 
111044
const median__AttributeData median__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
111045
 
 
111046
//---------------------------------------------------------------------
 
111047
bool ColladaParserAutoGen15Private::_data__median( const ParserChar* text, size_t textLength )
 
111048
{
 
111049
    return true;
 
111050
}
 
111051
 
 
111052
//---------------------------------------------------------------------
 
111053
bool ColladaParserAutoGen15Private::_preBegin__median( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
111054
{
 
111055
#ifdef GENERATEDSAXPARSER_VALIDATION
 
111056
    if ( mValidate )
 
111057
    {
 
111058
 
 
111059
        bool validationResult = _validateBegin__median( attributes, attributeDataPtr, validationDataPtr );
 
111060
        if ( !validationResult ) return false;
 
111061
 
 
111062
    } // validation
 
111063
#endif
 
111064
 
 
111065
median__AttributeData* attributeData = newData<median__AttributeData>(attributeDataPtr);
 
111066
 
 
111067
const ParserChar** attributeArray = attributes.attributes;
 
111068
if ( attributeArray )
 
111069
{
 
111070
    while (true)
 
111071
    {
 
111072
        const ParserChar * attribute = *attributeArray;
 
111073
        if ( !attribute )
 
111074
            break;
 
111075
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
111076
        attributeArray++;
 
111077
        if ( !attributeArray )
 
111078
            return false;
 
111079
        const ParserChar* attributeValue = *attributeArray;
 
111080
        attributeArray++;
 
111081
 
 
111082
 
 
111083
    switch ( hash )
 
111084
    {
 
111085
    case HASH_ATTRIBUTE_ENCODING:
 
111086
    {
 
111087
 
 
111088
attributeData->encoding = attributeValue;
 
111089
 
 
111090
    break;
 
111091
    }
 
111092
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
111093
    {
 
111094
bool failed;
 
111095
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
111096
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
111097
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
111098
        HASH_ELEMENT_MEDIAN,
 
111099
        HASH_ATTRIBUTE_DEFINITIONURL,
 
111100
        attributeValue))
 
111101
{
 
111102
    return false;
 
111103
}
 
111104
if ( !failed )
 
111105
    attributeData->present_attributes |= median__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
111106
 
 
111107
    break;
 
111108
    }
 
111109
    case HASH_ATTRIBUTE_CLASS:
 
111110
    {
 
111111
bool failed;
 
111112
#ifdef GENERATEDSAXPARSER_VALIDATION
 
111113
    if ( mValidate )
 
111114
    {
 
111115
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_MEDIAN, HASH_ATTRIBUTE_CLASS);
 
111116
    }
 
111117
    else
 
111118
    {
 
111119
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
111120
    }
 
111121
#else
 
111122
    {
 
111123
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
111124
    } // validation
 
111125
#endif
 
111126
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
111127
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
111128
        HASH_ELEMENT_MEDIAN,
 
111129
        HASH_ATTRIBUTE_CLASS,
 
111130
        attributeValue))
 
111131
{
 
111132
    return false;
 
111133
}
 
111134
#ifdef GENERATEDSAXPARSER_VALIDATION
 
111135
    if ( mValidate )
 
111136
    {
 
111137
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
111138
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
111139
    {
 
111140
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
111141
            simpleTypeValidationResult,
 
111142
            HASH_ELEMENT_MEDIAN,
 
111143
            HASH_ATTRIBUTE_CLASS,
 
111144
            attributeValue) )
 
111145
        {
 
111146
            return false;
 
111147
        }
 
111148
    }
 
111149
    } // validation
 
111150
#endif
 
111151
 
 
111152
if ( !failed )
 
111153
    attributeData->present_attributes |= median__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
111154
 
 
111155
    break;
 
111156
    }
 
111157
    case HASH_ATTRIBUTE_STYLE:
 
111158
    {
 
111159
 
 
111160
attributeData->style = attributeValue;
 
111161
 
 
111162
    break;
 
111163
    }
 
111164
    case HASH_ATTRIBUTE_XREF:
 
111165
    {
 
111166
 
 
111167
attributeData->xref = attributeValue;
 
111168
 
 
111169
    break;
 
111170
    }
 
111171
    case HASH_ATTRIBUTE_ID:
 
111172
    {
 
111173
 
 
111174
attributeData->id = attributeValue;
 
111175
 
 
111176
    break;
 
111177
    }
 
111178
    case HASH_ATTRIBUTE_HREF:
 
111179
    {
 
111180
bool failed;
 
111181
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
111182
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
111183
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
111184
        HASH_ELEMENT_MEDIAN,
 
111185
        HASH_ATTRIBUTE_HREF,
 
111186
        attributeValue))
 
111187
{
 
111188
    return false;
 
111189
}
 
111190
if ( !failed )
 
111191
    attributeData->present_attributes |= median__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
111192
 
 
111193
    break;
 
111194
    }
 
111195
    default:
 
111196
    {
 
111197
        if ( !attributeData->unknownAttributes.data )
 
111198
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
111199
        else
 
111200
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
111201
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
111202
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
111203
        attributeData->unknownAttributes.size += 2;
 
111204
 
 
111205
    }
 
111206
    }
 
111207
    }
 
111208
}
 
111209
if ((attributeData->present_attributes & median__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
111210
{
 
111211
    attributeData->definitionURL = COLLADABU::URI("");
 
111212
}
 
111213
if ((attributeData->present_attributes & median__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
111214
{
 
111215
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
111216
}
 
111217
if ((attributeData->present_attributes & median__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
111218
{
 
111219
    attributeData->href = COLLADABU::URI("");
 
111220
}
 
111221
 
 
111222
 
 
111223
    return true;
 
111224
}
 
111225
 
 
111226
//---------------------------------------------------------------------
 
111227
bool ColladaParserAutoGen15Private::_preEnd__median()
 
111228
{
 
111229
#ifdef GENERATEDSAXPARSER_VALIDATION
 
111230
    if ( mValidate )
 
111231
    {
 
111232
 
 
111233
        bool validationResult = _validateEnd__median();
 
111234
        if ( !validationResult ) return false;
 
111235
 
 
111236
    } // validation
 
111237
#endif
 
111238
 
 
111239
    return true;
 
111240
}
 
111241
 
 
111242
//---------------------------------------------------------------------
 
111243
bool ColladaParserAutoGen15Private::_freeAttributes__median( void* attributeData )
 
111244
{
 
111245
    median__AttributeData* typedAttributeData = static_cast<median__AttributeData*>(attributeData);
 
111246
    if (typedAttributeData->_class.data)
 
111247
    {
 
111248
        mStackMemoryManager.deleteObject();
 
111249
    }
 
111250
 
 
111251
    if (typedAttributeData->unknownAttributes.data)
 
111252
    {
 
111253
        mStackMemoryManager.deleteObject();
 
111254
    }
 
111255
 
 
111256
 
 
111257
    typedAttributeData->~median__AttributeData();
 
111258
 
 
111259
    return true;
 
111260
}
 
111261
 
 
111262
//---------------------------------------------------------------------
 
111263
const mode____mode_type__AttributeData mode____mode_type__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
111264
 
 
111265
//---------------------------------------------------------------------
 
111266
bool ColladaParserAutoGen15Private::_data__mode____mode_type( const ParserChar* text, size_t textLength )
 
111267
{
 
111268
    return true;
 
111269
}
 
111270
 
 
111271
//---------------------------------------------------------------------
 
111272
bool ColladaParserAutoGen15Private::_preBegin__mode____mode_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
111273
{
 
111274
#ifdef GENERATEDSAXPARSER_VALIDATION
 
111275
    if ( mValidate )
 
111276
    {
 
111277
 
 
111278
        bool validationResult = _validateBegin__mode____mode_type( attributes, attributeDataPtr, validationDataPtr );
 
111279
        if ( !validationResult ) return false;
 
111280
 
 
111281
    } // validation
 
111282
#endif
 
111283
 
 
111284
mode____mode_type__AttributeData* attributeData = newData<mode____mode_type__AttributeData>(attributeDataPtr);
 
111285
 
 
111286
const ParserChar** attributeArray = attributes.attributes;
 
111287
if ( attributeArray )
 
111288
{
 
111289
    while (true)
 
111290
    {
 
111291
        const ParserChar * attribute = *attributeArray;
 
111292
        if ( !attribute )
 
111293
            break;
 
111294
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
111295
        attributeArray++;
 
111296
        if ( !attributeArray )
 
111297
            return false;
 
111298
        const ParserChar* attributeValue = *attributeArray;
 
111299
        attributeArray++;
 
111300
 
 
111301
 
 
111302
    switch ( hash )
 
111303
    {
 
111304
    case HASH_ATTRIBUTE_ENCODING:
 
111305
    {
 
111306
 
 
111307
attributeData->encoding = attributeValue;
 
111308
 
 
111309
    break;
 
111310
    }
 
111311
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
111312
    {
 
111313
bool failed;
 
111314
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
111315
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
111316
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
111317
        HASH_ELEMENT_MODE,
 
111318
        HASH_ATTRIBUTE_DEFINITIONURL,
 
111319
        attributeValue))
 
111320
{
 
111321
    return false;
 
111322
}
 
111323
if ( !failed )
 
111324
    attributeData->present_attributes |= mode____mode_type__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
111325
 
 
111326
    break;
 
111327
    }
 
111328
    case HASH_ATTRIBUTE_CLASS:
 
111329
    {
 
111330
bool failed;
 
111331
#ifdef GENERATEDSAXPARSER_VALIDATION
 
111332
    if ( mValidate )
 
111333
    {
 
111334
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_MODE, HASH_ATTRIBUTE_CLASS);
 
111335
    }
 
111336
    else
 
111337
    {
 
111338
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
111339
    }
 
111340
#else
 
111341
    {
 
111342
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
111343
    } // validation
 
111344
#endif
 
111345
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
111346
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
111347
        HASH_ELEMENT_MODE,
 
111348
        HASH_ATTRIBUTE_CLASS,
 
111349
        attributeValue))
 
111350
{
 
111351
    return false;
 
111352
}
 
111353
#ifdef GENERATEDSAXPARSER_VALIDATION
 
111354
    if ( mValidate )
 
111355
    {
 
111356
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
111357
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
111358
    {
 
111359
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
111360
            simpleTypeValidationResult,
 
111361
            HASH_ELEMENT_MODE,
 
111362
            HASH_ATTRIBUTE_CLASS,
 
111363
            attributeValue) )
 
111364
        {
 
111365
            return false;
 
111366
        }
 
111367
    }
 
111368
    } // validation
 
111369
#endif
 
111370
 
 
111371
if ( !failed )
 
111372
    attributeData->present_attributes |= mode____mode_type__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
111373
 
 
111374
    break;
 
111375
    }
 
111376
    case HASH_ATTRIBUTE_STYLE:
 
111377
    {
 
111378
 
 
111379
attributeData->style = attributeValue;
 
111380
 
 
111381
    break;
 
111382
    }
 
111383
    case HASH_ATTRIBUTE_XREF:
 
111384
    {
 
111385
 
 
111386
attributeData->xref = attributeValue;
 
111387
 
 
111388
    break;
 
111389
    }
 
111390
    case HASH_ATTRIBUTE_ID:
 
111391
    {
 
111392
 
 
111393
attributeData->id = attributeValue;
 
111394
 
 
111395
    break;
 
111396
    }
 
111397
    case HASH_ATTRIBUTE_HREF:
 
111398
    {
 
111399
bool failed;
 
111400
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
111401
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
111402
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
111403
        HASH_ELEMENT_MODE,
 
111404
        HASH_ATTRIBUTE_HREF,
 
111405
        attributeValue))
 
111406
{
 
111407
    return false;
 
111408
}
 
111409
if ( !failed )
 
111410
    attributeData->present_attributes |= mode____mode_type__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
111411
 
 
111412
    break;
 
111413
    }
 
111414
    default:
 
111415
    {
 
111416
        if ( !attributeData->unknownAttributes.data )
 
111417
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
111418
        else
 
111419
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
111420
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
111421
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
111422
        attributeData->unknownAttributes.size += 2;
 
111423
 
 
111424
    }
 
111425
    }
 
111426
    }
 
111427
}
 
111428
if ((attributeData->present_attributes & mode____mode_type__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
111429
{
 
111430
    attributeData->definitionURL = COLLADABU::URI("");
 
111431
}
 
111432
if ((attributeData->present_attributes & mode____mode_type__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
111433
{
 
111434
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
111435
}
 
111436
if ((attributeData->present_attributes & mode____mode_type__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
111437
{
 
111438
    attributeData->href = COLLADABU::URI("");
 
111439
}
 
111440
 
 
111441
 
 
111442
    return true;
 
111443
}
 
111444
 
 
111445
//---------------------------------------------------------------------
 
111446
bool ColladaParserAutoGen15Private::_preEnd__mode____mode_type()
 
111447
{
 
111448
#ifdef GENERATEDSAXPARSER_VALIDATION
 
111449
    if ( mValidate )
 
111450
    {
 
111451
 
 
111452
        bool validationResult = _validateEnd__mode____mode_type();
 
111453
        if ( !validationResult ) return false;
 
111454
 
 
111455
    } // validation
 
111456
#endif
 
111457
 
 
111458
    return true;
 
111459
}
 
111460
 
 
111461
//---------------------------------------------------------------------
 
111462
bool ColladaParserAutoGen15Private::_freeAttributes__mode____mode_type( void* attributeData )
 
111463
{
 
111464
    mode____mode_type__AttributeData* typedAttributeData = static_cast<mode____mode_type__AttributeData*>(attributeData);
 
111465
    if (typedAttributeData->_class.data)
 
111466
    {
 
111467
        mStackMemoryManager.deleteObject();
 
111468
    }
 
111469
 
 
111470
    if (typedAttributeData->unknownAttributes.data)
 
111471
    {
 
111472
        mStackMemoryManager.deleteObject();
 
111473
    }
 
111474
 
 
111475
 
 
111476
    typedAttributeData->~mode____mode_type__AttributeData();
 
111477
 
 
111478
    return true;
 
111479
}
 
111480
 
 
111481
//---------------------------------------------------------------------
 
111482
const moment__AttributeData moment__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
111483
 
 
111484
//---------------------------------------------------------------------
 
111485
bool ColladaParserAutoGen15Private::_data__moment( const ParserChar* text, size_t textLength )
 
111486
{
 
111487
    return true;
 
111488
}
 
111489
 
 
111490
//---------------------------------------------------------------------
 
111491
bool ColladaParserAutoGen15Private::_preBegin__moment( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
111492
{
 
111493
#ifdef GENERATEDSAXPARSER_VALIDATION
 
111494
    if ( mValidate )
 
111495
    {
 
111496
 
 
111497
        bool validationResult = _validateBegin__moment( attributes, attributeDataPtr, validationDataPtr );
 
111498
        if ( !validationResult ) return false;
 
111499
 
 
111500
    } // validation
 
111501
#endif
 
111502
 
 
111503
moment__AttributeData* attributeData = newData<moment__AttributeData>(attributeDataPtr);
 
111504
 
 
111505
const ParserChar** attributeArray = attributes.attributes;
 
111506
if ( attributeArray )
 
111507
{
 
111508
    while (true)
 
111509
    {
 
111510
        const ParserChar * attribute = *attributeArray;
 
111511
        if ( !attribute )
 
111512
            break;
 
111513
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
111514
        attributeArray++;
 
111515
        if ( !attributeArray )
 
111516
            return false;
 
111517
        const ParserChar* attributeValue = *attributeArray;
 
111518
        attributeArray++;
 
111519
 
 
111520
 
 
111521
    switch ( hash )
 
111522
    {
 
111523
    case HASH_ATTRIBUTE_ENCODING:
 
111524
    {
 
111525
 
 
111526
attributeData->encoding = attributeValue;
 
111527
 
 
111528
    break;
 
111529
    }
 
111530
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
111531
    {
 
111532
bool failed;
 
111533
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
111534
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
111535
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
111536
        HASH_ELEMENT_MOMENT,
 
111537
        HASH_ATTRIBUTE_DEFINITIONURL,
 
111538
        attributeValue))
 
111539
{
 
111540
    return false;
 
111541
}
 
111542
if ( !failed )
 
111543
    attributeData->present_attributes |= moment__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
111544
 
 
111545
    break;
 
111546
    }
 
111547
    case HASH_ATTRIBUTE_CLASS:
 
111548
    {
 
111549
bool failed;
 
111550
#ifdef GENERATEDSAXPARSER_VALIDATION
 
111551
    if ( mValidate )
 
111552
    {
 
111553
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_MOMENT, HASH_ATTRIBUTE_CLASS);
 
111554
    }
 
111555
    else
 
111556
    {
 
111557
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
111558
    }
 
111559
#else
 
111560
    {
 
111561
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
111562
    } // validation
 
111563
#endif
 
111564
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
111565
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
111566
        HASH_ELEMENT_MOMENT,
 
111567
        HASH_ATTRIBUTE_CLASS,
 
111568
        attributeValue))
 
111569
{
 
111570
    return false;
 
111571
}
 
111572
#ifdef GENERATEDSAXPARSER_VALIDATION
 
111573
    if ( mValidate )
 
111574
    {
 
111575
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
111576
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
111577
    {
 
111578
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
111579
            simpleTypeValidationResult,
 
111580
            HASH_ELEMENT_MOMENT,
 
111581
            HASH_ATTRIBUTE_CLASS,
 
111582
            attributeValue) )
 
111583
        {
 
111584
            return false;
 
111585
        }
 
111586
    }
 
111587
    } // validation
 
111588
#endif
 
111589
 
 
111590
if ( !failed )
 
111591
    attributeData->present_attributes |= moment__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
111592
 
 
111593
    break;
 
111594
    }
 
111595
    case HASH_ATTRIBUTE_STYLE:
 
111596
    {
 
111597
 
 
111598
attributeData->style = attributeValue;
 
111599
 
 
111600
    break;
 
111601
    }
 
111602
    case HASH_ATTRIBUTE_XREF:
 
111603
    {
 
111604
 
 
111605
attributeData->xref = attributeValue;
 
111606
 
 
111607
    break;
 
111608
    }
 
111609
    case HASH_ATTRIBUTE_ID:
 
111610
    {
 
111611
 
 
111612
attributeData->id = attributeValue;
 
111613
 
 
111614
    break;
 
111615
    }
 
111616
    case HASH_ATTRIBUTE_HREF:
 
111617
    {
 
111618
bool failed;
 
111619
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
111620
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
111621
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
111622
        HASH_ELEMENT_MOMENT,
 
111623
        HASH_ATTRIBUTE_HREF,
 
111624
        attributeValue))
 
111625
{
 
111626
    return false;
 
111627
}
 
111628
if ( !failed )
 
111629
    attributeData->present_attributes |= moment__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
111630
 
 
111631
    break;
 
111632
    }
 
111633
    default:
 
111634
    {
 
111635
        if ( !attributeData->unknownAttributes.data )
 
111636
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
111637
        else
 
111638
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
111639
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
111640
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
111641
        attributeData->unknownAttributes.size += 2;
 
111642
 
 
111643
    }
 
111644
    }
 
111645
    }
 
111646
}
 
111647
if ((attributeData->present_attributes & moment__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
111648
{
 
111649
    attributeData->definitionURL = COLLADABU::URI("");
 
111650
}
 
111651
if ((attributeData->present_attributes & moment__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
111652
{
 
111653
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
111654
}
 
111655
if ((attributeData->present_attributes & moment__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
111656
{
 
111657
    attributeData->href = COLLADABU::URI("");
 
111658
}
 
111659
 
 
111660
 
 
111661
    return true;
 
111662
}
 
111663
 
 
111664
//---------------------------------------------------------------------
 
111665
bool ColladaParserAutoGen15Private::_preEnd__moment()
 
111666
{
 
111667
#ifdef GENERATEDSAXPARSER_VALIDATION
 
111668
    if ( mValidate )
 
111669
    {
 
111670
 
 
111671
        bool validationResult = _validateEnd__moment();
 
111672
        if ( !validationResult ) return false;
 
111673
 
 
111674
    } // validation
 
111675
#endif
 
111676
 
 
111677
    return true;
 
111678
}
 
111679
 
 
111680
//---------------------------------------------------------------------
 
111681
bool ColladaParserAutoGen15Private::_freeAttributes__moment( void* attributeData )
 
111682
{
 
111683
    moment__AttributeData* typedAttributeData = static_cast<moment__AttributeData*>(attributeData);
 
111684
    if (typedAttributeData->_class.data)
 
111685
    {
 
111686
        mStackMemoryManager.deleteObject();
 
111687
    }
 
111688
 
 
111689
    if (typedAttributeData->unknownAttributes.data)
 
111690
    {
 
111691
        mStackMemoryManager.deleteObject();
 
111692
    }
 
111693
 
 
111694
 
 
111695
    typedAttributeData->~moment__AttributeData();
 
111696
 
 
111697
    return true;
 
111698
}
 
111699
 
 
111700
//---------------------------------------------------------------------
 
111701
const momentabout__AttributeData momentabout__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
111702
 
 
111703
//---------------------------------------------------------------------
 
111704
bool ColladaParserAutoGen15Private::_data__momentabout( const ParserChar* text, size_t textLength )
 
111705
{
 
111706
    return true;
 
111707
}
 
111708
 
 
111709
//---------------------------------------------------------------------
 
111710
bool ColladaParserAutoGen15Private::_preBegin__momentabout( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
111711
{
 
111712
#ifdef GENERATEDSAXPARSER_VALIDATION
 
111713
    if ( mValidate )
 
111714
    {
 
111715
 
 
111716
        bool validationResult = _validateBegin__momentabout( attributes, attributeDataPtr, validationDataPtr );
 
111717
        if ( !validationResult ) return false;
 
111718
 
 
111719
    } // validation
 
111720
#endif
 
111721
 
 
111722
momentabout__AttributeData* attributeData = newData<momentabout__AttributeData>(attributeDataPtr);
 
111723
 
 
111724
const ParserChar** attributeArray = attributes.attributes;
 
111725
if ( attributeArray )
 
111726
{
 
111727
    while (true)
 
111728
    {
 
111729
        const ParserChar * attribute = *attributeArray;
 
111730
        if ( !attribute )
 
111731
            break;
 
111732
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
111733
        attributeArray++;
 
111734
        if ( !attributeArray )
 
111735
            return false;
 
111736
        const ParserChar* attributeValue = *attributeArray;
 
111737
        attributeArray++;
 
111738
 
 
111739
 
 
111740
    switch ( hash )
 
111741
    {
 
111742
    case HASH_ATTRIBUTE_ENCODING:
 
111743
    {
 
111744
 
 
111745
attributeData->encoding = attributeValue;
 
111746
 
 
111747
    break;
 
111748
    }
 
111749
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
111750
    {
 
111751
bool failed;
 
111752
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
111753
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
111754
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
111755
        HASH_ELEMENT_MOMENTABOUT,
 
111756
        HASH_ATTRIBUTE_DEFINITIONURL,
 
111757
        attributeValue))
 
111758
{
 
111759
    return false;
 
111760
}
 
111761
if ( !failed )
 
111762
    attributeData->present_attributes |= momentabout__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
111763
 
 
111764
    break;
 
111765
    }
 
111766
    case HASH_ATTRIBUTE_CLASS:
 
111767
    {
 
111768
bool failed;
 
111769
#ifdef GENERATEDSAXPARSER_VALIDATION
 
111770
    if ( mValidate )
 
111771
    {
 
111772
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_MOMENTABOUT, HASH_ATTRIBUTE_CLASS);
 
111773
    }
 
111774
    else
 
111775
    {
 
111776
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
111777
    }
 
111778
#else
 
111779
    {
 
111780
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
111781
    } // validation
 
111782
#endif
 
111783
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
111784
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
111785
        HASH_ELEMENT_MOMENTABOUT,
 
111786
        HASH_ATTRIBUTE_CLASS,
 
111787
        attributeValue))
 
111788
{
 
111789
    return false;
 
111790
}
 
111791
#ifdef GENERATEDSAXPARSER_VALIDATION
 
111792
    if ( mValidate )
 
111793
    {
 
111794
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
111795
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
111796
    {
 
111797
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
111798
            simpleTypeValidationResult,
 
111799
            HASH_ELEMENT_MOMENTABOUT,
 
111800
            HASH_ATTRIBUTE_CLASS,
 
111801
            attributeValue) )
 
111802
        {
 
111803
            return false;
 
111804
        }
 
111805
    }
 
111806
    } // validation
 
111807
#endif
 
111808
 
 
111809
if ( !failed )
 
111810
    attributeData->present_attributes |= momentabout__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
111811
 
 
111812
    break;
 
111813
    }
 
111814
    case HASH_ATTRIBUTE_STYLE:
 
111815
    {
 
111816
 
 
111817
attributeData->style = attributeValue;
 
111818
 
 
111819
    break;
 
111820
    }
 
111821
    case HASH_ATTRIBUTE_XREF:
 
111822
    {
 
111823
 
 
111824
attributeData->xref = attributeValue;
 
111825
 
 
111826
    break;
 
111827
    }
 
111828
    case HASH_ATTRIBUTE_ID:
 
111829
    {
 
111830
 
 
111831
attributeData->id = attributeValue;
 
111832
 
 
111833
    break;
 
111834
    }
 
111835
    case HASH_ATTRIBUTE_HREF:
 
111836
    {
 
111837
bool failed;
 
111838
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
111839
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
111840
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
111841
        HASH_ELEMENT_MOMENTABOUT,
 
111842
        HASH_ATTRIBUTE_HREF,
 
111843
        attributeValue))
 
111844
{
 
111845
    return false;
 
111846
}
 
111847
if ( !failed )
 
111848
    attributeData->present_attributes |= momentabout__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
111849
 
 
111850
    break;
 
111851
    }
 
111852
    default:
 
111853
    {
 
111854
        if ( !attributeData->unknownAttributes.data )
 
111855
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
111856
        else
 
111857
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
111858
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
111859
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
111860
        attributeData->unknownAttributes.size += 2;
 
111861
 
 
111862
    }
 
111863
    }
 
111864
    }
 
111865
}
 
111866
if ((attributeData->present_attributes & momentabout__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
111867
{
 
111868
    attributeData->definitionURL = COLLADABU::URI("");
 
111869
}
 
111870
if ((attributeData->present_attributes & momentabout__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
111871
{
 
111872
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
111873
}
 
111874
if ((attributeData->present_attributes & momentabout__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
111875
{
 
111876
    attributeData->href = COLLADABU::URI("");
 
111877
}
 
111878
 
 
111879
 
 
111880
    return true;
 
111881
}
 
111882
 
 
111883
//---------------------------------------------------------------------
 
111884
bool ColladaParserAutoGen15Private::_preEnd__momentabout()
 
111885
{
 
111886
#ifdef GENERATEDSAXPARSER_VALIDATION
 
111887
    if ( mValidate )
 
111888
    {
 
111889
 
 
111890
        bool validationResult = _validateEnd__momentabout();
 
111891
        if ( !validationResult ) return false;
 
111892
 
 
111893
    } // validation
 
111894
#endif
 
111895
 
 
111896
    return true;
 
111897
}
 
111898
 
 
111899
//---------------------------------------------------------------------
 
111900
bool ColladaParserAutoGen15Private::_freeAttributes__momentabout( void* attributeData )
 
111901
{
 
111902
    momentabout__AttributeData* typedAttributeData = static_cast<momentabout__AttributeData*>(attributeData);
 
111903
    if (typedAttributeData->_class.data)
 
111904
    {
 
111905
        mStackMemoryManager.deleteObject();
 
111906
    }
 
111907
 
 
111908
    if (typedAttributeData->unknownAttributes.data)
 
111909
    {
 
111910
        mStackMemoryManager.deleteObject();
 
111911
    }
 
111912
 
 
111913
 
 
111914
    typedAttributeData->~momentabout__AttributeData();
 
111915
 
 
111916
    return true;
 
111917
}
 
111918
 
 
111919
//---------------------------------------------------------------------
 
111920
const apply__AttributeData apply__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
111921
 
 
111922
//---------------------------------------------------------------------
 
111923
bool ColladaParserAutoGen15Private::_data__apply( const ParserChar* text, size_t textLength )
 
111924
{
 
111925
    return true;
 
111926
}
 
111927
 
 
111928
//---------------------------------------------------------------------
 
111929
bool ColladaParserAutoGen15Private::_preBegin__apply( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
111930
{
 
111931
#ifdef GENERATEDSAXPARSER_VALIDATION
 
111932
    if ( mValidate )
 
111933
    {
 
111934
 
 
111935
        bool validationResult = _validateBegin__apply( attributes, attributeDataPtr, validationDataPtr );
 
111936
        if ( !validationResult ) return false;
 
111937
 
 
111938
    } // validation
 
111939
#endif
 
111940
 
 
111941
apply__AttributeData* attributeData = newData<apply__AttributeData>(attributeDataPtr);
 
111942
 
 
111943
const ParserChar** attributeArray = attributes.attributes;
 
111944
if ( attributeArray )
 
111945
{
 
111946
    while (true)
 
111947
    {
 
111948
        const ParserChar * attribute = *attributeArray;
 
111949
        if ( !attribute )
 
111950
            break;
 
111951
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
111952
        attributeArray++;
 
111953
        if ( !attributeArray )
 
111954
            return false;
 
111955
        const ParserChar* attributeValue = *attributeArray;
 
111956
        attributeArray++;
 
111957
 
 
111958
 
 
111959
    switch ( hash )
 
111960
    {
 
111961
    case HASH_ATTRIBUTE_CLASS:
 
111962
    {
 
111963
bool failed;
 
111964
#ifdef GENERATEDSAXPARSER_VALIDATION
 
111965
    if ( mValidate )
 
111966
    {
 
111967
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_APPLY, HASH_ATTRIBUTE_CLASS);
 
111968
    }
 
111969
    else
 
111970
    {
 
111971
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
111972
    }
 
111973
#else
 
111974
    {
 
111975
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
111976
    } // validation
 
111977
#endif
 
111978
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
111979
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
111980
        HASH_ELEMENT_APPLY,
 
111981
        HASH_ATTRIBUTE_CLASS,
 
111982
        attributeValue))
 
111983
{
 
111984
    return false;
 
111985
}
 
111986
#ifdef GENERATEDSAXPARSER_VALIDATION
 
111987
    if ( mValidate )
 
111988
    {
 
111989
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
111990
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
111991
    {
 
111992
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
111993
            simpleTypeValidationResult,
 
111994
            HASH_ELEMENT_APPLY,
 
111995
            HASH_ATTRIBUTE_CLASS,
 
111996
            attributeValue) )
 
111997
        {
 
111998
            return false;
 
111999
        }
 
112000
    }
 
112001
    } // validation
 
112002
#endif
 
112003
 
 
112004
if ( !failed )
 
112005
    attributeData->present_attributes |= apply__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
112006
 
 
112007
    break;
 
112008
    }
 
112009
    case HASH_ATTRIBUTE_STYLE:
 
112010
    {
 
112011
 
 
112012
attributeData->style = attributeValue;
 
112013
 
 
112014
    break;
 
112015
    }
 
112016
    case HASH_ATTRIBUTE_XREF:
 
112017
    {
 
112018
 
 
112019
attributeData->xref = attributeValue;
 
112020
 
 
112021
    break;
 
112022
    }
 
112023
    case HASH_ATTRIBUTE_ID:
 
112024
    {
 
112025
 
 
112026
attributeData->id = attributeValue;
 
112027
 
 
112028
    break;
 
112029
    }
 
112030
    case HASH_ATTRIBUTE_HREF:
 
112031
    {
 
112032
bool failed;
 
112033
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
112034
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
112035
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
112036
        HASH_ELEMENT_APPLY,
 
112037
        HASH_ATTRIBUTE_HREF,
 
112038
        attributeValue))
 
112039
{
 
112040
    return false;
 
112041
}
 
112042
if ( !failed )
 
112043
    attributeData->present_attributes |= apply__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
112044
 
 
112045
    break;
 
112046
    }
 
112047
    default:
 
112048
    {
 
112049
        if ( !attributeData->unknownAttributes.data )
 
112050
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
112051
        else
 
112052
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
112053
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
112054
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
112055
        attributeData->unknownAttributes.size += 2;
 
112056
 
 
112057
    }
 
112058
    }
 
112059
    }
 
112060
}
 
112061
if ((attributeData->present_attributes & apply__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
112062
{
 
112063
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
112064
}
 
112065
if ((attributeData->present_attributes & apply__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
112066
{
 
112067
    attributeData->href = COLLADABU::URI("");
 
112068
}
 
112069
 
 
112070
 
 
112071
    return true;
 
112072
}
 
112073
 
 
112074
//---------------------------------------------------------------------
 
112075
bool ColladaParserAutoGen15Private::_preEnd__apply()
 
112076
{
 
112077
#ifdef GENERATEDSAXPARSER_VALIDATION
 
112078
    if ( mValidate )
 
112079
    {
 
112080
 
 
112081
        bool validationResult = _validateEnd__apply();
 
112082
        if ( !validationResult ) return false;
 
112083
 
 
112084
    } // validation
 
112085
#endif
 
112086
 
 
112087
    return true;
 
112088
}
 
112089
 
 
112090
//---------------------------------------------------------------------
 
112091
bool ColladaParserAutoGen15Private::_freeAttributes__apply( void* attributeData )
 
112092
{
 
112093
    apply__AttributeData* typedAttributeData = static_cast<apply__AttributeData*>(attributeData);
 
112094
    if (typedAttributeData->_class.data)
 
112095
    {
 
112096
        mStackMemoryManager.deleteObject();
 
112097
    }
 
112098
 
 
112099
    if (typedAttributeData->unknownAttributes.data)
 
112100
    {
 
112101
        mStackMemoryManager.deleteObject();
 
112102
    }
 
112103
 
 
112104
 
 
112105
    typedAttributeData->~apply__AttributeData();
 
112106
 
 
112107
    return true;
 
112108
}
 
112109
 
 
112110
//---------------------------------------------------------------------
 
112111
const interval__AttributeData interval__AttributeData::DEFAULT = {0, ENUM__mathml__interval__closure__closed, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
112112
 
 
112113
//---------------------------------------------------------------------
 
112114
bool ColladaParserAutoGen15Private::_data__interval( const ParserChar* text, size_t textLength )
 
112115
{
 
112116
    return true;
 
112117
}
 
112118
 
 
112119
//---------------------------------------------------------------------
 
112120
bool ColladaParserAutoGen15Private::_preBegin__interval( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
112121
{
 
112122
#ifdef GENERATEDSAXPARSER_VALIDATION
 
112123
    if ( mValidate )
 
112124
    {
 
112125
 
 
112126
        bool validationResult = _validateBegin__interval( attributes, attributeDataPtr, validationDataPtr );
 
112127
        if ( !validationResult ) return false;
 
112128
 
 
112129
    } // validation
 
112130
#endif
 
112131
 
 
112132
interval__AttributeData* attributeData = newData<interval__AttributeData>(attributeDataPtr);
 
112133
 
 
112134
const ParserChar** attributeArray = attributes.attributes;
 
112135
if ( attributeArray )
 
112136
{
 
112137
    while (true)
 
112138
    {
 
112139
        const ParserChar * attribute = *attributeArray;
 
112140
        if ( !attribute )
 
112141
            break;
 
112142
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
112143
        attributeArray++;
 
112144
        if ( !attributeArray )
 
112145
            return false;
 
112146
        const ParserChar* attributeValue = *attributeArray;
 
112147
        attributeArray++;
 
112148
 
 
112149
 
 
112150
    switch ( hash )
 
112151
    {
 
112152
    case HASH_ATTRIBUTE_CLOSURE:
 
112153
    {
 
112154
bool failed;
 
112155
attributeData->closure = Utils::toEnum<ENUM__mathml__interval__closure, StringHash, ENUM__mathml__interval__closure__COUNT>(attributeValue, failed, ENUM__mathml__interval__closureMap, Utils::calculateStringHash);
 
112156
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
112157
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
112158
        HASH_ELEMENT_INTERVAL,
 
112159
        HASH_ATTRIBUTE_CLOSURE,
 
112160
        attributeValue))
 
112161
{
 
112162
    return false;
 
112163
}
 
112164
 
 
112165
    break;
 
112166
    }
 
112167
    case HASH_ATTRIBUTE_CLASS:
 
112168
    {
 
112169
bool failed;
 
112170
#ifdef GENERATEDSAXPARSER_VALIDATION
 
112171
    if ( mValidate )
 
112172
    {
 
112173
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_INTERVAL, HASH_ATTRIBUTE_CLASS);
 
112174
    }
 
112175
    else
 
112176
    {
 
112177
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
112178
    }
 
112179
#else
 
112180
    {
 
112181
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
112182
    } // validation
 
112183
#endif
 
112184
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
112185
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
112186
        HASH_ELEMENT_INTERVAL,
 
112187
        HASH_ATTRIBUTE_CLASS,
 
112188
        attributeValue))
 
112189
{
 
112190
    return false;
 
112191
}
 
112192
#ifdef GENERATEDSAXPARSER_VALIDATION
 
112193
    if ( mValidate )
 
112194
    {
 
112195
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
112196
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
112197
    {
 
112198
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
112199
            simpleTypeValidationResult,
 
112200
            HASH_ELEMENT_INTERVAL,
 
112201
            HASH_ATTRIBUTE_CLASS,
 
112202
            attributeValue) )
 
112203
        {
 
112204
            return false;
 
112205
        }
 
112206
    }
 
112207
    } // validation
 
112208
#endif
 
112209
 
 
112210
if ( !failed )
 
112211
    attributeData->present_attributes |= interval__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
112212
 
 
112213
    break;
 
112214
    }
 
112215
    case HASH_ATTRIBUTE_STYLE:
 
112216
    {
 
112217
 
 
112218
attributeData->style = attributeValue;
 
112219
 
 
112220
    break;
 
112221
    }
 
112222
    case HASH_ATTRIBUTE_XREF:
 
112223
    {
 
112224
 
 
112225
attributeData->xref = attributeValue;
 
112226
 
 
112227
    break;
 
112228
    }
 
112229
    case HASH_ATTRIBUTE_ID:
 
112230
    {
 
112231
 
 
112232
attributeData->id = attributeValue;
 
112233
 
 
112234
    break;
 
112235
    }
 
112236
    case HASH_ATTRIBUTE_HREF:
 
112237
    {
 
112238
bool failed;
 
112239
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
112240
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
112241
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
112242
        HASH_ELEMENT_INTERVAL,
 
112243
        HASH_ATTRIBUTE_HREF,
 
112244
        attributeValue))
 
112245
{
 
112246
    return false;
 
112247
}
 
112248
if ( !failed )
 
112249
    attributeData->present_attributes |= interval__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
112250
 
 
112251
    break;
 
112252
    }
 
112253
    default:
 
112254
    {
 
112255
        if ( !attributeData->unknownAttributes.data )
 
112256
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
112257
        else
 
112258
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
112259
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
112260
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
112261
        attributeData->unknownAttributes.size += 2;
 
112262
 
 
112263
    }
 
112264
    }
 
112265
    }
 
112266
}
 
112267
if ((attributeData->present_attributes & interval__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
112268
{
 
112269
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
112270
}
 
112271
if ((attributeData->present_attributes & interval__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
112272
{
 
112273
    attributeData->href = COLLADABU::URI("");
 
112274
}
 
112275
 
 
112276
 
 
112277
    return true;
 
112278
}
 
112279
 
 
112280
//---------------------------------------------------------------------
 
112281
bool ColladaParserAutoGen15Private::_preEnd__interval()
 
112282
{
 
112283
#ifdef GENERATEDSAXPARSER_VALIDATION
 
112284
    if ( mValidate )
 
112285
    {
 
112286
 
 
112287
        bool validationResult = _validateEnd__interval();
 
112288
        if ( !validationResult ) return false;
 
112289
 
 
112290
    } // validation
 
112291
#endif
 
112292
 
 
112293
    return true;
 
112294
}
 
112295
 
 
112296
//---------------------------------------------------------------------
 
112297
bool ColladaParserAutoGen15Private::_freeAttributes__interval( void* attributeData )
 
112298
{
 
112299
    interval__AttributeData* typedAttributeData = static_cast<interval__AttributeData*>(attributeData);
 
112300
    if (typedAttributeData->_class.data)
 
112301
    {
 
112302
        mStackMemoryManager.deleteObject();
 
112303
    }
 
112304
 
 
112305
    if (typedAttributeData->unknownAttributes.data)
 
112306
    {
 
112307
        mStackMemoryManager.deleteObject();
 
112308
    }
 
112309
 
 
112310
 
 
112311
    typedAttributeData->~interval__AttributeData();
 
112312
 
 
112313
    return true;
 
112314
}
 
112315
 
 
112316
//---------------------------------------------------------------------
 
112317
ENUM__mathml__interval__closure ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__mathml__interval__closure (
 
112318
    const ParserChar* prefixedBuffer,
 
112319
    const ParserChar* prefixedBufferEnd,
 
112320
    const ParserChar** buffer,
 
112321
    const ParserChar* bufferEnd,
 
112322
    bool& failed,
 
112323
    const std::pair<StringHash, ENUM__mathml__interval__closure>* enumMap,
 
112324
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
112325
)
 
112326
{
 
112327
    return toEnumDataPrefix<ENUM__mathml__interval__closure, StringHash, ENUM__mathml__interval__closure__COUNT, &toEnum_ENUM__mathml__interval__closure>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
112328
}
 
112329
 
 
112330
//---------------------------------------------------------------------
 
112331
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__mathml__interval__closure (
 
112332
    const ParserChar* text,
 
112333
    size_t textLength,
 
112334
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__mathml__interval__closure*, size_t ),
 
112335
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
112336
)
 
112337
{
 
112338
    return characterData2EnumData<ENUM__mathml__interval__closure, StringHash, ENUM__mathml__interval__closure__COUNT>(text, textLength, dataFunction, ENUM__mathml__interval__closureMap, baseConversionFunc, &toEnum_ENUM__mathml__interval__closure, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__mathml__interval__closure);
 
112339
}
 
112340
 
 
112341
//---------------------------------------------------------------------
 
112342
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__mathml__interval__closure (
 
112343
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__mathml__interval__closure*, size_t ),
 
112344
    const std::pair<StringHash, ENUM__mathml__interval__closure>* enumMap,
 
112345
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
112346
    ENUM__mathml__interval__closure (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__mathml__interval__closure>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
112347
)
 
112348
{
 
112349
    return dataEnumEnd<ENUM__mathml__interval__closure, StringHash, ENUM__mathml__interval__closure__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
112350
}
 
112351
 
 
112352
//---------------------------------------------------------------------
 
112353
const inverse__AttributeData inverse__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
112354
 
 
112355
//---------------------------------------------------------------------
 
112356
bool ColladaParserAutoGen15Private::_data__inverse( const ParserChar* text, size_t textLength )
 
112357
{
 
112358
    return true;
 
112359
}
 
112360
 
 
112361
//---------------------------------------------------------------------
 
112362
bool ColladaParserAutoGen15Private::_preBegin__inverse( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
112363
{
 
112364
#ifdef GENERATEDSAXPARSER_VALIDATION
 
112365
    if ( mValidate )
 
112366
    {
 
112367
 
 
112368
        bool validationResult = _validateBegin__inverse( attributes, attributeDataPtr, validationDataPtr );
 
112369
        if ( !validationResult ) return false;
 
112370
 
 
112371
    } // validation
 
112372
#endif
 
112373
 
 
112374
inverse__AttributeData* attributeData = newData<inverse__AttributeData>(attributeDataPtr);
 
112375
 
 
112376
const ParserChar** attributeArray = attributes.attributes;
 
112377
if ( attributeArray )
 
112378
{
 
112379
    while (true)
 
112380
    {
 
112381
        const ParserChar * attribute = *attributeArray;
 
112382
        if ( !attribute )
 
112383
            break;
 
112384
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
112385
        attributeArray++;
 
112386
        if ( !attributeArray )
 
112387
            return false;
 
112388
        const ParserChar* attributeValue = *attributeArray;
 
112389
        attributeArray++;
 
112390
 
 
112391
 
 
112392
    switch ( hash )
 
112393
    {
 
112394
    case HASH_ATTRIBUTE_ENCODING:
 
112395
    {
 
112396
 
 
112397
attributeData->encoding = attributeValue;
 
112398
 
 
112399
    break;
 
112400
    }
 
112401
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
112402
    {
 
112403
bool failed;
 
112404
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
112405
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
112406
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
112407
        HASH_ELEMENT_INVERSE,
 
112408
        HASH_ATTRIBUTE_DEFINITIONURL,
 
112409
        attributeValue))
 
112410
{
 
112411
    return false;
 
112412
}
 
112413
if ( !failed )
 
112414
    attributeData->present_attributes |= inverse__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
112415
 
 
112416
    break;
 
112417
    }
 
112418
    case HASH_ATTRIBUTE_CLASS:
 
112419
    {
 
112420
bool failed;
 
112421
#ifdef GENERATEDSAXPARSER_VALIDATION
 
112422
    if ( mValidate )
 
112423
    {
 
112424
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_INVERSE, HASH_ATTRIBUTE_CLASS);
 
112425
    }
 
112426
    else
 
112427
    {
 
112428
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
112429
    }
 
112430
#else
 
112431
    {
 
112432
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
112433
    } // validation
 
112434
#endif
 
112435
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
112436
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
112437
        HASH_ELEMENT_INVERSE,
 
112438
        HASH_ATTRIBUTE_CLASS,
 
112439
        attributeValue))
 
112440
{
 
112441
    return false;
 
112442
}
 
112443
#ifdef GENERATEDSAXPARSER_VALIDATION
 
112444
    if ( mValidate )
 
112445
    {
 
112446
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
112447
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
112448
    {
 
112449
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
112450
            simpleTypeValidationResult,
 
112451
            HASH_ELEMENT_INVERSE,
 
112452
            HASH_ATTRIBUTE_CLASS,
 
112453
            attributeValue) )
 
112454
        {
 
112455
            return false;
 
112456
        }
 
112457
    }
 
112458
    } // validation
 
112459
#endif
 
112460
 
 
112461
if ( !failed )
 
112462
    attributeData->present_attributes |= inverse__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
112463
 
 
112464
    break;
 
112465
    }
 
112466
    case HASH_ATTRIBUTE_STYLE:
 
112467
    {
 
112468
 
 
112469
attributeData->style = attributeValue;
 
112470
 
 
112471
    break;
 
112472
    }
 
112473
    case HASH_ATTRIBUTE_XREF:
 
112474
    {
 
112475
 
 
112476
attributeData->xref = attributeValue;
 
112477
 
 
112478
    break;
 
112479
    }
 
112480
    case HASH_ATTRIBUTE_ID:
 
112481
    {
 
112482
 
 
112483
attributeData->id = attributeValue;
 
112484
 
 
112485
    break;
 
112486
    }
 
112487
    case HASH_ATTRIBUTE_HREF:
 
112488
    {
 
112489
bool failed;
 
112490
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
112491
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
112492
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
112493
        HASH_ELEMENT_INVERSE,
 
112494
        HASH_ATTRIBUTE_HREF,
 
112495
        attributeValue))
 
112496
{
 
112497
    return false;
 
112498
}
 
112499
if ( !failed )
 
112500
    attributeData->present_attributes |= inverse__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
112501
 
 
112502
    break;
 
112503
    }
 
112504
    default:
 
112505
    {
 
112506
        if ( !attributeData->unknownAttributes.data )
 
112507
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
112508
        else
 
112509
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
112510
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
112511
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
112512
        attributeData->unknownAttributes.size += 2;
 
112513
 
 
112514
    }
 
112515
    }
 
112516
    }
 
112517
}
 
112518
if ((attributeData->present_attributes & inverse__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
112519
{
 
112520
    attributeData->definitionURL = COLLADABU::URI("");
 
112521
}
 
112522
if ((attributeData->present_attributes & inverse__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
112523
{
 
112524
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
112525
}
 
112526
if ((attributeData->present_attributes & inverse__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
112527
{
 
112528
    attributeData->href = COLLADABU::URI("");
 
112529
}
 
112530
 
 
112531
 
 
112532
    return true;
 
112533
}
 
112534
 
 
112535
//---------------------------------------------------------------------
 
112536
bool ColladaParserAutoGen15Private::_preEnd__inverse()
 
112537
{
 
112538
#ifdef GENERATEDSAXPARSER_VALIDATION
 
112539
    if ( mValidate )
 
112540
    {
 
112541
 
 
112542
        bool validationResult = _validateEnd__inverse();
 
112543
        if ( !validationResult ) return false;
 
112544
 
 
112545
    } // validation
 
112546
#endif
 
112547
 
 
112548
    return true;
 
112549
}
 
112550
 
 
112551
//---------------------------------------------------------------------
 
112552
bool ColladaParserAutoGen15Private::_freeAttributes__inverse( void* attributeData )
 
112553
{
 
112554
    inverse__AttributeData* typedAttributeData = static_cast<inverse__AttributeData*>(attributeData);
 
112555
    if (typedAttributeData->_class.data)
 
112556
    {
 
112557
        mStackMemoryManager.deleteObject();
 
112558
    }
 
112559
 
 
112560
    if (typedAttributeData->unknownAttributes.data)
 
112561
    {
 
112562
        mStackMemoryManager.deleteObject();
 
112563
    }
 
112564
 
 
112565
 
 
112566
    typedAttributeData->~inverse__AttributeData();
 
112567
 
 
112568
    return true;
 
112569
}
 
112570
 
 
112571
//---------------------------------------------------------------------
 
112572
const condition__AttributeData condition__AttributeData::DEFAULT = {0, 0, 0};
 
112573
 
 
112574
//---------------------------------------------------------------------
 
112575
bool ColladaParserAutoGen15Private::_data__condition( const ParserChar* text, size_t textLength )
 
112576
{
 
112577
    return true;
 
112578
}
 
112579
 
 
112580
//---------------------------------------------------------------------
 
112581
bool ColladaParserAutoGen15Private::_preBegin__condition( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
112582
{
 
112583
#ifdef GENERATEDSAXPARSER_VALIDATION
 
112584
    if ( mValidate )
 
112585
    {
 
112586
 
 
112587
        bool validationResult = _validateBegin__condition( attributes, attributeDataPtr, validationDataPtr );
 
112588
        if ( !validationResult ) return false;
 
112589
 
 
112590
    } // validation
 
112591
#endif
 
112592
 
 
112593
condition__AttributeData* attributeData = newData<condition__AttributeData>(attributeDataPtr);
 
112594
 
 
112595
const ParserChar** attributeArray = attributes.attributes;
 
112596
if ( attributeArray )
 
112597
{
 
112598
    while (true)
 
112599
    {
 
112600
        const ParserChar * attribute = *attributeArray;
 
112601
        if ( !attribute )
 
112602
            break;
 
112603
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
112604
        attributeArray++;
 
112605
        if ( !attributeArray )
 
112606
            return false;
 
112607
        const ParserChar* attributeValue = *attributeArray;
 
112608
        attributeArray++;
 
112609
 
 
112610
 
 
112611
    switch ( hash )
 
112612
    {
 
112613
    case HASH_ATTRIBUTE_ENCODING:
 
112614
    {
 
112615
 
 
112616
attributeData->encoding = attributeValue;
 
112617
 
 
112618
    break;
 
112619
    }
 
112620
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
112621
    {
 
112622
bool failed;
 
112623
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
112624
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
112625
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
112626
        HASH_ELEMENT_CONDITION,
 
112627
        HASH_ATTRIBUTE_DEFINITIONURL,
 
112628
        attributeValue))
 
112629
{
 
112630
    return false;
 
112631
}
 
112632
if ( !failed )
 
112633
    attributeData->present_attributes |= condition__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
112634
 
 
112635
    break;
 
112636
    }
 
112637
    default:
 
112638
    {
 
112639
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_CONDITION, attribute, attributeValue))
 
112640
            {return false;}
 
112641
    }
 
112642
    }
 
112643
    }
 
112644
}
 
112645
if ((attributeData->present_attributes & condition__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
112646
{
 
112647
    attributeData->definitionURL = COLLADABU::URI("");
 
112648
}
 
112649
 
 
112650
 
 
112651
    return true;
 
112652
}
 
112653
 
 
112654
//---------------------------------------------------------------------
 
112655
bool ColladaParserAutoGen15Private::_preEnd__condition()
 
112656
{
 
112657
#ifdef GENERATEDSAXPARSER_VALIDATION
 
112658
    if ( mValidate )
 
112659
    {
 
112660
 
 
112661
        bool validationResult = _validateEnd__condition();
 
112662
        if ( !validationResult ) return false;
 
112663
 
 
112664
    } // validation
 
112665
#endif
 
112666
 
 
112667
    return true;
 
112668
}
 
112669
 
 
112670
//---------------------------------------------------------------------
 
112671
bool ColladaParserAutoGen15Private::_freeAttributes__condition( void* attributeData )
 
112672
{
 
112673
    condition__AttributeData* typedAttributeData = static_cast<condition__AttributeData*>(attributeData);
 
112674
 
 
112675
    typedAttributeData->~condition__AttributeData();
 
112676
 
 
112677
    return true;
 
112678
}
 
112679
 
 
112680
//---------------------------------------------------------------------
 
112681
const declare__AttributeData declare__AttributeData::DEFAULT = {0, 0, 0, 0, ENUM__mathml__declare__occurrence__NOT_PRESENT, 0, 0};
 
112682
 
 
112683
//---------------------------------------------------------------------
 
112684
bool ColladaParserAutoGen15Private::_data__declare( const ParserChar* text, size_t textLength )
 
112685
{
 
112686
    return true;
 
112687
}
 
112688
 
 
112689
//---------------------------------------------------------------------
 
112690
bool ColladaParserAutoGen15Private::_preBegin__declare( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
112691
{
 
112692
#ifdef GENERATEDSAXPARSER_VALIDATION
 
112693
    if ( mValidate )
 
112694
    {
 
112695
 
 
112696
        bool validationResult = _validateBegin__declare( attributes, attributeDataPtr, validationDataPtr );
 
112697
        if ( !validationResult ) return false;
 
112698
 
 
112699
    } // validation
 
112700
#endif
 
112701
 
 
112702
declare__AttributeData* attributeData = newData<declare__AttributeData>(attributeDataPtr);
 
112703
 
 
112704
const ParserChar** attributeArray = attributes.attributes;
 
112705
if ( attributeArray )
 
112706
{
 
112707
    while (true)
 
112708
    {
 
112709
        const ParserChar * attribute = *attributeArray;
 
112710
        if ( !attribute )
 
112711
            break;
 
112712
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
112713
        attributeArray++;
 
112714
        if ( !attributeArray )
 
112715
            return false;
 
112716
        const ParserChar* attributeValue = *attributeArray;
 
112717
        attributeArray++;
 
112718
 
 
112719
 
 
112720
    switch ( hash )
 
112721
    {
 
112722
    case HASH_ATTRIBUTE_TYPE:
 
112723
    {
 
112724
 
 
112725
attributeData->type = attributeValue;
 
112726
 
 
112727
    break;
 
112728
    }
 
112729
    case HASH_ATTRIBUTE_SCOPE:
 
112730
    {
 
112731
 
 
112732
attributeData->scope = attributeValue;
 
112733
 
 
112734
    break;
 
112735
    }
 
112736
    case HASH_ATTRIBUTE_NARGS:
 
112737
    {
 
112738
bool failed;
 
112739
attributeData->nargs = GeneratedSaxParser::Utils::toUint64(attributeValue, failed);
 
112740
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
112741
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
112742
        HASH_ELEMENT_DECLARE,
 
112743
        HASH_ATTRIBUTE_NARGS,
 
112744
        attributeValue))
 
112745
{
 
112746
    return false;
 
112747
}
 
112748
if ( !failed )
 
112749
    attributeData->present_attributes |= declare__AttributeData::ATTRIBUTE_NARGS_PRESENT;
 
112750
 
 
112751
    break;
 
112752
    }
 
112753
    case HASH_ATTRIBUTE_OCCURRENCE:
 
112754
    {
 
112755
bool failed;
 
112756
attributeData->occurrence = Utils::toEnum<ENUM__mathml__declare__occurrence, StringHash, ENUM__mathml__declare__occurrence__COUNT>(attributeValue, failed, ENUM__mathml__declare__occurrenceMap, Utils::calculateStringHash);
 
112757
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
112758
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
112759
        HASH_ELEMENT_DECLARE,
 
112760
        HASH_ATTRIBUTE_OCCURRENCE,
 
112761
        attributeValue))
 
112762
{
 
112763
    return false;
 
112764
}
 
112765
 
 
112766
    break;
 
112767
    }
 
112768
    case HASH_ATTRIBUTE_ENCODING:
 
112769
    {
 
112770
 
 
112771
attributeData->encoding = attributeValue;
 
112772
 
 
112773
    break;
 
112774
    }
 
112775
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
112776
    {
 
112777
bool failed;
 
112778
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
112779
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
112780
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
112781
        HASH_ELEMENT_DECLARE,
 
112782
        HASH_ATTRIBUTE_DEFINITIONURL,
 
112783
        attributeValue))
 
112784
{
 
112785
    return false;
 
112786
}
 
112787
if ( !failed )
 
112788
    attributeData->present_attributes |= declare__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
112789
 
 
112790
    break;
 
112791
    }
 
112792
    default:
 
112793
    {
 
112794
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_DECLARE, attribute, attributeValue))
 
112795
            {return false;}
 
112796
    }
 
112797
    }
 
112798
    }
 
112799
}
 
112800
if ((attributeData->present_attributes & declare__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
112801
{
 
112802
    attributeData->definitionURL = COLLADABU::URI("");
 
112803
}
 
112804
 
 
112805
 
 
112806
    return true;
 
112807
}
 
112808
 
 
112809
//---------------------------------------------------------------------
 
112810
bool ColladaParserAutoGen15Private::_preEnd__declare()
 
112811
{
 
112812
#ifdef GENERATEDSAXPARSER_VALIDATION
 
112813
    if ( mValidate )
 
112814
    {
 
112815
 
 
112816
        bool validationResult = _validateEnd__declare();
 
112817
        if ( !validationResult ) return false;
 
112818
 
 
112819
    } // validation
 
112820
#endif
 
112821
 
 
112822
    return true;
 
112823
}
 
112824
 
 
112825
//---------------------------------------------------------------------
 
112826
bool ColladaParserAutoGen15Private::_freeAttributes__declare( void* attributeData )
 
112827
{
 
112828
    declare__AttributeData* typedAttributeData = static_cast<declare__AttributeData*>(attributeData);
 
112829
 
 
112830
    typedAttributeData->~declare__AttributeData();
 
112831
 
 
112832
    return true;
 
112833
}
 
112834
 
 
112835
//---------------------------------------------------------------------
 
112836
ENUM__mathml__declare__occurrence ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__mathml__declare__occurrence (
 
112837
    const ParserChar* prefixedBuffer,
 
112838
    const ParserChar* prefixedBufferEnd,
 
112839
    const ParserChar** buffer,
 
112840
    const ParserChar* bufferEnd,
 
112841
    bool& failed,
 
112842
    const std::pair<StringHash, ENUM__mathml__declare__occurrence>* enumMap,
 
112843
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
112844
)
 
112845
{
 
112846
    return toEnumDataPrefix<ENUM__mathml__declare__occurrence, StringHash, ENUM__mathml__declare__occurrence__COUNT, &toEnum_ENUM__mathml__declare__occurrence>(prefixedBuffer, prefixedBufferEnd, buffer, bufferEnd, failed, enumMap, baseConversionFunc);
 
112847
}
 
112848
 
 
112849
//---------------------------------------------------------------------
 
112850
bool ColladaParserAutoGen15Private::characterData2EnumData_ENUM__mathml__declare__occurrence (
 
112851
    const ParserChar* text,
 
112852
    size_t textLength,
 
112853
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__mathml__declare__occurrence*, size_t ),
 
112854
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& )
 
112855
)
 
112856
{
 
112857
    return characterData2EnumData<ENUM__mathml__declare__occurrence, StringHash, ENUM__mathml__declare__occurrence__COUNT>(text, textLength, dataFunction, ENUM__mathml__declare__occurrenceMap, baseConversionFunc, &toEnum_ENUM__mathml__declare__occurrence, &ColladaParserAutoGen15Private::toEnumDataPrefix_ENUM__mathml__declare__occurrence);
 
112858
}
 
112859
 
 
112860
//---------------------------------------------------------------------
 
112861
bool ColladaParserAutoGen15Private::dataEnumEnd_ENUM__mathml__declare__occurrence (
 
112862
    bool ( ColladaParserAutoGen15::*dataFunction )(const ENUM__mathml__declare__occurrence*, size_t ),
 
112863
    const std::pair<StringHash, ENUM__mathml__declare__occurrence>* enumMap,
 
112864
    StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ),
 
112865
    ENUM__mathml__declare__occurrence (*toEnumFunc)( const ParserChar**, const ParserChar*, bool&, const std::pair<StringHash, ENUM__mathml__declare__occurrence>* enumMap, StringHash (*baseConversionFunc)( const ParserChar**, const ParserChar*, bool& ))
 
112866
)
 
112867
{
 
112868
    return dataEnumEnd<ENUM__mathml__declare__occurrence, StringHash, ENUM__mathml__declare__occurrence__COUNT>(dataFunction, enumMap, baseConversionFunc, toEnumFunc);
 
112869
}
 
112870
 
 
112871
//---------------------------------------------------------------------
 
112872
const lambda__AttributeData lambda__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
112873
 
 
112874
//---------------------------------------------------------------------
 
112875
bool ColladaParserAutoGen15Private::_data__lambda( const ParserChar* text, size_t textLength )
 
112876
{
 
112877
    return true;
 
112878
}
 
112879
 
 
112880
//---------------------------------------------------------------------
 
112881
bool ColladaParserAutoGen15Private::_preBegin__lambda( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
112882
{
 
112883
#ifdef GENERATEDSAXPARSER_VALIDATION
 
112884
    if ( mValidate )
 
112885
    {
 
112886
 
 
112887
        bool validationResult = _validateBegin__lambda( attributes, attributeDataPtr, validationDataPtr );
 
112888
        if ( !validationResult ) return false;
 
112889
 
 
112890
    } // validation
 
112891
#endif
 
112892
 
 
112893
lambda__AttributeData* attributeData = newData<lambda__AttributeData>(attributeDataPtr);
 
112894
 
 
112895
const ParserChar** attributeArray = attributes.attributes;
 
112896
if ( attributeArray )
 
112897
{
 
112898
    while (true)
 
112899
    {
 
112900
        const ParserChar * attribute = *attributeArray;
 
112901
        if ( !attribute )
 
112902
            break;
 
112903
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
112904
        attributeArray++;
 
112905
        if ( !attributeArray )
 
112906
            return false;
 
112907
        const ParserChar* attributeValue = *attributeArray;
 
112908
        attributeArray++;
 
112909
 
 
112910
 
 
112911
    switch ( hash )
 
112912
    {
 
112913
    case HASH_ATTRIBUTE_CLASS:
 
112914
    {
 
112915
bool failed;
 
112916
#ifdef GENERATEDSAXPARSER_VALIDATION
 
112917
    if ( mValidate )
 
112918
    {
 
112919
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_LAMBDA, HASH_ATTRIBUTE_CLASS);
 
112920
    }
 
112921
    else
 
112922
    {
 
112923
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
112924
    }
 
112925
#else
 
112926
    {
 
112927
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
112928
    } // validation
 
112929
#endif
 
112930
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
112931
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
112932
        HASH_ELEMENT_LAMBDA,
 
112933
        HASH_ATTRIBUTE_CLASS,
 
112934
        attributeValue))
 
112935
{
 
112936
    return false;
 
112937
}
 
112938
#ifdef GENERATEDSAXPARSER_VALIDATION
 
112939
    if ( mValidate )
 
112940
    {
 
112941
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
112942
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
112943
    {
 
112944
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
112945
            simpleTypeValidationResult,
 
112946
            HASH_ELEMENT_LAMBDA,
 
112947
            HASH_ATTRIBUTE_CLASS,
 
112948
            attributeValue) )
 
112949
        {
 
112950
            return false;
 
112951
        }
 
112952
    }
 
112953
    } // validation
 
112954
#endif
 
112955
 
 
112956
if ( !failed )
 
112957
    attributeData->present_attributes |= lambda__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
112958
 
 
112959
    break;
 
112960
    }
 
112961
    case HASH_ATTRIBUTE_STYLE:
 
112962
    {
 
112963
 
 
112964
attributeData->style = attributeValue;
 
112965
 
 
112966
    break;
 
112967
    }
 
112968
    case HASH_ATTRIBUTE_XREF:
 
112969
    {
 
112970
 
 
112971
attributeData->xref = attributeValue;
 
112972
 
 
112973
    break;
 
112974
    }
 
112975
    case HASH_ATTRIBUTE_ID:
 
112976
    {
 
112977
 
 
112978
attributeData->id = attributeValue;
 
112979
 
 
112980
    break;
 
112981
    }
 
112982
    case HASH_ATTRIBUTE_HREF:
 
112983
    {
 
112984
bool failed;
 
112985
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
112986
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
112987
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
112988
        HASH_ELEMENT_LAMBDA,
 
112989
        HASH_ATTRIBUTE_HREF,
 
112990
        attributeValue))
 
112991
{
 
112992
    return false;
 
112993
}
 
112994
if ( !failed )
 
112995
    attributeData->present_attributes |= lambda__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
112996
 
 
112997
    break;
 
112998
    }
 
112999
    default:
 
113000
    {
 
113001
        if ( !attributeData->unknownAttributes.data )
 
113002
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
113003
        else
 
113004
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
113005
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
113006
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
113007
        attributeData->unknownAttributes.size += 2;
 
113008
 
 
113009
    }
 
113010
    }
 
113011
    }
 
113012
}
 
113013
if ((attributeData->present_attributes & lambda__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
113014
{
 
113015
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
113016
}
 
113017
if ((attributeData->present_attributes & lambda__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
113018
{
 
113019
    attributeData->href = COLLADABU::URI("");
 
113020
}
 
113021
 
 
113022
 
 
113023
    return true;
 
113024
}
 
113025
 
 
113026
//---------------------------------------------------------------------
 
113027
bool ColladaParserAutoGen15Private::_preEnd__lambda()
 
113028
{
 
113029
#ifdef GENERATEDSAXPARSER_VALIDATION
 
113030
    if ( mValidate )
 
113031
    {
 
113032
 
 
113033
        bool validationResult = _validateEnd__lambda();
 
113034
        if ( !validationResult ) return false;
 
113035
 
 
113036
    } // validation
 
113037
#endif
 
113038
 
 
113039
    return true;
 
113040
}
 
113041
 
 
113042
//---------------------------------------------------------------------
 
113043
bool ColladaParserAutoGen15Private::_freeAttributes__lambda( void* attributeData )
 
113044
{
 
113045
    lambda__AttributeData* typedAttributeData = static_cast<lambda__AttributeData*>(attributeData);
 
113046
    if (typedAttributeData->_class.data)
 
113047
    {
 
113048
        mStackMemoryManager.deleteObject();
 
113049
    }
 
113050
 
 
113051
    if (typedAttributeData->unknownAttributes.data)
 
113052
    {
 
113053
        mStackMemoryManager.deleteObject();
 
113054
    }
 
113055
 
 
113056
 
 
113057
    typedAttributeData->~lambda__AttributeData();
 
113058
 
 
113059
    return true;
 
113060
}
 
113061
 
 
113062
//---------------------------------------------------------------------
 
113063
const piecewise__AttributeData piecewise__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
113064
 
 
113065
//---------------------------------------------------------------------
 
113066
bool ColladaParserAutoGen15Private::_data__piecewise( const ParserChar* text, size_t textLength )
 
113067
{
 
113068
    return true;
 
113069
}
 
113070
 
 
113071
//---------------------------------------------------------------------
 
113072
bool ColladaParserAutoGen15Private::_preBegin__piecewise( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
113073
{
 
113074
#ifdef GENERATEDSAXPARSER_VALIDATION
 
113075
    if ( mValidate )
 
113076
    {
 
113077
 
 
113078
        bool validationResult = _validateBegin__piecewise( attributes, attributeDataPtr, validationDataPtr );
 
113079
        if ( !validationResult ) return false;
 
113080
 
 
113081
    } // validation
 
113082
#endif
 
113083
 
 
113084
piecewise__AttributeData* attributeData = newData<piecewise__AttributeData>(attributeDataPtr);
 
113085
 
 
113086
const ParserChar** attributeArray = attributes.attributes;
 
113087
if ( attributeArray )
 
113088
{
 
113089
    while (true)
 
113090
    {
 
113091
        const ParserChar * attribute = *attributeArray;
 
113092
        if ( !attribute )
 
113093
            break;
 
113094
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
113095
        attributeArray++;
 
113096
        if ( !attributeArray )
 
113097
            return false;
 
113098
        const ParserChar* attributeValue = *attributeArray;
 
113099
        attributeArray++;
 
113100
 
 
113101
 
 
113102
    switch ( hash )
 
113103
    {
 
113104
    case HASH_ATTRIBUTE_CLASS:
 
113105
    {
 
113106
bool failed;
 
113107
#ifdef GENERATEDSAXPARSER_VALIDATION
 
113108
    if ( mValidate )
 
113109
    {
 
113110
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_PIECEWISE, HASH_ATTRIBUTE_CLASS);
 
113111
    }
 
113112
    else
 
113113
    {
 
113114
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
113115
    }
 
113116
#else
 
113117
    {
 
113118
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
113119
    } // validation
 
113120
#endif
 
113121
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
113122
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
113123
        HASH_ELEMENT_PIECEWISE,
 
113124
        HASH_ATTRIBUTE_CLASS,
 
113125
        attributeValue))
 
113126
{
 
113127
    return false;
 
113128
}
 
113129
#ifdef GENERATEDSAXPARSER_VALIDATION
 
113130
    if ( mValidate )
 
113131
    {
 
113132
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
113133
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
113134
    {
 
113135
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
113136
            simpleTypeValidationResult,
 
113137
            HASH_ELEMENT_PIECEWISE,
 
113138
            HASH_ATTRIBUTE_CLASS,
 
113139
            attributeValue) )
 
113140
        {
 
113141
            return false;
 
113142
        }
 
113143
    }
 
113144
    } // validation
 
113145
#endif
 
113146
 
 
113147
if ( !failed )
 
113148
    attributeData->present_attributes |= piecewise__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
113149
 
 
113150
    break;
 
113151
    }
 
113152
    case HASH_ATTRIBUTE_STYLE:
 
113153
    {
 
113154
 
 
113155
attributeData->style = attributeValue;
 
113156
 
 
113157
    break;
 
113158
    }
 
113159
    case HASH_ATTRIBUTE_XREF:
 
113160
    {
 
113161
 
 
113162
attributeData->xref = attributeValue;
 
113163
 
 
113164
    break;
 
113165
    }
 
113166
    case HASH_ATTRIBUTE_ID:
 
113167
    {
 
113168
 
 
113169
attributeData->id = attributeValue;
 
113170
 
 
113171
    break;
 
113172
    }
 
113173
    case HASH_ATTRIBUTE_HREF:
 
113174
    {
 
113175
bool failed;
 
113176
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
113177
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
113178
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
113179
        HASH_ELEMENT_PIECEWISE,
 
113180
        HASH_ATTRIBUTE_HREF,
 
113181
        attributeValue))
 
113182
{
 
113183
    return false;
 
113184
}
 
113185
if ( !failed )
 
113186
    attributeData->present_attributes |= piecewise__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
113187
 
 
113188
    break;
 
113189
    }
 
113190
    default:
 
113191
    {
 
113192
        if ( !attributeData->unknownAttributes.data )
 
113193
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
113194
        else
 
113195
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
113196
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
113197
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
113198
        attributeData->unknownAttributes.size += 2;
 
113199
 
 
113200
    }
 
113201
    }
 
113202
    }
 
113203
}
 
113204
if ((attributeData->present_attributes & piecewise__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
113205
{
 
113206
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
113207
}
 
113208
if ((attributeData->present_attributes & piecewise__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
113209
{
 
113210
    attributeData->href = COLLADABU::URI("");
 
113211
}
 
113212
 
 
113213
 
 
113214
    return true;
 
113215
}
 
113216
 
 
113217
//---------------------------------------------------------------------
 
113218
bool ColladaParserAutoGen15Private::_preEnd__piecewise()
 
113219
{
 
113220
#ifdef GENERATEDSAXPARSER_VALIDATION
 
113221
    if ( mValidate )
 
113222
    {
 
113223
 
 
113224
        bool validationResult = _validateEnd__piecewise();
 
113225
        if ( !validationResult ) return false;
 
113226
 
 
113227
    } // validation
 
113228
#endif
 
113229
 
 
113230
    return true;
 
113231
}
 
113232
 
 
113233
//---------------------------------------------------------------------
 
113234
bool ColladaParserAutoGen15Private::_freeAttributes__piecewise( void* attributeData )
 
113235
{
 
113236
    piecewise__AttributeData* typedAttributeData = static_cast<piecewise__AttributeData*>(attributeData);
 
113237
    if (typedAttributeData->_class.data)
 
113238
    {
 
113239
        mStackMemoryManager.deleteObject();
 
113240
    }
 
113241
 
 
113242
    if (typedAttributeData->unknownAttributes.data)
 
113243
    {
 
113244
        mStackMemoryManager.deleteObject();
 
113245
    }
 
113246
 
 
113247
 
 
113248
    typedAttributeData->~piecewise__AttributeData();
 
113249
 
 
113250
    return true;
 
113251
}
 
113252
 
 
113253
//---------------------------------------------------------------------
 
113254
bool ColladaParserAutoGen15Private::_data__piece( const ParserChar* text, size_t textLength )
 
113255
{
 
113256
    return true;
 
113257
}
 
113258
 
 
113259
//---------------------------------------------------------------------
 
113260
bool ColladaParserAutoGen15Private::_preBegin__piece( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
113261
{
 
113262
#ifdef GENERATEDSAXPARSER_VALIDATION
 
113263
    if ( mValidate )
 
113264
    {
 
113265
 
 
113266
        bool validationResult = _validateBegin__piece( attributes, attributeDataPtr, validationDataPtr );
 
113267
        if ( !validationResult ) return false;
 
113268
 
 
113269
    } // validation
 
113270
#endif
 
113271
 
 
113272
    return true;
 
113273
}
 
113274
 
 
113275
//---------------------------------------------------------------------
 
113276
bool ColladaParserAutoGen15Private::_preEnd__piece()
 
113277
{
 
113278
#ifdef GENERATEDSAXPARSER_VALIDATION
 
113279
    if ( mValidate )
 
113280
    {
 
113281
 
 
113282
        bool validationResult = _validateEnd__piece();
 
113283
        if ( !validationResult ) return false;
 
113284
 
 
113285
    } // validation
 
113286
#endif
 
113287
 
 
113288
    return true;
 
113289
}
 
113290
 
 
113291
//---------------------------------------------------------------------
 
113292
bool ColladaParserAutoGen15Private::_freeAttributes__piece( void* attributeData )
 
113293
{
 
113294
    return true;
 
113295
}
 
113296
 
 
113297
//---------------------------------------------------------------------
 
113298
const bvar__AttributeData bvar__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
113299
 
 
113300
//---------------------------------------------------------------------
 
113301
bool ColladaParserAutoGen15Private::_data__bvar( const ParserChar* text, size_t textLength )
 
113302
{
 
113303
    return true;
 
113304
}
 
113305
 
 
113306
//---------------------------------------------------------------------
 
113307
bool ColladaParserAutoGen15Private::_preBegin__bvar( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
113308
{
 
113309
#ifdef GENERATEDSAXPARSER_VALIDATION
 
113310
    if ( mValidate )
 
113311
    {
 
113312
 
 
113313
        bool validationResult = _validateBegin__bvar( attributes, attributeDataPtr, validationDataPtr );
 
113314
        if ( !validationResult ) return false;
 
113315
 
 
113316
    } // validation
 
113317
#endif
 
113318
 
 
113319
bvar__AttributeData* attributeData = newData<bvar__AttributeData>(attributeDataPtr);
 
113320
 
 
113321
const ParserChar** attributeArray = attributes.attributes;
 
113322
if ( attributeArray )
 
113323
{
 
113324
    while (true)
 
113325
    {
 
113326
        const ParserChar * attribute = *attributeArray;
 
113327
        if ( !attribute )
 
113328
            break;
 
113329
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
113330
        attributeArray++;
 
113331
        if ( !attributeArray )
 
113332
            return false;
 
113333
        const ParserChar* attributeValue = *attributeArray;
 
113334
        attributeArray++;
 
113335
 
 
113336
 
 
113337
    switch ( hash )
 
113338
    {
 
113339
    case HASH_ATTRIBUTE_CLASS:
 
113340
    {
 
113341
bool failed;
 
113342
#ifdef GENERATEDSAXPARSER_VALIDATION
 
113343
    if ( mValidate )
 
113344
    {
 
113345
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_BVAR, HASH_ATTRIBUTE_CLASS);
 
113346
    }
 
113347
    else
 
113348
    {
 
113349
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
113350
    }
 
113351
#else
 
113352
    {
 
113353
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
113354
    } // validation
 
113355
#endif
 
113356
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
113357
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
113358
        HASH_ELEMENT_BVAR,
 
113359
        HASH_ATTRIBUTE_CLASS,
 
113360
        attributeValue))
 
113361
{
 
113362
    return false;
 
113363
}
 
113364
#ifdef GENERATEDSAXPARSER_VALIDATION
 
113365
    if ( mValidate )
 
113366
    {
 
113367
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
113368
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
113369
    {
 
113370
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
113371
            simpleTypeValidationResult,
 
113372
            HASH_ELEMENT_BVAR,
 
113373
            HASH_ATTRIBUTE_CLASS,
 
113374
            attributeValue) )
 
113375
        {
 
113376
            return false;
 
113377
        }
 
113378
    }
 
113379
    } // validation
 
113380
#endif
 
113381
 
 
113382
if ( !failed )
 
113383
    attributeData->present_attributes |= bvar__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
113384
 
 
113385
    break;
 
113386
    }
 
113387
    case HASH_ATTRIBUTE_STYLE:
 
113388
    {
 
113389
 
 
113390
attributeData->style = attributeValue;
 
113391
 
 
113392
    break;
 
113393
    }
 
113394
    case HASH_ATTRIBUTE_XREF:
 
113395
    {
 
113396
 
 
113397
attributeData->xref = attributeValue;
 
113398
 
 
113399
    break;
 
113400
    }
 
113401
    case HASH_ATTRIBUTE_ID:
 
113402
    {
 
113403
 
 
113404
attributeData->id = attributeValue;
 
113405
 
 
113406
    break;
 
113407
    }
 
113408
    case HASH_ATTRIBUTE_HREF:
 
113409
    {
 
113410
bool failed;
 
113411
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
113412
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
113413
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
113414
        HASH_ELEMENT_BVAR,
 
113415
        HASH_ATTRIBUTE_HREF,
 
113416
        attributeValue))
 
113417
{
 
113418
    return false;
 
113419
}
 
113420
if ( !failed )
 
113421
    attributeData->present_attributes |= bvar__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
113422
 
 
113423
    break;
 
113424
    }
 
113425
    default:
 
113426
    {
 
113427
        if ( !attributeData->unknownAttributes.data )
 
113428
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
113429
        else
 
113430
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
113431
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
113432
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
113433
        attributeData->unknownAttributes.size += 2;
 
113434
 
 
113435
    }
 
113436
    }
 
113437
    }
 
113438
}
 
113439
if ((attributeData->present_attributes & bvar__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
113440
{
 
113441
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
113442
}
 
113443
if ((attributeData->present_attributes & bvar__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
113444
{
 
113445
    attributeData->href = COLLADABU::URI("");
 
113446
}
 
113447
 
 
113448
 
 
113449
    return true;
 
113450
}
 
113451
 
 
113452
//---------------------------------------------------------------------
 
113453
bool ColladaParserAutoGen15Private::_preEnd__bvar()
 
113454
{
 
113455
#ifdef GENERATEDSAXPARSER_VALIDATION
 
113456
    if ( mValidate )
 
113457
    {
 
113458
 
 
113459
        bool validationResult = _validateEnd__bvar();
 
113460
        if ( !validationResult ) return false;
 
113461
 
 
113462
    } // validation
 
113463
#endif
 
113464
 
 
113465
    return true;
 
113466
}
 
113467
 
 
113468
//---------------------------------------------------------------------
 
113469
bool ColladaParserAutoGen15Private::_freeAttributes__bvar( void* attributeData )
 
113470
{
 
113471
    bvar__AttributeData* typedAttributeData = static_cast<bvar__AttributeData*>(attributeData);
 
113472
    if (typedAttributeData->_class.data)
 
113473
    {
 
113474
        mStackMemoryManager.deleteObject();
 
113475
    }
 
113476
 
 
113477
    if (typedAttributeData->unknownAttributes.data)
 
113478
    {
 
113479
        mStackMemoryManager.deleteObject();
 
113480
    }
 
113481
 
 
113482
 
 
113483
    typedAttributeData->~bvar__AttributeData();
 
113484
 
 
113485
    return true;
 
113486
}
 
113487
 
 
113488
//---------------------------------------------------------------------
 
113489
const degree__AttributeData degree__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
113490
 
 
113491
//---------------------------------------------------------------------
 
113492
bool ColladaParserAutoGen15Private::_data__degree( const ParserChar* text, size_t textLength )
 
113493
{
 
113494
    return true;
 
113495
}
 
113496
 
 
113497
//---------------------------------------------------------------------
 
113498
bool ColladaParserAutoGen15Private::_preBegin__degree( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
113499
{
 
113500
#ifdef GENERATEDSAXPARSER_VALIDATION
 
113501
    if ( mValidate )
 
113502
    {
 
113503
 
 
113504
        bool validationResult = _validateBegin__degree( attributes, attributeDataPtr, validationDataPtr );
 
113505
        if ( !validationResult ) return false;
 
113506
 
 
113507
    } // validation
 
113508
#endif
 
113509
 
 
113510
degree__AttributeData* attributeData = newData<degree__AttributeData>(attributeDataPtr);
 
113511
 
 
113512
const ParserChar** attributeArray = attributes.attributes;
 
113513
if ( attributeArray )
 
113514
{
 
113515
    while (true)
 
113516
    {
 
113517
        const ParserChar * attribute = *attributeArray;
 
113518
        if ( !attribute )
 
113519
            break;
 
113520
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
113521
        attributeArray++;
 
113522
        if ( !attributeArray )
 
113523
            return false;
 
113524
        const ParserChar* attributeValue = *attributeArray;
 
113525
        attributeArray++;
 
113526
 
 
113527
 
 
113528
    switch ( hash )
 
113529
    {
 
113530
    case HASH_ATTRIBUTE_CLASS:
 
113531
    {
 
113532
bool failed;
 
113533
#ifdef GENERATEDSAXPARSER_VALIDATION
 
113534
    if ( mValidate )
 
113535
    {
 
113536
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_DEGREE, HASH_ATTRIBUTE_CLASS);
 
113537
    }
 
113538
    else
 
113539
    {
 
113540
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
113541
    }
 
113542
#else
 
113543
    {
 
113544
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
113545
    } // validation
 
113546
#endif
 
113547
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
113548
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
113549
        HASH_ELEMENT_DEGREE,
 
113550
        HASH_ATTRIBUTE_CLASS,
 
113551
        attributeValue))
 
113552
{
 
113553
    return false;
 
113554
}
 
113555
#ifdef GENERATEDSAXPARSER_VALIDATION
 
113556
    if ( mValidate )
 
113557
    {
 
113558
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
113559
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
113560
    {
 
113561
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
113562
            simpleTypeValidationResult,
 
113563
            HASH_ELEMENT_DEGREE,
 
113564
            HASH_ATTRIBUTE_CLASS,
 
113565
            attributeValue) )
 
113566
        {
 
113567
            return false;
 
113568
        }
 
113569
    }
 
113570
    } // validation
 
113571
#endif
 
113572
 
 
113573
if ( !failed )
 
113574
    attributeData->present_attributes |= degree__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
113575
 
 
113576
    break;
 
113577
    }
 
113578
    case HASH_ATTRIBUTE_STYLE:
 
113579
    {
 
113580
 
 
113581
attributeData->style = attributeValue;
 
113582
 
 
113583
    break;
 
113584
    }
 
113585
    case HASH_ATTRIBUTE_XREF:
 
113586
    {
 
113587
 
 
113588
attributeData->xref = attributeValue;
 
113589
 
 
113590
    break;
 
113591
    }
 
113592
    case HASH_ATTRIBUTE_ID:
 
113593
    {
 
113594
 
 
113595
attributeData->id = attributeValue;
 
113596
 
 
113597
    break;
 
113598
    }
 
113599
    case HASH_ATTRIBUTE_HREF:
 
113600
    {
 
113601
bool failed;
 
113602
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
113603
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
113604
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
113605
        HASH_ELEMENT_DEGREE,
 
113606
        HASH_ATTRIBUTE_HREF,
 
113607
        attributeValue))
 
113608
{
 
113609
    return false;
 
113610
}
 
113611
if ( !failed )
 
113612
    attributeData->present_attributes |= degree__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
113613
 
 
113614
    break;
 
113615
    }
 
113616
    default:
 
113617
    {
 
113618
        if ( !attributeData->unknownAttributes.data )
 
113619
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
113620
        else
 
113621
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
113622
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
113623
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
113624
        attributeData->unknownAttributes.size += 2;
 
113625
 
 
113626
    }
 
113627
    }
 
113628
    }
 
113629
}
 
113630
if ((attributeData->present_attributes & degree__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
113631
{
 
113632
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
113633
}
 
113634
if ((attributeData->present_attributes & degree__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
113635
{
 
113636
    attributeData->href = COLLADABU::URI("");
 
113637
}
 
113638
 
 
113639
 
 
113640
    return true;
 
113641
}
 
113642
 
 
113643
//---------------------------------------------------------------------
 
113644
bool ColladaParserAutoGen15Private::_preEnd__degree()
 
113645
{
 
113646
#ifdef GENERATEDSAXPARSER_VALIDATION
 
113647
    if ( mValidate )
 
113648
    {
 
113649
 
 
113650
        bool validationResult = _validateEnd__degree();
 
113651
        if ( !validationResult ) return false;
 
113652
 
 
113653
    } // validation
 
113654
#endif
 
113655
 
 
113656
    return true;
 
113657
}
 
113658
 
 
113659
//---------------------------------------------------------------------
 
113660
bool ColladaParserAutoGen15Private::_freeAttributes__degree( void* attributeData )
 
113661
{
 
113662
    degree__AttributeData* typedAttributeData = static_cast<degree__AttributeData*>(attributeData);
 
113663
    if (typedAttributeData->_class.data)
 
113664
    {
 
113665
        mStackMemoryManager.deleteObject();
 
113666
    }
 
113667
 
 
113668
    if (typedAttributeData->unknownAttributes.data)
 
113669
    {
 
113670
        mStackMemoryManager.deleteObject();
 
113671
    }
 
113672
 
 
113673
 
 
113674
    typedAttributeData->~degree__AttributeData();
 
113675
 
 
113676
    return true;
 
113677
}
 
113678
 
 
113679
//---------------------------------------------------------------------
 
113680
const semantics__AttributeData semantics__AttributeData::DEFAULT = {0, 0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
113681
 
 
113682
//---------------------------------------------------------------------
 
113683
bool ColladaParserAutoGen15Private::_data__semantics( const ParserChar* text, size_t textLength )
 
113684
{
 
113685
    return true;
 
113686
}
 
113687
 
 
113688
//---------------------------------------------------------------------
 
113689
bool ColladaParserAutoGen15Private::_preBegin__semantics( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
113690
{
 
113691
#ifdef GENERATEDSAXPARSER_VALIDATION
 
113692
    if ( mValidate )
 
113693
    {
 
113694
 
 
113695
        bool validationResult = _validateBegin__semantics( attributes, attributeDataPtr, validationDataPtr );
 
113696
        if ( !validationResult ) return false;
 
113697
 
 
113698
    } // validation
 
113699
#endif
 
113700
 
 
113701
semantics__AttributeData* attributeData = newData<semantics__AttributeData>(attributeDataPtr);
 
113702
 
 
113703
const ParserChar** attributeArray = attributes.attributes;
 
113704
if ( attributeArray )
 
113705
{
 
113706
    while (true)
 
113707
    {
 
113708
        const ParserChar * attribute = *attributeArray;
 
113709
        if ( !attribute )
 
113710
            break;
 
113711
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
113712
        attributeArray++;
 
113713
        if ( !attributeArray )
 
113714
            return false;
 
113715
        const ParserChar* attributeValue = *attributeArray;
 
113716
        attributeArray++;
 
113717
 
 
113718
 
 
113719
    switch ( hash )
 
113720
    {
 
113721
    case HASH_ATTRIBUTE_ENCODING:
 
113722
    {
 
113723
 
 
113724
attributeData->encoding = attributeValue;
 
113725
 
 
113726
    break;
 
113727
    }
 
113728
    case HASH_ATTRIBUTE_DEFINITIONURL:
 
113729
    {
 
113730
bool failed;
 
113731
attributeData->definitionURL = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
113732
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
113733
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
113734
        HASH_ELEMENT_SEMANTICS,
 
113735
        HASH_ATTRIBUTE_DEFINITIONURL,
 
113736
        attributeValue))
 
113737
{
 
113738
    return false;
 
113739
}
 
113740
if ( !failed )
 
113741
    attributeData->present_attributes |= semantics__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT;
 
113742
 
 
113743
    break;
 
113744
    }
 
113745
    case HASH_ATTRIBUTE_CLASS:
 
113746
    {
 
113747
bool failed;
 
113748
#ifdef GENERATEDSAXPARSER_VALIDATION
 
113749
    if ( mValidate )
 
113750
    {
 
113751
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_SEMANTICS, HASH_ATTRIBUTE_CLASS);
 
113752
    }
 
113753
    else
 
113754
    {
 
113755
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
113756
    }
 
113757
#else
 
113758
    {
 
113759
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
113760
    } // validation
 
113761
#endif
 
113762
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
113763
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
113764
        HASH_ELEMENT_SEMANTICS,
 
113765
        HASH_ATTRIBUTE_CLASS,
 
113766
        attributeValue))
 
113767
{
 
113768
    return false;
 
113769
}
 
113770
#ifdef GENERATEDSAXPARSER_VALIDATION
 
113771
    if ( mValidate )
 
113772
    {
 
113773
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
113774
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
113775
    {
 
113776
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
113777
            simpleTypeValidationResult,
 
113778
            HASH_ELEMENT_SEMANTICS,
 
113779
            HASH_ATTRIBUTE_CLASS,
 
113780
            attributeValue) )
 
113781
        {
 
113782
            return false;
 
113783
        }
 
113784
    }
 
113785
    } // validation
 
113786
#endif
 
113787
 
 
113788
if ( !failed )
 
113789
    attributeData->present_attributes |= semantics__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
113790
 
 
113791
    break;
 
113792
    }
 
113793
    case HASH_ATTRIBUTE_STYLE:
 
113794
    {
 
113795
 
 
113796
attributeData->style = attributeValue;
 
113797
 
 
113798
    break;
 
113799
    }
 
113800
    case HASH_ATTRIBUTE_XREF:
 
113801
    {
 
113802
 
 
113803
attributeData->xref = attributeValue;
 
113804
 
 
113805
    break;
 
113806
    }
 
113807
    case HASH_ATTRIBUTE_ID:
 
113808
    {
 
113809
 
 
113810
attributeData->id = attributeValue;
 
113811
 
 
113812
    break;
 
113813
    }
 
113814
    case HASH_ATTRIBUTE_HREF:
 
113815
    {
 
113816
bool failed;
 
113817
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
113818
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
113819
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
113820
        HASH_ELEMENT_SEMANTICS,
 
113821
        HASH_ATTRIBUTE_HREF,
 
113822
        attributeValue))
 
113823
{
 
113824
    return false;
 
113825
}
 
113826
if ( !failed )
 
113827
    attributeData->present_attributes |= semantics__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
113828
 
 
113829
    break;
 
113830
    }
 
113831
    default:
 
113832
    {
 
113833
        if ( !attributeData->unknownAttributes.data )
 
113834
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
113835
        else
 
113836
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
113837
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
113838
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
113839
        attributeData->unknownAttributes.size += 2;
 
113840
 
 
113841
    }
 
113842
    }
 
113843
    }
 
113844
}
 
113845
if ((attributeData->present_attributes & semantics__AttributeData::ATTRIBUTE_DEFINITIONURL_PRESENT) == 0)
 
113846
{
 
113847
    attributeData->definitionURL = COLLADABU::URI("");
 
113848
}
 
113849
if ((attributeData->present_attributes & semantics__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
113850
{
 
113851
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
113852
}
 
113853
if ((attributeData->present_attributes & semantics__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
113854
{
 
113855
    attributeData->href = COLLADABU::URI("");
 
113856
}
 
113857
 
 
113858
 
 
113859
    return true;
 
113860
}
 
113861
 
 
113862
//---------------------------------------------------------------------
 
113863
bool ColladaParserAutoGen15Private::_preEnd__semantics()
 
113864
{
 
113865
#ifdef GENERATEDSAXPARSER_VALIDATION
 
113866
    if ( mValidate )
 
113867
    {
 
113868
 
 
113869
        bool validationResult = _validateEnd__semantics();
 
113870
        if ( !validationResult ) return false;
 
113871
 
 
113872
    } // validation
 
113873
#endif
 
113874
 
 
113875
    return true;
 
113876
}
 
113877
 
 
113878
//---------------------------------------------------------------------
 
113879
bool ColladaParserAutoGen15Private::_freeAttributes__semantics( void* attributeData )
 
113880
{
 
113881
    semantics__AttributeData* typedAttributeData = static_cast<semantics__AttributeData*>(attributeData);
 
113882
    if (typedAttributeData->_class.data)
 
113883
    {
 
113884
        mStackMemoryManager.deleteObject();
 
113885
    }
 
113886
 
 
113887
    if (typedAttributeData->unknownAttributes.data)
 
113888
    {
 
113889
        mStackMemoryManager.deleteObject();
 
113890
    }
 
113891
 
 
113892
 
 
113893
    typedAttributeData->~semantics__AttributeData();
 
113894
 
 
113895
    return true;
 
113896
}
 
113897
 
 
113898
//---------------------------------------------------------------------
 
113899
const annotation__AttributeData annotation__AttributeData::DEFAULT = {0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
113900
 
 
113901
//---------------------------------------------------------------------
 
113902
bool ColladaParserAutoGen15Private::_data__annotation( const ParserChar* text, size_t textLength )
 
113903
{
 
113904
 
 
113905
return mImpl->data__annotation(text, textLength);
 
113906
}
 
113907
 
 
113908
//---------------------------------------------------------------------
 
113909
bool ColladaParserAutoGen15Private::_preBegin__annotation( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
113910
{
 
113911
#ifdef GENERATEDSAXPARSER_VALIDATION
 
113912
    if ( mValidate )
 
113913
    {
 
113914
 
 
113915
        bool validationResult = _validateBegin__annotation( attributes, attributeDataPtr, validationDataPtr );
 
113916
        if ( !validationResult ) return false;
 
113917
 
 
113918
    } // validation
 
113919
#endif
 
113920
 
 
113921
annotation__AttributeData* attributeData = newData<annotation__AttributeData>(attributeDataPtr);
 
113922
 
 
113923
const ParserChar** attributeArray = attributes.attributes;
 
113924
if ( attributeArray )
 
113925
{
 
113926
    while (true)
 
113927
    {
 
113928
        const ParserChar * attribute = *attributeArray;
 
113929
        if ( !attribute )
 
113930
            break;
 
113931
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
113932
        attributeArray++;
 
113933
        if ( !attributeArray )
 
113934
            return false;
 
113935
        const ParserChar* attributeValue = *attributeArray;
 
113936
        attributeArray++;
 
113937
 
 
113938
 
 
113939
    switch ( hash )
 
113940
    {
 
113941
    case HASH_ATTRIBUTE_ENCODING:
 
113942
    {
 
113943
 
 
113944
attributeData->encoding = attributeValue;
 
113945
 
 
113946
    break;
 
113947
    }
 
113948
    case HASH_ATTRIBUTE_CLASS:
 
113949
    {
 
113950
bool failed;
 
113951
#ifdef GENERATEDSAXPARSER_VALIDATION
 
113952
    if ( mValidate )
 
113953
    {
 
113954
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_ANNOTATION, HASH_ATTRIBUTE_CLASS);
 
113955
    }
 
113956
    else
 
113957
    {
 
113958
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
113959
    }
 
113960
#else
 
113961
    {
 
113962
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
113963
    } // validation
 
113964
#endif
 
113965
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
113966
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
113967
        HASH_ELEMENT_ANNOTATION,
 
113968
        HASH_ATTRIBUTE_CLASS,
 
113969
        attributeValue))
 
113970
{
 
113971
    return false;
 
113972
}
 
113973
#ifdef GENERATEDSAXPARSER_VALIDATION
 
113974
    if ( mValidate )
 
113975
    {
 
113976
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
113977
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
113978
    {
 
113979
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
113980
            simpleTypeValidationResult,
 
113981
            HASH_ELEMENT_ANNOTATION,
 
113982
            HASH_ATTRIBUTE_CLASS,
 
113983
            attributeValue) )
 
113984
        {
 
113985
            return false;
 
113986
        }
 
113987
    }
 
113988
    } // validation
 
113989
#endif
 
113990
 
 
113991
if ( !failed )
 
113992
    attributeData->present_attributes |= annotation__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
113993
 
 
113994
    break;
 
113995
    }
 
113996
    case HASH_ATTRIBUTE_STYLE:
 
113997
    {
 
113998
 
 
113999
attributeData->style = attributeValue;
 
114000
 
 
114001
    break;
 
114002
    }
 
114003
    case HASH_ATTRIBUTE_XREF:
 
114004
    {
 
114005
 
 
114006
attributeData->xref = attributeValue;
 
114007
 
 
114008
    break;
 
114009
    }
 
114010
    case HASH_ATTRIBUTE_ID:
 
114011
    {
 
114012
 
 
114013
attributeData->id = attributeValue;
 
114014
 
 
114015
    break;
 
114016
    }
 
114017
    case HASH_ATTRIBUTE_HREF:
 
114018
    {
 
114019
bool failed;
 
114020
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
114021
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
114022
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
114023
        HASH_ELEMENT_ANNOTATION,
 
114024
        HASH_ATTRIBUTE_HREF,
 
114025
        attributeValue))
 
114026
{
 
114027
    return false;
 
114028
}
 
114029
if ( !failed )
 
114030
    attributeData->present_attributes |= annotation__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
114031
 
 
114032
    break;
 
114033
    }
 
114034
    default:
 
114035
    {
 
114036
        if ( !attributeData->unknownAttributes.data )
 
114037
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
114038
        else
 
114039
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
114040
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
114041
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
114042
        attributeData->unknownAttributes.size += 2;
 
114043
 
 
114044
    }
 
114045
    }
 
114046
    }
 
114047
}
 
114048
if ((attributeData->present_attributes & annotation__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
114049
{
 
114050
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
114051
}
 
114052
if ((attributeData->present_attributes & annotation__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
114053
{
 
114054
    attributeData->href = COLLADABU::URI("");
 
114055
}
 
114056
 
 
114057
 
 
114058
    return true;
 
114059
}
 
114060
 
 
114061
//---------------------------------------------------------------------
 
114062
bool ColladaParserAutoGen15Private::_preEnd__annotation()
 
114063
{
 
114064
#ifdef GENERATEDSAXPARSER_VALIDATION
 
114065
    if ( mValidate )
 
114066
    {
 
114067
 
 
114068
        bool validationResult = _validateEnd__annotation();
 
114069
        if ( !validationResult ) return false;
 
114070
 
 
114071
    } // validation
 
114072
#endif
 
114073
 
 
114074
    return true;
 
114075
}
 
114076
 
 
114077
//---------------------------------------------------------------------
 
114078
bool ColladaParserAutoGen15Private::_freeAttributes__annotation( void* attributeData )
 
114079
{
 
114080
    annotation__AttributeData* typedAttributeData = static_cast<annotation__AttributeData*>(attributeData);
 
114081
    if (typedAttributeData->_class.data)
 
114082
    {
 
114083
        mStackMemoryManager.deleteObject();
 
114084
    }
 
114085
 
 
114086
    if (typedAttributeData->unknownAttributes.data)
 
114087
    {
 
114088
        mStackMemoryManager.deleteObject();
 
114089
    }
 
114090
 
 
114091
 
 
114092
    typedAttributeData->~annotation__AttributeData();
 
114093
 
 
114094
    return true;
 
114095
}
 
114096
 
 
114097
//---------------------------------------------------------------------
 
114098
const annotation_xml__AttributeData annotation_xml__AttributeData::DEFAULT = {0, 0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
114099
 
 
114100
//---------------------------------------------------------------------
 
114101
bool ColladaParserAutoGen15Private::_data__annotation_xml( const ParserChar* text, size_t textLength )
 
114102
{
 
114103
    return true;
 
114104
}
 
114105
 
 
114106
//---------------------------------------------------------------------
 
114107
bool ColladaParserAutoGen15Private::_preBegin__annotation_xml( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
114108
{
 
114109
#ifdef GENERATEDSAXPARSER_VALIDATION
 
114110
    if ( mValidate )
 
114111
    {
 
114112
 
 
114113
        bool validationResult = _validateBegin__annotation_xml( attributes, attributeDataPtr, validationDataPtr );
 
114114
        if ( !validationResult ) return false;
 
114115
 
 
114116
    } // validation
 
114117
#endif
 
114118
 
 
114119
annotation_xml__AttributeData* attributeData = newData<annotation_xml__AttributeData>(attributeDataPtr);
 
114120
 
 
114121
const ParserChar** attributeArray = attributes.attributes;
 
114122
if ( attributeArray )
 
114123
{
 
114124
    while (true)
 
114125
    {
 
114126
        const ParserChar * attribute = *attributeArray;
 
114127
        if ( !attribute )
 
114128
            break;
 
114129
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
114130
        attributeArray++;
 
114131
        if ( !attributeArray )
 
114132
            return false;
 
114133
        const ParserChar* attributeValue = *attributeArray;
 
114134
        attributeArray++;
 
114135
 
 
114136
 
 
114137
    switch ( hash )
 
114138
    {
 
114139
    case HASH_ATTRIBUTE_ENCODING:
 
114140
    {
 
114141
 
 
114142
attributeData->encoding = attributeValue;
 
114143
 
 
114144
    break;
 
114145
    }
 
114146
    case HASH_ATTRIBUTE_CLASS:
 
114147
    {
 
114148
bool failed;
 
114149
#ifdef GENERATEDSAXPARSER_VALIDATION
 
114150
    if ( mValidate )
 
114151
    {
 
114152
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_ANNOTATION_XML, HASH_ATTRIBUTE_CLASS);
 
114153
    }
 
114154
    else
 
114155
    {
 
114156
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
114157
    }
 
114158
#else
 
114159
    {
 
114160
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
114161
    } // validation
 
114162
#endif
 
114163
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
114164
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
114165
        HASH_ELEMENT_ANNOTATION_XML,
 
114166
        HASH_ATTRIBUTE_CLASS,
 
114167
        attributeValue))
 
114168
{
 
114169
    return false;
 
114170
}
 
114171
#ifdef GENERATEDSAXPARSER_VALIDATION
 
114172
    if ( mValidate )
 
114173
    {
 
114174
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
114175
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
114176
    {
 
114177
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
114178
            simpleTypeValidationResult,
 
114179
            HASH_ELEMENT_ANNOTATION_XML,
 
114180
            HASH_ATTRIBUTE_CLASS,
 
114181
            attributeValue) )
 
114182
        {
 
114183
            return false;
 
114184
        }
 
114185
    }
 
114186
    } // validation
 
114187
#endif
 
114188
 
 
114189
if ( !failed )
 
114190
    attributeData->present_attributes |= annotation_xml__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
114191
 
 
114192
    break;
 
114193
    }
 
114194
    case HASH_ATTRIBUTE_STYLE:
 
114195
    {
 
114196
 
 
114197
attributeData->style = attributeValue;
 
114198
 
 
114199
    break;
 
114200
    }
 
114201
    case HASH_ATTRIBUTE_XREF:
 
114202
    {
 
114203
 
 
114204
attributeData->xref = attributeValue;
 
114205
 
 
114206
    break;
 
114207
    }
 
114208
    case HASH_ATTRIBUTE_ID:
 
114209
    {
 
114210
 
 
114211
attributeData->id = attributeValue;
 
114212
 
 
114213
    break;
 
114214
    }
 
114215
    case HASH_ATTRIBUTE_HREF:
 
114216
    {
 
114217
bool failed;
 
114218
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
114219
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
114220
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
114221
        HASH_ELEMENT_ANNOTATION_XML,
 
114222
        HASH_ATTRIBUTE_HREF,
 
114223
        attributeValue))
 
114224
{
 
114225
    return false;
 
114226
}
 
114227
if ( !failed )
 
114228
    attributeData->present_attributes |= annotation_xml__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
114229
 
 
114230
    break;
 
114231
    }
 
114232
    default:
 
114233
    {
 
114234
        if ( !attributeData->unknownAttributes.data )
 
114235
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
114236
        else
 
114237
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
114238
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
114239
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
114240
        attributeData->unknownAttributes.size += 2;
 
114241
 
 
114242
    }
 
114243
    }
 
114244
    }
 
114245
}
 
114246
if ((attributeData->present_attributes & annotation_xml__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
114247
{
 
114248
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
114249
}
 
114250
if ((attributeData->present_attributes & annotation_xml__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
114251
{
 
114252
    attributeData->href = COLLADABU::URI("");
 
114253
}
 
114254
 
 
114255
 
 
114256
    return true;
 
114257
}
 
114258
 
 
114259
//---------------------------------------------------------------------
 
114260
bool ColladaParserAutoGen15Private::_preEnd__annotation_xml()
 
114261
{
 
114262
#ifdef GENERATEDSAXPARSER_VALIDATION
 
114263
    if ( mValidate )
 
114264
    {
 
114265
 
 
114266
        bool validationResult = _validateEnd__annotation_xml();
 
114267
        if ( !validationResult ) return false;
 
114268
 
 
114269
    } // validation
 
114270
#endif
 
114271
 
 
114272
    return true;
 
114273
}
 
114274
 
 
114275
//---------------------------------------------------------------------
 
114276
bool ColladaParserAutoGen15Private::_freeAttributes__annotation_xml( void* attributeData )
 
114277
{
 
114278
    annotation_xml__AttributeData* typedAttributeData = static_cast<annotation_xml__AttributeData*>(attributeData);
 
114279
    if (typedAttributeData->_class.data)
 
114280
    {
 
114281
        mStackMemoryManager.deleteObject();
 
114282
    }
 
114283
 
 
114284
    if (typedAttributeData->unknownAttributes.data)
 
114285
    {
 
114286
        mStackMemoryManager.deleteObject();
 
114287
    }
 
114288
 
 
114289
 
 
114290
    typedAttributeData->~annotation_xml__AttributeData();
 
114291
 
 
114292
    return true;
 
114293
}
 
114294
 
 
114295
//---------------------------------------------------------------------
 
114296
const otherwise__AttributeData otherwise__AttributeData::DEFAULT = {0, GeneratedSaxParser::XSList<ParserString>(), 0, 0, 0, 0, GeneratedSaxParser::XSList<const ParserChar*>()};
 
114297
 
 
114298
//---------------------------------------------------------------------
 
114299
bool ColladaParserAutoGen15Private::_data__otherwise( const ParserChar* text, size_t textLength )
 
114300
{
 
114301
    return true;
 
114302
}
 
114303
 
 
114304
//---------------------------------------------------------------------
 
114305
bool ColladaParserAutoGen15Private::_preBegin__otherwise( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
114306
{
 
114307
#ifdef GENERATEDSAXPARSER_VALIDATION
 
114308
    if ( mValidate )
 
114309
    {
 
114310
 
 
114311
        bool validationResult = _validateBegin__otherwise( attributes, attributeDataPtr, validationDataPtr );
 
114312
        if ( !validationResult ) return false;
 
114313
 
 
114314
    } // validation
 
114315
#endif
 
114316
 
 
114317
otherwise__AttributeData* attributeData = newData<otherwise__AttributeData>(attributeDataPtr);
 
114318
 
 
114319
const ParserChar** attributeArray = attributes.attributes;
 
114320
if ( attributeArray )
 
114321
{
 
114322
    while (true)
 
114323
    {
 
114324
        const ParserChar * attribute = *attributeArray;
 
114325
        if ( !attribute )
 
114326
            break;
 
114327
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
114328
        attributeArray++;
 
114329
        if ( !attributeArray )
 
114330
            return false;
 
114331
        const ParserChar* attributeValue = *attributeArray;
 
114332
        attributeArray++;
 
114333
 
 
114334
 
 
114335
    switch ( hash )
 
114336
    {
 
114337
    case HASH_ATTRIBUTE_CLASS:
 
114338
    {
 
114339
bool failed;
 
114340
#ifdef GENERATEDSAXPARSER_VALIDATION
 
114341
    if ( mValidate )
 
114342
    {
 
114343
failed = !characterData2StringList(attributeValue, attributeData->_class, &validate__NMTOKEN, HASH_ELEMENT_OTHERWISE, HASH_ATTRIBUTE_CLASS);
 
114344
    }
 
114345
    else
 
114346
    {
 
114347
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
114348
    }
 
114349
#else
 
114350
    {
 
114351
failed = !characterData2StringList(attributeValue, attributeData->_class);
 
114352
    } // validation
 
114353
#endif
 
114354
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
114355
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
114356
        HASH_ELEMENT_OTHERWISE,
 
114357
        HASH_ATTRIBUTE_CLASS,
 
114358
        attributeValue))
 
114359
{
 
114360
    return false;
 
114361
}
 
114362
#ifdef GENERATEDSAXPARSER_VALIDATION
 
114363
    if ( mValidate )
 
114364
    {
 
114365
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKENS(attributeData->_class.data, attributeData->_class.size);
 
114366
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
114367
    {
 
114368
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
114369
            simpleTypeValidationResult,
 
114370
            HASH_ELEMENT_OTHERWISE,
 
114371
            HASH_ATTRIBUTE_CLASS,
 
114372
            attributeValue) )
 
114373
        {
 
114374
            return false;
 
114375
        }
 
114376
    }
 
114377
    } // validation
 
114378
#endif
 
114379
 
 
114380
if ( !failed )
 
114381
    attributeData->present_attributes |= otherwise__AttributeData::ATTRIBUTE__CLASS_PRESENT;
 
114382
 
 
114383
    break;
 
114384
    }
 
114385
    case HASH_ATTRIBUTE_STYLE:
 
114386
    {
 
114387
 
 
114388
attributeData->style = attributeValue;
 
114389
 
 
114390
    break;
 
114391
    }
 
114392
    case HASH_ATTRIBUTE_XREF:
 
114393
    {
 
114394
 
 
114395
attributeData->xref = attributeValue;
 
114396
 
 
114397
    break;
 
114398
    }
 
114399
    case HASH_ATTRIBUTE_ID:
 
114400
    {
 
114401
 
 
114402
attributeData->id = attributeValue;
 
114403
 
 
114404
    break;
 
114405
    }
 
114406
    case HASH_ATTRIBUTE_HREF:
 
114407
    {
 
114408
bool failed;
 
114409
attributeData->href = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
114410
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
114411
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
114412
        HASH_ELEMENT_OTHERWISE,
 
114413
        HASH_ATTRIBUTE_HREF,
 
114414
        attributeValue))
 
114415
{
 
114416
    return false;
 
114417
}
 
114418
if ( !failed )
 
114419
    attributeData->present_attributes |= otherwise__AttributeData::ATTRIBUTE_HREF_PRESENT;
 
114420
 
 
114421
    break;
 
114422
    }
 
114423
    default:
 
114424
    {
 
114425
        if ( !attributeData->unknownAttributes.data )
 
114426
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.newObject( 2 * sizeof( const ParserChar* ) );
 
114427
        else
 
114428
            attributeData->unknownAttributes.data = (const ParserChar**)mStackMemoryManager.growObject( 2 * sizeof( const ParserChar* ) );
 
114429
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size ] = attribute;
 
114430
        attributeData->unknownAttributes.data[ attributeData->unknownAttributes.size+1 ] = attributeValue;
 
114431
        attributeData->unknownAttributes.size += 2;
 
114432
 
 
114433
    }
 
114434
    }
 
114435
    }
 
114436
}
 
114437
if ((attributeData->present_attributes & otherwise__AttributeData::ATTRIBUTE__CLASS_PRESENT) == 0)
 
114438
{
 
114439
    attributeData->_class = GeneratedSaxParser::XSList<ParserString>();
 
114440
}
 
114441
if ((attributeData->present_attributes & otherwise__AttributeData::ATTRIBUTE_HREF_PRESENT) == 0)
 
114442
{
 
114443
    attributeData->href = COLLADABU::URI("");
 
114444
}
 
114445
 
 
114446
 
 
114447
    return true;
 
114448
}
 
114449
 
 
114450
//---------------------------------------------------------------------
 
114451
bool ColladaParserAutoGen15Private::_preEnd__otherwise()
 
114452
{
 
114453
#ifdef GENERATEDSAXPARSER_VALIDATION
 
114454
    if ( mValidate )
 
114455
    {
 
114456
 
 
114457
        bool validationResult = _validateEnd__otherwise();
 
114458
        if ( !validationResult ) return false;
 
114459
 
 
114460
    } // validation
 
114461
#endif
 
114462
 
 
114463
    return true;
 
114464
}
 
114465
 
 
114466
//---------------------------------------------------------------------
 
114467
bool ColladaParserAutoGen15Private::_freeAttributes__otherwise( void* attributeData )
 
114468
{
 
114469
    otherwise__AttributeData* typedAttributeData = static_cast<otherwise__AttributeData*>(attributeData);
 
114470
    if (typedAttributeData->_class.data)
 
114471
    {
 
114472
        mStackMemoryManager.deleteObject();
 
114473
    }
 
114474
 
 
114475
    if (typedAttributeData->unknownAttributes.data)
 
114476
    {
 
114477
        mStackMemoryManager.deleteObject();
 
114478
    }
 
114479
 
 
114480
 
 
114481
    typedAttributeData->~otherwise__AttributeData();
 
114482
 
 
114483
    return true;
 
114484
}
 
114485
 
 
114486
//---------------------------------------------------------------------
 
114487
bool ColladaParserAutoGen15Private::_data__sep( const ParserChar* text, size_t textLength )
 
114488
{
 
114489
    return true;
 
114490
}
 
114491
 
 
114492
//---------------------------------------------------------------------
 
114493
bool ColladaParserAutoGen15Private::_preBegin__sep( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
114494
{
 
114495
#ifdef GENERATEDSAXPARSER_VALIDATION
 
114496
    if ( mValidate )
 
114497
    {
 
114498
 
 
114499
        bool validationResult = _validateBegin__sep( attributes, attributeDataPtr, validationDataPtr );
 
114500
        if ( !validationResult ) return false;
 
114501
 
 
114502
    } // validation
 
114503
#endif
 
114504
 
 
114505
    return true;
 
114506
}
 
114507
 
 
114508
//---------------------------------------------------------------------
 
114509
bool ColladaParserAutoGen15Private::_preEnd__sep()
 
114510
{
 
114511
#ifdef GENERATEDSAXPARSER_VALIDATION
 
114512
    if ( mValidate )
 
114513
    {
 
114514
 
 
114515
        bool validationResult = _validateEnd__sep();
 
114516
        if ( !validationResult ) return false;
 
114517
 
 
114518
    } // validation
 
114519
#endif
 
114520
 
 
114521
    return true;
 
114522
}
 
114523
 
 
114524
//---------------------------------------------------------------------
 
114525
bool ColladaParserAutoGen15Private::_freeAttributes__sep( void* attributeData )
 
114526
{
 
114527
    return true;
 
114528
}
 
114529
 
 
114530
//---------------------------------------------------------------------
 
114531
const library_articulated_systems__AttributeData library_articulated_systems__AttributeData::DEFAULT = {0, 0};
 
114532
 
 
114533
//---------------------------------------------------------------------
 
114534
bool ColladaParserAutoGen15Private::_data__library_articulated_systems( const ParserChar* text, size_t textLength )
 
114535
{
 
114536
    return true;
 
114537
}
 
114538
 
 
114539
//---------------------------------------------------------------------
 
114540
bool ColladaParserAutoGen15Private::_preBegin__library_articulated_systems( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
114541
{
 
114542
#ifdef GENERATEDSAXPARSER_VALIDATION
 
114543
    if ( mValidate )
 
114544
    {
 
114545
 
 
114546
        bool validationResult = _validateBegin__library_articulated_systems( attributes, attributeDataPtr, validationDataPtr );
 
114547
        if ( !validationResult ) return false;
 
114548
 
 
114549
    } // validation
 
114550
#endif
 
114551
 
 
114552
library_articulated_systems__AttributeData* attributeData = newData<library_articulated_systems__AttributeData>(attributeDataPtr);
 
114553
 
 
114554
const ParserChar** attributeArray = attributes.attributes;
 
114555
if ( attributeArray )
 
114556
{
 
114557
    while (true)
 
114558
    {
 
114559
        const ParserChar * attribute = *attributeArray;
 
114560
        if ( !attribute )
 
114561
            break;
 
114562
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
114563
        attributeArray++;
 
114564
        if ( !attributeArray )
 
114565
            return false;
 
114566
        const ParserChar* attributeValue = *attributeArray;
 
114567
        attributeArray++;
 
114568
 
 
114569
 
 
114570
    switch ( hash )
 
114571
    {
 
114572
    case HASH_ATTRIBUTE_ID:
 
114573
    {
 
114574
 
 
114575
attributeData->id = attributeValue;
 
114576
 
 
114577
    break;
 
114578
    }
 
114579
    case HASH_ATTRIBUTE_NAME:
 
114580
    {
 
114581
 
 
114582
attributeData->name = attributeValue;
 
114583
 
 
114584
    break;
 
114585
    }
 
114586
    default:
 
114587
    {
 
114588
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIBRARY_ARTICULATED_SYSTEMS, attribute, attributeValue))
 
114589
            {return false;}
 
114590
    }
 
114591
    }
 
114592
    }
 
114593
}
 
114594
 
 
114595
 
 
114596
    return true;
 
114597
}
 
114598
 
 
114599
//---------------------------------------------------------------------
 
114600
bool ColladaParserAutoGen15Private::_preEnd__library_articulated_systems()
 
114601
{
 
114602
#ifdef GENERATEDSAXPARSER_VALIDATION
 
114603
    if ( mValidate )
 
114604
    {
 
114605
 
 
114606
        bool validationResult = _validateEnd__library_articulated_systems();
 
114607
        if ( !validationResult ) return false;
 
114608
 
 
114609
    } // validation
 
114610
#endif
 
114611
 
 
114612
    return true;
 
114613
}
 
114614
 
 
114615
//---------------------------------------------------------------------
 
114616
bool ColladaParserAutoGen15Private::_freeAttributes__library_articulated_systems( void* attributeData )
 
114617
{
 
114618
    library_articulated_systems__AttributeData* typedAttributeData = static_cast<library_articulated_systems__AttributeData*>(attributeData);
 
114619
 
 
114620
    typedAttributeData->~library_articulated_systems__AttributeData();
 
114621
 
 
114622
    return true;
 
114623
}
 
114624
 
 
114625
//---------------------------------------------------------------------
 
114626
const articulated_system__AttributeData articulated_system__AttributeData::DEFAULT = {0, 0};
 
114627
 
 
114628
//---------------------------------------------------------------------
 
114629
bool ColladaParserAutoGen15Private::_data__articulated_system( const ParserChar* text, size_t textLength )
 
114630
{
 
114631
    return true;
 
114632
}
 
114633
 
 
114634
//---------------------------------------------------------------------
 
114635
bool ColladaParserAutoGen15Private::_preBegin__articulated_system( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
114636
{
 
114637
#ifdef GENERATEDSAXPARSER_VALIDATION
 
114638
    if ( mValidate )
 
114639
    {
 
114640
 
 
114641
        bool validationResult = _validateBegin__articulated_system( attributes, attributeDataPtr, validationDataPtr );
 
114642
        if ( !validationResult ) return false;
 
114643
 
 
114644
    } // validation
 
114645
#endif
 
114646
 
 
114647
articulated_system__AttributeData* attributeData = newData<articulated_system__AttributeData>(attributeDataPtr);
 
114648
 
 
114649
const ParserChar** attributeArray = attributes.attributes;
 
114650
if ( attributeArray )
 
114651
{
 
114652
    while (true)
 
114653
    {
 
114654
        const ParserChar * attribute = *attributeArray;
 
114655
        if ( !attribute )
 
114656
            break;
 
114657
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
114658
        attributeArray++;
 
114659
        if ( !attributeArray )
 
114660
            return false;
 
114661
        const ParserChar* attributeValue = *attributeArray;
 
114662
        attributeArray++;
 
114663
 
 
114664
 
 
114665
    switch ( hash )
 
114666
    {
 
114667
    case HASH_ATTRIBUTE_ID:
 
114668
    {
 
114669
 
 
114670
attributeData->id = attributeValue;
 
114671
 
 
114672
    break;
 
114673
    }
 
114674
    case HASH_ATTRIBUTE_NAME:
 
114675
    {
 
114676
 
 
114677
attributeData->name = attributeValue;
 
114678
 
 
114679
    break;
 
114680
    }
 
114681
    default:
 
114682
    {
 
114683
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_ARTICULATED_SYSTEM, attribute, attributeValue))
 
114684
            {return false;}
 
114685
    }
 
114686
    }
 
114687
    }
 
114688
}
 
114689
 
 
114690
 
 
114691
    return true;
 
114692
}
 
114693
 
 
114694
//---------------------------------------------------------------------
 
114695
bool ColladaParserAutoGen15Private::_preEnd__articulated_system()
 
114696
{
 
114697
#ifdef GENERATEDSAXPARSER_VALIDATION
 
114698
    if ( mValidate )
 
114699
    {
 
114700
 
 
114701
        bool validationResult = _validateEnd__articulated_system();
 
114702
        if ( !validationResult ) return false;
 
114703
 
 
114704
    } // validation
 
114705
#endif
 
114706
 
 
114707
    return true;
 
114708
}
 
114709
 
 
114710
//---------------------------------------------------------------------
 
114711
bool ColladaParserAutoGen15Private::_freeAttributes__articulated_system( void* attributeData )
 
114712
{
 
114713
    articulated_system__AttributeData* typedAttributeData = static_cast<articulated_system__AttributeData*>(attributeData);
 
114714
 
 
114715
    typedAttributeData->~articulated_system__AttributeData();
 
114716
 
 
114717
    return true;
 
114718
}
 
114719
 
 
114720
//---------------------------------------------------------------------
 
114721
bool ColladaParserAutoGen15Private::_data__kinematics( const ParserChar* text, size_t textLength )
 
114722
{
 
114723
    return true;
 
114724
}
 
114725
 
 
114726
//---------------------------------------------------------------------
 
114727
bool ColladaParserAutoGen15Private::_preBegin__kinematics( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
114728
{
 
114729
#ifdef GENERATEDSAXPARSER_VALIDATION
 
114730
    if ( mValidate )
 
114731
    {
 
114732
 
 
114733
        bool validationResult = _validateBegin__kinematics( attributes, attributeDataPtr, validationDataPtr );
 
114734
        if ( !validationResult ) return false;
 
114735
 
 
114736
    } // validation
 
114737
#endif
 
114738
 
 
114739
    return true;
 
114740
}
 
114741
 
 
114742
//---------------------------------------------------------------------
 
114743
bool ColladaParserAutoGen15Private::_preEnd__kinematics()
 
114744
{
 
114745
#ifdef GENERATEDSAXPARSER_VALIDATION
 
114746
    if ( mValidate )
 
114747
    {
 
114748
 
 
114749
        bool validationResult = _validateEnd__kinematics();
 
114750
        if ( !validationResult ) return false;
 
114751
 
 
114752
    } // validation
 
114753
#endif
 
114754
 
 
114755
    return true;
 
114756
}
 
114757
 
 
114758
//---------------------------------------------------------------------
 
114759
bool ColladaParserAutoGen15Private::_freeAttributes__kinematics( void* attributeData )
 
114760
{
 
114761
    return true;
 
114762
}
 
114763
 
 
114764
//---------------------------------------------------------------------
 
114765
const instance_kinematics_model__AttributeData instance_kinematics_model__AttributeData::DEFAULT = {0, 0, 0, 0};
 
114766
 
 
114767
//---------------------------------------------------------------------
 
114768
bool ColladaParserAutoGen15Private::_data__instance_kinematics_model( const ParserChar* text, size_t textLength )
 
114769
{
 
114770
    return true;
 
114771
}
 
114772
 
 
114773
//---------------------------------------------------------------------
 
114774
bool ColladaParserAutoGen15Private::_preBegin__instance_kinematics_model( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
114775
{
 
114776
#ifdef GENERATEDSAXPARSER_VALIDATION
 
114777
    if ( mValidate )
 
114778
    {
 
114779
 
 
114780
        bool validationResult = _validateBegin__instance_kinematics_model( attributes, attributeDataPtr, validationDataPtr );
 
114781
        if ( !validationResult ) return false;
 
114782
 
 
114783
    } // validation
 
114784
#endif
 
114785
 
 
114786
instance_kinematics_model__AttributeData* attributeData = newData<instance_kinematics_model__AttributeData>(attributeDataPtr);
 
114787
 
 
114788
const ParserChar** attributeArray = attributes.attributes;
 
114789
if ( attributeArray )
 
114790
{
 
114791
    while (true)
 
114792
    {
 
114793
        const ParserChar * attribute = *attributeArray;
 
114794
        if ( !attribute )
 
114795
            break;
 
114796
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
114797
        attributeArray++;
 
114798
        if ( !attributeArray )
 
114799
            return false;
 
114800
        const ParserChar* attributeValue = *attributeArray;
 
114801
        attributeArray++;
 
114802
 
 
114803
 
 
114804
    switch ( hash )
 
114805
    {
 
114806
    case HASH_ATTRIBUTE_URL:
 
114807
    {
 
114808
bool failed;
 
114809
attributeData->url = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
114810
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
114811
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
114812
        HASH_ELEMENT_INSTANCE_KINEMATICS_MODEL,
 
114813
        HASH_ATTRIBUTE_URL,
 
114814
        attributeValue))
 
114815
{
 
114816
    return false;
 
114817
}
 
114818
if ( !failed )
 
114819
    attributeData->present_attributes |= instance_kinematics_model__AttributeData::ATTRIBUTE_URL_PRESENT;
 
114820
 
 
114821
    break;
 
114822
    }
 
114823
    case HASH_ATTRIBUTE_SID:
 
114824
    {
 
114825
 
 
114826
attributeData->sid = attributeValue;
 
114827
#ifdef GENERATEDSAXPARSER_VALIDATION
 
114828
    if ( mValidate )
 
114829
    {
 
114830
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
114831
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
114832
    {
 
114833
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
114834
            simpleTypeValidationResult,
 
114835
            HASH_ELEMENT_INSTANCE_KINEMATICS_MODEL,
 
114836
            HASH_ATTRIBUTE_SID,
 
114837
            attributeValue) )
 
114838
        {
 
114839
            return false;
 
114840
        }
 
114841
    }
 
114842
    } // validation
 
114843
#endif
 
114844
 
 
114845
    break;
 
114846
    }
 
114847
    case HASH_ATTRIBUTE_NAME:
 
114848
    {
 
114849
 
 
114850
attributeData->name = attributeValue;
 
114851
 
 
114852
    break;
 
114853
    }
 
114854
    default:
 
114855
    {
 
114856
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_INSTANCE_KINEMATICS_MODEL, attribute, attributeValue))
 
114857
            {return false;}
 
114858
    }
 
114859
    }
 
114860
    }
 
114861
}
 
114862
if ((attributeData->present_attributes & instance_kinematics_model__AttributeData::ATTRIBUTE_URL_PRESENT) == 0)
 
114863
{
 
114864
    attributeData->url = COLLADABU::URI("");
 
114865
}
 
114866
if ( (attributeData->present_attributes & instance_kinematics_model__AttributeData::ATTRIBUTE_URL_PRESENT) == 0 )
 
114867
{
 
114868
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_INSTANCE_KINEMATICS_MODEL, HASH_ATTRIBUTE_URL, 0 ) )
 
114869
        return false;
 
114870
}
 
114871
 
 
114872
 
 
114873
    return true;
 
114874
}
 
114875
 
 
114876
//---------------------------------------------------------------------
 
114877
bool ColladaParserAutoGen15Private::_preEnd__instance_kinematics_model()
 
114878
{
 
114879
#ifdef GENERATEDSAXPARSER_VALIDATION
 
114880
    if ( mValidate )
 
114881
    {
 
114882
 
 
114883
        bool validationResult = _validateEnd__instance_kinematics_model();
 
114884
        if ( !validationResult ) return false;
 
114885
 
 
114886
    } // validation
 
114887
#endif
 
114888
 
 
114889
    return true;
 
114890
}
 
114891
 
 
114892
//---------------------------------------------------------------------
 
114893
bool ColladaParserAutoGen15Private::_freeAttributes__instance_kinematics_model( void* attributeData )
 
114894
{
 
114895
    instance_kinematics_model__AttributeData* typedAttributeData = static_cast<instance_kinematics_model__AttributeData*>(attributeData);
 
114896
 
 
114897
    typedAttributeData->~instance_kinematics_model__AttributeData();
 
114898
 
 
114899
    return true;
 
114900
}
 
114901
 
 
114902
//---------------------------------------------------------------------
 
114903
const bind____kinematics_bind_type__AttributeData bind____kinematics_bind_type__AttributeData::DEFAULT = {0};
 
114904
 
 
114905
//---------------------------------------------------------------------
 
114906
bool ColladaParserAutoGen15Private::_data__bind____kinematics_bind_type( const ParserChar* text, size_t textLength )
 
114907
{
 
114908
    return true;
 
114909
}
 
114910
 
 
114911
//---------------------------------------------------------------------
 
114912
bool ColladaParserAutoGen15Private::_preBegin__bind____kinematics_bind_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
114913
{
 
114914
#ifdef GENERATEDSAXPARSER_VALIDATION
 
114915
    if ( mValidate )
 
114916
    {
 
114917
 
 
114918
        bool validationResult = _validateBegin__bind____kinematics_bind_type( attributes, attributeDataPtr, validationDataPtr );
 
114919
        if ( !validationResult ) return false;
 
114920
 
 
114921
    } // validation
 
114922
#endif
 
114923
 
 
114924
bind____kinematics_bind_type__AttributeData* attributeData = newData<bind____kinematics_bind_type__AttributeData>(attributeDataPtr);
 
114925
 
 
114926
const ParserChar** attributeArray = attributes.attributes;
 
114927
if ( attributeArray )
 
114928
{
 
114929
    while (true)
 
114930
    {
 
114931
        const ParserChar * attribute = *attributeArray;
 
114932
        if ( !attribute )
 
114933
            break;
 
114934
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
114935
        attributeArray++;
 
114936
        if ( !attributeArray )
 
114937
            return false;
 
114938
        const ParserChar* attributeValue = *attributeArray;
 
114939
        attributeArray++;
 
114940
 
 
114941
 
 
114942
    switch ( hash )
 
114943
    {
 
114944
    case HASH_ATTRIBUTE_SYMBOL:
 
114945
    {
 
114946
 
 
114947
attributeData->symbol = attributeValue;
 
114948
#ifdef GENERATEDSAXPARSER_VALIDATION
 
114949
    if ( mValidate )
 
114950
    {
 
114951
    ParserError::ErrorType simpleTypeValidationResult = validate__NCName(attributeData->symbol, strlen(attributeData->symbol));
 
114952
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
114953
    {
 
114954
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
114955
            simpleTypeValidationResult,
 
114956
            HASH_ELEMENT_BIND,
 
114957
            HASH_ATTRIBUTE_SYMBOL,
 
114958
            attributeValue) )
 
114959
        {
 
114960
            return false;
 
114961
        }
 
114962
    }
 
114963
    } // validation
 
114964
#endif
 
114965
 
 
114966
    break;
 
114967
    }
 
114968
    default:
 
114969
    {
 
114970
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_BIND, attribute, attributeValue))
 
114971
            {return false;}
 
114972
    }
 
114973
    }
 
114974
    }
 
114975
}
 
114976
if ( !attributeData->symbol )
 
114977
{
 
114978
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_BIND, HASH_ATTRIBUTE_SYMBOL, 0 ) )
 
114979
        return false;
 
114980
}
 
114981
 
 
114982
 
 
114983
    return true;
 
114984
}
 
114985
 
 
114986
//---------------------------------------------------------------------
 
114987
bool ColladaParserAutoGen15Private::_preEnd__bind____kinematics_bind_type()
 
114988
{
 
114989
#ifdef GENERATEDSAXPARSER_VALIDATION
 
114990
    if ( mValidate )
 
114991
    {
 
114992
 
 
114993
        bool validationResult = _validateEnd__bind____kinematics_bind_type();
 
114994
        if ( !validationResult ) return false;
 
114995
 
 
114996
    } // validation
 
114997
#endif
 
114998
 
 
114999
    return true;
 
115000
}
 
115001
 
 
115002
//---------------------------------------------------------------------
 
115003
bool ColladaParserAutoGen15Private::_freeAttributes__bind____kinematics_bind_type( void* attributeData )
 
115004
{
 
115005
    bind____kinematics_bind_type__AttributeData* typedAttributeData = static_cast<bind____kinematics_bind_type__AttributeData*>(attributeData);
 
115006
 
 
115007
    typedAttributeData->~bind____kinematics_bind_type__AttributeData();
 
115008
 
 
115009
    return true;
 
115010
}
 
115011
 
 
115012
//---------------------------------------------------------------------
 
115013
const param____kinematics_param_type__AttributeData param____kinematics_param_type__AttributeData::DEFAULT = {0};
 
115014
 
 
115015
//---------------------------------------------------------------------
 
115016
bool ColladaParserAutoGen15Private::_data__param____kinematics_param_type( const ParserChar* text, size_t textLength )
 
115017
{
 
115018
    return true;
 
115019
}
 
115020
 
 
115021
//---------------------------------------------------------------------
 
115022
bool ColladaParserAutoGen15Private::_preBegin__param____kinematics_param_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
115023
{
 
115024
#ifdef GENERATEDSAXPARSER_VALIDATION
 
115025
    if ( mValidate )
 
115026
    {
 
115027
 
 
115028
        bool validationResult = _validateBegin__param____kinematics_param_type( attributes, attributeDataPtr, validationDataPtr );
 
115029
        if ( !validationResult ) return false;
 
115030
 
 
115031
    } // validation
 
115032
#endif
 
115033
 
 
115034
param____kinematics_param_type__AttributeData* attributeData = newData<param____kinematics_param_type__AttributeData>(attributeDataPtr);
 
115035
 
 
115036
const ParserChar** attributeArray = attributes.attributes;
 
115037
if ( attributeArray )
 
115038
{
 
115039
    while (true)
 
115040
    {
 
115041
        const ParserChar * attribute = *attributeArray;
 
115042
        if ( !attribute )
 
115043
            break;
 
115044
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
115045
        attributeArray++;
 
115046
        if ( !attributeArray )
 
115047
            return false;
 
115048
        const ParserChar* attributeValue = *attributeArray;
 
115049
        attributeArray++;
 
115050
 
 
115051
 
 
115052
    switch ( hash )
 
115053
    {
 
115054
    case HASH_ATTRIBUTE_REF:
 
115055
    {
 
115056
 
 
115057
attributeData->ref = attributeValue;
 
115058
 
 
115059
    break;
 
115060
    }
 
115061
    default:
 
115062
    {
 
115063
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_PARAM, attribute, attributeValue))
 
115064
            {return false;}
 
115065
    }
 
115066
    }
 
115067
    }
 
115068
}
 
115069
if ( !attributeData->ref )
 
115070
{
 
115071
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_PARAM, HASH_ATTRIBUTE_REF, 0 ) )
 
115072
        return false;
 
115073
}
 
115074
 
 
115075
 
 
115076
    return true;
 
115077
}
 
115078
 
 
115079
//---------------------------------------------------------------------
 
115080
bool ColladaParserAutoGen15Private::_preEnd__param____kinematics_param_type()
 
115081
{
 
115082
#ifdef GENERATEDSAXPARSER_VALIDATION
 
115083
    if ( mValidate )
 
115084
    {
 
115085
 
 
115086
        bool validationResult = _validateEnd__param____kinematics_param_type();
 
115087
        if ( !validationResult ) return false;
 
115088
 
 
115089
    } // validation
 
115090
#endif
 
115091
 
 
115092
    return true;
 
115093
}
 
115094
 
 
115095
//---------------------------------------------------------------------
 
115096
bool ColladaParserAutoGen15Private::_freeAttributes__param____kinematics_param_type( void* attributeData )
 
115097
{
 
115098
    param____kinematics_param_type__AttributeData* typedAttributeData = static_cast<param____kinematics_param_type__AttributeData*>(attributeData);
 
115099
 
 
115100
    typedAttributeData->~param____kinematics_param_type__AttributeData();
 
115101
 
 
115102
    return true;
 
115103
}
 
115104
 
 
115105
//---------------------------------------------------------------------
 
115106
const setparam____kinematics_setparam_type__AttributeData setparam____kinematics_setparam_type__AttributeData::DEFAULT = {0};
 
115107
 
 
115108
//---------------------------------------------------------------------
 
115109
bool ColladaParserAutoGen15Private::_data__setparam____kinematics_setparam_type( const ParserChar* text, size_t textLength )
 
115110
{
 
115111
    return true;
 
115112
}
 
115113
 
 
115114
//---------------------------------------------------------------------
 
115115
bool ColladaParserAutoGen15Private::_preBegin__setparam____kinematics_setparam_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
115116
{
 
115117
#ifdef GENERATEDSAXPARSER_VALIDATION
 
115118
    if ( mValidate )
 
115119
    {
 
115120
 
 
115121
        bool validationResult = _validateBegin__setparam____kinematics_setparam_type( attributes, attributeDataPtr, validationDataPtr );
 
115122
        if ( !validationResult ) return false;
 
115123
 
 
115124
    } // validation
 
115125
#endif
 
115126
 
 
115127
setparam____kinematics_setparam_type__AttributeData* attributeData = newData<setparam____kinematics_setparam_type__AttributeData>(attributeDataPtr);
 
115128
 
 
115129
const ParserChar** attributeArray = attributes.attributes;
 
115130
if ( attributeArray )
 
115131
{
 
115132
    while (true)
 
115133
    {
 
115134
        const ParserChar * attribute = *attributeArray;
 
115135
        if ( !attribute )
 
115136
            break;
 
115137
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
115138
        attributeArray++;
 
115139
        if ( !attributeArray )
 
115140
            return false;
 
115141
        const ParserChar* attributeValue = *attributeArray;
 
115142
        attributeArray++;
 
115143
 
 
115144
 
 
115145
    switch ( hash )
 
115146
    {
 
115147
    case HASH_ATTRIBUTE_REF:
 
115148
    {
 
115149
 
 
115150
attributeData->ref = attributeValue;
 
115151
 
 
115152
    break;
 
115153
    }
 
115154
    default:
 
115155
    {
 
115156
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_SETPARAM, attribute, attributeValue))
 
115157
            {return false;}
 
115158
    }
 
115159
    }
 
115160
    }
 
115161
}
 
115162
if ( !attributeData->ref )
 
115163
{
 
115164
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_SETPARAM, HASH_ATTRIBUTE_REF, 0 ) )
 
115165
        return false;
 
115166
}
 
115167
 
 
115168
 
 
115169
    return true;
 
115170
}
 
115171
 
 
115172
//---------------------------------------------------------------------
 
115173
bool ColladaParserAutoGen15Private::_preEnd__setparam____kinematics_setparam_type()
 
115174
{
 
115175
#ifdef GENERATEDSAXPARSER_VALIDATION
 
115176
    if ( mValidate )
 
115177
    {
 
115178
 
 
115179
        bool validationResult = _validateEnd__setparam____kinematics_setparam_type();
 
115180
        if ( !validationResult ) return false;
 
115181
 
 
115182
    } // validation
 
115183
#endif
 
115184
 
 
115185
    return true;
 
115186
}
 
115187
 
 
115188
//---------------------------------------------------------------------
 
115189
bool ColladaParserAutoGen15Private::_freeAttributes__setparam____kinematics_setparam_type( void* attributeData )
 
115190
{
 
115191
    setparam____kinematics_setparam_type__AttributeData* typedAttributeData = static_cast<setparam____kinematics_setparam_type__AttributeData*>(attributeData);
 
115192
 
 
115193
    typedAttributeData->~setparam____kinematics_setparam_type__AttributeData();
 
115194
 
 
115195
    return true;
 
115196
}
 
115197
 
 
115198
//---------------------------------------------------------------------
 
115199
bool ColladaParserAutoGen15Private::_data__technique_common____kinematics_technique_type( const ParserChar* text, size_t textLength )
 
115200
{
 
115201
    return true;
 
115202
}
 
115203
 
 
115204
//---------------------------------------------------------------------
 
115205
bool ColladaParserAutoGen15Private::_preBegin__technique_common____kinematics_technique_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
115206
{
 
115207
#ifdef GENERATEDSAXPARSER_VALIDATION
 
115208
    if ( mValidate )
 
115209
    {
 
115210
 
 
115211
        bool validationResult = _validateBegin__technique_common____kinematics_technique_type( attributes, attributeDataPtr, validationDataPtr );
 
115212
        if ( !validationResult ) return false;
 
115213
 
 
115214
    } // validation
 
115215
#endif
 
115216
 
 
115217
    return true;
 
115218
}
 
115219
 
 
115220
//---------------------------------------------------------------------
 
115221
bool ColladaParserAutoGen15Private::_preEnd__technique_common____kinematics_technique_type()
 
115222
{
 
115223
#ifdef GENERATEDSAXPARSER_VALIDATION
 
115224
    if ( mValidate )
 
115225
    {
 
115226
 
 
115227
        bool validationResult = _validateEnd__technique_common____kinematics_technique_type();
 
115228
        if ( !validationResult ) return false;
 
115229
 
 
115230
    } // validation
 
115231
#endif
 
115232
 
 
115233
    return true;
 
115234
}
 
115235
 
 
115236
//---------------------------------------------------------------------
 
115237
bool ColladaParserAutoGen15Private::_freeAttributes__technique_common____kinematics_technique_type( void* attributeData )
 
115238
{
 
115239
    return true;
 
115240
}
 
115241
 
 
115242
//---------------------------------------------------------------------
 
115243
const axis_info____kinematics_axis_info_type__AttributeData axis_info____kinematics_axis_info_type__AttributeData::DEFAULT = {0, 0, 0};
 
115244
 
 
115245
//---------------------------------------------------------------------
 
115246
bool ColladaParserAutoGen15Private::_data__axis_info____kinematics_axis_info_type( const ParserChar* text, size_t textLength )
 
115247
{
 
115248
    return true;
 
115249
}
 
115250
 
 
115251
//---------------------------------------------------------------------
 
115252
bool ColladaParserAutoGen15Private::_preBegin__axis_info____kinematics_axis_info_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
115253
{
 
115254
#ifdef GENERATEDSAXPARSER_VALIDATION
 
115255
    if ( mValidate )
 
115256
    {
 
115257
 
 
115258
        bool validationResult = _validateBegin__axis_info____kinematics_axis_info_type( attributes, attributeDataPtr, validationDataPtr );
 
115259
        if ( !validationResult ) return false;
 
115260
 
 
115261
    } // validation
 
115262
#endif
 
115263
 
 
115264
axis_info____kinematics_axis_info_type__AttributeData* attributeData = newData<axis_info____kinematics_axis_info_type__AttributeData>(attributeDataPtr);
 
115265
 
 
115266
const ParserChar** attributeArray = attributes.attributes;
 
115267
if ( attributeArray )
 
115268
{
 
115269
    while (true)
 
115270
    {
 
115271
        const ParserChar * attribute = *attributeArray;
 
115272
        if ( !attribute )
 
115273
            break;
 
115274
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
115275
        attributeArray++;
 
115276
        if ( !attributeArray )
 
115277
            return false;
 
115278
        const ParserChar* attributeValue = *attributeArray;
 
115279
        attributeArray++;
 
115280
 
 
115281
 
 
115282
    switch ( hash )
 
115283
    {
 
115284
    case HASH_ATTRIBUTE_SID:
 
115285
    {
 
115286
 
 
115287
attributeData->sid = attributeValue;
 
115288
#ifdef GENERATEDSAXPARSER_VALIDATION
 
115289
    if ( mValidate )
 
115290
    {
 
115291
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
115292
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
115293
    {
 
115294
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
115295
            simpleTypeValidationResult,
 
115296
            HASH_ELEMENT_AXIS_INFO,
 
115297
            HASH_ATTRIBUTE_SID,
 
115298
            attributeValue) )
 
115299
        {
 
115300
            return false;
 
115301
        }
 
115302
    }
 
115303
    } // validation
 
115304
#endif
 
115305
 
 
115306
    break;
 
115307
    }
 
115308
    case HASH_ATTRIBUTE_NAME:
 
115309
    {
 
115310
 
 
115311
attributeData->name = attributeValue;
 
115312
 
 
115313
    break;
 
115314
    }
 
115315
    case HASH_ATTRIBUTE_AXIS:
 
115316
    {
 
115317
 
 
115318
attributeData->axis = attributeValue;
 
115319
 
 
115320
    break;
 
115321
    }
 
115322
    default:
 
115323
    {
 
115324
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_AXIS_INFO, attribute, attributeValue))
 
115325
            {return false;}
 
115326
    }
 
115327
    }
 
115328
    }
 
115329
}
 
115330
if ( !attributeData->axis )
 
115331
{
 
115332
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_AXIS_INFO, HASH_ATTRIBUTE_AXIS, 0 ) )
 
115333
        return false;
 
115334
}
 
115335
 
 
115336
 
 
115337
    return true;
 
115338
}
 
115339
 
 
115340
//---------------------------------------------------------------------
 
115341
bool ColladaParserAutoGen15Private::_preEnd__axis_info____kinematics_axis_info_type()
 
115342
{
 
115343
#ifdef GENERATEDSAXPARSER_VALIDATION
 
115344
    if ( mValidate )
 
115345
    {
 
115346
 
 
115347
        bool validationResult = _validateEnd__axis_info____kinematics_axis_info_type();
 
115348
        if ( !validationResult ) return false;
 
115349
 
 
115350
    } // validation
 
115351
#endif
 
115352
 
 
115353
    return true;
 
115354
}
 
115355
 
 
115356
//---------------------------------------------------------------------
 
115357
bool ColladaParserAutoGen15Private::_freeAttributes__axis_info____kinematics_axis_info_type( void* attributeData )
 
115358
{
 
115359
    axis_info____kinematics_axis_info_type__AttributeData* typedAttributeData = static_cast<axis_info____kinematics_axis_info_type__AttributeData*>(attributeData);
 
115360
 
 
115361
    typedAttributeData->~axis_info____kinematics_axis_info_type__AttributeData();
 
115362
 
 
115363
    return true;
 
115364
}
 
115365
 
 
115366
//---------------------------------------------------------------------
 
115367
bool ColladaParserAutoGen15Private::_data__active( const ParserChar* text, size_t textLength )
 
115368
{
 
115369
    return true;
 
115370
}
 
115371
 
 
115372
//---------------------------------------------------------------------
 
115373
bool ColladaParserAutoGen15Private::_preBegin__active( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
115374
{
 
115375
#ifdef GENERATEDSAXPARSER_VALIDATION
 
115376
    if ( mValidate )
 
115377
    {
 
115378
 
 
115379
        bool validationResult = _validateBegin__active( attributes, attributeDataPtr, validationDataPtr );
 
115380
        if ( !validationResult ) return false;
 
115381
 
 
115382
    } // validation
 
115383
#endif
 
115384
 
 
115385
    return true;
 
115386
}
 
115387
 
 
115388
//---------------------------------------------------------------------
 
115389
bool ColladaParserAutoGen15Private::_preEnd__active()
 
115390
{
 
115391
#ifdef GENERATEDSAXPARSER_VALIDATION
 
115392
    if ( mValidate )
 
115393
    {
 
115394
 
 
115395
        bool validationResult = _validateEnd__active();
 
115396
        if ( !validationResult ) return false;
 
115397
 
 
115398
    } // validation
 
115399
#endif
 
115400
 
 
115401
    return true;
 
115402
}
 
115403
 
 
115404
//---------------------------------------------------------------------
 
115405
bool ColladaParserAutoGen15Private::_freeAttributes__active( void* attributeData )
 
115406
{
 
115407
    return true;
 
115408
}
 
115409
 
 
115410
//---------------------------------------------------------------------
 
115411
bool ColladaParserAutoGen15Private::_data__locked( const ParserChar* text, size_t textLength )
 
115412
{
 
115413
    return true;
 
115414
}
 
115415
 
 
115416
//---------------------------------------------------------------------
 
115417
bool ColladaParserAutoGen15Private::_preBegin__locked( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
115418
{
 
115419
#ifdef GENERATEDSAXPARSER_VALIDATION
 
115420
    if ( mValidate )
 
115421
    {
 
115422
 
 
115423
        bool validationResult = _validateBegin__locked( attributes, attributeDataPtr, validationDataPtr );
 
115424
        if ( !validationResult ) return false;
 
115425
 
 
115426
    } // validation
 
115427
#endif
 
115428
 
 
115429
    return true;
 
115430
}
 
115431
 
 
115432
//---------------------------------------------------------------------
 
115433
bool ColladaParserAutoGen15Private::_preEnd__locked()
 
115434
{
 
115435
#ifdef GENERATEDSAXPARSER_VALIDATION
 
115436
    if ( mValidate )
 
115437
    {
 
115438
 
 
115439
        bool validationResult = _validateEnd__locked();
 
115440
        if ( !validationResult ) return false;
 
115441
 
 
115442
    } // validation
 
115443
#endif
 
115444
 
 
115445
    return true;
 
115446
}
 
115447
 
 
115448
//---------------------------------------------------------------------
 
115449
bool ColladaParserAutoGen15Private::_freeAttributes__locked( void* attributeData )
 
115450
{
 
115451
    return true;
 
115452
}
 
115453
 
 
115454
//---------------------------------------------------------------------
 
115455
const index__AttributeData index__AttributeData::DEFAULT = {0};
 
115456
 
 
115457
//---------------------------------------------------------------------
 
115458
bool ColladaParserAutoGen15Private::_data__index( const ParserChar* text, size_t textLength )
 
115459
{
 
115460
    return true;
 
115461
}
 
115462
 
 
115463
//---------------------------------------------------------------------
 
115464
bool ColladaParserAutoGen15Private::_preBegin__index( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
115465
{
 
115466
#ifdef GENERATEDSAXPARSER_VALIDATION
 
115467
    if ( mValidate )
 
115468
    {
 
115469
 
 
115470
        bool validationResult = _validateBegin__index( attributes, attributeDataPtr, validationDataPtr );
 
115471
        if ( !validationResult ) return false;
 
115472
 
 
115473
    } // validation
 
115474
#endif
 
115475
 
 
115476
index__AttributeData* attributeData = newData<index__AttributeData>(attributeDataPtr);
 
115477
 
 
115478
const ParserChar** attributeArray = attributes.attributes;
 
115479
if ( attributeArray )
 
115480
{
 
115481
    while (true)
 
115482
    {
 
115483
        const ParserChar * attribute = *attributeArray;
 
115484
        if ( !attribute )
 
115485
            break;
 
115486
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
115487
        attributeArray++;
 
115488
        if ( !attributeArray )
 
115489
            return false;
 
115490
        const ParserChar* attributeValue = *attributeArray;
 
115491
        attributeArray++;
 
115492
 
 
115493
 
 
115494
    switch ( hash )
 
115495
    {
 
115496
    case HASH_ATTRIBUTE_SEMANTIC:
 
115497
    {
 
115498
 
 
115499
attributeData->semantic = attributeValue;
 
115500
#ifdef GENERATEDSAXPARSER_VALIDATION
 
115501
    if ( mValidate )
 
115502
    {
 
115503
    ParserError::ErrorType simpleTypeValidationResult = validate__NMTOKEN(attributeData->semantic, strlen(attributeData->semantic));
 
115504
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
115505
    {
 
115506
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
115507
            simpleTypeValidationResult,
 
115508
            HASH_ELEMENT_INDEX,
 
115509
            HASH_ATTRIBUTE_SEMANTIC,
 
115510
            attributeValue) )
 
115511
        {
 
115512
            return false;
 
115513
        }
 
115514
    }
 
115515
    } // validation
 
115516
#endif
 
115517
 
 
115518
    break;
 
115519
    }
 
115520
    default:
 
115521
    {
 
115522
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_INDEX, attribute, attributeValue))
 
115523
            {return false;}
 
115524
    }
 
115525
    }
 
115526
    }
 
115527
}
 
115528
 
 
115529
 
 
115530
    return true;
 
115531
}
 
115532
 
 
115533
//---------------------------------------------------------------------
 
115534
bool ColladaParserAutoGen15Private::_preEnd__index()
 
115535
{
 
115536
#ifdef GENERATEDSAXPARSER_VALIDATION
 
115537
    if ( mValidate )
 
115538
    {
 
115539
 
 
115540
        bool validationResult = _validateEnd__index();
 
115541
        if ( !validationResult ) return false;
 
115542
 
 
115543
    } // validation
 
115544
#endif
 
115545
 
 
115546
    return true;
 
115547
}
 
115548
 
 
115549
//---------------------------------------------------------------------
 
115550
bool ColladaParserAutoGen15Private::_freeAttributes__index( void* attributeData )
 
115551
{
 
115552
    index__AttributeData* typedAttributeData = static_cast<index__AttributeData*>(attributeData);
 
115553
 
 
115554
    typedAttributeData->~index__AttributeData();
 
115555
 
 
115556
    return true;
 
115557
}
 
115558
 
 
115559
//---------------------------------------------------------------------
 
115560
bool ColladaParserAutoGen15Private::_data__limits____kinematics_limits_type( const ParserChar* text, size_t textLength )
 
115561
{
 
115562
    return true;
 
115563
}
 
115564
 
 
115565
//---------------------------------------------------------------------
 
115566
bool ColladaParserAutoGen15Private::_preBegin__limits____kinematics_limits_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
115567
{
 
115568
#ifdef GENERATEDSAXPARSER_VALIDATION
 
115569
    if ( mValidate )
 
115570
    {
 
115571
 
 
115572
        bool validationResult = _validateBegin__limits____kinematics_limits_type( attributes, attributeDataPtr, validationDataPtr );
 
115573
        if ( !validationResult ) return false;
 
115574
 
 
115575
    } // validation
 
115576
#endif
 
115577
 
 
115578
    return true;
 
115579
}
 
115580
 
 
115581
//---------------------------------------------------------------------
 
115582
bool ColladaParserAutoGen15Private::_preEnd__limits____kinematics_limits_type()
 
115583
{
 
115584
#ifdef GENERATEDSAXPARSER_VALIDATION
 
115585
    if ( mValidate )
 
115586
    {
 
115587
 
 
115588
        bool validationResult = _validateEnd__limits____kinematics_limits_type();
 
115589
        if ( !validationResult ) return false;
 
115590
 
 
115591
    } // validation
 
115592
#endif
 
115593
 
 
115594
    return true;
 
115595
}
 
115596
 
 
115597
//---------------------------------------------------------------------
 
115598
bool ColladaParserAutoGen15Private::_freeAttributes__limits____kinematics_limits_type( void* attributeData )
 
115599
{
 
115600
    return true;
 
115601
}
 
115602
 
 
115603
//---------------------------------------------------------------------
 
115604
bool ColladaParserAutoGen15Private::_data__min____common_float_or_param_type( const ParserChar* text, size_t textLength )
 
115605
{
 
115606
    return true;
 
115607
}
 
115608
 
 
115609
//---------------------------------------------------------------------
 
115610
bool ColladaParserAutoGen15Private::_preBegin__min____common_float_or_param_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
115611
{
 
115612
#ifdef GENERATEDSAXPARSER_VALIDATION
 
115613
    if ( mValidate )
 
115614
    {
 
115615
 
 
115616
        bool validationResult = _validateBegin__min____common_float_or_param_type( attributes, attributeDataPtr, validationDataPtr );
 
115617
        if ( !validationResult ) return false;
 
115618
 
 
115619
    } // validation
 
115620
#endif
 
115621
 
 
115622
    return true;
 
115623
}
 
115624
 
 
115625
//---------------------------------------------------------------------
 
115626
bool ColladaParserAutoGen15Private::_preEnd__min____common_float_or_param_type()
 
115627
{
 
115628
#ifdef GENERATEDSAXPARSER_VALIDATION
 
115629
    if ( mValidate )
 
115630
    {
 
115631
 
 
115632
        bool validationResult = _validateEnd__min____common_float_or_param_type();
 
115633
        if ( !validationResult ) return false;
 
115634
 
 
115635
    } // validation
 
115636
#endif
 
115637
 
 
115638
    return true;
 
115639
}
 
115640
 
 
115641
//---------------------------------------------------------------------
 
115642
bool ColladaParserAutoGen15Private::_freeAttributes__min____common_float_or_param_type( void* attributeData )
 
115643
{
 
115644
    return true;
 
115645
}
 
115646
 
 
115647
//---------------------------------------------------------------------
 
115648
bool ColladaParserAutoGen15Private::_data__max____common_float_or_param_type( const ParserChar* text, size_t textLength )
 
115649
{
 
115650
    return true;
 
115651
}
 
115652
 
 
115653
//---------------------------------------------------------------------
 
115654
bool ColladaParserAutoGen15Private::_preBegin__max____common_float_or_param_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
115655
{
 
115656
#ifdef GENERATEDSAXPARSER_VALIDATION
 
115657
    if ( mValidate )
 
115658
    {
 
115659
 
 
115660
        bool validationResult = _validateBegin__max____common_float_or_param_type( attributes, attributeDataPtr, validationDataPtr );
 
115661
        if ( !validationResult ) return false;
 
115662
 
 
115663
    } // validation
 
115664
#endif
 
115665
 
 
115666
    return true;
 
115667
}
 
115668
 
 
115669
//---------------------------------------------------------------------
 
115670
bool ColladaParserAutoGen15Private::_preEnd__max____common_float_or_param_type()
 
115671
{
 
115672
#ifdef GENERATEDSAXPARSER_VALIDATION
 
115673
    if ( mValidate )
 
115674
    {
 
115675
 
 
115676
        bool validationResult = _validateEnd__max____common_float_or_param_type();
 
115677
        if ( !validationResult ) return false;
 
115678
 
 
115679
    } // validation
 
115680
#endif
 
115681
 
 
115682
    return true;
 
115683
}
 
115684
 
 
115685
//---------------------------------------------------------------------
 
115686
bool ColladaParserAutoGen15Private::_freeAttributes__max____common_float_or_param_type( void* attributeData )
 
115687
{
 
115688
    return true;
 
115689
}
 
115690
 
 
115691
//---------------------------------------------------------------------
 
115692
const frame_origin__AttributeData frame_origin__AttributeData::DEFAULT = {0};
 
115693
 
 
115694
//---------------------------------------------------------------------
 
115695
bool ColladaParserAutoGen15Private::_data__frame_origin( const ParserChar* text, size_t textLength )
 
115696
{
 
115697
    return true;
 
115698
}
 
115699
 
 
115700
//---------------------------------------------------------------------
 
115701
bool ColladaParserAutoGen15Private::_preBegin__frame_origin( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
115702
{
 
115703
#ifdef GENERATEDSAXPARSER_VALIDATION
 
115704
    if ( mValidate )
 
115705
    {
 
115706
 
 
115707
        bool validationResult = _validateBegin__frame_origin( attributes, attributeDataPtr, validationDataPtr );
 
115708
        if ( !validationResult ) return false;
 
115709
 
 
115710
    } // validation
 
115711
#endif
 
115712
 
 
115713
frame_origin__AttributeData* attributeData = newData<frame_origin__AttributeData>(attributeDataPtr);
 
115714
 
 
115715
const ParserChar** attributeArray = attributes.attributes;
 
115716
if ( attributeArray )
 
115717
{
 
115718
    while (true)
 
115719
    {
 
115720
        const ParserChar * attribute = *attributeArray;
 
115721
        if ( !attribute )
 
115722
            break;
 
115723
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
115724
        attributeArray++;
 
115725
        if ( !attributeArray )
 
115726
            return false;
 
115727
        const ParserChar* attributeValue = *attributeArray;
 
115728
        attributeArray++;
 
115729
 
 
115730
 
 
115731
    switch ( hash )
 
115732
    {
 
115733
    case HASH_ATTRIBUTE_LINK:
 
115734
    {
 
115735
 
 
115736
attributeData->link = attributeValue;
 
115737
 
 
115738
    break;
 
115739
    }
 
115740
    default:
 
115741
    {
 
115742
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FRAME_ORIGIN, attribute, attributeValue))
 
115743
            {return false;}
 
115744
    }
 
115745
    }
 
115746
    }
 
115747
}
 
115748
 
 
115749
 
 
115750
    return true;
 
115751
}
 
115752
 
 
115753
//---------------------------------------------------------------------
 
115754
bool ColladaParserAutoGen15Private::_preEnd__frame_origin()
 
115755
{
 
115756
#ifdef GENERATEDSAXPARSER_VALIDATION
 
115757
    if ( mValidate )
 
115758
    {
 
115759
 
 
115760
        bool validationResult = _validateEnd__frame_origin();
 
115761
        if ( !validationResult ) return false;
 
115762
 
 
115763
    } // validation
 
115764
#endif
 
115765
 
 
115766
    return true;
 
115767
}
 
115768
 
 
115769
//---------------------------------------------------------------------
 
115770
bool ColladaParserAutoGen15Private::_freeAttributes__frame_origin( void* attributeData )
 
115771
{
 
115772
    frame_origin__AttributeData* typedAttributeData = static_cast<frame_origin__AttributeData*>(attributeData);
 
115773
 
 
115774
    typedAttributeData->~frame_origin__AttributeData();
 
115775
 
 
115776
    return true;
 
115777
}
 
115778
 
 
115779
//---------------------------------------------------------------------
 
115780
const frame_tip__AttributeData frame_tip__AttributeData::DEFAULT = {0};
 
115781
 
 
115782
//---------------------------------------------------------------------
 
115783
bool ColladaParserAutoGen15Private::_data__frame_tip( const ParserChar* text, size_t textLength )
 
115784
{
 
115785
    return true;
 
115786
}
 
115787
 
 
115788
//---------------------------------------------------------------------
 
115789
bool ColladaParserAutoGen15Private::_preBegin__frame_tip( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
115790
{
 
115791
#ifdef GENERATEDSAXPARSER_VALIDATION
 
115792
    if ( mValidate )
 
115793
    {
 
115794
 
 
115795
        bool validationResult = _validateBegin__frame_tip( attributes, attributeDataPtr, validationDataPtr );
 
115796
        if ( !validationResult ) return false;
 
115797
 
 
115798
    } // validation
 
115799
#endif
 
115800
 
 
115801
frame_tip__AttributeData* attributeData = newData<frame_tip__AttributeData>(attributeDataPtr);
 
115802
 
 
115803
const ParserChar** attributeArray = attributes.attributes;
 
115804
if ( attributeArray )
 
115805
{
 
115806
    while (true)
 
115807
    {
 
115808
        const ParserChar * attribute = *attributeArray;
 
115809
        if ( !attribute )
 
115810
            break;
 
115811
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
115812
        attributeArray++;
 
115813
        if ( !attributeArray )
 
115814
            return false;
 
115815
        const ParserChar* attributeValue = *attributeArray;
 
115816
        attributeArray++;
 
115817
 
 
115818
 
 
115819
    switch ( hash )
 
115820
    {
 
115821
    case HASH_ATTRIBUTE_LINK:
 
115822
    {
 
115823
 
 
115824
attributeData->link = attributeValue;
 
115825
 
 
115826
    break;
 
115827
    }
 
115828
    default:
 
115829
    {
 
115830
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FRAME_TIP, attribute, attributeValue))
 
115831
            {return false;}
 
115832
    }
 
115833
    }
 
115834
    }
 
115835
}
 
115836
 
 
115837
 
 
115838
    return true;
 
115839
}
 
115840
 
 
115841
//---------------------------------------------------------------------
 
115842
bool ColladaParserAutoGen15Private::_preEnd__frame_tip()
 
115843
{
 
115844
#ifdef GENERATEDSAXPARSER_VALIDATION
 
115845
    if ( mValidate )
 
115846
    {
 
115847
 
 
115848
        bool validationResult = _validateEnd__frame_tip();
 
115849
        if ( !validationResult ) return false;
 
115850
 
 
115851
    } // validation
 
115852
#endif
 
115853
 
 
115854
    return true;
 
115855
}
 
115856
 
 
115857
//---------------------------------------------------------------------
 
115858
bool ColladaParserAutoGen15Private::_freeAttributes__frame_tip( void* attributeData )
 
115859
{
 
115860
    frame_tip__AttributeData* typedAttributeData = static_cast<frame_tip__AttributeData*>(attributeData);
 
115861
 
 
115862
    typedAttributeData->~frame_tip__AttributeData();
 
115863
 
 
115864
    return true;
 
115865
}
 
115866
 
 
115867
//---------------------------------------------------------------------
 
115868
const frame_tcp__AttributeData frame_tcp__AttributeData::DEFAULT = {0};
 
115869
 
 
115870
//---------------------------------------------------------------------
 
115871
bool ColladaParserAutoGen15Private::_data__frame_tcp( const ParserChar* text, size_t textLength )
 
115872
{
 
115873
    return true;
 
115874
}
 
115875
 
 
115876
//---------------------------------------------------------------------
 
115877
bool ColladaParserAutoGen15Private::_preBegin__frame_tcp( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
115878
{
 
115879
#ifdef GENERATEDSAXPARSER_VALIDATION
 
115880
    if ( mValidate )
 
115881
    {
 
115882
 
 
115883
        bool validationResult = _validateBegin__frame_tcp( attributes, attributeDataPtr, validationDataPtr );
 
115884
        if ( !validationResult ) return false;
 
115885
 
 
115886
    } // validation
 
115887
#endif
 
115888
 
 
115889
frame_tcp__AttributeData* attributeData = newData<frame_tcp__AttributeData>(attributeDataPtr);
 
115890
 
 
115891
const ParserChar** attributeArray = attributes.attributes;
 
115892
if ( attributeArray )
 
115893
{
 
115894
    while (true)
 
115895
    {
 
115896
        const ParserChar * attribute = *attributeArray;
 
115897
        if ( !attribute )
 
115898
            break;
 
115899
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
115900
        attributeArray++;
 
115901
        if ( !attributeArray )
 
115902
            return false;
 
115903
        const ParserChar* attributeValue = *attributeArray;
 
115904
        attributeArray++;
 
115905
 
 
115906
 
 
115907
    switch ( hash )
 
115908
    {
 
115909
    case HASH_ATTRIBUTE_LINK:
 
115910
    {
 
115911
 
 
115912
attributeData->link = attributeValue;
 
115913
 
 
115914
    break;
 
115915
    }
 
115916
    default:
 
115917
    {
 
115918
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FRAME_TCP, attribute, attributeValue))
 
115919
            {return false;}
 
115920
    }
 
115921
    }
 
115922
    }
 
115923
}
 
115924
 
 
115925
 
 
115926
    return true;
 
115927
}
 
115928
 
 
115929
//---------------------------------------------------------------------
 
115930
bool ColladaParserAutoGen15Private::_preEnd__frame_tcp()
 
115931
{
 
115932
#ifdef GENERATEDSAXPARSER_VALIDATION
 
115933
    if ( mValidate )
 
115934
    {
 
115935
 
 
115936
        bool validationResult = _validateEnd__frame_tcp();
 
115937
        if ( !validationResult ) return false;
 
115938
 
 
115939
    } // validation
 
115940
#endif
 
115941
 
 
115942
    return true;
 
115943
}
 
115944
 
 
115945
//---------------------------------------------------------------------
 
115946
bool ColladaParserAutoGen15Private::_freeAttributes__frame_tcp( void* attributeData )
 
115947
{
 
115948
    frame_tcp__AttributeData* typedAttributeData = static_cast<frame_tcp__AttributeData*>(attributeData);
 
115949
 
 
115950
    typedAttributeData->~frame_tcp__AttributeData();
 
115951
 
 
115952
    return true;
 
115953
}
 
115954
 
 
115955
//---------------------------------------------------------------------
 
115956
const frame_object__AttributeData frame_object__AttributeData::DEFAULT = {0};
 
115957
 
 
115958
//---------------------------------------------------------------------
 
115959
bool ColladaParserAutoGen15Private::_data__frame_object( const ParserChar* text, size_t textLength )
 
115960
{
 
115961
    return true;
 
115962
}
 
115963
 
 
115964
//---------------------------------------------------------------------
 
115965
bool ColladaParserAutoGen15Private::_preBegin__frame_object( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
115966
{
 
115967
#ifdef GENERATEDSAXPARSER_VALIDATION
 
115968
    if ( mValidate )
 
115969
    {
 
115970
 
 
115971
        bool validationResult = _validateBegin__frame_object( attributes, attributeDataPtr, validationDataPtr );
 
115972
        if ( !validationResult ) return false;
 
115973
 
 
115974
    } // validation
 
115975
#endif
 
115976
 
 
115977
frame_object__AttributeData* attributeData = newData<frame_object__AttributeData>(attributeDataPtr);
 
115978
 
 
115979
const ParserChar** attributeArray = attributes.attributes;
 
115980
if ( attributeArray )
 
115981
{
 
115982
    while (true)
 
115983
    {
 
115984
        const ParserChar * attribute = *attributeArray;
 
115985
        if ( !attribute )
 
115986
            break;
 
115987
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
115988
        attributeArray++;
 
115989
        if ( !attributeArray )
 
115990
            return false;
 
115991
        const ParserChar* attributeValue = *attributeArray;
 
115992
        attributeArray++;
 
115993
 
 
115994
 
 
115995
    switch ( hash )
 
115996
    {
 
115997
    case HASH_ATTRIBUTE_LINK:
 
115998
    {
 
115999
 
 
116000
attributeData->link = attributeValue;
 
116001
 
 
116002
    break;
 
116003
    }
 
116004
    default:
 
116005
    {
 
116006
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_FRAME_OBJECT, attribute, attributeValue))
 
116007
            {return false;}
 
116008
    }
 
116009
    }
 
116010
    }
 
116011
}
 
116012
 
 
116013
 
 
116014
    return true;
 
116015
}
 
116016
 
 
116017
//---------------------------------------------------------------------
 
116018
bool ColladaParserAutoGen15Private::_preEnd__frame_object()
 
116019
{
 
116020
#ifdef GENERATEDSAXPARSER_VALIDATION
 
116021
    if ( mValidate )
 
116022
    {
 
116023
 
 
116024
        bool validationResult = _validateEnd__frame_object();
 
116025
        if ( !validationResult ) return false;
 
116026
 
 
116027
    } // validation
 
116028
#endif
 
116029
 
 
116030
    return true;
 
116031
}
 
116032
 
 
116033
//---------------------------------------------------------------------
 
116034
bool ColladaParserAutoGen15Private::_freeAttributes__frame_object( void* attributeData )
 
116035
{
 
116036
    frame_object__AttributeData* typedAttributeData = static_cast<frame_object__AttributeData*>(attributeData);
 
116037
 
 
116038
    typedAttributeData->~frame_object__AttributeData();
 
116039
 
 
116040
    return true;
 
116041
}
 
116042
 
 
116043
//---------------------------------------------------------------------
 
116044
bool ColladaParserAutoGen15Private::_data__motion( const ParserChar* text, size_t textLength )
 
116045
{
 
116046
    return true;
 
116047
}
 
116048
 
 
116049
//---------------------------------------------------------------------
 
116050
bool ColladaParserAutoGen15Private::_preBegin__motion( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
116051
{
 
116052
#ifdef GENERATEDSAXPARSER_VALIDATION
 
116053
    if ( mValidate )
 
116054
    {
 
116055
 
 
116056
        bool validationResult = _validateBegin__motion( attributes, attributeDataPtr, validationDataPtr );
 
116057
        if ( !validationResult ) return false;
 
116058
 
 
116059
    } // validation
 
116060
#endif
 
116061
 
 
116062
    return true;
 
116063
}
 
116064
 
 
116065
//---------------------------------------------------------------------
 
116066
bool ColladaParserAutoGen15Private::_preEnd__motion()
 
116067
{
 
116068
#ifdef GENERATEDSAXPARSER_VALIDATION
 
116069
    if ( mValidate )
 
116070
    {
 
116071
 
 
116072
        bool validationResult = _validateEnd__motion();
 
116073
        if ( !validationResult ) return false;
 
116074
 
 
116075
    } // validation
 
116076
#endif
 
116077
 
 
116078
    return true;
 
116079
}
 
116080
 
 
116081
//---------------------------------------------------------------------
 
116082
bool ColladaParserAutoGen15Private::_freeAttributes__motion( void* attributeData )
 
116083
{
 
116084
    return true;
 
116085
}
 
116086
 
 
116087
//---------------------------------------------------------------------
 
116088
const instance_articulated_system__AttributeData instance_articulated_system__AttributeData::DEFAULT = {0, 0, 0, 0};
 
116089
 
 
116090
//---------------------------------------------------------------------
 
116091
bool ColladaParserAutoGen15Private::_data__instance_articulated_system( const ParserChar* text, size_t textLength )
 
116092
{
 
116093
    return true;
 
116094
}
 
116095
 
 
116096
//---------------------------------------------------------------------
 
116097
bool ColladaParserAutoGen15Private::_preBegin__instance_articulated_system( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
116098
{
 
116099
#ifdef GENERATEDSAXPARSER_VALIDATION
 
116100
    if ( mValidate )
 
116101
    {
 
116102
 
 
116103
        bool validationResult = _validateBegin__instance_articulated_system( attributes, attributeDataPtr, validationDataPtr );
 
116104
        if ( !validationResult ) return false;
 
116105
 
 
116106
    } // validation
 
116107
#endif
 
116108
 
 
116109
instance_articulated_system__AttributeData* attributeData = newData<instance_articulated_system__AttributeData>(attributeDataPtr);
 
116110
 
 
116111
const ParserChar** attributeArray = attributes.attributes;
 
116112
if ( attributeArray )
 
116113
{
 
116114
    while (true)
 
116115
    {
 
116116
        const ParserChar * attribute = *attributeArray;
 
116117
        if ( !attribute )
 
116118
            break;
 
116119
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
116120
        attributeArray++;
 
116121
        if ( !attributeArray )
 
116122
            return false;
 
116123
        const ParserChar* attributeValue = *attributeArray;
 
116124
        attributeArray++;
 
116125
 
 
116126
 
 
116127
    switch ( hash )
 
116128
    {
 
116129
    case HASH_ATTRIBUTE_SID:
 
116130
    {
 
116131
 
 
116132
attributeData->sid = attributeValue;
 
116133
#ifdef GENERATEDSAXPARSER_VALIDATION
 
116134
    if ( mValidate )
 
116135
    {
 
116136
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
116137
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
116138
    {
 
116139
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
116140
            simpleTypeValidationResult,
 
116141
            HASH_ELEMENT_INSTANCE_ARTICULATED_SYSTEM,
 
116142
            HASH_ATTRIBUTE_SID,
 
116143
            attributeValue) )
 
116144
        {
 
116145
            return false;
 
116146
        }
 
116147
    }
 
116148
    } // validation
 
116149
#endif
 
116150
 
 
116151
    break;
 
116152
    }
 
116153
    case HASH_ATTRIBUTE_URL:
 
116154
    {
 
116155
bool failed;
 
116156
attributeData->url = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
116157
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
116158
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
116159
        HASH_ELEMENT_INSTANCE_ARTICULATED_SYSTEM,
 
116160
        HASH_ATTRIBUTE_URL,
 
116161
        attributeValue))
 
116162
{
 
116163
    return false;
 
116164
}
 
116165
if ( !failed )
 
116166
    attributeData->present_attributes |= instance_articulated_system__AttributeData::ATTRIBUTE_URL_PRESENT;
 
116167
 
 
116168
    break;
 
116169
    }
 
116170
    case HASH_ATTRIBUTE_NAME:
 
116171
    {
 
116172
 
 
116173
attributeData->name = attributeValue;
 
116174
 
 
116175
    break;
 
116176
    }
 
116177
    default:
 
116178
    {
 
116179
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_INSTANCE_ARTICULATED_SYSTEM, attribute, attributeValue))
 
116180
            {return false;}
 
116181
    }
 
116182
    }
 
116183
    }
 
116184
}
 
116185
if ((attributeData->present_attributes & instance_articulated_system__AttributeData::ATTRIBUTE_URL_PRESENT) == 0)
 
116186
{
 
116187
    attributeData->url = COLLADABU::URI("");
 
116188
}
 
116189
if ( (attributeData->present_attributes & instance_articulated_system__AttributeData::ATTRIBUTE_URL_PRESENT) == 0 )
 
116190
{
 
116191
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_INSTANCE_ARTICULATED_SYSTEM, HASH_ATTRIBUTE_URL, 0 ) )
 
116192
        return false;
 
116193
}
 
116194
 
 
116195
 
 
116196
    return true;
 
116197
}
 
116198
 
 
116199
//---------------------------------------------------------------------
 
116200
bool ColladaParserAutoGen15Private::_preEnd__instance_articulated_system()
 
116201
{
 
116202
#ifdef GENERATEDSAXPARSER_VALIDATION
 
116203
    if ( mValidate )
 
116204
    {
 
116205
 
 
116206
        bool validationResult = _validateEnd__instance_articulated_system();
 
116207
        if ( !validationResult ) return false;
 
116208
 
 
116209
    } // validation
 
116210
#endif
 
116211
 
 
116212
    return true;
 
116213
}
 
116214
 
 
116215
//---------------------------------------------------------------------
 
116216
bool ColladaParserAutoGen15Private::_freeAttributes__instance_articulated_system( void* attributeData )
 
116217
{
 
116218
    instance_articulated_system__AttributeData* typedAttributeData = static_cast<instance_articulated_system__AttributeData*>(attributeData);
 
116219
 
 
116220
    typedAttributeData->~instance_articulated_system__AttributeData();
 
116221
 
 
116222
    return true;
 
116223
}
 
116224
 
 
116225
//---------------------------------------------------------------------
 
116226
bool ColladaParserAutoGen15Private::_data__technique_common____motion_technique_type( const ParserChar* text, size_t textLength )
 
116227
{
 
116228
    return true;
 
116229
}
 
116230
 
 
116231
//---------------------------------------------------------------------
 
116232
bool ColladaParserAutoGen15Private::_preBegin__technique_common____motion_technique_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
116233
{
 
116234
#ifdef GENERATEDSAXPARSER_VALIDATION
 
116235
    if ( mValidate )
 
116236
    {
 
116237
 
 
116238
        bool validationResult = _validateBegin__technique_common____motion_technique_type( attributes, attributeDataPtr, validationDataPtr );
 
116239
        if ( !validationResult ) return false;
 
116240
 
 
116241
    } // validation
 
116242
#endif
 
116243
 
 
116244
    return true;
 
116245
}
 
116246
 
 
116247
//---------------------------------------------------------------------
 
116248
bool ColladaParserAutoGen15Private::_preEnd__technique_common____motion_technique_type()
 
116249
{
 
116250
#ifdef GENERATEDSAXPARSER_VALIDATION
 
116251
    if ( mValidate )
 
116252
    {
 
116253
 
 
116254
        bool validationResult = _validateEnd__technique_common____motion_technique_type();
 
116255
        if ( !validationResult ) return false;
 
116256
 
 
116257
    } // validation
 
116258
#endif
 
116259
 
 
116260
    return true;
 
116261
}
 
116262
 
 
116263
//---------------------------------------------------------------------
 
116264
bool ColladaParserAutoGen15Private::_freeAttributes__technique_common____motion_technique_type( void* attributeData )
 
116265
{
 
116266
    return true;
 
116267
}
 
116268
 
 
116269
//---------------------------------------------------------------------
 
116270
const axis_info____motion_axis_info_type__AttributeData axis_info____motion_axis_info_type__AttributeData::DEFAULT = {0, 0, 0};
 
116271
 
 
116272
//---------------------------------------------------------------------
 
116273
bool ColladaParserAutoGen15Private::_data__axis_info____motion_axis_info_type( const ParserChar* text, size_t textLength )
 
116274
{
 
116275
    return true;
 
116276
}
 
116277
 
 
116278
//---------------------------------------------------------------------
 
116279
bool ColladaParserAutoGen15Private::_preBegin__axis_info____motion_axis_info_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
116280
{
 
116281
#ifdef GENERATEDSAXPARSER_VALIDATION
 
116282
    if ( mValidate )
 
116283
    {
 
116284
 
 
116285
        bool validationResult = _validateBegin__axis_info____motion_axis_info_type( attributes, attributeDataPtr, validationDataPtr );
 
116286
        if ( !validationResult ) return false;
 
116287
 
 
116288
    } // validation
 
116289
#endif
 
116290
 
 
116291
axis_info____motion_axis_info_type__AttributeData* attributeData = newData<axis_info____motion_axis_info_type__AttributeData>(attributeDataPtr);
 
116292
 
 
116293
const ParserChar** attributeArray = attributes.attributes;
 
116294
if ( attributeArray )
 
116295
{
 
116296
    while (true)
 
116297
    {
 
116298
        const ParserChar * attribute = *attributeArray;
 
116299
        if ( !attribute )
 
116300
            break;
 
116301
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
116302
        attributeArray++;
 
116303
        if ( !attributeArray )
 
116304
            return false;
 
116305
        const ParserChar* attributeValue = *attributeArray;
 
116306
        attributeArray++;
 
116307
 
 
116308
 
 
116309
    switch ( hash )
 
116310
    {
 
116311
    case HASH_ATTRIBUTE_SID:
 
116312
    {
 
116313
 
 
116314
attributeData->sid = attributeValue;
 
116315
#ifdef GENERATEDSAXPARSER_VALIDATION
 
116316
    if ( mValidate )
 
116317
    {
 
116318
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
116319
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
116320
    {
 
116321
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
116322
            simpleTypeValidationResult,
 
116323
            HASH_ELEMENT_AXIS_INFO,
 
116324
            HASH_ATTRIBUTE_SID,
 
116325
            attributeValue) )
 
116326
        {
 
116327
            return false;
 
116328
        }
 
116329
    }
 
116330
    } // validation
 
116331
#endif
 
116332
 
 
116333
    break;
 
116334
    }
 
116335
    case HASH_ATTRIBUTE_AXIS:
 
116336
    {
 
116337
 
 
116338
attributeData->axis = attributeValue;
 
116339
 
 
116340
    break;
 
116341
    }
 
116342
    case HASH_ATTRIBUTE_NAME:
 
116343
    {
 
116344
 
 
116345
attributeData->name = attributeValue;
 
116346
 
 
116347
    break;
 
116348
    }
 
116349
    default:
 
116350
    {
 
116351
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_AXIS_INFO, attribute, attributeValue))
 
116352
            {return false;}
 
116353
    }
 
116354
    }
 
116355
    }
 
116356
}
 
116357
if ( !attributeData->axis )
 
116358
{
 
116359
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_AXIS_INFO, HASH_ATTRIBUTE_AXIS, 0 ) )
 
116360
        return false;
 
116361
}
 
116362
 
 
116363
 
 
116364
    return true;
 
116365
}
 
116366
 
 
116367
//---------------------------------------------------------------------
 
116368
bool ColladaParserAutoGen15Private::_preEnd__axis_info____motion_axis_info_type()
 
116369
{
 
116370
#ifdef GENERATEDSAXPARSER_VALIDATION
 
116371
    if ( mValidate )
 
116372
    {
 
116373
 
 
116374
        bool validationResult = _validateEnd__axis_info____motion_axis_info_type();
 
116375
        if ( !validationResult ) return false;
 
116376
 
 
116377
    } // validation
 
116378
#endif
 
116379
 
 
116380
    return true;
 
116381
}
 
116382
 
 
116383
//---------------------------------------------------------------------
 
116384
bool ColladaParserAutoGen15Private::_freeAttributes__axis_info____motion_axis_info_type( void* attributeData )
 
116385
{
 
116386
    axis_info____motion_axis_info_type__AttributeData* typedAttributeData = static_cast<axis_info____motion_axis_info_type__AttributeData*>(attributeData);
 
116387
 
 
116388
    typedAttributeData->~axis_info____motion_axis_info_type__AttributeData();
 
116389
 
 
116390
    return true;
 
116391
}
 
116392
 
 
116393
//---------------------------------------------------------------------
 
116394
bool ColladaParserAutoGen15Private::_data__speed____common_float_or_param_type( const ParserChar* text, size_t textLength )
 
116395
{
 
116396
    return true;
 
116397
}
 
116398
 
 
116399
//---------------------------------------------------------------------
 
116400
bool ColladaParserAutoGen15Private::_preBegin__speed____common_float_or_param_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
116401
{
 
116402
#ifdef GENERATEDSAXPARSER_VALIDATION
 
116403
    if ( mValidate )
 
116404
    {
 
116405
 
 
116406
        bool validationResult = _validateBegin__speed____common_float_or_param_type( attributes, attributeDataPtr, validationDataPtr );
 
116407
        if ( !validationResult ) return false;
 
116408
 
 
116409
    } // validation
 
116410
#endif
 
116411
 
 
116412
    return true;
 
116413
}
 
116414
 
 
116415
//---------------------------------------------------------------------
 
116416
bool ColladaParserAutoGen15Private::_preEnd__speed____common_float_or_param_type()
 
116417
{
 
116418
#ifdef GENERATEDSAXPARSER_VALIDATION
 
116419
    if ( mValidate )
 
116420
    {
 
116421
 
 
116422
        bool validationResult = _validateEnd__speed____common_float_or_param_type();
 
116423
        if ( !validationResult ) return false;
 
116424
 
 
116425
    } // validation
 
116426
#endif
 
116427
 
 
116428
    return true;
 
116429
}
 
116430
 
 
116431
//---------------------------------------------------------------------
 
116432
bool ColladaParserAutoGen15Private::_freeAttributes__speed____common_float_or_param_type( void* attributeData )
 
116433
{
 
116434
    return true;
 
116435
}
 
116436
 
 
116437
//---------------------------------------------------------------------
 
116438
bool ColladaParserAutoGen15Private::_data__acceleration____common_float_or_param_type( const ParserChar* text, size_t textLength )
 
116439
{
 
116440
    return true;
 
116441
}
 
116442
 
 
116443
//---------------------------------------------------------------------
 
116444
bool ColladaParserAutoGen15Private::_preBegin__acceleration____common_float_or_param_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
116445
{
 
116446
#ifdef GENERATEDSAXPARSER_VALIDATION
 
116447
    if ( mValidate )
 
116448
    {
 
116449
 
 
116450
        bool validationResult = _validateBegin__acceleration____common_float_or_param_type( attributes, attributeDataPtr, validationDataPtr );
 
116451
        if ( !validationResult ) return false;
 
116452
 
 
116453
    } // validation
 
116454
#endif
 
116455
 
 
116456
    return true;
 
116457
}
 
116458
 
 
116459
//---------------------------------------------------------------------
 
116460
bool ColladaParserAutoGen15Private::_preEnd__acceleration____common_float_or_param_type()
 
116461
{
 
116462
#ifdef GENERATEDSAXPARSER_VALIDATION
 
116463
    if ( mValidate )
 
116464
    {
 
116465
 
 
116466
        bool validationResult = _validateEnd__acceleration____common_float_or_param_type();
 
116467
        if ( !validationResult ) return false;
 
116468
 
 
116469
    } // validation
 
116470
#endif
 
116471
 
 
116472
    return true;
 
116473
}
 
116474
 
 
116475
//---------------------------------------------------------------------
 
116476
bool ColladaParserAutoGen15Private::_freeAttributes__acceleration____common_float_or_param_type( void* attributeData )
 
116477
{
 
116478
    return true;
 
116479
}
 
116480
 
 
116481
//---------------------------------------------------------------------
 
116482
bool ColladaParserAutoGen15Private::_data__deceleration____common_float_or_param_type( const ParserChar* text, size_t textLength )
 
116483
{
 
116484
    return true;
 
116485
}
 
116486
 
 
116487
//---------------------------------------------------------------------
 
116488
bool ColladaParserAutoGen15Private::_preBegin__deceleration____common_float_or_param_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
116489
{
 
116490
#ifdef GENERATEDSAXPARSER_VALIDATION
 
116491
    if ( mValidate )
 
116492
    {
 
116493
 
 
116494
        bool validationResult = _validateBegin__deceleration____common_float_or_param_type( attributes, attributeDataPtr, validationDataPtr );
 
116495
        if ( !validationResult ) return false;
 
116496
 
 
116497
    } // validation
 
116498
#endif
 
116499
 
 
116500
    return true;
 
116501
}
 
116502
 
 
116503
//---------------------------------------------------------------------
 
116504
bool ColladaParserAutoGen15Private::_preEnd__deceleration____common_float_or_param_type()
 
116505
{
 
116506
#ifdef GENERATEDSAXPARSER_VALIDATION
 
116507
    if ( mValidate )
 
116508
    {
 
116509
 
 
116510
        bool validationResult = _validateEnd__deceleration____common_float_or_param_type();
 
116511
        if ( !validationResult ) return false;
 
116512
 
 
116513
    } // validation
 
116514
#endif
 
116515
 
 
116516
    return true;
 
116517
}
 
116518
 
 
116519
//---------------------------------------------------------------------
 
116520
bool ColladaParserAutoGen15Private::_freeAttributes__deceleration____common_float_or_param_type( void* attributeData )
 
116521
{
 
116522
    return true;
 
116523
}
 
116524
 
 
116525
//---------------------------------------------------------------------
 
116526
bool ColladaParserAutoGen15Private::_data__jerk____common_float_or_param_type( const ParserChar* text, size_t textLength )
 
116527
{
 
116528
    return true;
 
116529
}
 
116530
 
 
116531
//---------------------------------------------------------------------
 
116532
bool ColladaParserAutoGen15Private::_preBegin__jerk____common_float_or_param_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
116533
{
 
116534
#ifdef GENERATEDSAXPARSER_VALIDATION
 
116535
    if ( mValidate )
 
116536
    {
 
116537
 
 
116538
        bool validationResult = _validateBegin__jerk____common_float_or_param_type( attributes, attributeDataPtr, validationDataPtr );
 
116539
        if ( !validationResult ) return false;
 
116540
 
 
116541
    } // validation
 
116542
#endif
 
116543
 
 
116544
    return true;
 
116545
}
 
116546
 
 
116547
//---------------------------------------------------------------------
 
116548
bool ColladaParserAutoGen15Private::_preEnd__jerk____common_float_or_param_type()
 
116549
{
 
116550
#ifdef GENERATEDSAXPARSER_VALIDATION
 
116551
    if ( mValidate )
 
116552
    {
 
116553
 
 
116554
        bool validationResult = _validateEnd__jerk____common_float_or_param_type();
 
116555
        if ( !validationResult ) return false;
 
116556
 
 
116557
    } // validation
 
116558
#endif
 
116559
 
 
116560
    return true;
 
116561
}
 
116562
 
 
116563
//---------------------------------------------------------------------
 
116564
bool ColladaParserAutoGen15Private::_freeAttributes__jerk____common_float_or_param_type( void* attributeData )
 
116565
{
 
116566
    return true;
 
116567
}
 
116568
 
 
116569
//---------------------------------------------------------------------
 
116570
const effector_info__AttributeData effector_info__AttributeData::DEFAULT = {0, 0};
 
116571
 
 
116572
//---------------------------------------------------------------------
 
116573
bool ColladaParserAutoGen15Private::_data__effector_info( const ParserChar* text, size_t textLength )
 
116574
{
 
116575
    return true;
 
116576
}
 
116577
 
 
116578
//---------------------------------------------------------------------
 
116579
bool ColladaParserAutoGen15Private::_preBegin__effector_info( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
116580
{
 
116581
#ifdef GENERATEDSAXPARSER_VALIDATION
 
116582
    if ( mValidate )
 
116583
    {
 
116584
 
 
116585
        bool validationResult = _validateBegin__effector_info( attributes, attributeDataPtr, validationDataPtr );
 
116586
        if ( !validationResult ) return false;
 
116587
 
 
116588
    } // validation
 
116589
#endif
 
116590
 
 
116591
effector_info__AttributeData* attributeData = newData<effector_info__AttributeData>(attributeDataPtr);
 
116592
 
 
116593
const ParserChar** attributeArray = attributes.attributes;
 
116594
if ( attributeArray )
 
116595
{
 
116596
    while (true)
 
116597
    {
 
116598
        const ParserChar * attribute = *attributeArray;
 
116599
        if ( !attribute )
 
116600
            break;
 
116601
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
116602
        attributeArray++;
 
116603
        if ( !attributeArray )
 
116604
            return false;
 
116605
        const ParserChar* attributeValue = *attributeArray;
 
116606
        attributeArray++;
 
116607
 
 
116608
 
 
116609
    switch ( hash )
 
116610
    {
 
116611
    case HASH_ATTRIBUTE_SID:
 
116612
    {
 
116613
 
 
116614
attributeData->sid = attributeValue;
 
116615
#ifdef GENERATEDSAXPARSER_VALIDATION
 
116616
    if ( mValidate )
 
116617
    {
 
116618
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
116619
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
116620
    {
 
116621
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
116622
            simpleTypeValidationResult,
 
116623
            HASH_ELEMENT_EFFECTOR_INFO,
 
116624
            HASH_ATTRIBUTE_SID,
 
116625
            attributeValue) )
 
116626
        {
 
116627
            return false;
 
116628
        }
 
116629
    }
 
116630
    } // validation
 
116631
#endif
 
116632
 
 
116633
    break;
 
116634
    }
 
116635
    case HASH_ATTRIBUTE_NAME:
 
116636
    {
 
116637
 
 
116638
attributeData->name = attributeValue;
 
116639
 
 
116640
    break;
 
116641
    }
 
116642
    default:
 
116643
    {
 
116644
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_EFFECTOR_INFO, attribute, attributeValue))
 
116645
            {return false;}
 
116646
    }
 
116647
    }
 
116648
    }
 
116649
}
 
116650
 
 
116651
 
 
116652
    return true;
 
116653
}
 
116654
 
 
116655
//---------------------------------------------------------------------
 
116656
bool ColladaParserAutoGen15Private::_preEnd__effector_info()
 
116657
{
 
116658
#ifdef GENERATEDSAXPARSER_VALIDATION
 
116659
    if ( mValidate )
 
116660
    {
 
116661
 
 
116662
        bool validationResult = _validateEnd__effector_info();
 
116663
        if ( !validationResult ) return false;
 
116664
 
 
116665
    } // validation
 
116666
#endif
 
116667
 
 
116668
    return true;
 
116669
}
 
116670
 
 
116671
//---------------------------------------------------------------------
 
116672
bool ColladaParserAutoGen15Private::_freeAttributes__effector_info( void* attributeData )
 
116673
{
 
116674
    effector_info__AttributeData* typedAttributeData = static_cast<effector_info__AttributeData*>(attributeData);
 
116675
 
 
116676
    typedAttributeData->~effector_info__AttributeData();
 
116677
 
 
116678
    return true;
 
116679
}
 
116680
 
 
116681
//---------------------------------------------------------------------
 
116682
bool ColladaParserAutoGen15Private::_data__speed____common_float2_or_param_type( const ParserChar* text, size_t textLength )
 
116683
{
 
116684
    return true;
 
116685
}
 
116686
 
 
116687
//---------------------------------------------------------------------
 
116688
bool ColladaParserAutoGen15Private::_preBegin__speed____common_float2_or_param_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
116689
{
 
116690
#ifdef GENERATEDSAXPARSER_VALIDATION
 
116691
    if ( mValidate )
 
116692
    {
 
116693
 
 
116694
        bool validationResult = _validateBegin__speed____common_float2_or_param_type( attributes, attributeDataPtr, validationDataPtr );
 
116695
        if ( !validationResult ) return false;
 
116696
 
 
116697
    } // validation
 
116698
#endif
 
116699
 
 
116700
    return true;
 
116701
}
 
116702
 
 
116703
//---------------------------------------------------------------------
 
116704
bool ColladaParserAutoGen15Private::_preEnd__speed____common_float2_or_param_type()
 
116705
{
 
116706
#ifdef GENERATEDSAXPARSER_VALIDATION
 
116707
    if ( mValidate )
 
116708
    {
 
116709
 
 
116710
        bool validationResult = _validateEnd__speed____common_float2_or_param_type();
 
116711
        if ( !validationResult ) return false;
 
116712
 
 
116713
    } // validation
 
116714
#endif
 
116715
 
 
116716
    return true;
 
116717
}
 
116718
 
 
116719
//---------------------------------------------------------------------
 
116720
bool ColladaParserAutoGen15Private::_freeAttributes__speed____common_float2_or_param_type( void* attributeData )
 
116721
{
 
116722
    return true;
 
116723
}
 
116724
 
 
116725
//---------------------------------------------------------------------
 
116726
bool ColladaParserAutoGen15Private::_data__acceleration____common_float2_or_param_type( const ParserChar* text, size_t textLength )
 
116727
{
 
116728
    return true;
 
116729
}
 
116730
 
 
116731
//---------------------------------------------------------------------
 
116732
bool ColladaParserAutoGen15Private::_preBegin__acceleration____common_float2_or_param_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
116733
{
 
116734
#ifdef GENERATEDSAXPARSER_VALIDATION
 
116735
    if ( mValidate )
 
116736
    {
 
116737
 
 
116738
        bool validationResult = _validateBegin__acceleration____common_float2_or_param_type( attributes, attributeDataPtr, validationDataPtr );
 
116739
        if ( !validationResult ) return false;
 
116740
 
 
116741
    } // validation
 
116742
#endif
 
116743
 
 
116744
    return true;
 
116745
}
 
116746
 
 
116747
//---------------------------------------------------------------------
 
116748
bool ColladaParserAutoGen15Private::_preEnd__acceleration____common_float2_or_param_type()
 
116749
{
 
116750
#ifdef GENERATEDSAXPARSER_VALIDATION
 
116751
    if ( mValidate )
 
116752
    {
 
116753
 
 
116754
        bool validationResult = _validateEnd__acceleration____common_float2_or_param_type();
 
116755
        if ( !validationResult ) return false;
 
116756
 
 
116757
    } // validation
 
116758
#endif
 
116759
 
 
116760
    return true;
 
116761
}
 
116762
 
 
116763
//---------------------------------------------------------------------
 
116764
bool ColladaParserAutoGen15Private::_freeAttributes__acceleration____common_float2_or_param_type( void* attributeData )
 
116765
{
 
116766
    return true;
 
116767
}
 
116768
 
 
116769
//---------------------------------------------------------------------
 
116770
bool ColladaParserAutoGen15Private::_data__deceleration____common_float2_or_param_type( const ParserChar* text, size_t textLength )
 
116771
{
 
116772
    return true;
 
116773
}
 
116774
 
 
116775
//---------------------------------------------------------------------
 
116776
bool ColladaParserAutoGen15Private::_preBegin__deceleration____common_float2_or_param_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
116777
{
 
116778
#ifdef GENERATEDSAXPARSER_VALIDATION
 
116779
    if ( mValidate )
 
116780
    {
 
116781
 
 
116782
        bool validationResult = _validateBegin__deceleration____common_float2_or_param_type( attributes, attributeDataPtr, validationDataPtr );
 
116783
        if ( !validationResult ) return false;
 
116784
 
 
116785
    } // validation
 
116786
#endif
 
116787
 
 
116788
    return true;
 
116789
}
 
116790
 
 
116791
//---------------------------------------------------------------------
 
116792
bool ColladaParserAutoGen15Private::_preEnd__deceleration____common_float2_or_param_type()
 
116793
{
 
116794
#ifdef GENERATEDSAXPARSER_VALIDATION
 
116795
    if ( mValidate )
 
116796
    {
 
116797
 
 
116798
        bool validationResult = _validateEnd__deceleration____common_float2_or_param_type();
 
116799
        if ( !validationResult ) return false;
 
116800
 
 
116801
    } // validation
 
116802
#endif
 
116803
 
 
116804
    return true;
 
116805
}
 
116806
 
 
116807
//---------------------------------------------------------------------
 
116808
bool ColladaParserAutoGen15Private::_freeAttributes__deceleration____common_float2_or_param_type( void* attributeData )
 
116809
{
 
116810
    return true;
 
116811
}
 
116812
 
 
116813
//---------------------------------------------------------------------
 
116814
bool ColladaParserAutoGen15Private::_data__jerk____common_float2_or_param_type( const ParserChar* text, size_t textLength )
 
116815
{
 
116816
    return true;
 
116817
}
 
116818
 
 
116819
//---------------------------------------------------------------------
 
116820
bool ColladaParserAutoGen15Private::_preBegin__jerk____common_float2_or_param_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
116821
{
 
116822
#ifdef GENERATEDSAXPARSER_VALIDATION
 
116823
    if ( mValidate )
 
116824
    {
 
116825
 
 
116826
        bool validationResult = _validateBegin__jerk____common_float2_or_param_type( attributes, attributeDataPtr, validationDataPtr );
 
116827
        if ( !validationResult ) return false;
 
116828
 
 
116829
    } // validation
 
116830
#endif
 
116831
 
 
116832
    return true;
 
116833
}
 
116834
 
 
116835
//---------------------------------------------------------------------
 
116836
bool ColladaParserAutoGen15Private::_preEnd__jerk____common_float2_or_param_type()
 
116837
{
 
116838
#ifdef GENERATEDSAXPARSER_VALIDATION
 
116839
    if ( mValidate )
 
116840
    {
 
116841
 
 
116842
        bool validationResult = _validateEnd__jerk____common_float2_or_param_type();
 
116843
        if ( !validationResult ) return false;
 
116844
 
 
116845
    } // validation
 
116846
#endif
 
116847
 
 
116848
    return true;
 
116849
}
 
116850
 
 
116851
//---------------------------------------------------------------------
 
116852
bool ColladaParserAutoGen15Private::_freeAttributes__jerk____common_float2_or_param_type( void* attributeData )
 
116853
{
 
116854
    return true;
 
116855
}
 
116856
 
 
116857
//---------------------------------------------------------------------
 
116858
const library_kinematics_scenes__AttributeData library_kinematics_scenes__AttributeData::DEFAULT = {0, 0};
 
116859
 
 
116860
//---------------------------------------------------------------------
 
116861
bool ColladaParserAutoGen15Private::_data__library_kinematics_scenes( const ParserChar* text, size_t textLength )
 
116862
{
 
116863
    return true;
 
116864
}
 
116865
 
 
116866
//---------------------------------------------------------------------
 
116867
bool ColladaParserAutoGen15Private::_preBegin__library_kinematics_scenes( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
116868
{
 
116869
#ifdef GENERATEDSAXPARSER_VALIDATION
 
116870
    if ( mValidate )
 
116871
    {
 
116872
 
 
116873
        bool validationResult = _validateBegin__library_kinematics_scenes( attributes, attributeDataPtr, validationDataPtr );
 
116874
        if ( !validationResult ) return false;
 
116875
 
 
116876
    } // validation
 
116877
#endif
 
116878
 
 
116879
library_kinematics_scenes__AttributeData* attributeData = newData<library_kinematics_scenes__AttributeData>(attributeDataPtr);
 
116880
 
 
116881
const ParserChar** attributeArray = attributes.attributes;
 
116882
if ( attributeArray )
 
116883
{
 
116884
    while (true)
 
116885
    {
 
116886
        const ParserChar * attribute = *attributeArray;
 
116887
        if ( !attribute )
 
116888
            break;
 
116889
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
116890
        attributeArray++;
 
116891
        if ( !attributeArray )
 
116892
            return false;
 
116893
        const ParserChar* attributeValue = *attributeArray;
 
116894
        attributeArray++;
 
116895
 
 
116896
 
 
116897
    switch ( hash )
 
116898
    {
 
116899
    case HASH_ATTRIBUTE_ID:
 
116900
    {
 
116901
 
 
116902
attributeData->id = attributeValue;
 
116903
 
 
116904
    break;
 
116905
    }
 
116906
    case HASH_ATTRIBUTE_NAME:
 
116907
    {
 
116908
 
 
116909
attributeData->name = attributeValue;
 
116910
 
 
116911
    break;
 
116912
    }
 
116913
    default:
 
116914
    {
 
116915
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIBRARY_KINEMATICS_SCENES, attribute, attributeValue))
 
116916
            {return false;}
 
116917
    }
 
116918
    }
 
116919
    }
 
116920
}
 
116921
 
 
116922
 
 
116923
    return true;
 
116924
}
 
116925
 
 
116926
//---------------------------------------------------------------------
 
116927
bool ColladaParserAutoGen15Private::_preEnd__library_kinematics_scenes()
 
116928
{
 
116929
#ifdef GENERATEDSAXPARSER_VALIDATION
 
116930
    if ( mValidate )
 
116931
    {
 
116932
 
 
116933
        bool validationResult = _validateEnd__library_kinematics_scenes();
 
116934
        if ( !validationResult ) return false;
 
116935
 
 
116936
    } // validation
 
116937
#endif
 
116938
 
 
116939
    return true;
 
116940
}
 
116941
 
 
116942
//---------------------------------------------------------------------
 
116943
bool ColladaParserAutoGen15Private::_freeAttributes__library_kinematics_scenes( void* attributeData )
 
116944
{
 
116945
    library_kinematics_scenes__AttributeData* typedAttributeData = static_cast<library_kinematics_scenes__AttributeData*>(attributeData);
 
116946
 
 
116947
    typedAttributeData->~library_kinematics_scenes__AttributeData();
 
116948
 
 
116949
    return true;
 
116950
}
 
116951
 
 
116952
//---------------------------------------------------------------------
 
116953
const kinematics_scene__AttributeData kinematics_scene__AttributeData::DEFAULT = {0, 0};
 
116954
 
 
116955
//---------------------------------------------------------------------
 
116956
bool ColladaParserAutoGen15Private::_data__kinematics_scene( const ParserChar* text, size_t textLength )
 
116957
{
 
116958
    return true;
 
116959
}
 
116960
 
 
116961
//---------------------------------------------------------------------
 
116962
bool ColladaParserAutoGen15Private::_preBegin__kinematics_scene( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
116963
{
 
116964
#ifdef GENERATEDSAXPARSER_VALIDATION
 
116965
    if ( mValidate )
 
116966
    {
 
116967
 
 
116968
        bool validationResult = _validateBegin__kinematics_scene( attributes, attributeDataPtr, validationDataPtr );
 
116969
        if ( !validationResult ) return false;
 
116970
 
 
116971
    } // validation
 
116972
#endif
 
116973
 
 
116974
kinematics_scene__AttributeData* attributeData = newData<kinematics_scene__AttributeData>(attributeDataPtr);
 
116975
 
 
116976
const ParserChar** attributeArray = attributes.attributes;
 
116977
if ( attributeArray )
 
116978
{
 
116979
    while (true)
 
116980
    {
 
116981
        const ParserChar * attribute = *attributeArray;
 
116982
        if ( !attribute )
 
116983
            break;
 
116984
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
116985
        attributeArray++;
 
116986
        if ( !attributeArray )
 
116987
            return false;
 
116988
        const ParserChar* attributeValue = *attributeArray;
 
116989
        attributeArray++;
 
116990
 
 
116991
 
 
116992
    switch ( hash )
 
116993
    {
 
116994
    case HASH_ATTRIBUTE_ID:
 
116995
    {
 
116996
 
 
116997
attributeData->id = attributeValue;
 
116998
 
 
116999
    break;
 
117000
    }
 
117001
    case HASH_ATTRIBUTE_NAME:
 
117002
    {
 
117003
 
 
117004
attributeData->name = attributeValue;
 
117005
 
 
117006
    break;
 
117007
    }
 
117008
    default:
 
117009
    {
 
117010
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_KINEMATICS_SCENE, attribute, attributeValue))
 
117011
            {return false;}
 
117012
    }
 
117013
    }
 
117014
    }
 
117015
}
 
117016
 
 
117017
 
 
117018
    return true;
 
117019
}
 
117020
 
 
117021
//---------------------------------------------------------------------
 
117022
bool ColladaParserAutoGen15Private::_preEnd__kinematics_scene()
 
117023
{
 
117024
#ifdef GENERATEDSAXPARSER_VALIDATION
 
117025
    if ( mValidate )
 
117026
    {
 
117027
 
 
117028
        bool validationResult = _validateEnd__kinematics_scene();
 
117029
        if ( !validationResult ) return false;
 
117030
 
 
117031
    } // validation
 
117032
#endif
 
117033
 
 
117034
    return true;
 
117035
}
 
117036
 
 
117037
//---------------------------------------------------------------------
 
117038
bool ColladaParserAutoGen15Private::_freeAttributes__kinematics_scene( void* attributeData )
 
117039
{
 
117040
    kinematics_scene__AttributeData* typedAttributeData = static_cast<kinematics_scene__AttributeData*>(attributeData);
 
117041
 
 
117042
    typedAttributeData->~kinematics_scene__AttributeData();
 
117043
 
 
117044
    return true;
 
117045
}
 
117046
 
 
117047
//---------------------------------------------------------------------
 
117048
const library_formulas__AttributeData library_formulas__AttributeData::DEFAULT = {0, 0};
 
117049
 
 
117050
//---------------------------------------------------------------------
 
117051
bool ColladaParserAutoGen15Private::_data__library_formulas( const ParserChar* text, size_t textLength )
 
117052
{
 
117053
    return true;
 
117054
}
 
117055
 
 
117056
//---------------------------------------------------------------------
 
117057
bool ColladaParserAutoGen15Private::_preBegin__library_formulas( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
117058
{
 
117059
#ifdef GENERATEDSAXPARSER_VALIDATION
 
117060
    if ( mValidate )
 
117061
    {
 
117062
 
 
117063
        bool validationResult = _validateBegin__library_formulas( attributes, attributeDataPtr, validationDataPtr );
 
117064
        if ( !validationResult ) return false;
 
117065
 
 
117066
    } // validation
 
117067
#endif
 
117068
 
 
117069
library_formulas__AttributeData* attributeData = newData<library_formulas__AttributeData>(attributeDataPtr);
 
117070
 
 
117071
const ParserChar** attributeArray = attributes.attributes;
 
117072
if ( attributeArray )
 
117073
{
 
117074
    while (true)
 
117075
    {
 
117076
        const ParserChar * attribute = *attributeArray;
 
117077
        if ( !attribute )
 
117078
            break;
 
117079
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
117080
        attributeArray++;
 
117081
        if ( !attributeArray )
 
117082
            return false;
 
117083
        const ParserChar* attributeValue = *attributeArray;
 
117084
        attributeArray++;
 
117085
 
 
117086
 
 
117087
    switch ( hash )
 
117088
    {
 
117089
    case HASH_ATTRIBUTE_ID:
 
117090
    {
 
117091
 
 
117092
attributeData->id = attributeValue;
 
117093
 
 
117094
    break;
 
117095
    }
 
117096
    case HASH_ATTRIBUTE_NAME:
 
117097
    {
 
117098
 
 
117099
attributeData->name = attributeValue;
 
117100
 
 
117101
    break;
 
117102
    }
 
117103
    default:
 
117104
    {
 
117105
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_LIBRARY_FORMULAS, attribute, attributeValue))
 
117106
            {return false;}
 
117107
    }
 
117108
    }
 
117109
    }
 
117110
}
 
117111
 
 
117112
 
 
117113
    return true;
 
117114
}
 
117115
 
 
117116
//---------------------------------------------------------------------
 
117117
bool ColladaParserAutoGen15Private::_preEnd__library_formulas()
 
117118
{
 
117119
#ifdef GENERATEDSAXPARSER_VALIDATION
 
117120
    if ( mValidate )
 
117121
    {
 
117122
 
 
117123
        bool validationResult = _validateEnd__library_formulas();
 
117124
        if ( !validationResult ) return false;
 
117125
 
 
117126
    } // validation
 
117127
#endif
 
117128
 
 
117129
    return true;
 
117130
}
 
117131
 
 
117132
//---------------------------------------------------------------------
 
117133
bool ColladaParserAutoGen15Private::_freeAttributes__library_formulas( void* attributeData )
 
117134
{
 
117135
    library_formulas__AttributeData* typedAttributeData = static_cast<library_formulas__AttributeData*>(attributeData);
 
117136
 
 
117137
    typedAttributeData->~library_formulas__AttributeData();
 
117138
 
 
117139
    return true;
 
117140
}
 
117141
 
 
117142
//---------------------------------------------------------------------
 
117143
bool ColladaParserAutoGen15Private::_data__scene( const ParserChar* text, size_t textLength )
 
117144
{
 
117145
    return true;
 
117146
}
 
117147
 
 
117148
//---------------------------------------------------------------------
 
117149
bool ColladaParserAutoGen15Private::_preBegin__scene( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
117150
{
 
117151
#ifdef GENERATEDSAXPARSER_VALIDATION
 
117152
    if ( mValidate )
 
117153
    {
 
117154
 
 
117155
        bool validationResult = _validateBegin__scene( attributes, attributeDataPtr, validationDataPtr );
 
117156
        if ( !validationResult ) return false;
 
117157
 
 
117158
    } // validation
 
117159
#endif
 
117160
 
 
117161
    return true;
 
117162
}
 
117163
 
 
117164
//---------------------------------------------------------------------
 
117165
bool ColladaParserAutoGen15Private::_preEnd__scene()
 
117166
{
 
117167
#ifdef GENERATEDSAXPARSER_VALIDATION
 
117168
    if ( mValidate )
 
117169
    {
 
117170
 
 
117171
        bool validationResult = _validateEnd__scene();
 
117172
        if ( !validationResult ) return false;
 
117173
 
 
117174
    } // validation
 
117175
#endif
 
117176
 
 
117177
    return true;
 
117178
}
 
117179
 
 
117180
//---------------------------------------------------------------------
 
117181
bool ColladaParserAutoGen15Private::_freeAttributes__scene( void* attributeData )
 
117182
{
 
117183
    return true;
 
117184
}
 
117185
 
 
117186
//---------------------------------------------------------------------
 
117187
const instance_physics_scene__AttributeData instance_physics_scene__AttributeData::DEFAULT = {0, 0, 0, 0};
 
117188
 
 
117189
//---------------------------------------------------------------------
 
117190
bool ColladaParserAutoGen15Private::_data__instance_physics_scene( const ParserChar* text, size_t textLength )
 
117191
{
 
117192
    return true;
 
117193
}
 
117194
 
 
117195
//---------------------------------------------------------------------
 
117196
bool ColladaParserAutoGen15Private::_preBegin__instance_physics_scene( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
117197
{
 
117198
#ifdef GENERATEDSAXPARSER_VALIDATION
 
117199
    if ( mValidate )
 
117200
    {
 
117201
 
 
117202
        bool validationResult = _validateBegin__instance_physics_scene( attributes, attributeDataPtr, validationDataPtr );
 
117203
        if ( !validationResult ) return false;
 
117204
 
 
117205
    } // validation
 
117206
#endif
 
117207
 
 
117208
instance_physics_scene__AttributeData* attributeData = newData<instance_physics_scene__AttributeData>(attributeDataPtr);
 
117209
 
 
117210
const ParserChar** attributeArray = attributes.attributes;
 
117211
if ( attributeArray )
 
117212
{
 
117213
    while (true)
 
117214
    {
 
117215
        const ParserChar * attribute = *attributeArray;
 
117216
        if ( !attribute )
 
117217
            break;
 
117218
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
117219
        attributeArray++;
 
117220
        if ( !attributeArray )
 
117221
            return false;
 
117222
        const ParserChar* attributeValue = *attributeArray;
 
117223
        attributeArray++;
 
117224
 
 
117225
 
 
117226
    switch ( hash )
 
117227
    {
 
117228
    case HASH_ATTRIBUTE_URL:
 
117229
    {
 
117230
bool failed;
 
117231
attributeData->url = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
117232
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
117233
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
117234
        HASH_ELEMENT_INSTANCE_PHYSICS_SCENE,
 
117235
        HASH_ATTRIBUTE_URL,
 
117236
        attributeValue))
 
117237
{
 
117238
    return false;
 
117239
}
 
117240
if ( !failed )
 
117241
    attributeData->present_attributes |= instance_physics_scene__AttributeData::ATTRIBUTE_URL_PRESENT;
 
117242
 
 
117243
    break;
 
117244
    }
 
117245
    case HASH_ATTRIBUTE_SID:
 
117246
    {
 
117247
 
 
117248
attributeData->sid = attributeValue;
 
117249
#ifdef GENERATEDSAXPARSER_VALIDATION
 
117250
    if ( mValidate )
 
117251
    {
 
117252
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
117253
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
117254
    {
 
117255
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
117256
            simpleTypeValidationResult,
 
117257
            HASH_ELEMENT_INSTANCE_PHYSICS_SCENE,
 
117258
            HASH_ATTRIBUTE_SID,
 
117259
            attributeValue) )
 
117260
        {
 
117261
            return false;
 
117262
        }
 
117263
    }
 
117264
    } // validation
 
117265
#endif
 
117266
 
 
117267
    break;
 
117268
    }
 
117269
    case HASH_ATTRIBUTE_NAME:
 
117270
    {
 
117271
 
 
117272
attributeData->name = attributeValue;
 
117273
 
 
117274
    break;
 
117275
    }
 
117276
    default:
 
117277
    {
 
117278
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_INSTANCE_PHYSICS_SCENE, attribute, attributeValue))
 
117279
            {return false;}
 
117280
    }
 
117281
    }
 
117282
    }
 
117283
}
 
117284
if ((attributeData->present_attributes & instance_physics_scene__AttributeData::ATTRIBUTE_URL_PRESENT) == 0)
 
117285
{
 
117286
    attributeData->url = COLLADABU::URI("");
 
117287
}
 
117288
if ( (attributeData->present_attributes & instance_physics_scene__AttributeData::ATTRIBUTE_URL_PRESENT) == 0 )
 
117289
{
 
117290
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_INSTANCE_PHYSICS_SCENE, HASH_ATTRIBUTE_URL, 0 ) )
 
117291
        return false;
 
117292
}
 
117293
 
 
117294
 
 
117295
    return true;
 
117296
}
 
117297
 
 
117298
//---------------------------------------------------------------------
 
117299
bool ColladaParserAutoGen15Private::_preEnd__instance_physics_scene()
 
117300
{
 
117301
#ifdef GENERATEDSAXPARSER_VALIDATION
 
117302
    if ( mValidate )
 
117303
    {
 
117304
 
 
117305
        bool validationResult = _validateEnd__instance_physics_scene();
 
117306
        if ( !validationResult ) return false;
 
117307
 
 
117308
    } // validation
 
117309
#endif
 
117310
 
 
117311
    return true;
 
117312
}
 
117313
 
 
117314
//---------------------------------------------------------------------
 
117315
bool ColladaParserAutoGen15Private::_freeAttributes__instance_physics_scene( void* attributeData )
 
117316
{
 
117317
    instance_physics_scene__AttributeData* typedAttributeData = static_cast<instance_physics_scene__AttributeData*>(attributeData);
 
117318
 
 
117319
    typedAttributeData->~instance_physics_scene__AttributeData();
 
117320
 
 
117321
    return true;
 
117322
}
 
117323
 
 
117324
//---------------------------------------------------------------------
 
117325
const instance_visual_scene__AttributeData instance_visual_scene__AttributeData::DEFAULT = {0, 0, 0, 0};
 
117326
 
 
117327
//---------------------------------------------------------------------
 
117328
bool ColladaParserAutoGen15Private::_data__instance_visual_scene( const ParserChar* text, size_t textLength )
 
117329
{
 
117330
    return true;
 
117331
}
 
117332
 
 
117333
//---------------------------------------------------------------------
 
117334
bool ColladaParserAutoGen15Private::_preBegin__instance_visual_scene( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
117335
{
 
117336
#ifdef GENERATEDSAXPARSER_VALIDATION
 
117337
    if ( mValidate )
 
117338
    {
 
117339
 
 
117340
        bool validationResult = _validateBegin__instance_visual_scene( attributes, attributeDataPtr, validationDataPtr );
 
117341
        if ( !validationResult ) return false;
 
117342
 
 
117343
    } // validation
 
117344
#endif
 
117345
 
 
117346
instance_visual_scene__AttributeData* attributeData = newData<instance_visual_scene__AttributeData>(attributeDataPtr);
 
117347
 
 
117348
const ParserChar** attributeArray = attributes.attributes;
 
117349
if ( attributeArray )
 
117350
{
 
117351
    while (true)
 
117352
    {
 
117353
        const ParserChar * attribute = *attributeArray;
 
117354
        if ( !attribute )
 
117355
            break;
 
117356
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
117357
        attributeArray++;
 
117358
        if ( !attributeArray )
 
117359
            return false;
 
117360
        const ParserChar* attributeValue = *attributeArray;
 
117361
        attributeArray++;
 
117362
 
 
117363
 
 
117364
    switch ( hash )
 
117365
    {
 
117366
    case HASH_ATTRIBUTE_URL:
 
117367
    {
 
117368
bool failed;
 
117369
attributeData->url = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
117370
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
117371
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
117372
        HASH_ELEMENT_INSTANCE_VISUAL_SCENE,
 
117373
        HASH_ATTRIBUTE_URL,
 
117374
        attributeValue))
 
117375
{
 
117376
    return false;
 
117377
}
 
117378
if ( !failed )
 
117379
    attributeData->present_attributes |= instance_visual_scene__AttributeData::ATTRIBUTE_URL_PRESENT;
 
117380
 
 
117381
    break;
 
117382
    }
 
117383
    case HASH_ATTRIBUTE_SID:
 
117384
    {
 
117385
 
 
117386
attributeData->sid = attributeValue;
 
117387
#ifdef GENERATEDSAXPARSER_VALIDATION
 
117388
    if ( mValidate )
 
117389
    {
 
117390
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
117391
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
117392
    {
 
117393
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
117394
            simpleTypeValidationResult,
 
117395
            HASH_ELEMENT_INSTANCE_VISUAL_SCENE,
 
117396
            HASH_ATTRIBUTE_SID,
 
117397
            attributeValue) )
 
117398
        {
 
117399
            return false;
 
117400
        }
 
117401
    }
 
117402
    } // validation
 
117403
#endif
 
117404
 
 
117405
    break;
 
117406
    }
 
117407
    case HASH_ATTRIBUTE_NAME:
 
117408
    {
 
117409
 
 
117410
attributeData->name = attributeValue;
 
117411
 
 
117412
    break;
 
117413
    }
 
117414
    default:
 
117415
    {
 
117416
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_INSTANCE_VISUAL_SCENE, attribute, attributeValue))
 
117417
            {return false;}
 
117418
    }
 
117419
    }
 
117420
    }
 
117421
}
 
117422
if ((attributeData->present_attributes & instance_visual_scene__AttributeData::ATTRIBUTE_URL_PRESENT) == 0)
 
117423
{
 
117424
    attributeData->url = COLLADABU::URI("");
 
117425
}
 
117426
if ( (attributeData->present_attributes & instance_visual_scene__AttributeData::ATTRIBUTE_URL_PRESENT) == 0 )
 
117427
{
 
117428
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_INSTANCE_VISUAL_SCENE, HASH_ATTRIBUTE_URL, 0 ) )
 
117429
        return false;
 
117430
}
 
117431
 
 
117432
 
 
117433
    return true;
 
117434
}
 
117435
 
 
117436
//---------------------------------------------------------------------
 
117437
bool ColladaParserAutoGen15Private::_preEnd__instance_visual_scene()
 
117438
{
 
117439
#ifdef GENERATEDSAXPARSER_VALIDATION
 
117440
    if ( mValidate )
 
117441
    {
 
117442
 
 
117443
        bool validationResult = _validateEnd__instance_visual_scene();
 
117444
        if ( !validationResult ) return false;
 
117445
 
 
117446
    } // validation
 
117447
#endif
 
117448
 
 
117449
    return true;
 
117450
}
 
117451
 
 
117452
//---------------------------------------------------------------------
 
117453
bool ColladaParserAutoGen15Private::_freeAttributes__instance_visual_scene( void* attributeData )
 
117454
{
 
117455
    instance_visual_scene__AttributeData* typedAttributeData = static_cast<instance_visual_scene__AttributeData*>(attributeData);
 
117456
 
 
117457
    typedAttributeData->~instance_visual_scene__AttributeData();
 
117458
 
 
117459
    return true;
 
117460
}
 
117461
 
 
117462
//---------------------------------------------------------------------
 
117463
const instance_kinematics_scene__AttributeData instance_kinematics_scene__AttributeData::DEFAULT = {0, 0, 0, 0};
 
117464
 
 
117465
//---------------------------------------------------------------------
 
117466
bool ColladaParserAutoGen15Private::_data__instance_kinematics_scene( const ParserChar* text, size_t textLength )
 
117467
{
 
117468
    return true;
 
117469
}
 
117470
 
 
117471
//---------------------------------------------------------------------
 
117472
bool ColladaParserAutoGen15Private::_preBegin__instance_kinematics_scene( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
117473
{
 
117474
#ifdef GENERATEDSAXPARSER_VALIDATION
 
117475
    if ( mValidate )
 
117476
    {
 
117477
 
 
117478
        bool validationResult = _validateBegin__instance_kinematics_scene( attributes, attributeDataPtr, validationDataPtr );
 
117479
        if ( !validationResult ) return false;
 
117480
 
 
117481
    } // validation
 
117482
#endif
 
117483
 
 
117484
instance_kinematics_scene__AttributeData* attributeData = newData<instance_kinematics_scene__AttributeData>(attributeDataPtr);
 
117485
 
 
117486
const ParserChar** attributeArray = attributes.attributes;
 
117487
if ( attributeArray )
 
117488
{
 
117489
    while (true)
 
117490
    {
 
117491
        const ParserChar * attribute = *attributeArray;
 
117492
        if ( !attribute )
 
117493
            break;
 
117494
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
117495
        attributeArray++;
 
117496
        if ( !attributeArray )
 
117497
            return false;
 
117498
        const ParserChar* attributeValue = *attributeArray;
 
117499
        attributeArray++;
 
117500
 
 
117501
 
 
117502
    switch ( hash )
 
117503
    {
 
117504
    case HASH_ATTRIBUTE_URL:
 
117505
    {
 
117506
bool failed;
 
117507
attributeData->url = GeneratedSaxParser::Utils::toURI(&attributeValue, failed);
 
117508
if ( failed && handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
117509
        ParserError::ERROR_ATTRIBUTE_PARSING_FAILED,
 
117510
        HASH_ELEMENT_INSTANCE_KINEMATICS_SCENE,
 
117511
        HASH_ATTRIBUTE_URL,
 
117512
        attributeValue))
 
117513
{
 
117514
    return false;
 
117515
}
 
117516
if ( !failed )
 
117517
    attributeData->present_attributes |= instance_kinematics_scene__AttributeData::ATTRIBUTE_URL_PRESENT;
 
117518
 
 
117519
    break;
 
117520
    }
 
117521
    case HASH_ATTRIBUTE_SID:
 
117522
    {
 
117523
 
 
117524
attributeData->sid = attributeValue;
 
117525
#ifdef GENERATEDSAXPARSER_VALIDATION
 
117526
    if ( mValidate )
 
117527
    {
 
117528
    ParserError::ErrorType simpleTypeValidationResult = validate__sid_type(attributeData->sid, strlen(attributeData->sid));
 
117529
    if (simpleTypeValidationResult != ParserError::SIMPLE_TYPE_VALIDATION_OK)
 
117530
    {
 
117531
        if( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL,
 
117532
            simpleTypeValidationResult,
 
117533
            HASH_ELEMENT_INSTANCE_KINEMATICS_SCENE,
 
117534
            HASH_ATTRIBUTE_SID,
 
117535
            attributeValue) )
 
117536
        {
 
117537
            return false;
 
117538
        }
 
117539
    }
 
117540
    } // validation
 
117541
#endif
 
117542
 
 
117543
    break;
 
117544
    }
 
117545
    case HASH_ATTRIBUTE_NAME:
 
117546
    {
 
117547
 
 
117548
attributeData->name = attributeValue;
 
117549
 
 
117550
    break;
 
117551
    }
 
117552
    default:
 
117553
    {
 
117554
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_INSTANCE_KINEMATICS_SCENE, attribute, attributeValue))
 
117555
            {return false;}
 
117556
    }
 
117557
    }
 
117558
    }
 
117559
}
 
117560
if ((attributeData->present_attributes & instance_kinematics_scene__AttributeData::ATTRIBUTE_URL_PRESENT) == 0)
 
117561
{
 
117562
    attributeData->url = COLLADABU::URI("");
 
117563
}
 
117564
if ( (attributeData->present_attributes & instance_kinematics_scene__AttributeData::ATTRIBUTE_URL_PRESENT) == 0 )
 
117565
{
 
117566
    if ( handleError ( ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING, HASH_ELEMENT_INSTANCE_KINEMATICS_SCENE, HASH_ATTRIBUTE_URL, 0 ) )
 
117567
        return false;
 
117568
}
 
117569
 
 
117570
 
 
117571
    return true;
 
117572
}
 
117573
 
 
117574
//---------------------------------------------------------------------
 
117575
bool ColladaParserAutoGen15Private::_preEnd__instance_kinematics_scene()
 
117576
{
 
117577
#ifdef GENERATEDSAXPARSER_VALIDATION
 
117578
    if ( mValidate )
 
117579
    {
 
117580
 
 
117581
        bool validationResult = _validateEnd__instance_kinematics_scene();
 
117582
        if ( !validationResult ) return false;
 
117583
 
 
117584
    } // validation
 
117585
#endif
 
117586
 
 
117587
    return true;
 
117588
}
 
117589
 
 
117590
//---------------------------------------------------------------------
 
117591
bool ColladaParserAutoGen15Private::_freeAttributes__instance_kinematics_scene( void* attributeData )
 
117592
{
 
117593
    instance_kinematics_scene__AttributeData* typedAttributeData = static_cast<instance_kinematics_scene__AttributeData*>(attributeData);
 
117594
 
 
117595
    typedAttributeData->~instance_kinematics_scene__AttributeData();
 
117596
 
 
117597
    return true;
 
117598
}
 
117599
 
 
117600
//---------------------------------------------------------------------
 
117601
const bind_kinematics_model__AttributeData bind_kinematics_model__AttributeData::DEFAULT = {0};
 
117602
 
 
117603
//---------------------------------------------------------------------
 
117604
bool ColladaParserAutoGen15Private::_data__bind_kinematics_model( const ParserChar* text, size_t textLength )
 
117605
{
 
117606
    return true;
 
117607
}
 
117608
 
 
117609
//---------------------------------------------------------------------
 
117610
bool ColladaParserAutoGen15Private::_preBegin__bind_kinematics_model( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
117611
{
 
117612
#ifdef GENERATEDSAXPARSER_VALIDATION
 
117613
    if ( mValidate )
 
117614
    {
 
117615
 
 
117616
        bool validationResult = _validateBegin__bind_kinematics_model( attributes, attributeDataPtr, validationDataPtr );
 
117617
        if ( !validationResult ) return false;
 
117618
 
 
117619
    } // validation
 
117620
#endif
 
117621
 
 
117622
bind_kinematics_model__AttributeData* attributeData = newData<bind_kinematics_model__AttributeData>(attributeDataPtr);
 
117623
 
 
117624
const ParserChar** attributeArray = attributes.attributes;
 
117625
if ( attributeArray )
 
117626
{
 
117627
    while (true)
 
117628
    {
 
117629
        const ParserChar * attribute = *attributeArray;
 
117630
        if ( !attribute )
 
117631
            break;
 
117632
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
117633
        attributeArray++;
 
117634
        if ( !attributeArray )
 
117635
            return false;
 
117636
        const ParserChar* attributeValue = *attributeArray;
 
117637
        attributeArray++;
 
117638
 
 
117639
 
 
117640
    switch ( hash )
 
117641
    {
 
117642
    case HASH_ATTRIBUTE_NODE:
 
117643
    {
 
117644
 
 
117645
attributeData->node = attributeValue;
 
117646
 
 
117647
    break;
 
117648
    }
 
117649
    default:
 
117650
    {
 
117651
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_BIND_KINEMATICS_MODEL, attribute, attributeValue))
 
117652
            {return false;}
 
117653
    }
 
117654
    }
 
117655
    }
 
117656
}
 
117657
 
 
117658
 
 
117659
    return true;
 
117660
}
 
117661
 
 
117662
//---------------------------------------------------------------------
 
117663
bool ColladaParserAutoGen15Private::_preEnd__bind_kinematics_model()
 
117664
{
 
117665
#ifdef GENERATEDSAXPARSER_VALIDATION
 
117666
    if ( mValidate )
 
117667
    {
 
117668
 
 
117669
        bool validationResult = _validateEnd__bind_kinematics_model();
 
117670
        if ( !validationResult ) return false;
 
117671
 
 
117672
    } // validation
 
117673
#endif
 
117674
 
 
117675
    return true;
 
117676
}
 
117677
 
 
117678
//---------------------------------------------------------------------
 
117679
bool ColladaParserAutoGen15Private::_freeAttributes__bind_kinematics_model( void* attributeData )
 
117680
{
 
117681
    bind_kinematics_model__AttributeData* typedAttributeData = static_cast<bind_kinematics_model__AttributeData*>(attributeData);
 
117682
 
 
117683
    typedAttributeData->~bind_kinematics_model__AttributeData();
 
117684
 
 
117685
    return true;
 
117686
}
 
117687
 
 
117688
//---------------------------------------------------------------------
 
117689
const bind_joint_axis__AttributeData bind_joint_axis__AttributeData::DEFAULT = {0};
 
117690
 
 
117691
//---------------------------------------------------------------------
 
117692
bool ColladaParserAutoGen15Private::_data__bind_joint_axis( const ParserChar* text, size_t textLength )
 
117693
{
 
117694
    return true;
 
117695
}
 
117696
 
 
117697
//---------------------------------------------------------------------
 
117698
bool ColladaParserAutoGen15Private::_preBegin__bind_joint_axis( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
117699
{
 
117700
#ifdef GENERATEDSAXPARSER_VALIDATION
 
117701
    if ( mValidate )
 
117702
    {
 
117703
 
 
117704
        bool validationResult = _validateBegin__bind_joint_axis( attributes, attributeDataPtr, validationDataPtr );
 
117705
        if ( !validationResult ) return false;
 
117706
 
 
117707
    } // validation
 
117708
#endif
 
117709
 
 
117710
bind_joint_axis__AttributeData* attributeData = newData<bind_joint_axis__AttributeData>(attributeDataPtr);
 
117711
 
 
117712
const ParserChar** attributeArray = attributes.attributes;
 
117713
if ( attributeArray )
 
117714
{
 
117715
    while (true)
 
117716
    {
 
117717
        const ParserChar * attribute = *attributeArray;
 
117718
        if ( !attribute )
 
117719
            break;
 
117720
        StringHash hash = GeneratedSaxParser::Utils::calculateStringHash(attribute);
 
117721
        attributeArray++;
 
117722
        if ( !attributeArray )
 
117723
            return false;
 
117724
        const ParserChar* attributeValue = *attributeArray;
 
117725
        attributeArray++;
 
117726
 
 
117727
 
 
117728
    switch ( hash )
 
117729
    {
 
117730
    case HASH_ATTRIBUTE_TARGET:
 
117731
    {
 
117732
 
 
117733
attributeData->target = attributeValue;
 
117734
 
 
117735
    break;
 
117736
    }
 
117737
    default:
 
117738
    {
 
117739
        if ( handleError(ParserError::SEVERITY_ERROR_NONCRITICAL, ParserError::ERROR_UNKNOWN_ATTRIBUTE, HASH_ELEMENT_BIND_JOINT_AXIS, attribute, attributeValue))
 
117740
            {return false;}
 
117741
    }
 
117742
    }
 
117743
    }
 
117744
}
 
117745
 
 
117746
 
 
117747
    return true;
 
117748
}
 
117749
 
 
117750
//---------------------------------------------------------------------
 
117751
bool ColladaParserAutoGen15Private::_preEnd__bind_joint_axis()
 
117752
{
 
117753
#ifdef GENERATEDSAXPARSER_VALIDATION
 
117754
    if ( mValidate )
 
117755
    {
 
117756
 
 
117757
        bool validationResult = _validateEnd__bind_joint_axis();
 
117758
        if ( !validationResult ) return false;
 
117759
 
 
117760
    } // validation
 
117761
#endif
 
117762
 
 
117763
    return true;
 
117764
}
 
117765
 
 
117766
//---------------------------------------------------------------------
 
117767
bool ColladaParserAutoGen15Private::_freeAttributes__bind_joint_axis( void* attributeData )
 
117768
{
 
117769
    bind_joint_axis__AttributeData* typedAttributeData = static_cast<bind_joint_axis__AttributeData*>(attributeData);
 
117770
 
 
117771
    typedAttributeData->~bind_joint_axis__AttributeData();
 
117772
 
 
117773
    return true;
 
117774
}
 
117775
 
 
117776
//---------------------------------------------------------------------
 
117777
bool ColladaParserAutoGen15Private::_data__axis____common_sidref_or_param_type( const ParserChar* text, size_t textLength )
 
117778
{
 
117779
    return true;
 
117780
}
 
117781
 
 
117782
//---------------------------------------------------------------------
 
117783
bool ColladaParserAutoGen15Private::_preBegin__axis____common_sidref_or_param_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
117784
{
 
117785
#ifdef GENERATEDSAXPARSER_VALIDATION
 
117786
    if ( mValidate )
 
117787
    {
 
117788
 
 
117789
        bool validationResult = _validateBegin__axis____common_sidref_or_param_type( attributes, attributeDataPtr, validationDataPtr );
 
117790
        if ( !validationResult ) return false;
 
117791
 
 
117792
    } // validation
 
117793
#endif
 
117794
 
 
117795
    return true;
 
117796
}
 
117797
 
 
117798
//---------------------------------------------------------------------
 
117799
bool ColladaParserAutoGen15Private::_preEnd__axis____common_sidref_or_param_type()
 
117800
{
 
117801
#ifdef GENERATEDSAXPARSER_VALIDATION
 
117802
    if ( mValidate )
 
117803
    {
 
117804
 
 
117805
        bool validationResult = _validateEnd__axis____common_sidref_or_param_type();
 
117806
        if ( !validationResult ) return false;
 
117807
 
 
117808
    } // validation
 
117809
#endif
 
117810
 
 
117811
    return true;
 
117812
}
 
117813
 
 
117814
//---------------------------------------------------------------------
 
117815
bool ColladaParserAutoGen15Private::_freeAttributes__axis____common_sidref_or_param_type( void* attributeData )
 
117816
{
 
117817
    return true;
 
117818
}
 
117819
 
 
117820
//---------------------------------------------------------------------
 
117821
bool ColladaParserAutoGen15Private::_data__value____common_float_or_param_type( const ParserChar* text, size_t textLength )
 
117822
{
 
117823
    return true;
 
117824
}
 
117825
 
 
117826
//---------------------------------------------------------------------
 
117827
bool ColladaParserAutoGen15Private::_preBegin__value____common_float_or_param_type( const ParserAttributes& attributes, void ** attributeDataPtr, void ** validationDataPtr )
 
117828
{
 
117829
#ifdef GENERATEDSAXPARSER_VALIDATION
 
117830
    if ( mValidate )
 
117831
    {
 
117832
 
 
117833
        bool validationResult = _validateBegin__value____common_float_or_param_type( attributes, attributeDataPtr, validationDataPtr );
 
117834
        if ( !validationResult ) return false;
 
117835
 
 
117836
    } // validation
 
117837
#endif
 
117838
 
 
117839
    return true;
 
117840
}
 
117841
 
 
117842
//---------------------------------------------------------------------
 
117843
bool ColladaParserAutoGen15Private::_preEnd__value____common_float_or_param_type()
 
117844
{
 
117845
#ifdef GENERATEDSAXPARSER_VALIDATION
 
117846
    if ( mValidate )
 
117847
    {
 
117848
 
 
117849
        bool validationResult = _validateEnd__value____common_float_or_param_type();
 
117850
        if ( !validationResult ) return false;
 
117851
 
 
117852
    } // validation
 
117853
#endif
 
117854
 
 
117855
    return true;
 
117856
}
 
117857
 
 
117858
//---------------------------------------------------------------------
 
117859
bool ColladaParserAutoGen15Private::_freeAttributes__value____common_float_or_param_type( void* attributeData )
 
117860
{
 
117861
    return true;
 
117862
}
 
117863
 
 
117864
 
 
117865
 
 
117866
 
 
117867
} // namespace