187ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk/* 287ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk* Copyright 2006 Sony Computer Entertainment Inc. 387ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk* 487ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk* Licensed under the MIT Open Source License, for details please see license.txt or the website 587ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk* http://www.opensource.org/licenses/mit-license.php 687ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk* 787ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk*/ 887ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk 987ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk#ifndef __domGlsl_newarray_type_h__ 1087ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk#define __domGlsl_newarray_type_h__ 1187ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk 1287ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk#include <dae/daeDocument.h> 1387ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk#include <dom/domTypes.h> 1487ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk#include <dom/domElements.h> 1587ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk 1687ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk#include <dom/domGlsl_param_type.h> 1787ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk#include <dom/domGlsl_newarray_type.h> 1887ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchoukclass DAE; 1987ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk 2087ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk/** 2187ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk * The glsl_newarray_type is used to creates a parameter of a one-dimensional 2287ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk * array type. 2387ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk */ 2487ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchoukclass domGlsl_newarray_type_complexType 2587ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk{ 2687ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchoukprotected: // Attribute 2787ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk/** 2887ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk * The length attribute specifies the length of the array. 2987ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk */ 3087ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk xsPositiveInteger attrLength; 3187ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk 3287ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchoukprotected: // Elements 3387ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk domGlsl_param_type_Array elemGlsl_param_type_array; 3487ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk/** 3587ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk * You may recursively nest glsl_newarray elements to create multidimensional 3687ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk * arrays. @see domArray 3787ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk */ 3887ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk domGlsl_newarray_type_Array elemArray_array; 3987ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk /** 4087ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk * Used to preserve order in elements that do not specify strict sequencing of sub-elements. 4187ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk */ 4287ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk daeElementRefArray _contents; 4387ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk /** 4487ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk * Used to preserve order in elements that have a complex content model. 4587ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk */ 4687ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk daeUIntArray _contentsOrder; 4787ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk 4887ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk /** 4987ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk * Used to store information needed for some content model objects. 5087ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk */ 5187ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk daeTArray< daeCharArray * > _CMData; 5287ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk 5387ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk 5487ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchoukpublic: //Accessors and Mutators 5587ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk /** 5687ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk * Gets the length attribute. 5787ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk * @return Returns a xsPositiveInteger of the length attribute. 5887ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk */ 5987ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk xsPositiveInteger getLength() const { return attrLength; } 6087ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk /** 6187ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk * Sets the length attribute. 6287ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk * @param atLength The new value for the length attribute. 6387ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk */ 6487ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk void setLength( xsPositiveInteger atLength ) { attrLength = atLength; } 6587ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk 6687ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk /** 6787ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk * Gets the glsl_param_type element array. 6887ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk * @return Returns a reference to the array of glsl_param_type elements. 6987ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk */ 7087ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk domGlsl_param_type_Array &getGlsl_param_type_array() { return elemGlsl_param_type_array; } 7187ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk /** 7287ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk * Gets the glsl_param_type element array. 7387ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk * @return Returns a constant reference to the array of glsl_param_type elements. 7487ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk */ 7587ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk const domGlsl_param_type_Array &getGlsl_param_type_array() const { return elemGlsl_param_type_array; } 7687ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk /** 7787ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk * Gets the array element array. 7887ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk * @return Returns a reference to the array of array elements. 7987ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk */ 8087ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk domGlsl_newarray_type_Array &getArray_array() { return elemArray_array; } 8187ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk /** 8287ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk * Gets the array element array. 8387ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk * @return Returns a constant reference to the array of array elements. 8487ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk */ 8587ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk const domGlsl_newarray_type_Array &getArray_array() const { return elemArray_array; } 8687ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk /** 8787ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk * Gets the _contents array. 8887ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk * @return Returns a reference to the _contents element array. 8987ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk */ 9087ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk daeElementRefArray &getContents() { return _contents; } 9187ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk /** 9287ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk * Gets the _contents array. 9387ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk * @return Returns a constant reference to the _contents element array. 9487ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk */ 9587ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk const daeElementRefArray &getContents() const { return _contents; } 9687ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk 9787ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchoukprotected: 9887ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk /** 9987ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk * Constructor 10087ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk */ 10187ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk domGlsl_newarray_type_complexType(DAE& dae, daeElement* elt) : attrLength(), elemGlsl_param_type_array(), elemArray_array() {} 10287ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk /** 10387ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk * Destructor 10487ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk */ 10587ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk virtual ~domGlsl_newarray_type_complexType() { daeElement::deleteCMDataArray(_CMData); } 10687ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk /** 10787ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk * Overloaded assignment operator 10887ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk */ 10987ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk virtual domGlsl_newarray_type_complexType &operator=( const domGlsl_newarray_type_complexType &cpy ) { (void)cpy; return *this; } 11087ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk}; 11187ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk 11287ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk/** 11387ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk * An element of type domGlsl_newarray_type_complexType. 11487ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk */ 11587ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchoukclass domGlsl_newarray_type : public daeElement, public domGlsl_newarray_type_complexType 11687ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk{ 11787ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchoukpublic: 11887ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk virtual COLLADA_TYPE::TypeEnum getElementType() const { return COLLADA_TYPE::GLSL_NEWARRAY_TYPE; } 11987ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk static daeInt ID() { return 103; } 12087ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk virtual daeInt typeID() const { return ID(); } 12187ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk 12287ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchoukpublic: //Accessors and Mutators 12387ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk /** 12487ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk * Gets the length attribute. 12587ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk * @return Returns a xsPositiveInteger of the length attribute. 12687ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk */ 12787ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk xsPositiveInteger getLength() const { return attrLength; } 12887ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk /** 12987ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk * Sets the length attribute. 13087ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk * @param atLength The new value for the length attribute. 13187ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk */ 13287ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk void setLength( xsPositiveInteger atLength ) { attrLength = atLength; _validAttributeArray[0] = true; } 13387ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk 13487ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchoukprotected: 13587ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk /** 13687ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk * Constructor 13787ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk */ 13887ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk domGlsl_newarray_type(DAE& dae) : daeElement(dae), domGlsl_newarray_type_complexType(dae, this) {} 13987ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk /** 14087ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk * Destructor 14187ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk */ 14287ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk virtual ~domGlsl_newarray_type() {} 14387ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk /** 14487ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk * Overloaded assignment operator 14587ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk */ 14687ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk virtual domGlsl_newarray_type &operator=( const domGlsl_newarray_type &cpy ) { (void)cpy; return *this; } 14787ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk 14887ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchoukpublic: // STATIC METHODS 14987ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk /** 15087ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk * Creates an instance of this class and returns a daeElementRef referencing it. 15187ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk * @return a daeElementRef referencing an instance of this object. 15287ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk */ 15387ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk static DLLSPEC daeElementRef create(DAE& dae); 15487ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk /** 15587ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk * Creates a daeMetaElement object that describes this element in the meta object reflection framework. 15687ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk * If a daeMetaElement already exists it will return that instead of creating a new one. 15787ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk * @return A daeMetaElement describing this COLLADA element. 15887ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk */ 15987ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk static DLLSPEC daeMetaElement* registerElement(DAE& dae); 16087ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk}; 16187ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk 16287ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk 16387ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk#endif 164