]> git.mxchange.org Git - flightgear.git/commitdiff
Major property-manager rewrite, using const char * throughout
authordavid <david>
Tue, 19 Mar 2002 17:12:13 +0000 (17:12 +0000)
committerdavid <david>
Tue, 19 Mar 2002 17:12:13 +0000 (17:12 +0000)
interface instead of string.  This will result in a lot more
efficiency later, once I add in a simple hash table for caching
lookups, since it will avoid creating a lot of temporary string
objects.  The major considerations for users will be that they cannot
use

  node->getName() == "foo";

any more, and will have to use c_str() when setting a string value
from a C++ string.

20 files changed:
src/Autopilot/auto_gui.cxx
src/Autopilot/newauto.cxx
src/Cockpit/cockpit.cxx
src/Cockpit/panel.cxx
src/Cockpit/panel_io.cxx
src/FDM/LaRCsim.cxx
src/GUI/apt_dlg.cxx
src/GUI/net_dlg.cxx
src/GUI/prop_picker.cxx
src/Main/fg_commands.cxx
src/Main/fg_props.cxx
src/Main/fg_props.hxx
src/Main/main.cxx
src/Main/options.cxx
src/Network/httpd.cxx
src/Network/props.cxx
src/NetworkOLK/network.cxx
src/Objects/matlib.cxx
src/Sound/fg_fx.cxx
src/Sound/fg_sound.cxx

index b148bd908f7283850309c8a04009287d73f0f49b..caa3bccc91fe7b3a7b2aa717d34c4774626a501a 100644 (file)
@@ -664,7 +664,7 @@ void TgtAptDialog_OK (puObject *)
 
 void TgtAptDialog_Reset(puObject *)
 {
-    sprintf( NewTgtAirportId, "%s", fgGetString("/sim/startup/airport-id").c_str() );
+    sprintf( NewTgtAirportId, "%s", fgGetString("/sim/startup/airport-id") );
     TgtAptDialogInput->setValue ( NewTgtAirportId );
     TgtAptDialogInput->setCursor( 0 ) ;
 }
@@ -705,7 +705,7 @@ void TgtAptDialog_HandleArrow( puObject *arrow )
 
 void AddWayPoint(puObject *cb)
 {
-    sprintf( NewTgtAirportId, "%s", fgGetString("/sim/startup/airport-id").c_str() );
+    sprintf( NewTgtAirportId, "%s", fgGetString("/sim/startup/airport-id") );
     TgtAptDialogInput->setValue( NewTgtAirportId );
     
     /* refresh waypoint list */
@@ -776,8 +776,7 @@ void ClearRoute(puObject *cb)
 void NewTgtAirportInit()
 {
     SG_LOG( SG_AUTOPILOT, SG_INFO, " enter NewTgtAirportInit()" );
-    sprintf( NewTgtAirportId, "%s",
-             fgGetString("/sim/startup/airport-id").c_str() );
+    sprintf( NewTgtAirportId, "%s", fgGetString("/sim/startup/airport-id") );
     SG_LOG( SG_AUTOPILOT, SG_INFO, " NewTgtAirportId " << NewTgtAirportId );
     int len = 150
         - puGetDefaultLabelFont().getStringWidth( NewTgtAirportLabel ) / 2;
index 83e601fc67d5339993aebd3644955902b87d0448..a142a4874c17c4d7bc568b2163a6ac6bda36d716 100644 (file)
@@ -376,7 +376,7 @@ void FGAutopilot::reset() {
        
     update_old_control_values();
 
-    sprintf( NewTgtAirportId, "%s", fgGetString("/sim/startup/airport-id").c_str() );
+    sprintf( NewTgtAirportId, "%s", fgGetString("/sim/startup/airport-id") );
        
     MakeTargetLatLonStr( get_TargetLatitude(), get_TargetLongitude() );
 }
index fa2780343f856e49b977dd611a015a804e51f731..5750035af27260a1f76e5f3b9d58480b36aa6701 100644 (file)
@@ -183,7 +183,7 @@ float get_altitude( void )
 
     float altitude;
 
-    if ( startup_units_node->getStringValue() == "feet" ) {
+    if ( string(startup_units_node->getStringValue()) == "feet" ) {
         altitude = current_aircraft.fdm_state->get_Altitude();
     } else {
         altitude = (current_aircraft.fdm_state->get_Altitude()
index 29729192d679f4e2bed9a85dea91a8b8be168949..ab0ce21428cfe776e4810cfdb87be48d22d8ffe3 100644 (file)
@@ -1102,7 +1102,7 @@ FGTextLayer::Chunk::getValue () const
       sprintf(_buf, _fmt.c_str(), _text.c_str());
       return _buf;
     case TEXT_VALUE:
-      sprintf(_buf, _fmt.c_str(), _node->getStringValue().c_str());
+      sprintf(_buf, _fmt.c_str(), _node->getStringValue());
       break;
     case DOUBLE_VALUE:
       sprintf(_buf, _fmt.c_str(), _node->getFloatValue() * _mult);
index 9eb5861b9bb9b9e8c5ce9bc927aaef6a08a8a61a..f3b76d8e37cced9b38ee4ffd76fbc35da4f4964c 100644 (file)
@@ -295,8 +295,8 @@ readTransformation (const SGPropertyNode * node, float w_scale, float h_scale)
     type = "rotation";
   }
 
-  if (propName != (string)"") {
-    target = fgGetNode(propName, true);
+  if (propName != "") {
+    target = fgGetNode(propName.c_str(), true);
   }
 
   t->node = target;
@@ -313,7 +313,7 @@ readTransformation (const SGPropertyNode * node, float w_scale, float h_scale)
     t->table = new SGInterpTable();
     for(int i = 0; i < trans_table->nChildren(); i++) {
       const SGPropertyNode * node = trans_table->getChild(i);
-      if (node->getName() == "entry") {
+      if (string(node->getName()) == "entry") {
        double ind = node->getDoubleValue("ind", 0.0);
        double dep = node->getDoubleValue("dep", 0.0);
        SG_LOG( SG_COCKPIT, SG_INFO, "Adding interpolation entry "
@@ -413,7 +413,7 @@ readTextChunk (const SGPropertyNode * node)
   else if (type == "number-value") {
     string propName = node->getStringValue("property");
     float scale = node->getFloatValue("scale", 1.0);
-    SGPropertyNode * target = fgGetNode(propName, true);
+    SGPropertyNode * target = fgGetNode(propName.c_str(), true);
     chunk = new FGTextLayer::Chunk(FGTextLayer::DOUBLE_VALUE, target,
                                   format, scale);
   }
@@ -485,7 +485,7 @@ readLayer (const SGPropertyNode * node, float w_scale, float h_scale)
     for (int i = 0; i < node->nChildren(); i++) {
       const SGPropertyNode * child = node->getChild(i);
       cerr << "Trying child " << child->getName() << endl;
-      if (child->getName() == "layer") {
+      if (string(child->getName()) == "layer") {
        cerr << "succeeded!" << endl;
        ((FGGroupLayer *)layer)->addLayer(readLayer(child, w_scale, h_scale));
       }
@@ -516,7 +516,7 @@ readLayer (const SGPropertyNode * node, float w_scale, float h_scale)
       int nChunks = chunk_group->nChildren();
       for (int i = 0; i < nChunks; i++) {
        const SGPropertyNode * node = chunk_group->getChild(i);
-       if (node->getName() == "chunk") {
+       if (string(node->getName()) == "chunk") {
          FGTextLayer::Chunk * chunk = readTextChunk(node);
          if (chunk != 0)
            tlayer->addChunk(chunk);
@@ -576,7 +576,7 @@ readLayer (const SGPropertyNode * node, float w_scale, float h_scale)
     int nTransformations = trans_group->nChildren();
     for (int i = 0; i < nTransformations; i++) {
       const SGPropertyNode * node = trans_group->getChild(i);
-      if (node->getName() == "transformation") {
+      if (string(node->getName()) == "transformation") {
        FGPanelTransformation * t = readTransformation(node, w_scale, h_scale);
        if (t != 0)
          layer->addTransformation(t);
@@ -645,7 +645,7 @@ readInstrument (const SGPropertyNode * node)
     int nActions = action_group->nChildren();
     for (int i = 0; i < nActions; i++) {
       const SGPropertyNode * node = action_group->getChild(i);
-      if (node->getName() == "action") {
+      if (string(node->getName()) == "action") {
        FGPanelAction * action = readAction(node, w_scale, h_scale);
        if (action != 0)
          instrument->addAction(action);
@@ -664,7 +664,7 @@ readInstrument (const SGPropertyNode * node)
     int nLayers = layer_group->nChildren();
     for (int i = 0; i < nLayers; i++) {
       const SGPropertyNode * node = layer_group->getChild(i);
-      if (node->getName() == "layer") {
+      if (string(node->getName()) == "layer") {
        FGInstrumentLayer * layer = readLayer(node, w_scale, h_scale);
        if (layer != 0)
          instrument->addLayer(layer);
@@ -783,7 +783,7 @@ readPanel (const SGPropertyNode * root)
     int nInstruments = instrument_group->nChildren();
     for (int i = 0; i < nInstruments; i++) {
       const SGPropertyNode * node = instrument_group->getChild(i);
-      if (node->getName() == "instrument") {
+      if (string(node->getName()) == "instrument") {
        FGPanelInstrument * instrument = readInstrument(node);
        if (instrument != 0)
          panel->addInstrument(instrument);
index 54e948b177a35c89342c725fb4ae91473cd30f49..e24ca735d765964cc8eb692095203caa7b0a4c6d 100644 (file)
@@ -45,10 +45,10 @@ FGLaRCsim::FGLaRCsim( double dt ) {
     speed_up = fgGetNode("/sim/speed-up", true);
     aero = fgGetNode("/sim/aero", true);
 
-    ls_toplevel_init( 0.0, (char *)(aero->getStringValue().c_str()) );
+    ls_toplevel_init( 0.0, (char *)(aero->getStringValue()) );
 
     lsic=new LaRCsimIC; //this needs to be brought up after LaRCsim is
-    if ( aero->getStringValue() == "c172" ) {
+    if ( string(aero->getStringValue()) == "c172" ) {
         copy_to_LaRCsim(); // initialize all of LaRCsim's vars
 
         //this should go away someday -- formerly done in fg_init.cxx
@@ -85,7 +85,7 @@ void FGLaRCsim::init() {
 // Run an iteration of the EOM (equations of motion)
 void FGLaRCsim::update( int multiloop ) {
 
-    if ( aero->getStringValue() == "c172" ) {
+    if ( string(aero->getStringValue()) == "c172" ) {
        // set control inputs
        // cout << "V_calibrated_kts = " << V_calibrated_kts << '\n';
        eng.set_IAS( V_calibrated_kts );
@@ -169,7 +169,7 @@ void FGLaRCsim::update( int multiloop ) {
         speed_up->getIntValue();
     Flap_handle = 30.0 * globals->get_controls()->get_flaps();
 
-    if ( aero->getStringValue() == "c172" ) {
+    if ( string(aero->getStringValue()) == "c172" ) {
         Use_External_Engine = 1;
     } else {
        Use_External_Engine = 0;
@@ -539,7 +539,7 @@ bool FGLaRCsim::copy_from_LaRCsim() {
     _set_Climb_Rate( -1 * V_down );
     // cout << "climb rate = " << -V_down * 60 << endl;
 
-    if ( aero->getStringValue() == "uiuc" ) {
+    if ( string(aero->getStringValue()) == "uiuc" ) {
        if (pilot_elev_no) {
            globals->get_controls()->set_elevator(Long_control);
            globals->get_controls()->set_elevator_trim(Long_trim);
index dc87cb7eb23c8c0fab9cbc6b1f43e3156d9a350b..41d2e21c572a0114ec549acc1f9aec40ae753e54 100644 (file)
@@ -117,7 +117,7 @@ void AptDialog_OK (puObject *)
 void AptDialog_Reset(puObject *)
 {
     //  strncpy( NewAirportId, fgGetString("/sim/startup/airport-id").c_str(), 16 );
-    sprintf( NewAirportId, "%s", fgGetString("/sim/startup/airport-id").c_str() );
+    sprintf( NewAirportId, "%s", fgGetString("/sim/startup/airport-id") );
     AptDialogInput->setValue ( NewAirportId );
     AptDialogInput->setCursor( 0 ) ;
 }
@@ -125,7 +125,7 @@ void AptDialog_Reset(puObject *)
 void NewAirport(puObject *cb)
 {
     //  strncpy( NewAirportId, fgGetString("/sim/startup/airport-id").c_str(), 16 );
-    sprintf( NewAirportId, "%s", fgGetString("/sim/startup/airport-id").c_str() );
+    sprintf( NewAirportId, "%s", fgGetString("/sim/startup/airport-id") );
     // cout << "NewAirport " << NewAirportId << endl;
     AptDialogInput->setValue( NewAirportId );
 
@@ -134,7 +134,7 @@ void NewAirport(puObject *cb)
 
 void NewAirportInit(void)
 {
-    sprintf( NewAirportId, "%s", fgGetString("/sim/startup/airport-id").c_str() );
+    sprintf( NewAirportId, "%s", fgGetString("/sim/startup/airport-id") );
     int len = 150
         - puGetDefaultLabelFont().getStringWidth( NewAirportLabel ) / 2;
 
index 74133fce1e69e94d01a1855433a44400d504066f..278962ee2e84568679c3ce8ce52d49ff9bf3a833 100644 (file)
@@ -98,7 +98,7 @@ void NetIdDialog_OK (puObject *)
 
 void NewCallSign(puObject *cb)
 {
-       sprintf( NewNetId, "%s", fgGetString("/sim/networking/call-sign").c_str() );
+       sprintf( NewNetId, "%s", fgGetString("/sim/networking/call-sign") );
 //    sprintf( NewNetId, "%s", fgd_callsign );
        NetIdDialogInput->setValue( NewNetId );
 
@@ -107,7 +107,7 @@ void NewCallSign(puObject *cb)
 
 void NewNetIdInit(void)
 {
-       sprintf( NewNetId, "%s", fgGetString("/sim/networking/call-sign").c_str() );
+       sprintf( NewNetId, "%s", fgGetString("/sim/networking/call-sign") );
 //    sprintf( NewNetId, "%s", fgd_callsign );
        int len = 150 - puGetDefaultLabelFont().getStringWidth( NewNetIdLabel ) / 2;
 
index 83e90005c29874e998e56f459553119fff9632e0..13724ee6cae8f484e089d1b9c8120416ec9d539b 100755 (executable)
@@ -471,7 +471,7 @@ void fgPropPicker::find_props ()
   for (i = 0; i < (int)node->nChildren(); i++) {
            SGPropertyNode * child = node->getChild(i);
            name = child->getName();
-           if ( node->getChild(name, 1) != 0 ) {
+           if ( node->getChild(name.c_str(), 1) != 0 ) {
                iindex = child->getIndex();
                sprintf(sindex, "[%d]", iindex);
                name += sindex;
@@ -487,11 +487,11 @@ void fgPropPicker::find_props ()
                values[ pi ] = new char[ 2 ] ;
            } else {
                 dflag[ pi ] = 0 ;
-               value = node->getStringValue ( name, "" );
+               value = node->getStringValue ( name.c_str(), "" );
                values[ pi ] = new char[ strlen(value.c_str())+2 ] ;
                 strcpy ( values [pi], value.c_str() );
                line += " = '" + value + "' " + "(";
-               line += getValueTypeString( node->getNode( name ) );
+               line += getValueTypeString( node->getNode( name.c_str() ) );
                 line += ")";
                 files[ pi ] = new char[ strlen(line.c_str())+2 ] ;
                strcpy ( files [ pi ], line.c_str() ) ;
index 678a20a6b83861644c81370f5ec93f1e643d126f..83eedd9feac72ca4a398a79d92daf50bde9e4b4b 100644 (file)
@@ -517,7 +517,7 @@ do_property_swap (const SGPropertyNode * arg, SGCommandState ** state)
                                // FIXME: inefficient
   const string & tmp = prop1->getStringValue();
   return (prop1->setUnspecifiedValue(prop2->getStringValue()) &&
-         prop2->setUnspecifiedValue(tmp));
+         prop2->setUnspecifiedValue(tmp.c_str()));
 }
 
 
index 4d42d8c08a42e4fd7335fa11e0eae807ba12d941..0ba8109acbae88b71ffcf484839c2fff173183cf 100644 (file)
@@ -98,7 +98,7 @@ LogClassMapping log_class_mappings [] = {
 /**
  * Get the logging classes.
  */
-static string
+static const char *
 getLoggingClasses ()
 {
   sgDebugClass classes = logbuf::get_log_classes();
@@ -110,11 +110,12 @@ getLoggingClasses ()
       result += log_class_mappings[i].name;
     }
   }
-  return result;
+  return result.c_str();
 }
 
 
-static void addLoggingClass (const string &name)
+static void
+addLoggingClass (const string &name)
 {
   sgDebugClass classes = logbuf::get_log_classes();
   for (int i = 0; log_class_mappings[i].c != SG_UNDEFD; i++) {
@@ -131,8 +132,9 @@ static void addLoggingClass (const string &name)
  * Set the logging classes.
  */
 static void
-setLoggingClasses (string classes)
+setLoggingClasses (const char * c)
 {
+  string classes = c;
   logbuf::set_log_classes(SG_NONE);
 
   if (classes == "none") {
@@ -165,7 +167,7 @@ setLoggingClasses (string classes)
 /**
  * Get the logging priority.
  */
-static string
+static const char *
 getLoggingPriority ()
 {
   switch (logbuf::get_log_priority()) {
@@ -191,8 +193,9 @@ getLoggingPriority ()
  * Set the logging priority.
  */
 static void
-setLoggingPriority (string priority)
+setLoggingPriority (const char * p)
 {
+  string priority = p;
   if (priority == "bulk") {
     logbuf::set_log_priority(SG_BULK);
   } else if (priority == "debug") {
@@ -210,42 +213,13 @@ setLoggingPriority (string priority)
 }
 
 
-#if 0
-/**
- * Get the pause state of the sim.
- */
-static bool
-getFreeze ()
-{
-  return globals->get_freeze();
-}
-
-
-/**
- * Set the pause state of the sim.
- */
-static void
-setFreeze (bool freeze)
-{
-    globals->set_freeze(freeze);
-    if ( freeze ) {
-        // BusyCursor( 0 );
-        current_atcdisplay->CancelRepeatingMessage();
-        current_atcdisplay->RegisterRepeatingMessage("****    SIM IS FROZEN    ****    SIM IS FROZEN    ****");
-    } else {
-        // BusyCursor( 1 );
-        current_atcdisplay->CancelRepeatingMessage();
-    }
-}
-#endif
-
 /**
  * Return the current aircraft directory (UIUC) as a string.
  */
-static string 
+static const char *
 getAircraftDir ()
 {
-  return aircraft_dir;
+  return aircraft_dir.c_str();
 }
 
 
@@ -253,12 +227,9 @@ getAircraftDir ()
  * Set the current aircraft directory (UIUC).
  */
 static void
-setAircraftDir (string dir)
+setAircraftDir (const char * dir)
 {
-  if (getAircraftDir() != dir) {
-    aircraft_dir = dir;
-//     needReinit(); FIXME!!
-  }
+  aircraft_dir = dir;
 }
 
 
@@ -275,7 +246,7 @@ getElapsedTime_ms ()
 /**
  * Return the current Zulu time.
  */
-static string 
+static const char *
 getDateString ()
 {
   string out;
@@ -285,7 +256,7 @@ getDateString ()
          t->tm_year + 1900, t->tm_mon + 1, t->tm_mday,
          t->tm_hour, t->tm_min, t->tm_sec);
   out = buf;
-  return out;
+  return out.c_str();
 }
 
 
@@ -293,7 +264,7 @@ getDateString ()
  * Set the current Zulu time.
  */
 static void
-setDateString (string date_string)
+setDateString (const char * date_string)
 {
   static const SGPropertyNode *cur_time_override
        = fgGetNode("/sim/time/cur-time-override", true);
@@ -304,7 +275,7 @@ setDateString (string date_string)
 
                                // Scan for basic ISO format
                                // YYYY-MM-DDTHH:MM:SS
-  int ret = sscanf(date_string.c_str(), "%d-%d-%dT%d:%d:%d",
+  int ret = sscanf(date_string, "%d-%d-%dT%d:%d:%d",
                   &(new_time.tm_year), &(new_time.tm_mon),
                   &(new_time.tm_mday), &(new_time.tm_hour),
                   &(new_time.tm_min), &(new_time.tm_sec));
@@ -339,7 +310,7 @@ setDateString (string date_string)
 /**
  * Return the GMT as a string.
  */
-static string 
+static const char *
 getGMTString ()
 {
   string out;
@@ -349,7 +320,7 @@ getGMTString ()
          t->tm_hour, t->tm_min, t->tm_sec);
   // cout << t << " " << buf << endl;
   out = buf;
-  return out;
+  return out.c_str();
 }
 
 
@@ -682,6 +653,146 @@ fgLoadFlight (istream &input)
 }
 
 
+\f
+////////////////////////////////////////////////////////////////////////
+// Property convenience functions.
+////////////////////////////////////////////////////////////////////////
+
+SGPropertyNode *
+fgGetNode (const char * path, bool create)
+{
+  return globals->get_props()->getNode(path, create);
+}
+
+SGPropertyNode * 
+fgGetNode (const char * path, int index, bool create)
+{
+  return globals->get_props()->getNode(path, index, create);
+}
+
+bool
+fgHasNode (const char * path)
+{
+  return (fgGetNode(path, false) != 0);
+}
+
+bool
+fgGetBool (const char * name, bool defaultValue)
+{
+  return globals->get_props()->getBoolValue(name, defaultValue);
+}
+
+int
+fgGetInt (const char * name, int defaultValue)
+{
+  return globals->get_props()->getIntValue(name, defaultValue);
+}
+
+int
+fgGetLong (const char * name, long defaultValue)
+{
+  return globals->get_props()->getLongValue(name, defaultValue);
+}
+
+float
+fgGetFloat (const char * name, float defaultValue)
+{
+  return globals->get_props()->getFloatValue(name, defaultValue);
+}
+
+double
+fgGetDouble (const char * name, double defaultValue)
+{
+  return globals->get_props()->getDoubleValue(name, defaultValue);
+}
+
+const char *
+fgGetString (const char * name, const char * defaultValue)
+{
+  return globals->get_props()->getStringValue(name, defaultValue);
+}
+
+bool
+fgSetBool (const char * name, bool val)
+{
+  return globals->get_props()->setBoolValue(name, val);
+}
+
+bool
+fgSetInt (const char * name, int val)
+{
+  return globals->get_props()->setIntValue(name, val);
+}
+
+bool
+fgSetLong (const char * name, long val)
+{
+  return globals->get_props()->setLongValue(name, val);
+}
+
+bool
+fgSetFloat (const char * name, float val)
+{
+  return globals->get_props()->setFloatValue(name, val);
+}
+
+bool
+fgSetDouble (const char * name, double val)
+{
+  return globals->get_props()->setDoubleValue(name, val);
+}
+
+bool
+fgSetString (const char * name, const char * val)
+{
+  return globals->get_props()->setStringValue(name, val);
+}
+
+void
+fgSetArchivable (const char * name, bool state)
+{
+  SGPropertyNode * node = globals->get_props()->getNode(name);
+  if (node == 0)
+    SG_LOG(SG_GENERAL, SG_ALERT,
+          "Attempt to set archive flag for non-existant property "
+          << name);
+  else
+    node->setAttribute(SGPropertyNode::ARCHIVE, state);
+}
+
+void
+fgSetReadable (const char * name, bool state)
+{
+  SGPropertyNode * node = globals->get_props()->getNode(name);
+  if (node == 0)
+    SG_LOG(SG_GENERAL, SG_ALERT,
+          "Attempt to set read flag for non-existant property "
+          << name);
+  else
+    node->setAttribute(SGPropertyNode::READ, state);
+}
+
+void
+fgSetWritable (const char * name, bool state)
+{
+  SGPropertyNode * node = globals->get_props()->getNode(name);
+  if (node == 0)
+    SG_LOG(SG_GENERAL, SG_ALERT,
+          "Attempt to set write flag for non-existant property "
+          << name);
+  else
+    node->setAttribute(SGPropertyNode::WRITE, state);
+}
+
+void
+fgUntie (const char * name)
+{
+  if (!globals->get_props()->untie(name))
+    SG_LOG(SG_GENERAL, SG_WARN, "Failed to untie property " << name);
+}
+
+
+
 \f
 ////////////////////////////////////////////////////////////////////////
 // Implementation of FGCondition.
@@ -701,7 +812,7 @@ FGCondition::~FGCondition ()
 // Implementation of FGPropertyCondition.
 ////////////////////////////////////////////////////////////////////////
 
-FGPropertyCondition::FGPropertyCondition (const string &propname)
+FGPropertyCondition::FGPropertyCondition (const char * propname)
   : _node(fgGetNode(propname, true))
 {
 }
@@ -915,13 +1026,13 @@ FGComparisonCondition::test () const
 }
 
 void
-FGComparisonCondition::setLeftProperty (const string &propname)
+FGComparisonCondition::setLeftProperty (const char * propname)
 {
   _left_property = fgGetNode(propname, true);
 }
 
 void
-FGComparisonCondition::setRightProperty (const string &propname)
+FGComparisonCondition::setRightProperty (const char * propname)
 {
   delete _right_value;
   _right_value = 0;
index e53cc3bf46c5fdfb7bec42ac49a181b0abc46d8a..6e62ffe7dc26c9f7c909cfc7ad604b8fdbeef2c9 100644 (file)
@@ -69,7 +69,6 @@ extern bool fgLoadFlight (istream &input);
 // Convenience functions for getting property values.
 ////////////////////////////////////////////////////////////////////////
 
-
 /**
  * Get a property node.
  *
@@ -77,11 +76,7 @@ extern bool fgLoadFlight (istream &input);
  * @param create true to create the node if it doesn't exist.
  * @return The node, or 0 if none exists and none was created.
  */
-inline SGPropertyNode * 
-fgGetNode (const string &path, bool create = false)
-{
-  return globals->get_props()->getNode(path, create);
-}
+extern SGPropertyNode * fgGetNode (const char * path, bool create = false);
 
 
 /**
@@ -98,11 +93,8 @@ fgGetNode (const string &path, bool create = false)
  * @param create true to create the node if it doesn't exist.
  * @return The node, or 0 if none exists and none was created.
  */
-inline SGPropertyNode * 
-fgGetNode (const string &path, int index, bool create = false)
-{
-  return globals->get_props()->getNode(path, index, create);
-}
+extern SGPropertyNode * fgGetNode (const char * path,
+                                  int index, bool create = false);
 
 
 /**
@@ -111,11 +103,7 @@ fgGetNode (const string &path, int index, bool create = false)
  * @param path The path of the node, relative to root.
  * @return true if the node exists, false otherwise.
  */
-inline bool
-fgHasNode (const string &path)
-{
-  return (fgGetNode(path, false) != 0);
-}
+extern bool fgHasNode (const char * path);
 
 
 /**
@@ -132,10 +120,7 @@ fgHasNode (const string &path)
  *        does not exist.
  * @return The property's value as a bool, or the default value provided.
  */
-inline bool fgGetBool (const string &name, bool defaultValue = false)
-{
-  return globals->get_props()->getBoolValue(name, defaultValue);
-}
+extern bool fgGetBool (const char * name, bool defaultValue = false);
 
 
 /**
@@ -152,10 +137,7 @@ inline bool fgGetBool (const string &name, bool defaultValue = false)
  *        does not exist.
  * @return The property's value as an int, or the default value provided.
  */
-inline int fgGetInt (const string &name, int defaultValue = 0)
-{
-  return globals->get_props()->getIntValue(name, defaultValue);
-}
+extern int fgGetInt (const char * name, int defaultValue = 0);
 
 
 /**
@@ -172,10 +154,7 @@ inline int fgGetInt (const string &name, int defaultValue = 0)
  *        does not exist.
  * @return The property's value as a long, or the default value provided.
  */
-inline int fgGetLong (const string &name, long defaultValue = 0L)
-{
-  return globals->get_props()->getLongValue(name, defaultValue);
-}
+extern int fgGetLong (const char * name, long defaultValue = 0L);
 
 
 /**
@@ -192,10 +171,7 @@ inline int fgGetLong (const string &name, long defaultValue = 0L)
  *        does not exist.
  * @return The property's value as a float, or the default value provided.
  */
-inline float fgGetFloat (const string &name, float defaultValue = 0.0)
-{
-  return globals->get_props()->getFloatValue(name, defaultValue);
-}
+extern float fgGetFloat (const char * name, float defaultValue = 0.0);
 
 
 /**
@@ -212,10 +188,7 @@ inline float fgGetFloat (const string &name, float defaultValue = 0.0)
  *        does not exist.
  * @return The property's value as a double, or the default value provided.
  */
-inline double fgGetDouble (const string &name, double defaultValue = 0.0)
-{
-  return globals->get_props()->getDoubleValue(name, defaultValue);
-}
+extern double fgGetDouble (const char * name, double defaultValue = 0.0);
 
 
 /**
@@ -232,10 +205,8 @@ inline double fgGetDouble (const string &name, double defaultValue = 0.0)
  *        does not exist.
  * @return The property's value as a string, or the default value provided.
  */
-inline string fgGetString (const string &name, string defaultValue = "")
-{
-  return globals->get_props()->getStringValue(name, defaultValue);
-}
+extern const char * fgGetString (const char * name,
+                                const char * defaultValue = "");
 
 
 /**
@@ -251,10 +222,7 @@ inline string fgGetString (const string &name, string defaultValue = "")
  * @param val The new value for the property.
  * @return true if the assignment succeeded, false otherwise.
  */
-inline bool fgSetBool (const string &name, bool val)
-{
-  return globals->get_props()->setBoolValue(name, val);
-}
+extern bool fgSetBool (const char * name, bool val);
 
 
 /**
@@ -270,10 +238,7 @@ inline bool fgSetBool (const string &name, bool val)
  * @param val The new value for the property.
  * @return true if the assignment succeeded, false otherwise.
  */
-inline bool fgSetInt (const string &name, int val)
-{
-  return globals->get_props()->setIntValue(name, val);
-}
+extern bool fgSetInt (const char * name, int val);
 
 
 /**
@@ -289,10 +254,7 @@ inline bool fgSetInt (const string &name, int val)
  * @param val The new value for the property.
  * @return true if the assignment succeeded, false otherwise.
  */
-inline bool fgSetLong (const string &name, long val)
-{
-  return globals->get_props()->setLongValue(name, val);
-}
+extern bool fgSetLong (const char * name, long val);
 
 
 /**
@@ -308,10 +270,7 @@ inline bool fgSetLong (const string &name, long val)
  * @param val The new value for the property.
  * @return true if the assignment succeeded, false otherwise.
  */
-inline bool fgSetFloat (const string &name, float val)
-{
-  return globals->get_props()->setFloatValue(name, val);
-}
+extern bool fgSetFloat (const char * name, float val);
 
 
 /**
@@ -327,10 +286,7 @@ inline bool fgSetFloat (const string &name, float val)
  * @param val The new value for the property.
  * @return true if the assignment succeeded, false otherwise.
  */
-inline bool fgSetDouble (const string &name, double val)
-{
-  return globals->get_props()->setDoubleValue(name, val);
-}
+extern bool fgSetDouble (const char * name, double val);
 
 
 /**
@@ -346,10 +302,7 @@ inline bool fgSetDouble (const string &name, double val)
  * @param val The new value for the property.
  * @return true if the assignment succeeded, false otherwise.
  */
-inline bool fgSetString (const string &name, const string &val)
-{
-  return globals->get_props()->setStringValue(name, val);
-}
+extern bool fgSetString (const char * name, const char * val);
 
 
 \f
@@ -370,17 +323,7 @@ inline bool fgSetString (const string &name, const string &val)
  * @param name The property name.
  * @param state The state of the archive attribute (defaults to true).
  */
-inline void
-fgSetArchivable (const string &name, bool state = true)
-{
-  SGPropertyNode * node = globals->get_props()->getNode(name);
-  if (node == 0)
-    SG_LOG(SG_GENERAL, SG_ALERT,
-          "Attempt to set archive flag for non-existant property "
-          << name);
-  else
-    node->setAttribute(SGPropertyNode::ARCHIVE, state);
-}
+extern void fgSetArchivable (const char * name, bool state = true);
 
 
 /**
@@ -395,17 +338,7 @@ fgSetArchivable (const string &name, bool state = true)
  * @param name The property name.
  * @param state The state of the read attribute (defaults to true).
  */
-inline void
-fgSetReadable (const string &name, bool state = true)
-{
-  SGPropertyNode * node = globals->get_props()->getNode(name);
-  if (node == 0)
-    SG_LOG(SG_GENERAL, SG_ALERT,
-          "Attempt to set read flag for non-existant property "
-          << name);
-  else
-    node->setAttribute(SGPropertyNode::READ, state);
-}
+extern void fgSetReadable (const char * name, bool state = true);
 
 
 /**
@@ -420,17 +353,7 @@ fgSetReadable (const string &name, bool state = true)
  * @param name The property name.
  * @param state The state of the write attribute (defaults to true).
  */
-inline void
-fgSetWritable (const string &name, bool state = true)
-{
-  SGPropertyNode * node = globals->get_props()->getNode(name);
-  if (node == 0)
-    SG_LOG(SG_GENERAL, SG_ALERT,
-          "Attempt to set write flag for non-existant property "
-          << name);
-  else
-    node->setAttribute(SGPropertyNode::WRITE, state);
-}
+extern void fgSetWritable (const char * name, bool state = true);
 
 
 \f
@@ -445,12 +368,7 @@ fgSetWritable (const string &name, bool state = true)
  * Classes should use this function to release control of any
  * properties they are managing.
  */
-inline void
-fgUntie (const string &name)
-{
-  if (!globals->get_props()->untie(name))
-    SG_LOG(SG_GENERAL, SG_WARN, "Failed to untie property " << name);
-}
+extern void fgUntie (const char * name);
 
 
 /**
@@ -471,7 +389,7 @@ fgUntie (const string &name)
  */
 template <class V>
 inline void
-fgTie (const string &name, V (*getter)(), void (*setter)(V) = 0,
+fgTie (const char * name, V (*getter)(), void (*setter)(V) = 0,
        bool useDefault = true)
 {
   if (!globals->get_props()->tie(name, SGRawValueFunctions<V>(getter, setter),
@@ -501,7 +419,7 @@ fgTie (const string &name, V (*getter)(), void (*setter)(V) = 0,
  */
 template <class V>
 inline void
-fgTie (const string &name, int index, V (*getter)(int),
+fgTie (const char * name, int index, V (*getter)(int),
        void (*setter)(int, V) = 0, bool useDefault = true)
 {
   if (!globals->get_props()->tie(name,
@@ -535,7 +453,7 @@ fgTie (const string &name, int index, V (*getter)(int),
  */
 template <class T, class V>
 inline void
-fgTie (const string &name, T * obj, V (T::*getter)() const,
+fgTie (const char * name, T * obj, V (T::*getter)() const,
        void (T::*setter)(V) = 0, bool useDefault = true)
 {
   if (!globals->get_props()->tie(name,
@@ -567,7 +485,7 @@ fgTie (const string &name, T * obj, V (T::*getter)() const,
  */
 template <class T, class V>
 inline void 
-fgTie (const string &name, T * obj, int index,
+fgTie (const char * name, T * obj, int index,
        V (T::*getter)(int) const, void (T::*setter)(int, V) = 0,
        bool useDefault = true)
 {
@@ -614,7 +532,7 @@ public:
 class FGPropertyCondition : public FGCondition
 {
 public:
-  FGPropertyCondition (const string &propname);
+  FGPropertyCondition (const char * propname);
   virtual ~FGPropertyCondition ();
   virtual bool test () const { return _node->getBoolValue(); }
 private:
@@ -691,8 +609,8 @@ public:
   FGComparisonCondition (Type type, bool reverse = false);
   virtual ~FGComparisonCondition ();
   virtual bool test () const;
-  virtual void setLeftProperty (const string &propname);
-  virtual void setRightProperty (const string &propname);
+  virtual void setLeftProperty (const char * propname);
+  virtual void setRightProperty (const char * propname);
                                // will make a local copy
   virtual void setRightValue (const SGPropertyNode * value);
 private:
index 1a350a6f773325845547bf3f5e049bf8a8f22e59..a9bd8003e247e879b0a61b6ae07f0d8371617ca7 100644 (file)
@@ -1405,7 +1405,7 @@ int mainLoop( int argc, char **argv ) {
 
     // set current_options lon/lat if an airport id is specified
     // cout << "3. airport_id = " << fgGetString("/sim/startup/airport-id") << endl;
-    if ( fgGetString("/sim/startup/airport-id").length() ) {
+    if ( fgGetString("/sim/startup/airport-id")[0] != '\0' ) {
        // fgSetPosFromAirportID( fgGetString("/sim/startup/airport-id") );
        fgSetPosFromAirportIDandHdg( fgGetString("/sim/startup/airport-id"),
                                     fgGetDouble("/orientation/heading-deg") );
index 2b0122f2eae8a0297f22316b505ce539d6beebbd..5ae407cd92e11c658a577116e7f43f433f4f1580 100644 (file)
@@ -574,13 +574,13 @@ parse_option (const string& arg)
     } else if ( arg == "--enable-anti-alias-hud" ) {
         fgSetBool("/sim/hud/antialiased", true);
     } else if ( arg.find( "--control=") == 0 ) {
-        fgSetString("/sim/control-mode", arg.substr(10));
+        fgSetString("/sim/control-mode", arg.substr(10).c_str());
     } else if ( arg == "--disable-auto-coordination" ) {
         fgSetBool("/sim/auto-coordination", false);
     } else if ( arg == "--enable-auto-coordination" ) {
        fgSetBool("/sim/auto-coordination", true);
     } else if ( arg.find( "--browser-app=") == 0 ) {
-       fgSetString("/sim/startup/browser-app", arg.substr(14));
+       fgSetString("/sim/startup/browser-app", arg.substr(14).c_str());
     } else if ( arg == "--disable-hud" ) {
        fgSetBool("/sim/hud/visibility", false);
     } else if ( arg == "--enable-hud" ) {
@@ -595,7 +595,7 @@ parse_option (const string& arg)
        fgSetBool("/sim/sound/audible", true);
     } else if ( arg.find( "--airport-id=") == 0 ) {
                                // NB: changed property name!!!
-       fgSetString("/sim/startup/airport-id", arg.substr(13));
+       fgSetString("/sim/startup/airport-id", arg.substr(13).c_str());
     } else if ( arg.find( "--offset-distance=") == 0 ) {
        fgSetDouble("/sim/startup/offset-distance", atof(arg.substr(18)));
     } else if ( arg.find( "--offset-azimuth=") == 0 ) {
@@ -679,11 +679,11 @@ parse_option (const string& arg)
     } else if ( arg.find( "--fg-scenery=" ) == 0 ) {
         globals->set_fg_scenery(arg.substr( 13 ));
     } else if ( arg.find( "--fdm=" ) == 0 ) {
-       fgSetString("/sim/flight-model", arg.substr(6));
+       fgSetString("/sim/flight-model", arg.substr(6).c_str());
     } else if ( arg.find( "--aero=" ) == 0 ) {
-       fgSetString("/sim/aero", arg.substr(7));
+       fgSetString("/sim/aero", arg.substr(7).c_str());
     } else if ( arg.find( "--aircraft-dir=" ) == 0 ) {
-        fgSetString("/sim/aircraft-dir", arg.substr(15));
+        fgSetString("/sim/aircraft-dir", arg.substr(15).c_str());
     } else if ( arg.find( "--model-hz=" ) == 0 ) {
        fgSetInt("/sim/model-hz", atoi(arg.substr(11)));
     } else if ( arg.find( "--speed=" ) == 0 ) {
@@ -844,7 +844,7 @@ parse_option (const string& arg)
         fgSetBool("/sim/hud/net-display", true);
        net_hud_display = 1;    // FIXME
     } else if ( arg.find( "--net-id=") == 0 ) {
-        fgSetString("sim/networking/call-sign", arg.substr(9));
+        fgSetString("sim/networking/call-sign", arg.substr(9).c_str());
 #endif
     } else if ( arg.find( "--prop:" ) == 0 ) {
         string assign = arg.substr(7);
@@ -855,17 +855,19 @@ parse_option (const string& arg)
        }
        string name = assign.substr(0, pos);
        string value = assign.substr(pos + 1);
-       fgSetString(name.c_str(), value);
+       fgSetString(name.c_str(), value.c_str());
        // SG_LOG(SG_GENERAL, SG_INFO, "Setting default value of property "
        //        << name << " to \"" << value << '"');
     } else if ( arg.find("--trace-read=") == 0) {
         string name = arg.substr(13);
        SG_LOG(SG_GENERAL, SG_INFO, "Tracing reads for property " << name);
-       fgGetNode(name, true)->setAttribute(SGPropertyNode::TRACE_READ, true);
+       fgGetNode(name.c_str(), true)
+         ->setAttribute(SGPropertyNode::TRACE_READ, true);
     } else if ( arg.find("--trace-write=") == 0) {
         string name = arg.substr(14);
        SG_LOG(SG_GENERAL, SG_INFO, "Tracing writes for property " << name);
-       fgGetNode(name, true)->setAttribute(SGPropertyNode::TRACE_WRITE, true);
+       fgGetNode(name.c_str(), true)
+         ->setAttribute(SGPropertyNode::TRACE_WRITE, true);
     } else if ( arg.find( "--view-offset=" ) == 0 ) {
         // $$$ begin - added VS Renganathan, 14 Oct 2K
         // for multi-window outside window imagery
index 5cc4219262bb69ab99500da86d0c3cfe71e02550..da2a5fd87f716d67b52d250ad6840d6e57d373e9 100644 (file)
@@ -133,7 +133,7 @@ void HttpdChannel::foundTerminator (void) {
                     string b = arg.substr( apos + 1 );
                     printf("    a = %s  b = %s\n", a.c_str(), b.c_str() );
                     if ( a == "value" ) {
-                        fgSetString( request, urlDecode(b) );
+                        fgSetString( request.c_str(), urlDecode(b).c_str() );
                     } 
                 }
             }
@@ -141,7 +141,7 @@ void HttpdChannel::foundTerminator (void) {
             request = urlDecode(request);
        }
 
-        node = globals->get_props()->getNode(request);
+        node = globals->get_props()->getNode(request.c_str());
 
         string response = "";
         response += "<HTML LANG=\"en\">";
@@ -179,7 +179,7 @@ void HttpdChannel::foundTerminator (void) {
             for (int i = 0; i < node->nChildren(); i++) {
                 SGPropertyNode *child = node->getChild(i);
                 string name = child->getName();
-                if ( node->getChild(name, 1) ) {
+                if ( node->getChild(name.c_str(), 1) ) {
                     char buf[16];
                     sprintf(buf, "[%d]", child->getIndex());
                     name += buf;
@@ -197,7 +197,7 @@ void HttpdChannel::foundTerminator (void) {
                     line += "</A></B>";
                     line += "/<BR>";
                 } else {
-                    string value = node->getStringValue ( name, "" );
+                    string value = node->getStringValue ( name.c_str(), "" );
                     line += "<B>";
                     line += name;
                     line += "</B> <A HREF=\"";
index bb5c5e57a8c8482f3684bc7259fab6c98cd14d9f..3dcc682002f227bee62ce743f1476794fa40c711 100644 (file)
@@ -130,15 +130,15 @@ bool FGProps::process_command( const char *cmd ) {
 
     string command = tokens[0];
 
-    SGPropertyNode * node = globals->get_props()->getNode(path);
+    SGPropertyNode * node = globals->get_props()->getNode(path.c_str());
 
     if ( command == "ls" ) {
        SGPropertyNode * dir = node;
        if ( tokens.size() > 2 ) {
            if ( tokens[1][0] == '/' ) {
-               dir = globals->get_props()->getNode(tokens[1]);
+               dir = globals->get_props()->getNode(tokens[1].c_str());
            } else {
-               dir = globals->get_props()->getNode(path + "/" + tokens[1]);
+               dir = globals->get_props()->getNode((path + "/" + tokens[1]).c_str());
            }
            if ( dir == 0 ) {
                tokens[1] = "ERR Node \"" + tokens[1] + "\" not found.\n";
@@ -151,7 +151,7 @@ bool FGProps::process_command( const char *cmd ) {
            SGPropertyNode * child = dir->getChild(i);
            string name = child->getName();
            string line = name;
-           if ( dir->getChild(name, 1) ) {
+           if ( dir->getChild(name.c_str(), 1) ) {
                char buf[16];
                sprintf(buf, "[%d]", child->getIndex());
                line += buf;
@@ -160,9 +160,9 @@ bool FGProps::process_command( const char *cmd ) {
                line += "/";
            } else {
                if ( mode == PROMPT ) {
-                   string value = dir->getStringValue ( name, "" );
+                   string value = dir->getStringValue ( name.c_str(), "" );
                    line += " =\t'" + value + "'\t(";
-                   line += getValueTypeString( dir->getNode( name ) );
+                   line += getValueTypeString( dir->getNode( name.c_str() ) );
                    line += ")";
                }
            }
@@ -176,7 +176,7 @@ bool FGProps::process_command( const char *cmd ) {
            io->writestring( buf.str() );
        }
        else {
-           SGPropertyNode *child = node->getNode(tokens[1]);
+           SGPropertyNode *child = node->getNode(tokens[1].c_str());
            if ( child ) {
                writeProperties ( buf, child );
                io->writestring( buf.str() );
@@ -192,7 +192,7 @@ bool FGProps::process_command( const char *cmd ) {
         if ( tokens.size() <= 1 ) {
            // do nothing
        } else {
-           SGPropertyNode *child = node->getNode(tokens[1]);
+           SGPropertyNode *child = node->getNode(tokens[1].c_str());
            if ( child ) {
                node = child;
                path = node->getPath();
@@ -213,13 +213,13 @@ bool FGProps::process_command( const char *cmd ) {
            // do nothing
        } else {
            string tmp; 
-           string value = node->getStringValue ( tokens[1], "" );
+           string value = node->getStringValue ( tokens[1].c_str(), "" );
            if ( mode == PROMPT ) {
                //string ttt = "debug = '" + tokens[1] + "'\n";
                //io->writestring( ttt.c_str() );
 
                tmp = tokens[1] + " = '" + value + "' (";
-               tmp += getValueTypeString( node->getNode( tokens[1] ) );
+               tmp += getValueTypeString( node->getNode( tokens[1].c_str() ) );
                tmp += ")\n";
            } else {
                tmp = value + "\n";
@@ -230,13 +230,13 @@ bool FGProps::process_command( const char *cmd ) {
         if ( tokens.size() <= 2 ) {
            // do nothing
        } else {
-           node->getNode( tokens[1], true )->setStringValue(tokens[2]);
+           node->getNode( tokens[1].c_str(), true )->setStringValue(tokens[2].c_str());
 
            // now fetch and write out the new value as confirmation
            // of the change
-           string value = node->getStringValue ( tokens[1], "" );
+           string value = node->getStringValue ( tokens[1].c_str(), "" );
            string tmp = tokens[1] + " = '" + value + "' (";
-           tmp += getValueTypeString( node->getNode( tokens[1] ) );
+           tmp += getValueTypeString( node->getNode( tokens[1].c_str() ) );
            tmp += ")\n";
  
            io->writestring( tmp.c_str() );
index ce4e1bbf3ba3e2fb2e1917a9ceb4ca2c09e41fdc..263f9137125fdb7568f0e5c4cf9a20b588c3611a 100644 (file)
@@ -82,7 +82,7 @@ char *fg_net_init( ssgRoot *orig_scene ){
  // We enable display of netinfos only if user wishes it via cmd-line param
  net_hud_display = (net_hud_display == 0) ? 0 : 1; 
  // Get pilot's name from options, can be modified at runtime via menu
- net_callsign = (char *)(fgGetString("/sim/networking/call-sign").c_str());
+ net_callsign = (char *)(fgGetString("/sim/networking/call-sign"));
  // Disable Blast Mode -1 = Disable, 0 = Enable  
  net_blast_toggle = -1;
  // We start unregistered, we reg. later via menu to fgd 
index 3b31ffe4e876afdee3db24c9bf45aaf9f5e813b6..11be5cf57312ceb6b91d314a70dfb72cfa3086a2 100644 (file)
@@ -82,13 +82,15 @@ bool FGMaterialLib::load( const string& mpath ) {
   int nMaterials = materials.nChildren();
   for (int i = 0; i < nMaterials; i++) {
     const SGPropertyNode * node = materials.getChild(i);
-    if (node->getName() == "material") {
+    if (string(node->getName()) == "material") {
       FGNewMat * m = new FGNewMat(node);
 
       vector<const SGPropertyNode *>names = node->getChildren("name");
       for (unsigned int j = 0; j < names.size(); j++) {
+       string name = names[j]->getStringValue();
        m->ref();
-       matlib[names[j]->getStringValue()] = m;
+       std::cerr << "Material " << name << endl;
+       matlib[name] = m;
        SG_LOG( SG_TERRAIN, SG_INFO, "  Loading material "
                << names[j]->getStringValue());
       }
index 0be353279e3b2b58dc50e33d74fe87f48c91a70a..a58bd4abacffff17b12165f608c0d0f5352d1d15 100644 (file)
@@ -51,15 +51,16 @@ FGFX::init()
    const SGPropertyNode * node = fgGetNode("/sim/sound", true);
    int i;
 
+   string path_str = node->getStringValue("path");
    SGPath path( globals->get_fg_root() );
-   if (node->getStringValue("path") == "") {
-      SG_LOG(SG_GENERAL, SG_ALERT, "Incorect path in configuration file.");
+   if (path_str == "") {
+      SG_LOG(SG_GENERAL, SG_ALERT, "Incorrect path in configuration file.");
       return;
    }
 
-   path.append(node->getStringValue("path"));
+   path.append(path_str.c_str());
    SG_LOG(SG_GENERAL, SG_INFO, "Reading Instrument " << node->getName()
-    << " from " << path.str());
+         << " from " << path.str());
 
    SGPropertyNode root;
    try {
index 318e05dec2de672ccd1214c07468d7a2676bf738..626a2ce2bf3dacb98c5dd14c460890917cde03c5 100644 (file)
@@ -99,29 +99,27 @@ FGSound::init()
    SG_LOG(SG_GENERAL, SG_INFO,
     "Loading sound information for: " << _name );
 
-   if (_node->getStringValue("mode") == "looped") {
+   string mode_str = _node->getStringValue("mode");
+   if (mode_str == "looped") {
        _mode = FGSound::LOOPED;
    } else {
       _mode = FGSound::ONCE;
-      if (_node->getStringValue("mode") != (string)"once")
+      if (mode_str != (string)"once")
         SG_LOG( SG_GENERAL, SG_INFO, "Unknown sound mode, default to 'once'");
    }
 
-   if (_node->getStringValue("type") == "flipflop") {
+   string type_str = _node->getStringValue("type");
+   if (type_str == "flipflop") {
       _type = FGSound::FLIPFLOP;
-
-   } else if (_node->getStringValue("type") == "inverted") {
+   } else if (type_str== "inverted") {
       _type = FGSound::INVERTED;
-
-   } else if (_node->getStringValue("type") == "raise") {
+   } else if (type_str == "raise") {
       _type = FGSound::RAISE;
-
-   } else if (_node->getStringValue("type") == "fall") {
+   } else if (type_str == "fall") {
       _type = FGSound::FALL;
-
    } else {
       _type = FGSound::LEVEL;
-      if (_node->getStringValue("type") != (string)"level")
+      if (type_str != (string)"level")
         SG_LOG( SG_GENERAL, SG_INFO, "Unknown sound type, default to 'level'");
    }