1/*
2* Copyright 2006 Sony Computer Entertainment Inc.
3*
4* Licensed under the MIT Open Source License, for details please see license.txt or the website
5* http://www.opensource.org/licenses/mit-license.php
6*
7*/
8
9#ifndef __domCg_setuser_type_h__
10#define __domCg_setuser_type_h__
11
12#include <dae/daeDocument.h>
13#include <dom/domTypes.h>
14#include <dom/domElements.h>
15
16#include <dom/domCg_param_type.h>
17#include <dom/domCg_setarray_type.h>
18#include <dom/domCg_setuser_type.h>
19#include <dom/domCg_connect_param.h>
20#include <dom/domCg_setparam.h>
21class DAE;
22
23/**
24 * Creates an instance of a structured class.
25 */
26class domCg_setuser_type_complexType
27{
28protected:  // Attributes
29	domCg_identifier attrName;
30/**
31 *  Reference a code or include element which defines the usertype
32 */
33	xsNCName attrSource;
34
35protected:  // Elements
36	domCg_param_type_Array elemCg_param_type_array;
37	domCg_setarray_type_Array elemArray_array;
38	domCg_setuser_type_Array elemUsertype_array;
39	domCg_connect_param_Array elemConnect_param_array;
40/**
41 * Use a series of these to set the members by name.  The ref attribute will
42 * be relative to the usertype you are in right now. @see domSetparam
43 */
44	domCg_setparam_Array elemSetparam_array;
45	/**
46	 * Used to preserve order in elements that do not specify strict sequencing of sub-elements.
47	 */
48	daeElementRefArray _contents;
49	/**
50	 * Used to preserve order in elements that have a complex content model.
51	 */
52	daeUIntArray       _contentsOrder;
53
54	/**
55	 * Used to store information needed for some content model objects.
56	 */
57	daeTArray< daeCharArray * > _CMData;
58
59
60public:	//Accessors and Mutators
61	/**
62	 * Gets the name attribute.
63	 * @return Returns a domCg_identifier of the name attribute.
64	 */
65	domCg_identifier getName() const { return attrName; }
66	/**
67	 * Sets the name attribute.
68	 * @param atName The new value for the name attribute.
69	 */
70	void setName( domCg_identifier atName ) { attrName = atName; }
71
72	/**
73	 * Gets the source attribute.
74	 * @return Returns a xsNCName of the source attribute.
75	 */
76	xsNCName getSource() const { return attrSource; }
77	/**
78	 * Sets the source attribute.
79	 * @param atSource The new value for the source attribute.
80	 */
81	void setSource( xsNCName atSource ) { *(daeStringRef*)&attrSource = atSource;}
82
83	/**
84	 * Gets the cg_param_type element array.
85	 * @return Returns a reference to the array of cg_param_type elements.
86	 */
87	domCg_param_type_Array &getCg_param_type_array() { return elemCg_param_type_array; }
88	/**
89	 * Gets the cg_param_type element array.
90	 * @return Returns a constant reference to the array of cg_param_type elements.
91	 */
92	const domCg_param_type_Array &getCg_param_type_array() const { return elemCg_param_type_array; }
93	/**
94	 * Gets the array element array.
95	 * @return Returns a reference to the array of array elements.
96	 */
97	domCg_setarray_type_Array &getArray_array() { return elemArray_array; }
98	/**
99	 * Gets the array element array.
100	 * @return Returns a constant reference to the array of array elements.
101	 */
102	const domCg_setarray_type_Array &getArray_array() const { return elemArray_array; }
103	/**
104	 * Gets the usertype element array.
105	 * @return Returns a reference to the array of usertype elements.
106	 */
107	domCg_setuser_type_Array &getUsertype_array() { return elemUsertype_array; }
108	/**
109	 * Gets the usertype element array.
110	 * @return Returns a constant reference to the array of usertype elements.
111	 */
112	const domCg_setuser_type_Array &getUsertype_array() const { return elemUsertype_array; }
113	/**
114	 * Gets the connect_param element array.
115	 * @return Returns a reference to the array of connect_param elements.
116	 */
117	domCg_connect_param_Array &getConnect_param_array() { return elemConnect_param_array; }
118	/**
119	 * Gets the connect_param element array.
120	 * @return Returns a constant reference to the array of connect_param elements.
121	 */
122	const domCg_connect_param_Array &getConnect_param_array() const { return elemConnect_param_array; }
123	/**
124	 * Gets the setparam element array.
125	 * @return Returns a reference to the array of setparam elements.
126	 */
127	domCg_setparam_Array &getSetparam_array() { return elemSetparam_array; }
128	/**
129	 * Gets the setparam element array.
130	 * @return Returns a constant reference to the array of setparam elements.
131	 */
132	const domCg_setparam_Array &getSetparam_array() const { return elemSetparam_array; }
133	/**
134	 * Gets the _contents array.
135	 * @return Returns a reference to the _contents element array.
136	 */
137	daeElementRefArray &getContents() { return _contents; }
138	/**
139	 * Gets the _contents array.
140	 * @return Returns a constant reference to the _contents element array.
141	 */
142	const daeElementRefArray &getContents() const { return _contents; }
143
144protected:
145	/**
146	 * Constructor
147	 */
148	domCg_setuser_type_complexType(DAE& dae, daeElement* elt) : attrName(), attrSource(), elemCg_param_type_array(), elemArray_array(), elemUsertype_array(), elemConnect_param_array(), elemSetparam_array() {}
149	/**
150	 * Destructor
151	 */
152	virtual ~domCg_setuser_type_complexType() { daeElement::deleteCMDataArray(_CMData); }
153	/**
154	 * Overloaded assignment operator
155	 */
156	virtual domCg_setuser_type_complexType &operator=( const domCg_setuser_type_complexType &cpy ) { (void)cpy; return *this; }
157};
158
159/**
160 * An element of type domCg_setuser_type_complexType.
161 */
162class domCg_setuser_type : public daeElement, public domCg_setuser_type_complexType
163{
164public:
165	virtual COLLADA_TYPE::TypeEnum getElementType() const { return COLLADA_TYPE::CG_SETUSER_TYPE; }
166	static daeInt ID() { return 136; }
167	virtual daeInt typeID() const { return ID(); }
168
169public:	//Accessors and Mutators
170	/**
171	 * Gets the name attribute.
172	 * @return Returns a domCg_identifier of the name attribute.
173	 */
174	domCg_identifier getName() const { return attrName; }
175	/**
176	 * Sets the name attribute.
177	 * @param atName The new value for the name attribute.
178	 */
179	void setName( domCg_identifier atName ) { attrName = atName; _validAttributeArray[0] = true; }
180
181	/**
182	 * Gets the source attribute.
183	 * @return Returns a xsNCName of the source attribute.
184	 */
185	xsNCName getSource() const { return attrSource; }
186	/**
187	 * Sets the source attribute.
188	 * @param atSource The new value for the source attribute.
189	 */
190	void setSource( xsNCName atSource ) { *(daeStringRef*)&attrSource = atSource; _validAttributeArray[1] = true; }
191
192protected:
193	/**
194	 * Constructor
195	 */
196	domCg_setuser_type(DAE& dae) : daeElement(dae), domCg_setuser_type_complexType(dae, this) {}
197	/**
198	 * Destructor
199	 */
200	virtual ~domCg_setuser_type() {}
201	/**
202	 * Overloaded assignment operator
203	 */
204	virtual domCg_setuser_type &operator=( const domCg_setuser_type &cpy ) { (void)cpy; return *this; }
205
206public: // STATIC METHODS
207	/**
208	 * Creates an instance of this class and returns a daeElementRef referencing it.
209	 * @return a daeElementRef referencing an instance of this object.
210	 */
211	static DLLSPEC daeElementRef create(DAE& dae);
212	/**
213	 * Creates a daeMetaElement object that describes this element in the meta object reflection framework.
214	 * If a daeMetaElement already exists it will return that instead of creating a new one.
215	 * @return A daeMetaElement describing this COLLADA element.
216	 */
217	static DLLSPEC daeMetaElement* registerElement(DAE& dae);
218};
219
220
221#endif
222