• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 __domAccessor_h__
10 #define __domAccessor_h__
11 
12 #include <dae/daeDocument.h>
13 #include <dom/domTypes.h>
14 #include <dom/domElements.h>
15 
16 #include <dom/domParam.h>
17 class DAE;
18 
19 /**
20  * The accessor element declares an access pattern to one of the array elements:
21  * float_array,  int_array, Name_array, bool_array, and IDREF_array. The accessor
22  * element describes access  to arrays that are organized in either an interleaved
23  * or non-interleaved manner, depending  on the offset and stride attributes.
24  */
25 class domAccessor : public daeElement
26 {
27 public:
getElementType()28 	virtual COLLADA_TYPE::TypeEnum getElementType() const { return COLLADA_TYPE::ACCESSOR; }
ID()29 	static daeInt ID() { return 609; }
typeID()30 	virtual daeInt typeID() const { return ID(); }
31 protected:  // Attributes
32 /**
33  *  The count attribute indicates the number of times the array is accessed.
34  * Required attribute.
35  */
36 	domUint attrCount;
37 /**
38  *  The offset attribute indicates the index of the first value to be read
39  * from the array.  The default value is 0. Optional attribute.
40  */
41 	domUint attrOffset;
42 /**
43  *  The source attribute indicates the location of the array to access using
44  * a URL expression. Required attribute.
45  */
46 	xsAnyURI attrSource;
47 /**
48  *  The stride attribute indicates number of values to be considered a unit
49  * during each access to  the array. The default value is 1, indicating that
50  * a single value is accessed. Optional attribute.
51  */
52 	domUint attrStride;
53 
54 protected:  // Element
55 /**
56  *  The accessor element may have any number of param elements.  @see domParam
57  */
58 	domParam_Array elemParam_array;
59 
60 public:	//Accessors and Mutators
61 	/**
62 	 * Gets the count attribute.
63 	 * @return Returns a domUint of the count attribute.
64 	 */
getCount()65 	domUint getCount() const { return attrCount; }
66 	/**
67 	 * Sets the count attribute.
68 	 * @param atCount The new value for the count attribute.
69 	 */
setCount(domUint atCount)70 	void setCount( domUint atCount ) { attrCount = atCount; _validAttributeArray[0] = true; }
71 
72 	/**
73 	 * Gets the offset attribute.
74 	 * @return Returns a domUint of the offset attribute.
75 	 */
getOffset()76 	domUint getOffset() const { return attrOffset; }
77 	/**
78 	 * Sets the offset attribute.
79 	 * @param atOffset The new value for the offset attribute.
80 	 */
setOffset(domUint atOffset)81 	void setOffset( domUint atOffset ) { attrOffset = atOffset; _validAttributeArray[1] = true; }
82 
83 	/**
84 	 * Gets the source attribute.
85 	 * @return Returns a xsAnyURI reference of the source attribute.
86 	 */
getSource()87 	xsAnyURI &getSource() { return attrSource; }
88 	/**
89 	 * Gets the source attribute.
90 	 * @return Returns a constant xsAnyURI reference of the source attribute.
91 	 */
getSource()92 	const xsAnyURI &getSource() const { return attrSource; }
93 	/**
94 	 * Sets the source attribute.
95 	 * @param atSource The new value for the source attribute.
96 	 */
setSource(const xsAnyURI & atSource)97 	void setSource( const xsAnyURI &atSource ) { attrSource = atSource; _validAttributeArray[2] = true; }
98 	/**
99 	 * Sets the source attribute.
100 	 * @param atSource The new value for the source attribute.
101 	 */
setSource(xsString atSource)102 	void setSource( xsString atSource ) { attrSource = atSource; _validAttributeArray[2] = true; }
103 
104 	/**
105 	 * Gets the stride attribute.
106 	 * @return Returns a domUint of the stride attribute.
107 	 */
getStride()108 	domUint getStride() const { return attrStride; }
109 	/**
110 	 * Sets the stride attribute.
111 	 * @param atStride The new value for the stride attribute.
112 	 */
setStride(domUint atStride)113 	void setStride( domUint atStride ) { attrStride = atStride; _validAttributeArray[3] = true; }
114 
115 	/**
116 	 * Gets the param element array.
117 	 * @return Returns a reference to the array of param elements.
118 	 */
getParam_array()119 	domParam_Array &getParam_array() { return elemParam_array; }
120 	/**
121 	 * Gets the param element array.
122 	 * @return Returns a constant reference to the array of param elements.
123 	 */
getParam_array()124 	const domParam_Array &getParam_array() const { return elemParam_array; }
125 protected:
126 	/**
127 	 * Constructor
128 	 */
domAccessor(DAE & dae)129 	domAccessor(DAE& dae) : daeElement(dae), attrCount(), attrOffset(), attrSource(dae, *this), attrStride(), elemParam_array() {}
130 	/**
131 	 * Destructor
132 	 */
~domAccessor()133 	virtual ~domAccessor() {}
134 	/**
135 	 * Overloaded assignment operator
136 	 */
137 	virtual domAccessor &operator=( const domAccessor &cpy ) { (void)cpy; return *this; }
138 
139 public: // STATIC METHODS
140 	/**
141 	 * Creates an instance of this class and returns a daeElementRef referencing it.
142 	 * @return a daeElementRef referencing an instance of this object.
143 	 */
144 	static DLLSPEC daeElementRef create(DAE& dae);
145 	/**
146 	 * Creates a daeMetaElement object that describes this element in the meta object reflection framework.
147 	 * If a daeMetaElement already exists it will return that instead of creating a new one.
148 	 * @return A daeMetaElement describing this COLLADA element.
149 	 */
150 	static DLLSPEC daeMetaElement* registerElement(DAE& dae);
151 };
152 
153 
154 #endif
155