summaryrefslogtreecommitdiff
path: root/py/runtime.h
diff options
context:
space:
mode:
Diffstat (limited to 'py/runtime.h')
-rw-r--r--py/runtime.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/py/runtime.h b/py/runtime.h
index c033c77b4..5fa072d7e 100644
--- a/py/runtime.h
+++ b/py/runtime.h
@@ -29,6 +29,13 @@
#include "py/mpstate.h"
#include "py/pystack.h"
+// For use with mp_call_function_1_from_nlr_jump_callback.
+#define MP_DEFINE_NLR_JUMP_CALLBACK_FUNCTION_1(ctx, f, a) \
+ nlr_jump_callback_node_call_function_1_t ctx = { \
+ .func = (void (*)(void *))(f), \
+ .arg = (a), \
+ }
+
typedef enum {
MP_VM_RETURN_NORMAL,
MP_VM_RETURN_YIELD,
@@ -73,6 +80,13 @@ typedef struct _nlr_jump_callback_node_globals_locals_t {
mp_obj_dict_t *locals;
} nlr_jump_callback_node_globals_locals_t;
+// For use with mp_call_function_1_from_nlr_jump_callback.
+typedef struct _nlr_jump_callback_node_call_function_1_t {
+ nlr_jump_callback_node_t callback;
+ void (*func)(void *);
+ void *arg;
+} nlr_jump_callback_node_call_function_1_t;
+
// Tables mapping operator enums to qstrs, defined in objtype.c
extern const byte mp_unary_op_method_name[];
extern const byte mp_binary_op_method_name[];
@@ -121,6 +135,7 @@ static inline void mp_globals_set(mp_obj_dict_t *d) {
}
void mp_globals_locals_set_from_nlr_jump_callback(void *ctx_in);
+void mp_call_function_1_from_nlr_jump_callback(void *ctx_in);
mp_obj_t mp_load_name(qstr qst);
mp_obj_t mp_load_global(qstr qst);