]> git.mxchange.org Git - simgear.git/commitdiff
Add a HLADataElementVisitor implementation.
authorMathias Froehlich <Mathias.Froehlich@web.de>
Sun, 30 Oct 2011 09:23:59 +0000 (10:23 +0100)
committerMathias Froehlich <Mathias.Froehlich@web.de>
Sun, 30 Oct 2011 09:23:59 +0000 (10:23 +0100)
17 files changed:
simgear/hla/CMakeLists.txt
simgear/hla/HLAArrayDataElement.cxx
simgear/hla/HLAArrayDataElement.hxx
simgear/hla/HLABasicDataElement.cxx
simgear/hla/HLABasicDataElement.hxx
simgear/hla/HLADataElement.cxx
simgear/hla/HLADataElement.hxx
simgear/hla/HLADataElementVisitor.hxx [new file with mode: 0644]
simgear/hla/HLAEnumeratedDataElement.cxx
simgear/hla/HLAEnumeratedDataElement.hxx
simgear/hla/HLAFixedRecordDataElement.cxx
simgear/hla/HLAFixedRecordDataElement.hxx
simgear/hla/HLAPropertyDataElement.cxx
simgear/hla/HLAPropertyDataElement.hxx
simgear/hla/HLAVariantDataElement.cxx
simgear/hla/HLAVariantDataElement.hxx
simgear/hla/Makefile.am

index a822fc2465810b68797cc26febc19102dcffb733..f9c35c5ec9d696c2543951c20c7adb80e3060d25 100644 (file)
@@ -7,6 +7,7 @@ set(HLA_HEADERS
     HLABasicDataElement.hxx
     HLABasicDataType.hxx
     HLADataElement.hxx
+    HLADataElementVisitor.hxx
     HLADataType.hxx
     HLADataTypeVisitor.hxx
     HLAEnumeratedDataElement.hxx
index e2a7fc7365bcda52ff2cbd750ca03192ff94ed78..01e40243f0b60e23cd45b6dedfbf843abbf0b7c1 100644 (file)
@@ -19,6 +19,8 @@
 
 #include <simgear/debug/logstream.hxx>
 
+#include "HLADataElementVisitor.hxx"
+
 namespace simgear {
 
 HLAAbstractArrayDataElement::HLAAbstractArrayDataElement(const HLAArrayDataType* dataType) :
@@ -30,6 +32,18 @@ HLAAbstractArrayDataElement::~HLAAbstractArrayDataElement()
 {
 }
 
+void
+HLAAbstractArrayDataElement::accept(HLADataElementVisitor& visitor)
+{
+    visitor.apply(*this);
+}
+
+void
+HLAAbstractArrayDataElement::accept(HLAConstDataElementVisitor& visitor) const
+{
+    visitor.apply(*this);
+}
+
 bool
 HLAAbstractArrayDataElement::decode(HLADecodeStream& stream)
 {
index b7c9c1e3dc46631eb0617225fa6486d112b540d5..c236c4e442cf3a340330a126768d92ac8855cc69 100644 (file)
@@ -33,6 +33,9 @@ public:
     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;
 
index 69401104cb6c88c0137ea556ffe752e3abc18390..f68cad36df13e7622cddeef3423496dd84b789d1 100644 (file)
@@ -17,6 +17,7 @@
 
 #include "HLABasicDataElement.hxx"
 
+#include "HLADataElementVisitor.hxx"
 #include "HLADataTypeVisitor.hxx"
 
 namespace simgear {
@@ -30,6 +31,18 @@ HLABasicDataElement::~HLABasicDataElement()
 {
 }
 
+void
+HLABasicDataElement::accept(HLADataElementVisitor& visitor)
+{
+    visitor.apply(*this);
+}
+
+void
+HLABasicDataElement::accept(HLAConstDataElementVisitor& visitor) const
+{
+    visitor.apply(*this);
+}
+
 const HLABasicDataType*
 HLABasicDataElement::getDataType() const
 {
index e38499dff46d84db728a70a019c91755dec5ad1f..70c275beed8e7c358fa3c08f9a4f8deab47f48f4 100644 (file)
@@ -28,6 +28,12 @@ public:
     HLABasicDataElement(const HLABasicDataType* dataType);
     virtual ~HLABasicDataElement();
 
+    virtual void accept(HLADataElementVisitor& visitor);
+    virtual void accept(HLAConstDataElementVisitor& visitor) const;
+
+    virtual bool encode(HLAEncodeStream& stream) const = 0;
+    virtual bool decode(HLADecodeStream& stream) = 0;
+
     virtual const HLABasicDataType* getDataType() const;
     virtual bool setDataType(const HLADataType* dataType);
     void setDataType(const HLABasicDataType* dataType);
@@ -41,6 +47,7 @@ class HLAAbstract##type##DataElement : public HLABasicDataElement {           \
 public:                                                                       \
     HLAAbstract##type##DataElement(const HLABasicDataType* dataType = 0);     \
     virtual ~HLAAbstract##type##DataElement();                                \
+                                                                              \
     virtual bool encode(HLAEncodeStream& stream) const;                       \
     virtual bool decode(HLADecodeStream& stream);                             \
                                                                               \
index ae981128543722ed91837ab955ef1ae2021750a4..8245bddd7b75f2cf4cebc2db25736c44a17f969f 100644 (file)
@@ -19,6 +19,8 @@
 
 #include <simgear/debug/logstream.hxx>
 
+#include "HLADataElementVisitor.hxx"
+
 namespace simgear {
 
 HLADataElement::PathElement::Data::~Data()
@@ -129,6 +131,18 @@ HLADataElement::~HLADataElement()
 {
 }
 
+void
+HLADataElement::accept(HLADataElementVisitor& visitor)
+{
+    visitor.apply(*this);
+}
+
+void
+HLADataElement::accept(HLAConstDataElementVisitor& visitor) const
+{
+    visitor.apply(*this);
+}
+
 std::string
 HLADataElement::toString(const Path& path)
 {
index 284422b8e6130b4bf55dd5a73788c508e1d94e5e..e3d529336b779c92ab4cb00d6956993ace1679c1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2009 - 2010  Mathias Froehlich - Mathias.Froehlich@web.de
+// Copyright (C) 2009 - 2011  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
@@ -30,10 +30,16 @@ class SGTimeStamp;
 
 namespace simgear {
 
+class HLADataElementVisitor;
+class HLAConstDataElementVisitor;
+
 class HLADataElement : public SGReferenced {
 public:
     virtual ~HLADataElement();
 
+    virtual void accept(HLADataElementVisitor& visitor) = 0;
+    virtual void accept(HLAConstDataElementVisitor& visitor) const = 0;
+
     virtual bool encode(HLAEncodeStream& stream) const = 0;
     virtual bool decode(HLADecodeStream& stream) = 0;
 
diff --git a/simgear/hla/HLADataElementVisitor.hxx b/simgear/hla/HLADataElementVisitor.hxx
new file mode 100644 (file)
index 0000000..938f730
--- /dev/null
@@ -0,0 +1,57 @@
+// Copyright (C) 2009 - 2011  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
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+//
+
+#ifndef HLADataElementVisitor_hxx
+#define HLADataElementVisitor_hxx
+
+namespace simgear {
+
+class HLABasicDataElement;
+class HLAAbstractEnumeratedDataElement;
+class HLAAbstractFixedRecordDataElement;
+class HLAAbstractArrayDataElement;
+class HLAAbstractVariantDataElement;
+
+class HLADataElementVisitor {
+public:
+    virtual ~HLADataElementVisitor() {}
+
+    virtual void apply(HLADataElement&);
+
+    virtual void apply(HLABasicDataElement&);
+    virtual void apply(HLAAbstractEnumeratedDataElement&);
+    virtual void apply(HLAAbstractArrayDataElement&);
+    virtual void apply(HLAAbstractFixedRecordDataElement&);
+    virtual void apply(HLAAbstractVariantDataElement&);
+};
+
+class HLAConstDataElementVisitor {
+public:
+    virtual ~HLAConstDataElementVisitor() {}
+
+    virtual void apply(const HLADataElement&);
+
+    virtual void apply(const HLABasicDataElement&);
+    virtual void apply(const HLAAbstractEnumeratedDataElement&);
+    virtual void apply(const HLAAbstractArrayDataElement&);
+    virtual void apply(const HLAAbstractFixedRecordDataElement&);
+    virtual void apply(const HLAAbstractVariantDataElement&);
+};
+
+}
+
+#endif
index a09e0dec393d16fb7bcb42a5d211627416ae0eaa..d5af6d4118cb2ca545caa3470bf7b5bd53469584 100644 (file)
@@ -19,6 +19,8 @@
 
 #include <simgear/debug/logstream.hxx>
 
+#include "HLADataElementVisitor.hxx"
+
 namespace simgear {
 
 HLAAbstractEnumeratedDataElement::HLAAbstractEnumeratedDataElement(const HLAEnumeratedDataType* dataType) :
@@ -30,6 +32,18 @@ HLAAbstractEnumeratedDataElement::~HLAAbstractEnumeratedDataElement()
 {
 }
 
+void
+HLAAbstractEnumeratedDataElement::accept(HLADataElementVisitor& visitor)
+{
+    visitor.apply(*this);
+}
+
+void
+HLAAbstractEnumeratedDataElement::accept(HLAConstDataElementVisitor& visitor) const
+{
+    visitor.apply(*this);
+}
+
 bool
 HLAAbstractEnumeratedDataElement::decode(HLADecodeStream& stream)
 {
index f7dfbd38fb3824aa211bb44f56d26ee07f96fee5..10d8f105d4d58ffad526846a333bb92a2617efd5 100644 (file)
@@ -28,6 +28,9 @@ public:
     HLAAbstractEnumeratedDataElement(const HLAEnumeratedDataType* dataType);
     virtual ~HLAAbstractEnumeratedDataElement();
 
+    virtual void accept(HLADataElementVisitor& visitor);
+    virtual void accept(HLAConstDataElementVisitor& visitor) const;
+
     virtual bool decode(HLADecodeStream& stream);
     virtual bool encode(HLAEncodeStream& stream) const;
 
index d0980b957d22eab206cdf61bfde561e5651ad6a1..c4c0c8b2d6cd4ae9baf0b8038edc9b60cbf713cb 100644 (file)
@@ -20,6 +20,8 @@
 #include <string>
 #include <vector>
 #include <simgear/debug/logstream.hxx>
+
+#include "HLADataElementVisitor.hxx"
 #include "HLADataTypeVisitor.hxx"
 
 namespace simgear {
@@ -33,6 +35,18 @@ HLAAbstractFixedRecordDataElement::~HLAAbstractFixedRecordDataElement()
 {
 }
 
+void
+HLAAbstractFixedRecordDataElement::accept(HLADataElementVisitor& visitor)
+{
+    visitor.apply(*this);
+}
+
+void
+HLAAbstractFixedRecordDataElement::accept(HLAConstDataElementVisitor& visitor) const
+{
+    visitor.apply(*this);
+}
+
 bool
 HLAAbstractFixedRecordDataElement::decode(HLADecodeStream& stream)
 {
index d99719d0536af94ba307aaa6ce34b979b0796018..ca8ed99782ca61a4c29cf7f9bdeb846a53887c0e 100644 (file)
@@ -30,6 +30,9 @@ public:
     HLAAbstractFixedRecordDataElement(const HLAFixedRecordDataType* dataType);
     virtual ~HLAAbstractFixedRecordDataElement();
 
+    virtual void accept(HLADataElementVisitor& visitor);
+    virtual void accept(HLAConstDataElementVisitor& visitor) const;
+
     virtual bool decode(HLADecodeStream& stream);
     virtual bool encode(HLAEncodeStream& stream) const;
 
index e8a931ee27c0ed8432553fef3c9432dfbbac60d6..af19ff4d0de4f09e3fd8036e89fa5a4afe95c559 100644 (file)
@@ -18,6 +18,8 @@
 #include "HLAPropertyDataElement.hxx"
 
 #include "HLAArrayDataElement.hxx"
+#include "HLABasicDataElement.hxx"
+#include "HLADataElementVisitor.hxx"
 #include "HLADataTypeVisitor.hxx"
 #include "HLAFixedRecordDataElement.hxx"
 #include "HLAVariantDataElement.hxx"
@@ -152,7 +154,7 @@ protected:
     const SGPropertyNode& _propertyNode;
 };
 
-class HLAPropertyDataElement::ScalarDataElement : public HLADataElement {
+class HLAPropertyDataElement::ScalarDataElement : public HLABasicDataElement {
 public:
     ScalarDataElement(const HLABasicDataType* dataType, SGPropertyNode* propertyNode);
     virtual ~ScalarDataElement();
@@ -160,16 +162,12 @@ public:
     virtual bool encode(HLAEncodeStream& stream) const;
     virtual bool decode(HLADecodeStream& stream);
 
-    virtual const HLADataType* getDataType() const;
-    virtual bool setDataType(const HLADataType* dataType);
-
 private:
-    SGSharedPtr<const HLABasicDataType> _dataType;
     SGSharedPtr<SGPropertyNode> _propertyNode;
 };
 
 HLAPropertyDataElement::ScalarDataElement::ScalarDataElement(const HLABasicDataType* dataType, SGPropertyNode* propertyNode) :
-    _dataType(dataType),
+    HLABasicDataElement(dataType),
     _propertyNode(propertyNode)
 {
 }
@@ -194,162 +192,64 @@ HLAPropertyDataElement::ScalarDataElement::decode(HLADecodeStream& stream)
     return true;
 }
 
-const HLADataType*
-HLAPropertyDataElement::ScalarDataElement::getDataType() const
-{
-    return _dataType.get();
-}
-
-bool
-HLAPropertyDataElement::ScalarDataElement::setDataType(const HLADataType* dataType)
-{
-    if (!dataType)
-        return false;
-    const HLABasicDataType* basicDataType = dataType->toBasicDataType();
-    if (!basicDataType)
-        return false;
-    _dataType = basicDataType;
-    return true;
-}
-
-
-class HLAPropertyDataElement::StringDecodeVisitor : public HLADataTypeDecodeVisitor {
-public:
-    StringDecodeVisitor(HLADecodeStream& stream, SGPropertyNode& propertyNode) :
-        HLADataTypeDecodeVisitor(stream),
-        _propertyNode(propertyNode)
-    { }
-
-    virtual void apply(const HLAFixedArrayDataType& dataType)
-    {
-        unsigned numElements = dataType.getNumElements();
-        std::string value;
-        value.reserve(numElements);
-        for (unsigned i = 0; i < numElements; ++i) {
-            HLATemplateDecodeVisitor<char> visitor(_stream);
-            dataType.getElementDataType()->accept(visitor);
-            value.push_back(visitor.getValue());
-        }
-        _propertyNode.setStringValue(value);
-    }
-    virtual void apply(const HLAVariableArrayDataType& dataType)
-    {
-        HLATemplateDecodeVisitor<std::string::size_type> numElementsVisitor(_stream);
-        dataType.getSizeDataType()->accept(numElementsVisitor);
-        std::string::size_type numElements = numElementsVisitor.getValue();
-        std::string value;
-        value.reserve(numElements);
-        for (std::string::size_type i = 0; i < numElements; ++i) {
-            HLATemplateDecodeVisitor<char> visitor(_stream);
-            dataType.getElementDataType()->accept(visitor);
-            value.push_back(visitor.getValue());
-        }
-        _propertyNode.setStringValue(value);
-    }
-
-protected:
-    SGPropertyNode& _propertyNode;
-};
-
-class HLAPropertyDataElement::StringEncodeVisitor : public HLADataTypeEncodeVisitor {
-public:
-    StringEncodeVisitor(HLAEncodeStream& stream, const SGPropertyNode& propertyNode) :
-        HLADataTypeEncodeVisitor(stream),
-        _propertyNode(propertyNode)
-    { }
-
-    virtual void apply(const HLAFixedArrayDataType& dataType)
-    {
-        unsigned numElements = dataType.getNumElements();
-        std::string value = _propertyNode.getStringValue();
-        for (unsigned i = 0; i < numElements; ++i) {
-            if (i < value.size()) {
-                HLATemplateEncodeVisitor<char> visitor(_stream, value[i]);
-                dataType.getElementDataType()->accept(visitor);
-            } else {
-                HLADataTypeEncodeVisitor visitor(_stream);
-                dataType.getElementDataType()->accept(visitor);
-            }
-        }
-    }
-
-    virtual void apply(const HLAVariableArrayDataType& dataType)
-    {
-        std::string value = _propertyNode.getStringValue();
-        HLATemplateEncodeVisitor<std::string::size_type> numElementsVisitor(_stream, value.size());
-        dataType.getSizeDataType()->accept(numElementsVisitor);
-        for (unsigned i = 0; i < value.size(); ++i) {
-            HLATemplateEncodeVisitor<char> visitor(_stream, value[i]);
-            dataType.getElementDataType()->accept(visitor);
-        }
-    }
-
-protected:
-    const SGPropertyNode& _propertyNode;
-};
-
-class HLAPropertyDataElement::StringDataElement : public HLADataElement {
+class HLAPropertyDataElement::StringDataElement : public HLAStringDataElement {
 public:
     StringDataElement(const HLAArrayDataType* dataType, SGPropertyNode* propertyNode);
     virtual ~StringDataElement();
 
-    virtual bool encode(HLAEncodeStream& stream) const;
-    virtual bool decode(HLADecodeStream& stream);
+    virtual bool decodeElement(HLADecodeStream& stream, unsigned i);
 
-    virtual const HLADataType* getDataType() const;
-    virtual bool setDataType(const HLADataType* dataType);
+    class Listener : public SGPropertyChangeListener {
+    public:
+        Listener(StringDataElement* stringDataElement);
+        virtual ~Listener();
+        virtual void valueChanged (SGPropertyNode * node);
+    private:
+        StringDataElement* _stringDataElement;
+    };
 
 private:
-    SGSharedPtr<const HLAArrayDataType> _dataType;
     SGSharedPtr<SGPropertyNode> _propertyNode;
+    Listener* _listener;
 };
 
-HLAPropertyDataElement::StringDataElement::StringDataElement(const HLAArrayDataType* dataType, SGPropertyNode* propertyNode) :
-    _dataType(dataType),
-    _propertyNode(propertyNode)
+HLAPropertyDataElement::StringDataElement::Listener::Listener(StringDataElement* stringDataElement) :
+            _stringDataElement(stringDataElement)
 {
 }
 
-HLAPropertyDataElement::StringDataElement::~StringDataElement()
+HLAPropertyDataElement::StringDataElement::Listener::~Listener()
 {
 }
 
-bool
-HLAPropertyDataElement::StringDataElement::encode(HLAEncodeStream& stream) const
+void
+HLAPropertyDataElement::StringDataElement::Listener::valueChanged (SGPropertyNode * node)
 {
-    StringEncodeVisitor visitor(stream, *_propertyNode);
-    _dataType->accept(visitor);
-    return true;
+    _stringDataElement->setValue(node->getStringValue());
 }
 
-bool
-HLAPropertyDataElement::StringDataElement::decode(HLADecodeStream& stream)
+HLAPropertyDataElement::StringDataElement::StringDataElement(const HLAArrayDataType* dataType, SGPropertyNode* propertyNode) :
+    HLAStringDataElement(dataType),
+    _propertyNode(propertyNode),
+    _listener(new Listener(this))
 {
-    StringDecodeVisitor visitor(stream, *_propertyNode);
-    _dataType->accept(visitor);
-    return true;
+    _propertyNode->addChangeListener(_listener, true);
 }
 
-const HLADataType*
-HLAPropertyDataElement::StringDataElement::getDataType() const
+HLAPropertyDataElement::StringDataElement::~StringDataElement()
 {
-    return _dataType.get();
+    _propertyNode->removeChangeListener(_listener);
+    delete _listener;
+    _listener = 0;
 }
 
 bool
-HLAPropertyDataElement::StringDataElement::setDataType(const HLADataType* dataType)
+HLAPropertyDataElement::StringDataElement::decodeElement(HLADecodeStream& stream, unsigned i)
 {
-    if (!dataType)
-        return false;
-    const HLAArrayDataType* arrayDataType = dataType->toArrayDataType();
-    if (!arrayDataType)
-        return false;
-    const HLADataType* elementDataType = arrayDataType->getElementDataType();
-    if (!elementDataType)
+    if (!HLAStringDataElement::decodeElement(stream, i))
         return false;
-    if (!elementDataType->toBasicDataType())
-        return false;
-    _dataType = arrayDataType;
+    if (i + 1 == getValue().size())
+        _propertyNode->setStringValue(getValue());
     return true;
 }
 
@@ -534,6 +434,38 @@ HLAPropertyDataElement::~HLAPropertyDataElement()
 {
 }
 
+void
+HLAPropertyDataElement::accept(HLADataElementVisitor& visitor)
+{
+    if (_dataElement.valid()) {
+        visitor.apply(*_dataElement);
+    } else {
+        // We cant do anything if the data type is not valid
+        if (_dataType.valid()) {
+            HLADataElementFactoryVisitor factoryVisitor;
+            _dataType->accept(factoryVisitor);
+            _dataElement = factoryVisitor.getDataElement();
+            if (_dataElement.valid()) {
+                visitor.apply(*_dataElement);
+            } else {
+                HLADataElement::accept(visitor);
+            }
+        } else {
+            HLADataElement::accept(visitor);
+        }
+    }
+}
+
+void
+HLAPropertyDataElement::accept(HLAConstDataElementVisitor& visitor) const
+{
+    if (_dataElement.valid()) {
+        visitor.apply(*_dataElement);
+    } else {
+        HLADataElement::accept(visitor);
+    }
+}
+
 bool
 HLAPropertyDataElement::encode(HLAEncodeStream& stream) const
 {
index 4354a1d9fa4802053c751bcb29a379d73796cf42..da21b2ab5c7176a59eba1500ff8a191aaecf67b0 100644 (file)
@@ -31,6 +31,9 @@ public:
     HLAPropertyDataElement(const HLADataType* dataType);
     virtual ~HLAPropertyDataElement();
 
+    virtual void accept(HLADataElementVisitor& visitor);
+    virtual void accept(HLAConstDataElementVisitor& visitor) const;
+
     virtual bool encode(HLAEncodeStream& stream) const;
     virtual bool decode(HLADecodeStream& stream);
 
index 98c22f78341e92baf4497bfa39a6d5144c73b1d0..2eca369a4d24b941439862a5dfb9b377d064d424 100644 (file)
@@ -19,6 +19,8 @@
 
 #include <simgear/debug/logstream.hxx>
 
+#include "HLADataElementVisitor.hxx"
+
 namespace simgear {
 
 HLAAbstractVariantDataElement::HLAAbstractVariantDataElement(const HLAVariantDataType* dataType) :
@@ -30,6 +32,18 @@ HLAAbstractVariantDataElement::~HLAAbstractVariantDataElement()
 {
 }
 
+void
+HLAAbstractVariantDataElement::accept(HLADataElementVisitor& visitor)
+{
+    visitor.apply(*this);
+}
+
+void
+HLAAbstractVariantDataElement::accept(HLAConstDataElementVisitor& visitor) const
+{
+    visitor.apply(*this);
+}
+
 bool
 HLAAbstractVariantDataElement::decode(HLADecodeStream& stream)
 {
index b3ced7ca039a7adf6a08a415612dbf801d442315..0b14ef45597f837c1c0d2179eefa9e998102fba6 100644 (file)
@@ -30,6 +30,9 @@ public:
     HLAAbstractVariantDataElement(const HLAVariantDataType* dataType);
     virtual ~HLAAbstractVariantDataElement();
 
+    virtual void accept(HLADataElementVisitor& visitor);
+    virtual void accept(HLAConstDataElementVisitor& visitor) const;
+
     virtual bool decode(HLADecodeStream& stream);
     virtual bool encode(HLAEncodeStream& stream) const;
 
index e214e6a0e1dc69692ad660ecee349931dc426621..3bb386039ba351e1584d31323fd2027038ec2b05 100644 (file)
@@ -11,6 +11,7 @@ libsghla_a_HEADERS = \
        HLABasicDataElement.hxx \
        HLABasicDataType.hxx \
        HLADataElement.hxx \
+       HLADataElementVisitor.hxx \
        HLADataType.hxx \
        HLADataTypeVisitor.hxx \
        HLAEnumeratedDataElement.hxx \