From 2d9a06a3fc03fb320199dbd2a41a7349ae724588 Mon Sep 17 00:00:00 2001 From: blueloveTH Date: Tue, 2 Jul 2024 17:52:09 +0800 Subject: [PATCH] use enum for magic names --- include/pocketpy/pocketpy.h | 10 +++++++--- src/common/strname.c | 6 +----- src/compiler/compiler.c | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/include/pocketpy/pocketpy.h b/include/pocketpy/pocketpy.h index 7c37740c..cbee6844 100644 --- a/include/pocketpy/pocketpy.h +++ b/include/pocketpy/pocketpy.h @@ -326,9 +326,13 @@ bool py_checktype(const py_Ref self, py_Type type); /// %t: py_Type /// %n: py_Name -#define MAGIC_METHOD(x) extern uint16_t x; -#include "pocketpy/xmacros/magics.h" -#undef MAGIC_METHOD + +enum py_MagicMethods{ + py_MagicMethods__NULL, // 0 is reserved + #define MAGIC_METHOD(x) x, + #include "pocketpy/xmacros/magics.h" + #undef MAGIC_METHOD +}; enum py_PredefinedTypes{ tp_object = 1, tp_type, diff --git a/src/common/strname.c b/src/common/strname.c index d512f097..a7cb36a4 100644 --- a/src/common/strname.c +++ b/src/common/strname.c @@ -20,7 +20,7 @@ void pk_StrName__initialize() { c11_vector__ctor(&_r_interned, sizeof(c11_sv)); _initialized = true; -#define MAGIC_METHOD(x) x = pk_StrName__map(#x); +#define MAGIC_METHOD(x) assert(x == py_name(#x)); #include "pocketpy/xmacros/magics.h" #undef MAGIC_METHOD @@ -94,10 +94,6 @@ bool py_ismagicname(py_Name name){ } /////////////////////////////////// -#define MAGIC_METHOD(x) uint16_t x; -#include "pocketpy/xmacros/magics.h" -#undef MAGIC_METHOD - uint16_t pk_id_add; uint16_t pk_id_set; uint16_t pk_id_long; diff --git a/src/compiler/compiler.c b/src/compiler/compiler.c index 0ed26dc7..80b7b728 100644 --- a/src/compiler/compiler.c +++ b/src/compiler/compiler.c @@ -849,7 +849,7 @@ static void BinaryExpr__dtor(Expr* self_) { vtdelete(self->rhs); } -static Opcode cmp_token2name(TokenIndex token) { +static py_Name cmp_token2name(TokenIndex token) { switch(token) { case TK_LT: return __lt__; case TK_LE: return __le__;