GL Studio C++ Runtime API
group.h
Go to the documentation of this file.
1/*! \file
2 \brief The disti::Group class. Implements groups of objects.
3
4 \par Copyright Information
5
6 Copyright (c) 2017 by The DiSTI Corporation.<br>
7 11301 Corporate Blvd; Suite 100<br>
8 Orlando, Florida 32817<br>
9 USA<br>
10 <br>
11 All rights reserved.<br>
12
13 This Software contains proprietary trade secrets of DiSTI and may not be
14reproduced, in whole or part, in any form, or by any means of electronic,
15mechanical, or otherwise, without the written permission of DiSTI. Said
16permission may be derived through the purchase of applicable DiSTI product
17licenses which detail the distribution rights of this content and any
18Derivative Works based on this or other copyrighted DiSTI Software.
19
20 NO WARRANTY. THE SOFTWARE IS PROVIDED "AS-IS," WITHOUT WARRANTY OF ANY KIND,
21AND ANY USE OF THIS SOFTWARE PRODUCT IS AT YOUR OWN RISK. TO THE MAXIMUM EXTENT
22PERMITTED BY APPLICABLE LAW, DISTI AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES
23AND CONDITIONS, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
24IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY AND/OR FITNESS FOR A
25PARTICULAR PURPOSE, TITLE, AND NON-INFRINGEMENT, WITH REGARD TO THE SOFTWARE.
26
27 LIMITATION OF LIABILITY. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW,
28IN NO EVENT SHALL DISTI OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
29INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION,
30DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS
31INFORMATION, OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR
32INABILITY TO USE THE SOFTWARE, EVEN IF DISTI HAS BEEN ADVISED OF THE POSSIBILITY
33OF SUCH DAMAGES. DISTI'S ENTIRE LIABILITY AND YOUR EXCLUSIVE REMEDY SHALL NOT
34EXCEED FIVE DOLLARS (US$5.00).
35
36 The aforementioned terms and restrictions are governed by the laws of the
37State of Florida and the United States of America.
38
39*/
40#ifndef INCLUDED_DISTI_GROUP_H
41#define INCLUDED_DISTI_GROUP_H
42
43#include "display.h"
44#include "dynamic_array.h"
46
47namespace disti
48{
49/**
50 * The Group class. Implements groups of objects
51 */
52class Group : public DisplayObject
53{
54public:
55 DISTI_DEPRECATED( "This identifier is forbidden by the C++ standard. Use BaseClass instead." )
56 typedef DisplayObject _BaseClass; ///< Deprecated typedef for the base class.
57 typedef DisplayObject BaseClass; ///< Typedef for the base class.
58
59private:
60 /** If true, this object will be eligible for culling based on its static extents.
61 * IMPORTANT: The cull will only be acturate within the STATIC extents of the group
62 * If any child moves outside the static extents using Dynamic operations, it will
63 * be over-culled.
64 * The default is false, and only leaf nodes (non-groups) will cull.
65 */
66 bool _performGroupCullCheck;
67
68 /** If true, cull checking will pass on to children of this group.
69 * If false, children will not be culled (if this group is not culled) */
70 bool _cullTestChildren;
71
72 DisplayObject* BestPick( const Vector& winLoc, const Vector& logicalCoords, float scale, const Vector& directionVector, Vector& collisionWinLoc /*Returned*/, const OpenGLMatrices& drawnMatrices );
73 DisplayObject* FirstPick( const Vector& winLoc, const Vector& logicalCoords, float scale, const Vector& directionVector, Vector& collisionWinLoc /*Returned*/, const OpenGLMatrices& drawnMatrices );
74
75 virtual GLS_EXPORT void onVertexchanged();
76
77 // GLS-8709 - There should be an attribute type that doesn't require a dummy setter and also does not write the GLS file.
78 void DummySetUnsignedInt( const unsigned int& ) {} // Used for making a read only property
79 Group& operator=( const Group& ) DISTI_SPECIAL_MEM_FUN_DELETE;
81
82protected:
83 DisplayObjectArray _objects; ///< The objects contained in this group.
84
85 /// Helper method for child classes of group that don't want to call Group::SetAvailableAttributes.
86 /// \param availableAttributes Bit field for attribute types to create.
87 virtual GLS_EXPORT void AddAvailableAttributes( unsigned int availableAttributes );
88
89 /** Grow bounding box to accomodate new object
90 * \param obj The new object in the group
91 * \pre obj Must already be added to the group
92 */
94
95public:
96 friend class GroupEditor;
97
98#ifndef GLES
101#endif
102
103 /** Finds a pointer to the display object in the group, using the object's
104 * instance name as a key.
105 * \note If there are multiple DisplayObjects within the group with the same name,
106 * only the first instance will be found. This can be an issue if a sub-component
107 * contains objects with the same name as the object you are searching for.
108 * \param name Instance name of the object to find
109 * \return A pointer to the object if it is in the group, otherwise NULL
110 */
111 GLS_EXPORT DisplayObject* FindByName( const char* name );
112
113 /** Finds a pointer to the display object in the group, using the object's
114 * instance name as a key.
115 * This does not desend into components, as they are different frames
116 * with possibility for duplicate names as the current frame.
117 * \param name Instance name of the object to find
118 * \return A pointer to the object if it is in the group, otherwise NULL
119 */
120 virtual GLS_EXPORT DisplayObject* FindByNameSameFrame( const char* name );
121
122 /** Finds a pointer to the display object in the group, using the object's
123 * instance name as a key.
124 * \param obj Pointer to the object to find
125 * \return A pointer to the object if it is in the group, otherwise NULL
126 */
128
129 /** Finds a pointer to the DisplayObject in the group using a qualified instance name.
130 * This allows precise searches for an object contained within a sub-component.
131 * (e.g. "cockpit.altimeter.needle"). To find an object in the same DisplayFrame
132 * use just the instance name. (e.g. "cockpit")
133 * The dot denotes crossing of DisplayFrame boundaries.
134 * \sa GetQualifiedInstanceName
135 * \param name Qualified instance name of the object to find
136 * \returns A pointer to the object if it is in the group, otherwise NULL
137 */
139
140 /** Finds a pointer to the display object in the group, using the object's address as a key
141 * \param obj Pointer to the object to find
142 * \return A pointer to the object if it is in the group, otherwise NULL
143 */
145
146 /// \return A reference to the object array for this group.
148
149 /// \return A const reference to the object array for this const group.
150 const DisplayObjectArray& Objects() const { return _objects; }
151
152 /** Returns the DisplayObject at the given group index
153 * \param index The index of the object to find
154 * \return A pointer to the object if it is in the group, otherwise NULL
155 */
156 GLS_EXPORT DisplayObject* Item( unsigned int index );
157
158 /// \return Whether or not this group should be considered for culling.
159 bool PerformGroupCullCheck() const { return _performGroupCullCheck; }
160
161 /// Sets whether or not this group should be considered for culling.
162 /// \param mode The new cull mode for the group.
164
165 /// \return Whether or not this group's children should be considered for culling.
166 bool CullTestChildren() const { return _cullTestChildren; }
167
168 /// Sets whether or not this group's children should be considered for culling.
169 /// \param mode The new cull mode to set.
170 GLS_EXPORT void CullTestChildren( bool mode );
171
172 /** \return The number of objects in this group. (Non recursive count) */
173 unsigned int Count() const { return _objects.Count(); }
174
175 /// Overload of the array index operator to allow you to treat this Group as an array of objects.
176 /// \param index The object index to be returned.
177 /// \return A pointer to the requested object.
178 DisplayObjectPtr operator[]( unsigned int index ) { return _objects[ index ]; }
179
180 /// Overload of the array index operator to allow you to treat this const Group as an array of const objects.
181 /// \param index The object index to be returned.
182 /// \return A pointer to the requested object.
183 const DisplayObject* operator[]( unsigned int index ) const { return _objects[ index ]; }
184
185 /** \return pointer to the first element in the group, or NULL if it doesn't exist */
187
188 /** \return pointer to the last element in the group, or NULL if it doesn't exist */
190
191 /** \return True if this group is empty */
192 bool IsEmpty() const { return ( Count() == 0 ); }
193
194 /** Get the index position of the specified object in the list
195 * \param obj The object to find
196 * \return The index of the object in the list, -1 if it isn't in the list
197 */
198 GLS_EXPORT int Position( const DisplayObject* obj ) const;
199
200 /** Construct a new group.
201 * \param generateInstance Whether or not to generate an instance name for this group
202 */
203 GLS_EXPORT explicit Group( int generateInstance = FALSE );
204
205 /** Copy construct a new group, performing a "deep copy" by cloning objects in the group.
206 * \param group The group to clone.
207 * \param generateNames Whether or not to generate a new instance name for this group and its children.
208 */
209 GLS_EXPORT Group( const Group& group, bool generateNames );
210
211 /** Sets the initial number of entries in a group
212 * \param cnt The initial number of entries
213 */
214 GLS_EXPORT void InitialGroupCount( unsigned int cnt );
215
216 /// \return A pointer to a new Group object.
218
219 /** Destroy a group object */
221
222 /** Actually delete all the children of the group.
223 * This does a recursive "delete" on all the children.
224 * This does NOT just remove them from the group.
225 */
227
228 virtual GLS_EXPORT void SetAvailableAttributes( unsigned int value ) DISTI_METHOD_OVERRIDE;
229
230 virtual GLS_EXPORT DisplayObject* CloneObject( bool generateNames = false ) DISTI_METHOD_OVERRIDE;
234 virtual GLS_EXPORT void PreDraw( const OpenGLMatrices& current, Culler& culler ) DISTI_METHOD_OVERRIDE;
235 virtual GLS_EXPORT bool Hit( float x, float y, float z, float scale, const Vector& directionVector, Vector* collisionPoint ) DISTI_METHOD_OVERRIDE;
236
237 virtual GLS_EXPORT DisplayObject* Pick3D( const Vector& winLoc,
238 const Vector& logicalCoords,
239 float scale,
240 const Vector& directionVector,
241 Vector& collisionWinLoc /*Returned*/,
242 const OpenGLMatrices& drawnMatrices ) DISTI_METHOD_OVERRIDE;
243
244 using BaseClass::Parent;
246
248
249 /// Recalculates the 3D bounding volume of the object, setting the Group's vertices.
250 /// Affects the results of GetExtents().
251 /// This should be called when a Group's children are modified.
253
254 /* Unhides base class implementation. */
255 using BaseClass::Location;
257 virtual GLS_EXPORT void Location( float x, float y, float z ) DISTI_METHOD_OVERRIDE;
258 virtual GLS_EXPORT void Translate( float x, float y, float z ) DISTI_METHOD_OVERRIDE;
259 virtual GLS_EXPORT void Translate( float transAmount[] ) DISTI_METHOD_OVERRIDE;
260 virtual GLS_EXPORT void TranslateVertices( float x, float y, float z ) DISTI_METHOD_OVERRIDE;
261
262 /// Translates the group by the specified amount my changing the
263 /// vertices instead of changing the _location value, moving all subobjects.
264 /// \param transAmount A pointer to an array of floats representing X, Y, and Z to translate.
265 virtual GLS_EXPORT void TranslateVertices( float transAmount[] );
266
267 virtual GLS_EXPORT void GetExtents( float& x, float& y, float& z, float& x1, float& y1, float& z1 ) DISTI_METHOD_OVERRIDE;
268 virtual GLS_EXPORT void GetTransformedExtents( Vector& min, Vector& max, const GlsMatrixType& matrix, bool resetMinMax = true ) DISTI_METHOD_OVERRIDE;
270 /* Unhides base class implementation. */
271 using BaseClass::Rotate;
272 virtual GLS_EXPORT void Rotate( const Vector& orig, float angle, const Vector& axis ) DISTI_METHOD_OVERRIDE;
273
274 /// Scale in X-Y plane using the center of the group as the anchor.
275 /// \param scale_x The X factor to scale by.
276 /// \param scale_y The Y factor to scale by.
277 virtual GLS_EXPORT void Scale( float scale_x, float scale_y );
278 GLS_EXPORT void Scale( float scale_x, float scale_y, float scale_z, Vertex* anchor = NULL, int handle = 0 ) DISTI_METHOD_OVERRIDE;
279
280 /** Adds the specified object into the group, at the end of the list
281 * \param obj A pointer to the object to add
282 * \param reparent Whether or not the object parent should be set to this group
283 * \param recalculateBoundingbox Whether or not to recalculate the bounding box
284 * \param loc Where to insert it (defaults to -1 which means at the end of the list)
285 */
286 virtual GLS_EXPORT void InsertObject( DisplayObject* obj, bool reparent = true, bool recalculateBoundingbox = true, int loc = -1 );
287
288 /** Removes the specified object from this group. Does not delete it.
289 * \param obj The display object to removed
290 * \param recalculateBoundingbox
291 * \return True if the object was found and removed from this group
292 */
293 virtual GLS_EXPORT bool DeleteObject( DisplayObject* obj, bool recalculateBoundingbox = true );
294
295 /** Change the draw order of a child object within this group
296 * \param oldIndex The old index of the object
297 * \param newIndex The new index of the object
298 * \pre oldIndex and newIndex must be valid indices
299 */
300 virtual GLS_EXPORT void ReorderObject( unsigned int oldIndex, unsigned int newIndex );
301
302 /** Adds the specified object into the group, at the head of the list
303 * Treats the list like a stack, hence the name Push
304 * \param obj A pointer to the object to add
305 */
306 virtual GLS_EXPORT void PushObject( DisplayObject* obj );
307
308 /** It is not possible to modify a Group's Vertices. Overriden to disable. */
310
311 /** It is not possible to modify a Group's Vertices. Overriden to disable. */
313
314 /** Copies the given vertex data into the group's location vertex
315 * thereby moving the group's location member without affecting
316 * its child objects.
317 * \param v - Given vertex
318 */
319 virtual GLS_EXPORT void SetGroupLocation( const Vertex& v );
320
321 virtual GLS_EXPORT void GetResources( std::ostream& outstr, GlsResourceFilter* filter = NULL ) DISTI_METHOD_OVERRIDE;
322
324
325 virtual GLS_EXPORT void LineWidth( float width ) DISTI_METHOD_OVERRIDE;
327
330
333
336
337 virtual GLS_EXPORT void PolygonEnd( const int mode ) DISTI_METHOD_OVERRIDE;
339
340 virtual GLS_EXPORT void Shading( const int mode ) DISTI_METHOD_OVERRIDE;
342
343 virtual GLS_EXPORT void DepthTest( unsigned char mode ) DISTI_METHOD_OVERRIDE;
345
346 virtual GLS_EXPORT void AntiAlias( bool mode ) DISTI_METHOD_OVERRIDE;
348
351
352 virtual GLS_EXPORT void CullBackFace( const bool mode ) DISTI_METHOD_OVERRIDE;
354
356 virtual GLS_EXPORT void LightingEnabled( bool lighting ) DISTI_METHOD_OVERRIDE;
357
358 /* Unhides base class implementation. */
360
362
363 /* Unhides base class implementation. */
365
367
368 /* Unhides base class implementation. */
369 using BaseClass::SetColor;
370
371 virtual GLS_EXPORT void SetColor( const GlsColor& color ) DISTI_METHOD_OVERRIDE;
372
373 /* Unhides base class implementation. */
374 using BaseClass::GetColor;
375
377
378 /* Unhides base class implementation. */
379 using BaseClass::SetFillColor;
380
382
383 /* Unhides base class implementation. */
384 using BaseClass::GetFillColor;
385
387
388 virtual GLS_EXPORT void TextureRepeat( const int rep ) DISTI_METHOD_OVERRIDE;
390
393
396
399
400 /** Call the Calculate method for all children
401 * \param time The current time
402 */
403 virtual GLS_EXPORT void Calculate( double time ) DISTI_METHOD_OVERRIDE;
404
405 /** The following class is provided for GL Studio 2.1 backward compatibility.
406 * This interface is deprecated and should only be used to support legacy code.
407 */
409 {
410 protected:
411 unsigned int _index; ///< The underlying index of this child object.
412 Group* _parentGroup; ///< This group's parent group.
413
414 public:
416
417 /// \return A pointer to the next item in the list.
419
420 /// \return A pointer to the previous item in the list.
422
423 /// \return The underlying object for this list item.
425
426 /// Configure the list for the specified Group.
427 /// \param whichGroup The Group whose compatibility list is to be configured.
428 static GLS_EXPORT void RecalcCompatabilityList( Group* whichGroup );
429 };
430
431 /** \return The first object in this group
432 */
434
435 /** \return The last object in this group
436 */
438
439 DynamicArray<CompatabilityListItem> _compatList; ///< Used for GL Studio 2.1 compatibility only.
440
441private:
442 /** Sets the texturing repeat mode for this object without affecting
443 * the settings of its children.
444 * \param rep The new texture repeat mode for this object (boolean)
445 */
446 virtual GLS_EXPORT void SetGroupTextureRepeat( const int mode );
447};
448
449/// Overload begin() so that range-for loops and other constructs work with Group.
450/// \param group The group whose first element is to be returned.
451/// \return A pointer to the first element.
452inline DisplayObjectPtr* begin( Group& group )
453{
454 return begin( group.Objects() );
455}
456
457/// Overload begin() so that range-for loops and other constructs work with Group.
458/// \param group The group whose first element is to be returned.
459/// \return A pointer to the first element.
460inline const DisplayObjectPtr* begin( const Group& group )
461{
462 return begin( group.Objects() );
463}
464
465/// Overload end() so that range-for loops and other constructs work with Group.
466/// \param group The group whose last element is to be returned.
467/// \return A pointer to the last element.
468inline DisplayObjectPtr* end( Group& group )
469{
470 return end( group.Objects() );
471}
472
473/// Overload end() so that range-for loops and other constructs work with Group.
474/// \param group The group whose last element is to be returned.
475/// \return A pointer to the last element.
476inline const DisplayObjectPtr* end( const Group& group )
477{
478 return end( group.Objects() );
479}
480
481} // namespace disti
482
483#endif
Definition: cull.h:50
Definition: display_frame.h:87
Definition: display.h:96
virtual DisplayObject * handle(DisplayEvent *ev)
unsigned Count() const
Definition: dynamic_array.h:218
Definition: gls_color.h:54
Definition: gls_painter.h:51
Definition: gls_resources.h:51
static void RecalcCompatabilityList(Group *whichGroup)
Group * _parentGroup
This group's parent group.
Definition: group.h:412
unsigned int _index
The underlying index of this child object.
Definition: group.h:411
CompatabilityListItem * Next()
CompatabilityListItem * Prev()
Definition: group.h:53
virtual int PolygonMode() override
void PerformGroupCullCheck(bool mode)
virtual int TextureMagnificationFilter() override
DisplayObjectPtr operator[](unsigned int index)
Definition: group.h:178
virtual void ReorderObject(unsigned int oldIndex, unsigned int newIndex)
virtual GlsColor GetBlendColor() override
void SetPainter(GlsPainter *painter) override
virtual void DeleteAllChildren()
virtual void Calculate(double time) override
virtual DisplayObject * CloneObject(bool generateNames=false) override
CompatabilityListItem * Last()
virtual void SetGroupLocation(const Vertex &v)
virtual void Scale(float scale_x, float scale_y)
bool PerformGroupCullCheck() const
Definition: group.h:159
virtual void TranslateVertices(float x, float y, float z) override
virtual float LineWidth() override
const DisplayObject * operator[](unsigned int index) const
Definition: group.h:183
virtual int TextureMappingTechnique() override
virtual void Rotate(const Vector &orig, float angle, const Vector &axis) override
virtual void GetResources(std::ostream &outstr, GlsResourceFilter *filter=NULL) override
virtual void SetAvailableAttributes(unsigned int value) override
virtual GlsColor GetColor() override
DisplayObject * LastObject()
DisplayObject * FirstObject()
virtual void GetCppInterfaceDescriptionFree(InterfaceListType *array) override
virtual int LineStippleMultiplier() override
DisplayObjectArray _objects
The objects contained in this group.
Definition: group.h:83
virtual int LineStipplePattern() override
const DisplayObjectArray & Objects() const
Definition: group.h:150
virtual int TextureMinificationFilter() override
void CullTestChildren(bool mode)
int Position(const DisplayObject *obj) const
DisplayObjectArray & Objects()
Definition: group.h:147
unsigned int Count() const
Definition: group.h:173
virtual bool DeleteObject(DisplayObject *obj, bool recalculateBoundingbox=true)
virtual GlsColor GetFillColor() override
DynamicArray< CompatabilityListItem > _compatList
Used for GL Studio 2.1 compatibility only.
Definition: group.h:439
virtual void CalculateBoundingBox()
DisplayObject * FindByName(const char *name)
Group(int generateInstance=0)
virtual void CalculateTextureCoordinates() override
virtual void SetColor(const GlsColor &color) override
virtual void SetFillColor(const GlsColor &color) override
virtual void GetExtents(float &x, float &y, float &z, float &x1, float &y1, float &z1) override
DisplayObject * FindNonRecursive(DisplayObject *obj)
static DisplayObject * CreateInstance()
bool IsEmpty() const
Definition: group.h:192
virtual bool CullBackFace() override
virtual InterfaceListType * GetCppInterfaceDescription(InterfaceListType *addToThisList=NULL) override
virtual bool LightingEnabled() override
virtual bool Hit(float x, float y, float z, float scale, const Vector &directionVector, Vector *collisionPoint) override
virtual void CopyProperties(DisplayObject *src) override
virtual int AlphaMode() override
virtual DisplayObject * Pick3D(const Vector &winLoc, const Vector &logicalCoords, float scale, const Vector &directionVector, Vector &collisionWinLoc, const OpenGLMatrices &drawnMatrices) override
virtual bool AntiAlias() override
void InsertVertexAt(unsigned) override
Definition: group.h:312
virtual void Draw() override
virtual void InsertObject(DisplayObject *obj, bool reparent=true, bool recalculateBoundingbox=true, int loc=-1)
Group(const Group &group, bool generateNames)
virtual void Translate(float x, float y, float z) override
virtual int Shading() override
virtual void PreDraw(const OpenGLMatrices &current, Culler &culler) override
virtual const Vertex & Location() const
DisplayFrame * Parent() const
Definition: display.h:945
void InitialGroupCount(unsigned int cnt)
virtual void AddAvailableAttributes(unsigned int availableAttributes)
virtual bool TextureRepeat()
virtual void GrowBoundingBox(DisplayObject *obj)
void DeleteVertexAt(unsigned) override
Definition: group.h:309
virtual int PolygonEnd() override
virtual void GetTransformedExtents(Vector &min, Vector &max, const GlsMatrixType &matrix, bool resetMinMax=true) override
CompatabilityListItem * First()
virtual void CopyGeometry(DisplayObject *src) override
DisplayObject * Item(unsigned int index)
DisplayObject * FindByName(DisplayObject *obj)
Definition: group.h:127
virtual void SetBlendColor(const GlsColor &color) override
virtual void PushObject(DisplayObject *obj)
virtual ~Group()
virtual DisplayObject * FindByNameSameFrame(const char *name)
DisplayObject * FindByQualifiedName(const char *name)
bool CullTestChildren() const
Definition: group.h:166
virtual int DepthTest() override
Class to contain current OpenGL view, projection and draw matrices.
Definition: util.h:544
Definition: vertex.h:85
Definition: vertex.h:420
The disti::DisplayObject class and global enumerations.
The disti::DynamicArray class. A templated array of objects capable of dynamically growing.
Macros and helper code to determine what subset of C++11/14/17 is available.
#define DISTI_SPECIAL_MEM_FUN_DELETE
Macro to wrap function deletion, removed on compilers that don't support it.
Definition: gls_cpp_lang_support.h:235
#define DISTI_DEPRECATED(msg)
Defines whether this compiler supports the C++14 deprecated attribute.
Definition: gls_cpp_lang_support.h:457
#define DISTI_METHOD_OVERRIDE
Macro to wrap the override keyword, removed on compilers that don't support it.
Definition: gls_cpp_lang_support.h:214
#define GLS_EXPORT
Macro denoting which functions should be visible from the runtime library.
Definition: gls_include.h:52
Force inclusion of the DirectShow library.
Definition: bmpimage.h:47
DistiAttribDict::const_iterator begin(const DistiAttribDict &dict)
Definition: disti_metadata.h:954
DistiAttribDict::const_iterator end(const DistiAttribDict &dict)
Definition: disti_metadata.h:959
#define FALSE
False macro, for backward compatibility purposes.
Definition: util.h:107