From c7495853ecd71ae3065c1e22ef64e9019560ba85 Mon Sep 17 00:00:00 2001 From: blueloveTH Date: Mon, 29 Apr 2024 13:04:53 +0800 Subject: [PATCH] compatible fix --- include/pocketpy/vm.h | 1 + src/vm.cpp | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/include/pocketpy/vm.h b/include/pocketpy/vm.h index fa4e9b2d..6363b641 100644 --- a/include/pocketpy/vm.h +++ b/include/pocketpy/vm.h @@ -253,6 +253,7 @@ public: void bind__str__(Type type, PyObject* (*f)(VM*, PyObject*)); void bind__iter__(Type type, PyObject* (*f)(VM*, PyObject*)); void bind__next__(Type type, unsigned (*f)(VM*, PyObject*)); + [[deprecated]] void bind__next__(Type type, PyObject* (*f)(VM*, PyObject*)); void bind__neg__(Type type, PyObject* (*f)(VM*, PyObject*)); void bind__invert__(Type type, PyObject* (*f)(VM*, PyObject*)); void bind__hash__(Type type, i64 (*f)(VM* vm, PyObject*)); diff --git a/src/vm.cpp b/src/vm.cpp index 0cd75c80..38ff3189 100644 --- a/src/vm.cpp +++ b/src/vm.cpp @@ -1333,6 +1333,14 @@ void VM::bind__delitem__(Type type, void (*f)(VM*, PyObject*, PyObject*)){ PK_OBJ_GET(NativeFunc, nf).set_userdata(f); \ } + void VM::bind__next__(Type type, PyObject* (*f)(VM*, PyObject*)){ + PyObject* nf = bind_method<0>(_t(type), __next__, [](VM* vm, ArgsView args){ + auto f = lambda_get_userdata(args.begin()); + return f(vm, args[0]); + }); + PK_OBJ_GET(NativeFunc, nf).set_userdata(f); + } + #define BIND_UNARY_SPECIAL(name) \ void VM::bind##name(Type type, PyObject* (*f)(VM*, PyObject*)){ \ _all_types[type].m##name = f; \