]> git.mxchange.org Git - simgear.git/blobdiff - simgear/nasal/cppbind/Ghost.hxx
Add methods to get arguments passed to function from Nasal
[simgear.git] / simgear / nasal / cppbind / Ghost.hxx
index 6fce4cbc74b1171172893f259f57887ded536a2c..6a8ccfb8bf4a85c16659ea033fa3aedd73efd379 100644 (file)
@@ -223,14 +223,32 @@ namespace nasal
    */
   struct CallContext
   {
-    CallContext(naContext c, int argc, naRef* args):
+    CallContext(naContext c, size_t argc, naRef* args):
       c(c),
       argc(argc),
       args(args)
     {}
 
+    template<class T>
+    T get(size_t index, const T& def = T()) const
+    {
+      if( index >= argc )
+        return def;
+
+      return from_nasal<T>(c, args[index]);
+    }
+
+    template<class T>
+    T require(size_t index) const
+    {
+      if( index >= argc )
+        naRuntimeError(c, "Missing required arg #%d", index);
+
+      return from_nasal<T>(c, args[index]);
+    }
+
     naContext   c;
-    int         argc;
+    size_t      argc;
     naRef      *args;
   };