]> git.mxchange.org Git - flightgear.git/commitdiff
Allow ATIS format specifications to compare tokens against text values
authorRichard Senior <richard.j.senior@gmail.com>
Wed, 6 Apr 2016 23:58:34 +0000 (00:58 +0100)
committerRichard Senior <richard.j.senior@gmail.com>
Wed, 6 Apr 2016 23:58:34 +0000 (00:58 +0100)
Prior to this change, it was only possible to compare the values of tokens
to each other for use in conditionals, e.g. landing and departing runway.
This change allows comparison of a token to a text value, e.g. to compare
wind speed to zero.

src/ATC/ATISEncoder.cxx

index dc41d27ed3db9ee4c72d9cbb1e8b490ec2c76a66..45675207b68924cfd471553452a00093c2511d47 100644 (file)
@@ -295,13 +295,24 @@ bool ATISEncoder::checkEqualsCondition( SGPropertyNode_ptr node, bool isEqual )
 {
   SGPropertyNode_ptr n1 = node->getNode( "token", 0, false );
   SGPropertyNode_ptr n2 = node->getNode( "token", 1, false );
-  if( false == n1.valid() || false == n2.valid()) {
-    SG_LOG(SG_ATC, SG_WARN, "missing <token> node for (not)-equals"  );
+
+  if( n1.valid() && n2.valid() ) {
+    bool comp = processToken( n1 ).compare( processToken( n2 ) ) == 0;
+    return comp == isEqual;
+  }
+
+  if( n1.valid() && !n2.valid() ) {
+    SGPropertyNode_ptr t = node->getNode( "text", 0, false );
+    if( t.valid() ) {
+      bool comp = processToken( n1 ).compare( processTextToken( t ) ) == 0;
+      return comp == isEqual;
+    }
+    SG_LOG(SG_ATC, SG_WARN, "missing <token> or <text> node for (not)-equals");
     return false;
   }
 
-  bool comp = processToken( n1 ).compare( processToken( n2 ) ) == 0;
-  return comp == isEqual;
+  SG_LOG(SG_ATC, SG_WARN, "missing <token> node for (not)-equals");
+  return false;
 }
 
 string ATISEncoder::getAtisId( SGPropertyNode_ptr )