Ver Fonte

add `pkpy.configmacros`

blueloveTH há 9 meses atrás
pai
commit
6f4a5321a1
3 ficheiros alterados com 21 adições e 0 exclusões
  1. 4 0
      include/pocketpy/config.h
  2. 2 0
      include/typings/pkpy.pyi
  3. 15 0
      src/modules/pkpy.c

+ 4 - 0
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

+ 2 - 0
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."""

+ 15 - 0
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