]> git.mxchange.org Git - simgear.git/commitdiff
Melchior FRANZ:
authorehofman <ehofman>
Thu, 23 Dec 2004 13:32:01 +0000 (13:32 +0000)
committerehofman <ehofman>
Thu, 23 Dec 2004 13:32:01 +0000 (13:32 +0000)
My recent fix for the load/save fgfs.sav feature was a bit too ambitious.
While aliases lead to abortion before, I tried to copy them properly,
although this wasn't a requirement. Unfortunately, this seems to have
worked for absolute aliases only, not for relative ones, and hence broke
several panel instruments. The attached patch backs most of the previous
patch out again, and goes a simpler route: just ignore aliases.

simgear/props/props.cxx
simgear/props/props.hxx
simgear/props/props_io.cxx

index 50b412cb03c94590b78facdf930a038f434331b5..60a19aa41f51892d6432536c4e1d66c722eb7695 100644 (file)
@@ -969,9 +969,9 @@ SGPropertyNode::getPath (bool simplify) const
 }
 
 SGPropertyNode::Type
-SGPropertyNode::getType (bool deref_alias) const
+SGPropertyNode::getType () const
 {
-  if (_type == ALIAS && deref_alias)
+  if (_type == ALIAS)
     return _value.alias->getType();
   else
     return _type;
index c800f29da755b36a7560167499177f0574e0c308..a08d6ffa9ca2f4d6a87b3af8fc027bcb735168ce 100644 (file)
@@ -850,10 +850,8 @@ public:
 
   /**
    * Get the type of leaf value, if any, for this node.
-   * When applied to an ALIAS node, deref_alias decides if the type
-   * of the referred node is to be returned (default), or ALIAS.
    */
-  Type getType (bool deref_alias = true) const;
+  Type getType () const;
 
 
   /**
index ec549011865a9ffa7840c74c85e30fa5276958a8..0aba26edbf4e0782109322afe34e98b4ae7bbf10 100644 (file)
@@ -368,7 +368,6 @@ getTypeName (SGPropertyNode::Type type)
   case SGPropertyNode::STRING:
     return "string";
   case SGPropertyNode::ALIAS:
-    return "alias";
   case SGPropertyNode::NONE:
     return "unspecified";
   }
@@ -551,7 +550,7 @@ copyProperties (const SGPropertyNode *in, SGPropertyNode *out)
                                // First, copy the actual value,
                                // if any.
   if (in->hasValue()) {
-    switch (in->getType(false)) {
+    switch (in->getType()) {
     case SGPropertyNode::BOOL:
       if (!out->setBoolValue(in->getBoolValue()))
        retval = false;
@@ -580,13 +579,9 @@ copyProperties (const SGPropertyNode *in, SGPropertyNode *out)
       if (!out->setUnspecifiedValue(in->getStringValue()))
        retval = false;
       break;
-    case SGPropertyNode::ALIAS: {
-      const char *path = in->getAliasTarget()->getPath();
-      SGPropertyNode *node = out->getRootNode()->getNode(path, true);
-      out->alias(node);
-      break;
-    }
     default:
+      if (in->isAlias())
+       break;
       string message = "Unknown internal SGPropertyNode type";
       message += in->getType();
       throw sg_error(message, "SimGear Property Reader");