X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fprops%2Fcondition.cxx;h=2c8a3e9fbf1e39c46b683cf5aea35f770f8aec11;hb=aefe9bc11682f39b3936b9f01a0d37e9d6428078;hp=7dbc27cc539891a8f2526108c31ccf5ac104f78f;hpb=a3bc2eb836466a141ab48efa05b2c3d34c4d383b;p=simgear.git diff --git a/simgear/props/condition.cxx b/simgear/props/condition.cxx index 7dbc27cc..2c8a3e9f 100644 --- a/simgear/props/condition.cxx +++ b/simgear/props/condition.cxx @@ -8,18 +8,20 @@ // $Id$ #ifdef HAVE_CONFIG_H -# include +# include #endif -// #include STL_IOSTREAM +// #include #include #include "props.hxx" #include "condition.hxx" -SG_USING_STD(istream); -SG_USING_STD(ostream); +#include + +using std::istream; +using std::ostream; @@ -144,8 +146,9 @@ SGOrCondition::addCondition (SGCondition * condition) static int doComparison (const SGPropertyNode * left, const SGPropertyNode *right) { + using namespace simgear; switch (left->getType()) { - case SGPropertyNode::BOOL: { + case props::BOOL: { bool v1 = left->getBoolValue(); bool v2 = right->getBoolValue(); if (v1 < v2) @@ -156,7 +159,7 @@ doComparison (const SGPropertyNode * left, const SGPropertyNode *right) return SGComparisonCondition::EQUALS; break; } - case SGPropertyNode::INT: { + case props::INT: { int v1 = left->getIntValue(); int v2 = right->getIntValue(); if (v1 < v2) @@ -167,7 +170,7 @@ doComparison (const SGPropertyNode * left, const SGPropertyNode *right) return SGComparisonCondition::EQUALS; break; } - case SGPropertyNode::LONG: { + case props::LONG: { long v1 = left->getLongValue(); long v2 = right->getLongValue(); if (v1 < v2) @@ -178,7 +181,7 @@ doComparison (const SGPropertyNode * left, const SGPropertyNode *right) return SGComparisonCondition::EQUALS; break; } - case SGPropertyNode::FLOAT: { + case props::FLOAT: { float v1 = left->getFloatValue(); float v2 = right->getFloatValue(); if (v1 < v2) @@ -189,7 +192,7 @@ doComparison (const SGPropertyNode * left, const SGPropertyNode *right) return SGComparisonCondition::EQUALS; break; } - case SGPropertyNode::DOUBLE: { + case props::DOUBLE: { double v1 = left->getDoubleValue(); double v2 = right->getDoubleValue(); if (v1 < v2) @@ -200,9 +203,9 @@ doComparison (const SGPropertyNode * left, const SGPropertyNode *right) return SGComparisonCondition::EQUALS; break; } - case SGPropertyNode::STRING: - case SGPropertyNode::NONE: - case SGPropertyNode::UNSPECIFIED: { + case props::STRING: + case props::NONE: + case props::UNSPECIFIED: { string v1 = left->getStringValue(); string v2 = right->getStringValue(); if (v1 < v2) @@ -213,8 +216,10 @@ doComparison (const SGPropertyNode * left, const SGPropertyNode *right) return SGComparisonCondition::EQUALS; break; } + default: + throw sg_exception("condition: unrecognized node type in comparison"); } - throw sg_exception("Unrecognized node type"); + return 0; } @@ -299,7 +304,7 @@ readNotCondition( SGPropertyNode *prop_root, const SGPropertyNode *node ) if (condition != 0) return new SGNotCondition(condition); } - SG_LOG(SG_COCKPIT, SG_ALERT, "Panel: empty 'not' condition"); + SG_LOG(SG_COCKPIT, SG_ALERT, "empty 'not' condition"); return 0; } @@ -341,8 +346,10 @@ readComparison( SGPropertyNode *prop_root, condition->setLeftProperty(prop_root, node->getStringValue("property[0]")); if (node->hasValue("property[1]")) condition->setRightProperty(prop_root, node->getStringValue("property[1]")); - else + else if (node->hasValue("value")) condition->setRightValue(node->getChild("value", 0)); + else + throw sg_exception("condition: comparison without property[1] or value"); return condition; }