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 #include <dae.h>
10 #include <dae/daeDom.h>
11 #include <dom/domInstance_material.h>
12 #include <dae/daeMetaCMPolicy.h>
13 #include <dae/daeMetaSequence.h>
14 #include <dae/daeMetaChoice.h>
15 #include <dae/daeMetaGroup.h>
16 #include <dae/daeMetaAny.h>
17 #include <dae/daeMetaElementAttribute.h>
18
19 daeElementRef
create(DAE & dae)20 domInstance_material::create(DAE& dae)
21 {
22 domInstance_materialRef ref = new domInstance_material(dae);
23 return ref;
24 }
25
26
27 daeMetaElement *
registerElement(DAE & dae)28 domInstance_material::registerElement(DAE& dae)
29 {
30 daeMetaElement* meta = dae.getMeta(ID());
31 if ( meta != NULL ) return meta;
32
33 meta = new daeMetaElement(dae);
34 dae.setMeta(ID(), *meta);
35 meta->setName( "instance_material" );
36 meta->registerClass(domInstance_material::create);
37
38 daeMetaCMPolicy *cm = NULL;
39 daeMetaElementAttribute *mea = NULL;
40 cm = new daeMetaSequence( meta, cm, 0, 1, 1 );
41
42 mea = new daeMetaElementArrayAttribute( meta, cm, 0, 0, -1 );
43 mea->setName( "bind" );
44 mea->setOffset( daeOffsetOf(domInstance_material,elemBind_array) );
45 mea->setElementType( domInstance_material::domBind::registerElement(dae) );
46 cm->appendChild( mea );
47
48 mea = new daeMetaElementArrayAttribute( meta, cm, 1, 0, -1 );
49 mea->setName( "bind_vertex_input" );
50 mea->setOffset( daeOffsetOf(domInstance_material,elemBind_vertex_input_array) );
51 mea->setElementType( domInstance_material::domBind_vertex_input::registerElement(dae) );
52 cm->appendChild( mea );
53
54 mea = new daeMetaElementArrayAttribute( meta, cm, 2, 0, -1 );
55 mea->setName( "extra" );
56 mea->setOffset( daeOffsetOf(domInstance_material,elemExtra_array) );
57 mea->setElementType( domExtra::registerElement(dae) );
58 cm->appendChild( mea );
59
60 cm->setMaxOrdinal( 2 );
61 meta->setCMRoot( cm );
62
63 // Add attribute: symbol
64 {
65 daeMetaAttribute *ma = new daeMetaAttribute;
66 ma->setName( "symbol" );
67 ma->setType( dae.getAtomicTypes().get("xsNCName"));
68 ma->setOffset( daeOffsetOf( domInstance_material , attrSymbol ));
69 ma->setContainer( meta );
70 ma->setIsRequired( true );
71
72 meta->appendAttribute(ma);
73 }
74
75 // Add attribute: target
76 {
77 daeMetaAttribute *ma = new daeMetaAttribute;
78 ma->setName( "target" );
79 ma->setType( dae.getAtomicTypes().get("xsAnyURI"));
80 ma->setOffset( daeOffsetOf( domInstance_material , attrTarget ));
81 ma->setContainer( meta );
82 ma->setIsRequired( true );
83
84 meta->appendAttribute(ma);
85 }
86
87 // Add attribute: sid
88 {
89 daeMetaAttribute *ma = new daeMetaAttribute;
90 ma->setName( "sid" );
91 ma->setType( dae.getAtomicTypes().get("xsNCName"));
92 ma->setOffset( daeOffsetOf( domInstance_material , attrSid ));
93 ma->setContainer( meta );
94
95 meta->appendAttribute(ma);
96 }
97
98 // Add attribute: name
99 {
100 daeMetaAttribute *ma = new daeMetaAttribute;
101 ma->setName( "name" );
102 ma->setType( dae.getAtomicTypes().get("xsNCName"));
103 ma->setOffset( daeOffsetOf( domInstance_material , attrName ));
104 ma->setContainer( meta );
105
106 meta->appendAttribute(ma);
107 }
108
109 meta->setElementSize(sizeof(domInstance_material));
110 meta->validate();
111
112 return meta;
113 }
114
115 daeElementRef
create(DAE & dae)116 domInstance_material::domBind::create(DAE& dae)
117 {
118 domInstance_material::domBindRef ref = new domInstance_material::domBind(dae);
119 return ref;
120 }
121
122
123 daeMetaElement *
registerElement(DAE & dae)124 domInstance_material::domBind::registerElement(DAE& dae)
125 {
126 daeMetaElement* meta = dae.getMeta(ID());
127 if ( meta != NULL ) return meta;
128
129 meta = new daeMetaElement(dae);
130 dae.setMeta(ID(), *meta);
131 meta->setName( "bind" );
132 meta->registerClass(domInstance_material::domBind::create);
133
134 meta->setIsInnerClass( true );
135
136 // Add attribute: semantic
137 {
138 daeMetaAttribute *ma = new daeMetaAttribute;
139 ma->setName( "semantic" );
140 ma->setType( dae.getAtomicTypes().get("xsNCName"));
141 ma->setOffset( daeOffsetOf( domInstance_material::domBind , attrSemantic ));
142 ma->setContainer( meta );
143 ma->setIsRequired( true );
144
145 meta->appendAttribute(ma);
146 }
147
148 // Add attribute: target
149 {
150 daeMetaAttribute *ma = new daeMetaAttribute;
151 ma->setName( "target" );
152 ma->setType( dae.getAtomicTypes().get("xsToken"));
153 ma->setOffset( daeOffsetOf( domInstance_material::domBind , attrTarget ));
154 ma->setContainer( meta );
155 ma->setIsRequired( true );
156
157 meta->appendAttribute(ma);
158 }
159
160 meta->setElementSize(sizeof(domInstance_material::domBind));
161 meta->validate();
162
163 return meta;
164 }
165
166 daeElementRef
create(DAE & dae)167 domInstance_material::domBind_vertex_input::create(DAE& dae)
168 {
169 domInstance_material::domBind_vertex_inputRef ref = new domInstance_material::domBind_vertex_input(dae);
170 return ref;
171 }
172
173
174 daeMetaElement *
registerElement(DAE & dae)175 domInstance_material::domBind_vertex_input::registerElement(DAE& dae)
176 {
177 daeMetaElement* meta = dae.getMeta(ID());
178 if ( meta != NULL ) return meta;
179
180 meta = new daeMetaElement(dae);
181 dae.setMeta(ID(), *meta);
182 meta->setName( "bind_vertex_input" );
183 meta->registerClass(domInstance_material::domBind_vertex_input::create);
184
185 meta->setIsInnerClass( true );
186
187 // Add attribute: semantic
188 {
189 daeMetaAttribute *ma = new daeMetaAttribute;
190 ma->setName( "semantic" );
191 ma->setType( dae.getAtomicTypes().get("xsNCName"));
192 ma->setOffset( daeOffsetOf( domInstance_material::domBind_vertex_input , attrSemantic ));
193 ma->setContainer( meta );
194 ma->setIsRequired( true );
195
196 meta->appendAttribute(ma);
197 }
198
199 // Add attribute: input_semantic
200 {
201 daeMetaAttribute *ma = new daeMetaAttribute;
202 ma->setName( "input_semantic" );
203 ma->setType( dae.getAtomicTypes().get("xsNCName"));
204 ma->setOffset( daeOffsetOf( domInstance_material::domBind_vertex_input , attrInput_semantic ));
205 ma->setContainer( meta );
206 ma->setIsRequired( true );
207
208 meta->appendAttribute(ma);
209 }
210
211 // Add attribute: input_set
212 {
213 daeMetaAttribute *ma = new daeMetaAttribute;
214 ma->setName( "input_set" );
215 ma->setType( dae.getAtomicTypes().get("Uint"));
216 ma->setOffset( daeOffsetOf( domInstance_material::domBind_vertex_input , attrInput_set ));
217 ma->setContainer( meta );
218
219 meta->appendAttribute(ma);
220 }
221
222 meta->setElementSize(sizeof(domInstance_material::domBind_vertex_input));
223 meta->validate();
224
225 return meta;
226 }
227
228