#include <math.h>
+#include <cstdlib>
+
#include <vector>
-SG_USING_STD(vector);
+using std::vector;
#include <simgear/debug/logstream.hxx>
speed);
}
-
-void
-fgExit (int status)
-{
-#ifdef OSG_LIBRARY_STATIC
- osgDB::Registry::instance( true);
-#endif
-
- SG_LOG(SG_GENERAL, SG_INFO, "Exiting FlightGear with status " << status);
- exit(status);
-}
-
-
// Originally written by Alex Perry.
double
fgGetLowPass (double current, double target, double timeratio)
string
-fgUnescape(const char *s)
+fgUnescape (const char *s)
{
string r;
while (*s) {
} else if (*s == 'f') {
r += '\f';
} else if (*s == 'a') {
- ;
+ r += '\a';
} else if (*s == 'b') {
- ;
+ r += '\b';
} else if (*s == 'x') {
if (!*++s)
break;
return r;
}
+
+// Write out path to validation node and read it back in. A Nasal
+// listener is supposed to replace the path with a validated version
+// or an empty string otherwise.
+const char *fgValidatePath (const char *str, bool write)
+{
+ static SGPropertyNode_ptr r, w;
+ if (!r) {
+ r = fgGetNode("/sim/paths/validate/read", true);
+ r->setAttribute(SGPropertyNode::READ, true);
+ r->setAttribute(SGPropertyNode::WRITE, true);
+
+ w = fgGetNode("/sim/paths/validate/write", true);
+ w->setAttribute(SGPropertyNode::READ, true);
+ w->setAttribute(SGPropertyNode::WRITE, true);
+ }
+ SGPropertyNode *prop = write ? w : r;
+ prop->setStringValue(str);
+ const char *result = prop->getStringValue();
+ return result[0] ? result : 0;
+}
+
// end of util.cxx