%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGSwitch.h"
+#include <iostream>
+#include <cstdlib>
+
+using namespace std;
namespace JSBSim {
-static const char *IdSrc = "$Id$";
+static const char *IdSrc = "$Id: FGSwitch.cpp,v 1.22 2011/06/17 12:12:19 jberndt Exp $";
static const char *IdHdr = ID_SWITCH;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
}
for (unsigned int i=0; i<test_element->GetNumDataLines(); i++) {
string input_data = test_element->GetDataLine(i);
- while (input_data[0] <= 32) {
- input_data = input_data.erase(0,1);
- if (input_data.size() <= 1) break;
- }
if (input_data.size() <= 1) {
// Make sure there are no bad data lines that consist solely of whitespace
cerr << fgred << " Bad data line in switch component: " << Name << reset << endl;
tests.push_back(current_test);
}
- if (test_element->GetName() != "output"
- && test_element->GetName() != "description") { // this is not an output element
+ string el_name = test_element->GetName();
+ if ( el_name != "output"
+ && el_name != "description"
+ && el_name != "delay" )
+ {
value = test_element->GetAttributeValue("value");
if (value.empty()) {
cerr << "No VALUE supplied for switch component: " << Name << endl;
} else {
current_test->sign = 1.0;
}
- current_test->OutputProp = PropertyManager->GetNode(value);
+ FGPropertyManager *node = PropertyManager->GetNode(value, false);
+ if (node) {
+ current_test->OutputProp = new FGPropertyValue(node);
+ } else {
+ current_test->OutputProp = new FGPropertyValue(value,
+ PropertyManager);
+ }
}
}
}
{
for (unsigned int i=0; i<tests.size(); i++) {
for (unsigned int j=0; j<tests[i]->conditions.size(); j++) delete tests[i]->conditions[j];
+ delete tests[i]->OutputProp;
delete tests[i];
}
if (!pass) Output = default_output;
+ if (delay != 0) Delay();
Clip();
if (IsOutput) SetOutput();
}
cout << endl;
}
- if (IsOutput) cout << " OUTPUT: " << OutputNode->getName() << endl;
+ if (IsOutput) {
+ for (unsigned int i=0; i<OutputNodes.size(); i++)
+ cout << " OUTPUT: " << OutputNodes[i]->getName() << endl;
+ }
}
}
if (debug_lvl & 2 ) { // Instantiation/Destruction notification