]> git.mxchange.org Git - simgear.git/blobdiff - simgear/hla/HLAVariantRecordDataElement.cxx
Ganael Laplanche: fix include dependencies for FreeBSD support
[simgear.git] / simgear / hla / HLAVariantRecordDataElement.cxx
index db8f1be0aba231d12cc4205350e1f7cdd5438118..6acb9fd521f969235de98c13224fc8025e331c79 100644 (file)
 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 //
 
+#ifdef HAVE_CONFIG_H
+#  include <simgear_config.h>
+#endif
+
+#include <simgear/compiler.h>
+
 #include "HLAVariantRecordDataElement.hxx"
 
 #include <simgear/debug/logstream.hxx>
@@ -113,6 +119,7 @@ HLAVariantRecordDataElement::HLAVariantRecordDataElement(const HLAVariantRecordD
 
 HLAVariantRecordDataElement::~HLAVariantRecordDataElement()
 {
+    clearStamp();
 }
 
 bool
@@ -125,6 +132,7 @@ HLAVariantRecordDataElement::setAlternativeIndex(unsigned index)
         return false;
     _dataElement.swap(dataElement);
     _alternativeIndex = index;
+    setDirty(true);
     return true;
 }
 
@@ -158,12 +166,25 @@ HLAVariantRecordDataElement::getDataElementFactory()
     return _dataElementFactory;
 }
 
+void
+HLAVariantRecordDataElement::_setStamp(Stamp* stamp)
+{
+    HLAAbstractVariantRecordDataElement::_setStamp(stamp);
+    if (!_dataElement.valid())
+        return;
+    _dataElement->attachStamp(*this);
+}
+
 HLADataElement*
 HLAVariantRecordDataElement::newElement(unsigned index)
 {
     if (!_dataElementFactory.valid())
         return 0;
-    return _dataElementFactory->createElement(*this, index);
+    HLADataElement* dataElement = _dataElementFactory->createElement(*this, index);
+    if (!dataElement)
+        return 0;
+    dataElement->attachStamp(*this);
+    return dataElement;
 }
 
 }