]> git.mxchange.org Git - simgear.git/blobdiff - simgear/hla/HLADataElement.hxx
Probably a better fix
[simgear.git] / simgear / hla / HLADataElement.hxx
index ffbaf5df8dade297be8249e6bd569358d9a29cfd..7ee817ed6304b2f7c8cc3f1eec8cd7f5968fc1d2 100644 (file)
@@ -83,91 +83,6 @@ public:
     void attachStamp(HLADataElement& dataElement);
     void clearStamp();
 
-    /// HLADataElements could be identified by path
-    /// These paths are composed of structure field names and array indices in the
-    /// order they appear while walking to the data element.
-    /// So provide here some tool functions to access these elements
-    /// Note that these functions are relatively expensive in execution time.
-    /// So only use them once at object creation time and store direct references to the values
-
-    class PathElement {
-    public:
-        PathElement(unsigned index) : _data(new IndexData(index)) {}
-        PathElement(const std::string& name) : _data(new FieldData(name)) {}
-
-        bool isFieldValue() const
-        { return _data->toFieldData(); }
-        bool isIndexValue() const
-        { return _data->toIndexData(); }
-
-        unsigned getIndexValue() const
-        {
-            const IndexData* indexData = _data->toIndexData();
-            if (!indexData)
-                return ~unsigned(0);
-            return indexData->_index;
-        }
-
-        std::string getFieldValue() const
-        {
-            const FieldData* fieldData = _data->toFieldData();
-            if (!fieldData)
-                return std::string();
-            return fieldData->_name;
-        }
-
-        // Want to be able to use that in std::map and std::set
-        bool operator<(const PathElement& pathElement) const
-        { return _data->less(pathElement._data.get()); }
-        bool operator==(const PathElement& pathElement) const
-        { return _data->equal(pathElement._data.get()); }
-
-        void append(std::string& s) const
-        { _data->append(s); }
-
-    private:
-        struct FieldData;
-        struct IndexData;
-        struct Data : public SGReferenced {
-            virtual ~Data();
-            virtual const FieldData* toFieldData() const;
-            virtual const IndexData* toIndexData() const;
-            virtual bool less(const Data*) const = 0;
-            virtual bool equal(const Data*) const = 0;
-            virtual void append(std::string&) const = 0;
-        };
-        struct FieldData : public Data {
-            FieldData(const std::string& name);
-            virtual ~FieldData();
-            virtual const FieldData* toFieldData() const;
-            virtual bool less(const Data* data) const;
-            virtual bool equal(const Data* data) const;
-            virtual void append(std::string& s) const;
-            std::string _name;
-        };
-        struct IndexData : public Data {
-            IndexData(unsigned index);
-            virtual ~IndexData();
-            virtual const IndexData* toIndexData() const;
-            virtual bool less(const Data* data) const;
-            virtual bool equal(const Data* data) const;
-            virtual void append(std::string& s) const;
-            unsigned _index;
-        };
-
-        SGSharedPtr<Data> _data;
-    };
-    typedef std::list<PathElement> Path;
-    typedef std::pair<std::string, Path> StringPathPair;
-    typedef std::pair<unsigned, Path> IndexPathPair;
-
-    static std::string toString(const Path& path);
-    static std::string toString(const StringPathPair& path)
-    { return path.first + toString(path.second); }
-    static StringPathPair toStringPathPair(const std::string& s);
-    static Path toPath(const std::string& s)
-    { return toStringPathPair(s).second; }
-
 protected:
     // Container for the timestamp the originating attribute was last updated for
     class Stamp : public SGReferenced {
@@ -206,60 +121,6 @@ private:
     SGSharedPtr<Stamp> _stamp;
 };
 
-class HLADataElementProvider {
-public:
-    class AbstractProvider : public SGReferenced {
-    public:
-        virtual ~AbstractProvider() { }
-        virtual HLADataElement* getDataElement(const HLADataElement::Path& path) = 0;
-        // virtual HLADataElement* getDataElement(const HLADataElement::Path& path, const HLADataType* dataType)
-        // {
-        //     SGSharedPtr<HLADataElement> dataElement = getDataElement(path);
-        //     if (!dataElement.valid())
-        //         return 0;
-        //     if (!dataElement->setDataType(dataType))
-        //         return 0;
-        //     return dataElement.release();
-        // }
-    };
-
-    HLADataElementProvider()
-    { }
-    HLADataElementProvider(HLADataElement* dataElement) :
-        _provider(new ConcreteProvider(dataElement))
-    { }
-    HLADataElementProvider(const SGSharedPtr<HLADataElement>& dataElement) :
-        _provider(new ConcreteProvider(dataElement))
-    { }
-    HLADataElementProvider(AbstractProvider* provider) :
-        _provider(provider)
-    { }
-
-    HLADataElement* getDataElement(const HLADataElement::Path& path) const
-    {
-        if (!_provider.valid())
-            return 0;
-        return _provider->getDataElement(path);
-    }
-
-private:
-    class ConcreteProvider : public AbstractProvider {
-    public:
-        ConcreteProvider(const SGSharedPtr<HLADataElement>& dataElement) :
-            _dataElement(dataElement)
-        { }
-        virtual HLADataElement* getDataElement(const HLADataElement::Path&)
-        { return _dataElement.get(); }
-    private:
-        SGSharedPtr<HLADataElement> _dataElement;
-    };
-
-    SGSharedPtr<AbstractProvider> _provider;
-};
-
-typedef std::map<HLADataElement::Path, HLADataElementProvider> HLAPathElementMap;
-typedef std::map<unsigned, HLAPathElementMap> HLAAttributePathElementMap;
-
 }
 
 #endif