]> git.mxchange.org Git - simgear.git/blobdiff - simgear/hla/HLADataElement.cxx
Fix one more crash on Windows in HTTPRepository
[simgear.git] / simgear / hla / HLADataElement.cxx
index 0794f152311f1239d958daa7b751bad16256c5d7..da0c8e9a506b109c95ad38fa3492d2e22d0b0ac5 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 "HLADataElement.hxx"
 
 #include <simgear/debug/logstream.hxx>
 
 namespace simgear {
 
-HLADataElement::PathElement::Data::~Data()
-{
-}
-
-const HLADataElement::PathElement::FieldData*
-HLADataElement::PathElement::Data::toFieldData() const
-{
-    return 0;
-}
-
-const HLADataElement::PathElement::IndexData*
-HLADataElement::PathElement::Data::toIndexData() const
-{
-    return 0;
-}
-
-HLADataElement::PathElement::FieldData::FieldData(const std::string& name) :
-    _name(name)
-{
-}
-
-HLADataElement::PathElement::FieldData::~FieldData()
-{
-}
-
-const HLADataElement::PathElement::FieldData*
-HLADataElement::PathElement::FieldData::toFieldData() const
-{
-    return this;
-}
-
-bool
-HLADataElement::PathElement::FieldData::less(const Data* data) const
+HLADataElement::~HLADataElement()
 {
-    const FieldData* fieldData = data->toFieldData();
-    // IndexData is allways smaller than FieldData
-    if (!fieldData)
-        return false;
-    return _name < fieldData->_name;
 }
 
 bool
-HLADataElement::PathElement::FieldData::equal(const Data* data) const
+HLADataElement::setDataElement(HLADataElementIndex::const_iterator begin, HLADataElementIndex::const_iterator end, HLADataElement* dataElement)
 {
-    const FieldData* fieldData = data->toFieldData();
-    // IndexData is allways smaller than FieldData
-    if (!fieldData)
-        return false;
-    return _name == fieldData->_name;
+    return false;
 }
 
-void
-HLADataElement::PathElement::FieldData::append(std::string& s) const
-{
-    s.append(1, std::string::value_type('.'));
-    s.append(_name);
-}
-
-HLADataElement::PathElement::IndexData::IndexData(unsigned index) :
-    _index(index)
-{
-}
-
-HLADataElement::PathElement::IndexData::~IndexData()
-{
-}
-
-const HLADataElement::PathElement::IndexData*
-HLADataElement::PathElement::IndexData::toIndexData() const
+HLADataElement*
+HLADataElement::getDataElement(HLADataElementIndex::const_iterator begin, HLADataElementIndex::const_iterator end)
 {
+    if (begin != end)
+        return 0;
     return this;
 }
 
-bool
-HLADataElement::PathElement::IndexData::less(const Data* data) const
-{
-    const IndexData* indexData = data->toIndexData();
-    // IndexData is allways smaller than FieldData
-    if (!indexData)
-        return true;
-    return _index < indexData->_index;
-}
-
-bool
-HLADataElement::PathElement::IndexData::equal(const Data* data) const
-{
-    const IndexData* indexData = data->toIndexData();
-    // IndexData is allways smaller than FieldData
-    if (!indexData)
-        return false;
-    return _index == indexData->_index;
-}
-
-void
-HLADataElement::PathElement::IndexData::append(std::string& s) const
-{
-    s.append(1, std::string::value_type('['));
-    unsigned value = _index;
-    do {
-        s.append(1, std::string::value_type('0' + value % 10));
-    } while (value /= 10);
-    s.append(1, std::string::value_type(']'));
-}
-
-HLADataElement::~HLADataElement()
+const HLADataElement*
+HLADataElement::getDataElement(HLADataElementIndex::const_iterator begin, HLADataElementIndex::const_iterator end) const
 {
+    if (begin != end)
+        return 0;
+    return this;
 }
 
 void
@@ -188,61 +112,6 @@ HLADataElement::accept(HLAConstDataElementVisitor& visitor) const
     visitor.apply(*this);
 }
 
-std::string
-HLADataElement::toString(const Path& path)
-{
-    std::string s;
-    for (Path::const_iterator i = path.begin(); i != path.end(); ++i)
-        i->append(s);
-    return s;
-}
-
-HLADataElement::StringPathPair
-HLADataElement::toStringPathPair(const std::string& s)
-{
-    Path path;
-    // Skip the initial attribute/parameter name if given
-    std::string::size_type i = s.find_first_of("[.");
-    std::string attribute = s.substr(0, i);
-    while (i < s.size()) {
-        if (s[i] == '[') {
-            ++i;
-            unsigned index = 0;
-            while (i < s.size()) {
-                if (s[i] == ']')
-                    break;
-                unsigned v = s[i] - '0';
-                // Error, no number
-                if (10 <= v) {
-                    SG_LOG(SG_NETWORK, SG_WARN, "HLADataElement: invalid character in array subscript for \""
-                           << s << "\" at \"" << attribute << toString(path) << "\"!");
-                    return StringPathPair();
-                }
-                index *= 10;
-                index += v;
-                ++i;
-            }
-            path.push_back(index);
-            ++i;
-            continue;
-        }
-        if (s[i] == '.') {
-            // Error, . cannot be last
-            if (s.size() <= ++i) {
-                SG_LOG(SG_NETWORK, SG_WARN, "HLADataElement: invalid terminating '.' for \""
-                       << s << "\"!");
-                return StringPathPair();
-            }
-            std::string::size_type e = s.find_first_of("[.", i);
-            path.push_back(s.substr(i, e - i));
-            i = e;
-            continue;
-        }
-    }
-
-    return StringPathPair(attribute, path);
-}
-
 void
 HLADataElement::_setStamp(HLADataElement::Stamp* stamp)
 {