diff --git a/include/pocketpy/config.h b/include/pocketpy/config.h index 746fe53e..f4d9dec6 100644 --- a/include/pocketpy/config.h +++ b/include/pocketpy/config.h @@ -12,6 +12,10 @@ #define PK_ENABLE_OS 1 #endif +#ifndef PK_ENABLE_DETERMINISM // must be enabled from cmake +#define PK_ENABLE_DETERMINISM 0 +#endif + #ifndef PK_ENABLE_WATCHDOG // can be overridden by cmake #define PK_ENABLE_WATCHDOG 0 #endif diff --git a/include/typings/pkpy.pyi b/include/typings/pkpy.pyi index 7c5e9285..33683370 100644 --- a/include/typings/pkpy.pyi +++ b/include/typings/pkpy.pyi @@ -11,6 +11,8 @@ class TValue[T]: # TValue_float = TValue[float] # TValue_vec2i = TValue[vec2i] # TValue_vec2 = TValue[vec2] + +configmacros: dict[str, int] def memory_usage() -> str: """Return a summary of the memory usage.""" diff --git a/src/modules/pkpy.c b/src/modules/pkpy.c index 919bb8f3..45d75ff1 100644 --- a/src/modules/pkpy.c +++ b/src/modules/pkpy.c @@ -454,6 +454,13 @@ static void pk_ComputeThread__register(py_Ref mod) { py_bindmethod(type, "eval", ComputeThread_eval); } +static void pkpy_configmacros_add(py_Ref dict, const char* key, int val){ + assert(dict->type == tp_dict); + py_TValue tmp; + py_newint(&tmp, val); + py_dict_setitem_by_str(dict, key, &tmp); +} + void pk__add_module_pkpy() { py_Ref mod = py_newmodule("pkpy"); @@ -500,6 +507,14 @@ void pk__add_module_pkpy() { #endif pk_ComputeThread__register(mod); + + py_Ref configmacros = py_emplacedict(mod, py_name("configmacros")); + py_newdict(configmacros); + pkpy_configmacros_add(configmacros, "PK_ENABLE_OS", PK_ENABLE_OS); + pkpy_configmacros_add(configmacros, "PK_ENABLE_DETERMINISM", PK_ENABLE_DETERMINISM); + pkpy_configmacros_add(configmacros, "PK_ENABLE_WATCHDOG", PK_ENABLE_WATCHDOG); + pkpy_configmacros_add(configmacros, "PK_GC_MIN_THRESHOLD", PK_GC_MIN_THRESHOLD); + pkpy_configmacros_add(configmacros, "PK_VM_STACK_SIZE", PK_VM_STACK_SIZE); } #undef DEF_TVALUE_METHODS \ No newline at end of file