39#include "FGPropertyReader.h"
40#include "FGPropertyManager.h"
41#include "FGXMLElement.h"
54bool FGPropertyReader::ResetToIC(
void)
56 for (
auto v: interface_prop_initial_value) {
67void FGPropertyReader::Load(Element* el, FGPropertyManager* PM,
bool override_props)
69 Element *property_element = el->FindElement(
"property");
70 if (property_element && FGJSBBase::debug_lvl > 0) {
71 FGLogging log(LogLevel::DEBUG);
77 log <<
" properties\n\n";
80 while (property_element) {
83 bool has_value_attribute = !property_element->GetAttributeValue(
"value").empty();
85 if (has_value_attribute)
86 value = property_element->GetAttributeValueAsNumber(
"value");
88 string interface_property_string = property_element->GetDataLine();
89 if (PM->HasNode(interface_property_string)) {
90 node = PM->GetNode(interface_property_string);
93 if (FGJSBBase::debug_lvl > 0) {
94 FGXMLLogging log(property_element, LogLevel::DEBUG);
95 if (interface_prop_initial_value.find(node) == interface_prop_initial_value.end()) {
96 log <<
" The following property will be overridden but it has not been\n"
97 <<
" defined in the current model '" << el->GetName() <<
"'\n";
100 log <<
" " <<
"Overriding value for property " << interface_property_string
102 <<
" new value: " << value <<
")\n\n";
108 if (has_value_attribute) {
109 FGXMLLogging log(property_element, LogLevel::WARN);
110 log <<
" Property " << interface_property_string
111 <<
" is already defined.\n"
113 <<
" be overridden.\n";
115 property_element = el->FindNextElement(
"property");
119 node = PM->GetNode(interface_property_string,
true);
123 if (FGJSBBase::debug_lvl > 0) {
124 FGLogging log(LogLevel::DEBUG);
125 log <<
" " << interface_property_string <<
" (initial value: "
130 FGXMLLogging log(property_element, LogLevel::ERROR);
131 log <<
"Could not create property " << interface_property_string <<
"\n";
132 property_element = el->FindNextElement(
"property");
136 interface_prop_initial_value[node] = value;
137 if (property_element->GetAttributeValue(
"persistent") ==
string(
"true"))
140 property_element = el->FindNextElement(
"property");
A node in a property tree.
bool getAttribute(Attribute attr) const
Check a single mode attribute for the property node.
void setAttribute(Attribute attr, bool state)
Set a single mode attribute for the property node.
double getDoubleValue() const
Get a double value for this node.
bool setDoubleValue(double value)
Set a double value for this node.
Main namespace for the JSBSim Flight Dynamics Model.