/*
 * Copyright 2006 Sony Computer Entertainment Inc.
 *
 * Licensed under the MIT Open Source License, for details please see license.txt or the website
 * http://www.opensource.org/licenses/mit-license.php
 *
 */

#ifndef __DOM141_TYPES_H__
#define __DOM141_TYPES_H__

#include <dae/daeDomTypes.h>

class DAE;
namespace ColladaDOM141 {

typedef xsBoolean domBool;
typedef xsDateTime domDateTime;
typedef xsDouble domFloat;
typedef xsLong domInt;
typedef xsName domName;
typedef xsString domString;
typedef xsToken domToken;
typedef xsUnsignedLong domUint;
typedef daeTArray<domBool>      domListOfBools;
typedef daeTArray<domFloat>     domListOfFloats;
typedef xsHexBinaryArray domListOfHexBinary;
typedef daeTArray<domInt>       domListOfInts;
typedef daeTArray<domName>      domListOfNames;
typedef daeTArray<domToken>     domListOfTokens;
typedef daeTArray<domUint>      domListOfUInts;
typedef domListOfBools domBool2;
typedef domListOfBools domBool3;
typedef domListOfBools domBool4;
typedef domListOfFloats domFloat2;
typedef domListOfFloats domFloat3;
typedef domListOfFloats domFloat4;
typedef domListOfFloats domFloat7;
typedef domListOfFloats domFloat2x2;
typedef domListOfFloats domFloat3x3;
typedef domListOfFloats domFloat4x4;
typedef domListOfFloats domFloat2x3;
typedef domListOfFloats domFloat2x4;
typedef domListOfFloats domFloat3x2;
typedef domListOfFloats domFloat3x4;
typedef domListOfFloats domFloat4x2;
typedef domListOfFloats domFloat4x3;
typedef domListOfInts domInt2;
typedef domListOfInts domInt3;
typedef domListOfInts domInt4;
typedef domListOfInts domInt2x2;
typedef domListOfInts domInt3x3;
typedef domListOfInts domInt4x4;
/**
 * This type is used for URI reference which can only reference a resource
 * declared within it's same document.
 */
typedef xsAnyURI domURIFragmentType;
typedef domFloat4 domFx_color_common;
typedef xsString domFx_draw_common;
typedef xsNonNegativeInteger domGL_MAX_LIGHTS_index;
typedef xsNonNegativeInteger domGL_MAX_CLIP_PLANES_index;
typedef xsNonNegativeInteger domGL_MAX_TEXTURE_IMAGE_UNITS_index;
typedef xsFloat domGl_alpha_value_type;
typedef xsFloat domGlsl_float;
typedef xsInt domGlsl_int;
typedef xsBoolean domGlsl_bool;
typedef daeTArray<domGlsl_bool>     domGlsl_ListOfBool;
typedef daeTArray<domGlsl_float>        domGlsl_ListOfFloat;
typedef daeTArray<domGlsl_int>      domGlsl_ListOfInt;
typedef domGlsl_ListOfBool domGlsl_bool2;
typedef domGlsl_ListOfBool domGlsl_bool3;
typedef domGlsl_ListOfBool domGlsl_bool4;
typedef domGlsl_ListOfFloat domGlsl_float2;
typedef domGlsl_ListOfFloat domGlsl_float3;
typedef domGlsl_ListOfFloat domGlsl_float4;
typedef domGlsl_ListOfFloat domGlsl_float2x2;
typedef domGlsl_ListOfFloat domGlsl_float3x3;
typedef domGlsl_ListOfFloat domGlsl_float4x4;
typedef domGlsl_ListOfInt domGlsl_int2;
typedef domGlsl_ListOfInt domGlsl_int3;
typedef domGlsl_ListOfInt domGlsl_int4;
typedef xsToken domGlsl_identifier;
typedef xsBoolean domCg_bool;
typedef xsFloat domCg_float;
typedef xsInt domCg_int;
typedef xsFloat domCg_half;
typedef xsFloat domCg_fixed;
typedef xsBoolean domCg_bool1;
typedef xsFloat domCg_float1;
typedef xsInt domCg_int1;
typedef xsFloat domCg_half1;
typedef xsFloat domCg_fixed1;
typedef daeTArray<domCg_bool>       domCg_ListOfBool;
typedef daeTArray<domCg_float>      domCg_ListOfFloat;
typedef daeTArray<domCg_int>        domCg_ListOfInt;
typedef daeTArray<domCg_half>       domCg_ListOfHalf;
typedef daeTArray<domCg_fixed>      domCg_ListOfFixed;
typedef domCg_ListOfBool domCg_bool2;
typedef domCg_ListOfBool domCg_bool3;
typedef domCg_ListOfBool domCg_bool4;
typedef domCg_ListOfBool domCg_bool1x1;
typedef domCg_ListOfBool domCg_bool1x2;
typedef domCg_ListOfBool domCg_bool1x3;
typedef domCg_ListOfBool domCg_bool1x4;
typedef domCg_ListOfBool domCg_bool2x1;
typedef domCg_ListOfBool domCg_bool2x2;
typedef domCg_ListOfBool domCg_bool2x3;
typedef domCg_ListOfBool domCg_bool2x4;
typedef domCg_ListOfBool domCg_bool3x1;
typedef domCg_ListOfBool domCg_bool3x2;
typedef domCg_ListOfBool domCg_bool3x3;
typedef domCg_ListOfBool domCg_bool3x4;
typedef domCg_ListOfBool domCg_bool4x1;
typedef domCg_ListOfBool domCg_bool4x2;
typedef domCg_ListOfBool domCg_bool4x3;
typedef domCg_ListOfBool domCg_bool4x4;
typedef domCg_ListOfFloat domCg_float2;
typedef domCg_ListOfFloat domCg_float3;
typedef domCg_ListOfFloat domCg_float4;
typedef domCg_ListOfFloat domCg_float1x1;
typedef domCg_ListOfFloat domCg_float1x2;
typedef domCg_ListOfFloat domCg_float1x3;
typedef domCg_ListOfFloat domCg_float1x4;
typedef domCg_ListOfFloat domCg_float2x1;
typedef domCg_ListOfFloat domCg_float2x2;
typedef domCg_ListOfFloat domCg_float2x3;
typedef domCg_ListOfFloat domCg_float2x4;
typedef domCg_ListOfFloat domCg_float3x1;
typedef domCg_ListOfFloat domCg_float3x2;
typedef domCg_ListOfFloat domCg_float3x3;
typedef domCg_ListOfFloat domCg_float3x4;
typedef domCg_ListOfFloat domCg_float4x1;
typedef domCg_ListOfFloat domCg_float4x2;
typedef domCg_ListOfFloat domCg_float4x3;
typedef domCg_ListOfFloat domCg_float4x4;
typedef domCg_ListOfInt domCg_int2;
typedef domCg_ListOfInt domCg_int3;
typedef domCg_ListOfInt domCg_int4;
typedef domCg_ListOfInt domCg_int1x1;
typedef domCg_ListOfInt domCg_int1x2;
typedef domCg_ListOfInt domCg_int1x3;
typedef domCg_ListOfInt domCg_int1x4;
typedef domCg_ListOfInt domCg_int2x1;
typedef domCg_ListOfInt domCg_int2x2;
typedef domCg_ListOfInt domCg_int2x3;
typedef domCg_ListOfInt domCg_int2x4;
typedef domCg_ListOfInt domCg_int3x1;
typedef domCg_ListOfInt domCg_int3x2;
typedef domCg_ListOfInt domCg_int3x3;
typedef domCg_ListOfInt domCg_int3x4;
typedef domCg_ListOfInt domCg_int4x1;
typedef domCg_ListOfInt domCg_int4x2;
typedef domCg_ListOfInt domCg_int4x3;
typedef domCg_ListOfInt domCg_int4x4;
typedef domCg_ListOfHalf domCg_half2;
typedef domCg_ListOfHalf domCg_half3;
typedef domCg_ListOfHalf domCg_half4;
typedef domCg_ListOfHalf domCg_half1x1;
typedef domCg_ListOfHalf domCg_half1x2;
typedef domCg_ListOfHalf domCg_half1x3;
typedef domCg_ListOfHalf domCg_half1x4;
typedef domCg_ListOfHalf domCg_half2x1;
typedef domCg_ListOfHalf domCg_half2x2;
typedef domCg_ListOfHalf domCg_half2x3;
typedef domCg_ListOfHalf domCg_half2x4;
typedef domCg_ListOfHalf domCg_half3x1;
typedef domCg_ListOfHalf domCg_half3x2;
typedef domCg_ListOfHalf domCg_half3x3;
typedef domCg_ListOfHalf domCg_half3x4;
typedef domCg_ListOfHalf domCg_half4x1;
typedef domCg_ListOfHalf domCg_half4x2;
typedef domCg_ListOfHalf domCg_half4x3;
typedef domCg_ListOfHalf domCg_half4x4;
typedef domCg_ListOfFixed domCg_fixed2;
typedef domCg_ListOfFixed domCg_fixed3;
typedef domCg_ListOfFixed domCg_fixed4;
typedef domCg_ListOfFixed domCg_fixed1x1;
typedef domCg_ListOfFixed domCg_fixed1x2;
typedef domCg_ListOfFixed domCg_fixed1x3;
typedef domCg_ListOfFixed domCg_fixed1x4;
typedef domCg_ListOfFixed domCg_fixed2x1;
typedef domCg_ListOfFixed domCg_fixed2x2;
typedef domCg_ListOfFixed domCg_fixed2x3;
typedef domCg_ListOfFixed domCg_fixed2x4;
typedef domCg_ListOfFixed domCg_fixed3x1;
typedef domCg_ListOfFixed domCg_fixed3x2;
typedef domCg_ListOfFixed domCg_fixed3x3;
typedef domCg_ListOfFixed domCg_fixed3x4;
typedef domCg_ListOfFixed domCg_fixed4x1;
typedef domCg_ListOfFixed domCg_fixed4x2;
typedef domCg_ListOfFixed domCg_fixed4x3;
typedef domCg_ListOfFixed domCg_fixed4x4;
typedef xsToken domCg_identifier;
typedef xsNonNegativeInteger domGLES_MAX_LIGHTS_index;
typedef xsNonNegativeInteger domGLES_MAX_CLIP_PLANES_index;
typedef xsNonNegativeInteger domGLES_MAX_TEXTURE_COORDS_index;
typedef xsNonNegativeInteger domGLES_MAX_TEXTURE_IMAGE_UNITS_index;
typedef xsNonNegativeInteger domGles_texcombiner_argument_index_type;
typedef xsNCName domGles_rendertarget_common;

/**
 * An enumuerated type specifying the acceptable morph methods.
 */
enum domMorphMethodType {
    MORPHMETHODTYPE_NORMALIZED,
    MORPHMETHODTYPE_RELATIVE,
    MORPHMETHODTYPE_COUNT = 2
};

/**
 * An enumerated type specifying the acceptable node types.
 */
enum domNodeType {
    NODETYPE_JOINT,
    NODETYPE_NODE,
    NODETYPE_COUNT = 2
};

/**
 * An enumerated type specifying the acceptable up-axis values.
 */
enum domUpAxisType {
    UPAXISTYPE_X_UP,
    UPAXISTYPE_Y_UP,
    UPAXISTYPE_Z_UP,
    UPAXISTYPE_COUNT = 3
};

/**
 * An enumerated type specifying the acceptable document versions.
 */
enum domVersionType {
    VERSIONTYPE_1_4_0,
    VERSIONTYPE_1_4_1,
    VERSIONTYPE_COUNT = 2
};

enum domFx_opaque_enum {
    FX_OPAQUE_ENUM_A_ONE,       /**< When a transparent opaque attribute is set to A_ONE, it means the transparency information will be taken from the alpha channel of the color, texture, or parameter supplying the value. The value of 1.0 is opaque in this mode. */
    FX_OPAQUE_ENUM_RGB_ZERO,        /**< When a transparent opaque attribute is set to RGB_ZERO, it means the transparency information will be taken from the red, green, and blue channels of the color, texture, or parameter supplying the value. Each channel is modulated independently. The value of 0.0 is opaque in this mode. */
    FX_OPAQUE_ENUM_COUNT = 2
};

enum domFx_surface_type_enum {
    FX_SURFACE_TYPE_ENUM_UNTYPED,       /**< When a surface's type attribute is set to UNTYPED, its type is initially unknown and established later by the context in which it is used, such as by a texture sampler that references it. A surface of any other type may be changed into an UNTYPED surface at run-time, as if it were created by <newparam>, using <setparam>. If there is a type mismatch between a <setparam> operation and what the run-time decides the type should be, the result is profile- and platform-specific behavior. */
    FX_SURFACE_TYPE_ENUM_1D,
    FX_SURFACE_TYPE_ENUM_2D,
    FX_SURFACE_TYPE_ENUM_3D,
    FX_SURFACE_TYPE_ENUM_RECT,
    FX_SURFACE_TYPE_ENUM_CUBE,
    FX_SURFACE_TYPE_ENUM_DEPTH,
    FX_SURFACE_TYPE_ENUM_COUNT = 7
};

enum domFx_surface_face_enum {
    FX_SURFACE_FACE_ENUM_POSITIVE_X,
    FX_SURFACE_FACE_ENUM_NEGATIVE_X,
    FX_SURFACE_FACE_ENUM_POSITIVE_Y,
    FX_SURFACE_FACE_ENUM_NEGATIVE_Y,
    FX_SURFACE_FACE_ENUM_POSITIVE_Z,
    FX_SURFACE_FACE_ENUM_NEGATIVE_Z,
    FX_SURFACE_FACE_ENUM_COUNT = 6
};

/**
 * The per-texel layout of the format.  The length of the string indicate
 * how many channels there are and the letter respresents the name of the
 * channel.  There are typically 0 to 4 channels.
 */
enum domFx_surface_format_hint_channels_enum {
    FX_SURFACE_FORMAT_HINT_CHANNELS_ENUM_RGB,       /**< RGB color  map */
    FX_SURFACE_FORMAT_HINT_CHANNELS_ENUM_RGBA,      /**< RGB color + Alpha map often used for color + transparency or other things packed into channel A like specular power */
    FX_SURFACE_FORMAT_HINT_CHANNELS_ENUM_L,     /**< Luminance map often used for light mapping */
    FX_SURFACE_FORMAT_HINT_CHANNELS_ENUM_LA,        /**< Luminance+Alpha map often used for light mapping */
    FX_SURFACE_FORMAT_HINT_CHANNELS_ENUM_D,     /**< Depth map often used for displacement, parellax, relief, or shadow mapping */
    FX_SURFACE_FORMAT_HINT_CHANNELS_ENUM_XYZ,       /**< Typically used for normal maps or 3component displacement maps. */
    FX_SURFACE_FORMAT_HINT_CHANNELS_ENUM_XYZW,      /**< Typically used for normal maps where W is the depth for relief or parrallax mapping */
    FX_SURFACE_FORMAT_HINT_CHANNELS_ENUM_COUNT = 7
};

/**
 * Each channel of the texel has a precision.  Typically these are all linked
 * together.  An exact format lay lower the precision of an individual channel
 * but applying a higher precision by linking the channels together may still
 * convey the same information.
 */
enum domFx_surface_format_hint_precision_enum {
    FX_SURFACE_FORMAT_HINT_PRECISION_ENUM_LOW,      /**< For integers this typically represents 8 bits.  For floats typically 16 bits. */
    FX_SURFACE_FORMAT_HINT_PRECISION_ENUM_MID,      /**< For integers this typically represents 8 to 24 bits.  For floats typically 16 to 32 bits. */
    FX_SURFACE_FORMAT_HINT_PRECISION_ENUM_HIGH,     /**< For integers this typically represents 16 to 32 bits.  For floats typically 24 to 32 bits. */
    FX_SURFACE_FORMAT_HINT_PRECISION_ENUM_COUNT = 3
};

/**
 * Each channel represents a range of values. Some example ranges are signed
 * or unsigned integers, or between between a clamped range such as 0.0f to
 * 1.0f, or high dynamic range via floating point
 */
enum domFx_surface_format_hint_range_enum {
    FX_SURFACE_FORMAT_HINT_RANGE_ENUM_SNORM,        /**< Format is representing a decimal value that remains within the -1 to 1 range. Implimentation could be integer-fixedpoint or floats. */
    FX_SURFACE_FORMAT_HINT_RANGE_ENUM_UNORM,        /**< Format is representing a decimal value that remains within the 0 to 1 range. Implimentation could be integer-fixedpoint or floats. */
    FX_SURFACE_FORMAT_HINT_RANGE_ENUM_SINT,     /**< Format is representing signed integer numbers.  (ex. 8bits = -128 to 127) */
    FX_SURFACE_FORMAT_HINT_RANGE_ENUM_UINT,     /**< Format is representing unsigned integer numbers.  (ex. 8bits = 0 to 255) */
    FX_SURFACE_FORMAT_HINT_RANGE_ENUM_FLOAT,        /**< Format should support full floating point ranges.  High precision is expected to be 32bit. Mid precision may be 16 to 32 bit.  Low precision is expected to be 16 bit. */
    FX_SURFACE_FORMAT_HINT_RANGE_ENUM_COUNT = 5
};

/**
 * Additional hints about data relationships and other things to help the
 * application pick the best format.
 */
enum domFx_surface_format_hint_option_enum {
    FX_SURFACE_FORMAT_HINT_OPTION_ENUM_SRGB_GAMMA,      /**< colors are stored with respect to the sRGB 2.2 gamma curve rather than linear */
    FX_SURFACE_FORMAT_HINT_OPTION_ENUM_NORMALIZED3,     /**< the texel's XYZ/RGB should be normalized such as in a normal map. */
    FX_SURFACE_FORMAT_HINT_OPTION_ENUM_NORMALIZED4,     /**< the texel's XYZW/RGBA should be normalized such as in a normal map. */
    FX_SURFACE_FORMAT_HINT_OPTION_ENUM_COMPRESSABLE,        /**< The surface may use run-time compression.  Considering the best compression based on desired, channel, range, precision, and options */
    FX_SURFACE_FORMAT_HINT_OPTION_ENUM_COUNT = 4
};

enum domFx_sampler_wrap_common {
    FX_SAMPLER_WRAP_COMMON_NONE,
    FX_SAMPLER_WRAP_COMMON_WRAP,
    FX_SAMPLER_WRAP_COMMON_MIRROR,
    FX_SAMPLER_WRAP_COMMON_CLAMP,
    FX_SAMPLER_WRAP_COMMON_BORDER,
    FX_SAMPLER_WRAP_COMMON_COUNT = 5
};

enum domFx_sampler_filter_common {
    FX_SAMPLER_FILTER_COMMON_NONE,
    FX_SAMPLER_FILTER_COMMON_NEAREST,
    FX_SAMPLER_FILTER_COMMON_LINEAR,
    FX_SAMPLER_FILTER_COMMON_NEAREST_MIPMAP_NEAREST,
    FX_SAMPLER_FILTER_COMMON_LINEAR_MIPMAP_NEAREST,
    FX_SAMPLER_FILTER_COMMON_NEAREST_MIPMAP_LINEAR,
    FX_SAMPLER_FILTER_COMMON_LINEAR_MIPMAP_LINEAR,
    FX_SAMPLER_FILTER_COMMON_COUNT = 7
};

enum domFx_modifier_enum_common {
    FX_MODIFIER_ENUM_COMMON_CONST,
    FX_MODIFIER_ENUM_COMMON_UNIFORM,
    FX_MODIFIER_ENUM_COMMON_VARYING,
    FX_MODIFIER_ENUM_COMMON_STATIC,
    FX_MODIFIER_ENUM_COMMON_VOLATILE,
    FX_MODIFIER_ENUM_COMMON_EXTERN,
    FX_MODIFIER_ENUM_COMMON_SHARED,
    FX_MODIFIER_ENUM_COMMON_COUNT = 7
};

enum domFx_pipeline_stage_common {
    FX_PIPELINE_STAGE_COMMON_VERTEXPROGRAM,
    FX_PIPELINE_STAGE_COMMON_FRAGMENTPROGRAM,
    FX_PIPELINE_STAGE_COMMON_VERTEXSHADER,
    FX_PIPELINE_STAGE_COMMON_PIXELSHADER,
    FX_PIPELINE_STAGE_COMMON_COUNT = 4
};

enum domGl_blend_type {
    GL_BLEND_TYPE_ZERO = 0x0,
    GL_BLEND_TYPE_ONE = 0x1,
    GL_BLEND_TYPE_SRC_COLOR = 0x0300,
    GL_BLEND_TYPE_ONE_MINUS_SRC_COLOR = 0x0301,
    GL_BLEND_TYPE_DEST_COLOR = 0x0306,
    GL_BLEND_TYPE_ONE_MINUS_DEST_COLOR = 0x0307,
    GL_BLEND_TYPE_SRC_ALPHA = 0x0302,
    GL_BLEND_TYPE_ONE_MINUS_SRC_ALPHA = 0x0303,
    GL_BLEND_TYPE_DST_ALPHA = 0x0304,
    GL_BLEND_TYPE_ONE_MINUS_DST_ALPHA = 0x0305,
    GL_BLEND_TYPE_CONSTANT_COLOR = 0x8001,
    GL_BLEND_TYPE_ONE_MINUS_CONSTANT_COLOR = 0x8002,
    GL_BLEND_TYPE_CONSTANT_ALPHA = 0x8003,
    GL_BLEND_TYPE_ONE_MINUS_CONSTANT_ALPHA = 0x8004,
    GL_BLEND_TYPE_SRC_ALPHA_SATURATE = 0x0308,
    GL_BLEND_TYPE_COUNT = 15
};

enum domGl_face_type {
    GL_FACE_TYPE_FRONT = 0x0404,
    GL_FACE_TYPE_BACK = 0x0405,
    GL_FACE_TYPE_FRONT_AND_BACK = 0x0408,
    GL_FACE_TYPE_COUNT = 3
};

enum domGl_blend_equation_type {
    GL_BLEND_EQUATION_TYPE_FUNC_ADD = 0x8006,
    GL_BLEND_EQUATION_TYPE_FUNC_SUBTRACT = 0x800A,
    GL_BLEND_EQUATION_TYPE_FUNC_REVERSE_SUBTRACT = 0x800B,
    GL_BLEND_EQUATION_TYPE_MIN = 0x8007,
    GL_BLEND_EQUATION_TYPE_MAX = 0x8008,
    GL_BLEND_EQUATION_TYPE_COUNT = 5
};

enum domGl_func_type {
    GL_FUNC_TYPE_NEVER = 0x0200,
    GL_FUNC_TYPE_LESS = 0x0201,
    GL_FUNC_TYPE_LEQUAL = 0x0203,
    GL_FUNC_TYPE_EQUAL = 0x0202,
    GL_FUNC_TYPE_GREATER = 0x0204,
    GL_FUNC_TYPE_NOTEQUAL = 0x0205,
    GL_FUNC_TYPE_GEQUAL = 0x0206,
    GL_FUNC_TYPE_ALWAYS = 0x0207,
    GL_FUNC_TYPE_COUNT = 8
};

enum domGl_stencil_op_type {
    GL_STENCIL_OP_TYPE_KEEP = 0x1E00,
    GL_STENCIL_OP_TYPE_ZERO = 0x0,
    GL_STENCIL_OP_TYPE_REPLACE = 0x1E01,
    GL_STENCIL_OP_TYPE_INCR = 0x1E02,
    GL_STENCIL_OP_TYPE_DECR = 0x1E03,
    GL_STENCIL_OP_TYPE_INVERT = 0x150A,
    GL_STENCIL_OP_TYPE_INCR_WRAP = 0x8507,
    GL_STENCIL_OP_TYPE_DECR_WRAP = 0x8508,
    GL_STENCIL_OP_TYPE_COUNT = 8
};

enum domGl_material_type {
    GL_MATERIAL_TYPE_EMISSION = 0x1600,
    GL_MATERIAL_TYPE_AMBIENT = 0x1200,
    GL_MATERIAL_TYPE_DIFFUSE = 0x1201,
    GL_MATERIAL_TYPE_SPECULAR = 0x1202,
    GL_MATERIAL_TYPE_AMBIENT_AND_DIFFUSE = 0x1602,
    GL_MATERIAL_TYPE_COUNT = 5
};

enum domGl_fog_type {
    GL_FOG_TYPE_LINEAR = 0x2601,
    GL_FOG_TYPE_EXP = 0x0800,
    GL_FOG_TYPE_EXP2 = 0x0801,
    GL_FOG_TYPE_COUNT = 3
};

enum domGl_fog_coord_src_type {
    GL_FOG_COORD_SRC_TYPE_FOG_COORDINATE = 0x8451,
    GL_FOG_COORD_SRC_TYPE_FRAGMENT_DEPTH = 0x8452,
    GL_FOG_COORD_SRC_TYPE_COUNT = 2
};

enum domGl_front_face_type {
    GL_FRONT_FACE_TYPE_CW = 0x0900,
    GL_FRONT_FACE_TYPE_CCW = 0x0901,
    GL_FRONT_FACE_TYPE_COUNT = 2
};

enum domGl_light_model_color_control_type {
    GL_LIGHT_MODEL_COLOR_CONTROL_TYPE_SINGLE_COLOR = 0x81F9,
    GL_LIGHT_MODEL_COLOR_CONTROL_TYPE_SEPARATE_SPECULAR_COLOR = 0x81FA,
    GL_LIGHT_MODEL_COLOR_CONTROL_TYPE_COUNT = 2
};

enum domGl_logic_op_type {
    GL_LOGIC_OP_TYPE_CLEAR = 0x1500,
    GL_LOGIC_OP_TYPE_AND = 0x1501,
    GL_LOGIC_OP_TYPE_AND_REVERSE = 0x1502,
    GL_LOGIC_OP_TYPE_COPY = 0x1503,
    GL_LOGIC_OP_TYPE_AND_INVERTED = 0x1504,
    GL_LOGIC_OP_TYPE_NOOP = 0x1505,
    GL_LOGIC_OP_TYPE_XOR = 0x1506,
    GL_LOGIC_OP_TYPE_OR = 0x1507,
    GL_LOGIC_OP_TYPE_NOR = 0x1508,
    GL_LOGIC_OP_TYPE_EQUIV = 0x1509,
    GL_LOGIC_OP_TYPE_INVERT = 0x150A,
    GL_LOGIC_OP_TYPE_OR_REVERSE = 0x150B,
    GL_LOGIC_OP_TYPE_COPY_INVERTED = 0x150C,
    GL_LOGIC_OP_TYPE_NAND = 0x150E,
    GL_LOGIC_OP_TYPE_SET = 0x150F,
    GL_LOGIC_OP_TYPE_COUNT = 15
};

enum domGl_polygon_mode_type {
    GL_POLYGON_MODE_TYPE_POINT = 0x1B00,
    GL_POLYGON_MODE_TYPE_LINE = 0x1B01,
    GL_POLYGON_MODE_TYPE_FILL = 0x1B02,
    GL_POLYGON_MODE_TYPE_COUNT = 3
};

enum domGl_shade_model_type {
    GL_SHADE_MODEL_TYPE_FLAT = 0x1D00,
    GL_SHADE_MODEL_TYPE_SMOOTH = 0x1D01,
    GL_SHADE_MODEL_TYPE_COUNT = 2
};

enum domGlsl_pipeline_stage {
    GLSL_PIPELINE_STAGE_VERTEXPROGRAM,
    GLSL_PIPELINE_STAGE_FRAGMENTPROGRAM,
    GLSL_PIPELINE_STAGE_COUNT = 2
};

enum domCg_pipeline_stage {
    CG_PIPELINE_STAGE_VERTEX,
    CG_PIPELINE_STAGE_FRAGMENT,
    CG_PIPELINE_STAGE_COUNT = 2
};

enum domGles_texenv_mode_enums {
    GLES_TEXENV_MODE_ENUMS_REPLACE = 0x1E01,
    GLES_TEXENV_MODE_ENUMS_MODULATE = 0x2100,
    GLES_TEXENV_MODE_ENUMS_DECAL = 0x2101,
    GLES_TEXENV_MODE_ENUMS_BLEND = 0x0BE2,
    GLES_TEXENV_MODE_ENUMS_ADD = 0x0104,
    GLES_TEXENV_MODE_ENUMS_COUNT = 5
};

enum domGles_texcombiner_operatorRGB_enums {
    GLES_TEXCOMBINER_OPERATORRGB_ENUMS_REPLACE = 0x1E01,
    GLES_TEXCOMBINER_OPERATORRGB_ENUMS_MODULATE = 0x2100,
    GLES_TEXCOMBINER_OPERATORRGB_ENUMS_ADD = 0x0104,
    GLES_TEXCOMBINER_OPERATORRGB_ENUMS_ADD_SIGNED = 0x8574,
    GLES_TEXCOMBINER_OPERATORRGB_ENUMS_INTERPOLATE = 0x8575,
    GLES_TEXCOMBINER_OPERATORRGB_ENUMS_SUBTRACT = 0x84E7,
    GLES_TEXCOMBINER_OPERATORRGB_ENUMS_DOT3_RGB = 0x86AE,
    GLES_TEXCOMBINER_OPERATORRGB_ENUMS_DOT3_RGBA = 0x86AF,
    GLES_TEXCOMBINER_OPERATORRGB_ENUMS_COUNT = 8
};

enum domGles_texcombiner_operatorAlpha_enums {
    GLES_TEXCOMBINER_OPERATORALPHA_ENUMS_REPLACE = 0x1E01,
    GLES_TEXCOMBINER_OPERATORALPHA_ENUMS_MODULATE = 0x2100,
    GLES_TEXCOMBINER_OPERATORALPHA_ENUMS_ADD = 0x0104,
    GLES_TEXCOMBINER_OPERATORALPHA_ENUMS_ADD_SIGNED = 0x8574,
    GLES_TEXCOMBINER_OPERATORALPHA_ENUMS_INTERPOLATE = 0x8575,
    GLES_TEXCOMBINER_OPERATORALPHA_ENUMS_SUBTRACT = 0x84E7,
    GLES_TEXCOMBINER_OPERATORALPHA_ENUMS_COUNT = 6
};

enum domGles_texcombiner_source_enums {
    GLES_TEXCOMBINER_SOURCE_ENUMS_TEXTURE = 0x1702,
    GLES_TEXCOMBINER_SOURCE_ENUMS_CONSTANT = 0x8576,
    GLES_TEXCOMBINER_SOURCE_ENUMS_PRIMARY = 0x8577,
    GLES_TEXCOMBINER_SOURCE_ENUMS_PREVIOUS = 0x8578,
    GLES_TEXCOMBINER_SOURCE_ENUMS_COUNT = 4
};

enum domGles_texcombiner_operandRGB_enums {
    GLES_TEXCOMBINER_OPERANDRGB_ENUMS_SRC_COLOR = 0x0300,
    GLES_TEXCOMBINER_OPERANDRGB_ENUMS_ONE_MINUS_SRC_COLOR = 0x0301,
    GLES_TEXCOMBINER_OPERANDRGB_ENUMS_SRC_ALPHA = 0x0302,
    GLES_TEXCOMBINER_OPERANDRGB_ENUMS_ONE_MINUS_SRC_ALPHA = 0x0303,
    GLES_TEXCOMBINER_OPERANDRGB_ENUMS_COUNT = 4
};

enum domGles_texcombiner_operandAlpha_enums {
    GLES_TEXCOMBINER_OPERANDALPHA_ENUMS_SRC_ALPHA = 0x0302,
    GLES_TEXCOMBINER_OPERANDALPHA_ENUMS_ONE_MINUS_SRC_ALPHA = 0x0303,
    GLES_TEXCOMBINER_OPERANDALPHA_ENUMS_COUNT = 2
};

enum domGles_sampler_wrap {
    GLES_SAMPLER_WRAP_REPEAT,
    GLES_SAMPLER_WRAP_CLAMP,
    GLES_SAMPLER_WRAP_CLAMP_TO_EDGE,
    GLES_SAMPLER_WRAP_MIRRORED_REPEAT,      /**< supported by GLES 1.1 only */
    GLES_SAMPLER_WRAP_COUNT = 4
};

enum domGles_stencil_op_type {
    GLES_STENCIL_OP_TYPE_KEEP = 0x1E00,
    GLES_STENCIL_OP_TYPE_ZERO = 0x0,
    GLES_STENCIL_OP_TYPE_REPLACE = 0x1E01,
    GLES_STENCIL_OP_TYPE_INCR = 0x1E02,
    GLES_STENCIL_OP_TYPE_DECR = 0x1E03,
    GLES_STENCIL_OP_TYPE_INVERT = 0x150A,
    GLES_STENCIL_OP_TYPE_COUNT = 6
};

enum domSpringType {
    SPRINGTYPE_LINEAR,
    SPRINGTYPE_ANGULAR,
    SPRINGTYPE_COUNT = 2
};

enum domGl_enumeration {
    GL_ENUMERATION_ZERO = 0x0,
    GL_ENUMERATION_ONE = 0x1,
    GL_ENUMERATION_SRC_COLOR = 0x0300,
    GL_ENUMERATION_ONE_MINUS_SRC_COLOR = 0x0301,
    GL_ENUMERATION_DEST_COLOR = 0x0306,
    GL_ENUMERATION_ONE_MINUS_DEST_COLOR = 0x0307,
    GL_ENUMERATION_SRC_ALPHA = 0x0302,
    GL_ENUMERATION_ONE_MINUS_SRC_ALPHA = 0x0303,
    GL_ENUMERATION_DST_ALPHA = 0x0304,
    GL_ENUMERATION_ONE_MINUS_DST_ALPHA = 0x0305,
    GL_ENUMERATION_CONSTANT_COLOR = 0x8001,
    GL_ENUMERATION_ONE_MINUS_CONSTANT_COLOR = 0x8002,
    GL_ENUMERATION_CONSTANT_ALPHA = 0x8003,
    GL_ENUMERATION_ONE_MINUS_CONSTANT_ALPHA = 0x8004,
    GL_ENUMERATION_SRC_ALPHA_SATURATE = 0x0308,
    GL_ENUMERATION_FRONT = 0x0404,
    GL_ENUMERATION_BACK = 0x0405,
    GL_ENUMERATION_FRONT_AND_BACK = 0x0408,
    GL_ENUMERATION_FUNC_ADD = 0x8006,
    GL_ENUMERATION_FUNC_SUBTRACT = 0x800A,
    GL_ENUMERATION_FUNC_REVERSE_SUBTRACT = 0x800B,
    GL_ENUMERATION_MIN = 0x8007,
    GL_ENUMERATION_MAX = 0x8008,
    GL_ENUMERATION_NEVER = 0x0200,
    GL_ENUMERATION_LESS = 0x0201,
    GL_ENUMERATION_LEQUAL = 0x0203,
    GL_ENUMERATION_EQUAL = 0x0202,
    GL_ENUMERATION_GREATER = 0x0204,
    GL_ENUMERATION_NOTEQUAL = 0x0205,
    GL_ENUMERATION_GEQUAL = 0x0206,
    GL_ENUMERATION_ALWAYS = 0x0207,
    GL_ENUMERATION_KEEP = 0x1E00,
    GL_ENUMERATION_REPLACE = 0x1E01,
    GL_ENUMERATION_INCR = 0x1E02,
    GL_ENUMERATION_DECR = 0x1E03,
    GL_ENUMERATION_INVERT = 0x150A,
    GL_ENUMERATION_INCR_WRAP = 0x8507,
    GL_ENUMERATION_DECR_WRAP = 0x8508,
    GL_ENUMERATION_EMISSION = 0x1600,
    GL_ENUMERATION_AMBIENT = 0x1200,
    GL_ENUMERATION_DIFFUSE = 0x1201,
    GL_ENUMERATION_SPECULAR = 0x1202,
    GL_ENUMERATION_AMBIENT_AND_DIFFUSE = 0x1602,
    GL_ENUMERATION_LINEAR = 0x2601,
    GL_ENUMERATION_EXP = 0x0800,
    GL_ENUMERATION_EXP2 = 0x0801,
    GL_ENUMERATION_FOG_COORDINATE = 0x8451,
    GL_ENUMERATION_FRAGMENT_DEPTH = 0x8452,
    GL_ENUMERATION_CW = 0x0900,
    GL_ENUMERATION_CCW = 0x0901,
    GL_ENUMERATION_SINGLE_COLOR = 0x81F9,
    GL_ENUMERATION_SEPARATE_SPECULAR_COLOR = 0x81FA,
    GL_ENUMERATION_CLEAR = 0x1500,
    GL_ENUMERATION_AND = 0x1501,
    GL_ENUMERATION_AND_REVERSE = 0x1502,
    GL_ENUMERATION_COPY = 0x1503,
    GL_ENUMERATION_AND_INVERTED = 0x1504,
    GL_ENUMERATION_NOOP = 0x1505,
    GL_ENUMERATION_XOR = 0x1506,
    GL_ENUMERATION_OR = 0x1507,
    GL_ENUMERATION_NOR = 0x1508,
    GL_ENUMERATION_EQUIV = 0x1509,
    GL_ENUMERATION_OR_REVERSE = 0x150B,
    GL_ENUMERATION_COPY_INVERTED = 0x150C,
    GL_ENUMERATION_NAND = 0x150E,
    GL_ENUMERATION_SET = 0x150F,
    GL_ENUMERATION_POINT = 0x1B00,
    GL_ENUMERATION_LINE = 0x1B01,
    GL_ENUMERATION_FILL = 0x1B02,
    GL_ENUMERATION_FLAT = 0x1D00,
    GL_ENUMERATION_SMOOTH = 0x1D01,
    GL_ENUMERATION_COUNT = 72
};

enum domGles_enumeration {
    GLES_ENUMERATION_ZERO = 0x0,
    GLES_ENUMERATION_ONE = 0x1,
    GLES_ENUMERATION_SRC_COLOR = 0x0300,
    GLES_ENUMERATION_ONE_MINUS_SRC_COLOR = 0x0301,
    GLES_ENUMERATION_DEST_COLOR = 0x0306,
    GLES_ENUMERATION_ONE_MINUS_DEST_COLOR = 0x0307,
    GLES_ENUMERATION_SRC_ALPHA = 0x0302,
    GLES_ENUMERATION_ONE_MINUS_SRC_ALPHA = 0x0303,
    GLES_ENUMERATION_DST_ALPHA = 0x0304,
    GLES_ENUMERATION_ONE_MINUS_DST_ALPHA = 0x0305,
    GLES_ENUMERATION_CONSTANT_COLOR = 0x8001,
    GLES_ENUMERATION_ONE_MINUS_CONSTANT_COLOR = 0x8002,
    GLES_ENUMERATION_CONSTANT_ALPHA = 0x8003,
    GLES_ENUMERATION_ONE_MINUS_CONSTANT_ALPHA = 0x8004,
    GLES_ENUMERATION_SRC_ALPHA_SATURATE = 0x0308,
    GLES_ENUMERATION_FRONT = 0x0404,
    GLES_ENUMERATION_BACK = 0x0405,
    GLES_ENUMERATION_FRONT_AND_BACK = 0x0408,
    GLES_ENUMERATION_NEVER = 0x0200,
    GLES_ENUMERATION_LESS = 0x0201,
    GLES_ENUMERATION_LEQUAL = 0x0203,
    GLES_ENUMERATION_EQUAL = 0x0202,
    GLES_ENUMERATION_GREATER = 0x0204,
    GLES_ENUMERATION_NOTEQUAL = 0x0205,
    GLES_ENUMERATION_GEQUAL = 0x0206,
    GLES_ENUMERATION_ALWAYS = 0x0207,
    GLES_ENUMERATION_KEEP = 0x1E00,
    GLES_ENUMERATION_REPLACE = 0x1E01,
    GLES_ENUMERATION_INCR = 0x1E02,
    GLES_ENUMERATION_DECR = 0x1E03,
    GLES_ENUMERATION_INVERT = 0x150A,
    GLES_ENUMERATION_INCR_WRAP = 0x8507,
    GLES_ENUMERATION_DECR_WRAP = 0x8508,
    GLES_ENUMERATION_EMISSION = 0x1600,
    GLES_ENUMERATION_AMBIENT = 0x1200,
    GLES_ENUMERATION_DIFFUSE = 0x1201,
    GLES_ENUMERATION_SPECULAR = 0x1202,
    GLES_ENUMERATION_AMBIENT_AND_DIFFUSE = 0x1602,
    GLES_ENUMERATION_LINEAR = 0x2601,
    GLES_ENUMERATION_EXP = 0x0800,
    GLES_ENUMERATION_EXP2 = 0x0801,
    GLES_ENUMERATION_CW = 0x0900,
    GLES_ENUMERATION_CCW = 0x0901,
    GLES_ENUMERATION_SINGLE_COLOR = 0x81F9,
    GLES_ENUMERATION_SEPARATE_SPECULAR_COLOR = 0x81FA,
    GLES_ENUMERATION_CLEAR = 0x1500,
    GLES_ENUMERATION_AND = 0x1501,
    GLES_ENUMERATION_AND_REVERSE = 0x1502,
    GLES_ENUMERATION_COPY = 0x1503,
    GLES_ENUMERATION_AND_INVERTED = 0x1504,
    GLES_ENUMERATION_NOOP = 0x1505,
    GLES_ENUMERATION_XOR = 0x1506,
    GLES_ENUMERATION_OR = 0x1507,
    GLES_ENUMERATION_NOR = 0x1508,
    GLES_ENUMERATION_EQUIV = 0x1509,
    GLES_ENUMERATION_OR_REVERSE = 0x150B,
    GLES_ENUMERATION_COPY_INVERTED = 0x150C,
    GLES_ENUMERATION_NAND = 0x150E,
    GLES_ENUMERATION_SET = 0x150F,
    GLES_ENUMERATION_POINT = 0x1B00,
    GLES_ENUMERATION_LINE = 0x1B01,
    GLES_ENUMERATION_FILL = 0x1B02,
    GLES_ENUMERATION_FLAT = 0x1D00,
    GLES_ENUMERATION_SMOOTH = 0x1D01,
    GLES_ENUMERATION_COUNT = 65
};

//Element Type Enum
namespace COLLADA_TYPE
{
typedef int TypeEnum;
const int
    NO_TYPE = 0,
    ANY = 1,
    INPUTGLOBAL = 2,
    INPUTLOCAL = 3,
    INPUTLOCALOFFSET = 4,
    INSTANCEWITHEXTRA = 5,
    TARGETABLEFLOAT = 6,
    TARGETABLEFLOAT3 = 7,
    FX_SURFACE_FORMAT_HINT_COMMON = 8,
    CHANNELS = 9,
    RANGE = 10,
    PRECISION = 11,
    OPTION = 12,
    FX_SURFACE_INIT_PLANAR_COMMON = 13,
    ALL = 14,
    FX_SURFACE_INIT_VOLUME_COMMON = 15,
    PRIMARY = 16,
    FX_SURFACE_INIT_CUBE_COMMON = 17,
    ORDER = 18,
    FACE = 19,
    FX_SURFACE_INIT_FROM_COMMON = 20,
    FX_SURFACE_COMMON = 21,
    FORMAT = 22,
    SIZE = 23,
    VIEWPORT_RATIO = 24,
    MIP_LEVELS = 25,
    MIPMAP_GENERATE = 26,
    FX_SAMPLER1D_COMMON = 27,
    SOURCE = 28,
    WRAP_S = 29,
    MINFILTER = 30,
    MAGFILTER = 31,
    MIPFILTER = 32,
    BORDER_COLOR = 33,
    MIPMAP_MAXLEVEL = 34,
    MIPMAP_BIAS = 35,
    FX_SAMPLER2D_COMMON = 36,
    WRAP_T = 37,
    FX_SAMPLER3D_COMMON = 38,
    WRAP_P = 39,
    FX_SAMPLERCUBE_COMMON = 40,
    FX_SAMPLERRECT_COMMON = 41,
    FX_SAMPLERDEPTH_COMMON = 42,
    FX_COLORTARGET_COMMON = 43,
    FX_DEPTHTARGET_COMMON = 44,
    FX_STENCILTARGET_COMMON = 45,
    FX_CLEARCOLOR_COMMON = 46,
    FX_CLEARDEPTH_COMMON = 47,
    FX_CLEARSTENCIL_COMMON = 48,
    FX_ANNOTATE_COMMON = 49,
    FX_INCLUDE_COMMON = 50,
    FX_NEWPARAM_COMMON = 51,
    SEMANTIC = 52,
    MODIFIER = 53,
    FX_CODE_PROFILE = 54,
    GL_SAMPLER1D = 55,
    GL_SAMPLER2D = 56,
    GL_SAMPLER3D = 57,
    GL_SAMPLERCUBE = 58,
    GL_SAMPLERRECT = 59,
    GL_SAMPLERDEPTH = 60,
    GLSL_NEWARRAY_TYPE = 61,
    GLSL_SETARRAY_TYPE = 62,
    GLSL_SURFACE_TYPE = 63,
    GENERATOR = 64,
    NAME = 65,
    GLSL_NEWPARAM = 66,
    GLSL_SETPARAM_SIMPLE = 67,
    GLSL_SETPARAM = 68,
    COMMON_FLOAT_OR_PARAM_TYPE = 69,
    FLOAT = 70,
    PARAM = 71,
    COMMON_COLOR_OR_TEXTURE_TYPE = 72,
    COLOR = 73,
    TEXTURE = 74,
    COMMON_TRANSPARENT_TYPE = 75,
    COMMON_NEWPARAM_TYPE = 76,
    FLOAT2 = 77,
    FLOAT3 = 78,
    FLOAT4 = 79,
    CG_SAMPLER1D = 80,
    CG_SAMPLER2D = 81,
    CG_SAMPLER3D = 82,
    CG_SAMPLERCUBE = 83,
    CG_SAMPLERRECT = 84,
    CG_SAMPLERDEPTH = 85,
    CG_CONNECT_PARAM = 86,
    CG_NEWARRAY_TYPE = 87,
    CG_SETARRAY_TYPE = 88,
    CG_SETUSER_TYPE = 89,
    CG_SURFACE_TYPE = 90,
    CG_NEWPARAM = 91,
    CG_SETPARAM_SIMPLE = 92,
    CG_SETPARAM = 93,
    GLES_TEXTURE_CONSTANT_TYPE = 94,
    GLES_TEXENV_COMMAND_TYPE = 95,
    GLES_TEXCOMBINER_ARGUMENTRGB_TYPE = 96,
    GLES_TEXCOMBINER_ARGUMENTALPHA_TYPE = 97,
    GLES_TEXCOMBINER_COMMANDRGB_TYPE = 98,
    GLES_TEXCOMBINER_COMMANDALPHA_TYPE = 99,
    GLES_TEXCOMBINER_COMMAND_TYPE = 100,
    GLES_TEXTURE_PIPELINE = 101,
    GLES_TEXTURE_UNIT = 102,
    SURFACE = 103,
    SAMPLER_STATE = 104,
    TEXCOORD = 105,
    GLES_SAMPLER_STATE = 106,
    GLES_NEWPARAM = 107,
    FX_SURFACE_INIT_COMMON = 108,
    INIT_AS_NULL = 109,
    INIT_AS_TARGET = 110,
    FX_ANNOTATE_TYPE_COMMON = 111,
    BOOL = 112,
    BOOL2 = 113,
    BOOL3 = 114,
    BOOL4 = 115,
    INT = 116,
    INT2 = 117,
    INT3 = 118,
    INT4 = 119,
    FLOAT2X2 = 120,
    FLOAT3X3 = 121,
    FLOAT4X4 = 122,
    STRING = 123,
    FX_BASIC_TYPE_COMMON = 124,
    FLOAT1X1 = 125,
    FLOAT1X2 = 126,
    FLOAT1X3 = 127,
    FLOAT1X4 = 128,
    FLOAT2X1 = 129,
    FLOAT2X3 = 130,
    FLOAT2X4 = 131,
    FLOAT3X1 = 132,
    FLOAT3X2 = 133,
    FLOAT3X4 = 134,
    FLOAT4X1 = 135,
    FLOAT4X2 = 136,
    FLOAT4X3 = 137,
    ENUM = 138,
    GL_PIPELINE_SETTINGS = 139,
    ALPHA_FUNC = 140,
    FUNC = 141,
    VALUE = 142,
    BLEND_FUNC = 143,
    SRC = 144,
    DEST = 145,
    BLEND_FUNC_SEPARATE = 146,
    SRC_RGB = 147,
    DEST_RGB = 148,
    SRC_ALPHA = 149,
    DEST_ALPHA = 150,
    BLEND_EQUATION = 151,
    BLEND_EQUATION_SEPARATE = 152,
    RGB = 153,
    ALPHA = 154,
    COLOR_MATERIAL = 155,
    MODE = 156,
    CULL_FACE = 157,
    DEPTH_FUNC = 158,
    FOG_MODE = 159,
    FOG_COORD_SRC = 160,
    FRONT_FACE = 161,
    LIGHT_MODEL_COLOR_CONTROL = 162,
    LOGIC_OP = 163,
    POLYGON_MODE = 164,
    SHADE_MODEL = 165,
    STENCIL_FUNC = 166,
    REF = 167,
    MASK = 168,
    STENCIL_OP = 169,
    FAIL = 170,
    ZFAIL = 171,
    ZPASS = 172,
    STENCIL_FUNC_SEPARATE = 173,
    FRONT = 174,
    BACK = 175,
    STENCIL_OP_SEPARATE = 176,
    STENCIL_MASK_SEPARATE = 177,
    LIGHT_ENABLE = 178,
    LIGHT_AMBIENT = 179,
    LIGHT_DIFFUSE = 180,
    LIGHT_SPECULAR = 181,
    LIGHT_POSITION = 182,
    LIGHT_CONSTANT_ATTENUATION = 183,
    LIGHT_LINEAR_ATTENUATION = 184,
    LIGHT_QUADRATIC_ATTENUATION = 185,
    LIGHT_SPOT_CUTOFF = 186,
    LIGHT_SPOT_DIRECTION = 187,
    LIGHT_SPOT_EXPONENT = 188,
    TEXTURE1D = 189,
    TEXTURE2D = 190,
    TEXTURE3D = 191,
    TEXTURECUBE = 192,
    TEXTURERECT = 193,
    TEXTUREDEPTH = 194,
    TEXTURE1D_ENABLE = 195,
    TEXTURE2D_ENABLE = 196,
    TEXTURE3D_ENABLE = 197,
    TEXTURECUBE_ENABLE = 198,
    TEXTURERECT_ENABLE = 199,
    TEXTUREDEPTH_ENABLE = 200,
    TEXTURE_ENV_COLOR = 201,
    TEXTURE_ENV_MODE = 202,
    CLIP_PLANE = 203,
    CLIP_PLANE_ENABLE = 204,
    BLEND_COLOR = 205,
    CLEAR_COLOR = 206,
    CLEAR_STENCIL = 207,
    CLEAR_DEPTH = 208,
    COLOR_MASK = 209,
    DEPTH_BOUNDS = 210,
    DEPTH_MASK = 211,
    DEPTH_RANGE = 212,
    FOG_DENSITY = 213,
    FOG_START = 214,
    FOG_END = 215,
    FOG_COLOR = 216,
    LIGHT_MODEL_AMBIENT = 217,
    LIGHTING_ENABLE = 218,
    LINE_STIPPLE = 219,
    LINE_WIDTH = 220,
    MATERIAL_AMBIENT = 221,
    MATERIAL_DIFFUSE = 222,
    MATERIAL_EMISSION = 223,
    MATERIAL_SHININESS = 224,
    MATERIAL_SPECULAR = 225,
    MODEL_VIEW_MATRIX = 226,
    POINT_DISTANCE_ATTENUATION = 227,
    POINT_FADE_THRESHOLD_SIZE = 228,
    POINT_SIZE = 229,
    POINT_SIZE_MIN = 230,
    POINT_SIZE_MAX = 231,
    POLYGON_OFFSET = 232,
    PROJECTION_MATRIX = 233,
    SCISSOR = 234,
    STENCIL_MASK = 235,
    ALPHA_TEST_ENABLE = 236,
    AUTO_NORMAL_ENABLE = 237,
    BLEND_ENABLE = 238,
    COLOR_LOGIC_OP_ENABLE = 239,
    COLOR_MATERIAL_ENABLE = 240,
    CULL_FACE_ENABLE = 241,
    DEPTH_BOUNDS_ENABLE = 242,
    DEPTH_CLAMP_ENABLE = 243,
    DEPTH_TEST_ENABLE = 244,
    DITHER_ENABLE = 245,
    FOG_ENABLE = 246,
    LIGHT_MODEL_LOCAL_VIEWER_ENABLE = 247,
    LIGHT_MODEL_TWO_SIDE_ENABLE = 248,
    LINE_SMOOTH_ENABLE = 249,
    LINE_STIPPLE_ENABLE = 250,
    LOGIC_OP_ENABLE = 251,
    MULTISAMPLE_ENABLE = 252,
    NORMALIZE_ENABLE = 253,
    POINT_SMOOTH_ENABLE = 254,
    POLYGON_OFFSET_FILL_ENABLE = 255,
    POLYGON_OFFSET_LINE_ENABLE = 256,
    POLYGON_OFFSET_POINT_ENABLE = 257,
    POLYGON_SMOOTH_ENABLE = 258,
    POLYGON_STIPPLE_ENABLE = 259,
    RESCALE_NORMAL_ENABLE = 260,
    SAMPLE_ALPHA_TO_COVERAGE_ENABLE = 261,
    SAMPLE_ALPHA_TO_ONE_ENABLE = 262,
    SAMPLE_COVERAGE_ENABLE = 263,
    SCISSOR_TEST_ENABLE = 264,
    STENCIL_TEST_ENABLE = 265,
    GLSL_PARAM_TYPE = 266,
    CG_PARAM_TYPE = 267,
    BOOL1 = 268,
    BOOL1X1 = 269,
    BOOL1X2 = 270,
    BOOL1X3 = 271,
    BOOL1X4 = 272,
    BOOL2X1 = 273,
    BOOL2X2 = 274,
    BOOL2X3 = 275,
    BOOL2X4 = 276,
    BOOL3X1 = 277,
    BOOL3X2 = 278,
    BOOL3X3 = 279,
    BOOL3X4 = 280,
    BOOL4X1 = 281,
    BOOL4X2 = 282,
    BOOL4X3 = 283,
    BOOL4X4 = 284,
    FLOAT1 = 285,
    INT1 = 286,
    INT1X1 = 287,
    INT1X2 = 288,
    INT1X3 = 289,
    INT1X4 = 290,
    INT2X1 = 291,
    INT2X2 = 292,
    INT2X3 = 293,
    INT2X4 = 294,
    INT3X1 = 295,
    INT3X2 = 296,
    INT3X3 = 297,
    INT3X4 = 298,
    INT4X1 = 299,
    INT4X2 = 300,
    INT4X3 = 301,
    INT4X4 = 302,
    HALF = 303,
    HALF1 = 304,
    HALF2 = 305,
    HALF3 = 306,
    HALF4 = 307,
    HALF1X1 = 308,
    HALF1X2 = 309,
    HALF1X3 = 310,
    HALF1X4 = 311,
    HALF2X1 = 312,
    HALF2X2 = 313,
    HALF2X3 = 314,
    HALF2X4 = 315,
    HALF3X1 = 316,
    HALF3X2 = 317,
    HALF3X3 = 318,
    HALF3X4 = 319,
    HALF4X1 = 320,
    HALF4X2 = 321,
    HALF4X3 = 322,
    HALF4X4 = 323,
    FIXED = 324,
    FIXED1 = 325,
    FIXED2 = 326,
    FIXED3 = 327,
    FIXED4 = 328,
    FIXED1X1 = 329,
    FIXED1X2 = 330,
    FIXED1X3 = 331,
    FIXED1X4 = 332,
    FIXED2X1 = 333,
    FIXED2X2 = 334,
    FIXED2X3 = 335,
    FIXED2X4 = 336,
    FIXED3X1 = 337,
    FIXED3X2 = 338,
    FIXED3X3 = 339,
    FIXED3X4 = 340,
    FIXED4X1 = 341,
    FIXED4X2 = 342,
    FIXED4X3 = 343,
    FIXED4X4 = 344,
    GLES_PIPELINE_SETTINGS = 345,
    TEXTURE_PIPELINE = 346,
    LIGHT_LINEAR_ATTENUTATION = 347,
    TEXTURE_PIPELINE_ENABLE = 348,
    GLES_BASIC_TYPE_COMMON = 349,
    COLLADA = 350,
    SCENE = 351,
    IDREF_ARRAY = 352,
    NAME_ARRAY = 353,
    BOOL_ARRAY = 354,
    FLOAT_ARRAY = 355,
    INT_ARRAY = 356,
    ACCESSOR = 357,
    TECHNIQUE_COMMON = 358,
    GEOMETRY = 359,
    MESH = 360,
    SPLINE = 361,
    CONTROL_VERTICES = 362,
    P = 363,
    LINES = 364,
    LINESTRIPS = 365,
    POLYGONS = 366,
    PH = 367,
    H = 368,
    POLYLIST = 369,
    VCOUNT = 370,
    TRIANGLES = 371,
    TRIFANS = 372,
    TRISTRIPS = 373,
    VERTICES = 374,
    LOOKAT = 375,
    MATRIX = 376,
    ROTATE = 377,
    SCALE = 378,
    SKEW = 379,
    TRANSLATE = 380,
    IMAGE = 381,
    DATA = 382,
    INIT_FROM = 383,
    LIGHT = 384,
    AMBIENT = 385,
    DIRECTIONAL = 386,
    POINT = 387,
    SPOT = 388,
    MATERIAL = 389,
    CAMERA = 390,
    OPTICS = 391,
    ORTHOGRAPHIC = 392,
    PERSPECTIVE = 393,
    IMAGER = 394,
    ANIMATION = 395,
    ANIMATION_CLIP = 396,
    CHANNEL = 397,
    SAMPLER = 398,
    CONTROLLER = 399,
    SKIN = 400,
    BIND_SHAPE_MATRIX = 401,
    JOINTS = 402,
    VERTEX_WEIGHTS = 403,
    V = 404,
    MORPH = 405,
    TARGETS = 406,
    ASSET = 407,
    CONTRIBUTOR = 408,
    AUTHOR = 409,
    AUTHORING_TOOL = 410,
    COMMENTS = 411,
    COPYRIGHT = 412,
    SOURCE_DATA = 413,
    CREATED = 414,
    KEYWORDS = 415,
    MODIFIED = 416,
    REVISION = 417,
    SUBJECT = 418,
    TITLE = 419,
    UNIT = 420,
    UP_AXIS = 421,
    EXTRA = 422,
    TECHNIQUE = 423,
    NODE = 424,
    VISUAL_SCENE = 425,
    EVALUATE_SCENE = 426,
    RENDER = 427,
    LAYER = 428,
    BIND_MATERIAL = 429,
    INSTANCE_CAMERA = 430,
    INSTANCE_CONTROLLER = 431,
    SKELETON = 432,
    INSTANCE_EFFECT = 433,
    TECHNIQUE_HINT = 434,
    SETPARAM = 435,
    INSTANCE_FORCE_FIELD = 436,
    INSTANCE_GEOMETRY = 437,
    INSTANCE_LIGHT = 438,
    INSTANCE_MATERIAL = 439,
    BIND = 440,
    BIND_VERTEX_INPUT = 441,
    INSTANCE_NODE = 442,
    INSTANCE_PHYSICS_MATERIAL = 443,
    INSTANCE_PHYSICS_MODEL = 444,
    INSTANCE_RIGID_BODY = 445,
    ANGULAR_VELOCITY = 446,
    VELOCITY = 447,
    DYNAMIC = 448,
    MASS_FRAME = 449,
    SHAPE = 450,
    HOLLOW = 451,
    INSTANCE_RIGID_CONSTRAINT = 452,
    LIBRARY_ANIMATIONS = 453,
    LIBRARY_ANIMATION_CLIPS = 454,
    LIBRARY_CAMERAS = 455,
    LIBRARY_CONTROLLERS = 456,
    LIBRARY_GEOMETRIES = 457,
    LIBRARY_EFFECTS = 458,
    LIBRARY_FORCE_FIELDS = 459,
    LIBRARY_IMAGES = 460,
    LIBRARY_LIGHTS = 461,
    LIBRARY_MATERIALS = 462,
    LIBRARY_NODES = 463,
    LIBRARY_PHYSICS_MATERIALS = 464,
    LIBRARY_PHYSICS_MODELS = 465,
    LIBRARY_PHYSICS_SCENES = 466,
    LIBRARY_VISUAL_SCENES = 467,
    FX_PROFILE_ABSTRACT = 468,
    EFFECT = 469,
    GL_HOOK_ABSTRACT = 470,
    PROFILE_GLSL = 471,
    PASS = 472,
    DRAW = 473,
    SHADER = 474,
    COMPILER_TARGET = 475,
    COMPILER_OPTIONS = 476,
    PROFILE_COMMON = 477,
    CONSTANT = 478,
    LAMBERT = 479,
    PHONG = 480,
    BLINN = 481,
    PROFILE_CG = 482,
    PROFILE_GLES = 483,
    COLOR_TARGET = 484,
    DEPTH_TARGET = 485,
    STENCIL_TARGET = 486,
    COLOR_CLEAR = 487,
    DEPTH_CLEAR = 488,
    STENCIL_CLEAR = 489,
    BOX = 490,
    HALF_EXTENTS = 491,
    PLANE = 492,
    EQUATION = 493,
    SPHERE = 494,
    RADIUS = 495,
    ELLIPSOID = 496,
    CYLINDER = 497,
    HEIGHT = 498,
    TAPERED_CYLINDER = 499,
    RADIUS1 = 500,
    RADIUS2 = 501,
    CAPSULE = 502,
    TAPERED_CAPSULE = 503,
    CONVEX_MESH = 504,
    FORCE_FIELD = 505,
    PHYSICS_MATERIAL = 506,
    PHYSICS_SCENE = 507,
    RIGID_BODY = 508,
    RIGID_CONSTRAINT = 509,
    REF_ATTACHMENT = 510,
    ATTACHMENT = 511,
    ENABLED = 512,
    INTERPENETRATE = 513,
    LIMITS = 514,
    SWING_CONE_AND_TWIST = 515,
    LINEAR = 516,
    SPRING = 517,
    ANGULAR = 518,
    PHYSICS_MODEL = 519;
}

// Returns the total number of schema types/dom* classes
daeInt DLLSPEC colladaTypeCount();

} // ColladaDOM141

#endif
