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;
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();
}
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();
}