]> git.mxchange.org Git - flightgear.git/commitdiff
Further tuning of arg->num conversion.
authorJames Turner <zakalawe@mac.com>
Thu, 7 Nov 2013 14:28:40 +0000 (06:28 -0800)
committerJames Turner <zakalawe@mac.com>
Thu, 7 Nov 2013 14:29:58 +0000 (06:29 -0800)
src/Scripting/NasalPositioned.cxx

index 6e905beb7259ec1ba7ca1393de829ad24feb4f72..1d2b41402a28a71b02f12e0266a2f66463f20af4 100644 (file)
@@ -124,6 +124,17 @@ static naRef stringToNasal(naContext c, const std::string& s)
                    s.length());
 }
 
+static bool convertToNum(naRef v, double& result)
+{
+    naRef n = naNumValue(v);
+    if (naIsNil(n)) {
+        return false; // couldn't convert
+    }
+    
+    result = n.num;
+    return true;
+}
+
 static WayptFlag wayptFlagFromString(const char* s)
 {
   if (!strcmp(s, "sid")) return WPT_DEPARTURE;
@@ -2186,13 +2197,13 @@ static naRef f_leg_setSpeed(naContext c, naRef me, int argc, naRef* args)
   if (!leg) {
     naRuntimeError(c, "leg.setSpeed called on non-flightplan-leg object");
   }
-  
-  if ((argc < 2) || !naIsNum(args[0])) {
-    naRuntimeError(c, "bad arguments to leg.setSpeed");
-  }
-  
+
+    double speed = 0.0;
+    if ((argc < 2) || !convertToNum(args[0], speed))
+        naRuntimeError(c, "bad arguments to setSpeed");
+    
   RouteRestriction rr = routeRestrictionFromString(naStr_data(args[1]));
-  leg->setSpeed(rr, naNumValue(args[0]).num);
+  leg->setSpeed(rr, speed);
   
   return naNil();
 }
@@ -2204,12 +2215,12 @@ static naRef f_leg_setAltitude(naContext c, naRef me, int argc, naRef* args)
     naRuntimeError(c, "leg.setAltitude called on non-flightplan-leg object");
   }
   
-  if ((argc < 2) || !naIsNum(args[0])) {
-    naRuntimeError(c, "bad arguments to leg.setAltitude");
-  }
-  
+    double alt = 0.0;
+    if ((argc < 2) || !convertToNum(args[0], alt))
+        naRuntimeError(c, "bad arguments to leg.setAltitude");
+    
   RouteRestriction rr = routeRestrictionFromString(naStr_data(args[1]));
-    leg->setAltitude(rr, naNumValue(args[0]).num);
+    leg->setAltitude(rr, alt);
 
   return naNil();
 }