blueloveTH 2 years ago
parent
commit
e5d5f09d83
1 changed files with 8 additions and 2 deletions
  1. 8 2
      src/obj.h

+ 8 - 2
src/obj.h

@@ -12,17 +12,23 @@ struct Function;
 class VM;
 
 typedef PyObject* (*NativeFuncC)(VM*, ArgsView);
-typedef shared_ptr<CodeObject> CodeObject_;
+typedef int (*LuaStyleFuncC)(VM*);
 
 struct NativeFunc {
     NativeFuncC f;
     int argc;       // DONOT include self
     bool method;
+
+    // this is designed for lua style C bindings
+    // access it via `CAST(NativeFunc&, args[-2])._lua_f`
+    LuaStyleFuncC _lua_f;
     
-    NativeFunc(NativeFuncC f, int argc, bool method) : f(f), argc(argc), method(method) {}
+    NativeFunc(NativeFuncC f, int argc, bool method) : f(f), argc(argc), method(method), _lua_f(nullptr) {}
     PyObject* operator()(VM* vm, ArgsView args) const;
 };
 
+typedef shared_ptr<CodeObject> CodeObject_;
+
 struct FuncDecl {
     struct KwArg {
         int key;                // index in co->varnames