-// Copyright (C) 2009 - 2010 Mathias Froehlich - Mathias.Froehlich@web.de
+// Copyright (C) 2009 - 2012 Mathias Froehlich - Mathias.Froehlich@web.de
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
#include <simgear/math/SGMath.hxx>
#include "HLAArrayDataType.hxx"
#include "HLADataElement.hxx"
-#include "HLAVariantDataElement.hxx"
+#include "HLAVariantRecordDataElement.hxx"
#include "HLADataTypeVisitor.hxx"
namespace simgear {
HLAAbstractArrayDataElement(const HLAArrayDataType* dataType);
virtual ~HLAAbstractArrayDataElement();
+ virtual void accept(HLADataElementVisitor& visitor);
+ virtual void accept(HLAConstDataElementVisitor& visitor) const;
+
virtual bool decode(HLADecodeStream& stream);
virtual bool encode(HLAEncodeStream& stream) const;
HLAArrayDataElement(const HLAArrayDataType* dataType = 0);
virtual ~HLAArrayDataElement();
+ virtual bool setDataElement(HLADataElementIndex::const_iterator begin, HLADataElementIndex::const_iterator end, HLADataElement* dataElement);
+ virtual HLADataElement* getDataElement(HLADataElementIndex::const_iterator begin, HLADataElementIndex::const_iterator end);
+ virtual const HLADataElement* getDataElement(HLADataElementIndex::const_iterator begin, HLADataElementIndex::const_iterator end) const;
+
+ virtual bool setDataType(const HLADataType* dataType);
+
virtual bool setNumElements(unsigned size);
virtual bool decodeElement(HLADecodeStream& stream, unsigned i);
virtual unsigned getNumElements() const;
void setDataElementFactory(DataElementFactory* dataElementFactory);
DataElementFactory* getDataElementFactory();
+protected:
+ virtual void _setStamp(Stamp* stamp);
+
private:
HLADataElement* newElement(unsigned index);
virtual unsigned getNumElements() const;
virtual bool encodeElement(HLAEncodeStream& stream, unsigned i) const;
- const HLAVariantDataElement* getElement(unsigned index) const;
- HLAVariantDataElement* getElement(unsigned index);
- HLAVariantDataElement* getOrCreateElement(unsigned index);
- void setElement(unsigned index, HLAVariantDataElement* value);
+ const HLAVariantRecordDataElement* getElement(unsigned index) const;
+ HLAVariantRecordDataElement* getElement(unsigned index);
+ HLAVariantRecordDataElement* getOrCreateElement(unsigned index);
+ void setElement(unsigned index, HLAVariantRecordDataElement* value);
- typedef HLAVariantDataElement::DataElementFactory AlternativeDataElementFactory;
+ typedef HLAVariantRecordDataElement::DataElementFactory AlternativeDataElementFactory;
void setAlternativeDataElementFactory(AlternativeDataElementFactory* alternativeDataElementFactory);
AlternativeDataElementFactory* getAlternativeDataElementFactory();
+protected:
+ virtual void _setStamp(Stamp* stamp);
+
private:
- HLAVariantDataElement* newElement();
+ HLAVariantRecordDataElement* newElement();
- typedef std::vector<SGSharedPtr<HLAVariantDataElement> > ElementVector;
+ typedef std::vector<SGSharedPtr<HLAVariantRecordDataElement> > ElementVector;
ElementVector _elementVector;
SGSharedPtr<AlternativeDataElementFactory> _alternativeDataElementFactory;
const std::string& getValue() const
{ return _value; }
void setValue(const std::string& value)
- { _value = value; }
+ { _value = value; setDirty(true); }
virtual bool setNumElements(unsigned count)
{
const SGVec2<T>& getValue() const
{ return _value; }
void setValue(const SGVec2<T>& value)
- { _value = value; }
+ { _value = value; setDirty(true); }
virtual bool setNumElements(unsigned count)
{
- for (unsigned i = 2; i < count; ++i)
+ for (unsigned i = count; i < 2; ++i)
_value[i] = 0;
return true;
}
const SGVec3<T>& getValue() const
{ return _value; }
void setValue(const SGVec3<T>& value)
- { _value = value; }
+ { _value = value; setDirty(true); }
virtual bool setNumElements(unsigned count)
{
- for (unsigned i = 3; i < count; ++i)
+ for (unsigned i = count; i < 3; ++i)
_value[i] = 0;
return true;
}
const SGVec4<T>& getValue() const
{ return _value; }
void setValue(const SGVec4<T>& value)
- { _value = value; }
+ { _value = value; setDirty(true); }
virtual bool setNumElements(unsigned count)
{
- for (unsigned i = 4; i < count; ++i)
+ for (unsigned i = count; i < 4; ++i)
_value[i] = 0;
return true;
}
const SGQuat<T>& getValue() const
{ return _value; }
void setValue(const SGQuat<T>& value)
- { _value = value; }
+ { _value = value; setDirty(true); }
virtual bool setNumElements(unsigned count)
{
- for (unsigned i = 4; i < count; ++i)
+ for (unsigned i = count; i < 4; ++i)
_value[i] = 0;
return true;
}