#include <cstdlib>
#include <vector>
-SG_USING_STD(vector);
+using std::vector;
#include <simgear/debug/logstream.hxx>
string
-fgUnescape(const char *s)
+fgUnescape (const char *s)
{
string r;
while (*s) {
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