Compare commits

..

No commits in common. "9162e84ae60937d3dbace2cadbda6021036ba3e8" and "b7950d4a1151ca7b4fa4960d48b477552cc301ad" have entirely different histories.

2 changed files with 6 additions and 2 deletions

View File

@ -39,6 +39,8 @@ typedef py_TValue* py_TmpRef;
/// @return true if the function is successful.
typedef bool (*py_CFunction)(int argc, py_StackRef argv) PY_RAISE;
enum py_BindType { bt_function, bt_staticmethod, bt_classmethod };
enum py_CompileMode { EXEC_MODE, EVAL_MODE, REPL_MODE, CELL_MODE };
extern py_GlobalRef py_True;
@ -90,6 +92,7 @@ void py_newnativefunc(py_Ref out, py_CFunction);
py_Name py_newfunction(py_Ref out,
const char* sig,
py_CFunction f,
enum py_BindType bt,
const char* docstring,
int slots);
@ -154,7 +157,7 @@ py_GlobalRef py_tpobject(py_Type type);
/// Get the type name.
const char* py_tpname(py_Type type);
/// Call a type to create a new instance.
bool py_tpcall(py_Type type, int argc, py_Ref argv) PY_RAISE;
bool py_tpcall(py_Type type, int argc, py_Ref argv);
/// Find the magic method from the given type only.
py_GlobalRef py_tpmagic(py_Type type, py_Name name);

View File

@ -62,13 +62,14 @@ void py_bindfunc(py_Ref obj, const char* name, py_CFunction f) {
void py_bind(py_Ref obj, const char* sig, py_CFunction f) {
py_TValue tmp;
py_Name name = py_newfunction(&tmp, sig, f, NULL, 0);
py_Name name = py_newfunction(&tmp, sig, f, bt_function, NULL, 0);
py_setdict(obj, name, &tmp);
}
py_Name py_newfunction(py_Ref out,
const char* sig,
py_CFunction f,
enum py_BindType bt,
const char* docstring,
int slots) {
char buffer[256];