]> git.mxchange.org Git - simgear.git/blobdiff - simgear/props/props_io.cxx
Merge branch 'ehofman/sound' into next
[simgear.git] / simgear / props / props_io.cxx
index f6aa8d78bafac220aa73079e641a6bc3903a90c6..48244c7b11ee7cea442681e0944638cd6828cbd0 100644 (file)
@@ -187,16 +187,17 @@ PropsVisitor::startElement (const char * name, const XMLAttributes &atts)
                                // Get the index.
     attval = atts.getValue("n");
     int index = 0;
+    string strName(name);
     if (attval != 0) {
       index = atoi(attval);
-      st.counters[name] = SG_MAX2(st.counters[name], index+1);
+      st.counters[strName] = SG_MAX2(st.counters[strName], index+1);
     } else {
-      index = st.counters[name];
-      st.counters[name]++;
+      index = st.counters[strName];
+      st.counters[strName]++;
     }
 
                                // Got the index, so grab the node.
-    SGPropertyNode * node = st.node->getChild(name, index, true);
+    SGPropertyNode * node = st.node->getChild(strName, index, true);
     if (!node->getAttribute(SGPropertyNode::WRITE)) {
       SG_LOG(SG_INPUT, SG_ALERT, "Not overwriting write-protected property "
           << node->getPath(true));
@@ -414,29 +415,31 @@ void readProperties (const char *buf, const int size,
 static const char *
 getTypeName (simgear::props::Type type)
 {
-  using namespace simgear::props;
+  using namespace simgear;
   switch (type) {
-  case UNSPECIFIED:
+  case props::UNSPECIFIED:
     return "unspecified";
-  case BOOL:
+  case props::BOOL:
     return "bool";
-  case INT:
+  case props::INT:
     return "int";
-  case LONG:
+  case props::LONG:
     return "long";
-  case FLOAT:
+  case props::FLOAT:
     return "float";
-  case DOUBLE:
+  case props::DOUBLE:
     return "double";
-  case STRING:
+  case props::STRING:
     return "string";
-  case VEC3D:
+  case props::VEC3D:
     return "vec3d";
-  case VEC4D:
+  case props::VEC4D:
     return "vec4d";
-  case ALIAS:
-  case NONE:
+  case props::ALIAS:
+  case props::NONE:
     return "unspecified";
+  default: // avoid compiler warning
+    break;
   }
 
   // keep the compiler from squawking
@@ -599,6 +602,13 @@ writeProperties (const string &file, const SGPropertyNode * start_node,
   }
 }
 
+// Another variation, useful when called from gdb
+void
+writeProperties (const char* file, const SGPropertyNode * start_node)
+{
+    writeProperties(string(file), start_node, true);
+}
+
 
 \f
 ////////////////////////////////////////////////////////////////////////
@@ -617,46 +627,46 @@ writeProperties (const string &file, const SGPropertyNode * start_node,
 bool
 copyProperties (const SGPropertyNode *in, SGPropertyNode *out)
 {
-  using namespace simgear::props;
+  using namespace simgear;
   bool retval = true;
 
                                // First, copy the actual value,
                                // if any.
   if (in->hasValue()) {
     switch (in->getType()) {
-    case BOOL:
+    case props::BOOL:
       if (!out->setBoolValue(in->getBoolValue()))
        retval = false;
       break;
-    case INT:
+    case props::INT:
       if (!out->setIntValue(in->getIntValue()))
        retval = false;
       break;
-    case LONG:
+    case props::LONG:
       if (!out->setLongValue(in->getLongValue()))
        retval = false;
       break;
-    case FLOAT:
+    case props::FLOAT:
       if (!out->setFloatValue(in->getFloatValue()))
        retval = false;
       break;
-    case DOUBLE:
+    case props::DOUBLE:
       if (!out->setDoubleValue(in->getDoubleValue()))
        retval = false;
       break;
-    case STRING:
+    case props::STRING:
       if (!out->setStringValue(in->getStringValue()))
        retval = false;
       break;
-    case UNSPECIFIED:
+    case props::UNSPECIFIED:
       if (!out->setUnspecifiedValue(in->getStringValue()))
        retval = false;
       break;
-    case VEC3D:
+    case props::VEC3D:
       if (!out->setValue(in->getValue<SGVec3d>()))
         retval = false;
       break;
-    case VEC4D:
+    case props::VEC4D:
       if (!out->setValue(in->getValue<SGVec4d>()))
         retval = false;
       break;
@@ -676,7 +686,7 @@ copyProperties (const SGPropertyNode *in, SGPropertyNode *out)
   int nChildren = in->nChildren();
   for (int i = 0; i < nChildren; i++) {
     const SGPropertyNode * in_child = in->getChild(i);
-    SGPropertyNode * out_child = out->getChild(in_child->getName(),
+    SGPropertyNode * out_child = out->getChild(in_child->getNameString(),
                                               in_child->getIndex(),
                                               true);
     if (!copyProperties(in_child, out_child))