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 20 domInstance_material::create(DAE& dae) 21 { 22 domInstance_materialRef ref = new domInstance_material(dae); 23 return ref; 24 } 25 26 27 daeMetaElement * 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 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 * 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 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 * 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