#include <simgear/misc/props.hxx>
#include "FGPropertyManager.h"
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+DEFINITIONS
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FORWARD DECLARATIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*/
+namespace JSBSim {
+
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
string FGPropertyManager::mkPropertyName(string name, bool lowercase) {
- for(unsigned i=0;i<name.length();i++) {
+ /* do this two pass to avoid problems with characters getting skipped
+ because the index changed */
+ unsigned i;
+ for(i=0;i<name.length();i++) {
if( lowercase && isupper(name[i]) )
name[i]=tolower(name[i]);
else if( isspace(name[i]) )
name[i]='-';
}
+ for(i=0;i<name.length();i++) {
+ if( name[i] == '/' )
+ name.erase(i,1);
+ }
+
return name;
}
-
+
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FGPropertyManager*
return string( getName() );
}
+//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+string FGPropertyManager::GetFullyQualifiedName(void) {
+ vector<string> stack;
+ stack.push_back( getDisplayName(true) );
+ SGPropertyNode* tmpn=getParent();
+ bool atroot=false;
+ while( !atroot ) {
+ stack.push_back( tmpn->getDisplayName(true) );
+ if( !tmpn->getParent() )
+ atroot=true;
+ else
+ tmpn=tmpn->getParent();
+ }
+
+ string fqname="";
+ for(unsigned i=stack.size()-1;i>0;i--) {
+ fqname+= stack[i];
+ fqname+= "/";
+ }
+ fqname+= stack[0];
+ return fqname;
+
+}
+
+
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
bool FGPropertyManager::GetBool (const string &name, bool defaultValue)
cout <<
"Failed to tie property " << name << " to a pointer" << endl;
}
+
+} // namespace JSBSim