diff --git a/src/obj.h b/src/obj.h index 5dd9ffab..9cc17c63 100644 --- a/src/obj.h +++ b/src/obj.h @@ -12,17 +12,23 @@ struct Function; class VM; typedef PyObject* (*NativeFuncC)(VM*, ArgsView); -typedef shared_ptr 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_; + struct FuncDecl { struct KwArg { int key; // index in co->varnames