namespace JSBSim {
bool FGPropertyManager::suppress_warning = true;
-std::vector<std::string> FGPropertyManager::tied_properties;
+std::vector<SGPropertyNode_ptr> FGPropertyManager::tied_properties;
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
void FGPropertyManager::Unbind(void)
{
- vector<string>::iterator it;
+ vector<SGPropertyNode_ptr>::iterator it;
+
for (it = tied_properties.begin();it < tied_properties.end();it++)
- {
- Untie(*it);
- }
+ (*it)->untie();
+
tied_properties.clear();
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
bool FGPropertyManager::HasNode (const string &path)
{
// Checking if a node exists shouldn't write a warning if it doesn't exist
void FGPropertyManager::Tie (const string &name, bool *pointer, bool useDefault)
{
- if (!tie(name.c_str(), SGRawValuePointer<bool>(pointer), useDefault))
+ SGPropertyNode* property = getNode(name.c_str(), true);
+ if (!property) {
+ cerr << "Could not get or create property " << name << endl;
+ return;
+ }
+
+ if (!property->tie(SGRawValuePointer<bool>(pointer), useDefault))
cerr << "Failed to tie property " << name << " to a pointer" << endl;
else {
- tied_properties.push_back(name);
- if (debug_lvl & 0x20) std::cout << name << std::endl;
+ tied_properties.push_back(property);
+ if (debug_lvl & 0x20) cout << name << endl;
}
}
void FGPropertyManager::Tie (const string &name, int *pointer,
bool useDefault )
{
- if (!tie(name.c_str(), SGRawValuePointer<int>(pointer), useDefault))
+ SGPropertyNode* property = getNode(name.c_str(), true);
+ if (!property) {
+ cerr << "Could not get or create property " << name << endl;
+ return;
+ }
+
+ if (!property->tie(SGRawValuePointer<int>(pointer), useDefault))
cerr << "Failed to tie property " << name << " to a pointer" << endl;
else {
- tied_properties.push_back(name);
- if (debug_lvl & 0x20) std::cout << name << std::endl;
+ tied_properties.push_back(property);
+ if (debug_lvl & 0x20) cout << name << endl;
}
}
void FGPropertyManager::Tie (const string &name, long *pointer,
bool useDefault )
{
- if (!tie(name.c_str(), SGRawValuePointer<long>(pointer), useDefault))
+ SGPropertyNode* property = getNode(name.c_str(), true);
+ if (!property) {
+ cerr << "Could not get or create property " << name << endl;
+ return;
+ }
+
+ if (!property->tie(SGRawValuePointer<long>(pointer), useDefault))
cerr << "Failed to tie property " << name << " to a pointer" << endl;
else {
- tied_properties.push_back(name);
- if (debug_lvl & 0x20) std::cout << name << std::endl;
+ tied_properties.push_back(property);
+ if (debug_lvl & 0x20) cout << name << endl;
}
}
void FGPropertyManager::Tie (const string &name, float *pointer,
bool useDefault )
{
- if (!tie(name.c_str(), SGRawValuePointer<float>(pointer), useDefault))
+ SGPropertyNode* property = getNode(name.c_str(), true);
+ if (!property) {
+ cerr << "Could not get or create property " << name << endl;
+ return;
+ }
+
+ if (!property->tie(SGRawValuePointer<float>(pointer), useDefault))
cerr << "Failed to tie property " << name << " to a pointer" << endl;
else {
- tied_properties.push_back(name);
- if (debug_lvl & 0x20) std::cout << name << std::endl;
+ tied_properties.push_back(property);
+ if (debug_lvl & 0x20) cout << name << endl;
}
}
void FGPropertyManager::Tie (const string &name, double *pointer, bool useDefault)
{
- if (!tie(name.c_str(), SGRawValuePointer<double>(pointer), useDefault))
+ SGPropertyNode* property = getNode(name.c_str(), true);
+ if (!property) {
+ cerr << "Could not get or create property " << name << endl;
+ return;
+ }
+
+ if (!property->tie(SGRawValuePointer<double>(pointer), useDefault))
cerr << "Failed to tie property " << name << " to a pointer" << endl;
else {
- tied_properties.push_back(name);
- if (debug_lvl & 0x20) std::cout << name << std::endl;
+ tied_properties.push_back(property);
+ if (debug_lvl & 0x20) cout << name << endl;
}
}