diff --git a/.transpyc_cache/0019c939aae7f9f1.pyi b/.transpyc_cache/0019c939aae7f9f1.pyi deleted file mode 100644 index 7c47ef2..0000000 --- a/.transpyc_cache/0019c939aae7f9f1.pyi +++ /dev/null @@ -1,14 +0,0 @@ -""" -Auto-generated Python stub file from mpooltest.py -Module: mpooltest -""" - - -import t, c -from t import CInt, CPtr, CChar -import viperlib -import viperio -import stdlib -import memhub - -def mpool_main() -> CInt: pass diff --git a/.transpyc_cache/001c1416e7a7dc50.doc.json b/.transpyc_cache/001c1416e7a7dc50.doc.json deleted file mode 100644 index 28f2ad8..0000000 --- a/.transpyc_cache/001c1416e7a7dc50.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_register_cexport_from_funcdef": "预注册 CExport/State 函数到全局表(仅注册,不生成 IR)", "translate_children": "遍历 tree.children 并翻译每个子节点\n\n Args:\n trans: 翻译器(含所有共享状态)\n tree: AST 模块节点\n\n Returns:\n t.CInt: 新增的变量数\n ", "handle_module_level_var": "处理模块级变量声明,创建全局变量", "create_wrapper_main": "创建包装 main 函数并翻译所有顶层语句\n\n Args:\n trans: 翻译器(含所有共享状态)\n tree: AST 模块节点\n i32_ty: i32 LLVMType\n\n Returns:\n t.CInt: 新增的变量数\n "} \ No newline at end of file diff --git a/.transpyc_cache/001c1416e7a7dc50.pyi b/.transpyc_cache/001c1416e7a7dc50.pyi deleted file mode 100644 index 3901124..0000000 --- a/.transpyc_cache/001c1416e7a7dc50.pyi +++ /dev/null @@ -1,31 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesMain.py -Module: lib.core.Handles.HandlesMain -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import viperlib -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesBody as HandlesBody -import lib.core.Handles.HandlesFunctions as HandlesFunctions -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesClassDef as HandlesClassDef -import lib.core.Handles.HandlesAnnAssign as HandlesAnnAssign - -def _register_cexport_from_funcdef(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - -def translate_children(trans: HT.Translator | t.CPtr, tree: ast.AST | t.CPtr) -> int: pass - -def handle_module_level_var(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - -def create_wrapper_main(trans: HT.Translator | t.CPtr, tree: ast.AST | t.CPtr, i32_ty: llvmlite.LLVMType | t.CPtr) -> int: pass diff --git a/.transpyc_cache/0029db369f740dd9.doc.json b/.transpyc_cache/0029db369f740dd9.doc.json deleted file mode 100644 index 28f2ad8..0000000 --- a/.transpyc_cache/0029db369f740dd9.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_register_cexport_from_funcdef": "预注册 CExport/State 函数到全局表(仅注册,不生成 IR)", "translate_children": "遍历 tree.children 并翻译每个子节点\n\n Args:\n trans: 翻译器(含所有共享状态)\n tree: AST 模块节点\n\n Returns:\n t.CInt: 新增的变量数\n ", "handle_module_level_var": "处理模块级变量声明,创建全局变量", "create_wrapper_main": "创建包装 main 函数并翻译所有顶层语句\n\n Args:\n trans: 翻译器(含所有共享状态)\n tree: AST 模块节点\n i32_ty: i32 LLVMType\n\n Returns:\n t.CInt: 新增的变量数\n "} \ No newline at end of file diff --git a/.transpyc_cache/0029db369f740dd9.pyi b/.transpyc_cache/0029db369f740dd9.pyi deleted file mode 100644 index 2294a70..0000000 --- a/.transpyc_cache/0029db369f740dd9.pyi +++ /dev/null @@ -1,30 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesMain.py -Module: lib.core.Handles.HandlesMain -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import viperlib -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesBody as HandlesBody -import lib.core.Handles.HandlesFunctions as HandlesFunctions -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -def _register_cexport_from_funcdef(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - -def translate_children(trans: HT.Translator | t.CPtr, tree: ast.AST | t.CPtr) -> int: pass - -def handle_module_level_var(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - -def create_wrapper_main(trans: HT.Translator | t.CPtr, tree: ast.AST | t.CPtr, i32_ty: llvmlite.LLVMType | t.CPtr) -> int: pass diff --git a/.transpyc_cache/02885f6f134079c2.doc.json b/.transpyc_cache/02885f6f134079c2.doc.json deleted file mode 100644 index 1a7c43a..0000000 --- a/.transpyc_cache/02885f6f134079c2.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"VarEntry": "变量表条目", "Scope": "作用域节点", "SymbolTable": "嵌套作用域符号表", "init_vars": "分配并清零变量表数组", "find_var": "在变量表中按名称查找", "find_var_entry": "在变量表中按名称查找,返回 VarEntry 或 None", "lookup_var_entry": "从当前作用域逐级向上查找变量,返回 VarEntry 或 None", "set_var_annot_class_name": "设置变量的原始类型注解类名,返回 0=成功 / 1=失败", "add_var": "添加变量到变量表", "get_or_create_var": "查找或创建变量 alloca", "_create_scope": "创建并初始化作用域节点", "init_symbol_table": "创建并初始化符号表,包含模块级根作用域", "enter_scope": "进入新作用域,返回新创建的作用域", "exit_scope": "退出当前作用域,恢复到父作用域", "define_var": "在当前作用域定义变量,返回 0 成功", "define_module_var": "在模块作用域定义变量,返回 0 成功", "lookup_var": "从当前作用域逐级向上查找变量,返回 alloca 或 None", "lookup_current": "仅在当前作用域查找变量", "lookup_module_var": "在模块作用域查找变量", "get_or_create_sym": "查找或创建变量 alloca(在当前作用域)"} \ No newline at end of file diff --git a/.transpyc_cache/02885f6f134079c2.pyi b/.transpyc_cache/02885f6f134079c2.pyi deleted file mode 100644 index fb5e055..0000000 --- a/.transpyc_cache/02885f6f134079c2.pyi +++ /dev/null @@ -1,68 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesVar.py -Module: lib.core.Handles.HandlesVar -""" - - -import t, c -from stdint import * -import llvmlite -import memhub -import string - -SCOPE_MODULE: t.CDefine = 0 -SCOPE_FUNCTION: t.CDefine = 1 -SCOPE_BLOCK: t.CDefine = 2 -MAX_VARS: t.CDefine = 256 - -@t.NoVTable -class VarEntry: - Name: t.CChar | t.CPtr - Alloca: llvmlite.Value | t.CPtr - Used: t.CInt - AnnotClassName: t.CChar | t.CPtr -@t.NoVTable -class Scope: - Parent: Scope | t.CPtr - Vars: VarEntry | t.CPtr - VarCount: t.CInt - Kind: t.CInt -@t.NoVTable -class SymbolTable: - Pool: memhub.MemBuddy | t.CPtr - Root: Scope | t.CPtr - Current: Scope | t.CPtr - -def init_vars(pool: memhub.MemBuddy | t.CPtr) -> VarEntry | t.CPtr: pass - -def find_var(vars_ptr: VarEntry | t.CPtr, var_count: int, name: str) -> llvmlite.Value | t.CPtr: pass - -def find_var_entry(vars_ptr: VarEntry | t.CPtr, var_count: int, name: str) -> VarEntry | t.CPtr: pass - -def lookup_var_entry(symtab: SymbolTable | t.CPtr, name: str) -> VarEntry | t.CPtr: pass - -def set_var_annot_class_name(symtab: SymbolTable | t.CPtr, name: str, class_name: str) -> int: pass - -def add_var(vars_ptr: VarEntry | t.CPtr, var_count: int, name: str, alloca: llvmlite.Value | t.CPtr) -> int: pass - -def get_or_create_var(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, vars_ptr: VarEntry | t.CPtr, var_count: int, name: str, ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _create_scope(pool: memhub.MemBuddy | t.CPtr, parent: Scope | t.CPtr, kind: int) -> Scope | t.CPtr: pass - -def init_symbol_table(pool: memhub.MemBuddy | t.CPtr) -> SymbolTable | t.CPtr: pass - -def enter_scope(symtab: SymbolTable | t.CPtr, kind: int) -> Scope | t.CPtr: pass - -def exit_scope(symtab: SymbolTable | t.CPtr) -> t.CInt: pass - -def define_var(symtab: SymbolTable | t.CPtr, name: str, alloca: llvmlite.Value | t.CPtr) -> int: pass - -def define_module_var(symtab: SymbolTable | t.CPtr, name: str, alloca: llvmlite.Value | t.CPtr) -> int: pass - -def lookup_var(symtab: SymbolTable | t.CPtr, name: str) -> llvmlite.Value | t.CPtr: pass - -def lookup_current(symtab: SymbolTable | t.CPtr, name: str) -> llvmlite.Value | t.CPtr: pass - -def lookup_module_var(symtab: SymbolTable | t.CPtr, name: str) -> llvmlite.Value | t.CPtr: pass - -def get_or_create_sym(symtab: SymbolTable | t.CPtr, pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, name: str, ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass diff --git a/.transpyc_cache/02d833b3cf571c5b.pyi b/.transpyc_cache/02d833b3cf571c5b.pyi deleted file mode 100644 index 33275d4..0000000 --- a/.transpyc_cache/02d833b3cf571c5b.pyi +++ /dev/null @@ -1,18 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - - -from stdint import * -import w32.win32console -import t, c -from t import CInt, CExport -import stdio -import stdlib -import string -import memhub -import hashtable -import testcheck - -def main() -> CInt | CExport: pass diff --git a/.transpyc_cache/03b24bc1d9327958.pyi b/.transpyc_cache/03b24bc1d9327958.pyi deleted file mode 100644 index 8757634..0000000 --- a/.transpyc_cache/03b24bc1d9327958.pyi +++ /dev/null @@ -1,21 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - - -import t -import stdio -import string -import __zlib.pyzlib as pyzlib -import __zlib.zdeflate as zdeflate -import __zlib.zinflate as zinflate -import __zlib.zchecksum as zchecksum -import __zlib.zdef as zdef -import __zlib.zhuff as zhuff -import __zlib.test_pyzlib as tpz -import w32.win32memory -import c -import testcheck - -def main() -> t.CInt: pass diff --git a/.transpyc_cache/03eeb0bea44f6637.doc.json b/.transpyc_cache/03eeb0bea44f6637.doc.json deleted file mode 100644 index c00e036..0000000 --- a/.transpyc_cache/03eeb0bea44f6637.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数\n\n 直接接收三个 Value 参数,避免通过 Next 链表遍历(共享 alloca 对象的\n Next 字段可能被其他操作污染,导致链表断裂)。\n ", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/03eeb0bea44f6637.pyi b/.transpyc_cache/03eeb0bea44f6637.pyi deleted file mode 100644 index 40c3168..0000000 --- a/.transpyc_cache/03eeb0bea44f6637.pyi +++ /dev/null @@ -1,171 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, dst_val: llvmlite.Value | t.CPtr, src_val: llvmlite.Value | t.CPtr, num_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/04673ecc3aec489e.doc.json b/.transpyc_cache/04673ecc3aec489e.doc.json deleted file mode 100644 index c00e036..0000000 --- a/.transpyc_cache/04673ecc3aec489e.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数\n\n 直接接收三个 Value 参数,避免通过 Next 链表遍历(共享 alloca 对象的\n Next 字段可能被其他操作污染,导致链表断裂)。\n ", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/04673ecc3aec489e.pyi b/.transpyc_cache/04673ecc3aec489e.pyi deleted file mode 100644 index 40c3168..0000000 --- a/.transpyc_cache/04673ecc3aec489e.pyi +++ /dev/null @@ -1,171 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, dst_val: llvmlite.Value | t.CPtr, src_val: llvmlite.Value | t.CPtr, num_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/05c11f22675c60cb.pyi b/.transpyc_cache/05c11f22675c60cb.pyi deleted file mode 100644 index 3520489..0000000 --- a/.transpyc_cache/05c11f22675c60cb.pyi +++ /dev/null @@ -1,50 +0,0 @@ -""" -Auto-generated Python stub file from llvmlite.__values.py -Module: llvmlite.__values -""" - - -import t, c -from stdint import * -import string -import viperlib -import memhub -from linkedlist import GSListNode -from .__types import LLVMType, TypePrint - -class Value(GSListNode[Value]): - Ty: LLVMType | t.CPtr - Name: t.CChar | t.CPtr - IsConst: t.CInt - IntVal: t.CInt64T - FloatVal: t.CDouble - -VALUE_SIZE: t.CDefine = 48 - -def new_value(pool: memhub.MemBuddy | t.CPtr) -> Value | t.CPtr: pass - -def ConstInt(pool: memhub.MemBuddy | t.CPtr, ty: LLVMType | t.CPtr, val: t.CInt64T, name: t.CChar | t.CPtr) -> Value | t.CPtr: pass - -def ConstNull(pool: memhub.MemBuddy | t.CPtr, ty: LLVMType | t.CPtr, name: t.CChar | t.CPtr) -> Value | t.CPtr: pass - -def ConstZero(pool: memhub.MemBuddy | t.CPtr, ty: LLVMType | t.CPtr) -> Value | t.CPtr: pass - -def ConstFloat(pool: memhub.MemBuddy | t.CPtr, ty: LLVMType | t.CPtr, val: t.CDouble) -> Value | t.CPtr: pass - -def SSAValue(pool: memhub.MemBuddy | t.CPtr, ty: LLVMType | t.CPtr, name: t.CChar | t.CPtr) -> Value | t.CPtr: pass - -def ValuePrint(buf: t.CChar | t.CPtr, size: t.CSizeT, val: Value | t.CPtr, pool: memhub.MemBuddy | t.CPtr) -> t.CInt: pass - -def value_get_ty(val: Value | t.CPtr) -> LLVMType | t.CPtr: pass - -def value_get_next(val: Value | t.CPtr) -> Value | t.CPtr: pass - -def value_set_ty(val: Value | t.CPtr, ty: LLVMType | t.CPtr) -> t.CInt: pass - -def value_set_next(val: Value | t.CPtr, nxt: Value | t.CPtr) -> t.CInt: pass - -def value_set_name(val: Value | t.CPtr, name: t.CChar | t.CPtr) -> t.CInt: pass - -def value_set_isconst(val: Value | t.CPtr, is_const: t.CInt) -> t.CInt: pass - -def _append_str(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass diff --git a/.transpyc_cache/05db996fc87ebdaa.doc.json b/.transpyc_cache/05db996fc87ebdaa.doc.json deleted file mode 100644 index 67e7a8b..0000000 --- a/.transpyc_cache/05db996fc87ebdaa.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_DiagAppend": "追加诊断信息到 diag.txt(追加模式,不依赖 printf 缓冲)", "TranslateFileGetTrans": "翻译文件,返回 Translator 对象(调用者负责 dump_ir),None 失败", "ensure_dir": "递归创建目录(类似 mkdir -p),目录已存在视为成功\n\n Args:\n path: 目录路径(支持 / 或 \\ 分隔符)\n\n Returns:\n 0 成功(包括目录已存在),非 0 失败\n ", "write_ir_to_file": "将 IR 缓冲区写入 .ll 文件\n\n Args:\n ir_buf: IR 文本缓冲区\n ir_len: IR 文本长度\n output_dir: 输出目录(temp 或 output)\n module_name: 模块名(如 \"main\")\n\n Returns:\n 0 成功,非 0 失败\n ", "compile_ll_to_obj": "调用 llc 将 .ll 编译为 .obj\n\n Args:\n ir_path: .ll 文件路径\n output_dir: 输出目录\n module_name: 模块名(用于生成 .obj 文件名)\n cc_cmd: 编译器命令(如 \"llc\")\n cc_flags: 编译器参数(如 \"-filetype=obj -relocation-model=pic\")\n\n Returns:\n 0 成功,非 0 失败\n ", "collect_obj_files": "扫描 includes_binary_dir 目录,收集所有 .obj 文件路径到 out_buf\n\n Args:\n includes_binary_dir: includes.binary 目录路径\n out_buf: 输出缓冲区(用于存放空格分隔的 .obj 文件路径)\n out_size: 输出缓冲区大小\n\n Returns:\n 写入的字节数(不含 null 终止符),0 表示无文件或错误\n ", "link_obj_to_exe": "调用 clang++ 链接 .obj 为 .exe\n\n Args:\n output_dir: 输出目录(包含 .obj 文件)\n module_name: 模块名\n linker_cmd: 链接器命令(如 \"clang++\")\n linker_flags: 链接器参数\n linker_output: 输出文件名(如 \"test.exe\")\n includes_binary_dir: includes.binary 目录路径(链接时附加预编译 .obj)\n\n Returns:\n 0 成功,非 0 失败\n ", "compile_module_to_obj": "编译 IR 到 .obj(不链接)\n\n Args:\n ir_buf: LLVM IR 文本缓冲区\n ir_len: IR 文本长度\n temp_dir: 临时目录\n output_dir: 输出目录\n module_name: 模块名(SHA1)\n cc_cmd: 编译器命令\n cc_flags: 编译器参数\n\n Returns:\n 0 成功,非 0 失败\n ", "link_objs_to_exe": "链接多个 .obj 文件为 .exe\n\n Args:\n obj_paths: 空格分隔的 .obj 文件完整路径字符串\n obj_paths_len: obj_paths 长度\n linker_cmd: 链接器命令(如 \"clang++\")\n linker_flags: 链接器参数\n linker_output: 输出文件完整路径\n includes_binary_dir: includes.binary 目录路径(链接时附加预编译 .obj)\n\n Returns:\n 0 成功,非 0 失败\n ", "run_pipeline": "执行完整编译管线\n\n Args:\n ir_buf: LLVM IR 文本缓冲区\n ir_len: IR 文本长度\n temp_dir: 临时目录\n output_dir: 输出目录\n module_name: 模块名\n cc_cmd: 编译器命令\n cc_flags: 编译器参数\n linker_cmd: 链接器命令\n linker_flags: 链接器参数\n linker_output: 输出文件名\n includes_binary_dir: includes.binary 目录路径(链接时附加预编译 .obj)\n\n Returns:\n BuildResult 对象\n "} \ No newline at end of file diff --git a/.transpyc_cache/05db996fc87ebdaa.pyi b/.transpyc_cache/05db996fc87ebdaa.pyi deleted file mode 100644 index 9d8b33e..0000000 --- a/.transpyc_cache/05db996fc87ebdaa.pyi +++ /dev/null @@ -1,52 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.BuildPipeline.py -Module: lib.core.BuildPipeline -""" - - -import t, c -from stdint import * -import stdio -import string -import stdlib -import memhub -import w32.fileio as fileio -import w32.win32file -import w32.win32base -import subprocess -import viperlib -import ast -import lib.core.Handles.HandlesTranslator as HandlesTranslator -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesType as HandlesType - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -SRC_BUF_SIZE: t.CDefine = 1048576 - -def _DiagAppend(msg: bytes) -> t.CInt: pass - -def TranslateFileGetTrans(mb: memhub.MemBuddy | t.CPtr, file_path: str, sha1_val: str) -> HandlesTranslator.Translator | t.CPtr: pass - - -class BuildResult: - Success: t.CInt - OutputPath: str - ErrorMsg: str - def __new__(self: BuildResult) -> t.CPtr: pass - def __init__(self: BuildResult) -> t.CInt: pass - -def ensure_dir(path: str) -> int: pass - -def write_ir_to_file(ir_buf: bytes, ir_len: t.CSizeT, output_dir: str, module_name: str) -> int: pass - -def compile_ll_to_obj(ir_path: str, output_dir: str, module_name: str, cc_cmd: str, cc_flags: str) -> int: pass - -def collect_obj_files(includes_binary_dir: str, out_buf: bytes, out_size: t.CSizeT) -> t.CSizeT: pass - -def link_obj_to_exe(output_dir: str, module_name: str, linker_cmd: str, linker_flags: str, linker_output: str, includes_binary_dir: str) -> int: pass - -def compile_module_to_obj(ir_buf: bytes, ir_len: t.CSizeT, temp_dir: str, output_dir: str, module_name: str, cc_cmd: str, cc_flags: str) -> int: pass - -def link_objs_to_exe(obj_paths: str, obj_paths_len: t.CSizeT, linker_cmd: str, linker_flags: str, linker_output: str, includes_binary_dir: str) -> int: pass - -def run_pipeline(ir_buf: bytes, ir_len: t.CSizeT, temp_dir: str, output_dir: str, module_name: str, cc_cmd: str, cc_flags: str, linker_cmd: str, linker_flags: str, linker_output: str, includes_binary_dir: str) -> BuildResult | t.CPtr: pass diff --git a/.transpyc_cache/067f811511854c88.pyi b/.transpyc_cache/067f811511854c88.pyi deleted file mode 100644 index cef2575..0000000 --- a/.transpyc_cache/067f811511854c88.pyi +++ /dev/null @@ -1,48 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - -import c - - -import t -import stdio -import testcheck - -def add(a: t.CInt, b: t.CInt) -> t.CInt: pass - -def sub(a: t.CInt, b: t.CInt) -> t.CInt: pass - -def multi_args(a: t.CInt, b: t.CInt, c: t.CInt, d: t.CInt) -> t.CInt: pass - -def factorial(n: t.CInt) -> t.CInt: pass - -def fib(n: t.CInt) -> t.CInt: pass - -def add_via_ptr(p: t.CInt | t.CPtr, val: t.CInt) -> t.CInt: pass - -def make_u64() -> t.CUInt64T: pass - -def is_even(n: t.CInt) -> t.CBool: pass - -def test_basic_call() -> t.CInt: pass - -def test_multi_args() -> t.CInt: pass - -def test_recursion() -> t.CInt: pass - -def test_fibonacci() -> t.CInt: pass - -def test_ptr_param() -> t.CInt: pass - -def test_u64_return() -> t.CInt: pass - -def test_bool_return() -> t.CInt: pass - -def test_nested_call() -> t.CInt: pass - - -import w32.win32memory - -def main() -> t.CInt: pass diff --git a/.transpyc_cache/07a8c82a8ca2be90.doc.json b/.transpyc_cache/07a8c82a8ca2be90.doc.json deleted file mode 100644 index 1f30b90..0000000 --- a/.transpyc_cache/07a8c82a8ca2be90.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_binop_to_dunder": "将 BinOp 运算符映射到 dunder 方法名,无映射时返回 None", "_cmpop_to_dunder": "将 Compare 运算符映射到 dunder 方法名,无映射时返回 None", "try_operator_overload": "尝试运算符重载:lhs 是结构体指针时调用 dunder 方法,否则返回 None", "translate_binop": "翻译二元运算(自动类型提升)"} \ No newline at end of file diff --git a/.transpyc_cache/07a8c82a8ca2be90.pyi b/.transpyc_cache/07a8c82a8ca2be90.pyi deleted file mode 100644 index 1481115..0000000 --- a/.transpyc_cache/07a8c82a8ca2be90.pyi +++ /dev/null @@ -1,24 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprOps.py -Module: lib.core.Handles.HandlesExprOps -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import viperlib -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesTranslator as HT - -def _binop_to_dunder(op: int) -> str: pass - -def _cmpop_to_dunder(op: int) -> str: pass - -def try_operator_overload(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, lhs: llvmlite.Value | t.CPtr, rhs: llvmlite.Value | t.CPtr, op: int, trans: HT.Translator | t.CPtr, is_compare: int) -> llvmlite.Value | t.CPtr: pass - -def translate_binop(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass diff --git a/.transpyc_cache/07f7da85af876124.doc.json b/.transpyc_cache/07f7da85af876124.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/07f7da85af876124.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/07f7da85af876124.pyi b/.transpyc_cache/07f7da85af876124.pyi deleted file mode 100644 index 7abdba5..0000000 --- a/.transpyc_cache/07f7da85af876124.pyi +++ /dev/null @@ -1,10 +0,0 @@ -""" -Auto-generated Python stub file from ptr_test.py -Module: ptr_test -""" - - -import stdio -import t, c - -def ptr_test() -> int: pass diff --git a/.transpyc_cache/0853acdbdfc9b27c.doc.json b/.transpyc_cache/0853acdbdfc9b27c.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/0853acdbdfc9b27c.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/0853acdbdfc9b27c.pyi b/.transpyc_cache/0853acdbdfc9b27c.pyi deleted file mode 100644 index 821be2f..0000000 --- a/.transpyc_cache/0853acdbdfc9b27c.pyi +++ /dev/null @@ -1,22 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - - -from stdint import * -import t, c -from t import CInt, CExport -from stdio import printf -import memhub -import stdlib -import sys -import string -import ast -import w32.win32console - -ARENA_SIZE: t.CDefine = 1048576 -POOL_SIZE: t.CDefine = 524288 -DUMP_SIZE: t.CDefine = 262144 - -def main() -> CInt | CExport: pass diff --git a/.transpyc_cache/08ea5281873244fd.doc.json b/.transpyc_cache/08ea5281873244fd.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/08ea5281873244fd.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/08ea5281873244fd.pyi b/.transpyc_cache/08ea5281873244fd.pyi deleted file mode 100644 index 0c46010..0000000 --- a/.transpyc_cache/08ea5281873244fd.pyi +++ /dev/null @@ -1,19 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - - -import t, c -from stdint import * -import stdio -import stdlib -import string -import memhub -import argparse -import testcheck - -_mbuddy: t.CExtern | memhub.MemBuddy | t.CPtr - -@t.CExport -def main() -> int: pass diff --git a/.transpyc_cache/08f96e9e0bc0501b.doc.json b/.transpyc_cache/08f96e9e0bc0501b.doc.json deleted file mode 100644 index 92253b4..0000000 --- a/.transpyc_cache/08f96e9e0bc0501b.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"add_imported_module": "记录已导入的模块名,返回新的 imported_modules 字符串指针", "is_module_imported": "检查模块是否已导入(词边界精确匹配,避免子串误匹配)", "add_from_import": "添加 from-import 映射 \"name:module\",返回新的 from_imports 字符串", "lookup_from_import": "查找 from-import 名称,返回模块名或 None\n\n 支持 star import: 如果 from_imports 中有 \"*:module\" 条目,\n 且未找到精确名称匹配,且 allow_star_fallback != 0,则返回 star import 的模块名。\n ", "ImportsHandle": "导入语句处理器:继承 Mixin 获得 Trans 回指针", "ImportsHandle.HandleImport": "处理 import 语句,返回 0", "ImportsHandle.HandleImportFromModule": "处理 from X import Y 的模块部分,更新 trans._imported_modules", "ImportsHandle.HandleImportFromNames": "处理 from X import Y 的名称部分,更新 trans._from_imports"} \ No newline at end of file diff --git a/.transpyc_cache/08f96e9e0bc0501b.pyi b/.transpyc_cache/08f96e9e0bc0501b.pyi deleted file mode 100644 index 2bf7399..0000000 --- a/.transpyc_cache/08f96e9e0bc0501b.pyi +++ /dev/null @@ -1,34 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesImports.py -Module: lib.core.Handles.HandlesImports -""" - - -import t, c -from stdint import * -import ast -import memhub -import string -import viperlib -import stdio -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesStruct as HandlesStruct - -def add_imported_module(pool: memhub.MemBuddy | t.CPtr, imported_modules: str, name: str) -> str: pass - -def is_module_imported(imported_modules: str, name: str) -> int: pass - -def add_from_import(pool: memhub.MemBuddy | t.CPtr, from_imports: str, local_name: str, module_name: str) -> str: pass - -def lookup_from_import(from_imports: str, name: str, allow_star_fallback: int) -> str: pass - - -@t.NoVTable -class ImportsHandle(HandlesBase.Mixin): - def __init__(self: ImportsHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleImport(self: ImportsHandle, node: ast.AST | t.CPtr) -> int: pass - def HandleImportFromModule(self: ImportsHandle, node: ast.AST | t.CPtr) -> int: pass - def HandleImportFromNames(self: ImportsHandle, node: ast.AST | t.CPtr) -> int: pass - -def NewImportsHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ImportsHandle | t.CPtr: pass diff --git a/.transpyc_cache/0900c165e9bcb8f1.doc.json b/.transpyc_cache/0900c165e9bcb8f1.doc.json deleted file mode 100644 index 215ef80..0000000 --- a/.transpyc_cache/0900c165e9bcb8f1.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_get_external_func_param_ty": "获取外部函数第 param_idx 个参数的期望类型,None 表示用字面量原类型", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数\n\n 直接接收三个 Value 参数,避免通过 Next 链表遍历(共享 alloca 对象的\n Next 字段可能被其他操作污染,导致链表断裂)。\n ", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/0900c165e9bcb8f1.pyi b/.transpyc_cache/0900c165e9bcb8f1.pyi deleted file mode 100644 index 5214419..0000000 --- a/.transpyc_cache/0900c165e9bcb8f1.pyi +++ /dev/null @@ -1,173 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _get_external_func_param_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str, param_idx: int) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, dst_val: llvmlite.Value | t.CPtr, src_val: llvmlite.Value | t.CPtr, num_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/0b82fcb0aa3212c5.doc.json b/.transpyc_cache/0b82fcb0aa3212c5.doc.json deleted file mode 100644 index 56e8c7e..0000000 --- a/.transpyc_cache/0b82fcb0aa3212c5.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"RunPhase1": "Phase1: 扫描 includes 目录,按需翻译并生成 stub"} \ No newline at end of file diff --git a/.transpyc_cache/0b82fcb0aa3212c5.pyi b/.transpyc_cache/0b82fcb0aa3212c5.pyi deleted file mode 100644 index d866b3e..0000000 --- a/.transpyc_cache/0b82fcb0aa3212c5.pyi +++ /dev/null @@ -1,31 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Phase1.py -Module: lib.core.Phase1 -""" - - -import t, c -from stdint import * -import stdio -import string -import stdlib -import memhub -import viperlib -import w32.fileio as fileio -import w32.win32file -import w32.win32base -import ast -import llvmlite -import lib.core.VLogger as VLogger -import lib.core.Handles.HandlesTranslator as HandlesTranslator -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.IncludesScanner as IncludesScanner -import lib.core.StubMerger as StubMerger -import lib.Projectrans.Config as Config - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -SRC_BUF_SIZE: t.CDefine = 1048576 - -def RunPhase1(mb: memhub.MemBuddy | t.CPtr, includes_dir: str, temp_dir: str, log: VLogger.Logger | t.CPtr) -> int: pass diff --git a/.transpyc_cache/0c212981c180e7fb.pyi b/.transpyc_cache/0c212981c180e7fb.pyi deleted file mode 100644 index f432b06..0000000 --- a/.transpyc_cache/0c212981c180e7fb.pyi +++ /dev/null @@ -1,67 +0,0 @@ -""" -Auto-generated Python stub file from ast.lexer.py -Module: ast.lexer -""" - - -import t, c -from stdint import * -import memhub -import string -from .tokens import Token, TokenType, TokOp, _init_tables, _kw_lookup, _op_head, OpEntry, new_token, token_set_str, token_set_str_literal - -LEXER_MAX_INDENT: t.CDefine = 256 - -class Lexer: - src: str - pos: t.CSizeT - len: t.CSizeT - lineno: t.CInt - col: t.CInt - pool: memhub.MemManager | t.CPtr - indent_stack: t.CInt | t.CPtr - indent_top: t.CInt - paren_depth: t.CInt - tokens_head: Token | t.CPtr - tokens_tail: Token | t.CPtr - at_line_start: t.CInt - error_count: t.CInt - def __new__(self: Lexer, pool: memhub.MemManager | t.CPtr) -> t.CInt: pass - -def new_lexer(pool: memhub.MemManager | t.CPtr) -> Lexer | t.CPtr: pass - -def _lexer_init(lx: Lexer | t.CPtr, src: str, pool: memhub.MemManager | t.CPtr) -> t.CInt: pass - -def _peek(lx: Lexer | t.CPtr, offset: t.CSizeT) -> t.CChar: pass - -def _peek_cur(lx: Lexer | t.CPtr) -> t.CChar: pass - -def _advance(lx: Lexer | t.CPtr) -> t.CChar: pass - -def _is_alpha(ch: t.CChar) -> t.CInt: pass - -def _is_digit(ch: t.CChar) -> t.CInt: pass - -def _is_alnum(ch: t.CChar) -> t.CInt: pass - -def _is_hex(ch: t.CChar) -> t.CInt: pass - -def _is_space(ch: t.CChar) -> t.CInt: pass - -def _emit(lx: Lexer | t.CPtr, tok: Token | t.CPtr) -> t.CInt: pass - -def _make_op_token(lx: Lexer | t.CPtr, op_id: t.CInt, length: t.CInt, lineno: t.CInt, col: t.CInt) -> Token | t.CPtr: pass - -def _handle_indent(lx: Lexer | t.CPtr) -> t.CInt: pass - -def _read_name(lx: Lexer | t.CPtr) -> t.CInt: pass - -def _read_number(lx: Lexer | t.CPtr) -> t.CInt: pass - -def _emit_number(lx: Lexer | t.CPtr, start: t.CSizeT, start_lineno: t.CInt, start_col: t.CInt, is_float: t.CInt, is_complex: t.CInt, is_hex: t.CInt) -> t.CInt: pass - -def _read_string(lx: Lexer | t.CPtr) -> t.CInt: pass - -def _read_operator(lx: Lexer | t.CPtr) -> t.CInt: pass - -def tokenize(lx: Lexer | t.CPtr) -> Token | t.CPtr: pass diff --git a/.transpyc_cache/0c56128647a0b845.doc.json b/.transpyc_cache/0c56128647a0b845.doc.json deleted file mode 100644 index 47b3516..0000000 --- a/.transpyc_cache/0c56128647a0b845.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"register_cdefine_constant": "注册 CDefine 编译期常量到全局表", "lookup_cdefine_constant": "查找 CDefine 编译期常量,返回值或 -1(未找到)", "clear_cdefine_constants": "清空 CDefine 常量表(模块切换时调用)", "set_generic_context": "设置泛型特化上下文(进入泛型类方法体翻译时调用)", "clear_generic_context": "清除泛型特化上下文(离开泛型类方法体翻译时调用)", "resolve_generic_type_name": "如果 name 是泛型类型参数,返回对应的具体类型名;否则返回 name 本身\n\n 用于表达式中的 T 替换(如 T.__sizeof__() → int.__sizeof__())\n ", "_get_type_name_from_annotation": "从类型注解节点提取类型名(支持 Name/Attribute/BinOp)", "_parse_type_string": "将类型名字符串解析为 AST 节点", "set_current_file": "设置当前编译的文件名(供报错使用)", "_read_source_line": "从源文件读取第 lineno 行内容", "fatal_error": "以 Python 风格报错并退出(带源代码行)", "fatal_type_error": "以 Python 风格报错并退出(fatal_error 的别名)", "map_t_type": "将 t.CXxx / c.CXxx 类型名映射到 LLVMType\n\n 注意: t.CChar | t.CPtr = i8* = str = bytes\n ", "_is_t_attr": "检测节点是否是 t.attr_name 形式", "extract_class_name_from_annotation": "从类型注解 AST 中提取类名,返回 None=无法提取", "resolve_annotation_type": "解析类型注解节点为 LLVMType\n\n Args:\n pool: 内存分配器\n node: 类型注解 AST 节点(Name 或 Attribute)\n imported_modules: 已导入模块名字符串(空格分隔)\n from_imports: from-import 映射字符串(\"name:module name:module\" 格式)\n ", "has_decorator_marker": "检测类型注解中是否包含指定的装饰器标记", "is_pass_body": "检测函数体是否为 pass(空体或仅含 pass 语句)", "get_llvm_type_bits": "获取 LLVM 整数类型的位宽,非整数类型返回 0", "infer_expr_type": "推断表达式的 LLVM 类型\n\n param_types 格式: \"name:bits,name:bits,...\"\n ", "infer_return_type": "扫描函数体中的 return 语句,推断返回类型", "build_param_types_str": "构建参数类型编码字符串 \"name:bits,name:bits,...\" ", "_strappend": "将 src 追加到 dst 末尾"} \ No newline at end of file diff --git a/.transpyc_cache/0c56128647a0b845.pyi b/.transpyc_cache/0c56128647a0b845.pyi deleted file mode 100644 index b7e0303..0000000 --- a/.transpyc_cache/0c56128647a0b845.pyi +++ /dev/null @@ -1,74 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesType.py -Module: lib.core.Handles.HandlesType -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import sys -import stdlib -import viperlib -import w32.fileio as fileio -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesStruct as HandlesStruct - -_g_current_file: t.CExtern | str -_g_generic_tp_names: t.CExtern | list[str] | t.CPtr -_g_generic_type_args: t.CExtern | list[str] | t.CPtr -_g_cdefine_names: t.CExtern | list[str] | t.CPtr -_g_cdefine_values: t.CExtern | list[str] | t.CPtr - -def register_cdefine_constant(pool: memhub.MemBuddy | t.CPtr, name: str, value: int) -> None: pass - -def lookup_cdefine_constant(name: str) -> int: pass - -def clear_cdefine_constants() -> None: pass - -def set_generic_context(tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> t.CInt: pass - -def clear_generic_context() -> t.CInt: pass - -def resolve_generic_type_name(name: str) -> str: pass - -def _get_type_name_from_annotation(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _parse_type_string(pool: memhub.MemBuddy | t.CPtr, type_str: str, ctx: t.CInt) -> ast.AST | t.CPtr: pass - -def set_current_file(file_path: str) -> t.CInt: pass - - -_SRC_BUF_SIZE: t.CDefine = 262144 - -def _read_source_line(file_path: str, lineno: int) -> str: pass - -def fatal_error(node: ast.AST | t.CPtr, msg: str) -> t.CInt: pass - -def fatal_type_error(node: ast.AST | t.CPtr, msg: str) -> t.CInt: pass - -def map_t_type(pool: memhub.MemBuddy | t.CPtr, type_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _is_t_attr(node: ast.AST | t.CPtr, attr_name: str, imported_modules: str) -> int: pass - -def extract_class_name_from_annotation(node: ast.AST | t.CPtr, imported_modules: str) -> str: pass - -def resolve_annotation_type(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr, imported_modules: str, from_imports: str) -> llvmlite.LLVMType | t.CPtr: pass - -def has_decorator_marker(node: ast.AST | t.CPtr, marker_name: str) -> int: pass - -def is_pass_body(body: list[ast.AST | t.CPtr] | t.CPtr) -> int: pass - -def get_llvm_type_bits(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def infer_expr_type(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr, param_types: str) -> llvmlite.LLVMType | t.CPtr: pass - -def infer_return_type(pool: memhub.MemBuddy | t.CPtr, body: list[ast.AST | t.CPtr] | t.CPtr, param_types: str) -> llvmlite.LLVMType | t.CPtr: pass - -def build_param_types_str(pool: memhub.MemBuddy | t.CPtr, args_node: ast.AST | t.CPtr) -> str: pass - -def _strappend(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass diff --git a/.transpyc_cache/0df65b8ed15664b0.pyi b/.transpyc_cache/0df65b8ed15664b0.pyi deleted file mode 100644 index e33dc69..0000000 --- a/.transpyc_cache/0df65b8ed15664b0.pyi +++ /dev/null @@ -1,30 +0,0 @@ -""" -Auto-generated Python stub file from hashlib.__sha1.py -Module: hashlib.__sha1 -""" - - -import string -import t, c - -SHA1_BLOCK_LEN: t.CDefine = 64 -SHA1_DIGEST_LEN: t.CDefine = 20 - -def sha1_rotl(x: t.CUInt32T, n: t.CInt) -> t.CUInt32T: pass - -def sha1_f1(b: t.CUInt32T, c: t.CUInt32T, d: t.CUInt32T) -> t.CUInt32T: pass - -def sha1_f2(b: t.CUInt32T, c: t.CUInt32T, d: t.CUInt32T) -> t.CUInt32T: pass - -def sha1_f3(b: t.CUInt32T, c: t.CUInt32T, d: t.CUInt32T) -> t.CUInt32T: pass - - -@t.Object -class sha1: - state: t.CArray[t.CUInt32T, 5] - count: t.CUInt64T - buf: t.CArray[t.CUInt8T, SHA1_BLOCK_LEN] - def __init__(self: sha1) -> t.CInt: pass - def transform(self: sha1, block: t.CUInt8T | t.CPtr) -> t.CInt: pass - def update(self: sha1, s: str) -> t.CInt: pass - def final(self: sha1, out: t.CArray[t.CUInt8T, SHA1_DIGEST_LEN]) -> t.CInt: pass \ No newline at end of file diff --git a/.transpyc_cache/0e1189314c937ef1.doc.json b/.transpyc_cache/0e1189314c937ef1.doc.json deleted file mode 100644 index 45712e2..0000000 --- a/.transpyc_cache/0e1189314c937ef1.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"AnnAssignHandle": "AnnAssign 语句处理器:继承 Mixin 获得 Trans 回指针", "AnnAssignHandle._is_cdefine_annotation": "检测注解是否为 t.CDefine,返回 1 表示是,0 表示否", "AnnAssignHandle._extract_cdefine_int_value": "从值节点提取整数常量(仅支持 Constant INT)", "AnnAssignHandle.PreScan": "预扫描 AnnAssign,提前创建 alloca 到 entry block 顶部", "AnnAssignHandle.Handle": "翻译 AnnAssign(target=Name, annotation=..., value=expr)"} \ No newline at end of file diff --git a/.transpyc_cache/0e1189314c937ef1.pyi b/.transpyc_cache/0e1189314c937ef1.pyi deleted file mode 100644 index 350baa1..0000000 --- a/.transpyc_cache/0e1189314c937ef1.pyi +++ /dev/null @@ -1,30 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesAnnAssign.py -Module: lib.core.Handles.HandlesAnnAssign -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesNonlocal as HandlesNonlocal -import lib.core.Handles.HandlesClassDef as HandlesClassDef -import lib.core.Handles.HandlesExprCall as HandlesExprCall - -@t.NoVTable -class AnnAssignHandle(HandlesBase.Mixin): - def __init__(self: AnnAssignHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def _is_cdefine_annotation(self: AnnAssignHandle, annot: ast.AST | t.CPtr) -> int: pass - def _extract_cdefine_int_value(self: AnnAssignHandle, val_node: ast.AST | t.CPtr) -> int: pass - def PreScan(self: AnnAssignHandle, node: ast.AST | t.CPtr) -> int: pass - def Handle(self: AnnAssignHandle, node: ast.AST | t.CPtr) -> int: pass - -def NewAnnAssignHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> AnnAssignHandle | t.CPtr: pass diff --git a/.transpyc_cache/0eccc2393466d940.doc.json b/.transpyc_cache/0eccc2393466d940.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/0eccc2393466d940.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/0eccc2393466d940.pyi b/.transpyc_cache/0eccc2393466d940.pyi deleted file mode 100644 index b4f6066..0000000 --- a/.transpyc_cache/0eccc2393466d940.pyi +++ /dev/null @@ -1,18 +0,0 @@ -""" -Auto-generated Python stub file from augassign_test.py -Module: augassign_test -""" - - -import stdio -import t, c - -g_count: t.CExtern | int - -def test_local() -> int: pass - -def test_global_aug() -> int: pass - -def test_bitops() -> int: pass - -def augassign_test() -> int: pass diff --git a/.transpyc_cache/0f8134f67bdaba8f.doc.json b/.transpyc_cache/0f8134f67bdaba8f.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/0f8134f67bdaba8f.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/0f8134f67bdaba8f.pyi b/.transpyc_cache/0f8134f67bdaba8f.pyi deleted file mode 100644 index 3f2901b..0000000 --- a/.transpyc_cache/0f8134f67bdaba8f.pyi +++ /dev/null @@ -1,122 +0,0 @@ -""" -Auto-generated Python stub file from __zlib.pyzlib.py -Module: __zlib.pyzlib -""" - - -from stdint import * -import zdeflate -import zinflate -import zchecksum -import zdef -import zhuff -import stdlib -import string -import t, c - -Z_NO_COMPRESSION: t.CDefine = 0 -Z_BEST_SPEED: t.CDefine = 1 -Z_BEST_COMPRESSION: t.CDefine = 9 -Z_DEFAULT_COMPRESSION: t.CDefine = (-1) -DEFLATED: t.CDefine = 8 -Z_NO_FLUSH: t.CDefine = 0 -Z_PARTIAL_FLUSH: t.CDefine = 1 -Z_SYNC_FLUSH: t.CDefine = 2 -Z_FULL_FLUSH: t.CDefine = 3 -Z_FINISH: t.CDefine = 4 -Z_BLOCK: t.CDefine = 5 -Z_TREES: t.CDefine = 6 -Z_DEFAULT_STRATEGY: t.CDefine = 0 -Z_FILTERED: t.CDefine = 1 -Z_HUFFMAN_ONLY: t.CDefine = 2 -Z_RLE: t.CDefine = 3 -Z_FIXED: t.CDefine = 4 -Z_OK: t.CDefine = 0 -Z_STREAM_END: t.CDefine = 1 -Z_NEED_DICT: t.CDefine = 2 -Z_ERRNO: t.CDefine = (-1) -Z_STREAM_ERROR: t.CDefine = (-2) -Z_DATA_ERROR: t.CDefine = (-3) -Z_MEM_ERROR: t.CDefine = (-4) -Z_BUF_ERROR: t.CDefine = (-5) -Z_VERSION_ERROR: t.CDefine = (-6) -MAX_WBITS: t.CDefine = 15 -DEF_BUF_SIZE: t.CDefine = 16384 -DEF_MEM_LEVEL: t.CDefine = 8 -ZLIB_VERSION: t.CDefine = "1.3.2" -pyzlib_error_msg: t.CExtern | t.CArray[t.CChar, 512] -pyzlib_error_code_val: t.CExtern | t.CInt - -@t.Object -class Compress: - stream: VOIDPTR - is_initialized: t.CInt - is_finished: t.CInt - level: t.CInt - method: t.CInt - wbits: t.CInt - memLevel: t.CInt - strategy: t.CInt - zdict: BYTEPTR - zdict_len: t.CSizeT - last_pos: t.CSizeT - input_buf: BYTEPTR - input_buf_len: t.CSizeT - input_buf_cap: t.CSizeT - header_written: t.CInt - def compress(self: Compress, data: BYTEPTR, data_len: t.CSizeT, out_len: t.CSizeT | t.CPtr) -> BYTEPTR: pass - def flush(self: Compress, mode: t.CInt, out_len: t.CSizeT | t.CPtr) -> BYTEPTR: pass - def copy(self: Compress) -> Compress | t.CPtr: pass - def delete(self: Compress) -> t.CInt: pass - def __del__(self: Compress) -> t.CInt: pass -@t.Object -class Decompress: - stream: VOIDPTR - is_initialized: t.CInt - eof: t.CInt - wbits: t.CInt - zdict: BYTEPTR - zdict_len: t.CSizeT - _unused_data: BYTEPTR - _unused_data_len: t.CSizeT - _unused_data_cap: t.CSizeT - _unconsumed_tail: BYTEPTR - _unconsumed_tail_len: t.CSizeT - _unconsumed_tail_cap: t.CSizeT - input_buf: BYTEPTR - input_buf_len: t.CSizeT - input_buf_cap: t.CSizeT - def decompress(self: Decompress, data: BYTEPTR, data_len: t.CSizeT, max_length: t.CSizeT, out_len: t.CSizeT | t.CPtr) -> BYTEPTR: pass - def flush(self: Decompress, length: t.CSizeT, out_len: t.CSizeT | t.CPtr) -> BYTEPTR: pass - def copy(self: Decompress) -> Decompress | t.CPtr: pass - def delete(self: Decompress) -> t.CInt: pass - def unused_data(self: Decompress, length: t.CSizeT | t.CPtr) -> BYTEPTR: pass - def unconsumed_tail(self: Decompress, length: t.CSizeT | t.CPtr) -> BYTEPTR: pass - -def set_error(code: int, msg: str) -> t.CInt: pass - -def clone_bytes(src: BYTEPTR, length: t.CSizeT) -> BYTEPTR: pass - -def append_bytes(buf: BYTE | t.CPtr[t.CPtr], length: t.CSizeT | t.CPtr, cap: t.CSizeT | t.CPtr, data: BYTEPTR, data_len: t.CSizeT) -> t.CInt: pass - -def shrink_to_fit(buf: BYTEPTR, length: t.CSizeT) -> BYTEPTR: pass - -def runtime_version() -> str: pass - -def get_error() -> str: pass - -def get_error_code() -> t.CInt: pass - -def clear_error() -> t.CInt: pass - -def compress(data: BYTEPTR, data_len: t.CSizeT, level: t.CInt, wbits: t.CInt, out_len: t.CSizeT | t.CPtr) -> BYTEPTR: pass - -def decompress(data: BYTEPTR, data_len: t.CSizeT, wbits: t.CInt, bufsize: t.CSizeT, out_len: t.CSizeT | t.CPtr) -> BYTEPTR: pass - -def compressobj(level: t.CInt, method: t.CInt, wbits: t.CInt, memLevel: t.CInt, strategy: t.CInt, zdict: BYTEPTR, zdict_len: t.CSizeT) -> Compress | t.CPtr: pass - -def decompressobj(wbits: t.CInt, zdict: BYTEPTR, zdict_len: t.CSizeT) -> Decompress | t.CPtr: pass - -def zlib_adler32(data: BYTEPTR, length: t.CSizeT, value: t.CUnsignedLong) -> t.CUnsignedLong: pass - -def zlib_crc32(data: BYTEPTR, length: t.CSizeT, value: t.CUnsignedLong) -> t.CUnsignedLong: pass diff --git a/.transpyc_cache/0fef3cb77da3dae3.doc.json b/.transpyc_cache/0fef3cb77da3dae3.doc.json deleted file mode 100644 index c00e036..0000000 --- a/.transpyc_cache/0fef3cb77da3dae3.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数\n\n 直接接收三个 Value 参数,避免通过 Next 链表遍历(共享 alloca 对象的\n Next 字段可能被其他操作污染,导致链表断裂)。\n ", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/0fef3cb77da3dae3.pyi b/.transpyc_cache/0fef3cb77da3dae3.pyi deleted file mode 100644 index 40c3168..0000000 --- a/.transpyc_cache/0fef3cb77da3dae3.pyi +++ /dev/null @@ -1,171 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, dst_val: llvmlite.Value | t.CPtr, src_val: llvmlite.Value | t.CPtr, num_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/10ac4af023af7962.doc.json b/.transpyc_cache/10ac4af023af7962.doc.json deleted file mode 100644 index 45fcbeb..0000000 --- a/.transpyc_cache/10ac4af023af7962.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_generic_context": "设置泛型特化上下文(进入泛型类方法体翻译时调用)", "clear_generic_context": "清除泛型特化上下文(离开泛型类方法体翻译时调用)", "resolve_generic_type_name": "如果 name 是泛型类型参数,返回对应的具体类型名;否则返回 name 本身\n\n 用于表达式中的 T 替换(如 T.__sizeof__() → int.__sizeof__())\n ", "_get_type_name_from_annotation": "从类型注解节点提取类型名(支持 Name/Attribute/BinOp)", "_parse_type_string": "将类型名字符串解析为 AST 节点", "set_current_file": "设置当前编译的文件名(供报错使用)", "_read_source_line": "从源文件读取第 lineno 行内容", "fatal_error": "以 Python 风格报错并退出(带源代码行)", "fatal_type_error": "以 Python 风格报错并退出(fatal_error 的别名)", "map_t_type": "将 t.CXxx / c.CXxx 类型名映射到 LLVMType\n\n 注意: t.CChar | t.CPtr = i8* = str = bytes\n ", "_is_t_attr": "检测节点是否是 t.attr_name 形式", "extract_class_name_from_annotation": "从类型注解 AST 中提取类名,返回 None=无法提取", "resolve_annotation_type": "解析类型注解节点为 LLVMType\n\n Args:\n pool: 内存分配器\n node: 类型注解 AST 节点(Name 或 Attribute)\n imported_modules: 已导入模块名字符串(空格分隔)\n from_imports: from-import 映射字符串(\"name:module name:module\" 格式)\n ", "has_decorator_marker": "检测类型注解中是否包含指定的装饰器标记", "is_pass_body": "检测函数体是否为 pass(空体或仅含 pass 语句)", "get_llvm_type_bits": "获取 LLVM 整数类型的位宽,非整数类型返回 0", "infer_expr_type": "推断表达式的 LLVM 类型\n\n param_types 格式: \"name:bits,name:bits,...\"\n ", "infer_return_type": "扫描函数体中的 return 语句,推断返回类型", "build_param_types_str": "构建参数类型编码字符串 \"name:bits,name:bits,...\" ", "_strappend": "将 src 追加到 dst 末尾"} \ No newline at end of file diff --git a/.transpyc_cache/10ac4af023af7962.pyi b/.transpyc_cache/10ac4af023af7962.pyi deleted file mode 100644 index d6de8a3..0000000 --- a/.transpyc_cache/10ac4af023af7962.pyi +++ /dev/null @@ -1,66 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesType.py -Module: lib.core.Handles.HandlesType -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import sys -import stdlib -import viperlib -import w32.fileio as fileio -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesStruct as HandlesStruct - -_g_current_file: t.CExtern | str -_g_generic_tp_names: t.CExtern | list[str] | t.CPtr -_g_generic_type_args: t.CExtern | list[str] | t.CPtr - -def set_generic_context(tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> t.CInt: pass - -def clear_generic_context() -> t.CInt: pass - -def resolve_generic_type_name(name: str) -> str: pass - -def _get_type_name_from_annotation(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _parse_type_string(pool: memhub.MemBuddy | t.CPtr, type_str: str, ctx: t.CInt) -> ast.AST | t.CPtr: pass - -def set_current_file(file_path: str) -> t.CInt: pass - - -_SRC_BUF_SIZE: t.CDefine = 262144 - -def _read_source_line(file_path: str, lineno: int) -> str: pass - -def fatal_error(node: ast.AST | t.CPtr, msg: str) -> t.CInt: pass - -def fatal_type_error(node: ast.AST | t.CPtr, msg: str) -> t.CInt: pass - -def map_t_type(pool: memhub.MemBuddy | t.CPtr, type_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _is_t_attr(node: ast.AST | t.CPtr, attr_name: str, imported_modules: str) -> int: pass - -def extract_class_name_from_annotation(node: ast.AST | t.CPtr, imported_modules: str) -> str: pass - -def resolve_annotation_type(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr, imported_modules: str, from_imports: str) -> llvmlite.LLVMType | t.CPtr: pass - -def has_decorator_marker(node: ast.AST | t.CPtr, marker_name: str) -> int: pass - -def is_pass_body(body: list[ast.AST | t.CPtr] | t.CPtr) -> int: pass - -def get_llvm_type_bits(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def infer_expr_type(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr, param_types: str) -> llvmlite.LLVMType | t.CPtr: pass - -def infer_return_type(pool: memhub.MemBuddy | t.CPtr, body: list[ast.AST | t.CPtr] | t.CPtr, param_types: str) -> llvmlite.LLVMType | t.CPtr: pass - -def build_param_types_str(pool: memhub.MemBuddy | t.CPtr, args_node: ast.AST | t.CPtr) -> str: pass - -def _strappend(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass diff --git a/.transpyc_cache/117b4962d332b4c5.doc.json b/.transpyc_cache/117b4962d332b4c5.doc.json deleted file mode 100644 index 95e17f3..0000000 --- a/.transpyc_cache/117b4962d332b4c5.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_load_includes_sha1_set": "读取 _sha1_map.txt,将 includes/ 开头的 SHA1 写入 sha1_set\n sha1_set 大小为 MAX_INCLUDES_SHA1 * 17(每个 SHA1 16字符+null)\n 返回找到的 includes SHA1 数量,-1 表示错误", "_is_in_sha1_set": "检查 sha1 是否在集合中", "WriteIncludesSha1Map": "将 includes 扫描结果写入 _sha1_map.txt(供 StubMerger 使用)\n\n 若 filter_set 不为 None 且 filter_count > 0,只写入 filter_set 中的条目。\n ", "_IsFuncDeclaredOrDefined": "检查 out_buf 中是否已有函数的 declare 或 define 行", "_CommentOutDeclareInBuf": "在 out_buf 中搜索 declare 行(包含 func_sig),将其注释掉", "_CommentOutGlobalInBuf": "在 out_buf 中搜索全局变量定义行(以 global_name 开头),将行首改为 ';'", "_CommentOutOpaqueTypeInBuf": "在 out_buf 中搜索 type_name_prefix 对应的 opaque 声明行,将行首改为 ';'\n\n type_name_prefix 格式: '%\"sha1.ClassName\"'(不含 '=' 和后续内容)\n 返回 1=已注释, 0=未找到\n ", "_HasFullTypeDefinition": "检查 out_buf 中是否已有 type_name_prefix 的完整定义", "_LoadAndAppendStub": "加载依赖 stub 并追加(跳过 header,去重)", "_LoadAndAppendTextDeclares": "从依赖 text.ll 提取 declare(define 转 declare),追加到 out_buf", "_PathToModuleName": "将文件路径转换为模块名", "_BuildIncludesSha1Map": "从 _sha1_map.txt 构建 sha1→module_name 映射,返回条目数", "_FindSha1ByModName": "从模块名查找 SHA1(精确匹配)", "_AddSha1ToSet": "将 SHA1 加入集合,返回新 count", "_BuildReachableSha1Set": "构建可达 SHA1 集合(依赖图按需翻译)", "BuildCombinedIR": "组合本地 stub + 依赖 stubs + 本地 text → out_buf(按需加载)"} \ No newline at end of file diff --git a/.transpyc_cache/117b4962d332b4c5.pyi b/.transpyc_cache/117b4962d332b4c5.pyi deleted file mode 100644 index 4466a75..0000000 --- a/.transpyc_cache/117b4962d332b4c5.pyi +++ /dev/null @@ -1,60 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.StubMerger.py -Module: lib.core.StubMerger -""" - - -import t, c -from stdint import * -import memhub -import string -import stdio -import stdlib -import llvmlite -import w32.win32file as win32file -import w32.win32base as win32base -import w32.fileio as fileio -import viperlib -import sys -import ast -import lib.core.IncludesScanner as IncludesScanner -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesTranslator as HandlesTranslator - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -MAX_INCLUDES_SHA1: t.CDefine = 256 -STUB_READ_BUF_SIZE: t.CDefine = 262144 -MAX_INCLUDES: t.CDefine = 256 - -def _load_includes_sha1_set(pool: memhub.MemBuddy | t.CPtr, temp_dir: str, sha1_set: str) -> int: pass - -def _is_in_sha1_set(sha1: str, sha1_set: str, set_count: int) -> int: pass - -def WriteIncludesSha1Map(mb: memhub.MemBuddy | t.CPtr, temp_dir: str, scan_result: IncludesScanner.ScanResult | t.CPtr, filter_set: t.CChar | t.CPtr, filter_count: int) -> int: pass - -def _IsFuncDeclaredOrDefined(out_buf: bytes, func_sig: str) -> int: pass - -def _CommentOutDeclareInBuf(out_buf: bytes, func_sig: str) -> int: pass - -def _CommentOutGlobalInBuf(out_buf: bytes, global_name: str) -> int: pass - -def _CommentOutOpaqueTypeInBuf(out_buf: bytes, type_name_prefix: str) -> int: pass - -def _HasFullTypeDefinition(out_buf: bytes, type_name_prefix: str) -> int: pass - -def _LoadAndAppendStub(temp_dir: str, td_len: t.CSizeT, dep_sha1: str, dep_buf: bytes, out_buf: bytes, out_size: t.CSizeT, out_pos: t.CSizeT) -> t.CSizeT: pass - -def _LoadAndAppendTextDeclares(temp_dir: str, td_len: t.CSizeT, dep_sha1: str, dep_buf: bytes, out_buf: bytes, out_size: t.CSizeT, out_pos: t.CSizeT) -> t.CSizeT: pass - -def _PathToModuleName(path: str) -> str: pass - -def _BuildIncludesSha1Map(temp_dir: str, td_len: t.CSizeT, sha1_list: t.CChar | t.CPtr, mod_list: t.CChar | t.CPtr) -> int: pass - -def _FindSha1ByModName(sha1_arr: t.CChar | t.CPtr, mod_arr: t.CChar | t.CPtr, count: int, mod_name: str) -> str: pass - -def _AddSha1ToSet(set_buf: t.CChar | t.CPtr, count: int, sha1: str) -> int: pass - -def _BuildReachableSha1Set(mb: memhub.MemBuddy | t.CPtr, source_dir: str, temp_dir: str, reachable_set: t.CChar | t.CPtr) -> int: pass - -def BuildCombinedIR(temp_dir: str, local_sha1: str, out_buf: bytes, out_size: t.CSizeT) -> t.CSizeT: pass diff --git a/.transpyc_cache/1193c9cd16698da8.doc.json b/.transpyc_cache/1193c9cd16698da8.doc.json deleted file mode 100644 index c3a1e25..0000000 --- a/.transpyc_cache/1193c9cd16698da8.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"SrcFileEntry": "源文件条目", "RunMultiFileProject": "多文件项目编译\n\n Returns: 0 成功,非 0 失败\n "} \ No newline at end of file diff --git a/.transpyc_cache/1193c9cd16698da8.pyi b/.transpyc_cache/1193c9cd16698da8.pyi deleted file mode 100644 index ad12e1f..0000000 --- a/.transpyc_cache/1193c9cd16698da8.pyi +++ /dev/null @@ -1,39 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Phase2.py -Module: lib.core.Phase2 -""" - - -import t, c -from stdint import * -import stdio -import string -import stdlib -import memhub -import viperlib -import w32.fileio as fileio -import w32.win32file -import w32.win32base -import sys -import ast -import llvmlite -import subprocess -import argparse -import lib.core.VLogger as VLogger -import lib.core.Handles.HandlesTranslator as HandlesTranslator -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.BuildPipeline as BuildPipeline -import lib.core.StubMerger as StubMerger -import lib.Projectrans.Utils as Utils -import lib.Projectrans.Config as Config - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -SRC_BUF_SIZE: t.CDefine = 1048576 -MAX_SRC_FILES: t.CDefine = 32 - -@t.NoVTable -class SrcFileEntry: - Path: str - Sha1: str - -def RunMultiFileProject(mb: memhub.MemBuddy | t.CPtr, source_dir: str, temp_dir: str, output_dir: str, cc_cmd: str, cc_flags: str, linker_cmd: str, linker_flags: str, linker_output: str, includes_binary_dir: str, includes_dir: str, do_phase1: int, do_phase2: int, log: VLogger.Logger | t.CPtr, args: argparse.ParsedArgs | t.CPtr) -> int: pass diff --git a/.transpyc_cache/13110effbb0bb06c.pyi b/.transpyc_cache/13110effbb0bb06c.pyi deleted file mode 100644 index 3584bd2..0000000 --- a/.transpyc_cache/13110effbb0bb06c.pyi +++ /dev/null @@ -1,35 +0,0 @@ -""" -Auto-generated Python stub file from os.path.py -Module: os.path -""" - - -import t, c -from stdint import * -import string -import memhub -import platmacro - -_mbuddy: t.CExtern | memhub.MemBuddy | t.CPtr - -def sep() -> t.CChar: pass - -def _is_sep(ch: t.CChar) -> bool: pass - -def _dup_str(s: str) -> str: pass - -def _substr(s: str, start: t.CSizeT, end: t.CSizeT) -> str: pass - -def isabs(path: str) -> bool: pass - -def join(path1: str, path2: str) -> str: pass - -def basename(path: str) -> str: pass - -def dirname(path: str) -> str: pass - -def splitext_name(path: str) -> str: pass - -def splitext_ext(path: str) -> str: pass - -def normpath(path: str) -> str: pass diff --git a/.transpyc_cache/13d9449413372bde.pyi b/.transpyc_cache/13d9449413372bde.pyi deleted file mode 100644 index c10ea89..0000000 --- a/.transpyc_cache/13d9449413372bde.pyi +++ /dev/null @@ -1,93 +0,0 @@ -""" -Auto-generated Python stub file from llvmlite.__function.py -Module: llvmlite.__function -""" - - -import t, c -from stdint import * -import string -import viperlib -import memhub -import stdio -from linkedlist import GSListNode, GSList -from .__types import LLVMType, ParamNode, TypePrint - -class Line(GSListNode[Line]): - Buf: t.CChar | t.CPtr - Len: t.CSizeT -class BasicBlock(GSListNode[BasicBlock]): - Name: t.CChar | t.CPtr - Lines: GSList[Line] | t.CPtr - IsTerminated: t.CInt -class Param(GSListNode[Param]): - Ty: LLVMType | t.CPtr - Name: t.CChar | t.CPtr - Attrs: t.CChar | t.CPtr -class Function(GSListNode[Function]): - Name: t.CChar | t.CPtr - RetTy: LLVMType | t.CPtr - Params: GSList[Param] | t.CPtr - Blocks: GSList[BasicBlock] | t.CPtr - IsDeclared: t.CInt - IsVarArg: t.CInt - Attrs: t.CChar | t.CPtr - -LINE_SIZE: t.CDefine = 24 - -def new_line(pool: memhub.MemBuddy | t.CPtr, text: t.CChar | t.CPtr) -> Line | t.CPtr: pass - -def _new_gslist(pool: memhub.MemBuddy | t.CPtr, list_size: t.CSizeT) -> t.CPtr: pass - - -BLOCK_SIZE: t.CDefine = 32 - -def new_basic_block(pool: memhub.MemBuddy | t.CPtr, name: t.CChar | t.CPtr) -> BasicBlock | t.CPtr: pass - - -PARAM_SIZE: t.CDefine = 32 - -def new_param(pool: memhub.MemBuddy | t.CPtr, ty: LLVMType | t.CPtr, name: t.CChar | t.CPtr) -> Param | t.CPtr: pass - - -FUNC_SIZE: t.CDefine = 56 - -def new_function(pool: memhub.MemBuddy | t.CPtr, name: t.CChar | t.CPtr, ret_ty: LLVMType | t.CPtr) -> Function | t.CPtr: pass - -def function_add_param(func: Function | t.CPtr, param: Param | t.CPtr) -> t.CInt: pass - -def function_add_block(func: Function | t.CPtr, block: BasicBlock | t.CPtr) -> t.CInt: pass - -def function_move_block_to_end(func: Function | t.CPtr, block: BasicBlock | t.CPtr) -> t.CInt: pass - -def block_append_line(block: BasicBlock | t.CPtr, line: Line | t.CPtr) -> t.CInt: pass - -def block_append_text(pool: memhub.MemBuddy | t.CPtr, block: BasicBlock | t.CPtr, text: t.CChar | t.CPtr) -> t.CInt: pass - -def function_set_attrs(func: Function | t.CPtr, attrs: t.CChar | t.CPtr) -> t.CInt: pass - -def param_set_attrs(param: Param | t.CPtr, attrs: t.CChar | t.CPtr) -> t.CInt: pass - -def _ll_name_needs_quote(name: str) -> t.CInt: pass - -def FunctionPrint(buf: t.CChar | t.CPtr, size: t.CSizeT, func: Function | t.CPtr, pool: memhub.MemBuddy | t.CPtr) -> t.CInt: pass - -def _append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def function_get_name(func: Function | t.CPtr) -> t.CChar | t.CPtr: pass - -def function_get_ret_ty(func: Function | t.CPtr) -> LLVMType | t.CPtr: pass - -def function_get_params(func: Function | t.CPtr) -> GSList[Param] | t.CPtr: pass - -def function_get_param_head(func: Function | t.CPtr) -> Param | t.CPtr: pass - -def function_get_next(func: Function | t.CPtr) -> Function | t.CPtr: pass - -def function_is_declared(func: Function | t.CPtr) -> t.CInt: pass - -def param_get_name(param: Param | t.CPtr) -> t.CChar | t.CPtr: pass - -def param_get_ty(param: Param | t.CPtr) -> LLVMType | t.CPtr: pass - -def param_get_next(param: Param | t.CPtr) -> Param | t.CPtr: pass diff --git a/.transpyc_cache/1446e90e8296beae.doc.json b/.transpyc_cache/1446e90e8296beae.doc.json deleted file mode 100644 index c00e036..0000000 --- a/.transpyc_cache/1446e90e8296beae.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数\n\n 直接接收三个 Value 参数,避免通过 Next 链表遍历(共享 alloca 对象的\n Next 字段可能被其他操作污染,导致链表断裂)。\n ", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/1446e90e8296beae.pyi b/.transpyc_cache/1446e90e8296beae.pyi deleted file mode 100644 index 40c3168..0000000 --- a/.transpyc_cache/1446e90e8296beae.pyi +++ /dev/null @@ -1,171 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, dst_val: llvmlite.Value | t.CPtr, src_val: llvmlite.Value | t.CPtr, num_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/146a976893eef52b.doc.json b/.transpyc_cache/146a976893eef52b.doc.json deleted file mode 100644 index a8e6f20..0000000 --- a/.transpyc_cache/146a976893eef52b.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_is_cenum_base": "检查 base 节点是否为 t.CEnum,返回 1=是 / 0=否", "_is_enum_class": "检查 ClassDef 是否继承自 t.CEnum,返回 1=是 / 0=否", "_is_cunion_base": "检查 base 节点是否为 t.CUnion,返回 1=是 / 0=否", "_is_union_class": "检查 ClassDef 是否继承自 t.CUnion,返回 1=是 / 0=否", "_has_decorator": "检查 decorator_list 中是否有指定装饰器名", "_is_marker_base": "检查基类名是否为标记基类,返回 1=是 / 0=否", "_get_base_name": "从 base AST 节点提取基类名,返回 None=失败", "_get_parent_class": "获取 ClassDef 的真实父类名,返回 None=无真实父类", "_has_any_func_cvtable": "检查类中是否有任何函数标记了 @t.CVTable,返回 1=有 / 0=无", "_should_method_be_virtual": "判断方法是否应该进入虚表,返回 1=包含 / 0=排除", "_detect_vtable_status": "检测类是否应该启用虚表", "_resolve_enum_member_type": "解析枚举成员的类型注解为 LLVM 整数类型", "_is_state_annotation": "检查注解节点是否为 t.State,返回 1=是 / 0=否", "_extract_int_value": "从 AST 节点提取整数值,失败返回 0", "_translate_enum_def": "翻译枚举类定义,返回 0", "_get_type_size": "计算 LLVM 类型的字节大小", "_translate_union_def": "翻译联合体定义,返回 0", "_is_generic_class": "检查 ClassDef 是否有类型参数(泛型类),返回 1=是 / 0=否", "_register_generic_template": "注册泛型类模板(类名 + ClassDef 节点)", "_find_generic_template": "查找泛型类模板,返回 ClassDef 节点或 None", "_mangle_generic_class_name": "生成特化类名: list + [int] -> list[int]\n\n 分配新缓冲区拼接,避免原地 strcat 导致缓冲区溢出\n ", "_clone_annotation": "拷贝类型注解表达式,替换类型参数 T 为具体类型名\n\n tp_names: 类型参数名列表 ['T']\n type_args: 类型实参名列表 ['int']\n ", "_clone_arguments": "拷贝 Arguments 节点,替换 arg annotation 中的 T", "_clone_classdef_for_spec": "拷贝 ClassDef 节点用于泛型特化\n\n - 替换类名为 spec_name\n - 清除 type_params(特化后不是泛型类)\n - 拷贝 children 中的 AnnAssign 和 FunctionDef,替换类型注解中的 T\n - 方法体直接引用原始节点(通过 type_map 上下文处理 T)\n ", "_find_cached_spec": "查找已缓存的特化名,未找到返回 None", "_cache_spec": "缓存特化结果", "_specialize_generic_class": "特化泛型类,返回特化类名\n\n 1. 查找泛型模板\n 2. 生成特化名\n 3. 检查缓存\n 4. 拷贝 ClassDef 节点(替换类型注解中的 T)\n 5. 设置 type_map 上下文(用于方法体中的 T 替换)\n 6. 调用 translate_class_def 翻译特化类\n 7. 返回特化名\n ", "translate_class_def": "翻译 class 定义,返回 0", "_vtable_strcat": "将 src 追加到 dst 末尾", "_vtable_name_needs_quote": "检查 LLVM 标识符是否需要引号(以数字开头或含 '.')", "_format_func_type_str": "从 Function 对象生成函数类型字符串", "_generate_vtable": "生成 VTable 全局变量", "_translate_oop_methods": "扫描 class body 中的方法并翻译,生成 __before_init__", "_translate_method": "翻译单个方法,返回 0", "_generate_before_init": "生成 __before_init__ 函数,返回 0"} \ No newline at end of file diff --git a/.transpyc_cache/146a976893eef52b.pyi b/.transpyc_cache/146a976893eef52b.pyi deleted file mode 100644 index 62b2e80..0000000 --- a/.transpyc_cache/146a976893eef52b.pyi +++ /dev/null @@ -1,104 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesClassDef.py -Module: lib.core.Handles.HandlesClassDef -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import viperlib -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesEnum as HandlesEnum - -ENUM_MEMBER_MAX_LOCAL: t.CDefine = 64 - -def _is_cenum_base(base_node: ast.AST | t.CPtr) -> int: pass - -def _is_enum_class(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _is_cunion_base(base_node: ast.AST | t.CPtr) -> int: pass - -def _is_union_class(cd: ast.ClassDef | t.CPtr) -> int: pass - - -_MARKER_BASES: t.CDefine = 8 - -def _has_decorator(decorator_list: list[ast.AST | t.CPtr] | t.CPtr, deco_name: str) -> int: pass - -def _is_marker_base(base_name: str) -> int: pass - -def _get_base_name(base_node: ast.AST | t.CPtr) -> str: pass - -def _get_parent_class(cd: ast.ClassDef | t.CPtr) -> str: pass - -def _has_any_func_cvtable(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _should_method_be_virtual(cd: ast.ClassDef | t.CPtr, fd: ast.FunctionDef | t.CPtr, trans: HT.Translator | t.CPtr) -> int: pass - -def _detect_vtable_status(cd: ast.ClassDef | t.CPtr, trans: HT.Translator | t.CPtr) -> int: pass - -def _resolve_enum_member_type(pool: memhub.MemBuddy | t.CPtr, ann_node: ast.AST | t.CPtr, imported_modules: str, from_imports: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _is_state_annotation(node: ast.AST | t.CPtr) -> int: pass - -def _extract_int_value(node: ast.AST | t.CPtr) -> t.CInt64T: pass - -def _translate_enum_def(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr) -> int: pass - -def _get_type_size(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def _translate_union_def(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr) -> int: pass - - -_generic_class_names: t.CExtern | list[str] | t.CPtr -_generic_class_nodes: t.CExtern | list[ast.ClassDef | t.CPtr] | t.CPtr - -def _is_generic_class(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _register_generic_template(pool: memhub.MemBuddy | t.CPtr, cd: ast.ClassDef | t.CPtr) -> t.CInt: pass - -def _find_generic_template(class_name: str) -> ast.ClassDef | t.CPtr: pass - -def _mangle_generic_class_name(pool: memhub.MemBuddy | t.CPtr, class_name: str, type_args: list[str] | t.CPtr) -> str: pass - -def _clone_annotation(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.AST | t.CPtr: pass - -def _clone_arguments(pool: memhub.MemBuddy | t.CPtr, args: ast.AST | t.CPtr, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.AST | t.CPtr: pass - -def _clone_classdef_for_spec(pool: memhub.MemBuddy | t.CPtr, cd: ast.ClassDef | t.CPtr, spec_name: str, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.ClassDef | t.CPtr: pass - - -_spec_keys: t.CExtern | list[str] | t.CPtr -_spec_names: t.CExtern | list[str] | t.CPtr - -def _find_cached_spec(spec_key: str) -> str: pass - -def _cache_spec(pool: memhub.MemBuddy | t.CPtr, spec_key: str, spec_name: str) -> t.CInt: pass - -def _specialize_generic_class(trans: HT.Translator | t.CPtr, class_name: str, type_args: list[str] | t.CPtr) -> str: pass - -def translate_class_def(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - - -VTBL_METHOD_MAX: t.CDefine = 32 - -def _vtable_strcat(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _vtable_name_needs_quote(name: str) -> int: pass - -def _format_func_type_str(pool: memhub.MemBuddy | t.CPtr, buf: t.CChar | t.CPtr, buf_size: t.CSizeT, func: llvmlite.Function | t.CPtr) -> int: pass - -def _generate_vtable(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr, class_name: str) -> int: pass - -def _translate_oop_methods(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass - -def _translate_method(trans: HT.Translator | t.CPtr, fd: ast.FunctionDef | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass - -def _generate_before_init(trans: HT.Translator | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass diff --git a/.transpyc_cache/14a9b576ab5d21c9.doc.json b/.transpyc_cache/14a9b576ab5d21c9.doc.json deleted file mode 100644 index 97ecb08..0000000 --- a/.transpyc_cache/14a9b576ab5d21c9.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"local_func": "Local function docstring.", "LocalClass": "Local class docstring.", "LocalClass.local_method": "Local method docstring.", "_check_doc_adaptive": "自适应检查 docstring:非空时验证匹配,空时视为优化剥离", "_check_doc_null": "检查 docstring 为 null(无 docstring 的符号)"} \ No newline at end of file diff --git a/.transpyc_cache/14a9b576ab5d21c9.pyi b/.transpyc_cache/14a9b576ab5d21c9.pyi deleted file mode 100644 index c16365f..0000000 --- a/.transpyc_cache/14a9b576ab5d21c9.pyi +++ /dev/null @@ -1,32 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - - -import t -import stdio -import string -import c -import testcheck -import remote - -def local_func() -> t.CInt: pass - -def no_doc_func() -> t.CInt: pass - - -@t.Object -class LocalClass: - value: t.CInt - def local_method(self: LocalClass) -> t.CInt: pass - -def _check_doc_adaptive(name: str, doc: str, expected: str) -> t.CInt: pass - -def _check_doc_null(name: str, doc: str) -> t.CInt: pass - -def test_local_doc() -> t.CInt: pass - -def test_cross_module_doc() -> t.CInt: pass - -def main() -> t.CInt: pass diff --git a/.transpyc_cache/dd3002730623424b.pyi b/.transpyc_cache/14d33679f7fadf1f.pyi similarity index 100% rename from .transpyc_cache/dd3002730623424b.pyi rename to .transpyc_cache/14d33679f7fadf1f.pyi diff --git a/.transpyc_cache/16e1f65b154831e8.doc.json b/.transpyc_cache/16e1f65b154831e8.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/16e1f65b154831e8.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/16e1f65b154831e8.pyi b/.transpyc_cache/16e1f65b154831e8.pyi deleted file mode 100644 index 3167de1..0000000 --- a/.transpyc_cache/16e1f65b154831e8.pyi +++ /dev/null @@ -1,64 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - -import c - - -import t -import stdio -import testcheck - -def add[T](a: T, b: T) -> T: pass - -def test_generic_add() -> t.CInt: pass - -def combine[T1, T2](a: T1, b: T2) -> T1: pass - -def test_generic_combine() -> t.CInt: pass - -def max_val[T](a: T, b: T) -> T: pass - -def test_generic_max() -> t.CInt: pass - - -class Box[T]: - value: T - def __init__(self: Box, v: T) -> t.CInt: pass - def get(self: Box) -> T: pass - def set(self: Box, v: T) -> t.CInt: pass - -def test_generic_box() -> t.CInt: pass - - -class Pair[T1, T2]: - first: T1 - second: T2 - def __init__(self: Pair, a: T1, b: T2) -> t.CInt: pass - def sum_as_int(self: Pair) -> t.CInt: pass - -def test_generic_pair() -> t.CInt: pass - -def test_fixed_array() -> t.CInt: pass - -def test_char_array() -> t.CInt: pass - -def identity[T](x: T) -> T: pass - -def test_generic_identity() -> t.CInt: pass - -def double_val[T](x: T) -> T: pass - -def test_generic_nested() -> t.CInt: pass - - -class Counter[T]: - count: T - def __init__(self: Counter, start: T) -> t.CInt: pass - def increment(self: Counter) -> t.CInt: pass - def get_count(self: Counter) -> T: pass - -def test_generic_counter() -> t.CInt: pass - -def main() -> t.CInt: pass diff --git a/.transpyc_cache/17c0dfbcebfa3a0e.doc.json b/.transpyc_cache/17c0dfbcebfa3a0e.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/17c0dfbcebfa3a0e.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/17c0dfbcebfa3a0e.pyi b/.transpyc_cache/17c0dfbcebfa3a0e.pyi deleted file mode 100644 index fd38559..0000000 --- a/.transpyc_cache/17c0dfbcebfa3a0e.pyi +++ /dev/null @@ -1,71 +0,0 @@ -""" -Auto-generated Python stub file from attr_test.py -Module: attr_test -""" - - -import t, c -from stdint import * -import stdio -import string - -@c.Attribute(t.attr.always_inline()) -def AlwaysInlineFunc(x: t.CInt) -> t.CInt: pass - -@c.Attribute(t.attr.noinline()) -def NoInlineFunc(x: t.CInt) -> t.CInt: pass - -@c.Attribute(t.attr.noreturn()) -def NoReturnFunc() -> t.CInt: pass - -def NormalFunc(x: t.CInt) -> t.CInt: pass - -@c.Attribute(t.attr.always_inline(), t.attr.pure()) -def MultiAttrFunc(x: t.CInt) -> t.CInt: pass - -@c.Attribute(t.attr.packed) -def PackedAttrFunc(x: t.CInt) -> t.CInt: pass - -def test_always_inline() -> t.CInt: pass - -def test_noinline() -> t.CInt: pass - -def test_noreturn() -> t.CInt: pass - -def test_normal() -> t.CInt: pass - -def test_multi_attr() -> t.CInt: pass - -def test_packed_attr() -> t.CInt: pass - -@c.Attribute(t.attr.llvm.nounwind) -def NoUnwindFunc(x: t.CInt) -> t.CInt: pass - -@c.Attribute(t.attr.llvm.noredzone) -def NoRedZoneFunc(x: t.CInt) -> t.CInt: pass - -@c.Attribute(t.attr.llvm.willreturn) -def WillReturnFunc(x: t.CInt) -> t.CInt: pass - -@c.Attribute(t.attr.llvm.mustprogress) -def MustProgressFunc(x: t.CInt) -> t.CInt: pass - -@c.Attribute(t.attr.const()) -def ConstFunc(x: t.CInt) -> t.CInt: pass - -@c.Attribute(t.attr.always_inline(), t.attr.llvm.nounwind, t.attr.llvm.noredzone) -def TripleAttrFunc(x: t.CInt) -> t.CInt: pass - -def test_nounwind() -> t.CInt: pass - -def test_noredzone() -> t.CInt: pass - -def test_willreturn() -> t.CInt: pass - -def test_mustprogress() -> t.CInt: pass - -def test_const_attr() -> t.CInt: pass - -def test_triple_attr() -> t.CInt: pass - -def attr_test() -> t.CInt: pass diff --git a/.transpyc_cache/19b6605d568c8584.doc.json b/.transpyc_cache/19b6605d568c8584.doc.json deleted file mode 100644 index 95e17f3..0000000 --- a/.transpyc_cache/19b6605d568c8584.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_load_includes_sha1_set": "读取 _sha1_map.txt,将 includes/ 开头的 SHA1 写入 sha1_set\n sha1_set 大小为 MAX_INCLUDES_SHA1 * 17(每个 SHA1 16字符+null)\n 返回找到的 includes SHA1 数量,-1 表示错误", "_is_in_sha1_set": "检查 sha1 是否在集合中", "WriteIncludesSha1Map": "将 includes 扫描结果写入 _sha1_map.txt(供 StubMerger 使用)\n\n 若 filter_set 不为 None 且 filter_count > 0,只写入 filter_set 中的条目。\n ", "_IsFuncDeclaredOrDefined": "检查 out_buf 中是否已有函数的 declare 或 define 行", "_CommentOutDeclareInBuf": "在 out_buf 中搜索 declare 行(包含 func_sig),将其注释掉", "_CommentOutGlobalInBuf": "在 out_buf 中搜索全局变量定义行(以 global_name 开头),将行首改为 ';'", "_CommentOutOpaqueTypeInBuf": "在 out_buf 中搜索 type_name_prefix 对应的 opaque 声明行,将行首改为 ';'\n\n type_name_prefix 格式: '%\"sha1.ClassName\"'(不含 '=' 和后续内容)\n 返回 1=已注释, 0=未找到\n ", "_HasFullTypeDefinition": "检查 out_buf 中是否已有 type_name_prefix 的完整定义", "_LoadAndAppendStub": "加载依赖 stub 并追加(跳过 header,去重)", "_LoadAndAppendTextDeclares": "从依赖 text.ll 提取 declare(define 转 declare),追加到 out_buf", "_PathToModuleName": "将文件路径转换为模块名", "_BuildIncludesSha1Map": "从 _sha1_map.txt 构建 sha1→module_name 映射,返回条目数", "_FindSha1ByModName": "从模块名查找 SHA1(精确匹配)", "_AddSha1ToSet": "将 SHA1 加入集合,返回新 count", "_BuildReachableSha1Set": "构建可达 SHA1 集合(依赖图按需翻译)", "BuildCombinedIR": "组合本地 stub + 依赖 stubs + 本地 text → out_buf(按需加载)"} \ No newline at end of file diff --git a/.transpyc_cache/19b6605d568c8584.pyi b/.transpyc_cache/19b6605d568c8584.pyi deleted file mode 100644 index 4466a75..0000000 --- a/.transpyc_cache/19b6605d568c8584.pyi +++ /dev/null @@ -1,60 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.StubMerger.py -Module: lib.core.StubMerger -""" - - -import t, c -from stdint import * -import memhub -import string -import stdio -import stdlib -import llvmlite -import w32.win32file as win32file -import w32.win32base as win32base -import w32.fileio as fileio -import viperlib -import sys -import ast -import lib.core.IncludesScanner as IncludesScanner -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesTranslator as HandlesTranslator - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -MAX_INCLUDES_SHA1: t.CDefine = 256 -STUB_READ_BUF_SIZE: t.CDefine = 262144 -MAX_INCLUDES: t.CDefine = 256 - -def _load_includes_sha1_set(pool: memhub.MemBuddy | t.CPtr, temp_dir: str, sha1_set: str) -> int: pass - -def _is_in_sha1_set(sha1: str, sha1_set: str, set_count: int) -> int: pass - -def WriteIncludesSha1Map(mb: memhub.MemBuddy | t.CPtr, temp_dir: str, scan_result: IncludesScanner.ScanResult | t.CPtr, filter_set: t.CChar | t.CPtr, filter_count: int) -> int: pass - -def _IsFuncDeclaredOrDefined(out_buf: bytes, func_sig: str) -> int: pass - -def _CommentOutDeclareInBuf(out_buf: bytes, func_sig: str) -> int: pass - -def _CommentOutGlobalInBuf(out_buf: bytes, global_name: str) -> int: pass - -def _CommentOutOpaqueTypeInBuf(out_buf: bytes, type_name_prefix: str) -> int: pass - -def _HasFullTypeDefinition(out_buf: bytes, type_name_prefix: str) -> int: pass - -def _LoadAndAppendStub(temp_dir: str, td_len: t.CSizeT, dep_sha1: str, dep_buf: bytes, out_buf: bytes, out_size: t.CSizeT, out_pos: t.CSizeT) -> t.CSizeT: pass - -def _LoadAndAppendTextDeclares(temp_dir: str, td_len: t.CSizeT, dep_sha1: str, dep_buf: bytes, out_buf: bytes, out_size: t.CSizeT, out_pos: t.CSizeT) -> t.CSizeT: pass - -def _PathToModuleName(path: str) -> str: pass - -def _BuildIncludesSha1Map(temp_dir: str, td_len: t.CSizeT, sha1_list: t.CChar | t.CPtr, mod_list: t.CChar | t.CPtr) -> int: pass - -def _FindSha1ByModName(sha1_arr: t.CChar | t.CPtr, mod_arr: t.CChar | t.CPtr, count: int, mod_name: str) -> str: pass - -def _AddSha1ToSet(set_buf: t.CChar | t.CPtr, count: int, sha1: str) -> int: pass - -def _BuildReachableSha1Set(mb: memhub.MemBuddy | t.CPtr, source_dir: str, temp_dir: str, reachable_set: t.CChar | t.CPtr) -> int: pass - -def BuildCombinedIR(temp_dir: str, local_sha1: str, out_buf: bytes, out_size: t.CSizeT) -> t.CSizeT: pass diff --git a/.transpyc_cache/19f8024d10c828e8.pyi b/.transpyc_cache/19f8024d10c828e8.pyi deleted file mode 100644 index a25a2e4..0000000 --- a/.transpyc_cache/19f8024d10c828e8.pyi +++ /dev/null @@ -1,35 +0,0 @@ -""" -Auto-generated Python stub file from hashlib.__md5.py -Module: hashlib.__md5 -""" - - -import string -import t, c - -MD5_BLOCK_LEN: t.CDefine = 64 # 分组块大小 -MD5_DIGEST_LEN: t.CDefine = 16 # 摘要输出长度 - -def md5_F(x: t.CUInt32T, y: t.CUInt32T, z: t.CUInt32T) -> t.CUInt32T: pass - -def md5_G(x: t.CUInt32T, y: t.CUInt32T, z: t.CUInt32T) -> t.CUInt32T: pass - -def md5_H(x: t.CUInt32T, y: t.CUInt32T, z: t.CUInt32T) -> t.CUInt32T: pass - -def md5_I(x: t.CUInt32T, y: t.CUInt32T, z: t.CUInt32T) -> t.CUInt32T: pass - -def md5_rotl(x: t.CUInt32T, n: t.CInt) -> t.CUInt32T: pass - - -md5_T: t.CExtern | t.CArray[t.CUInt32T, 64] -md5_S: t.CExtern | t.CArray[t.CInt, 64] - -@t.Object -class md5: - state: t.CArray[t.CUInt32T, 4] - count: t.CUInt64T - buf: t.CArray[t.CUInt8T, MD5_BLOCK_LEN] - def __init__(self: md5) -> t.CInt: pass - def transform(self: md5, block: t.CUInt8T | t.CPtr) -> t.CInt: pass - def update(self: md5, s: str) -> t.CInt: pass - def final(self: md5, out: t.CArray[t.CUInt8T, MD5_DIGEST_LEN]) -> t.CInt: pass \ No newline at end of file diff --git a/.transpyc_cache/1a3af346a22d2cb6.doc.json b/.transpyc_cache/1a3af346a22d2cb6.doc.json deleted file mode 100644 index f6225ef..0000000 --- a/.transpyc_cache/1a3af346a22d2cb6.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"translate_stmt": "翻译单条语句,返回新增的变量数", "translate_global": "翻译 global 语句:记录 global 变量名", "translate_nonlocal": "翻译 nonlocal 语句:记录 nonlocal 变量名", "translate_expr_stmt": "翻译表达式语句(printf 调用等)", "pre_scan_allocas": "预扫描语句中的 AnnAssign,提前创建 alloca\n\n 返回新增的变量数\n ", "translate_break": "翻译 break 语句:跳转到循环 end 块", "translate_continue": "翻译 continue 语句:跳转到循环 cond/incr 块", "get_stmt_kind_name": "获取语句类型名"} \ No newline at end of file diff --git a/.transpyc_cache/1a3af346a22d2cb6.pyi b/.transpyc_cache/1a3af346a22d2cb6.pyi deleted file mode 100644 index 1eacb6d..0000000 --- a/.transpyc_cache/1a3af346a22d2cb6.pyi +++ /dev/null @@ -1,34 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesBody.py -Module: lib.core.Handles.HandlesBody -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import viperlib -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.Handles.HandlesFunctions as HandlesFunctions -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -def translate_stmt(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - -def translate_global(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - -def translate_nonlocal(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - -def translate_expr_stmt(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - -def pre_scan_allocas(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - -def translate_break(trans: HT.Translator | t.CPtr) -> int: pass - -def translate_continue(trans: HT.Translator | t.CPtr) -> int: pass - -def get_stmt_kind_name(node: ast.AST | t.CPtr) -> str: pass diff --git a/.transpyc_cache/1b58766d38d05de3.doc.json b/.transpyc_cache/1b58766d38d05de3.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/1b58766d38d05de3.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/1b58766d38d05de3.pyi b/.transpyc_cache/1b58766d38d05de3.pyi deleted file mode 100644 index 11fb572..0000000 --- a/.transpyc_cache/1b58766d38d05de3.pyi +++ /dev/null @@ -1,35 +0,0 @@ -""" -Auto-generated Python stub file from enumtest.py -Module: enumtest -""" - - -import t, c -from t import CInt, CPtr, CChar, CInt32T, CExport -import viperlib -import stdlib - -class Color(t.CEnum): - Red = 0 - Green = 1 - Blue = 2 -class Option(t.REnum): - class Some: - value: CInt - Empty = 1 -class Result(t.REnum): - class Ok: - value: CInt - class Err: - msg: t.CChar | CPtr -class GeoShape(t.REnum): - class GCircle: - radius: CInt - class GRect: - w: CInt - h: CInt - class GPoint: - x: CInt - y: CInt - -def enum_main() -> CInt: pass diff --git a/.transpyc_cache/1b9ab264a942c56b.doc.json b/.transpyc_cache/1b9ab264a942c56b.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/1b9ab264a942c56b.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/1b9ab264a942c56b.pyi b/.transpyc_cache/1b9ab264a942c56b.pyi deleted file mode 100644 index e5dacdd..0000000 --- a/.transpyc_cache/1b9ab264a942c56b.pyi +++ /dev/null @@ -1,27 +0,0 @@ -""" -Auto-generated Python stub file from oop_test.py -Module: oop_test -""" - - -import stdio -import t, c - -class Point: - x: t.CInt - y: t.CInt - def MoveTo(self: Point, nx: t.CInt, ny: t.CInt) -> t.CInt: pass - def GetX(self: Point) -> t.CInt: pass - def GetY(self: Point) -> t.CInt: pass -class Counter: - count: t.CInt = 0 - step: t.CInt = 1 - def Increment(self: Counter) -> t.CInt: pass - def Reset(self: Counter) -> t.CInt: pass -class Rect: - width: t.CInt - height: t.CInt - def __init__(self: Rect, w: t.CInt, h: t.CInt) -> t.CInt: pass - def Area(self: Rect) -> t.CInt: pass - -def oop_test() -> int: pass diff --git a/.transpyc_cache/1c46d554b3a3f9f3.pyi b/.transpyc_cache/1c46d554b3a3f9f3.pyi deleted file mode 100644 index 46fe651..0000000 --- a/.transpyc_cache/1c46d554b3a3f9f3.pyi +++ /dev/null @@ -1,125 +0,0 @@ -""" -Auto-generated Python stub file from zlib.pyzlib.py -Module: zlib.pyzlib -""" - - -from stdint import * -import zlib.zdeflate as zdeflate -import zlib.zinflate as zinflate -import zlib.zchecksum as zchecksum -import zlib.zdef as zdef -import zlib.zhuff as zhuff -import stdlib -import string -import memhub -import t, c - -Z_NO_COMPRESSION: t.CDefine = 0 -Z_BEST_SPEED: t.CDefine = 1 -Z_BEST_COMPRESSION: t.CDefine = 9 -Z_DEFAULT_COMPRESSION: t.CDefine = (-1) -DEFLATED: t.CDefine = 8 -Z_NO_FLUSH: t.CDefine = 0 -Z_PARTIAL_FLUSH: t.CDefine = 1 -Z_SYNC_FLUSH: t.CDefine = 2 -Z_FULL_FLUSH: t.CDefine = 3 -Z_FINISH: t.CDefine = 4 -Z_BLOCK: t.CDefine = 5 -Z_TREES: t.CDefine = 6 -Z_DEFAULT_STRATEGY: t.CDefine = 0 -Z_FILTERED: t.CDefine = 1 -Z_HUFFMAN_ONLY: t.CDefine = 2 -Z_RLE: t.CDefine = 3 -Z_FIXED: t.CDefine = 4 -Z_OK: t.CDefine = 0 -Z_STREAM_END: t.CDefine = 1 -Z_NEED_DICT: t.CDefine = 2 -Z_ERRNO: t.CDefine = (-1) -Z_STREAM_ERROR: t.CDefine = (-2) -Z_DATA_ERROR: t.CDefine = (-3) -Z_MEM_ERROR: t.CDefine = (-4) -Z_BUF_ERROR: t.CDefine = (-5) -Z_VERSION_ERROR: t.CDefine = (-6) -MAX_WBITS: t.CDefine = 15 -DEF_BUF_SIZE: t.CDefine = 16384 -DEF_MEM_LEVEL: t.CDefine = 8 -ZLIB_VERSION: t.CDefine = "1.3.2" -pyzlib_error_msg: t.CExtern | t.CArray[t.CChar, 512] -pyzlib_error_code_val: t.CExtern | t.CInt - -@t.Object -class Compress: - pool: memhub.MemManager | t.CPtr - stream: VOIDPTR - is_initialized: t.CInt - is_finished: t.CInt - level: t.CInt - method: t.CInt - wbits: t.CInt - memLevel: t.CInt - strategy: t.CInt - zdict: BYTEPTR - zdict_len: t.CSizeT - last_pos: t.CSizeT - input_buf: BYTEPTR - input_buf_len: t.CSizeT - input_buf_cap: t.CSizeT - header_written: t.CInt - def compress(self: Compress, data: BYTEPTR, data_len: t.CSizeT, out_len: t.CSizeT | t.CPtr) -> BYTEPTR: pass - def flush(self: Compress, mode: t.CInt, out_len: t.CSizeT | t.CPtr) -> BYTEPTR: pass - def copy(self: Compress) -> Compress | t.CPtr: pass - def delete(self: Compress) -> t.CInt: pass - def __del__(self: Compress) -> t.CInt: pass -@t.Object -class Decompress: - pool: memhub.MemManager | t.CPtr - stream: VOIDPTR - is_initialized: t.CInt - eof: t.CInt - wbits: t.CInt - zdict: BYTEPTR - zdict_len: t.CSizeT - _unused_data: BYTEPTR - _unused_data_len: t.CSizeT - _unused_data_cap: t.CSizeT - _unconsumed_tail: BYTEPTR - _unconsumed_tail_len: t.CSizeT - _unconsumed_tail_cap: t.CSizeT - input_buf: BYTEPTR - input_buf_len: t.CSizeT - input_buf_cap: t.CSizeT - def decompress(self: Decompress, data: BYTEPTR, data_len: t.CSizeT, max_length: t.CSizeT, out_len: t.CSizeT | t.CPtr) -> BYTEPTR: pass - def flush(self: Decompress, length: t.CSizeT, out_len: t.CSizeT | t.CPtr) -> BYTEPTR: pass - def copy(self: Decompress) -> Decompress | t.CPtr: pass - def delete(self: Decompress) -> t.CInt: pass - def unused_data(self: Decompress, length: t.CSizeT | t.CPtr) -> BYTEPTR: pass - def unconsumed_tail(self: Decompress, length: t.CSizeT | t.CPtr) -> BYTEPTR: pass - -def set_error(code: int, msg: str) -> t.CInt: pass - -def clone_bytes(pool: memhub.MemManager | t.CPtr, src: BYTEPTR, length: t.CSizeT) -> BYTEPTR: pass - -def append_bytes(pool: memhub.MemManager | t.CPtr, buf: BYTE | t.CPtr[t.CPtr], length: t.CSizeT | t.CPtr, cap: t.CSizeT | t.CPtr, data: BYTEPTR, data_len: t.CSizeT) -> t.CInt: pass - -def shrink_to_fit(pool: memhub.MemManager | t.CPtr, buf: BYTEPTR, length: t.CSizeT) -> BYTEPTR: pass - -def runtime_version() -> str: pass - -def get_error() -> str: pass - -def get_error_code() -> t.CInt: pass - -def clear_error() -> t.CInt: pass - -def compress(pool: memhub.MemManager | t.CPtr, data: BYTEPTR, data_len: t.CSizeT, level: t.CInt, wbits: t.CInt, out_len: t.CSizeT | t.CPtr) -> BYTEPTR: pass - -def decompress(pool: memhub.MemManager | t.CPtr, data: BYTEPTR, data_len: t.CSizeT, wbits: t.CInt, bufsize: t.CSizeT, out_len: t.CSizeT | t.CPtr) -> BYTEPTR: pass - -def compressobj(pool: memhub.MemManager | t.CPtr, level: t.CInt, method: t.CInt, wbits: t.CInt, memLevel: t.CInt, strategy: t.CInt, zdict: BYTEPTR, zdict_len: t.CSizeT) -> Compress | t.CPtr: pass - -def decompressobj(pool: memhub.MemManager | t.CPtr, wbits: t.CInt, zdict: BYTEPTR, zdict_len: t.CSizeT) -> Decompress | t.CPtr: pass - -def zlib_adler32(data: BYTEPTR, length: t.CSizeT, value: t.CUnsignedLong) -> t.CUnsignedLong: pass - -def zlib_crc32(data: BYTEPTR, length: t.CSizeT, value: t.CUnsignedLong) -> t.CUnsignedLong: pass diff --git a/.transpyc_cache/1c8a1eceb26a43f4.doc.json b/.transpyc_cache/1c8a1eceb26a43f4.doc.json deleted file mode 100644 index 9c0ba29..0000000 --- a/.transpyc_cache/1c8a1eceb26a43f4.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"AnnAssignHandle": "AnnAssign 语句处理器:继承 Mixin 获得 Trans 回指针", "AnnAssignHandle.PreScan": "预扫描 AnnAssign,提前创建 alloca 到 entry block 顶部", "AnnAssignHandle.Handle": "翻译 AnnAssign(target=Name, annotation=..., value=expr)"} \ No newline at end of file diff --git a/.transpyc_cache/1c8a1eceb26a43f4.pyi b/.transpyc_cache/1c8a1eceb26a43f4.pyi deleted file mode 100644 index beb4d8d..0000000 --- a/.transpyc_cache/1c8a1eceb26a43f4.pyi +++ /dev/null @@ -1,26 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesAnnAssign.py -Module: lib.core.Handles.HandlesAnnAssign -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesNonlocal as HandlesNonlocal - -@t.NoVTable -class AnnAssignHandle(HandlesBase.Mixin): - def __init__(self: AnnAssignHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def PreScan(self: AnnAssignHandle, node: ast.AST | t.CPtr) -> int: pass - def Handle(self: AnnAssignHandle, node: ast.AST | t.CPtr) -> int: pass - -def NewAnnAssignHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> AnnAssignHandle | t.CPtr: pass diff --git a/.transpyc_cache/1df40188ee73ee05.doc.json b/.transpyc_cache/1df40188ee73ee05.doc.json deleted file mode 100644 index 4dba15e..0000000 --- a/.transpyc_cache/1df40188ee73ee05.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"ReturnHandle": "Return 语句处理器:继承 Mixin 获得 Trans 回指针", "ReturnHandle.Handle": "翻译 Return 语句"} \ No newline at end of file diff --git a/.transpyc_cache/1df40188ee73ee05.pyi b/.transpyc_cache/1df40188ee73ee05.pyi deleted file mode 100644 index abcbbff..0000000 --- a/.transpyc_cache/1df40188ee73ee05.pyi +++ /dev/null @@ -1,23 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesReturn.py -Module: lib.core.Handles.HandlesReturn -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar - -@t.NoVTable -class ReturnHandle(HandlesBase.Mixin): - def __init__(self: ReturnHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def Handle(self: ReturnHandle, node: ast.AST | t.CPtr) -> int: pass - -def NewReturnHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ReturnHandle | t.CPtr: pass diff --git a/.transpyc_cache/1e19f516dc857768.doc.json b/.transpyc_cache/1e19f516dc857768.doc.json deleted file mode 100644 index a8e6f20..0000000 --- a/.transpyc_cache/1e19f516dc857768.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_is_cenum_base": "检查 base 节点是否为 t.CEnum,返回 1=是 / 0=否", "_is_enum_class": "检查 ClassDef 是否继承自 t.CEnum,返回 1=是 / 0=否", "_is_cunion_base": "检查 base 节点是否为 t.CUnion,返回 1=是 / 0=否", "_is_union_class": "检查 ClassDef 是否继承自 t.CUnion,返回 1=是 / 0=否", "_has_decorator": "检查 decorator_list 中是否有指定装饰器名", "_is_marker_base": "检查基类名是否为标记基类,返回 1=是 / 0=否", "_get_base_name": "从 base AST 节点提取基类名,返回 None=失败", "_get_parent_class": "获取 ClassDef 的真实父类名,返回 None=无真实父类", "_has_any_func_cvtable": "检查类中是否有任何函数标记了 @t.CVTable,返回 1=有 / 0=无", "_should_method_be_virtual": "判断方法是否应该进入虚表,返回 1=包含 / 0=排除", "_detect_vtable_status": "检测类是否应该启用虚表", "_resolve_enum_member_type": "解析枚举成员的类型注解为 LLVM 整数类型", "_is_state_annotation": "检查注解节点是否为 t.State,返回 1=是 / 0=否", "_extract_int_value": "从 AST 节点提取整数值,失败返回 0", "_translate_enum_def": "翻译枚举类定义,返回 0", "_get_type_size": "计算 LLVM 类型的字节大小", "_translate_union_def": "翻译联合体定义,返回 0", "_is_generic_class": "检查 ClassDef 是否有类型参数(泛型类),返回 1=是 / 0=否", "_register_generic_template": "注册泛型类模板(类名 + ClassDef 节点)", "_find_generic_template": "查找泛型类模板,返回 ClassDef 节点或 None", "_mangle_generic_class_name": "生成特化类名: list + [int] -> list[int]\n\n 分配新缓冲区拼接,避免原地 strcat 导致缓冲区溢出\n ", "_clone_annotation": "拷贝类型注解表达式,替换类型参数 T 为具体类型名\n\n tp_names: 类型参数名列表 ['T']\n type_args: 类型实参名列表 ['int']\n ", "_clone_arguments": "拷贝 Arguments 节点,替换 arg annotation 中的 T", "_clone_classdef_for_spec": "拷贝 ClassDef 节点用于泛型特化\n\n - 替换类名为 spec_name\n - 清除 type_params(特化后不是泛型类)\n - 拷贝 children 中的 AnnAssign 和 FunctionDef,替换类型注解中的 T\n - 方法体直接引用原始节点(通过 type_map 上下文处理 T)\n ", "_find_cached_spec": "查找已缓存的特化名,未找到返回 None", "_cache_spec": "缓存特化结果", "_specialize_generic_class": "特化泛型类,返回特化类名\n\n 1. 查找泛型模板\n 2. 生成特化名\n 3. 检查缓存\n 4. 拷贝 ClassDef 节点(替换类型注解中的 T)\n 5. 设置 type_map 上下文(用于方法体中的 T 替换)\n 6. 调用 translate_class_def 翻译特化类\n 7. 返回特化名\n ", "translate_class_def": "翻译 class 定义,返回 0", "_vtable_strcat": "将 src 追加到 dst 末尾", "_vtable_name_needs_quote": "检查 LLVM 标识符是否需要引号(以数字开头或含 '.')", "_format_func_type_str": "从 Function 对象生成函数类型字符串", "_generate_vtable": "生成 VTable 全局变量", "_translate_oop_methods": "扫描 class body 中的方法并翻译,生成 __before_init__", "_translate_method": "翻译单个方法,返回 0", "_generate_before_init": "生成 __before_init__ 函数,返回 0"} \ No newline at end of file diff --git a/.transpyc_cache/1e19f516dc857768.pyi b/.transpyc_cache/1e19f516dc857768.pyi deleted file mode 100644 index 62b2e80..0000000 --- a/.transpyc_cache/1e19f516dc857768.pyi +++ /dev/null @@ -1,104 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesClassDef.py -Module: lib.core.Handles.HandlesClassDef -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import viperlib -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesEnum as HandlesEnum - -ENUM_MEMBER_MAX_LOCAL: t.CDefine = 64 - -def _is_cenum_base(base_node: ast.AST | t.CPtr) -> int: pass - -def _is_enum_class(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _is_cunion_base(base_node: ast.AST | t.CPtr) -> int: pass - -def _is_union_class(cd: ast.ClassDef | t.CPtr) -> int: pass - - -_MARKER_BASES: t.CDefine = 8 - -def _has_decorator(decorator_list: list[ast.AST | t.CPtr] | t.CPtr, deco_name: str) -> int: pass - -def _is_marker_base(base_name: str) -> int: pass - -def _get_base_name(base_node: ast.AST | t.CPtr) -> str: pass - -def _get_parent_class(cd: ast.ClassDef | t.CPtr) -> str: pass - -def _has_any_func_cvtable(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _should_method_be_virtual(cd: ast.ClassDef | t.CPtr, fd: ast.FunctionDef | t.CPtr, trans: HT.Translator | t.CPtr) -> int: pass - -def _detect_vtable_status(cd: ast.ClassDef | t.CPtr, trans: HT.Translator | t.CPtr) -> int: pass - -def _resolve_enum_member_type(pool: memhub.MemBuddy | t.CPtr, ann_node: ast.AST | t.CPtr, imported_modules: str, from_imports: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _is_state_annotation(node: ast.AST | t.CPtr) -> int: pass - -def _extract_int_value(node: ast.AST | t.CPtr) -> t.CInt64T: pass - -def _translate_enum_def(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr) -> int: pass - -def _get_type_size(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def _translate_union_def(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr) -> int: pass - - -_generic_class_names: t.CExtern | list[str] | t.CPtr -_generic_class_nodes: t.CExtern | list[ast.ClassDef | t.CPtr] | t.CPtr - -def _is_generic_class(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _register_generic_template(pool: memhub.MemBuddy | t.CPtr, cd: ast.ClassDef | t.CPtr) -> t.CInt: pass - -def _find_generic_template(class_name: str) -> ast.ClassDef | t.CPtr: pass - -def _mangle_generic_class_name(pool: memhub.MemBuddy | t.CPtr, class_name: str, type_args: list[str] | t.CPtr) -> str: pass - -def _clone_annotation(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.AST | t.CPtr: pass - -def _clone_arguments(pool: memhub.MemBuddy | t.CPtr, args: ast.AST | t.CPtr, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.AST | t.CPtr: pass - -def _clone_classdef_for_spec(pool: memhub.MemBuddy | t.CPtr, cd: ast.ClassDef | t.CPtr, spec_name: str, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.ClassDef | t.CPtr: pass - - -_spec_keys: t.CExtern | list[str] | t.CPtr -_spec_names: t.CExtern | list[str] | t.CPtr - -def _find_cached_spec(spec_key: str) -> str: pass - -def _cache_spec(pool: memhub.MemBuddy | t.CPtr, spec_key: str, spec_name: str) -> t.CInt: pass - -def _specialize_generic_class(trans: HT.Translator | t.CPtr, class_name: str, type_args: list[str] | t.CPtr) -> str: pass - -def translate_class_def(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - - -VTBL_METHOD_MAX: t.CDefine = 32 - -def _vtable_strcat(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _vtable_name_needs_quote(name: str) -> int: pass - -def _format_func_type_str(pool: memhub.MemBuddy | t.CPtr, buf: t.CChar | t.CPtr, buf_size: t.CSizeT, func: llvmlite.Function | t.CPtr) -> int: pass - -def _generate_vtable(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr, class_name: str) -> int: pass - -def _translate_oop_methods(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass - -def _translate_method(trans: HT.Translator | t.CPtr, fd: ast.FunctionDef | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass - -def _generate_before_init(trans: HT.Translator | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass diff --git a/.transpyc_cache/1eb1c9fc7e85d9f8.doc.json b/.transpyc_cache/1eb1c9fc7e85d9f8.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/1eb1c9fc7e85d9f8.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/1eb1c9fc7e85d9f8.pyi b/.transpyc_cache/1eb1c9fc7e85d9f8.pyi deleted file mode 100644 index 8139e3c..0000000 --- a/.transpyc_cache/1eb1c9fc7e85d9f8.pyi +++ /dev/null @@ -1,10 +0,0 @@ -""" -Auto-generated Python stub file from for_test.py -Module: for_test -""" - - -import stdio -import t, c - -def for_test() -> int: pass diff --git a/.transpyc_cache/1ed8ca4986cb0d65.doc.json b/.transpyc_cache/1ed8ca4986cb0d65.doc.json deleted file mode 100644 index aee5ad5..0000000 --- a/.transpyc_cache/1ed8ca4986cb0d65.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"get_func_name": "从函数节点提取函数名", "escape_llvm_string": "将字符串转换为 LLVM IR 字符串字面量 c\"...\\00\" ", "get_llvm_type_bits": "获取 LLVM 整数类型的位宽,非整数类型返回 0", "get_llvm_float_bits": "获取 LLVM 浮点类型的位宽,非浮点类型返回 0", "is_ptr_type": "检查 ty 是否是 Ptr 类型,返回 1=是, 0=否", "_deref_if_ptr_ptr": "如果 obj_ptr 是 Ptr(Ptr(...)),load 解引用获取内层指针", "coerce_to_type": "将 val 强制转换为 target_ty\n\n 整数: sext(扩展)/ trunc(截断)\n 浮点: fpext(扩展)/ fptrunc(截断)\n int→float: sitofp\n float→int: fptosi\n ", "create_global_string": "创建全局字符串常量并返回 i8* bitcast", "translate_constant": "翻译常量(int/str/bool)", "translate_value": "翻译值表达式为 LLVM Value", "translate_compare": "翻译比较表达式,返回 i1 结果", "translate_unaryop": "翻译一元运算(-x, +x, not x, ~x)", "translate_boolop": "翻译布尔运算(and/or)的短路求值,返回 i1", "translate_name_value": "翻译变量引用(Name 节点)→ load", "ExprHandle": "表达式处理器:继承 Mixin 获得 Trans 回指针", "ExprHandle.HandleValue": "翻译值表达式,从 self.Trans 获取共享状态", "list_getitem_inline": "内联生成 list __getitem__ 逻辑,返回元素地址 (i8*)", "_list_elem_type_from_name": "从 list 类型名提取元素 LLVM 类型", "list_setitem_inline": "内联生成 list __setitem__ 逻辑,返回 0", "is_list_subscript": "检查 Subscript 节点是否是 list[T] 类型,返回 list 对象指针或 None", "translate_subscript": "翻译下标表达式,返回加载的元素值", "translate_attribute": "翻译属性访问,返回加载的字段值", "get_subscript_ptr": "获取下标表达式的元素指针(用于赋值 lhs)", "get_attribute_ptr": "获取属性访问的字段指针(用于赋值 lhs)"} \ No newline at end of file diff --git a/.transpyc_cache/1ed8ca4986cb0d65.pyi b/.transpyc_cache/1ed8ca4986cb0d65.pyi deleted file mode 100644 index ad13f52..0000000 --- a/.transpyc_cache/1ed8ca4986cb0d65.pyi +++ /dev/null @@ -1,77 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExpr.py -Module: lib.core.Handles.HandlesExpr -""" - - -import t, c -from stdint import * -import ast -import memhub -import string -import llvmlite -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesExprOps as HandlesExprOps -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.Handles.HandlesNonlocal as HandlesNonlocal -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesEnum as HandlesEnum - -def get_func_name(func_node: ast.AST | t.CPtr) -> str: pass - -def escape_llvm_string(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def get_llvm_type_bits(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def get_llvm_float_bits(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def is_ptr_type(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def _deref_if_ptr_ptr(builder: llvmlite.IRBuilder | t.CPtr, obj_ptr: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def coerce_to_type(builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def create_global_string(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, str_val: str, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_constant(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_value(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_compare(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_unaryop(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_boolop(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_name_value(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -@t.NoVTable -class ExprHandle(HandlesBase.Mixin): - def __init__(self: ExprHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleValue(self: ExprHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def NewExprHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprHandle | t.CPtr: pass - -def list_getitem_inline(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, lm_obj: llvmlite.Value | t.CPtr, idx_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _list_elem_type_from_name(pool: memhub.MemBuddy | t.CPtr, struct_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def list_setitem_inline(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, lm_obj: llvmlite.Value | t.CPtr, idx_val: llvmlite.Value | t.CPtr, rhs_val: llvmlite.Value | t.CPtr) -> int: pass - -def is_list_subscript(node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_subscript(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_attribute(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -import stdio - -def get_subscript_ptr(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def get_attribute_ptr(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass diff --git a/.transpyc_cache/1ff2c5eb32359e40.doc.json b/.transpyc_cache/1ff2c5eb32359e40.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/1ff2c5eb32359e40.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/1ff2c5eb32359e40.pyi b/.transpyc_cache/1ff2c5eb32359e40.pyi deleted file mode 100644 index dde14fd..0000000 --- a/.transpyc_cache/1ff2c5eb32359e40.pyi +++ /dev/null @@ -1,16 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - - -from stdint import * -import w32.win32console -import t, c -from t import CInt, CExport -import stdlib -import stdio -import memhub -import testcheck - -def main() -> CInt | CExport: pass diff --git a/.transpyc_cache/2020b02f319dd87d.doc.json b/.transpyc_cache/2020b02f319dd87d.doc.json deleted file mode 100644 index 28f2ad8..0000000 --- a/.transpyc_cache/2020b02f319dd87d.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_register_cexport_from_funcdef": "预注册 CExport/State 函数到全局表(仅注册,不生成 IR)", "translate_children": "遍历 tree.children 并翻译每个子节点\n\n Args:\n trans: 翻译器(含所有共享状态)\n tree: AST 模块节点\n\n Returns:\n t.CInt: 新增的变量数\n ", "handle_module_level_var": "处理模块级变量声明,创建全局变量", "create_wrapper_main": "创建包装 main 函数并翻译所有顶层语句\n\n Args:\n trans: 翻译器(含所有共享状态)\n tree: AST 模块节点\n i32_ty: i32 LLVMType\n\n Returns:\n t.CInt: 新增的变量数\n "} \ No newline at end of file diff --git a/.transpyc_cache/2020b02f319dd87d.pyi b/.transpyc_cache/2020b02f319dd87d.pyi deleted file mode 100644 index 2294a70..0000000 --- a/.transpyc_cache/2020b02f319dd87d.pyi +++ /dev/null @@ -1,30 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesMain.py -Module: lib.core.Handles.HandlesMain -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import viperlib -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesBody as HandlesBody -import lib.core.Handles.HandlesFunctions as HandlesFunctions -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -def _register_cexport_from_funcdef(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - -def translate_children(trans: HT.Translator | t.CPtr, tree: ast.AST | t.CPtr) -> int: pass - -def handle_module_level_var(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - -def create_wrapper_main(trans: HT.Translator | t.CPtr, tree: ast.AST | t.CPtr, i32_ty: llvmlite.LLVMType | t.CPtr) -> int: pass diff --git a/.transpyc_cache/20cd49775c100a38.pyi b/.transpyc_cache/20cd49775c100a38.pyi deleted file mode 100644 index df04de7..0000000 --- a/.transpyc_cache/20cd49775c100a38.pyi +++ /dev/null @@ -1,22 +0,0 @@ -""" -Auto-generated Python stub file from json.__writer.py -Module: json.__writer -""" - - -import t, c -from stdint import * -import memhub -import string -from stdio import snprintf -from . import JsonValue, JSON_NULL, JSON_BOOL, JSON_INT, JSON_FLOAT, JSON_STRING, JSON_ARRAY, JSON_OBJECT - -def _write_char(buf: t.CChar | t.CPtr, pos: t.CSizeT, ch: t.CChar) -> t.CSizeT: pass - -def _write_str(buf: t.CChar | t.CPtr, pos: t.CSizeT, s: t.CChar | t.CPtr) -> t.CSizeT: pass - -def _write_string_escaped(buf: t.CChar | t.CPtr, pos: t.CSizeT, s: t.CChar | t.CPtr) -> t.CSizeT: pass - -def _write_value(buf: t.CChar | t.CPtr, pos: t.CSizeT, val: JsonValue | t.CPtr, pool: memhub.MemManager | t.CPtr) -> t.CSizeT: pass - -def write(pool: memhub.MemManager | t.CPtr, val: JsonValue | t.CPtr, pretty: bool) -> t.CChar | t.CPtr: pass diff --git a/.transpyc_cache/212fb1de4f9d6e5c.doc.json b/.transpyc_cache/212fb1de4f9d6e5c.doc.json deleted file mode 100644 index c00e036..0000000 --- a/.transpyc_cache/212fb1de4f9d6e5c.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数\n\n 直接接收三个 Value 参数,避免通过 Next 链表遍历(共享 alloca 对象的\n Next 字段可能被其他操作污染,导致链表断裂)。\n ", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/212fb1de4f9d6e5c.pyi b/.transpyc_cache/212fb1de4f9d6e5c.pyi deleted file mode 100644 index 40c3168..0000000 --- a/.transpyc_cache/212fb1de4f9d6e5c.pyi +++ /dev/null @@ -1,171 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, dst_val: llvmlite.Value | t.CPtr, src_val: llvmlite.Value | t.CPtr, num_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/213348433fb01cc6.pyi b/.transpyc_cache/213348433fb01cc6.pyi deleted file mode 100644 index 6e4edce..0000000 --- a/.transpyc_cache/213348433fb01cc6.pyi +++ /dev/null @@ -1,67 +0,0 @@ -""" -Auto-generated Python stub file from zlib.zdef.py -Module: zlib.zdef -""" - - -from stdint import * -import stddef -import string -import stdlib -import memhub -import t, c - -ZDEFLATE_WINDOW_BITS: t.CDefine = 15 -ZDEFLATE_WINDOW_SIZE: t.CDefine = (1 << ZDEFLATE_WINDOW_BITS) -ZDEFLATE_WINDOW_MASK: t.CDefine = (ZDEFLATE_WINDOW_SIZE - 1) -ZDEFLATE_MIN_MATCH: t.CDefine = 3 -ZDEFLATE_MAX_MATCH: t.CDefine = 258 -ZDEFLATE_HASH_BITS: t.CDefine = 15 -ZDEFLATE_HASH_SIZE: t.CDefine = (1 << ZDEFLATE_HASH_BITS) -ZDEFLATE_HASH_MASK: t.CDefine = (ZDEFLATE_HASH_SIZE - 1) -ZDEFLATE_MAX_CODES: t.CDefine = 288 -ZDEFLATE_MAX_DIST_CODES: t.CDefine = 32 -ZDEFLATE_MAX_BITS: t.CDefine = 15 -ZDEFLATE_MAX_CODELEN_CODES: t.CDefine = 19 -ZDEFLATE_LIT_COUNT: t.CDefine = 286 -ZDEFLATE_DIST_COUNT: t.CDefine = 30 -ZDEFLATE_LEN_SYMBOLS_BASE: t.CDefine = 257 -ZDEFLATE_END_OF_BLOCK: t.CDefine = 256 -zdeflate_len_extra_bits: t.CExtern | t.CArray[t.CInt, 29] -zdeflate_len_base: t.CExtern | t.CArray[t.CInt, 29] -zdeflate_dist_extra_bits: t.CExtern | t.CArray[t.CInt, 30] -zdeflate_dist_base: t.CExtern | t.CArray[t.CInt, 30] -zdeflate_codelen_order: t.CExtern | t.CArray[int, 19] - -@t.Object -class zbit_writer: - pool: memhub.MemManager | t.CPtr - buf: BYTE | t.CPtr - cap: t.CSizeT - byte_pos: t.CSizeT - bit_pos: t.CInt - def __init__(self: zbit_writer, pool: memhub.MemManager | t.CPtr) -> t.CInt: pass - def ensure(self: zbit_writer, need: t.CSizeT) -> t.CInt: pass - def write_bits(self: zbit_writer, value: UINT, nbits: t.CInt) -> t.CInt: pass - def write_bits_rev(self: zbit_writer, code: UINT, nbits: t.CInt) -> t.CInt: pass - def stored_block(self: zbit_writer, data: UINT8PTR, length: t.CSizeT, final: t.CInt) -> t.CInt: pass - def write_zlib_header(self: zbit_writer, wbits: t.CInt, level: t.CInt) -> t.CInt: pass - def write_gzip_header(self: zbit_writer) -> t.CInt: pass - def align(self: zbit_writer) -> t.CInt: pass - def total(self: zbit_writer) -> t.CSizeT: pass - def free(self: zbit_writer) -> t.CInt: pass - def __del__(self: zbit_writer) -> t.CInt: pass -@t.Object -class zbit_reader: - buf: BYTE | t.CPtr - length: t.CSizeT - byte_pos: t.CSizeT - bit_pos: t.CInt - def init(self: zbit_reader, buf: BYTE | t.CPtr, length: t.CSizeT) -> t.CInt: pass - def read_bits(self: zbit_reader, nbits: t.CInt, out: UINTPTR) -> t.CInt: pass - def read_bits_rev(self: zbit_reader, nbits: t.CInt, out: UINTPTR) -> t.CInt: pass - def align(self: zbit_reader) -> t.CInt: pass - -def zdef_alloc(pool: memhub.MemManager | t.CPtr, n: t.CSizeT) -> VOIDPTR: pass - -def zdef_free(pool: memhub.MemManager | t.CPtr, p: VOIDPTR) -> t.CInt: pass diff --git a/.transpyc_cache/21a7fcfc665f75ef.pyi b/.transpyc_cache/21a7fcfc665f75ef.pyi deleted file mode 100644 index 6f344a3..0000000 --- a/.transpyc_cache/21a7fcfc665f75ef.pyi +++ /dev/null @@ -1,87 +0,0 @@ -""" -Auto-generated Python stub file from llvmlite.__module.py -Module: llvmlite.__module -""" - - -import t, c -from stdint import * -import string -import stdio -import viperlib -import memhub -from linkedlist import GSList, GSListNode -from .__types import LLVMType, TypePrint, Array, PrintStructDefinition, get_struct_name, Struct -from .__function import Function, FunctionPrint, _ll_name_needs_quote, Param - -@t.NoVTable -class GlobalVariable(GSListNode[GlobalVariable]): - Name: t.CChar | t.CPtr - Ty: LLVMType | t.CPtr - Initializer: t.CVoid | t.CPtr - IsConstant: t.CInt - Linkage: t.CChar | t.CPtr - Section: t.CChar | t.CPtr - UnnamedAddr: t.CInt -@t.NoVTable -class NamedTypeNode(GSListNode[NamedTypeNode]): - Ty: LLVMType | t.CPtr -@t.NoVTable -class LLVMModule: - Name: t.CChar | t.CPtr - FuncHead: Function | t.CPtr - FuncTail: Function | t.CPtr - FuncCount: t.CSizeT - GlobalHead: GlobalVariable | t.CPtr - GlobalTail: GlobalVariable | t.CPtr - GlobalCount: t.CSizeT - TargetTriple: t.CChar | t.CPtr - DataLayout: t.CChar | t.CPtr - NamedTypeHead: NamedTypeNode | t.CPtr - NamedTypeTail: NamedTypeNode | t.CPtr - NamedTypeCount: t.CSizeT - -def new_module(pool: memhub.MemBuddy | t.CPtr, name: t.CChar | t.CPtr) -> LLVMModule | t.CPtr: pass - - -GV_SIZE: t.CDefine = 64 -NAMED_TYPE_NODE_SIZE: t.CDefine = 16 - -def new_global_variable(pool: memhub.MemBuddy | t.CPtr, name: t.CChar | t.CPtr, ty: LLVMType | t.CPtr) -> GlobalVariable | t.CPtr: pass - -def module_add_function(mod: LLVMModule | t.CPtr, func: Function | t.CPtr) -> t.CInt: pass - -def module_add_global(mod: LLVMModule | t.CPtr, gv: GlobalVariable | t.CPtr) -> t.CInt: pass - -def module_set_target(mod: LLVMModule | t.CPtr, triple: t.CChar | t.CPtr) -> t.CInt: pass - -def module_set_datalayout(mod: LLVMModule | t.CPtr, layout: t.CChar | t.CPtr) -> t.CInt: pass - -def module_add_named_type(mod: LLVMModule | t.CPtr, pool: memhub.MemBuddy | t.CPtr, ty: LLVMType | t.CPtr) -> t.CInt: pass - -def _is_type_defined_in_module(mod: LLVMModule | t.CPtr, name: t.CChar | t.CPtr) -> int: pass - -def _scan_type_for_cross_module_refs(pool: memhub.MemBuddy | t.CPtr, mod: LLVMModule | t.CPtr, ty: LLVMType | t.CPtr) -> t.CInt: pass - -def module_ensure_opaque_for_type(mod: LLVMModule | t.CPtr, pool: memhub.MemBuddy | t.CPtr, ty: LLVMType | t.CPtr) -> t.CInt: pass - -def global_set_constant(gv: GlobalVariable | t.CPtr, is_const: t.CInt) -> t.CInt: pass - -def global_set_linkage(gv: GlobalVariable | t.CPtr, linkage: t.CChar | t.CPtr) -> t.CInt: pass - -def global_set_unnamed_addr(gv: GlobalVariable | t.CPtr, level: t.CInt) -> t.CInt: pass - -def global_set_section(gv: GlobalVariable | t.CPtr, section: t.CChar | t.CPtr) -> t.CInt: pass - - -OUTPUT_FULL: t.CDefine = 0 # 完整 IR(stub + text) -OUTPUT_STUB: t.CDefine = 1 # 仅声明(header + 类型定义 + declare + external global) -OUTPUT_TEXT: t.CDefine = 2 # 仅代码(define + global 带初值) - -def LLVMModulePrint(buf: t.CChar | t.CPtr, size: t.CSizeT, mod: LLVMModule | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mode: t.CInt) -> t.CInt: pass - -def _print_global(buf: t.CChar | t.CPtr, size: t.CSizeT, gv: GlobalVariable | t.CPtr, pool: memhub.MemBuddy | t.CPtr) -> t.CInt: pass - -def _print_global_stub(buf: t.CChar | t.CPtr, size: t.CSizeT, gv: GlobalVariable | t.CPtr, pool: memhub.MemBuddy | t.CPtr) -> t.CInt: pass - -def _append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass diff --git a/.transpyc_cache/21fffba3315e81b4.doc.json b/.transpyc_cache/21fffba3315e81b4.doc.json deleted file mode 100644 index f6553a0..0000000 --- a/.transpyc_cache/21fffba3315e81b4.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"Logger.banner": "输出分节标题(青色高亮)。", "Logger.compile_error": "格式化编译错误输出(红底白字标题 + 位置 + 错误信息)。", "Logger.compile_warning": "格式化编译警告输出(黄底黑字标题 + 位置 + 警告信息)。", "get_logger": "获取全局 logger 实例。若不存在则通过 _mbuddy 分配并初始化。", "set_logger": "设置全局 logger 实例。"} \ No newline at end of file diff --git a/.transpyc_cache/21fffba3315e81b4.pyi b/.transpyc_cache/21fffba3315e81b4.pyi deleted file mode 100644 index 04be3c9..0000000 --- a/.transpyc_cache/21fffba3315e81b4.pyi +++ /dev/null @@ -1,60 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.VLogger.py -Module: lib.core.VLogger -""" - - -import t, c -from stdint import * -import stdio -import memhub -import w32.win32console as w32cmd -import w32.win32file as w32file -import w32.win32base as w32base - -class LogLevel(t.CEnum): - DEBUG = 0 - INFO = 1 - WARNING = 2 - ERROR = 3 - SUCCESS = 4 - -FOREGROUND_BLUE: t.CDefine = 0x0001 -FOREGROUND_GREEN: t.CDefine = 0x0002 -FOREGROUND_RED: t.CDefine = 0x0004 -FOREGROUND_INTENSITY: t.CDefine = 0x0008 -FOREGROUND_WHITE: t.CDefine = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE -FOREGROUND_CYAN: t.CDefine = FOREGROUND_BLUE | FOREGROUND_GREEN -FOREGROUND_YELLOW: t.CDefine = FOREGROUND_RED | FOREGROUND_GREEN -FOREGROUND_MAGENTA: t.CDefine = FOREGROUND_RED | FOREGROUND_BLUE -BACKGROUND_RED: t.CDefine = 0x0040 -BACKGROUND_GREEN: t.CDefine = 0x0020 -BACKGROUND_BLUE: t.CDefine = 0x0010 -BACKGROUND_INTENSITY: t.CDefine = 0x0080 -BACKGROUND_WHITE: t.CDefine = BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE - -class Logger: - _level: int - _console_handle: w32base.HANDLE - _use_color: int - __mbuddy__: memhub.MemManager | t.CPtr - def __init__(self: Logger, level: int) -> t.CInt: pass - def _set_color(self: Logger, attr: WORD) -> int: pass - def _reset_color(self: Logger) -> int: pass - def _log(self: Logger, level: int, prefix: str, msg: str, color: WORD, category: str) -> int: pass - def debug(self: Logger, msg: str, category: str) -> int: pass - def info(self: Logger, msg: str, category: str) -> int: pass - def warning(self: Logger, msg: str, category: str) -> int: pass - def error(self: Logger, msg: str, category: str) -> int: pass - def success(self: Logger, msg: str, category: str) -> int: pass - def set_level(self: Logger, level: int) -> int: pass - def banner(self: Logger, msg: str) -> int: pass - def compile_error(self: Logger, msg: str, file: str, line: int) -> int: pass - def compile_warning(self: Logger, msg: str, file: str, line: int) -> int: pass - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -_g_logger: t.CExtern | Logger | t.CPtr - -def get_logger() -> Logger | t.CPtr: pass - -def set_logger(logger: Logger | t.CPtr) -> int: pass diff --git a/.transpyc_cache/22650858c377c847.doc.json b/.transpyc_cache/22650858c377c847.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/22650858c377c847.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/22650858c377c847.pyi b/.transpyc_cache/22650858c377c847.pyi deleted file mode 100644 index 24552b0..0000000 --- a/.transpyc_cache/22650858c377c847.pyi +++ /dev/null @@ -1,64 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - -import c - - -import t -import stdio -import string -import testcheck -import linkedlist -import viperlib -import stdlib - -class Node(linkedlist.LinkedNode): - value: t.CInt - -def test_append() -> t.CInt: pass - -def test_prev_link() -> t.CInt: pass - -def test_last_child() -> t.CInt: pass - -def test_remove() -> t.CInt: pass - -def test_remove_child() -> t.CInt: pass - -def test_insert_ops() -> t.CInt: pass - -def test_index_access() -> t.CInt: pass - -def test_sibling_traverse() -> t.CInt: pass - -def test_unlink() -> t.CInt: pass - - -class SNode(linkedlist.SListNode): - value: t.CInt - -def test_slist() -> t.CInt: pass - -def test_sprintf_vararg() -> t.CInt: pass - - -@t.NoVTable -class GSListNode[T]: - Next: T | t.CPtr -@t.NoVTable -class GSList[T]: - Head: T | t.CPtr - Tail: T | t.CPtr - Count: t.CSizeT - def __init__(self: GSList) -> t.CInt: pass - def append(self: GSList, node: T) -> t.CInt: pass - def count(self: GSList) -> t.CSizeT: pass - def at(self: GSList, index: t.CSizeT) -> T | t.CPtr: pass -class GNode(GSListNode[GNode]): - Value: t.CInt - -def test_generic_slist() -> t.CInt: pass - -def main() -> t.CInt: pass diff --git a/.transpyc_cache/240a9a4157959a9f.pyi b/.transpyc_cache/240a9a4157959a9f.pyi deleted file mode 100644 index c230800..0000000 --- a/.transpyc_cache/240a9a4157959a9f.pyi +++ /dev/null @@ -1,38 +0,0 @@ -""" -Auto-generated Python stub file from json.__parser.py -Module: json.__parser -""" - - -import t, c -from stdint import * -import memhub -import string -from . import JsonValue, JSON_NULL, JSON_BOOL, JSON_INT, JSON_FLOAT, JSON_STRING, JSON_ARRAY, JSON_OBJECT, null, bool_val, int_val, float_val, string_val, array, object - -class ParseState: - src: t.CChar | t.CPtr - pos: t.CSizeT - len: t.CSizeT - pool: memhub.MemManager | t.CPtr - def __init__(self: ParseState, src: t.CChar | t.CPtr, pool: memhub.MemManager | t.CPtr) -> t.CInt: pass - -def _peek(s: ParseState | t.CPtr) -> t.CChar: pass - -def _advance(s: ParseState | t.CPtr) -> t.CChar: pass - -def _skip_whitespace(s: ParseState | t.CPtr) -> t.CInt: pass - -def _expect(s: ParseState | t.CPtr, ch: t.CChar) -> bool: pass - -def _parse_string(s: ParseState | t.CPtr) -> t.CChar | t.CPtr: pass - -def _parse_number(s: ParseState | t.CPtr) -> JsonValue | t.CPtr: pass - -def _parse_value(s: ParseState | t.CPtr) -> JsonValue | t.CPtr: pass - -def _parse_array(s: ParseState | t.CPtr) -> JsonValue | t.CPtr: pass - -def _parse_object(s: ParseState | t.CPtr) -> JsonValue | t.CPtr: pass - -def parse(pool: memhub.MemManager | t.CPtr, src: t.CChar | t.CPtr) -> JsonValue | t.CPtr: pass diff --git a/.transpyc_cache/249b0b9083e25ad2.doc.json b/.transpyc_cache/249b0b9083e25ad2.doc.json deleted file mode 100644 index 56e8c7e..0000000 --- a/.transpyc_cache/249b0b9083e25ad2.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"RunPhase1": "Phase1: 扫描 includes 目录,按需翻译并生成 stub"} \ No newline at end of file diff --git a/.transpyc_cache/249b0b9083e25ad2.pyi b/.transpyc_cache/249b0b9083e25ad2.pyi deleted file mode 100644 index d866b3e..0000000 --- a/.transpyc_cache/249b0b9083e25ad2.pyi +++ /dev/null @@ -1,31 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Phase1.py -Module: lib.core.Phase1 -""" - - -import t, c -from stdint import * -import stdio -import string -import stdlib -import memhub -import viperlib -import w32.fileio as fileio -import w32.win32file -import w32.win32base -import ast -import llvmlite -import lib.core.VLogger as VLogger -import lib.core.Handles.HandlesTranslator as HandlesTranslator -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.IncludesScanner as IncludesScanner -import lib.core.StubMerger as StubMerger -import lib.Projectrans.Config as Config - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -SRC_BUF_SIZE: t.CDefine = 1048576 - -def RunPhase1(mb: memhub.MemBuddy | t.CPtr, includes_dir: str, temp_dir: str, log: VLogger.Logger | t.CPtr) -> int: pass diff --git a/.transpyc_cache/24b9e251de12bd96.doc.json b/.transpyc_cache/24b9e251de12bd96.doc.json deleted file mode 100644 index c00e036..0000000 --- a/.transpyc_cache/24b9e251de12bd96.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数\n\n 直接接收三个 Value 参数,避免通过 Next 链表遍历(共享 alloca 对象的\n Next 字段可能被其他操作污染,导致链表断裂)。\n ", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/24b9e251de12bd96.pyi b/.transpyc_cache/24b9e251de12bd96.pyi deleted file mode 100644 index 40c3168..0000000 --- a/.transpyc_cache/24b9e251de12bd96.pyi +++ /dev/null @@ -1,171 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, dst_val: llvmlite.Value | t.CPtr, src_val: llvmlite.Value | t.CPtr, num_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/24e26a8de1173993.doc.json b/.transpyc_cache/24e26a8de1173993.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/24e26a8de1173993.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/24e26a8de1173993.pyi b/.transpyc_cache/24e26a8de1173993.pyi deleted file mode 100644 index 0053550..0000000 --- a/.transpyc_cache/24e26a8de1173993.pyi +++ /dev/null @@ -1,39 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - -import c - - -import t -import stdio -import string -import testcheck - -class Point(t.Struct): - x: t.CInt - y: t.CInt -class Rect(t.Struct): - origin: Point - size: Point -class Node(t.Struct): - value: t.CInt - next: t.CPtr | t.CVoid - -def test_struct_basic() -> t.CInt: pass - -def test_struct_nested() -> t.CInt: pass - -def test_struct_pointer() -> t.CInt: pass - -def test_struct_param() -> t.CInt: pass - -def point_sum(p: Point) -> t.CInt: pass - -def test_struct_array() -> t.CInt: pass - - -import w32.win32memory - -def main() -> t.CInt: pass diff --git a/.transpyc_cache/257e074b935c33b4.pyi b/.transpyc_cache/257e074b935c33b4.pyi deleted file mode 100644 index 34d2feb..0000000 --- a/.transpyc_cache/257e074b935c33b4.pyi +++ /dev/null @@ -1,45 +0,0 @@ -""" -Auto-generated Python stub file from binascii.py -Module: binascii -""" - - -import t, c - -HEX_CHARS: t.CExtern | t.CArray[t.CChar, None] -HEX_VALS: t.CExtern | t.CArray[t.CInt, 256] -B64_CHARS: t.CExtern | t.CArray[t.CChar, None] -B64_VALS: t.CExtern | t.CArray[t.CInt, 256] -HQX_CHARS: t.CExtern | t.CArray[t.CChar, 64] -HQX_VALS: t.CExtern | t.CArray[t.CInt, 256] -UU_CHARS: t.CExtern | t.CArray[t.CChar, None] -CRC32_TABLE: t.CExtern | t.CArray[t.CUnsignedInt, 256] -CRC_HQX_TABLE: t.CExtern | t.CArray[t.CUnsignedShort, 256] - -def init_binascii() -> t.CInt: pass - -def crc32(data: str, length: t.CInt, crc: t.CUnsignedInt) -> t.CUnsignedInt: pass - -def crc_hqx(data: str, length: t.CInt, crc: t.CUnsignedShort) -> t.CUnsignedShort: pass - -def hexlify(data: str, length: t.CInt) -> str: pass - -def b2a_hex(data: str, length: t.CInt) -> str: pass - -def a2b_hex(hexstr: str, length: t.CInt) -> str: pass - -def unhexlify(data: str, length: t.CInt) -> t.CInt: pass - -def b2a_base64(data: str, length: t.CInt) -> str: pass - -def a2b_base64(data: str, length: t.CInt) -> str: pass - -def b2a_uu(data: str, length: t.CInt) -> str: pass - -def a2b_uu(data: str) -> str: pass - -def b2a_hqx(data: str, length: t.CInt, crc: t.CUnsignedShort) -> tuple[str, t.CUnsignedShort]: pass - -def a2b_hqx(data: str, crc: t.CUnsignedShort) -> tuple[str, t.CUnsignedShort]: pass - -def adler32(data: str, length: t.CInt, adler: t.CUnsignedInt) -> t.CUnsignedInt: pass diff --git a/.transpyc_cache/25c18686adb93279.doc.json b/.transpyc_cache/25c18686adb93279.doc.json deleted file mode 100644 index c00e036..0000000 --- a/.transpyc_cache/25c18686adb93279.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数\n\n 直接接收三个 Value 参数,避免通过 Next 链表遍历(共享 alloca 对象的\n Next 字段可能被其他操作污染,导致链表断裂)。\n ", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/25c18686adb93279.pyi b/.transpyc_cache/25c18686adb93279.pyi deleted file mode 100644 index 40c3168..0000000 --- a/.transpyc_cache/25c18686adb93279.pyi +++ /dev/null @@ -1,171 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, dst_val: llvmlite.Value | t.CPtr, src_val: llvmlite.Value | t.CPtr, num_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/2769dee537308b00.doc.json b/.transpyc_cache/2769dee537308b00.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/2769dee537308b00.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/2769dee537308b00.pyi b/.transpyc_cache/2769dee537308b00.pyi deleted file mode 100644 index 2d8296e..0000000 --- a/.transpyc_cache/2769dee537308b00.pyi +++ /dev/null @@ -1,22 +0,0 @@ -""" -Auto-generated Python stub file from vtable_test.py -Module: vtable_test -""" - - -import stdio -import t, c - -@t.CVTable -class Animal: - name: t.CInt - def __init__(self: Animal, n: t.CInt) -> t.CInt: pass - def GetName(self: Animal) -> t.CInt: pass - def Speak(self: Animal) -> t.CInt: pass -@t.CVTable -class Shape: - sides: t.CInt - def SetSides(self: Shape, n: t.CInt) -> t.CInt: pass - def GetSides(self: Shape) -> t.CInt: pass - -def vtable_test() -> int: pass diff --git a/.transpyc_cache/27b003cb178b709a.doc.json b/.transpyc_cache/27b003cb178b709a.doc.json deleted file mode 100644 index a8e6f20..0000000 --- a/.transpyc_cache/27b003cb178b709a.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_is_cenum_base": "检查 base 节点是否为 t.CEnum,返回 1=是 / 0=否", "_is_enum_class": "检查 ClassDef 是否继承自 t.CEnum,返回 1=是 / 0=否", "_is_cunion_base": "检查 base 节点是否为 t.CUnion,返回 1=是 / 0=否", "_is_union_class": "检查 ClassDef 是否继承自 t.CUnion,返回 1=是 / 0=否", "_has_decorator": "检查 decorator_list 中是否有指定装饰器名", "_is_marker_base": "检查基类名是否为标记基类,返回 1=是 / 0=否", "_get_base_name": "从 base AST 节点提取基类名,返回 None=失败", "_get_parent_class": "获取 ClassDef 的真实父类名,返回 None=无真实父类", "_has_any_func_cvtable": "检查类中是否有任何函数标记了 @t.CVTable,返回 1=有 / 0=无", "_should_method_be_virtual": "判断方法是否应该进入虚表,返回 1=包含 / 0=排除", "_detect_vtable_status": "检测类是否应该启用虚表", "_resolve_enum_member_type": "解析枚举成员的类型注解为 LLVM 整数类型", "_is_state_annotation": "检查注解节点是否为 t.State,返回 1=是 / 0=否", "_extract_int_value": "从 AST 节点提取整数值,失败返回 0", "_translate_enum_def": "翻译枚举类定义,返回 0", "_get_type_size": "计算 LLVM 类型的字节大小", "_translate_union_def": "翻译联合体定义,返回 0", "_is_generic_class": "检查 ClassDef 是否有类型参数(泛型类),返回 1=是 / 0=否", "_register_generic_template": "注册泛型类模板(类名 + ClassDef 节点)", "_find_generic_template": "查找泛型类模板,返回 ClassDef 节点或 None", "_mangle_generic_class_name": "生成特化类名: list + [int] -> list[int]\n\n 分配新缓冲区拼接,避免原地 strcat 导致缓冲区溢出\n ", "_clone_annotation": "拷贝类型注解表达式,替换类型参数 T 为具体类型名\n\n tp_names: 类型参数名列表 ['T']\n type_args: 类型实参名列表 ['int']\n ", "_clone_arguments": "拷贝 Arguments 节点,替换 arg annotation 中的 T", "_clone_classdef_for_spec": "拷贝 ClassDef 节点用于泛型特化\n\n - 替换类名为 spec_name\n - 清除 type_params(特化后不是泛型类)\n - 拷贝 children 中的 AnnAssign 和 FunctionDef,替换类型注解中的 T\n - 方法体直接引用原始节点(通过 type_map 上下文处理 T)\n ", "_find_cached_spec": "查找已缓存的特化名,未找到返回 None", "_cache_spec": "缓存特化结果", "_specialize_generic_class": "特化泛型类,返回特化类名\n\n 1. 查找泛型模板\n 2. 生成特化名\n 3. 检查缓存\n 4. 拷贝 ClassDef 节点(替换类型注解中的 T)\n 5. 设置 type_map 上下文(用于方法体中的 T 替换)\n 6. 调用 translate_class_def 翻译特化类\n 7. 返回特化名\n ", "translate_class_def": "翻译 class 定义,返回 0", "_vtable_strcat": "将 src 追加到 dst 末尾", "_vtable_name_needs_quote": "检查 LLVM 标识符是否需要引号(以数字开头或含 '.')", "_format_func_type_str": "从 Function 对象生成函数类型字符串", "_generate_vtable": "生成 VTable 全局变量", "_translate_oop_methods": "扫描 class body 中的方法并翻译,生成 __before_init__", "_translate_method": "翻译单个方法,返回 0", "_generate_before_init": "生成 __before_init__ 函数,返回 0"} \ No newline at end of file diff --git a/.transpyc_cache/27b003cb178b709a.pyi b/.transpyc_cache/27b003cb178b709a.pyi deleted file mode 100644 index 62b2e80..0000000 --- a/.transpyc_cache/27b003cb178b709a.pyi +++ /dev/null @@ -1,104 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesClassDef.py -Module: lib.core.Handles.HandlesClassDef -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import viperlib -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesEnum as HandlesEnum - -ENUM_MEMBER_MAX_LOCAL: t.CDefine = 64 - -def _is_cenum_base(base_node: ast.AST | t.CPtr) -> int: pass - -def _is_enum_class(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _is_cunion_base(base_node: ast.AST | t.CPtr) -> int: pass - -def _is_union_class(cd: ast.ClassDef | t.CPtr) -> int: pass - - -_MARKER_BASES: t.CDefine = 8 - -def _has_decorator(decorator_list: list[ast.AST | t.CPtr] | t.CPtr, deco_name: str) -> int: pass - -def _is_marker_base(base_name: str) -> int: pass - -def _get_base_name(base_node: ast.AST | t.CPtr) -> str: pass - -def _get_parent_class(cd: ast.ClassDef | t.CPtr) -> str: pass - -def _has_any_func_cvtable(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _should_method_be_virtual(cd: ast.ClassDef | t.CPtr, fd: ast.FunctionDef | t.CPtr, trans: HT.Translator | t.CPtr) -> int: pass - -def _detect_vtable_status(cd: ast.ClassDef | t.CPtr, trans: HT.Translator | t.CPtr) -> int: pass - -def _resolve_enum_member_type(pool: memhub.MemBuddy | t.CPtr, ann_node: ast.AST | t.CPtr, imported_modules: str, from_imports: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _is_state_annotation(node: ast.AST | t.CPtr) -> int: pass - -def _extract_int_value(node: ast.AST | t.CPtr) -> t.CInt64T: pass - -def _translate_enum_def(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr) -> int: pass - -def _get_type_size(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def _translate_union_def(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr) -> int: pass - - -_generic_class_names: t.CExtern | list[str] | t.CPtr -_generic_class_nodes: t.CExtern | list[ast.ClassDef | t.CPtr] | t.CPtr - -def _is_generic_class(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _register_generic_template(pool: memhub.MemBuddy | t.CPtr, cd: ast.ClassDef | t.CPtr) -> t.CInt: pass - -def _find_generic_template(class_name: str) -> ast.ClassDef | t.CPtr: pass - -def _mangle_generic_class_name(pool: memhub.MemBuddy | t.CPtr, class_name: str, type_args: list[str] | t.CPtr) -> str: pass - -def _clone_annotation(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.AST | t.CPtr: pass - -def _clone_arguments(pool: memhub.MemBuddy | t.CPtr, args: ast.AST | t.CPtr, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.AST | t.CPtr: pass - -def _clone_classdef_for_spec(pool: memhub.MemBuddy | t.CPtr, cd: ast.ClassDef | t.CPtr, spec_name: str, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.ClassDef | t.CPtr: pass - - -_spec_keys: t.CExtern | list[str] | t.CPtr -_spec_names: t.CExtern | list[str] | t.CPtr - -def _find_cached_spec(spec_key: str) -> str: pass - -def _cache_spec(pool: memhub.MemBuddy | t.CPtr, spec_key: str, spec_name: str) -> t.CInt: pass - -def _specialize_generic_class(trans: HT.Translator | t.CPtr, class_name: str, type_args: list[str] | t.CPtr) -> str: pass - -def translate_class_def(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - - -VTBL_METHOD_MAX: t.CDefine = 32 - -def _vtable_strcat(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _vtable_name_needs_quote(name: str) -> int: pass - -def _format_func_type_str(pool: memhub.MemBuddy | t.CPtr, buf: t.CChar | t.CPtr, buf_size: t.CSizeT, func: llvmlite.Function | t.CPtr) -> int: pass - -def _generate_vtable(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr, class_name: str) -> int: pass - -def _translate_oop_methods(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass - -def _translate_method(trans: HT.Translator | t.CPtr, fd: ast.FunctionDef | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass - -def _generate_before_init(trans: HT.Translator | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass diff --git a/.transpyc_cache/2998b8f78d7022bf.doc.json b/.transpyc_cache/2998b8f78d7022bf.doc.json deleted file mode 100644 index d24160b..0000000 --- a/.transpyc_cache/2998b8f78d7022bf.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"Translator": "翻译器:管理编译状态,委托 Handles 模块执行翻译", "Translator._init_state": "初始化变量表、函数表和子 Handle", "Translator.translate": "将 AST 翻译为 LLVM IR", "Translator._translate_wrapper_main": "委托 HandlesMain.create_wrapper_main() 创建包装 main(trans 单参)", "Translator._translate_module_level": "委托 HandlesMain.translate_children() 翻译模块级语句(trans 单参)", "Translator.dump_ir": "将 LLVM IR 输出到缓冲区\n\n mode: 0=完整, 1=stub(仅声明), 2=text(仅代码)\n ", "add_global_name": "添加一个 global 变量名", "is_global_name": "检查 name 是否在当前函数的 global 集合中", "add_nonlocal_name": "添加一个 nonlocal 变量名", "is_nonlocal_name": "检查 name 是否在当前函数的 nonlocal 集合中", "get_nonlocal_index": "获取 nonlocal 变量在 env 中的索引(0-based),找不到返回 -1", "clear_scope_names": "清空当前函数的 global/nonlocal 名称集合(进入新函数时调用)"} \ No newline at end of file diff --git a/.transpyc_cache/2998b8f78d7022bf.pyi b/.transpyc_cache/2998b8f78d7022bf.pyi deleted file mode 100644 index 865ebf6..0000000 --- a/.transpyc_cache/2998b8f78d7022bf.pyi +++ /dev/null @@ -1,90 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesTranslator.py -Module: lib.core.Handles.HandlesTranslator -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.Handles.HandlesMain as HandlesMain -import lib.core.Handles.HandlesAssign as HandlesAssign -import lib.core.Handles.HandlesReturn as HandlesReturn -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesAnnAssign as HandlesAnnAssign -import lib.core.Handles.HandlesAugAssign as HandlesAugAssign -import lib.core.Handles.HandlesIf as HandlesIf -import lib.core.Handles.HandlesWhile as HandlesWhile -import lib.core.Handles.HandlesFor as HandlesFor -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesFunctions as HandlesFunctions -import lib.Projectrans.Config as Config - -MAX_VARS: t.CDefine = 256 -MAX_FUNCS: t.CDefine = 256 -MAX_GLOBAL_NAMES: t.CDefine = 32 - -@t.NoVTable -class Translator: - Module: llvmlite.LLVMModule | t.CPtr - Pool: memhub.MemBuddy | t.CPtr - _funcs: HandlesExprCall.FuncEntry | t.CPtr - _func_count: t.CInt - _imported_modules: str - _from_imports: str - _cur_func: llvmlite.Function | t.CPtr - _cur_builder: llvmlite.IRBuilder | t.CPtr - _break_bb: llvmlite.BasicBlock | t.CPtr - _continue_bb: llvmlite.BasicBlock | t.CPtr - _label_counter: t.CInt - _global_names: str - _global_name_count: t.CInt - _nonlocal_names: str - _nonlocal_name_count: t.CInt - _cur_func_name: str - ModuleSha1: str - CurrentPackage: str - _closure_env_offsets: t.CInt - _closure_env_count: t.CInt - GenericTypeParamNames: list[str] | t.CPtr - GenericTypeArgs: list[str] | t.CPtr - _declare_only: t.CInt - AssignH: HandlesAssign.AssignHandle | t.CPtr - ReturnH: HandlesReturn.ReturnHandle | t.CPtr - ImportsH: HandlesImports.ImportsHandle | t.CPtr - AnnAssignH: HandlesAnnAssign.AnnAssignHandle | t.CPtr - AugAssignH: HandlesAugAssign.AugAssignHandle | t.CPtr - IfH: HandlesIf.IfHandle | t.CPtr - WhileH: HandlesWhile.WhileHandle | t.CPtr - ForH: HandlesFor.ForHandle | t.CPtr - ExprH: HandlesExpr.ExprHandle | t.CPtr - ExprCallH: HandlesExprCall.ExprCallHandle | t.CPtr - SymTab: HandlesVar.SymbolTable | t.CPtr - def __init__(self: Translator) -> t.CInt: pass - def _init_state(self: Translator, pool: memhub.MemBuddy | t.CPtr) -> t.CInt: pass - def translate(self: Translator, tree: ast.AST | t.CPtr) -> int: pass - def _translate_wrapper_main(self: Translator, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, tree: ast.AST | t.CPtr, i32_ty: llvmlite.LLVMType | t.CPtr) -> t.CInt: pass - def _translate_module_level(self: Translator, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, tree: ast.AST | t.CPtr) -> t.CInt: pass - def dump_ir(self: Translator, buf: bytes, size: t.CSizeT, mode: int) -> t.CInt: pass - -def add_global_name(trans: HT.Translator | t.CPtr, name: str) -> t.CInt: pass - -def is_global_name(trans: HT.Translator | t.CPtr, name: str) -> int: pass - -def add_nonlocal_name(trans: HT.Translator | t.CPtr, name: str) -> t.CInt: pass - -def is_nonlocal_name(trans: HT.Translator | t.CPtr, name: str) -> int: pass - -def get_nonlocal_index(trans: HT.Translator | t.CPtr, name: str) -> int: pass - -def clear_scope_names(trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -_mbuddy: t.CExtern | memhub.MemBuddy | t.CPtr \ No newline at end of file diff --git a/.transpyc_cache/2ae1bee155fb09d3.doc.json b/.transpyc_cache/2ae1bee155fb09d3.doc.json deleted file mode 100644 index ca04595..0000000 --- a/.transpyc_cache/2ae1bee155fb09d3.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"reset_visible_structs": "重置可见性状态(每个文件翻译前调用)\n\n pool: 内存分配器(严格模式下创建 HashTable)\n strict: 1=严格模式(用户文件),0=宽松模式(includes 文件)\n ", "add_visible_struct": "添加可见结构体名(类定义时和 from-import 时调用)", "is_struct_visible": "检查结构体是否可见,返回 1=可见 / 0=不可见", "init_struct_table": "初始化结构体注册表,返回 1 成功", "_get_struct_entry": "获取第 i 个结构体条目", "_get_field_entry": "获取结构体中第 i 个字段条目", "register_struct": "注册结构体类型,返回 StructEntry 指针\n\n 用类型指针去重(is 比较),不用类名去重。\n 这样跨模块同名类可以共存,各自有独立的字段定义。\n sha1 参数在注册时直接设置 ModuleSha1(避免 set_struct_sha1 找错 entry)。\n ", "set_struct_sha1": "设置结构体所属模块的 SHA1,返回 1=成功 / 0=失败", "get_struct_sha1": "获取结构体所属模块的 SHA1,返回 None=无 SHA1", "add_field": "向结构体添加字段,返回字段索引(-1 失败)\n\n default_val: 字段默认值 AST 节点(可选,None=无默认值)\n annot_class_name: 原始类型注解的类名(可选,用于联合类型字段的方法调用解析)\n ", "find_struct": "按类名查找结构体,返回 StructEntry 或 None", "find_struct_by_module": "按类名 + SHA1 查找结构体,返回 StructEntry 或 None\n\n SHA1 非 None 时:精确匹配 name+sha1,未找到返回 None(不回退,避免跨模块同名找错)\n SHA1 为 None 时:回退到 find_struct(name) 按类名查找第一个\n ", "find_struct_by_type": "按类型指针查找结构体(is 比较),返回 StructEntry 或 None", "lookup_field": "按结构体类型和字段名查找字段信息\n\n 两遍查找策略(跨模块同名类冲突的根本修复):\n 第一遍: 类型指针 is 身份比较(最高优先级,类型唯一确定 entry)\n 第二遍: 名称回退(is 未匹配时,按类名/strstr 匹配,字段未找到时 continue)\n ", "lookup_field_by_class": "按类名和字段名查找字段信息\n\n 优先用 SHA1 匹配(跨模块同名类区分),无 SHA1 时按类名查找第一个\n ", "get_struct_type": "按类名获取结构体的 LLVM 类型", "get_field_by_index": "按类名和字段索引获取字段信息", "struct_has_defaults": "检查结构体是否有任何带默认值的字段,返回 1=有 / 0=无", "_is_struct_type": "检查 ty 是否是 Struct 类型(独立函数,规避嵌套 match 编译器 BUG)", "get_struct_type_from_value": "从 Value 的类型推断结构体类型", "mark_as_union": "标记已注册的结构体为联合体,返回 1=成功 / 0=失败", "is_union_by_name": "按类名检查是否为联合体,返回 1=是 / 0=否", "is_union_by_type": "按类型指针检查是否为联合体,返回 1=是 / 0=否\n\n 先尝试类型指针 == 比较,失败时回退到名称匹配\n ", "mark_as_oop": "标记已注册的结构体为 OOP,返回 1=成功 / 0=失败", "is_oop_by_name": "按类名检查是否为 OOP 结构体,返回 1=是 / 0=否", "mark_has_init": "标记结构体拥有 __init__ 方法,返回 1=成功 / 0=失败", "has_init_by_name": "按类名检查是否有 __init__ 方法,返回 1=有 / 0=无", "mark_has_new": "标记结构体拥有 __new__ 方法,返回 1=成功 / 0=失败", "has_new_by_name": "按类名检查是否有 __new__ 方法,返回 1=有 / 0=无", "get_class_name_by_type": "按类型指针查找类名,返回类名字符串或 None", "_extract_struct_name": "从 LLVMType 提取 Struct 变体的 Name 字段,返回 None 非 Struct", "mark_has_vtable": "标记结构体拥有虚表,返回 1=成功 / 0=失败", "has_vtable_by_name": "按类名检查是否有虚表,返回 1=有 / 0=无", "mark_novtable": "标记结构体为 NoVTable,返回 1=成功 / 0=失败", "is_novtable_by_name": "按类名检查是否为 NoVTable,返回 1=是 / 0=否", "set_parent_name": "设置结构体的父类名,返回 1=成功 / 0=失败", "get_parent_name": "获取结构体的父类名,返回 None=无父类", "set_vtable_methods": "设置虚表方法名数组,返回 1=成功 / 0=失败", "get_vtable_method_index": "获取方法在虚表中的索引,返回 -1=未找到", "get_vtable_method_count": "获取虚表方法数量", "get_vtable_method_name": "获取虚表中第 idx 个方法名,返回 None=越界", "get_field_count": "获取结构体字段数量,返回 -1=未找到", "get_field_name_ptr": "获取 FieldEntry 的字段名,返回 None=未设置", "get_field_type_ptr": "获取 FieldEntry 的字段类型,返回 None=未设置", "get_field_default_ptr": "获取 FieldEntry 的默认值 AST 节点,返回 None=无默认值", "get_field_annot_class_name": "获取 FieldEntry 的原始类型注解类名,返回 None=未设置"} \ No newline at end of file diff --git a/.transpyc_cache/2ae1bee155fb09d3.pyi b/.transpyc_cache/2ae1bee155fb09d3.pyi deleted file mode 100644 index 24ef0f1..0000000 --- a/.transpyc_cache/2ae1bee155fb09d3.pyi +++ /dev/null @@ -1,139 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesStruct.py -Module: lib.core.Handles.HandlesStruct -""" - - -import t, c -from stdint import * -import memhub -import string -import llvmlite -import stdio -import ast -import hashtable - -STRUCT_MAX: t.CDefine = 512 -FIELD_MAX: t.CDefine = 32 -FIELD_NAME_MAX: t.CDefine = 64 - -@t.NoVTable -class FieldEntry: - Name: t.CChar | t.CPtr - Index: int - Ty: llvmlite.LLVMType | t.CPtr - DefaultVal: ast.AST | t.CPtr - AnnotClassName: str -@t.NoVTable -class StructEntry: - Name: t.CChar | t.CPtr - Ty: llvmlite.LLVMType | t.CPtr - FieldCount: int - Fields: FieldEntry | t.CPtr - IsUnion: int - IsOOP: int - HasInit: int - HasNew: int - HasVTable: int - IsNoVTable: int - ParentName: t.CChar | t.CPtr - VTableMethodCount: int - VTableMethods: t.CChar | t.CPtr - ModuleSha1: t.CChar | t.CPtr - -_struct_table: t.CExtern | StructEntry | t.CPtr -_struct_count: t.CExtern | int -_visible_structs: t.CExtern | hashtable.HashTable | t.CPtr -_strict_visibility: t.CExtern | int - -def reset_visible_structs(pool: memhub.MemBuddy | t.CPtr, strict: int) -> t.CInt: pass - -def add_visible_struct(pool: memhub.MemBuddy | t.CPtr, name: str) -> t.CInt: pass - -def is_struct_visible(name: str) -> int: pass - -def init_struct_table(pool: memhub.MemBuddy | t.CPtr) -> int: pass - -def _get_struct_entry(i: int) -> StructEntry | t.CPtr: pass - -def _get_field_entry(struct_entry: StructEntry | t.CPtr, i: int) -> FieldEntry | t.CPtr: pass - -def register_struct(pool: memhub.MemBuddy | t.CPtr, name: str, struct_ty: llvmlite.LLVMType | t.CPtr, sha1: str) -> StructEntry | t.CPtr: pass - -def set_struct_sha1(pool: memhub.MemBuddy | t.CPtr, class_name: str, sha1: str) -> int: pass - -def get_struct_sha1(class_name: str) -> str: pass - -def add_field(pool: memhub.MemBuddy | t.CPtr, struct_entry: StructEntry | t.CPtr, field_name: str, field_ty: llvmlite.LLVMType | t.CPtr, default_val: ast.AST | t.CPtr, annot_class_name: str) -> int: pass - -def find_struct(name: str) -> StructEntry | t.CPtr: pass - -def find_struct_by_module(name: str, sha1: str) -> StructEntry | t.CPtr: pass - -def find_struct_by_type(struct_ty: llvmlite.LLVMType | t.CPtr) -> StructEntry | t.CPtr: pass - -def lookup_field(struct_ty: llvmlite.LLVMType | t.CPtr, field_name: str) -> FieldEntry | t.CPtr: pass - -def lookup_field_by_class(class_name: str, field_name: str, sha1: str) -> FieldEntry | t.CPtr: pass - -def get_struct_type(class_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def get_field_by_index(class_name: str, idx: int) -> FieldEntry | t.CPtr: pass - -def struct_has_defaults(class_name: str) -> int: pass - -def _is_struct_type(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def get_struct_type_from_value(val: llvmlite.Value | t.CPtr) -> llvmlite.LLVMType | t.CPtr: pass - -def mark_as_union(name: str) -> int: pass - -def is_union_by_name(name: str) -> int: pass - -def is_union_by_type(struct_ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def mark_as_oop(name: str) -> int: pass - -def is_oop_by_name(name: str) -> int: pass - -def mark_has_init(name: str) -> int: pass - -def has_init_by_name(name: str) -> int: pass - -def mark_has_new(name: str) -> int: pass - -def has_new_by_name(name: str) -> int: pass - -def get_class_name_by_type(pool: memhub.MemBuddy | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr) -> str: pass - -def _extract_struct_name(ty: llvmlite.LLVMType | t.CPtr) -> str: pass - -def mark_has_vtable(name: str) -> int: pass - -def has_vtable_by_name(name: str) -> int: pass - -def mark_novtable(name: str) -> int: pass - -def is_novtable_by_name(name: str) -> int: pass - -def set_parent_name(name: str, parent_name: str) -> int: pass - -def get_parent_name(name: str) -> str: pass - -def set_vtable_methods(name: str, methods: t.CChar | t.CPtr, count: int) -> int: pass - -def get_vtable_method_index(name: str, method_name: str) -> int: pass - -def get_vtable_method_count(name: str) -> int: pass - -def get_vtable_method_name(name: str, idx: int) -> str: pass - -def get_field_count(name: str) -> int: pass - -def get_field_name_ptr(fe: FieldEntry | t.CPtr) -> str: pass - -def get_field_type_ptr(fe: FieldEntry | t.CPtr) -> llvmlite.LLVMType | t.CPtr: pass - -def get_field_default_ptr(fe: FieldEntry | t.CPtr) -> ast.AST | t.CPtr: pass - -def get_field_annot_class_name(fe: FieldEntry | t.CPtr) -> str: pass diff --git a/.transpyc_cache/2c8ff1a30ee46867.doc.json b/.transpyc_cache/2c8ff1a30ee46867.doc.json deleted file mode 100644 index dda4745..0000000 --- a/.transpyc_cache/2c8ff1a30ee46867.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"get_func_name": "从函数节点提取函数名", "escape_llvm_string": "将字符串转换为 LLVM IR 字符串字面量 c\"...\\00\" ", "get_llvm_type_bits": "获取 LLVM 整数类型的位宽,非整数类型返回 0", "get_llvm_float_bits": "获取 LLVM 浮点类型的位宽,非浮点类型返回 0", "is_ptr_type": "检查 ty 是否是 Ptr 类型,返回 1=是, 0=否", "_deref_if_ptr_ptr": "如果 obj_ptr 是 Ptr(Ptr(...)),load 解引用获取内层指针", "coerce_to_type": "将 val 强制转换为 target_ty\n\n 整数: sext(扩展)/ trunc(截断)\n 浮点: fpext(扩展)/ fptrunc(截断)\n int→float: sitofp\n float→int: fptosi\n ", "create_global_string": "创建全局字符串常量并返回 i8* bitcast", "translate_constant": "翻译常量(int/str/bool)", "_infer_elem_type_from_value": "从 LLVM Value 的类型推断 list 元素类型名", "_find_pool_var": "查找上下文中的 pool 变量,返回 alloca 或 None", "translate_list_literal": "翻译 list 字面量 [a, b, c] → list[T](pool) + append 序列", "translate_value": "翻译值表达式为 LLVM Value", "translate_compare": "翻译比较表达式,返回 i1 结果", "translate_unaryop": "翻译一元运算(-x, +x, not x, ~x)", "translate_boolop": "翻译布尔运算(and/or)的短路求值,返回 i1", "translate_name_value": "翻译变量引用(Name 节点)→ load", "ExprHandle": "表达式处理器:继承 Mixin 获得 Trans 回指针", "ExprHandle.HandleValue": "翻译值表达式,从 self.Trans 获取共享状态", "list_getitem_inline": "内联生成 list __getitem__ 逻辑,返回元素地址 (i8*)", "_list_elem_type_from_name": "从 list 类型名提取元素 LLVM 类型", "list_setitem_inline": "内联生成 list __setitem__ 逻辑,返回 0", "is_list_subscript": "检查 Subscript 节点是否是 list[T] 类型,返回 list 对象指针或 None", "translate_subscript": "翻译下标表达式,返回加载的元素值", "translate_attribute": "翻译属性访问,返回加载的字段值", "get_subscript_ptr": "获取下标表达式的元素指针(用于赋值 lhs)", "get_attribute_ptr": "获取属性访问的字段指针(用于赋值 lhs)"} \ No newline at end of file diff --git a/.transpyc_cache/2c8ff1a30ee46867.pyi b/.transpyc_cache/2c8ff1a30ee46867.pyi deleted file mode 100644 index c495a8e..0000000 --- a/.transpyc_cache/2c8ff1a30ee46867.pyi +++ /dev/null @@ -1,84 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExpr.py -Module: lib.core.Handles.HandlesExpr -""" - - -import t, c -from stdint import * -import ast -import memhub -import string -import llvmlite -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesExprOps as HandlesExprOps -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.Handles.HandlesNonlocal as HandlesNonlocal -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesEnum as HandlesEnum -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -def get_func_name(func_node: ast.AST | t.CPtr) -> str: pass - -def escape_llvm_string(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def get_llvm_type_bits(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def get_llvm_float_bits(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def is_ptr_type(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def _deref_if_ptr_ptr(builder: llvmlite.IRBuilder | t.CPtr, obj_ptr: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def coerce_to_type(builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def create_global_string(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, str_val: str, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_constant(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_elem_type_from_value(pool: memhub.MemBuddy | t.CPtr, value: llvmlite.Value | t.CPtr) -> str: pass - -def _find_pool_var(trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_list_literal(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, elem_type_name: str, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_value(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_compare(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_unaryop(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_boolop(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_name_value(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -@t.NoVTable -class ExprHandle(HandlesBase.Mixin): - def __init__(self: ExprHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleValue(self: ExprHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def NewExprHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprHandle | t.CPtr: pass - -def list_getitem_inline(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, lm_obj: llvmlite.Value | t.CPtr, idx_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _list_elem_type_from_name(pool: memhub.MemBuddy | t.CPtr, struct_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def list_setitem_inline(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, lm_obj: llvmlite.Value | t.CPtr, idx_val: llvmlite.Value | t.CPtr, rhs_val: llvmlite.Value | t.CPtr) -> int: pass - -def is_list_subscript(node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_subscript(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_attribute(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -import stdio - -def get_subscript_ptr(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def get_attribute_ptr(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass diff --git a/.transpyc_cache/2d39c6c7d3557b3e.pyi b/.transpyc_cache/2d39c6c7d3557b3e.pyi deleted file mode 100644 index fc259bd..0000000 --- a/.transpyc_cache/2d39c6c7d3557b3e.pyi +++ /dev/null @@ -1,63 +0,0 @@ -""" -Auto-generated Python stub file from linkedlist.py -Module: linkedlist -""" - - -import t, c -from stdint import * - -@t.NoVTable -class LinkedNode: - next: 'LinkedNode' | t.CPtr - prev: 'LinkedNode' | t.CPtr - child: 'LinkedNode' | t.CPtr - last_child: 'LinkedNode' | t.CPtr - parent: 'LinkedNode' | t.CPtr - child_count: t.CSizeT - def append(self: LinkedNode, node: 'LinkedNode' | t.CPtr) -> t.CInt: pass - def prepend(self: LinkedNode, node: 'LinkedNode' | t.CPtr) -> t.CInt: pass - def insert_before(self: LinkedNode, node: 'LinkedNode' | t.CPtr, new_node: 'LinkedNode' | t.CPtr) -> t.CInt: pass - def insert_after(self: LinkedNode, node: 'LinkedNode' | t.CPtr, new_node: 'LinkedNode' | t.CPtr) -> t.CInt: pass - def remove_child(self: LinkedNode, node: 'LinkedNode' | t.CPtr) -> t.CInt: pass - def detach(self: LinkedNode) -> t.CInt: pass - def unlink(self: LinkedNode) -> t.CInt: pass - def has_children(self: LinkedNode) -> t.CInt: pass - def child_at(self: LinkedNode, index: t.CSizeT) -> 'LinkedNode' | t.CPtr: pass - def count_children(self: LinkedNode) -> t.CSizeT: pass - def first_sibling(self: LinkedNode) -> 'LinkedNode' | t.CPtr: pass - def last_sibling(self: LinkedNode) -> 'LinkedNode' | t.CPtr: pass -@t.NoVTable -class SListNode: - Next: 'SListNode' | t.CPtr - def append(self: SListNode, node: 'SListNode' | t.CPtr) -> 'SListNode' | t.CPtr: pass - def append_after(self: SListNode, node: 'SListNode' | t.CPtr) -> 'SListNode' | t.CPtr: pass - def count(self: SListNode) -> t.CSizeT: pass - def at(self: SListNode, index: t.CSizeT) -> 'SListNode' | t.CPtr: pass - def remove(self: SListNode, node: 'SListNode' | t.CPtr) -> 'SListNode' | t.CPtr: pass -@t.NoVTable -class GSListNode[T]: - Next: T | t.CPtr -@t.NoVTable -class GSList[T]: - Head: T | t.CPtr - Tail: T | t.CPtr - Count: t.CSizeT - def __init__(self: GSList) -> t.CInt: pass - def append(self: GSList, node: T) -> t.CInt: pass - def count(self: GSList) -> t.CSizeT: pass - def at(self: GSList, index: t.CSizeT) -> T | t.CPtr: pass -@t.NoVTable -class GTreeNode[T]: - Next: T | t.CPtr - Prev: T | t.CPtr - Child: T | t.CPtr - LastChild: T | t.CPtr - Parent: T | t.CPtr - Count: t.CSizeT - def append(self: GTreeNode, node: T | t.CPtr) -> t.CInt: pass - def prepend(self: GTreeNode, node: T | t.CPtr) -> t.CInt: pass - def detach(self: GTreeNode) -> t.CInt: pass - def has_children(self: GTreeNode) -> t.CInt: pass - def child_at(self: GTreeNode, index: t.CSizeT) -> T | t.CPtr: pass - def count_children(self: GTreeNode) -> t.CSizeT: pass \ No newline at end of file diff --git a/.transpyc_cache/2da636c61863c815.pyi b/.transpyc_cache/2da636c61863c815.pyi deleted file mode 100644 index 7c91519..0000000 --- a/.transpyc_cache/2da636c61863c815.pyi +++ /dev/null @@ -1,33 +0,0 @@ -""" -Auto-generated Python stub file from subprocess.py -Module: subprocess -""" - - -import t, c -from stdint import * -import platmacro -import memhub -import string -import w32.win32base -import w32.win32file -import w32.win32process -import w32.win32sync -import posix - -OUTPUT_BUF_SIZE: t.CDefine = 65536 -_mbuddy: t.CExtern | memhub.MemBuddy | t.CPtr - -class CompletedProcess: - args: str - returncode: int - stdout: str - stderr: str - def __new__(self: CompletedProcess, args: str, returncode: int, stdout: str, stderr: str) -> t.CPtr: pass - def __init__(self: CompletedProcess, args: str, returncode: int, stdout: str, stderr: str) -> t.CInt: pass - -def run(args: str, capture_output: bool, text: bool) -> CompletedProcess | t.CPtr: pass - -def _run_win32(args: str, capture_output: bool, text: bool) -> CompletedProcess | t.CPtr: pass - -def _run_posix(args: str, capture_output: bool, text: bool) -> CompletedProcess | t.CPtr: pass diff --git a/.transpyc_cache/2ed380190e9df89e.doc.json b/.transpyc_cache/2ed380190e9df89e.doc.json deleted file mode 100644 index 2259eff..0000000 --- a/.transpyc_cache/2ed380190e9df89e.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"is_cdefine_annotation": "检测注解是否为 t.CDefine,返回 1 表示是,0 表示否", "extract_cdefine_int_value": "从值节点提取整数常量(仅支持 Constant INT)", "AnnAssignHandle": "AnnAssign 语句处理器:继承 Mixin 获得 Trans 回指针", "AnnAssignHandle.PreScan": "预扫描 AnnAssign,提前创建 alloca 到 entry block 顶部", "AnnAssignHandle.Handle": "翻译 AnnAssign(target=Name, annotation=..., value=expr)"} \ No newline at end of file diff --git a/.transpyc_cache/2ed380190e9df89e.pyi b/.transpyc_cache/2ed380190e9df89e.pyi deleted file mode 100644 index 6d50c9b..0000000 --- a/.transpyc_cache/2ed380190e9df89e.pyi +++ /dev/null @@ -1,33 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesAnnAssign.py -Module: lib.core.Handles.HandlesAnnAssign -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesNonlocal as HandlesNonlocal -import lib.core.Handles.HandlesClassDef as HandlesClassDef -import lib.core.Handles.HandlesExprCall as HandlesExprCall - -def is_cdefine_annotation(annot: ast.AST | t.CPtr) -> int: pass - -def extract_cdefine_int_value(val_node: ast.AST | t.CPtr) -> int: pass - - -@t.NoVTable -class AnnAssignHandle(HandlesBase.Mixin): - def __init__(self: AnnAssignHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def PreScan(self: AnnAssignHandle, node: ast.AST | t.CPtr) -> int: pass - def Handle(self: AnnAssignHandle, node: ast.AST | t.CPtr) -> int: pass - -def NewAnnAssignHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> AnnAssignHandle | t.CPtr: pass diff --git a/.transpyc_cache/2fcb6780db4d937f.doc.json b/.transpyc_cache/2fcb6780db4d937f.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/2fcb6780db4d937f.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/2fcb6780db4d937f.pyi b/.transpyc_cache/2fcb6780db4d937f.pyi deleted file mode 100644 index 06ba45f..0000000 --- a/.transpyc_cache/2fcb6780db4d937f.pyi +++ /dev/null @@ -1,53 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - - -from stdint import * -import vipersimd -import numpy -from stdio import printf -import stdlib -from stdlib import calloc -import t, c -import memhub -import testcheck - -arena: t.CExtern | t.CUInt8T | t.CPtr -pool: t.CExtern | memhub.MemPool | t.CPtr - -def clock() -> t.CLong | t.CExtern: pass - - -CLOCK_PER_SEC: t.CDefine = 1000 - -def test_avx2_add_sub_mul_div() -> t.CInt: pass - -def test_avx2_neg_abs_sqrt() -> t.CInt: pass - -def test_avx2_min_max() -> t.CInt: pass - -def test_avx2_scalar_ops() -> t.CInt: pass - -def test_avx2_hsum_dot() -> t.CInt: pass - -def test_avx2_fma() -> t.CInt: pass - -def test_batch_array_ops() -> t.CInt: pass - -def test_llvmir_scalar() -> t.CInt: pass - - -N_ELEM: t.CDefine = 40000 -N_ITER: t.CDefine = 50000 - -def scalar_add_array(a: t.CPtr, b: t.CPtr, out: t.CPtr, n: t.CSizeT) -> t.CInt: pass - -def scalar_mul_array(a: t.CPtr, b: t.CPtr, out: t.CPtr, n: t.CSizeT) -> t.CInt: pass - -def scalar_sqrt_array(a: t.CPtr, out: t.CPtr, n: t.CSizeT) -> t.CInt: pass - -def benchmark_simd_vs_scalar() -> t.CInt: pass - -def main() -> t.CInt: pass diff --git a/.transpyc_cache/30a88f26e7679645.doc.json b/.transpyc_cache/30a88f26e7679645.doc.json deleted file mode 100644 index c00e036..0000000 --- a/.transpyc_cache/30a88f26e7679645.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数\n\n 直接接收三个 Value 参数,避免通过 Next 链表遍历(共享 alloca 对象的\n Next 字段可能被其他操作污染,导致链表断裂)。\n ", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/30a88f26e7679645.pyi b/.transpyc_cache/30a88f26e7679645.pyi deleted file mode 100644 index 40c3168..0000000 --- a/.transpyc_cache/30a88f26e7679645.pyi +++ /dev/null @@ -1,171 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, dst_val: llvmlite.Value | t.CPtr, src_val: llvmlite.Value | t.CPtr, num_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/33a854a5c4f67d74.doc.json b/.transpyc_cache/33a854a5c4f67d74.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/33a854a5c4f67d74.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/33a854a5c4f67d74.pyi b/.transpyc_cache/33a854a5c4f67d74.pyi deleted file mode 100644 index fdbb374..0000000 --- a/.transpyc_cache/33a854a5c4f67d74.pyi +++ /dev/null @@ -1,38 +0,0 @@ -""" -Auto-generated Python stub file from struct_test.py -Module: struct_test -""" - - -import stdio -import t, c - -class Point: - x: t.CInt - y: t.CInt -class Box: - width: t.CInt - height: t.CInt - depth: t.CInt -class Size: - w: t.CInt = 100 - h: t.CInt = 200 -class State(t.CEnum): - Idle: t.State - Run: t.State - Stop: t.State -class Color(t.CEnum): - Red: t.State = 10 - Green: t.State - Blue: t.State = 20 - Yellow: t.State -class MixedType(t.CEnum): - Small: t.CInt8T - Big: t.CInt64T - Medium: t.CInt16T -class DataUnion(t.CUnion): - i: t.CInt - f: t.CFloat - l: t.CInt64T - -def struct_test() -> int: pass diff --git a/.transpyc_cache/34548789d646f432.pyi b/.transpyc_cache/34548789d646f432.pyi deleted file mode 100644 index e046b0c..0000000 --- a/.transpyc_cache/34548789d646f432.pyi +++ /dev/null @@ -1,26 +0,0 @@ -""" -Auto-generated Python stub file from ast.__init__.py -Module: ast.__init__ -""" - - -import t, c -from stdint import * -import memhub -import string -from .tokens import Token, TokenType, Keyword, TokOp, _init_tables -from .base import AST, ASTKind, ASTCtx, OpKind, ASTFlag, CONST_INT, CONST_FLOAT, CONST_STR, CONST_BOOL, CONST_NONE, FLAG_IS_ASYNC, FLAG_SIMPLE, FLAG_HAS_STAR, _init_ast, _copy_str, _set_pos, _inherit_pos, _set_parent_list, _binop_from_op, _augop_from_op, _cmpop_from_op, _emit, _emit_str, _emit_int, _dump_list, dump -from .stmts import Module, Expression, Interactive, FunctionType, FunctionDef, ClassDef, Return, Delete, Assign, AugAssign, AnnAssign, For, While, If, With, Raise, Try, Assert, Global, Nonlocal, Pass, Break, Continue, Expr, Import, ImportFrom, Match -from .exprs import BoolOp, BinOp, UnaryOp, Lambda, IfExp, Dict, Set, ListComp, SetComp, DictComp, GeneratorExp, Await, Yield, YieldFrom, FormattedValue, JoinedStr, Constant, NamedExpr, Attribute, Subscript, Starred, Name, List, Tuple, Slice, Call, Compare, OpNode -from .astaux import ExceptHandler, Arguments, Arg, Keyword, Alias, WithItem, Comprehension -from .match import MatchCase, MatchValue, MatchSingleton, MatchSequence, MatchMapping, MatchClass, MatchStar, MatchAs, MatchOr -from .visitor import ASTVisitor -from .lexer import Lexer, _lexer_init, tokenize, new_lexer -from .parser import Parser, _parser_init, parse_tokens, new_parser -from .parser import _parse_test - -_mbuddy: t.CExtern | memhub.MemBuddy | t.CPtr - -def parse(src: str, pool: memhub.MemManager | t.CPtr) -> AST | t.CPtr: pass - -def parse_expression(src: str, pool: memhub.MemManager | t.CPtr) -> AST | t.CPtr: pass diff --git a/.transpyc_cache/352a68eefae37a7c.doc.json b/.transpyc_cache/352a68eefae37a7c.doc.json deleted file mode 100644 index c00e036..0000000 --- a/.transpyc_cache/352a68eefae37a7c.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数\n\n 直接接收三个 Value 参数,避免通过 Next 链表遍历(共享 alloca 对象的\n Next 字段可能被其他操作污染,导致链表断裂)。\n ", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/352a68eefae37a7c.pyi b/.transpyc_cache/352a68eefae37a7c.pyi deleted file mode 100644 index 40c3168..0000000 --- a/.transpyc_cache/352a68eefae37a7c.pyi +++ /dev/null @@ -1,171 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, dst_val: llvmlite.Value | t.CPtr, src_val: llvmlite.Value | t.CPtr, num_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/39178dc5ba692b92.doc.json b/.transpyc_cache/39178dc5ba692b92.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/39178dc5ba692b92.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/39178dc5ba692b92.pyi b/.transpyc_cache/39178dc5ba692b92.pyi deleted file mode 100644 index 6b53248..0000000 --- a/.transpyc_cache/39178dc5ba692b92.pyi +++ /dev/null @@ -1,31 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - -import c - - -import t -import stdio -import string -import testcheck - -def test_strlen() -> t.CInt: pass - -def test_strcpy() -> t.CInt: pass - -def test_strcat() -> t.CInt: pass - -def test_strcmp() -> t.CInt: pass - -def test_strncpy() -> t.CInt: pass - -def test_char_access() -> t.CInt: pass - -def test_snprintf() -> t.CInt: pass - - -import w32.win32memory - -def main() -> t.CInt: pass diff --git a/.transpyc_cache/3a56c52de621df8f.doc.json b/.transpyc_cache/3a56c52de621df8f.doc.json deleted file mode 100644 index 47b20d9..0000000 --- a/.transpyc_cache/3a56c52de621df8f.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_get_external_func_param_ty": "获取外部函数第 param_idx 个参数的期望类型,None 表示用字面量原类型\n\n 对 Win32 API 函数的所有非指针参数返回 i64,匹配 declare 中\n ULONG/SIZE_T 被统一翻译为 i64 的情况。\n ", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数\n\n 直接接收三个 Value 参数,避免通过 Next 链表遍历(共享 alloca 对象的\n Next 字段可能被其他操作污染,导致链表断裂)。\n ", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/3a56c52de621df8f.pyi b/.transpyc_cache/3a56c52de621df8f.pyi deleted file mode 100644 index 5214419..0000000 --- a/.transpyc_cache/3a56c52de621df8f.pyi +++ /dev/null @@ -1,173 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _get_external_func_param_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str, param_idx: int) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, dst_val: llvmlite.Value | t.CPtr, src_val: llvmlite.Value | t.CPtr, num_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/3a769816ec956305.doc.json b/.transpyc_cache/3a769816ec956305.doc.json deleted file mode 100644 index 86441ed..0000000 --- a/.transpyc_cache/3a769816ec956305.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_load_includes_sha1_set": "读取 _sha1_map.txt,将 includes/ 开头的 SHA1 写入 sha1_set\n sha1_set 大小为 MAX_INCLUDES_SHA1 * 17(每个 SHA1 16字符+null)\n 返回找到的 includes SHA1 数量,-1 表示错误", "_is_in_sha1_set": "检查 sha1 是否在集合中", "WriteIncludesSha1Map": "将 includes 扫描结果写入 _sha1_map.txt(供 StubMerger 使用)\n\n 若 filter_set 不为 None 且 filter_count > 0,只写入 filter_set 中的条目。\n ", "_IsFuncDeclaredOrDefined": "检查 out_buf 中是否已有函数的 declare 或 define 行", "_CommentOutDeclareInBuf": "在 out_buf 中搜索 declare 行(包含 func_sig),将其注释掉", "_CommentOutGlobalInBuf": "在 out_buf 中搜索全局变量定义行(以 global_name 开头),将行首改为 ';'", "_CommentOutOpaqueTypeInBuf": "在 out_buf 中搜索 type_name_prefix 对应的 opaque 声明行,将行首改为 ';'\n\n type_name_prefix 格式: '%\"sha1.ClassName\"'(不含 '=' 和后续内容)\n 返回 1=已注释, 0=未找到\n ", "_HasFullTypeDefinition": "检查 out_buf 中是否已有 type_name_prefix 的完整定义", "_LoadAndAppendStub": "加载依赖 stub 并追加(跳过 header,去重)", "_LoadAndAppendTextDeclares": "从依赖 text.ll 提取 declare(define 转 declare),追加到 out_buf", "_PathToModuleName": "将文件路径转换为模块名\n\n 特殊处理 __init__.py:includes/ast/__init__.py → ast(而非 ast.__init__)\n ", "_BuildIncludesSha1Map": "从 _sha1_map.txt 构建 sha1→module_name 映射,返回条目数", "_FindSha1ByModName": "从模块名查找 SHA1(精确匹配)", "_AddSha1ToSet": "将 SHA1 加入集合,返回新 count", "_BuildReachableSha1Set": "构建可达 SHA1 集合(依赖图按需翻译)", "BuildCombinedIR": "组合本地 stub + 依赖 stubs + 本地 text → out_buf(按需加载)"} \ No newline at end of file diff --git a/.transpyc_cache/3a769816ec956305.pyi b/.transpyc_cache/3a769816ec956305.pyi deleted file mode 100644 index 4466a75..0000000 --- a/.transpyc_cache/3a769816ec956305.pyi +++ /dev/null @@ -1,60 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.StubMerger.py -Module: lib.core.StubMerger -""" - - -import t, c -from stdint import * -import memhub -import string -import stdio -import stdlib -import llvmlite -import w32.win32file as win32file -import w32.win32base as win32base -import w32.fileio as fileio -import viperlib -import sys -import ast -import lib.core.IncludesScanner as IncludesScanner -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesTranslator as HandlesTranslator - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -MAX_INCLUDES_SHA1: t.CDefine = 256 -STUB_READ_BUF_SIZE: t.CDefine = 262144 -MAX_INCLUDES: t.CDefine = 256 - -def _load_includes_sha1_set(pool: memhub.MemBuddy | t.CPtr, temp_dir: str, sha1_set: str) -> int: pass - -def _is_in_sha1_set(sha1: str, sha1_set: str, set_count: int) -> int: pass - -def WriteIncludesSha1Map(mb: memhub.MemBuddy | t.CPtr, temp_dir: str, scan_result: IncludesScanner.ScanResult | t.CPtr, filter_set: t.CChar | t.CPtr, filter_count: int) -> int: pass - -def _IsFuncDeclaredOrDefined(out_buf: bytes, func_sig: str) -> int: pass - -def _CommentOutDeclareInBuf(out_buf: bytes, func_sig: str) -> int: pass - -def _CommentOutGlobalInBuf(out_buf: bytes, global_name: str) -> int: pass - -def _CommentOutOpaqueTypeInBuf(out_buf: bytes, type_name_prefix: str) -> int: pass - -def _HasFullTypeDefinition(out_buf: bytes, type_name_prefix: str) -> int: pass - -def _LoadAndAppendStub(temp_dir: str, td_len: t.CSizeT, dep_sha1: str, dep_buf: bytes, out_buf: bytes, out_size: t.CSizeT, out_pos: t.CSizeT) -> t.CSizeT: pass - -def _LoadAndAppendTextDeclares(temp_dir: str, td_len: t.CSizeT, dep_sha1: str, dep_buf: bytes, out_buf: bytes, out_size: t.CSizeT, out_pos: t.CSizeT) -> t.CSizeT: pass - -def _PathToModuleName(path: str) -> str: pass - -def _BuildIncludesSha1Map(temp_dir: str, td_len: t.CSizeT, sha1_list: t.CChar | t.CPtr, mod_list: t.CChar | t.CPtr) -> int: pass - -def _FindSha1ByModName(sha1_arr: t.CChar | t.CPtr, mod_arr: t.CChar | t.CPtr, count: int, mod_name: str) -> str: pass - -def _AddSha1ToSet(set_buf: t.CChar | t.CPtr, count: int, sha1: str) -> int: pass - -def _BuildReachableSha1Set(mb: memhub.MemBuddy | t.CPtr, source_dir: str, temp_dir: str, reachable_set: t.CChar | t.CPtr) -> int: pass - -def BuildCombinedIR(temp_dir: str, local_sha1: str, out_buf: bytes, out_size: t.CSizeT) -> t.CSizeT: pass diff --git a/.transpyc_cache/3ab9ec935db9efeb.doc.json b/.transpyc_cache/3ab9ec935db9efeb.doc.json deleted file mode 100644 index d24160b..0000000 --- a/.transpyc_cache/3ab9ec935db9efeb.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"Translator": "翻译器:管理编译状态,委托 Handles 模块执行翻译", "Translator._init_state": "初始化变量表、函数表和子 Handle", "Translator.translate": "将 AST 翻译为 LLVM IR", "Translator._translate_wrapper_main": "委托 HandlesMain.create_wrapper_main() 创建包装 main(trans 单参)", "Translator._translate_module_level": "委托 HandlesMain.translate_children() 翻译模块级语句(trans 单参)", "Translator.dump_ir": "将 LLVM IR 输出到缓冲区\n\n mode: 0=完整, 1=stub(仅声明), 2=text(仅代码)\n ", "add_global_name": "添加一个 global 变量名", "is_global_name": "检查 name 是否在当前函数的 global 集合中", "add_nonlocal_name": "添加一个 nonlocal 变量名", "is_nonlocal_name": "检查 name 是否在当前函数的 nonlocal 集合中", "get_nonlocal_index": "获取 nonlocal 变量在 env 中的索引(0-based),找不到返回 -1", "clear_scope_names": "清空当前函数的 global/nonlocal 名称集合(进入新函数时调用)"} \ No newline at end of file diff --git a/.transpyc_cache/3ab9ec935db9efeb.pyi b/.transpyc_cache/3ab9ec935db9efeb.pyi deleted file mode 100644 index 0e885bf..0000000 --- a/.transpyc_cache/3ab9ec935db9efeb.pyi +++ /dev/null @@ -1,89 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesTranslator.py -Module: lib.core.Handles.HandlesTranslator -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.Handles.HandlesMain as HandlesMain -import lib.core.Handles.HandlesAssign as HandlesAssign -import lib.core.Handles.HandlesReturn as HandlesReturn -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesAnnAssign as HandlesAnnAssign -import lib.core.Handles.HandlesAugAssign as HandlesAugAssign -import lib.core.Handles.HandlesIf as HandlesIf -import lib.core.Handles.HandlesWhile as HandlesWhile -import lib.core.Handles.HandlesFor as HandlesFor -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesFunctions as HandlesFunctions -import lib.Projectrans.Config as Config - -MAX_VARS: t.CDefine = 256 -MAX_FUNCS: t.CDefine = 256 -MAX_GLOBAL_NAMES: t.CDefine = 32 - -@t.NoVTable -class Translator: - Module: llvmlite.LLVMModule | t.CPtr - Pool: memhub.MemBuddy | t.CPtr - _funcs: HandlesExprCall.FuncEntry | t.CPtr - _func_count: t.CInt - _imported_modules: str - _from_imports: str - _cur_func: llvmlite.Function | t.CPtr - _cur_builder: llvmlite.IRBuilder | t.CPtr - _break_bb: llvmlite.BasicBlock | t.CPtr - _continue_bb: llvmlite.BasicBlock | t.CPtr - _label_counter: t.CInt - _global_names: str - _global_name_count: t.CInt - _nonlocal_names: str - _nonlocal_name_count: t.CInt - _cur_func_name: str - ModuleSha1: str - _closure_env_offsets: t.CInt - _closure_env_count: t.CInt - GenericTypeParamNames: list[str] | t.CPtr - GenericTypeArgs: list[str] | t.CPtr - _declare_only: t.CInt - AssignH: HandlesAssign.AssignHandle | t.CPtr - ReturnH: HandlesReturn.ReturnHandle | t.CPtr - ImportsH: HandlesImports.ImportsHandle | t.CPtr - AnnAssignH: HandlesAnnAssign.AnnAssignHandle | t.CPtr - AugAssignH: HandlesAugAssign.AugAssignHandle | t.CPtr - IfH: HandlesIf.IfHandle | t.CPtr - WhileH: HandlesWhile.WhileHandle | t.CPtr - ForH: HandlesFor.ForHandle | t.CPtr - ExprH: HandlesExpr.ExprHandle | t.CPtr - ExprCallH: HandlesExprCall.ExprCallHandle | t.CPtr - SymTab: HandlesVar.SymbolTable | t.CPtr - def __init__(self: Translator) -> t.CInt: pass - def _init_state(self: Translator, pool: memhub.MemBuddy | t.CPtr) -> t.CInt: pass - def translate(self: Translator, tree: ast.AST | t.CPtr) -> int: pass - def _translate_wrapper_main(self: Translator, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, tree: ast.AST | t.CPtr, i32_ty: llvmlite.LLVMType | t.CPtr) -> t.CInt: pass - def _translate_module_level(self: Translator, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, tree: ast.AST | t.CPtr) -> t.CInt: pass - def dump_ir(self: Translator, buf: bytes, size: t.CSizeT, mode: int) -> t.CInt: pass - -def add_global_name(trans: HT.Translator | t.CPtr, name: str) -> t.CInt: pass - -def is_global_name(trans: HT.Translator | t.CPtr, name: str) -> int: pass - -def add_nonlocal_name(trans: HT.Translator | t.CPtr, name: str) -> t.CInt: pass - -def is_nonlocal_name(trans: HT.Translator | t.CPtr, name: str) -> int: pass - -def get_nonlocal_index(trans: HT.Translator | t.CPtr, name: str) -> int: pass - -def clear_scope_names(trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -_mbuddy: t.CExtern | memhub.MemBuddy | t.CPtr \ No newline at end of file diff --git a/.transpyc_cache/3b76f342dcafa255.doc.json b/.transpyc_cache/3b76f342dcafa255.doc.json deleted file mode 100644 index a8e6f20..0000000 --- a/.transpyc_cache/3b76f342dcafa255.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_is_cenum_base": "检查 base 节点是否为 t.CEnum,返回 1=是 / 0=否", "_is_enum_class": "检查 ClassDef 是否继承自 t.CEnum,返回 1=是 / 0=否", "_is_cunion_base": "检查 base 节点是否为 t.CUnion,返回 1=是 / 0=否", "_is_union_class": "检查 ClassDef 是否继承自 t.CUnion,返回 1=是 / 0=否", "_has_decorator": "检查 decorator_list 中是否有指定装饰器名", "_is_marker_base": "检查基类名是否为标记基类,返回 1=是 / 0=否", "_get_base_name": "从 base AST 节点提取基类名,返回 None=失败", "_get_parent_class": "获取 ClassDef 的真实父类名,返回 None=无真实父类", "_has_any_func_cvtable": "检查类中是否有任何函数标记了 @t.CVTable,返回 1=有 / 0=无", "_should_method_be_virtual": "判断方法是否应该进入虚表,返回 1=包含 / 0=排除", "_detect_vtable_status": "检测类是否应该启用虚表", "_resolve_enum_member_type": "解析枚举成员的类型注解为 LLVM 整数类型", "_is_state_annotation": "检查注解节点是否为 t.State,返回 1=是 / 0=否", "_extract_int_value": "从 AST 节点提取整数值,失败返回 0", "_translate_enum_def": "翻译枚举类定义,返回 0", "_get_type_size": "计算 LLVM 类型的字节大小", "_translate_union_def": "翻译联合体定义,返回 0", "_is_generic_class": "检查 ClassDef 是否有类型参数(泛型类),返回 1=是 / 0=否", "_register_generic_template": "注册泛型类模板(类名 + ClassDef 节点)", "_find_generic_template": "查找泛型类模板,返回 ClassDef 节点或 None", "_mangle_generic_class_name": "生成特化类名: list + [int] -> list[int]\n\n 分配新缓冲区拼接,避免原地 strcat 导致缓冲区溢出\n ", "_clone_annotation": "拷贝类型注解表达式,替换类型参数 T 为具体类型名\n\n tp_names: 类型参数名列表 ['T']\n type_args: 类型实参名列表 ['int']\n ", "_clone_arguments": "拷贝 Arguments 节点,替换 arg annotation 中的 T", "_clone_classdef_for_spec": "拷贝 ClassDef 节点用于泛型特化\n\n - 替换类名为 spec_name\n - 清除 type_params(特化后不是泛型类)\n - 拷贝 children 中的 AnnAssign 和 FunctionDef,替换类型注解中的 T\n - 方法体直接引用原始节点(通过 type_map 上下文处理 T)\n ", "_find_cached_spec": "查找已缓存的特化名,未找到返回 None", "_cache_spec": "缓存特化结果", "_specialize_generic_class": "特化泛型类,返回特化类名\n\n 1. 查找泛型模板\n 2. 生成特化名\n 3. 检查缓存\n 4. 拷贝 ClassDef 节点(替换类型注解中的 T)\n 5. 设置 type_map 上下文(用于方法体中的 T 替换)\n 6. 调用 translate_class_def 翻译特化类\n 7. 返回特化名\n ", "translate_class_def": "翻译 class 定义,返回 0", "_vtable_strcat": "将 src 追加到 dst 末尾", "_vtable_name_needs_quote": "检查 LLVM 标识符是否需要引号(以数字开头或含 '.')", "_format_func_type_str": "从 Function 对象生成函数类型字符串", "_generate_vtable": "生成 VTable 全局变量", "_translate_oop_methods": "扫描 class body 中的方法并翻译,生成 __before_init__", "_translate_method": "翻译单个方法,返回 0", "_generate_before_init": "生成 __before_init__ 函数,返回 0"} \ No newline at end of file diff --git a/.transpyc_cache/3b76f342dcafa255.pyi b/.transpyc_cache/3b76f342dcafa255.pyi deleted file mode 100644 index 62b2e80..0000000 --- a/.transpyc_cache/3b76f342dcafa255.pyi +++ /dev/null @@ -1,104 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesClassDef.py -Module: lib.core.Handles.HandlesClassDef -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import viperlib -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesEnum as HandlesEnum - -ENUM_MEMBER_MAX_LOCAL: t.CDefine = 64 - -def _is_cenum_base(base_node: ast.AST | t.CPtr) -> int: pass - -def _is_enum_class(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _is_cunion_base(base_node: ast.AST | t.CPtr) -> int: pass - -def _is_union_class(cd: ast.ClassDef | t.CPtr) -> int: pass - - -_MARKER_BASES: t.CDefine = 8 - -def _has_decorator(decorator_list: list[ast.AST | t.CPtr] | t.CPtr, deco_name: str) -> int: pass - -def _is_marker_base(base_name: str) -> int: pass - -def _get_base_name(base_node: ast.AST | t.CPtr) -> str: pass - -def _get_parent_class(cd: ast.ClassDef | t.CPtr) -> str: pass - -def _has_any_func_cvtable(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _should_method_be_virtual(cd: ast.ClassDef | t.CPtr, fd: ast.FunctionDef | t.CPtr, trans: HT.Translator | t.CPtr) -> int: pass - -def _detect_vtable_status(cd: ast.ClassDef | t.CPtr, trans: HT.Translator | t.CPtr) -> int: pass - -def _resolve_enum_member_type(pool: memhub.MemBuddy | t.CPtr, ann_node: ast.AST | t.CPtr, imported_modules: str, from_imports: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _is_state_annotation(node: ast.AST | t.CPtr) -> int: pass - -def _extract_int_value(node: ast.AST | t.CPtr) -> t.CInt64T: pass - -def _translate_enum_def(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr) -> int: pass - -def _get_type_size(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def _translate_union_def(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr) -> int: pass - - -_generic_class_names: t.CExtern | list[str] | t.CPtr -_generic_class_nodes: t.CExtern | list[ast.ClassDef | t.CPtr] | t.CPtr - -def _is_generic_class(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _register_generic_template(pool: memhub.MemBuddy | t.CPtr, cd: ast.ClassDef | t.CPtr) -> t.CInt: pass - -def _find_generic_template(class_name: str) -> ast.ClassDef | t.CPtr: pass - -def _mangle_generic_class_name(pool: memhub.MemBuddy | t.CPtr, class_name: str, type_args: list[str] | t.CPtr) -> str: pass - -def _clone_annotation(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.AST | t.CPtr: pass - -def _clone_arguments(pool: memhub.MemBuddy | t.CPtr, args: ast.AST | t.CPtr, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.AST | t.CPtr: pass - -def _clone_classdef_for_spec(pool: memhub.MemBuddy | t.CPtr, cd: ast.ClassDef | t.CPtr, spec_name: str, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.ClassDef | t.CPtr: pass - - -_spec_keys: t.CExtern | list[str] | t.CPtr -_spec_names: t.CExtern | list[str] | t.CPtr - -def _find_cached_spec(spec_key: str) -> str: pass - -def _cache_spec(pool: memhub.MemBuddy | t.CPtr, spec_key: str, spec_name: str) -> t.CInt: pass - -def _specialize_generic_class(trans: HT.Translator | t.CPtr, class_name: str, type_args: list[str] | t.CPtr) -> str: pass - -def translate_class_def(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - - -VTBL_METHOD_MAX: t.CDefine = 32 - -def _vtable_strcat(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _vtable_name_needs_quote(name: str) -> int: pass - -def _format_func_type_str(pool: memhub.MemBuddy | t.CPtr, buf: t.CChar | t.CPtr, buf_size: t.CSizeT, func: llvmlite.Function | t.CPtr) -> int: pass - -def _generate_vtable(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr, class_name: str) -> int: pass - -def _translate_oop_methods(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass - -def _translate_method(trans: HT.Translator | t.CPtr, fd: ast.FunctionDef | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass - -def _generate_before_init(trans: HT.Translator | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass diff --git a/.transpyc_cache/3c15289dd3f27ff8.doc.json b/.transpyc_cache/3c15289dd3f27ff8.doc.json deleted file mode 100644 index dda4745..0000000 --- a/.transpyc_cache/3c15289dd3f27ff8.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"get_func_name": "从函数节点提取函数名", "escape_llvm_string": "将字符串转换为 LLVM IR 字符串字面量 c\"...\\00\" ", "get_llvm_type_bits": "获取 LLVM 整数类型的位宽,非整数类型返回 0", "get_llvm_float_bits": "获取 LLVM 浮点类型的位宽,非浮点类型返回 0", "is_ptr_type": "检查 ty 是否是 Ptr 类型,返回 1=是, 0=否", "_deref_if_ptr_ptr": "如果 obj_ptr 是 Ptr(Ptr(...)),load 解引用获取内层指针", "coerce_to_type": "将 val 强制转换为 target_ty\n\n 整数: sext(扩展)/ trunc(截断)\n 浮点: fpext(扩展)/ fptrunc(截断)\n int→float: sitofp\n float→int: fptosi\n ", "create_global_string": "创建全局字符串常量并返回 i8* bitcast", "translate_constant": "翻译常量(int/str/bool)", "_infer_elem_type_from_value": "从 LLVM Value 的类型推断 list 元素类型名", "_find_pool_var": "查找上下文中的 pool 变量,返回 alloca 或 None", "translate_list_literal": "翻译 list 字面量 [a, b, c] → list[T](pool) + append 序列", "translate_value": "翻译值表达式为 LLVM Value", "translate_compare": "翻译比较表达式,返回 i1 结果", "translate_unaryop": "翻译一元运算(-x, +x, not x, ~x)", "translate_boolop": "翻译布尔运算(and/or)的短路求值,返回 i1", "translate_name_value": "翻译变量引用(Name 节点)→ load", "ExprHandle": "表达式处理器:继承 Mixin 获得 Trans 回指针", "ExprHandle.HandleValue": "翻译值表达式,从 self.Trans 获取共享状态", "list_getitem_inline": "内联生成 list __getitem__ 逻辑,返回元素地址 (i8*)", "_list_elem_type_from_name": "从 list 类型名提取元素 LLVM 类型", "list_setitem_inline": "内联生成 list __setitem__ 逻辑,返回 0", "is_list_subscript": "检查 Subscript 节点是否是 list[T] 类型,返回 list 对象指针或 None", "translate_subscript": "翻译下标表达式,返回加载的元素值", "translate_attribute": "翻译属性访问,返回加载的字段值", "get_subscript_ptr": "获取下标表达式的元素指针(用于赋值 lhs)", "get_attribute_ptr": "获取属性访问的字段指针(用于赋值 lhs)"} \ No newline at end of file diff --git a/.transpyc_cache/3c15289dd3f27ff8.pyi b/.transpyc_cache/3c15289dd3f27ff8.pyi deleted file mode 100644 index c495a8e..0000000 --- a/.transpyc_cache/3c15289dd3f27ff8.pyi +++ /dev/null @@ -1,84 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExpr.py -Module: lib.core.Handles.HandlesExpr -""" - - -import t, c -from stdint import * -import ast -import memhub -import string -import llvmlite -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesExprOps as HandlesExprOps -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.Handles.HandlesNonlocal as HandlesNonlocal -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesEnum as HandlesEnum -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -def get_func_name(func_node: ast.AST | t.CPtr) -> str: pass - -def escape_llvm_string(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def get_llvm_type_bits(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def get_llvm_float_bits(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def is_ptr_type(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def _deref_if_ptr_ptr(builder: llvmlite.IRBuilder | t.CPtr, obj_ptr: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def coerce_to_type(builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def create_global_string(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, str_val: str, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_constant(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_elem_type_from_value(pool: memhub.MemBuddy | t.CPtr, value: llvmlite.Value | t.CPtr) -> str: pass - -def _find_pool_var(trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_list_literal(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, elem_type_name: str, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_value(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_compare(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_unaryop(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_boolop(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_name_value(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -@t.NoVTable -class ExprHandle(HandlesBase.Mixin): - def __init__(self: ExprHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleValue(self: ExprHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def NewExprHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprHandle | t.CPtr: pass - -def list_getitem_inline(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, lm_obj: llvmlite.Value | t.CPtr, idx_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _list_elem_type_from_name(pool: memhub.MemBuddy | t.CPtr, struct_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def list_setitem_inline(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, lm_obj: llvmlite.Value | t.CPtr, idx_val: llvmlite.Value | t.CPtr, rhs_val: llvmlite.Value | t.CPtr) -> int: pass - -def is_list_subscript(node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_subscript(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_attribute(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -import stdio - -def get_subscript_ptr(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def get_attribute_ptr(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass diff --git a/.transpyc_cache/3c2fbc9e35ad3bf2.doc.json b/.transpyc_cache/3c2fbc9e35ad3bf2.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/3c2fbc9e35ad3bf2.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/3c2fbc9e35ad3bf2.pyi b/.transpyc_cache/3c2fbc9e35ad3bf2.pyi deleted file mode 100644 index c77b79f..0000000 --- a/.transpyc_cache/3c2fbc9e35ad3bf2.pyi +++ /dev/null @@ -1,22 +0,0 @@ -""" -Auto-generated Python stub file from func_test.py -Module: func_test -""" - - -import stdio -import t, c - -def add(a: int, b: int) -> int: pass - -def mul(a: int, b: int) -> int: pass - -def square(x: int) -> int: pass - -def factorial(n: int) -> int: pass - -def greet(greeting: str, name: str, times: int) -> int: pass - -def sub(a: int, b: int) -> int: pass - -def func_test() -> int: pass diff --git a/.transpyc_cache/3cd87018ba1e76bc.doc.json b/.transpyc_cache/3cd87018ba1e76bc.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/3cd87018ba1e76bc.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/3cd87018ba1e76bc.pyi b/.transpyc_cache/3cd87018ba1e76bc.pyi deleted file mode 100644 index 669f365..0000000 --- a/.transpyc_cache/3cd87018ba1e76bc.pyi +++ /dev/null @@ -1,108 +0,0 @@ -""" -Auto-generated Python stub file from test_numpy.py -Module: test_numpy -""" - - -from stdint import * -import numpy -from stdio import printf -from stdlib import calloc, free -import string -import vipermath -import memhub -import t, c - -EPS: t.CExtern | t.CDouble -EPS_LOOSE: t.CExtern | t.CDouble -SIMD_BLOCK: t.CExtern | t.CSizeT -arena: t.CExtern | t.CUInt8T | t.CPtr -pool: t.CExtern | memhub.MemPool | t.CPtr -test_passed: t.CExtern | t.CInt -test_failed: t.CExtern | t.CInt - -def check(name: str, condition: t.CInt, detail: str) -> t.CInt: pass - -def approx_eq(a: t.CDouble, b: t.CDouble) -> t.CInt: pass - -def approx_loose(a: t.CDouble, b: t.CDouble) -> t.CInt: pass - -def section_header(title: str) -> t.CInt: pass - -def section_footer() -> t.CInt: pass - -def vec4(p: memhub.MemPool | t.CPtr, v0: t.CDouble, v1: t.CDouble, v2: t.CDouble, v3: t.CDouble) -> numpy.ndarray | t.CPtr: pass - -def vec3(p: memhub.MemPool | t.CPtr, v0: t.CDouble, v1: t.CDouble, v2: t.CDouble) -> numpy.ndarray | t.CPtr: pass - -def vec2(p: memhub.MemPool | t.CPtr, v0: t.CDouble, v1: t.CDouble) -> numpy.ndarray | t.CPtr: pass - -def test_zeros_ones() -> t.CInt: pass - -def test_arange_linspace() -> t.CInt: pass - -def test_eye_diag() -> t.CInt: pass - -def test_sum_mean_min_max() -> t.CInt: pass - -def test_fill_copy() -> t.CInt: pass - -def test_add_sub_mul_div() -> t.CInt: pass - -def test_neg() -> t.CInt: pass - -def test_len() -> t.CInt: pass - -def test_scalar_ops() -> t.CInt: pass - -def test_math_funcs() -> t.CInt: pass - -def test_matmul() -> t.CInt: pass - -def test_dot() -> t.CInt: pass - -def test_transpose() -> t.CInt: pass - -def test_var_std_norm() -> t.CInt: pass - -def test_clip_concatenate() -> t.CInt: pass - -def test_sort_reverse() -> t.CInt: pass - -def test_print_arr() -> t.CInt: pass - -def test_floordiv_mod() -> t.CInt: pass - -def test_additional_math() -> t.CInt: pass - -def test_trig_hyperbolic() -> t.CInt: pass - -def test_degrees_radians() -> t.CInt: pass - -def test_cumsum_diff() -> t.CInt: pass - -def test_max_min_where() -> t.CInt: pass - -def test_flatten_trace() -> t.CInt: pass - -def test_outer() -> t.CInt: pass - -def test_bool_comparison() -> t.CInt: pass - -def test_linalg() -> t.CInt: pass - -def test_additional_creation() -> t.CInt: pass - -def test_interp() -> t.CInt: pass - -def test_numpy_edge() -> t.CInt: pass - -def bench_numpy_perf() -> t.CInt: pass - -def test_numpy_correct() -> t.CInt: pass - -def test_numpy_edge_main() -> t.CInt: pass - -def bench_numpy_main() -> t.CInt: pass - -def test_numpy_main() -> t.CInt: pass diff --git a/.transpyc_cache/3d3edda4a4e6c08b.doc.json b/.transpyc_cache/3d3edda4a4e6c08b.doc.json deleted file mode 100644 index 8c2a0a2..0000000 --- a/.transpyc_cache/3d3edda4a4e6c08b.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"AssignHandle": "Assign 语句处理器:继承 Mixin 获得 Trans 回指针 + 共享方法"} \ No newline at end of file diff --git a/.transpyc_cache/3d3edda4a4e6c08b.pyi b/.transpyc_cache/3d3edda4a4e6c08b.pyi deleted file mode 100644 index ec65969..0000000 --- a/.transpyc_cache/3d3edda4a4e6c08b.pyi +++ /dev/null @@ -1,30 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesAssign.py -Module: lib.core.Handles.HandlesAssign -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.Handles.HandlesNonlocal as HandlesNonlocal -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct - -@t.NoVTable -class AssignHandle(HandlesBase.Mixin): - _CurrentClass: str - def __init__(self: AssignHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def Handle(self: AssignHandle, node: ast.AST | t.CPtr) -> int: pass - -def NewAssignHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> AssignHandle | t.CPtr: pass diff --git a/.transpyc_cache/3e914ffe8cc3c120.doc.json b/.transpyc_cache/3e914ffe8cc3c120.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/3e914ffe8cc3c120.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/3f7c5e78d8652535.pyi b/.transpyc_cache/3f7c5e78d8652535.pyi deleted file mode 100644 index abe01c2..0000000 --- a/.transpyc_cache/3f7c5e78d8652535.pyi +++ /dev/null @@ -1,128 +0,0 @@ -""" -Auto-generated Python stub file from vipermath.py -Module: vipermath -""" - - -import t, c - -U_M_PI: t.CDefine = 3.14159265358979323846 -U_M_E: t.CDefine = 2.71828182845904523536 -U_M_PI_2: t.CDefine = 1.57079632679489661923 -U_M_PI_4: t.CDefine = 0.78539816339744830962 -U_M_1_PI: t.CDefine = 0.31830988618379067154 -U_M_2_PI: t.CDefine = 0.63661977236758134308 -U_M_LN2: t.CDefine = 0.69314718055994530942 -U_M_LN10: t.CDefine = 2.30258509299404568402 -U_M_2_SQRT_PI: t.CDefine = 1.77245385090551602730 - -def radians(degrees: t.CDouble) -> t.CDouble: pass - -def degrees(radians: t.CDouble) -> t.CDouble: pass - -def sin(x: t.CDouble) -> t.CDouble: pass - -def cos(x: t.CDouble) -> t.CDouble: pass - -def tan(x: t.CDouble) -> t.CDouble: pass - -def asin(x: t.CDouble) -> t.CDouble: pass - -def acos(x: t.CDouble) -> t.CDouble: pass - -def _atan_core(x: t.CDouble) -> t.CDouble: pass - -def atan(x: t.CDouble) -> t.CDouble: pass - -def atan2(y: t.CDouble, x: t.CDouble) -> t.CDouble: pass - -def sinh(x: t.CDouble) -> t.CDouble: pass - -def cosh(x: t.CDouble) -> t.CDouble: pass - -def tanh(x: t.CDouble) -> t.CDouble: pass - -def exp(x: t.CDouble) -> t.CDouble: pass - -def log(x: t.CDouble) -> t.CDouble: pass - -def sqrt(x: t.CDouble) -> t.CDouble: pass - -def abs(x: t.CInt) -> t.CInt: pass - -def fabs(x: t.CDouble) -> t.CDouble: pass - -def labs(x: t.CLong) -> t.CLong: pass - -def factorial(n: t.CInt) -> t.CDouble: pass - -def combination(n: t.CInt, k: t.CInt) -> t.CDouble: pass - -def permutation(n: t.CInt, k: t.CInt) -> t.CDouble: pass - -def pow(x: t.CDouble, y: t.CDouble) -> t.CDouble: pass - -def powf(x: t.CDouble, y: t.CDouble) -> t.CDouble: pass - -def cbrt(x: t.CDouble) -> t.CDouble: pass - -def hypot(x: t.CDouble, y: t.CDouble) -> t.CDouble: pass - -def floor(x: t.CDouble) -> t.CDouble: pass - -def ceil(x: t.CDouble) -> t.CDouble: pass - -def round(x: t.CDouble) -> t.CDouble: pass - -def trunc(x: t.CDouble) -> t.CDouble: pass - -def fmod(x: t.CDouble, y: t.CDouble) -> t.CDouble: pass - -def fmodf(x: float, y: float) -> float: pass - -def modf(x: t.CDouble, iptr: t.CDouble | t.CPtr) -> t.CDouble: pass - -def log10(x: t.CDouble) -> t.CDouble: pass - -def log2(x: t.CDouble) -> t.CDouble: pass - -def exp2(x: t.CDouble) -> t.CDouble: pass - -def expm1(x: t.CDouble) -> t.CDouble: pass - -def log1p(x: t.CDouble) -> t.CDouble: pass - -def asinh(x: t.CDouble) -> t.CDouble: pass - -def acosh(x: t.CDouble) -> t.CDouble: pass - -def atanh(x: t.CDouble) -> t.CDouble: pass - -def gamma(x: t.CDouble) -> t.CDouble: pass - -def erf(x: t.CDouble) -> t.CDouble: pass - -def erfc(x: t.CDouble) -> t.CDouble: pass - -def sqrtf(x: t.CFloat) -> t.CFloat: pass - -def sinf(x: t.CFloat) -> t.CFloat: pass - -def cosf(x: t.CFloat) -> t.CFloat: pass - -def tanf(x: t.CFloat) -> t.CFloat: pass - -def fabsf(x: t.CFloat) -> t.CFloat: pass - -def floorf(x: t.CFloat) -> t.CFloat: pass - -def ceilf(x: t.CFloat) -> t.CFloat: pass - - -class _U(t.CUnion): - d: t.CDouble - u: t.CUInt64T - -def isnan(x: t.CDouble) -> t.CStatic | t.CInt: pass - -def isinf(x: t.CDouble) -> t.CStatic | t.CInt: pass diff --git a/.transpyc_cache/4020cac9bab5e9f1.doc.json b/.transpyc_cache/4020cac9bab5e9f1.doc.json deleted file mode 100644 index 006cdc0..0000000 --- a/.transpyc_cache/4020cac9bab5e9f1.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"extract_func_attrs": "从 decorator_list 提取 c.Attribute 属性,返回 LLVM IR 属性字符串", "_get_attr_name_from_node": "从 AST 节点提取属性名\n\n 支持:\n - Call(func=Attribute(...)): t.attr.always_inline() -> \"always_inline\"\n - Attribute: t.attr.packed -> \"packed\"\n - Attribute(t.attr.llvm.xxx): t.attr.llvm.nounwind -> \"nounwind\"\n ", "_append_llvm_attr": "将属性名映射到 LLVM 属性名并追加到缓冲区\n\n 返回 1 表示已追加,0 表示不支持该属性\n ", "_append_str": "将字符串追加到 buf 末尾(用 strlen+strcpy 模拟 strcat)", "_mangle_name": "为任意名称添加 SHA1 前缀(不做 main/export 检查)", "_mangle_name_with_sha1": "用指定 SHA1 为名称添加前缀(不做 main/export 检查)", "_mangle_func_name": "为函数名添加 SHA1 前缀(检查 main/export)", "forward_declare_functions": "预扫描所有顶层 FunctionDef,创建前向声明", "translate_function_def": "翻译函数定义,返回新增的变量数(通常为 0,函数定义不增加当前作用域变量)", "translate_nested_function_def": "翻译嵌套函数定义:提升为顶层函数 + 创建闭包", "create_function": "创建 LLVM 函数并添加参数"} \ No newline at end of file diff --git a/.transpyc_cache/4020cac9bab5e9f1.pyi b/.transpyc_cache/4020cac9bab5e9f1.pyi deleted file mode 100644 index 2b7f43b..0000000 --- a/.transpyc_cache/4020cac9bab5e9f1.pyi +++ /dev/null @@ -1,45 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesFunctions.py -Module: lib.core.Handles.HandlesFunctions -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import viperlib -import stdio -import stdlib -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesBody as HandlesBody -import lib.core.Handles.HandlesNonlocal as HandlesNonlocal -import lib.core.Handles.HandlesImports as HandlesImports - -def extract_func_attrs(pool: memhub.MemBuddy | t.CPtr, decorator_list: list[ast.AST | t.CPtr] | t.CPtr, imported_modules: str) -> t.CChar | t.CPtr: pass - -def _get_attr_name_from_node(node: ast.AST | t.CPtr) -> str: pass - -def _append_llvm_attr(attrs_buf: t.CChar | t.CPtr, attr_name: str) -> int: pass - -def _append_str(buf: t.CChar | t.CPtr, s: str) -> None: pass - -def _mangle_name(trans: HT.Translator | t.CPtr, name: str) -> str: pass - -def _mangle_name_with_sha1(sha1: str, name: str) -> str: pass - -def _mangle_func_name(trans: HT.Translator | t.CPtr, name: str, has_export: int) -> str: pass - -def forward_declare_functions(trans: HT.Translator | t.CPtr, tree: ast.AST | t.CPtr) -> int: pass - -def translate_function_def(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - -def translate_nested_function_def(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - -def create_function(pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, name: str, args_node: ast.AST | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Function | t.CPtr: pass diff --git a/.transpyc_cache/4031ec3fbcff0767.doc.json b/.transpyc_cache/4031ec3fbcff0767.doc.json deleted file mode 100644 index 8c2a0a2..0000000 --- a/.transpyc_cache/4031ec3fbcff0767.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"AssignHandle": "Assign 语句处理器:继承 Mixin 获得 Trans 回指针 + 共享方法"} \ No newline at end of file diff --git a/.transpyc_cache/4031ec3fbcff0767.pyi b/.transpyc_cache/4031ec3fbcff0767.pyi deleted file mode 100644 index 1e1b4bd..0000000 --- a/.transpyc_cache/4031ec3fbcff0767.pyi +++ /dev/null @@ -1,29 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesAssign.py -Module: lib.core.Handles.HandlesAssign -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesNonlocal as HandlesNonlocal -import lib.core.Handles.HandlesType as HandlesType - -@t.NoVTable -class AssignHandle(HandlesBase.Mixin): - _CurrentClass: str - def __init__(self: AssignHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def Handle(self: AssignHandle, node: ast.AST | t.CPtr) -> int: pass - -def NewAssignHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> AssignHandle | t.CPtr: pass diff --git a/.transpyc_cache/4175f14c5fbef360.doc.json b/.transpyc_cache/4175f14c5fbef360.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/4175f14c5fbef360.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/4175f14c5fbef360.pyi b/.transpyc_cache/4175f14c5fbef360.pyi deleted file mode 100644 index 209a287..0000000 --- a/.transpyc_cache/4175f14c5fbef360.pyi +++ /dev/null @@ -1,17 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - - -import t, c -from t import CInt, CExport, CPtr -from stdio import printf -import memhub -import stdlib -import string -from ast import AST, ASTKind, Module, FunctionDef, Assign, If, For, While, With, Return, Expr, Name, Constant, BinOp, UnaryOp, Call, Compare, Import, ImportFrom, Expression, CONST_INT, CONST_STR, CONST_BOOL, CONST_NONE, OpKind, ASTCtx, FLAG_IS_ASYNC, parse, parse_expression, dump - -ARENA_SIZE: t.CExtern | CInt - -def main() -> CInt | CExport: pass diff --git a/.transpyc_cache/42ced27d9e76aef5.pyi b/.transpyc_cache/42ced27d9e76aef5.pyi deleted file mode 100644 index f1d44b9..0000000 --- a/.transpyc_cache/42ced27d9e76aef5.pyi +++ /dev/null @@ -1,11 +0,0 @@ -""" -Auto-generated Python stub file from ctraits.py -Module: ctraits -""" - -import c - - -import t - -def isptr(x: t.CType) -> bool: pass diff --git a/.transpyc_cache/4337fb260448bbe2.pyi b/.transpyc_cache/4337fb260448bbe2.pyi deleted file mode 100644 index 7ed88bd..0000000 --- a/.transpyc_cache/4337fb260448bbe2.pyi +++ /dev/null @@ -1,73 +0,0 @@ -""" -Auto-generated Python stub file from ast.astaux.py -Module: ast.astaux -""" - - -import t, c -from stdint import * -import memhub -import string -from .base import AST, ASTKind, _init_ast, _copy_str, _set_parent_list, _emit, _emit_str, _emit_int, _dump_list - -class ExceptHandler(AST): - type: AST | t.CPtr - name: str - def __new__(self: ExceptHandler, pool: memhub.MemManager | t.CPtr, type: AST | t.CPtr, name: str) -> t.CInt: pass - def __init__(self: ExceptHandler, pool: memhub.MemManager | t.CPtr, type: AST | t.CPtr, name: str) -> t.CInt: pass - def kind(self: ExceptHandler) -> t.CInt: pass - def type_name(self: ExceptHandler) -> str: pass - def dump(self: ExceptHandler, buf: bytes, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class Arguments(AST): - args: list[AST | t.CPtr] | t.CPtr - vararg: AST | t.CPtr - kwarg: AST | t.CPtr - defaults: list[AST | t.CPtr] | t.CPtr - kw_defaults: list[AST | t.CPtr] | t.CPtr - def __new__(self: Arguments, pool: memhub.MemManager | t.CPtr, args: list[AST | t.CPtr] | t.CPtr, vararg: AST | t.CPtr, kwarg: AST | t.CPtr, defaults: list[AST | t.CPtr] | t.CPtr, kw_defaults: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def __init__(self: Arguments, pool: memhub.MemManager | t.CPtr, args: list[AST | t.CPtr] | t.CPtr, vararg: AST | t.CPtr, kwarg: AST | t.CPtr, defaults: list[AST | t.CPtr] | t.CPtr, kw_defaults: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def kind(self: Arguments) -> t.CInt: pass - def type_name(self: Arguments) -> str: pass - def dump(self: Arguments, buf: bytes, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class Arg(AST): - arg: str - annotation: AST | t.CPtr - def __new__(self: Arg, pool: memhub.MemManager | t.CPtr, arg: str, annotation: AST | t.CPtr) -> t.CInt: pass - def __init__(self: Arg, pool: memhub.MemManager | t.CPtr, arg: str, annotation: AST | t.CPtr) -> t.CInt: pass - def kind(self: Arg) -> t.CInt: pass - def type_name(self: Arg) -> str: pass - def dump(self: Arg, buf: bytes, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class Keyword(AST): - arg: str - value: AST | t.CPtr - def __new__(self: Keyword, pool: memhub.MemManager | t.CPtr, arg: str, value: AST | t.CPtr) -> t.CInt: pass - def __init__(self: Keyword, pool: memhub.MemManager | t.CPtr, arg: str, value: AST | t.CPtr) -> t.CInt: pass - def kind(self: Keyword) -> t.CInt: pass - def type_name(self: Keyword) -> str: pass - def dump(self: Keyword, buf: bytes, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class Alias(AST): - name: str - asname: str - def __new__(self: Alias, pool: memhub.MemManager | t.CPtr, name: str, asname: str) -> t.CInt: pass - def __init__(self: Alias, pool: memhub.MemManager | t.CPtr, name: str, asname: str) -> t.CInt: pass - def kind(self: Alias) -> t.CInt: pass - def type_name(self: Alias) -> str: pass - def dump(self: Alias, buf: bytes, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class WithItem(AST): - context_expr: AST | t.CPtr - optional_vars: AST | t.CPtr - def __new__(self: WithItem, pool: memhub.MemManager | t.CPtr, context_expr: AST | t.CPtr, optional_vars: AST | t.CPtr) -> t.CInt: pass - def __init__(self: WithItem, pool: memhub.MemManager | t.CPtr, context_expr: AST | t.CPtr, optional_vars: AST | t.CPtr) -> t.CInt: pass - def kind(self: WithItem) -> t.CInt: pass - def type_name(self: WithItem) -> str: pass - def dump(self: WithItem, buf: bytes, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class Comprehension(AST): - target: AST | t.CPtr - iter: AST | t.CPtr - ifs: list[AST | t.CPtr] | t.CPtr - is_async: t.CInt - def __new__(self: Comprehension, pool: memhub.MemManager | t.CPtr, target: AST | t.CPtr, iter: AST | t.CPtr, ifs: list[AST | t.CPtr] | t.CPtr, is_async: t.CInt) -> t.CInt: pass - def __init__(self: Comprehension, pool: memhub.MemManager | t.CPtr, target: AST | t.CPtr, iter: AST | t.CPtr, ifs: list[AST | t.CPtr] | t.CPtr, is_async: t.CInt) -> t.CInt: pass - def kind(self: Comprehension) -> t.CInt: pass - def type_name(self: Comprehension) -> str: pass - def dump(self: Comprehension, buf: bytes, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass \ No newline at end of file diff --git a/.transpyc_cache/43b4b8f6ce3ed278.doc.json b/.transpyc_cache/43b4b8f6ce3ed278.doc.json deleted file mode 100644 index c00e036..0000000 --- a/.transpyc_cache/43b4b8f6ce3ed278.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数\n\n 直接接收三个 Value 参数,避免通过 Next 链表遍历(共享 alloca 对象的\n Next 字段可能被其他操作污染,导致链表断裂)。\n ", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/43b4b8f6ce3ed278.pyi b/.transpyc_cache/43b4b8f6ce3ed278.pyi deleted file mode 100644 index 40c3168..0000000 --- a/.transpyc_cache/43b4b8f6ce3ed278.pyi +++ /dev/null @@ -1,171 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, dst_val: llvmlite.Value | t.CPtr, src_val: llvmlite.Value | t.CPtr, num_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/440f18f9dce85a95.doc.json b/.transpyc_cache/440f18f9dce85a95.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/440f18f9dce85a95.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/440f18f9dce85a95.pyi b/.transpyc_cache/440f18f9dce85a95.pyi deleted file mode 100644 index 0b2c4a4..0000000 --- a/.transpyc_cache/440f18f9dce85a95.pyi +++ /dev/null @@ -1,52 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - -import c - - -import t -import stdio -import testcheck - -def test_nonlocal_conditional() -> t.CInt: pass - -def test_nonlocal_multi_var() -> t.CInt: pass - - -g_counter: t.CExtern | t.CInt - -def inc_global() -> t.CInt: pass - -def add_global(n: t.CInt) -> t.CInt: pass - -def test_global_cross_functions() -> t.CInt: pass - -def test_nested_ref_capture() -> t.CInt: pass - -def test_lambda_capture_then_modify() -> t.CInt: pass - -def test_nonlocal_loop_accumulate() -> t.CInt: pass - -def test_deep_nested_vars() -> t.CInt: pass - - -g_state: t.CExtern | t.CInt - -def test_global_nonlocal_same_func() -> t.CInt: pass - -def test_lambda_default_and_capture() -> t.CInt: pass - -def test_nested_accumulate() -> t.CInt: pass - -def test_nonlocal_while() -> t.CInt: pass - - -class Point: - x: t.CInt - y: t.CInt - -def test_nested_modify_struct() -> t.CInt: pass - -def main() -> t.CInt: pass diff --git a/.transpyc_cache/451745df21e598af.pyi b/.transpyc_cache/451745df21e598af.pyi deleted file mode 100644 index b3bfb92..0000000 --- a/.transpyc_cache/451745df21e598af.pyi +++ /dev/null @@ -1,52 +0,0 @@ -""" -Auto-generated Python stub file from zlib.zinflate.py -Module: zlib.zinflate -""" - - -from stdint import * -import zlib.zchecksum as zchecksum -import zlib.zdef as zdef -import zlib.zhuff as zhuff -import string -import memhub -import t, c - -@t.Object -class zinflate_stream: - pool: memhub.MemManager | t.CPtr - reader: zdef.zbit_reader - window: BYTEPTR - window_pos: t.CInt - window_size: t.CInt - wbits: t.CInt - is_finished: t.CInt - is_initialized: t.CInt - header_parsed: t.CInt - is_gzip: t.CInt - adler: t.CUInt32T - crc: t.CUInt32T - output: BYTEPTR - output_len: t.CSizeT - output_cap: t.CSizeT - input_data: t.CConst | BYTEPTR - input_len: t.CSizeT - input_pos: t.CSizeT - max_length: t.CSizeT - def __init__(self: zinflate_stream) -> t.CInt: pass - def output_byte(self: zinflate_stream, byte: BYTE) -> t.CInt: pass - def parse_header(self: zinflate_stream) -> t.CInt: pass - def read_bits_from_input(self: zinflate_stream, nbits: t.CInt, out: UINTPTR) -> t.CInt: pass - def read_huffman(self: zinflate_stream, dt: zhuff.zhuff_decode_tree | t.CPtr) -> t.CInt: pass - def inflate_block_stored(self: zinflate_stream) -> t.CInt: pass - def inflate_block_fixed(self: zinflate_stream) -> t.CInt: pass - def inflate_block_dynamic(self: zinflate_stream) -> t.CInt: pass - def inflate_stream(self: zinflate_stream) -> t.CInt: pass - def decompress(self: zinflate_stream, data: UINT8PTR, length: t.CSizeT, max_length: t.CSizeT, out: t.CUInt8T | t.CPtr[t.CPtr], out_len: t.CSizeT | t.CPtr) -> t.CInt: pass - def set_dictionary(self: zinflate_stream, dict: UINT8PTR, length: t.CSizeT) -> t.CInt: pass - def copy(self: zinflate_stream) -> zinflate_stream | t.CPtr: pass - def destroy(self: zinflate_stream) -> t.CInt: pass - -def zinflate_one_shot(pool: memhub.MemManager | t.CPtr, data: UINT8PTR, length: t.CSizeT, wbits: t.CInt, bufsize: t.CSizeT, out_len: t.CSizeT | t.CPtr) -> t.CUInt8T | t.CPtr: pass - -def zinflate_create(pool: memhub.MemManager | t.CPtr, wbits: t.CInt) -> zinflate_stream | t.CPtr: pass diff --git a/.transpyc_cache/45242e16a6829016.doc.json b/.transpyc_cache/45242e16a6829016.doc.json deleted file mode 100644 index a8e6f20..0000000 --- a/.transpyc_cache/45242e16a6829016.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_is_cenum_base": "检查 base 节点是否为 t.CEnum,返回 1=是 / 0=否", "_is_enum_class": "检查 ClassDef 是否继承自 t.CEnum,返回 1=是 / 0=否", "_is_cunion_base": "检查 base 节点是否为 t.CUnion,返回 1=是 / 0=否", "_is_union_class": "检查 ClassDef 是否继承自 t.CUnion,返回 1=是 / 0=否", "_has_decorator": "检查 decorator_list 中是否有指定装饰器名", "_is_marker_base": "检查基类名是否为标记基类,返回 1=是 / 0=否", "_get_base_name": "从 base AST 节点提取基类名,返回 None=失败", "_get_parent_class": "获取 ClassDef 的真实父类名,返回 None=无真实父类", "_has_any_func_cvtable": "检查类中是否有任何函数标记了 @t.CVTable,返回 1=有 / 0=无", "_should_method_be_virtual": "判断方法是否应该进入虚表,返回 1=包含 / 0=排除", "_detect_vtable_status": "检测类是否应该启用虚表", "_resolve_enum_member_type": "解析枚举成员的类型注解为 LLVM 整数类型", "_is_state_annotation": "检查注解节点是否为 t.State,返回 1=是 / 0=否", "_extract_int_value": "从 AST 节点提取整数值,失败返回 0", "_translate_enum_def": "翻译枚举类定义,返回 0", "_get_type_size": "计算 LLVM 类型的字节大小", "_translate_union_def": "翻译联合体定义,返回 0", "_is_generic_class": "检查 ClassDef 是否有类型参数(泛型类),返回 1=是 / 0=否", "_register_generic_template": "注册泛型类模板(类名 + ClassDef 节点)", "_find_generic_template": "查找泛型类模板,返回 ClassDef 节点或 None", "_mangle_generic_class_name": "生成特化类名: list + [int] -> list[int]\n\n 分配新缓冲区拼接,避免原地 strcat 导致缓冲区溢出\n ", "_clone_annotation": "拷贝类型注解表达式,替换类型参数 T 为具体类型名\n\n tp_names: 类型参数名列表 ['T']\n type_args: 类型实参名列表 ['int']\n ", "_clone_arguments": "拷贝 Arguments 节点,替换 arg annotation 中的 T", "_clone_classdef_for_spec": "拷贝 ClassDef 节点用于泛型特化\n\n - 替换类名为 spec_name\n - 清除 type_params(特化后不是泛型类)\n - 拷贝 children 中的 AnnAssign 和 FunctionDef,替换类型注解中的 T\n - 方法体直接引用原始节点(通过 type_map 上下文处理 T)\n ", "_find_cached_spec": "查找已缓存的特化名,未找到返回 None", "_cache_spec": "缓存特化结果", "_specialize_generic_class": "特化泛型类,返回特化类名\n\n 1. 查找泛型模板\n 2. 生成特化名\n 3. 检查缓存\n 4. 拷贝 ClassDef 节点(替换类型注解中的 T)\n 5. 设置 type_map 上下文(用于方法体中的 T 替换)\n 6. 调用 translate_class_def 翻译特化类\n 7. 返回特化名\n ", "translate_class_def": "翻译 class 定义,返回 0", "_vtable_strcat": "将 src 追加到 dst 末尾", "_vtable_name_needs_quote": "检查 LLVM 标识符是否需要引号(以数字开头或含 '.')", "_format_func_type_str": "从 Function 对象生成函数类型字符串", "_generate_vtable": "生成 VTable 全局变量", "_translate_oop_methods": "扫描 class body 中的方法并翻译,生成 __before_init__", "_translate_method": "翻译单个方法,返回 0", "_generate_before_init": "生成 __before_init__ 函数,返回 0"} \ No newline at end of file diff --git a/.transpyc_cache/45242e16a6829016.pyi b/.transpyc_cache/45242e16a6829016.pyi deleted file mode 100644 index 62b2e80..0000000 --- a/.transpyc_cache/45242e16a6829016.pyi +++ /dev/null @@ -1,104 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesClassDef.py -Module: lib.core.Handles.HandlesClassDef -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import viperlib -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesEnum as HandlesEnum - -ENUM_MEMBER_MAX_LOCAL: t.CDefine = 64 - -def _is_cenum_base(base_node: ast.AST | t.CPtr) -> int: pass - -def _is_enum_class(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _is_cunion_base(base_node: ast.AST | t.CPtr) -> int: pass - -def _is_union_class(cd: ast.ClassDef | t.CPtr) -> int: pass - - -_MARKER_BASES: t.CDefine = 8 - -def _has_decorator(decorator_list: list[ast.AST | t.CPtr] | t.CPtr, deco_name: str) -> int: pass - -def _is_marker_base(base_name: str) -> int: pass - -def _get_base_name(base_node: ast.AST | t.CPtr) -> str: pass - -def _get_parent_class(cd: ast.ClassDef | t.CPtr) -> str: pass - -def _has_any_func_cvtable(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _should_method_be_virtual(cd: ast.ClassDef | t.CPtr, fd: ast.FunctionDef | t.CPtr, trans: HT.Translator | t.CPtr) -> int: pass - -def _detect_vtable_status(cd: ast.ClassDef | t.CPtr, trans: HT.Translator | t.CPtr) -> int: pass - -def _resolve_enum_member_type(pool: memhub.MemBuddy | t.CPtr, ann_node: ast.AST | t.CPtr, imported_modules: str, from_imports: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _is_state_annotation(node: ast.AST | t.CPtr) -> int: pass - -def _extract_int_value(node: ast.AST | t.CPtr) -> t.CInt64T: pass - -def _translate_enum_def(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr) -> int: pass - -def _get_type_size(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def _translate_union_def(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr) -> int: pass - - -_generic_class_names: t.CExtern | list[str] | t.CPtr -_generic_class_nodes: t.CExtern | list[ast.ClassDef | t.CPtr] | t.CPtr - -def _is_generic_class(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _register_generic_template(pool: memhub.MemBuddy | t.CPtr, cd: ast.ClassDef | t.CPtr) -> t.CInt: pass - -def _find_generic_template(class_name: str) -> ast.ClassDef | t.CPtr: pass - -def _mangle_generic_class_name(pool: memhub.MemBuddy | t.CPtr, class_name: str, type_args: list[str] | t.CPtr) -> str: pass - -def _clone_annotation(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.AST | t.CPtr: pass - -def _clone_arguments(pool: memhub.MemBuddy | t.CPtr, args: ast.AST | t.CPtr, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.AST | t.CPtr: pass - -def _clone_classdef_for_spec(pool: memhub.MemBuddy | t.CPtr, cd: ast.ClassDef | t.CPtr, spec_name: str, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.ClassDef | t.CPtr: pass - - -_spec_keys: t.CExtern | list[str] | t.CPtr -_spec_names: t.CExtern | list[str] | t.CPtr - -def _find_cached_spec(spec_key: str) -> str: pass - -def _cache_spec(pool: memhub.MemBuddy | t.CPtr, spec_key: str, spec_name: str) -> t.CInt: pass - -def _specialize_generic_class(trans: HT.Translator | t.CPtr, class_name: str, type_args: list[str] | t.CPtr) -> str: pass - -def translate_class_def(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - - -VTBL_METHOD_MAX: t.CDefine = 32 - -def _vtable_strcat(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _vtable_name_needs_quote(name: str) -> int: pass - -def _format_func_type_str(pool: memhub.MemBuddy | t.CPtr, buf: t.CChar | t.CPtr, buf_size: t.CSizeT, func: llvmlite.Function | t.CPtr) -> int: pass - -def _generate_vtable(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr, class_name: str) -> int: pass - -def _translate_oop_methods(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass - -def _translate_method(trans: HT.Translator | t.CPtr, fd: ast.FunctionDef | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass - -def _generate_before_init(trans: HT.Translator | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass diff --git a/.transpyc_cache/47767b5026a8ee15.pyi b/.transpyc_cache/47767b5026a8ee15.pyi deleted file mode 100644 index 7890f3d..0000000 --- a/.transpyc_cache/47767b5026a8ee15.pyi +++ /dev/null @@ -1,241 +0,0 @@ -""" -Auto-generated Python stub file from ast.exprs.py -Module: ast.exprs -""" - - -import t, c -from stdint import * -import memhub -import string -from .base import AST, ASTKind, ASTCtx, OpKind, _init_ast, _copy_str, _set_parent_list, _emit, _emit_str, _emit_int, _dump_list, _dump_op_list, _op_name, CONST_INT, CONST_FLOAT, CONST_STR, CONST_BOOL, CONST_NONE - -class Name(AST): - id: str - ctx: t.CInt - def __new__(self: Name, pool: memhub.MemManager | t.CPtr, id: str, ctx: t.CInt) -> t.CInt: pass - def __init__(self: Name, pool: memhub.MemManager | t.CPtr, id: str, ctx: t.CInt) -> t.CInt: pass - def kind(self: Name) -> t.CInt: pass - def type_name(self: Name) -> str: pass - def dump(self: Name, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class Constant(AST): - int_val: t.CInt64T - float_val: t.CDouble - str_val: str - const_kind: t.CInt - def __new__(self: Constant, pool: memhub.MemManager | t.CPtr, const_kind: t.CInt, int_val: t.CInt64T, float_val: t.CDouble, str_val: str, lineno: t.CInt, col: t.CInt) -> t.CInt: pass - def __init__(self: Constant, pool: memhub.MemManager | t.CPtr, const_kind: t.CInt, int_val: t.CInt64T, float_val: t.CDouble, str_val: str, lineno: t.CInt, col: t.CInt) -> t.CInt: pass - def kind(self: Constant) -> t.CInt: pass - def type_name(self: Constant) -> str: pass - def dump(self: Constant, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class BinOp(AST): - left: AST | t.CPtr - op: t.CInt - right: AST | t.CPtr - def __new__(self: BinOp, pool: memhub.MemManager | t.CPtr, left: AST | t.CPtr, op: t.CInt, right: AST | t.CPtr) -> t.CInt: pass - def __init__(self: BinOp, pool: memhub.MemManager | t.CPtr, left: AST | t.CPtr, op: t.CInt, right: AST | t.CPtr) -> t.CInt: pass - def kind(self: BinOp) -> t.CInt: pass - def type_name(self: BinOp) -> str: pass - def dump(self: BinOp, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class UnaryOp(AST): - op: t.CInt - operand: AST | t.CPtr - def __new__(self: UnaryOp, pool: memhub.MemManager | t.CPtr, op: t.CInt, operand: AST | t.CPtr) -> t.CInt: pass - def __init__(self: UnaryOp, pool: memhub.MemManager | t.CPtr, op: t.CInt, operand: AST | t.CPtr) -> t.CInt: pass - def kind(self: UnaryOp) -> t.CInt: pass - def type_name(self: UnaryOp) -> str: pass - def dump(self: UnaryOp, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class Compare(AST): - left: AST | t.CPtr - ops: t.CPtr - comparators: list[AST | t.CPtr] | t.CPtr - def __new__(self: Compare, pool: memhub.MemManager | t.CPtr, left: AST | t.CPtr, ops: t.CPtr, comparators: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def __init__(self: Compare, pool: memhub.MemManager | t.CPtr, left: AST | t.CPtr, ops: t.CPtr, comparators: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def kind(self: Compare) -> t.CInt: pass - def type_name(self: Compare) -> str: pass - def dump(self: Compare, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class Call(AST): - func: AST | t.CPtr - args: list[AST | t.CPtr] | t.CPtr - keywords: list[AST | t.CPtr] | t.CPtr - def __new__(self: Call, pool: memhub.MemManager | t.CPtr, func: AST | t.CPtr, args: list[AST | t.CPtr] | t.CPtr, keywords: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def __init__(self: Call, pool: memhub.MemManager | t.CPtr, func: AST | t.CPtr, args: list[AST | t.CPtr] | t.CPtr, keywords: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def kind(self: Call) -> t.CInt: pass - def type_name(self: Call) -> str: pass - def dump(self: Call, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class BoolOp(AST): - op: t.CInt - values: list[AST | t.CPtr] | t.CPtr - def __new__(self: BoolOp, pool: memhub.MemManager | t.CPtr, op: t.CInt, values: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def __init__(self: BoolOp, pool: memhub.MemManager | t.CPtr, op: t.CInt, values: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def kind(self: BoolOp) -> t.CInt: pass - def type_name(self: BoolOp) -> str: pass - def dump(self: BoolOp, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class Lambda(AST): - args: AST | t.CPtr - body: AST | t.CPtr - def __new__(self: Lambda, pool: memhub.MemManager | t.CPtr, args: AST | t.CPtr, body: AST | t.CPtr) -> t.CInt: pass - def __init__(self: Lambda, pool: memhub.MemManager | t.CPtr, args: AST | t.CPtr, body: AST | t.CPtr) -> t.CInt: pass - def kind(self: Lambda) -> t.CInt: pass - def type_name(self: Lambda) -> str: pass - def dump(self: Lambda, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class IfExp(AST): - test: AST | t.CPtr - body: AST | t.CPtr - orelse: AST | t.CPtr - def __new__(self: IfExp, pool: memhub.MemManager | t.CPtr, test: AST | t.CPtr, body: AST | t.CPtr, orelse: AST | t.CPtr) -> t.CInt: pass - def __init__(self: IfExp, pool: memhub.MemManager | t.CPtr, test: AST | t.CPtr, body: AST | t.CPtr, orelse: AST | t.CPtr) -> t.CInt: pass - def kind(self: IfExp) -> t.CInt: pass - def type_name(self: IfExp) -> str: pass - def dump(self: IfExp, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class Dict(AST): - keys: list[AST | t.CPtr] | t.CPtr - values: list[AST | t.CPtr] | t.CPtr - def __new__(self: Dict, pool: memhub.MemManager | t.CPtr, keys: list[AST | t.CPtr] | t.CPtr, values: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def __init__(self: Dict, pool: memhub.MemManager | t.CPtr, keys: list[AST | t.CPtr] | t.CPtr, values: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def kind(self: Dict) -> t.CInt: pass - def type_name(self: Dict) -> str: pass - def dump(self: Dict, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class Set(AST): - elts: list[AST | t.CPtr] | t.CPtr - def __new__(self: Set, pool: memhub.MemManager | t.CPtr, elts: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def __init__(self: Set, pool: memhub.MemManager | t.CPtr, elts: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def kind(self: Set) -> t.CInt: pass - def type_name(self: Set) -> str: pass - def dump(self: Set, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class ListComp(AST): - elt: AST | t.CPtr - generators: list[AST | t.CPtr] | t.CPtr - def __new__(self: ListComp, pool: memhub.MemManager | t.CPtr, elt: AST | t.CPtr, generators: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def __init__(self: ListComp, pool: memhub.MemManager | t.CPtr, elt: AST | t.CPtr, generators: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def kind(self: ListComp) -> t.CInt: pass - def type_name(self: ListComp) -> str: pass - def dump(self: ListComp, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class SetComp(AST): - elt: AST | t.CPtr - generators: list[AST | t.CPtr] | t.CPtr - def __new__(self: SetComp, pool: memhub.MemManager | t.CPtr, elt: AST | t.CPtr, generators: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def __init__(self: SetComp, pool: memhub.MemManager | t.CPtr, elt: AST | t.CPtr, generators: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def kind(self: SetComp) -> t.CInt: pass - def type_name(self: SetComp) -> str: pass - def dump(self: SetComp, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class DictComp(AST): - key: AST | t.CPtr - value: AST | t.CPtr - generators: list[AST | t.CPtr] | t.CPtr - def __new__(self: DictComp, pool: memhub.MemManager | t.CPtr, key: AST | t.CPtr, value: AST | t.CPtr, generators: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def __init__(self: DictComp, pool: memhub.MemManager | t.CPtr, key: AST | t.CPtr, value: AST | t.CPtr, generators: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def kind(self: DictComp) -> t.CInt: pass - def type_name(self: DictComp) -> str: pass - def dump(self: DictComp, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class GeneratorExp(AST): - elt: AST | t.CPtr - generators: list[AST | t.CPtr] | t.CPtr - def __new__(self: GeneratorExp, pool: memhub.MemManager | t.CPtr, elt: AST | t.CPtr, generators: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def __init__(self: GeneratorExp, pool: memhub.MemManager | t.CPtr, elt: AST | t.CPtr, generators: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def kind(self: GeneratorExp) -> t.CInt: pass - def type_name(self: GeneratorExp) -> str: pass - def dump(self: GeneratorExp, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class Await(AST): - value: AST | t.CPtr - def __new__(self: Await, pool: memhub.MemManager | t.CPtr, value: AST | t.CPtr) -> t.CInt: pass - def __init__(self: Await, pool: memhub.MemManager | t.CPtr, value: AST | t.CPtr) -> t.CInt: pass - def kind(self: Await) -> t.CInt: pass - def type_name(self: Await) -> str: pass - def dump(self: Await, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class Yield(AST): - value: AST | t.CPtr - def __new__(self: Yield, pool: memhub.MemManager | t.CPtr, value: AST | t.CPtr) -> t.CInt: pass - def __init__(self: Yield, pool: memhub.MemManager | t.CPtr, value: AST | t.CPtr) -> t.CInt: pass - def kind(self: Yield) -> t.CInt: pass - def type_name(self: Yield) -> str: pass - def dump(self: Yield, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class YieldFrom(AST): - value: AST | t.CPtr - def __new__(self: YieldFrom, pool: memhub.MemManager | t.CPtr, value: AST | t.CPtr) -> t.CInt: pass - def __init__(self: YieldFrom, pool: memhub.MemManager | t.CPtr, value: AST | t.CPtr) -> t.CInt: pass - def kind(self: YieldFrom) -> t.CInt: pass - def type_name(self: YieldFrom) -> str: pass - def dump(self: YieldFrom, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class FormattedValue(AST): - value: AST | t.CPtr - conversion: t.CInt - format_spec: AST | t.CPtr - def __new__(self: FormattedValue, pool: memhub.MemManager | t.CPtr, value: AST | t.CPtr, conversion: t.CInt, format_spec: AST | t.CPtr) -> t.CInt: pass - def __init__(self: FormattedValue, pool: memhub.MemManager | t.CPtr, value: AST | t.CPtr, conversion: t.CInt, format_spec: AST | t.CPtr) -> t.CInt: pass - def kind(self: FormattedValue) -> t.CInt: pass - def type_name(self: FormattedValue) -> str: pass - def dump(self: FormattedValue, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class JoinedStr(AST): - values: list[AST | t.CPtr] | t.CPtr - def __new__(self: JoinedStr, pool: memhub.MemManager | t.CPtr, values: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def __init__(self: JoinedStr, pool: memhub.MemManager | t.CPtr, values: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def kind(self: JoinedStr) -> t.CInt: pass - def type_name(self: JoinedStr) -> str: pass - def dump(self: JoinedStr, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class Attribute(AST): - value: AST | t.CPtr - attr: str - ctx: t.CInt - def __new__(self: Attribute, pool: memhub.MemManager | t.CPtr, value: AST | t.CPtr, attr: str, ctx: t.CInt) -> t.CInt: pass - def __init__(self: Attribute, pool: memhub.MemManager | t.CPtr, value: AST | t.CPtr, attr: str, ctx: t.CInt) -> t.CInt: pass - def kind(self: Attribute) -> t.CInt: pass - def type_name(self: Attribute) -> str: pass - def dump(self: Attribute, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class Subscript(AST): - value: AST | t.CPtr - slice: AST | t.CPtr - ctx: t.CInt - def __new__(self: Subscript, pool: memhub.MemManager | t.CPtr, value: AST | t.CPtr, slice: AST | t.CPtr, ctx: t.CInt) -> t.CInt: pass - def __init__(self: Subscript, pool: memhub.MemManager | t.CPtr, value: AST | t.CPtr, slice: AST | t.CPtr, ctx: t.CInt) -> t.CInt: pass - def kind(self: Subscript) -> t.CInt: pass - def type_name(self: Subscript) -> str: pass - def dump(self: Subscript, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class Starred(AST): - value: AST | t.CPtr - ctx: t.CInt - def __new__(self: Starred, pool: memhub.MemManager | t.CPtr, value: AST | t.CPtr, ctx: t.CInt) -> t.CInt: pass - def __init__(self: Starred, pool: memhub.MemManager | t.CPtr, value: AST | t.CPtr, ctx: t.CInt) -> t.CInt: pass - def kind(self: Starred) -> t.CInt: pass - def type_name(self: Starred) -> str: pass - def dump(self: Starred, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class List(AST): - elts: list[AST | t.CPtr] | t.CPtr - ctx: t.CInt - def __new__(self: List, pool: memhub.MemManager | t.CPtr, elts: list[AST | t.CPtr] | t.CPtr, ctx: t.CInt) -> t.CInt: pass - def __init__(self: List, pool: memhub.MemManager | t.CPtr, elts: list[AST | t.CPtr] | t.CPtr, ctx: t.CInt) -> t.CInt: pass - def kind(self: List) -> t.CInt: pass - def type_name(self: List) -> str: pass - def dump(self: List, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class Tuple(AST): - elts: list[AST | t.CPtr] | t.CPtr - ctx: t.CInt - def __new__(self: Tuple, pool: memhub.MemManager | t.CPtr, elts: list[AST | t.CPtr] | t.CPtr, ctx: t.CInt) -> t.CInt: pass - def __init__(self: Tuple, pool: memhub.MemManager | t.CPtr, elts: list[AST | t.CPtr] | t.CPtr, ctx: t.CInt) -> t.CInt: pass - def kind(self: Tuple) -> t.CInt: pass - def type_name(self: Tuple) -> str: pass - def dump(self: Tuple, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class Slice(AST): - lower: AST | t.CPtr - upper: AST | t.CPtr - step: AST | t.CPtr - def __new__(self: Slice, pool: memhub.MemManager | t.CPtr, lower: AST | t.CPtr, upper: AST | t.CPtr, step: AST | t.CPtr) -> t.CInt: pass - def __init__(self: Slice, pool: memhub.MemManager | t.CPtr, lower: AST | t.CPtr, upper: AST | t.CPtr, step: AST | t.CPtr) -> t.CInt: pass - def kind(self: Slice) -> t.CInt: pass - def type_name(self: Slice) -> str: pass - def dump(self: Slice, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class NamedExpr(AST): - target: AST | t.CPtr - value: AST | t.CPtr - def __new__(self: NamedExpr, pool: memhub.MemManager | t.CPtr, target: AST | t.CPtr, value: AST | t.CPtr) -> t.CInt: pass - def __init__(self: NamedExpr, pool: memhub.MemManager | t.CPtr, target: AST | t.CPtr, value: AST | t.CPtr) -> t.CInt: pass - def kind(self: NamedExpr) -> t.CInt: pass - def type_name(self: NamedExpr) -> str: pass - def dump(self: NamedExpr, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class OpNode(AST): - op: t.CInt - def __new__(self: OpNode, pool: memhub.MemManager | t.CPtr, op: t.CInt) -> t.CInt: pass - def __init__(self: OpNode, pool: memhub.MemManager | t.CPtr, op: t.CInt) -> t.CInt: pass - def kind(self: OpNode) -> t.CInt: pass - def type_name(self: OpNode) -> str: pass - def dump(self: OpNode, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass \ No newline at end of file diff --git a/.transpyc_cache/48dd999d59d8c008.doc.json b/.transpyc_cache/48dd999d59d8c008.doc.json deleted file mode 100644 index efa98af..0000000 --- a/.transpyc_cache/48dd999d59d8c008.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"get_func_name": "从函数节点提取函数名", "escape_llvm_string": "将字符串转换为 LLVM IR 字符串字面量 c\"...\\00\" ", "get_llvm_type_bits": "获取 LLVM 整数类型的位宽,非整数类型返回 0", "get_llvm_float_bits": "获取 LLVM 浮点类型的位宽,非浮点类型返回 0", "is_ptr_type": "检查 ty 是否是 Ptr 类型,返回 1=是, 0=否", "_deref_if_ptr_ptr": "如果 obj_ptr 是 Ptr(Ptr(...)),load 解引用获取内层指针", "coerce_to_type": "将 val 强制转换为 target_ty\n\n 整数: sext(扩展)/ trunc(截断)\n 浮点: fpext(扩展)/ fptrunc(截断)\n int→float: sitofp\n float→int: fptosi\n ", "create_global_string": "创建全局字符串常量并返回 i8* bitcast", "translate_constant": "翻译常量(int/str/bool)", "translate_value": "翻译值表达式为 LLVM Value", "translate_compare": "翻译比较表达式,返回 i1 结果", "translate_unaryop": "翻译一元运算(-x, +x, not x, ~x)", "translate_boolop": "翻译布尔运算(and/or)的短路求值,返回 i1", "translate_name_value": "翻译变量引用(Name 节点)→ load", "ExprHandle": "表达式处理器:继承 Mixin 获得 Trans 回指针", "ExprHandle.HandleValue": "翻译值表达式,从 self.Trans 获取共享状态", "list_getitem_inline": "内联生成 list __getitem__ 逻辑,返回元素值", "list_setitem_inline": "内联生成 list __setitem__ 逻辑,返回 0", "is_list_subscript": "检查 Subscript 节点是否是 list[T] 类型,返回 list 对象指针或 None", "translate_subscript": "翻译下标表达式,返回加载的元素值", "translate_attribute": "翻译属性访问,返回加载的字段值", "get_subscript_ptr": "获取下标表达式的元素指针(用于赋值 lhs)", "get_attribute_ptr": "获取属性访问的字段指针(用于赋值 lhs)"} \ No newline at end of file diff --git a/.transpyc_cache/48dd999d59d8c008.pyi b/.transpyc_cache/48dd999d59d8c008.pyi deleted file mode 100644 index 4727f86..0000000 --- a/.transpyc_cache/48dd999d59d8c008.pyi +++ /dev/null @@ -1,75 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExpr.py -Module: lib.core.Handles.HandlesExpr -""" - - -import t, c -from stdint import * -import ast -import memhub -import string -import llvmlite -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesExprOps as HandlesExprOps -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.Handles.HandlesNonlocal as HandlesNonlocal -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesEnum as HandlesEnum - -def get_func_name(func_node: ast.AST | t.CPtr) -> str: pass - -def escape_llvm_string(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def get_llvm_type_bits(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def get_llvm_float_bits(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def is_ptr_type(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def _deref_if_ptr_ptr(builder: llvmlite.IRBuilder | t.CPtr, obj_ptr: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def coerce_to_type(builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def create_global_string(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, str_val: str, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_constant(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_value(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_compare(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_unaryop(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_boolop(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_name_value(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -@t.NoVTable -class ExprHandle(HandlesBase.Mixin): - def __init__(self: ExprHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleValue(self: ExprHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def NewExprHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprHandle | t.CPtr: pass - -def list_getitem_inline(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, lm_obj: llvmlite.Value | t.CPtr, idx_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def list_setitem_inline(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, lm_obj: llvmlite.Value | t.CPtr, idx_val: llvmlite.Value | t.CPtr, rhs_val: llvmlite.Value | t.CPtr) -> int: pass - -def is_list_subscript(node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_subscript(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_attribute(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -import stdio - -def get_subscript_ptr(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def get_attribute_ptr(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass diff --git a/.transpyc_cache/48fa8cc758d3826b.doc.json b/.transpyc_cache/48fa8cc758d3826b.doc.json deleted file mode 100644 index ac292ab..0000000 --- a/.transpyc_cache/48fa8cc758d3826b.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"ForHandle": "for 循环语句处理器:继承 Mixin 获得 Trans 回指针", "ForHandle.Handle": "翻译 for i in range(...) 循环语句", "ForHandle._handle_ptr_iter": "指针迭代: for x in ptr: 直到解引用为空"} \ No newline at end of file diff --git a/.transpyc_cache/48fa8cc758d3826b.pyi b/.transpyc_cache/48fa8cc758d3826b.pyi deleted file mode 100644 index 08527b9..0000000 --- a/.transpyc_cache/48fa8cc758d3826b.pyi +++ /dev/null @@ -1,28 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesFor.py -Module: lib.core.Handles.HandlesFor -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesBody as HandlesBody -import lib.core.Handles.HandlesType as HandlesType - -@t.NoVTable -class ForHandle(HandlesBase.Mixin): - def __init__(self: ForHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def Handle(self: ForHandle, node: ast.AST | t.CPtr) -> int: pass - def _handle_ptr_iter(self: ForHandle, for_node: ast.For | t.CPtr, var_name: str) -> int: pass - -def NewForHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ForHandle | t.CPtr: pass diff --git a/.transpyc_cache/494eeec1e4c2f2ec.doc.json b/.transpyc_cache/494eeec1e4c2f2ec.doc.json deleted file mode 100644 index 95e17f3..0000000 --- a/.transpyc_cache/494eeec1e4c2f2ec.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_load_includes_sha1_set": "读取 _sha1_map.txt,将 includes/ 开头的 SHA1 写入 sha1_set\n sha1_set 大小为 MAX_INCLUDES_SHA1 * 17(每个 SHA1 16字符+null)\n 返回找到的 includes SHA1 数量,-1 表示错误", "_is_in_sha1_set": "检查 sha1 是否在集合中", "WriteIncludesSha1Map": "将 includes 扫描结果写入 _sha1_map.txt(供 StubMerger 使用)\n\n 若 filter_set 不为 None 且 filter_count > 0,只写入 filter_set 中的条目。\n ", "_IsFuncDeclaredOrDefined": "检查 out_buf 中是否已有函数的 declare 或 define 行", "_CommentOutDeclareInBuf": "在 out_buf 中搜索 declare 行(包含 func_sig),将其注释掉", "_CommentOutGlobalInBuf": "在 out_buf 中搜索全局变量定义行(以 global_name 开头),将行首改为 ';'", "_CommentOutOpaqueTypeInBuf": "在 out_buf 中搜索 type_name_prefix 对应的 opaque 声明行,将行首改为 ';'\n\n type_name_prefix 格式: '%\"sha1.ClassName\"'(不含 '=' 和后续内容)\n 返回 1=已注释, 0=未找到\n ", "_HasFullTypeDefinition": "检查 out_buf 中是否已有 type_name_prefix 的完整定义", "_LoadAndAppendStub": "加载依赖 stub 并追加(跳过 header,去重)", "_LoadAndAppendTextDeclares": "从依赖 text.ll 提取 declare(define 转 declare),追加到 out_buf", "_PathToModuleName": "将文件路径转换为模块名", "_BuildIncludesSha1Map": "从 _sha1_map.txt 构建 sha1→module_name 映射,返回条目数", "_FindSha1ByModName": "从模块名查找 SHA1(精确匹配)", "_AddSha1ToSet": "将 SHA1 加入集合,返回新 count", "_BuildReachableSha1Set": "构建可达 SHA1 集合(依赖图按需翻译)", "BuildCombinedIR": "组合本地 stub + 依赖 stubs + 本地 text → out_buf(按需加载)"} \ No newline at end of file diff --git a/.transpyc_cache/494eeec1e4c2f2ec.pyi b/.transpyc_cache/494eeec1e4c2f2ec.pyi deleted file mode 100644 index 4466a75..0000000 --- a/.transpyc_cache/494eeec1e4c2f2ec.pyi +++ /dev/null @@ -1,60 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.StubMerger.py -Module: lib.core.StubMerger -""" - - -import t, c -from stdint import * -import memhub -import string -import stdio -import stdlib -import llvmlite -import w32.win32file as win32file -import w32.win32base as win32base -import w32.fileio as fileio -import viperlib -import sys -import ast -import lib.core.IncludesScanner as IncludesScanner -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesTranslator as HandlesTranslator - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -MAX_INCLUDES_SHA1: t.CDefine = 256 -STUB_READ_BUF_SIZE: t.CDefine = 262144 -MAX_INCLUDES: t.CDefine = 256 - -def _load_includes_sha1_set(pool: memhub.MemBuddy | t.CPtr, temp_dir: str, sha1_set: str) -> int: pass - -def _is_in_sha1_set(sha1: str, sha1_set: str, set_count: int) -> int: pass - -def WriteIncludesSha1Map(mb: memhub.MemBuddy | t.CPtr, temp_dir: str, scan_result: IncludesScanner.ScanResult | t.CPtr, filter_set: t.CChar | t.CPtr, filter_count: int) -> int: pass - -def _IsFuncDeclaredOrDefined(out_buf: bytes, func_sig: str) -> int: pass - -def _CommentOutDeclareInBuf(out_buf: bytes, func_sig: str) -> int: pass - -def _CommentOutGlobalInBuf(out_buf: bytes, global_name: str) -> int: pass - -def _CommentOutOpaqueTypeInBuf(out_buf: bytes, type_name_prefix: str) -> int: pass - -def _HasFullTypeDefinition(out_buf: bytes, type_name_prefix: str) -> int: pass - -def _LoadAndAppendStub(temp_dir: str, td_len: t.CSizeT, dep_sha1: str, dep_buf: bytes, out_buf: bytes, out_size: t.CSizeT, out_pos: t.CSizeT) -> t.CSizeT: pass - -def _LoadAndAppendTextDeclares(temp_dir: str, td_len: t.CSizeT, dep_sha1: str, dep_buf: bytes, out_buf: bytes, out_size: t.CSizeT, out_pos: t.CSizeT) -> t.CSizeT: pass - -def _PathToModuleName(path: str) -> str: pass - -def _BuildIncludesSha1Map(temp_dir: str, td_len: t.CSizeT, sha1_list: t.CChar | t.CPtr, mod_list: t.CChar | t.CPtr) -> int: pass - -def _FindSha1ByModName(sha1_arr: t.CChar | t.CPtr, mod_arr: t.CChar | t.CPtr, count: int, mod_name: str) -> str: pass - -def _AddSha1ToSet(set_buf: t.CChar | t.CPtr, count: int, sha1: str) -> int: pass - -def _BuildReachableSha1Set(mb: memhub.MemBuddy | t.CPtr, source_dir: str, temp_dir: str, reachable_set: t.CChar | t.CPtr) -> int: pass - -def BuildCombinedIR(temp_dir: str, local_sha1: str, out_buf: bytes, out_size: t.CSizeT) -> t.CSizeT: pass diff --git a/.transpyc_cache/49cae05490a513cb.doc.json b/.transpyc_cache/49cae05490a513cb.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/49cae05490a513cb.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/49cae05490a513cb.pyi b/.transpyc_cache/49cae05490a513cb.pyi deleted file mode 100644 index e1af96b..0000000 --- a/.transpyc_cache/49cae05490a513cb.pyi +++ /dev/null @@ -1,19 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - -import t -import c - - -import stdio -import stdint -import zc.config as config -import zc.test as test -import zc.logic_test as logic -import zc.class_test as class_test -import testcheck -import test_numpy - -def main() -> stdint.INT: pass diff --git a/.transpyc_cache/49cf633017627a4a.doc.json b/.transpyc_cache/49cf633017627a4a.doc.json deleted file mode 100644 index 3e3ec7a..0000000 --- a/.transpyc_cache/49cf633017627a4a.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"Load_project_config": "加载工程配置文件(project.vpj)\n\n Args:\n path: 配置文件路径\n\n Returns:\n 0 表示成功,非 0 表示失败\n ", "_join_flags_array": "将 JSON 字符串数组拼接成空格分隔的字符串\n\n 用于 linker.flags 和 compiler.flags 数组。\n 用 while + 索引遍历,避免 list 迭代器 bug。\n\n Args:\n flags_val: JsonValue,应为字符串数组\n\n Returns:\n 空格分隔的字符串,或 None 如果 flags_val 为 None 或非数组或空数组\n ", "_join_path": "将相对路径与 project_dir 拼接为绝对路径\n\n - ./App + Test → Test/App\n - ./temp + Test → Test/temp\n - ../includes + Test → Test/../includes(OS 解析为 includes)\n - 绝对路径保持不变\n - None 返回 None\n ", "resolve_paths": "解析并规范化工程路径(src/temp/output/includes)\n\n 将 project.vpj 中的相对路径(以 ./ 开头)转换为基于 project_dir 的路径。\n\n Args:\n project_dir: 工程根目录(project.vpj 所在目录)\n\n Returns:\n 0 表示成功,非 0 表示失败\n ", "get_includes_binary_dir": "获取 includes.binary 目录路径(includes 目录 + .binary 后缀)\n\n includes 目录如 ../includes,则 includes.binary 为 ../includes.binary\n ", "print_config": "打印当前配置(调试用)"} \ No newline at end of file diff --git a/.transpyc_cache/49cf633017627a4a.pyi b/.transpyc_cache/49cf633017627a4a.pyi deleted file mode 100644 index 0ff98b1..0000000 --- a/.transpyc_cache/49cf633017627a4a.pyi +++ /dev/null @@ -1,44 +0,0 @@ -""" -Auto-generated Python stub file from lib.Projectrans.Config.py -Module: lib.Projectrans.Config -""" - - -import t, c -from stdint import * -import memhub -import string -import stdio -import viperlib -from json.__parser import parse as json_parse -from json import JsonValue, JSON_OBJECT, JSON_INT -import w32.fileio as fileio - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -SourceDir: t.CExtern | str -TempDir: t.CExtern | str -OutputDir: t.CExtern | str -ProjectName: t.CExtern | str -ProjectVersion: t.CExtern | str -CompilerCmd: t.CExtern | str -CompilerFlags: t.CExtern | str -LinkerCmd: t.CExtern | str -LinkerFlags: t.CExtern | str -LinkerOutput: t.CExtern | str -TargetTriple: t.CExtern | str -TargetDataLayout: t.CExtern | str -SliceLevel: t.CExtern | t.CInt -StrictMode: t.CExtern | t.CInt -IncludesDir: t.CExtern | str - -def Load_project_config(path: str) -> int: pass - -def _join_flags_array(flags_val: JsonValue | t.CPtr) -> str: pass - -def _join_path(rel: str, project_dir: str) -> str: pass - -def resolve_paths(project_dir: str) -> int: pass - -def get_includes_binary_dir() -> str: pass - -def print_config() -> t.CInt: pass diff --git a/.transpyc_cache/4b639fa48e802b3b.doc.json b/.transpyc_cache/4b639fa48e802b3b.doc.json deleted file mode 100644 index ac292ab..0000000 --- a/.transpyc_cache/4b639fa48e802b3b.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"ForHandle": "for 循环语句处理器:继承 Mixin 获得 Trans 回指针", "ForHandle.Handle": "翻译 for i in range(...) 循环语句", "ForHandle._handle_ptr_iter": "指针迭代: for x in ptr: 直到解引用为空"} \ No newline at end of file diff --git a/.transpyc_cache/4b639fa48e802b3b.pyi b/.transpyc_cache/4b639fa48e802b3b.pyi deleted file mode 100644 index 7a22de4..0000000 --- a/.transpyc_cache/4b639fa48e802b3b.pyi +++ /dev/null @@ -1,29 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesFor.py -Module: lib.core.Handles.HandlesFor -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesBody as HandlesBody -import lib.core.Handles.HandlesType as HandlesType - -@t.NoVTable -class ForHandle(HandlesBase.Mixin): - def __init__(self: ForHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def Handle(self: ForHandle, node: ast.AST | t.CPtr) -> int: pass - def _handle_ptr_iter(self: ForHandle, for_node: ast.For | t.CPtr, var_name: str) -> int: pass - -def NewForHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ForHandle | t.CPtr: pass diff --git a/.transpyc_cache/4ca69b583c572f13.doc.json b/.transpyc_cache/4ca69b583c572f13.doc.json deleted file mode 100644 index 1a7c43a..0000000 --- a/.transpyc_cache/4ca69b583c572f13.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"VarEntry": "变量表条目", "Scope": "作用域节点", "SymbolTable": "嵌套作用域符号表", "init_vars": "分配并清零变量表数组", "find_var": "在变量表中按名称查找", "find_var_entry": "在变量表中按名称查找,返回 VarEntry 或 None", "lookup_var_entry": "从当前作用域逐级向上查找变量,返回 VarEntry 或 None", "set_var_annot_class_name": "设置变量的原始类型注解类名,返回 0=成功 / 1=失败", "add_var": "添加变量到变量表", "get_or_create_var": "查找或创建变量 alloca", "_create_scope": "创建并初始化作用域节点", "init_symbol_table": "创建并初始化符号表,包含模块级根作用域", "enter_scope": "进入新作用域,返回新创建的作用域", "exit_scope": "退出当前作用域,恢复到父作用域", "define_var": "在当前作用域定义变量,返回 0 成功", "define_module_var": "在模块作用域定义变量,返回 0 成功", "lookup_var": "从当前作用域逐级向上查找变量,返回 alloca 或 None", "lookup_current": "仅在当前作用域查找变量", "lookup_module_var": "在模块作用域查找变量", "get_or_create_sym": "查找或创建变量 alloca(在当前作用域)"} \ No newline at end of file diff --git a/.transpyc_cache/4ca69b583c572f13.pyi b/.transpyc_cache/4ca69b583c572f13.pyi deleted file mode 100644 index 266df75..0000000 --- a/.transpyc_cache/4ca69b583c572f13.pyi +++ /dev/null @@ -1,68 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesVar.py -Module: lib.core.Handles.HandlesVar -""" - - -import t, c -from stdint import * -import llvmlite -import memhub -import string - -SCOPE_MODULE: t.CDefine = 0 -SCOPE_FUNCTION: t.CDefine = 1 -SCOPE_BLOCK: t.CDefine = 2 -MAX_VARS: t.CDefine = 256 - -@t.NoVTable -class VarEntry: - Name: str - Alloca: llvmlite.Value | t.CPtr - Used: t.CInt - AnnotClassName: str -@t.NoVTable -class Scope: - Parent: Scope | t.CPtr - Vars: VarEntry | t.CPtr - VarCount: t.CInt - Kind: t.CInt -@t.NoVTable -class SymbolTable: - Pool: memhub.MemBuddy | t.CPtr - Root: Scope | t.CPtr - Current: Scope | t.CPtr - -def init_vars(pool: memhub.MemBuddy | t.CPtr) -> VarEntry | t.CPtr: pass - -def find_var(vars_ptr: VarEntry | t.CPtr, var_count: int, name: str) -> llvmlite.Value | t.CPtr: pass - -def find_var_entry(vars_ptr: VarEntry | t.CPtr, var_count: int, name: str) -> VarEntry | t.CPtr: pass - -def lookup_var_entry(symtab: SymbolTable | t.CPtr, name: str) -> VarEntry | t.CPtr: pass - -def set_var_annot_class_name(symtab: SymbolTable | t.CPtr, name: str, class_name: str) -> int: pass - -def add_var(vars_ptr: VarEntry | t.CPtr, var_count: int, name: str, alloca: llvmlite.Value | t.CPtr) -> int: pass - -def get_or_create_var(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, vars_ptr: VarEntry | t.CPtr, var_count: int, name: str, ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _create_scope(pool: memhub.MemBuddy | t.CPtr, parent: Scope | t.CPtr, kind: int) -> Scope | t.CPtr: pass - -def init_symbol_table(pool: memhub.MemBuddy | t.CPtr) -> SymbolTable | t.CPtr: pass - -def enter_scope(symtab: SymbolTable | t.CPtr, kind: int) -> Scope | t.CPtr: pass - -def exit_scope(symtab: SymbolTable | t.CPtr) -> t.CInt: pass - -def define_var(symtab: SymbolTable | t.CPtr, name: str, alloca: llvmlite.Value | t.CPtr) -> int: pass - -def define_module_var(symtab: SymbolTable | t.CPtr, name: str, alloca: llvmlite.Value | t.CPtr) -> int: pass - -def lookup_var(symtab: SymbolTable | t.CPtr, name: str) -> llvmlite.Value | t.CPtr: pass - -def lookup_current(symtab: SymbolTable | t.CPtr, name: str) -> llvmlite.Value | t.CPtr: pass - -def lookup_module_var(symtab: SymbolTable | t.CPtr, name: str) -> llvmlite.Value | t.CPtr: pass - -def get_or_create_sym(symtab: SymbolTable | t.CPtr, pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, name: str, ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass diff --git a/.transpyc_cache/4dd6b3f1427d1cc5.pyi b/.transpyc_cache/4dd6b3f1427d1cc5.pyi deleted file mode 100644 index dd15aa2..0000000 --- a/.transpyc_cache/4dd6b3f1427d1cc5.pyi +++ /dev/null @@ -1,82 +0,0 @@ -""" -Auto-generated Python stub file from ast.match.py -Module: ast.match -""" - - -import t, c -from stdint import * -import memhub -import string -from .base import AST, ASTKind, _init_ast, _copy_str, _set_parent_list, _emit, _emit_str, _emit_int, _dump_list - -class MatchCase(AST): - pattern: AST | t.CPtr - guard: AST | t.CPtr - def __new__(self: MatchCase, pool: memhub.MemManager | t.CPtr, pattern: AST | t.CPtr, guard: AST | t.CPtr) -> t.CInt: pass - def __init__(self: MatchCase, pool: memhub.MemManager | t.CPtr, pattern: AST | t.CPtr, guard: AST | t.CPtr) -> t.CInt: pass - def kind(self: MatchCase) -> t.CInt: pass - def type_name(self: MatchCase) -> str: pass - def dump(self: MatchCase, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class MatchValue(AST): - value: AST | t.CPtr - def __new__(self: MatchValue, pool: memhub.MemManager | t.CPtr, value: AST | t.CPtr) -> t.CInt: pass - def __init__(self: MatchValue, pool: memhub.MemManager | t.CPtr, value: AST | t.CPtr) -> t.CInt: pass - def kind(self: MatchValue) -> t.CInt: pass - def type_name(self: MatchValue) -> str: pass - def dump(self: MatchValue, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class MatchSingleton(AST): - value: AST | t.CPtr - def __new__(self: MatchSingleton, pool: memhub.MemManager | t.CPtr, value: AST | t.CPtr) -> t.CInt: pass - def __init__(self: MatchSingleton, pool: memhub.MemManager | t.CPtr, value: AST | t.CPtr) -> t.CInt: pass - def kind(self: MatchSingleton) -> t.CInt: pass - def type_name(self: MatchSingleton) -> str: pass - def dump(self: MatchSingleton, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class MatchSequence(AST): - patterns: list[AST | t.CPtr] | t.CPtr - def __new__(self: MatchSequence, pool: memhub.MemManager | t.CPtr, patterns: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def __init__(self: MatchSequence, pool: memhub.MemManager | t.CPtr, patterns: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def kind(self: MatchSequence) -> t.CInt: pass - def type_name(self: MatchSequence) -> str: pass - def dump(self: MatchSequence, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class MatchMapping(AST): - keys: list[AST | t.CPtr] | t.CPtr - patterns: list[AST | t.CPtr] | t.CPtr - rest: str - def __new__(self: MatchMapping, pool: memhub.MemManager | t.CPtr, keys: list[AST | t.CPtr] | t.CPtr, patterns: list[AST | t.CPtr] | t.CPtr, rest: str) -> t.CInt: pass - def __init__(self: MatchMapping, pool: memhub.MemManager | t.CPtr, keys: list[AST | t.CPtr] | t.CPtr, patterns: list[AST | t.CPtr] | t.CPtr, rest: str) -> t.CInt: pass - def kind(self: MatchMapping) -> t.CInt: pass - def type_name(self: MatchMapping) -> str: pass - def dump(self: MatchMapping, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class MatchClass(AST): - cls: AST | t.CPtr - patterns: list[AST | t.CPtr] | t.CPtr - kwd_attrs: list[AST | t.CPtr] | t.CPtr - kwd_patterns: list[AST | t.CPtr] | t.CPtr - def __new__(self: MatchClass, pool: memhub.MemManager | t.CPtr, cls: AST | t.CPtr, patterns: list[AST | t.CPtr] | t.CPtr, kwd_attrs: list[AST | t.CPtr] | t.CPtr, kwd_patterns: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def __init__(self: MatchClass, pool: memhub.MemManager | t.CPtr, cls: AST | t.CPtr, patterns: list[AST | t.CPtr] | t.CPtr, kwd_attrs: list[AST | t.CPtr] | t.CPtr, kwd_patterns: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def kind(self: MatchClass) -> t.CInt: pass - def type_name(self: MatchClass) -> str: pass - def dump(self: MatchClass, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class MatchStar(AST): - name: str - def __new__(self: MatchStar, pool: memhub.MemManager | t.CPtr, name: str) -> t.CInt: pass - def __init__(self: MatchStar, pool: memhub.MemManager | t.CPtr, name: str) -> t.CInt: pass - def kind(self: MatchStar) -> t.CInt: pass - def type_name(self: MatchStar) -> str: pass - def dump(self: MatchStar, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class MatchAs(AST): - pattern: AST | t.CPtr - name: str - def __new__(self: MatchAs, pool: memhub.MemManager | t.CPtr, pattern: AST | t.CPtr, name: str) -> t.CInt: pass - def __init__(self: MatchAs, pool: memhub.MemManager | t.CPtr, pattern: AST | t.CPtr, name: str) -> t.CInt: pass - def kind(self: MatchAs) -> t.CInt: pass - def type_name(self: MatchAs) -> str: pass - def dump(self: MatchAs, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class MatchOr(AST): - patterns: list[AST | t.CPtr] | t.CPtr - def __new__(self: MatchOr, pool: memhub.MemManager | t.CPtr, patterns: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def __init__(self: MatchOr, pool: memhub.MemManager | t.CPtr, patterns: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def kind(self: MatchOr) -> t.CInt: pass - def type_name(self: MatchOr) -> str: pass - def dump(self: MatchOr, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass \ No newline at end of file diff --git a/.transpyc_cache/4ebd3745aa9cf570.doc.json b/.transpyc_cache/4ebd3745aa9cf570.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/4ebd3745aa9cf570.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/4ed910ba727b5e92.doc.json b/.transpyc_cache/4ed910ba727b5e92.doc.json deleted file mode 100644 index c00e036..0000000 --- a/.transpyc_cache/4ed910ba727b5e92.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数\n\n 直接接收三个 Value 参数,避免通过 Next 链表遍历(共享 alloca 对象的\n Next 字段可能被其他操作污染,导致链表断裂)。\n ", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/4ed910ba727b5e92.pyi b/.transpyc_cache/4ed910ba727b5e92.pyi deleted file mode 100644 index 40c3168..0000000 --- a/.transpyc_cache/4ed910ba727b5e92.pyi +++ /dev/null @@ -1,171 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, dst_val: llvmlite.Value | t.CPtr, src_val: llvmlite.Value | t.CPtr, num_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/4ee832f9cf4db211.doc.json b/.transpyc_cache/4ee832f9cf4db211.doc.json deleted file mode 100644 index dda4745..0000000 --- a/.transpyc_cache/4ee832f9cf4db211.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"get_func_name": "从函数节点提取函数名", "escape_llvm_string": "将字符串转换为 LLVM IR 字符串字面量 c\"...\\00\" ", "get_llvm_type_bits": "获取 LLVM 整数类型的位宽,非整数类型返回 0", "get_llvm_float_bits": "获取 LLVM 浮点类型的位宽,非浮点类型返回 0", "is_ptr_type": "检查 ty 是否是 Ptr 类型,返回 1=是, 0=否", "_deref_if_ptr_ptr": "如果 obj_ptr 是 Ptr(Ptr(...)),load 解引用获取内层指针", "coerce_to_type": "将 val 强制转换为 target_ty\n\n 整数: sext(扩展)/ trunc(截断)\n 浮点: fpext(扩展)/ fptrunc(截断)\n int→float: sitofp\n float→int: fptosi\n ", "create_global_string": "创建全局字符串常量并返回 i8* bitcast", "translate_constant": "翻译常量(int/str/bool)", "_infer_elem_type_from_value": "从 LLVM Value 的类型推断 list 元素类型名", "_find_pool_var": "查找上下文中的 pool 变量,返回 alloca 或 None", "translate_list_literal": "翻译 list 字面量 [a, b, c] → list[T](pool) + append 序列", "translate_value": "翻译值表达式为 LLVM Value", "translate_compare": "翻译比较表达式,返回 i1 结果", "translate_unaryop": "翻译一元运算(-x, +x, not x, ~x)", "translate_boolop": "翻译布尔运算(and/or)的短路求值,返回 i1", "translate_name_value": "翻译变量引用(Name 节点)→ load", "ExprHandle": "表达式处理器:继承 Mixin 获得 Trans 回指针", "ExprHandle.HandleValue": "翻译值表达式,从 self.Trans 获取共享状态", "list_getitem_inline": "内联生成 list __getitem__ 逻辑,返回元素地址 (i8*)", "_list_elem_type_from_name": "从 list 类型名提取元素 LLVM 类型", "list_setitem_inline": "内联生成 list __setitem__ 逻辑,返回 0", "is_list_subscript": "检查 Subscript 节点是否是 list[T] 类型,返回 list 对象指针或 None", "translate_subscript": "翻译下标表达式,返回加载的元素值", "translate_attribute": "翻译属性访问,返回加载的字段值", "get_subscript_ptr": "获取下标表达式的元素指针(用于赋值 lhs)", "get_attribute_ptr": "获取属性访问的字段指针(用于赋值 lhs)"} \ No newline at end of file diff --git a/.transpyc_cache/4ee832f9cf4db211.pyi b/.transpyc_cache/4ee832f9cf4db211.pyi deleted file mode 100644 index 60fab85..0000000 --- a/.transpyc_cache/4ee832f9cf4db211.pyi +++ /dev/null @@ -1,81 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExpr.py -Module: lib.core.Handles.HandlesExpr -""" - - -import t, c -from stdint import * -import ast -import memhub -import string -import llvmlite -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesExprOps as HandlesExprOps -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.Handles.HandlesNonlocal as HandlesNonlocal -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesEnum as HandlesEnum -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -def get_func_name(func_node: ast.AST | t.CPtr) -> str: pass - -def escape_llvm_string(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def get_llvm_type_bits(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def get_llvm_float_bits(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def is_ptr_type(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def _deref_if_ptr_ptr(builder: llvmlite.IRBuilder | t.CPtr, obj_ptr: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def coerce_to_type(builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def create_global_string(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, str_val: str, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_constant(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_elem_type_from_value(pool: memhub.MemBuddy | t.CPtr, value: llvmlite.Value | t.CPtr) -> str: pass - -def _find_pool_var(trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_list_literal(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, elem_type_name: str, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_value(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_compare(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_unaryop(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_boolop(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_name_value(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -@t.NoVTable -class ExprHandle(HandlesBase.Mixin): - def __init__(self: ExprHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleValue(self: ExprHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def NewExprHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprHandle | t.CPtr: pass - -def list_getitem_inline(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, lm_obj: llvmlite.Value | t.CPtr, idx_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _list_elem_type_from_name(pool: memhub.MemBuddy | t.CPtr, struct_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def list_setitem_inline(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, lm_obj: llvmlite.Value | t.CPtr, idx_val: llvmlite.Value | t.CPtr, rhs_val: llvmlite.Value | t.CPtr) -> int: pass - -def is_list_subscript(node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_subscript(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_attribute(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def get_subscript_ptr(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def get_attribute_ptr(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass diff --git a/.transpyc_cache/4f90956b289db68b.doc.json b/.transpyc_cache/4f90956b289db68b.doc.json deleted file mode 100644 index 724daa6..0000000 --- a/.transpyc_cache/4f90956b289db68b.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到\n\n allow_star_fallback: 传 0 禁用 star import 回退(用于明确模块名/函数名查找)\n ", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_get_external_func_param_ty": "获取外部函数第 param_idx 个参数的期望类型,None 表示用字面量原类型\n\n 对 Win32 API 函数的所有非指针参数返回 i64,匹配 declare 中\n ULONG/SIZE_T 被统一翻译为 i64 的情况。\n ", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数\n\n 直接接收三个 Value 参数,避免通过 Next 链表遍历(共享 alloca 对象的\n Next 字段可能被其他操作污染,导致链表断裂)。\n ", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/4f90956b289db68b.pyi b/.transpyc_cache/4f90956b289db68b.pyi deleted file mode 100644 index 065139b..0000000 --- a/.transpyc_cache/4f90956b289db68b.pyi +++ /dev/null @@ -1,173 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str, allow_star_fallback: int) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _get_external_func_param_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str, param_idx: int) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, dst_val: llvmlite.Value | t.CPtr, src_val: llvmlite.Value | t.CPtr, num_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/4fb8940ff5ab1022.doc.json b/.transpyc_cache/4fb8940ff5ab1022.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/4fb8940ff5ab1022.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/4fb8940ff5ab1022.pyi b/.transpyc_cache/4fb8940ff5ab1022.pyi deleted file mode 100644 index 1f24963..0000000 --- a/.transpyc_cache/4fb8940ff5ab1022.pyi +++ /dev/null @@ -1,34 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - - -from stdint import * -import w32.win32console -import t, c -import testcheck - -def add_inline(a: t.CInt, b: t.CInt) -> t.CDefine: - return a + b - -def mul_inline(a: t.CInt, b: t.CInt) -> t.CDefine: - return a * b - - -class AppError(Exception): - pass -class DiskError(AppError): - pass -class NetworkError(AppError): - pass -class TimeoutError(NetworkError): - pass - -def raise_disk() -> t.CInt: pass - -def raise_network() -> t.CInt: pass - -def raise_timeout() -> t.CInt: pass - -def main() -> t.CInt | t.CExport: pass diff --git a/.transpyc_cache/51f0144d6e8188d9.doc.json b/.transpyc_cache/51f0144d6e8188d9.doc.json deleted file mode 100644 index a63fb44..0000000 --- a/.transpyc_cache/51f0144d6e8188d9.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"WhileHandle": "while 循环语句处理器:继承 Mixin 获得 Trans 回指针", "WhileHandle.Handle": "翻译 while 循环语句"} \ No newline at end of file diff --git a/.transpyc_cache/51f0144d6e8188d9.pyi b/.transpyc_cache/51f0144d6e8188d9.pyi deleted file mode 100644 index eb71aad..0000000 --- a/.transpyc_cache/51f0144d6e8188d9.pyi +++ /dev/null @@ -1,25 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesWhile.py -Module: lib.core.Handles.HandlesWhile -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesBody as HandlesBody - -@t.NoVTable -class WhileHandle(HandlesBase.Mixin): - def __init__(self: WhileHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def Handle(self: WhileHandle, node: ast.AST | t.CPtr) -> int: pass - -def NewWhileHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> WhileHandle | t.CPtr: pass diff --git a/.transpyc_cache/52e6b51da061882f.doc.json b/.transpyc_cache/52e6b51da061882f.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/52e6b51da061882f.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/52e6b51da061882f.pyi b/.transpyc_cache/52e6b51da061882f.pyi deleted file mode 100644 index edc39b5..0000000 --- a/.transpyc_cache/52e6b51da061882f.pyi +++ /dev/null @@ -1,43 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - -import c - - -import t -import stdio -import testcheck - -g_val: t.CExtern | t.CInt - -def outer_modify_global() -> t.CInt: pass - -def test_global_in_nested() -> t.CInt: pass - -def test_nonlocal_multi_level() -> t.CInt: pass - - -g_mixed: t.CExtern | t.CInt - -def test_global_nonlocal_mixed() -> t.CInt: pass - -def test_lambda_multi_capture() -> t.CInt: pass - -def test_lambda_arg_capture() -> t.CInt: pass - -def test_nested_return() -> t.CInt: pass - -def test_nonlocal_loop() -> t.CInt: pass - - -g_arr: t.CExtern | t.CArray[t.CInt, 4] - -def test_global_array() -> t.CInt: pass - -def test_nested_conditional() -> t.CInt: pass - -def test_lambda_chain() -> t.CInt: pass - -def main() -> t.CInt: pass diff --git a/.transpyc_cache/54014f6c53e9640b.doc.json b/.transpyc_cache/54014f6c53e9640b.doc.json deleted file mode 100644 index ca04595..0000000 --- a/.transpyc_cache/54014f6c53e9640b.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"reset_visible_structs": "重置可见性状态(每个文件翻译前调用)\n\n pool: 内存分配器(严格模式下创建 HashTable)\n strict: 1=严格模式(用户文件),0=宽松模式(includes 文件)\n ", "add_visible_struct": "添加可见结构体名(类定义时和 from-import 时调用)", "is_struct_visible": "检查结构体是否可见,返回 1=可见 / 0=不可见", "init_struct_table": "初始化结构体注册表,返回 1 成功", "_get_struct_entry": "获取第 i 个结构体条目", "_get_field_entry": "获取结构体中第 i 个字段条目", "register_struct": "注册结构体类型,返回 StructEntry 指针\n\n 用类型指针去重(is 比较),不用类名去重。\n 这样跨模块同名类可以共存,各自有独立的字段定义。\n sha1 参数在注册时直接设置 ModuleSha1(避免 set_struct_sha1 找错 entry)。\n ", "set_struct_sha1": "设置结构体所属模块的 SHA1,返回 1=成功 / 0=失败", "get_struct_sha1": "获取结构体所属模块的 SHA1,返回 None=无 SHA1", "add_field": "向结构体添加字段,返回字段索引(-1 失败)\n\n default_val: 字段默认值 AST 节点(可选,None=无默认值)\n annot_class_name: 原始类型注解的类名(可选,用于联合类型字段的方法调用解析)\n ", "find_struct": "按类名查找结构体,返回 StructEntry 或 None", "find_struct_by_module": "按类名 + SHA1 查找结构体,返回 StructEntry 或 None\n\n SHA1 非 None 时:精确匹配 name+sha1,未找到返回 None(不回退,避免跨模块同名找错)\n SHA1 为 None 时:回退到 find_struct(name) 按类名查找第一个\n ", "find_struct_by_type": "按类型指针查找结构体(is 比较),返回 StructEntry 或 None", "lookup_field": "按结构体类型和字段名查找字段信息\n\n 两遍查找策略(跨模块同名类冲突的根本修复):\n 第一遍: 类型指针 is 身份比较(最高优先级,类型唯一确定 entry)\n 第二遍: 名称回退(is 未匹配时,按类名/strstr 匹配,字段未找到时 continue)\n ", "lookup_field_by_class": "按类名和字段名查找字段信息\n\n 优先用 SHA1 匹配(跨模块同名类区分),无 SHA1 时按类名查找第一个\n ", "get_struct_type": "按类名获取结构体的 LLVM 类型", "get_field_by_index": "按类名和字段索引获取字段信息", "struct_has_defaults": "检查结构体是否有任何带默认值的字段,返回 1=有 / 0=无", "_is_struct_type": "检查 ty 是否是 Struct 类型(独立函数,规避嵌套 match 编译器 BUG)", "get_struct_type_from_value": "从 Value 的类型推断结构体类型", "mark_as_union": "标记已注册的结构体为联合体,返回 1=成功 / 0=失败", "is_union_by_name": "按类名检查是否为联合体,返回 1=是 / 0=否", "is_union_by_type": "按类型指针检查是否为联合体,返回 1=是 / 0=否\n\n 先尝试类型指针 == 比较,失败时回退到名称匹配\n ", "mark_as_oop": "标记已注册的结构体为 OOP,返回 1=成功 / 0=失败", "is_oop_by_name": "按类名检查是否为 OOP 结构体,返回 1=是 / 0=否", "mark_has_init": "标记结构体拥有 __init__ 方法,返回 1=成功 / 0=失败", "has_init_by_name": "按类名检查是否有 __init__ 方法,返回 1=有 / 0=无", "mark_has_new": "标记结构体拥有 __new__ 方法,返回 1=成功 / 0=失败", "has_new_by_name": "按类名检查是否有 __new__ 方法,返回 1=有 / 0=无", "get_class_name_by_type": "按类型指针查找类名,返回类名字符串或 None", "_extract_struct_name": "从 LLVMType 提取 Struct 变体的 Name 字段,返回 None 非 Struct", "mark_has_vtable": "标记结构体拥有虚表,返回 1=成功 / 0=失败", "has_vtable_by_name": "按类名检查是否有虚表,返回 1=有 / 0=无", "mark_novtable": "标记结构体为 NoVTable,返回 1=成功 / 0=失败", "is_novtable_by_name": "按类名检查是否为 NoVTable,返回 1=是 / 0=否", "set_parent_name": "设置结构体的父类名,返回 1=成功 / 0=失败", "get_parent_name": "获取结构体的父类名,返回 None=无父类", "set_vtable_methods": "设置虚表方法名数组,返回 1=成功 / 0=失败", "get_vtable_method_index": "获取方法在虚表中的索引,返回 -1=未找到", "get_vtable_method_count": "获取虚表方法数量", "get_vtable_method_name": "获取虚表中第 idx 个方法名,返回 None=越界", "get_field_count": "获取结构体字段数量,返回 -1=未找到", "get_field_name_ptr": "获取 FieldEntry 的字段名,返回 None=未设置", "get_field_type_ptr": "获取 FieldEntry 的字段类型,返回 None=未设置", "get_field_default_ptr": "获取 FieldEntry 的默认值 AST 节点,返回 None=无默认值", "get_field_annot_class_name": "获取 FieldEntry 的原始类型注解类名,返回 None=未设置"} \ No newline at end of file diff --git a/.transpyc_cache/54014f6c53e9640b.pyi b/.transpyc_cache/54014f6c53e9640b.pyi deleted file mode 100644 index 9662312..0000000 --- a/.transpyc_cache/54014f6c53e9640b.pyi +++ /dev/null @@ -1,139 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesStruct.py -Module: lib.core.Handles.HandlesStruct -""" - - -import t, c -from stdint import * -import memhub -import string -import llvmlite -import stdio -import ast -import hashtable - -STRUCT_MAX: t.CDefine = 512 -FIELD_MAX: t.CDefine = 32 -FIELD_NAME_MAX: t.CDefine = 64 - -@t.NoVTable -class FieldEntry: - Name: t.CChar | t.CPtr - Index: int - Ty: llvmlite.LLVMType | t.CPtr - DefaultVal: ast.AST | t.CPtr - AnnotClassName: t.CChar | t.CPtr -@t.NoVTable -class StructEntry: - Name: t.CChar | t.CPtr - Ty: llvmlite.LLVMType | t.CPtr - FieldCount: int - Fields: FieldEntry | t.CPtr - IsUnion: int - IsOOP: int - HasInit: int - HasNew: int - HasVTable: int - IsNoVTable: int - ParentName: t.CChar | t.CPtr - VTableMethodCount: int - VTableMethods: t.CChar | t.CPtr - ModuleSha1: t.CChar | t.CPtr - -_struct_table: t.CExtern | StructEntry | t.CPtr -_struct_count: t.CExtern | int -_visible_structs: t.CExtern | hashtable.HashTable | t.CPtr -_strict_visibility: t.CExtern | int - -def reset_visible_structs(pool: memhub.MemBuddy | t.CPtr, strict: int) -> t.CInt: pass - -def add_visible_struct(pool: memhub.MemBuddy | t.CPtr, name: str) -> t.CInt: pass - -def is_struct_visible(name: str) -> int: pass - -def init_struct_table(pool: memhub.MemBuddy | t.CPtr) -> int: pass - -def _get_struct_entry(i: int) -> StructEntry | t.CPtr: pass - -def _get_field_entry(struct_entry: StructEntry | t.CPtr, i: int) -> FieldEntry | t.CPtr: pass - -def register_struct(pool: memhub.MemBuddy | t.CPtr, name: str, struct_ty: llvmlite.LLVMType | t.CPtr, sha1: str) -> StructEntry | t.CPtr: pass - -def set_struct_sha1(pool: memhub.MemBuddy | t.CPtr, class_name: str, sha1: str) -> int: pass - -def get_struct_sha1(class_name: str) -> str: pass - -def add_field(pool: memhub.MemBuddy | t.CPtr, struct_entry: StructEntry | t.CPtr, field_name: str, field_ty: llvmlite.LLVMType | t.CPtr, default_val: ast.AST | t.CPtr, annot_class_name: t.CChar | t.CPtr) -> int: pass - -def find_struct(name: str) -> StructEntry | t.CPtr: pass - -def find_struct_by_module(name: str, sha1: str) -> StructEntry | t.CPtr: pass - -def find_struct_by_type(struct_ty: llvmlite.LLVMType | t.CPtr) -> StructEntry | t.CPtr: pass - -def lookup_field(struct_ty: llvmlite.LLVMType | t.CPtr, field_name: str) -> FieldEntry | t.CPtr: pass - -def lookup_field_by_class(class_name: str, field_name: str, sha1: str) -> FieldEntry | t.CPtr: pass - -def get_struct_type(class_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def get_field_by_index(class_name: str, idx: int) -> FieldEntry | t.CPtr: pass - -def struct_has_defaults(class_name: str) -> int: pass - -def _is_struct_type(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def get_struct_type_from_value(val: llvmlite.Value | t.CPtr) -> llvmlite.LLVMType | t.CPtr: pass - -def mark_as_union(name: str) -> int: pass - -def is_union_by_name(name: str) -> int: pass - -def is_union_by_type(struct_ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def mark_as_oop(name: str) -> int: pass - -def is_oop_by_name(name: str) -> int: pass - -def mark_has_init(name: str) -> int: pass - -def has_init_by_name(name: str) -> int: pass - -def mark_has_new(name: str) -> int: pass - -def has_new_by_name(name: str) -> int: pass - -def get_class_name_by_type(pool: memhub.MemBuddy | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr) -> str: pass - -def _extract_struct_name(ty: llvmlite.LLVMType | t.CPtr) -> str: pass - -def mark_has_vtable(name: str) -> int: pass - -def has_vtable_by_name(name: str) -> int: pass - -def mark_novtable(name: str) -> int: pass - -def is_novtable_by_name(name: str) -> int: pass - -def set_parent_name(name: str, parent_name: str) -> int: pass - -def get_parent_name(name: str) -> str: pass - -def set_vtable_methods(name: str, methods: t.CChar | t.CPtr, count: int) -> int: pass - -def get_vtable_method_index(name: str, method_name: str) -> int: pass - -def get_vtable_method_count(name: str) -> int: pass - -def get_vtable_method_name(name: str, idx: int) -> str: pass - -def get_field_count(name: str) -> int: pass - -def get_field_name_ptr(fe: FieldEntry | t.CPtr) -> str: pass - -def get_field_type_ptr(fe: FieldEntry | t.CPtr) -> llvmlite.LLVMType | t.CPtr: pass - -def get_field_default_ptr(fe: FieldEntry | t.CPtr) -> ast.AST | t.CPtr: pass - -def get_field_annot_class_name(fe: FieldEntry | t.CPtr) -> str: pass diff --git a/.transpyc_cache/541a090dde0cc1ba.doc.json b/.transpyc_cache/541a090dde0cc1ba.doc.json deleted file mode 100644 index 42f2fd1..0000000 --- a/.transpyc_cache/541a090dde0cc1ba.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"AugAssignHandle": "增强赋值处理器 (+=, -=, *=, etc.):继承 Mixin 获得 Trans 回指针", "AugAssignHandle.Handle": "翻译增强赋值语句 (x += 1, y -= 2, etc.)", "_apply_aug_op": "应用增强赋值的二元运算(指针算术 + 整数运算)"} \ No newline at end of file diff --git a/.transpyc_cache/541a090dde0cc1ba.pyi b/.transpyc_cache/541a090dde0cc1ba.pyi deleted file mode 100644 index ee3342d..0000000 --- a/.transpyc_cache/541a090dde0cc1ba.pyi +++ /dev/null @@ -1,27 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesAugAssign.py -Module: lib.core.Handles.HandlesAugAssign -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import stdio -import string -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesNonlocal as HandlesNonlocal - -@t.NoVTable -class AugAssignHandle(HandlesBase.Mixin): - def __init__(self: AugAssignHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def Handle(self: AugAssignHandle, node: ast.AST | t.CPtr) -> int: pass - -def _apply_aug_op(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, op: int, lhs: llvmlite.Value | t.CPtr, rhs: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def NewAugAssignHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> AugAssignHandle | t.CPtr: pass diff --git a/.transpyc_cache/541a1ed9b8be53c8.doc.json b/.transpyc_cache/541a1ed9b8be53c8.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/541a1ed9b8be53c8.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/541a1ed9b8be53c8.pyi b/.transpyc_cache/541a1ed9b8be53c8.pyi deleted file mode 100644 index a98f466..0000000 --- a/.transpyc_cache/541a1ed9b8be53c8.pyi +++ /dev/null @@ -1,16 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - - -from stdint import * -import w32.win32console -import config -import hashlib -import binascii -import zlib.pyzlib as zp -import t, c -import testcheck - -def main() -> t.CInt | t.CExport: pass diff --git a/.transpyc_cache/542aabc6fb546c35.doc.json b/.transpyc_cache/542aabc6fb546c35.doc.json deleted file mode 100644 index 67e7a8b..0000000 --- a/.transpyc_cache/542aabc6fb546c35.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_DiagAppend": "追加诊断信息到 diag.txt(追加模式,不依赖 printf 缓冲)", "TranslateFileGetTrans": "翻译文件,返回 Translator 对象(调用者负责 dump_ir),None 失败", "ensure_dir": "递归创建目录(类似 mkdir -p),目录已存在视为成功\n\n Args:\n path: 目录路径(支持 / 或 \\ 分隔符)\n\n Returns:\n 0 成功(包括目录已存在),非 0 失败\n ", "write_ir_to_file": "将 IR 缓冲区写入 .ll 文件\n\n Args:\n ir_buf: IR 文本缓冲区\n ir_len: IR 文本长度\n output_dir: 输出目录(temp 或 output)\n module_name: 模块名(如 \"main\")\n\n Returns:\n 0 成功,非 0 失败\n ", "compile_ll_to_obj": "调用 llc 将 .ll 编译为 .obj\n\n Args:\n ir_path: .ll 文件路径\n output_dir: 输出目录\n module_name: 模块名(用于生成 .obj 文件名)\n cc_cmd: 编译器命令(如 \"llc\")\n cc_flags: 编译器参数(如 \"-filetype=obj -relocation-model=pic\")\n\n Returns:\n 0 成功,非 0 失败\n ", "collect_obj_files": "扫描 includes_binary_dir 目录,收集所有 .obj 文件路径到 out_buf\n\n Args:\n includes_binary_dir: includes.binary 目录路径\n out_buf: 输出缓冲区(用于存放空格分隔的 .obj 文件路径)\n out_size: 输出缓冲区大小\n\n Returns:\n 写入的字节数(不含 null 终止符),0 表示无文件或错误\n ", "link_obj_to_exe": "调用 clang++ 链接 .obj 为 .exe\n\n Args:\n output_dir: 输出目录(包含 .obj 文件)\n module_name: 模块名\n linker_cmd: 链接器命令(如 \"clang++\")\n linker_flags: 链接器参数\n linker_output: 输出文件名(如 \"test.exe\")\n includes_binary_dir: includes.binary 目录路径(链接时附加预编译 .obj)\n\n Returns:\n 0 成功,非 0 失败\n ", "compile_module_to_obj": "编译 IR 到 .obj(不链接)\n\n Args:\n ir_buf: LLVM IR 文本缓冲区\n ir_len: IR 文本长度\n temp_dir: 临时目录\n output_dir: 输出目录\n module_name: 模块名(SHA1)\n cc_cmd: 编译器命令\n cc_flags: 编译器参数\n\n Returns:\n 0 成功,非 0 失败\n ", "link_objs_to_exe": "链接多个 .obj 文件为 .exe\n\n Args:\n obj_paths: 空格分隔的 .obj 文件完整路径字符串\n obj_paths_len: obj_paths 长度\n linker_cmd: 链接器命令(如 \"clang++\")\n linker_flags: 链接器参数\n linker_output: 输出文件完整路径\n includes_binary_dir: includes.binary 目录路径(链接时附加预编译 .obj)\n\n Returns:\n 0 成功,非 0 失败\n ", "run_pipeline": "执行完整编译管线\n\n Args:\n ir_buf: LLVM IR 文本缓冲区\n ir_len: IR 文本长度\n temp_dir: 临时目录\n output_dir: 输出目录\n module_name: 模块名\n cc_cmd: 编译器命令\n cc_flags: 编译器参数\n linker_cmd: 链接器命令\n linker_flags: 链接器参数\n linker_output: 输出文件名\n includes_binary_dir: includes.binary 目录路径(链接时附加预编译 .obj)\n\n Returns:\n BuildResult 对象\n "} \ No newline at end of file diff --git a/.transpyc_cache/542aabc6fb546c35.pyi b/.transpyc_cache/542aabc6fb546c35.pyi deleted file mode 100644 index 9d8b33e..0000000 --- a/.transpyc_cache/542aabc6fb546c35.pyi +++ /dev/null @@ -1,52 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.BuildPipeline.py -Module: lib.core.BuildPipeline -""" - - -import t, c -from stdint import * -import stdio -import string -import stdlib -import memhub -import w32.fileio as fileio -import w32.win32file -import w32.win32base -import subprocess -import viperlib -import ast -import lib.core.Handles.HandlesTranslator as HandlesTranslator -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesType as HandlesType - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -SRC_BUF_SIZE: t.CDefine = 1048576 - -def _DiagAppend(msg: bytes) -> t.CInt: pass - -def TranslateFileGetTrans(mb: memhub.MemBuddy | t.CPtr, file_path: str, sha1_val: str) -> HandlesTranslator.Translator | t.CPtr: pass - - -class BuildResult: - Success: t.CInt - OutputPath: str - ErrorMsg: str - def __new__(self: BuildResult) -> t.CPtr: pass - def __init__(self: BuildResult) -> t.CInt: pass - -def ensure_dir(path: str) -> int: pass - -def write_ir_to_file(ir_buf: bytes, ir_len: t.CSizeT, output_dir: str, module_name: str) -> int: pass - -def compile_ll_to_obj(ir_path: str, output_dir: str, module_name: str, cc_cmd: str, cc_flags: str) -> int: pass - -def collect_obj_files(includes_binary_dir: str, out_buf: bytes, out_size: t.CSizeT) -> t.CSizeT: pass - -def link_obj_to_exe(output_dir: str, module_name: str, linker_cmd: str, linker_flags: str, linker_output: str, includes_binary_dir: str) -> int: pass - -def compile_module_to_obj(ir_buf: bytes, ir_len: t.CSizeT, temp_dir: str, output_dir: str, module_name: str, cc_cmd: str, cc_flags: str) -> int: pass - -def link_objs_to_exe(obj_paths: str, obj_paths_len: t.CSizeT, linker_cmd: str, linker_flags: str, linker_output: str, includes_binary_dir: str) -> int: pass - -def run_pipeline(ir_buf: bytes, ir_len: t.CSizeT, temp_dir: str, output_dir: str, module_name: str, cc_cmd: str, cc_flags: str, linker_cmd: str, linker_flags: str, linker_output: str, includes_binary_dir: str) -> BuildResult | t.CPtr: pass diff --git a/.transpyc_cache/55cbbb5dec4fef2c.doc.json b/.transpyc_cache/55cbbb5dec4fef2c.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/55cbbb5dec4fef2c.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/55cbbb5dec4fef2c.pyi b/.transpyc_cache/55cbbb5dec4fef2c.pyi deleted file mode 100644 index 49538f9..0000000 --- a/.transpyc_cache/55cbbb5dec4fef2c.pyi +++ /dev/null @@ -1,10 +0,0 @@ -""" -Auto-generated Python stub file from type_bit_test.py -Module: type_bit_test -""" - - -import stdio -import t, c - -def type_bit_test() -> int: pass diff --git a/.transpyc_cache/570919ef3f7c03ad.doc.json b/.transpyc_cache/570919ef3f7c03ad.doc.json deleted file mode 100644 index 95e17f3..0000000 --- a/.transpyc_cache/570919ef3f7c03ad.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_load_includes_sha1_set": "读取 _sha1_map.txt,将 includes/ 开头的 SHA1 写入 sha1_set\n sha1_set 大小为 MAX_INCLUDES_SHA1 * 17(每个 SHA1 16字符+null)\n 返回找到的 includes SHA1 数量,-1 表示错误", "_is_in_sha1_set": "检查 sha1 是否在集合中", "WriteIncludesSha1Map": "将 includes 扫描结果写入 _sha1_map.txt(供 StubMerger 使用)\n\n 若 filter_set 不为 None 且 filter_count > 0,只写入 filter_set 中的条目。\n ", "_IsFuncDeclaredOrDefined": "检查 out_buf 中是否已有函数的 declare 或 define 行", "_CommentOutDeclareInBuf": "在 out_buf 中搜索 declare 行(包含 func_sig),将其注释掉", "_CommentOutGlobalInBuf": "在 out_buf 中搜索全局变量定义行(以 global_name 开头),将行首改为 ';'", "_CommentOutOpaqueTypeInBuf": "在 out_buf 中搜索 type_name_prefix 对应的 opaque 声明行,将行首改为 ';'\n\n type_name_prefix 格式: '%\"sha1.ClassName\"'(不含 '=' 和后续内容)\n 返回 1=已注释, 0=未找到\n ", "_HasFullTypeDefinition": "检查 out_buf 中是否已有 type_name_prefix 的完整定义", "_LoadAndAppendStub": "加载依赖 stub 并追加(跳过 header,去重)", "_LoadAndAppendTextDeclares": "从依赖 text.ll 提取 declare(define 转 declare),追加到 out_buf", "_PathToModuleName": "将文件路径转换为模块名", "_BuildIncludesSha1Map": "从 _sha1_map.txt 构建 sha1→module_name 映射,返回条目数", "_FindSha1ByModName": "从模块名查找 SHA1(精确匹配)", "_AddSha1ToSet": "将 SHA1 加入集合,返回新 count", "_BuildReachableSha1Set": "构建可达 SHA1 集合(依赖图按需翻译)", "BuildCombinedIR": "组合本地 stub + 依赖 stubs + 本地 text → out_buf(按需加载)"} \ No newline at end of file diff --git a/.transpyc_cache/570919ef3f7c03ad.pyi b/.transpyc_cache/570919ef3f7c03ad.pyi deleted file mode 100644 index 4466a75..0000000 --- a/.transpyc_cache/570919ef3f7c03ad.pyi +++ /dev/null @@ -1,60 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.StubMerger.py -Module: lib.core.StubMerger -""" - - -import t, c -from stdint import * -import memhub -import string -import stdio -import stdlib -import llvmlite -import w32.win32file as win32file -import w32.win32base as win32base -import w32.fileio as fileio -import viperlib -import sys -import ast -import lib.core.IncludesScanner as IncludesScanner -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesTranslator as HandlesTranslator - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -MAX_INCLUDES_SHA1: t.CDefine = 256 -STUB_READ_BUF_SIZE: t.CDefine = 262144 -MAX_INCLUDES: t.CDefine = 256 - -def _load_includes_sha1_set(pool: memhub.MemBuddy | t.CPtr, temp_dir: str, sha1_set: str) -> int: pass - -def _is_in_sha1_set(sha1: str, sha1_set: str, set_count: int) -> int: pass - -def WriteIncludesSha1Map(mb: memhub.MemBuddy | t.CPtr, temp_dir: str, scan_result: IncludesScanner.ScanResult | t.CPtr, filter_set: t.CChar | t.CPtr, filter_count: int) -> int: pass - -def _IsFuncDeclaredOrDefined(out_buf: bytes, func_sig: str) -> int: pass - -def _CommentOutDeclareInBuf(out_buf: bytes, func_sig: str) -> int: pass - -def _CommentOutGlobalInBuf(out_buf: bytes, global_name: str) -> int: pass - -def _CommentOutOpaqueTypeInBuf(out_buf: bytes, type_name_prefix: str) -> int: pass - -def _HasFullTypeDefinition(out_buf: bytes, type_name_prefix: str) -> int: pass - -def _LoadAndAppendStub(temp_dir: str, td_len: t.CSizeT, dep_sha1: str, dep_buf: bytes, out_buf: bytes, out_size: t.CSizeT, out_pos: t.CSizeT) -> t.CSizeT: pass - -def _LoadAndAppendTextDeclares(temp_dir: str, td_len: t.CSizeT, dep_sha1: str, dep_buf: bytes, out_buf: bytes, out_size: t.CSizeT, out_pos: t.CSizeT) -> t.CSizeT: pass - -def _PathToModuleName(path: str) -> str: pass - -def _BuildIncludesSha1Map(temp_dir: str, td_len: t.CSizeT, sha1_list: t.CChar | t.CPtr, mod_list: t.CChar | t.CPtr) -> int: pass - -def _FindSha1ByModName(sha1_arr: t.CChar | t.CPtr, mod_arr: t.CChar | t.CPtr, count: int, mod_name: str) -> str: pass - -def _AddSha1ToSet(set_buf: t.CChar | t.CPtr, count: int, sha1: str) -> int: pass - -def _BuildReachableSha1Set(mb: memhub.MemBuddy | t.CPtr, source_dir: str, temp_dir: str, reachable_set: t.CChar | t.CPtr) -> int: pass - -def BuildCombinedIR(temp_dir: str, local_sha1: str, out_buf: bytes, out_size: t.CSizeT) -> t.CSizeT: pass diff --git a/.transpyc_cache/57288496f7c2d1ad.pyi b/.transpyc_cache/57288496f7c2d1ad.pyi deleted file mode 100644 index 0624d9a..0000000 --- a/.transpyc_cache/57288496f7c2d1ad.pyi +++ /dev/null @@ -1,71 +0,0 @@ -""" -Auto-generated Python stub file from json.__init__.py -Module: json.__init__ -""" - - -import t, c -from stdint import * -import memhub -import string -import viperio - -JSON_NULL: t.CDefine = 0 -JSON_BOOL: t.CDefine = 1 -JSON_INT: t.CDefine = 2 -JSON_FLOAT: t.CDefine = 3 -JSON_STRING: t.CDefine = 4 -JSON_ARRAY: t.CDefine = 5 -JSON_OBJECT: t.CDefine = 6 - -class JsonValue: - vtype: t.CInt - bool_val: t.CInt - int_val: t.CInt64T - float_val: t.CDouble - str_val: t.CChar | t.CPtr - next: 'JsonValue' | t.CPtr - key: t.CChar | t.CPtr - child: 'JsonValue' | t.CPtr - child_count: t.CSizeT - def __new__(self: JsonValue, pool: memhub.MemManager | t.CPtr) -> t.CInt: pass - def type(self: JsonValue) -> t.CInt: pass - def is_null(self: JsonValue) -> bool: pass - def is_bool(self: JsonValue) -> bool: pass - def is_int(self: JsonValue) -> bool: pass - def is_float(self: JsonValue) -> bool: pass - def is_string(self: JsonValue) -> bool: pass - def is_array(self: JsonValue) -> bool: pass - def is_object(self: JsonValue) -> bool: pass - def as_bool(self: JsonValue) -> bool: pass - def as_int(self: JsonValue) -> t.CInt64T: pass - def as_float(self: JsonValue) -> t.CDouble: pass - def as_string(self: JsonValue) -> t.CChar | t.CPtr: pass - def __len__(self: JsonValue) -> t.CSizeT: pass - def __getitem__(self: JsonValue, key: t.CChar | t.CPtr) -> 'JsonValue' | t.CPtr: pass - def __setitem__(self: JsonValue, key: t.CChar | t.CPtr, val: 'JsonValue' | t.CPtr) -> t.CInt: pass - def get_item(self: JsonValue, index: t.CSizeT) -> 'JsonValue' | t.CPtr: pass - def _pool_alloc(self: JsonValue, size: t.CSizeT) -> t.CChar | t.CPtr: pass - def _append_child(self: JsonValue, child: 'JsonValue' | t.CPtr) -> t.CInt: pass - -def null(pool: memhub.MemManager | t.CPtr) -> JsonValue | t.CPtr: pass - -def bool_val(pool: memhub.MemManager | t.CPtr, val: bool) -> JsonValue | t.CPtr: pass - -def int_val(pool: memhub.MemManager | t.CPtr, val: t.CInt64T) -> JsonValue | t.CPtr: pass - -def float_val(pool: memhub.MemManager | t.CPtr, val: t.CDouble) -> JsonValue | t.CPtr: pass - -def string_val(pool: memhub.MemManager | t.CPtr, val: t.CChar | t.CPtr) -> JsonValue | t.CPtr: pass - -def array(pool: memhub.MemManager | t.CPtr) -> JsonValue | t.CPtr: pass - -def object(pool: memhub.MemManager | t.CPtr) -> JsonValue | t.CPtr: pass - -def array_append(pool: memhub.MemManager | t.CPtr, arr: JsonValue | t.CPtr, item: JsonValue | t.CPtr) -> t.CInt: pass - -def object_set(pool: memhub.MemManager | t.CPtr, obj: JsonValue | t.CPtr, key: t.CChar | t.CPtr, val: JsonValue | t.CPtr) -> t.CInt: pass - - -from .__parser import parse -from .__writer import write \ No newline at end of file diff --git a/.transpyc_cache/58f94f7fed04c816.doc.json b/.transpyc_cache/58f94f7fed04c816.doc.json deleted file mode 100644 index a8e6f20..0000000 --- a/.transpyc_cache/58f94f7fed04c816.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_is_cenum_base": "检查 base 节点是否为 t.CEnum,返回 1=是 / 0=否", "_is_enum_class": "检查 ClassDef 是否继承自 t.CEnum,返回 1=是 / 0=否", "_is_cunion_base": "检查 base 节点是否为 t.CUnion,返回 1=是 / 0=否", "_is_union_class": "检查 ClassDef 是否继承自 t.CUnion,返回 1=是 / 0=否", "_has_decorator": "检查 decorator_list 中是否有指定装饰器名", "_is_marker_base": "检查基类名是否为标记基类,返回 1=是 / 0=否", "_get_base_name": "从 base AST 节点提取基类名,返回 None=失败", "_get_parent_class": "获取 ClassDef 的真实父类名,返回 None=无真实父类", "_has_any_func_cvtable": "检查类中是否有任何函数标记了 @t.CVTable,返回 1=有 / 0=无", "_should_method_be_virtual": "判断方法是否应该进入虚表,返回 1=包含 / 0=排除", "_detect_vtable_status": "检测类是否应该启用虚表", "_resolve_enum_member_type": "解析枚举成员的类型注解为 LLVM 整数类型", "_is_state_annotation": "检查注解节点是否为 t.State,返回 1=是 / 0=否", "_extract_int_value": "从 AST 节点提取整数值,失败返回 0", "_translate_enum_def": "翻译枚举类定义,返回 0", "_get_type_size": "计算 LLVM 类型的字节大小", "_translate_union_def": "翻译联合体定义,返回 0", "_is_generic_class": "检查 ClassDef 是否有类型参数(泛型类),返回 1=是 / 0=否", "_register_generic_template": "注册泛型类模板(类名 + ClassDef 节点)", "_find_generic_template": "查找泛型类模板,返回 ClassDef 节点或 None", "_mangle_generic_class_name": "生成特化类名: list + [int] -> list[int]\n\n 分配新缓冲区拼接,避免原地 strcat 导致缓冲区溢出\n ", "_clone_annotation": "拷贝类型注解表达式,替换类型参数 T 为具体类型名\n\n tp_names: 类型参数名列表 ['T']\n type_args: 类型实参名列表 ['int']\n ", "_clone_arguments": "拷贝 Arguments 节点,替换 arg annotation 中的 T", "_clone_classdef_for_spec": "拷贝 ClassDef 节点用于泛型特化\n\n - 替换类名为 spec_name\n - 清除 type_params(特化后不是泛型类)\n - 拷贝 children 中的 AnnAssign 和 FunctionDef,替换类型注解中的 T\n - 方法体直接引用原始节点(通过 type_map 上下文处理 T)\n ", "_find_cached_spec": "查找已缓存的特化名,未找到返回 None", "_cache_spec": "缓存特化结果", "_specialize_generic_class": "特化泛型类,返回特化类名\n\n 1. 查找泛型模板\n 2. 生成特化名\n 3. 检查缓存\n 4. 拷贝 ClassDef 节点(替换类型注解中的 T)\n 5. 设置 type_map 上下文(用于方法体中的 T 替换)\n 6. 调用 translate_class_def 翻译特化类\n 7. 返回特化名\n ", "translate_class_def": "翻译 class 定义,返回 0", "_vtable_strcat": "将 src 追加到 dst 末尾", "_vtable_name_needs_quote": "检查 LLVM 标识符是否需要引号(以数字开头或含 '.')", "_format_func_type_str": "从 Function 对象生成函数类型字符串", "_generate_vtable": "生成 VTable 全局变量", "_translate_oop_methods": "扫描 class body 中的方法并翻译,生成 __before_init__", "_translate_method": "翻译单个方法,返回 0", "_generate_before_init": "生成 __before_init__ 函数,返回 0"} \ No newline at end of file diff --git a/.transpyc_cache/58f94f7fed04c816.pyi b/.transpyc_cache/58f94f7fed04c816.pyi deleted file mode 100644 index 62b2e80..0000000 --- a/.transpyc_cache/58f94f7fed04c816.pyi +++ /dev/null @@ -1,104 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesClassDef.py -Module: lib.core.Handles.HandlesClassDef -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import viperlib -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesEnum as HandlesEnum - -ENUM_MEMBER_MAX_LOCAL: t.CDefine = 64 - -def _is_cenum_base(base_node: ast.AST | t.CPtr) -> int: pass - -def _is_enum_class(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _is_cunion_base(base_node: ast.AST | t.CPtr) -> int: pass - -def _is_union_class(cd: ast.ClassDef | t.CPtr) -> int: pass - - -_MARKER_BASES: t.CDefine = 8 - -def _has_decorator(decorator_list: list[ast.AST | t.CPtr] | t.CPtr, deco_name: str) -> int: pass - -def _is_marker_base(base_name: str) -> int: pass - -def _get_base_name(base_node: ast.AST | t.CPtr) -> str: pass - -def _get_parent_class(cd: ast.ClassDef | t.CPtr) -> str: pass - -def _has_any_func_cvtable(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _should_method_be_virtual(cd: ast.ClassDef | t.CPtr, fd: ast.FunctionDef | t.CPtr, trans: HT.Translator | t.CPtr) -> int: pass - -def _detect_vtable_status(cd: ast.ClassDef | t.CPtr, trans: HT.Translator | t.CPtr) -> int: pass - -def _resolve_enum_member_type(pool: memhub.MemBuddy | t.CPtr, ann_node: ast.AST | t.CPtr, imported_modules: str, from_imports: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _is_state_annotation(node: ast.AST | t.CPtr) -> int: pass - -def _extract_int_value(node: ast.AST | t.CPtr) -> t.CInt64T: pass - -def _translate_enum_def(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr) -> int: pass - -def _get_type_size(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def _translate_union_def(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr) -> int: pass - - -_generic_class_names: t.CExtern | list[str] | t.CPtr -_generic_class_nodes: t.CExtern | list[ast.ClassDef | t.CPtr] | t.CPtr - -def _is_generic_class(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _register_generic_template(pool: memhub.MemBuddy | t.CPtr, cd: ast.ClassDef | t.CPtr) -> t.CInt: pass - -def _find_generic_template(class_name: str) -> ast.ClassDef | t.CPtr: pass - -def _mangle_generic_class_name(pool: memhub.MemBuddy | t.CPtr, class_name: str, type_args: list[str] | t.CPtr) -> str: pass - -def _clone_annotation(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.AST | t.CPtr: pass - -def _clone_arguments(pool: memhub.MemBuddy | t.CPtr, args: ast.AST | t.CPtr, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.AST | t.CPtr: pass - -def _clone_classdef_for_spec(pool: memhub.MemBuddy | t.CPtr, cd: ast.ClassDef | t.CPtr, spec_name: str, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.ClassDef | t.CPtr: pass - - -_spec_keys: t.CExtern | list[str] | t.CPtr -_spec_names: t.CExtern | list[str] | t.CPtr - -def _find_cached_spec(spec_key: str) -> str: pass - -def _cache_spec(pool: memhub.MemBuddy | t.CPtr, spec_key: str, spec_name: str) -> t.CInt: pass - -def _specialize_generic_class(trans: HT.Translator | t.CPtr, class_name: str, type_args: list[str] | t.CPtr) -> str: pass - -def translate_class_def(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - - -VTBL_METHOD_MAX: t.CDefine = 32 - -def _vtable_strcat(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _vtable_name_needs_quote(name: str) -> int: pass - -def _format_func_type_str(pool: memhub.MemBuddy | t.CPtr, buf: t.CChar | t.CPtr, buf_size: t.CSizeT, func: llvmlite.Function | t.CPtr) -> int: pass - -def _generate_vtable(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr, class_name: str) -> int: pass - -def _translate_oop_methods(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass - -def _translate_method(trans: HT.Translator | t.CPtr, fd: ast.FunctionDef | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass - -def _generate_before_init(trans: HT.Translator | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass diff --git a/.transpyc_cache/594332d751ff7756.doc.json b/.transpyc_cache/594332d751ff7756.doc.json deleted file mode 100644 index c00e036..0000000 --- a/.transpyc_cache/594332d751ff7756.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数\n\n 直接接收三个 Value 参数,避免通过 Next 链表遍历(共享 alloca 对象的\n Next 字段可能被其他操作污染,导致链表断裂)。\n ", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/594332d751ff7756.pyi b/.transpyc_cache/594332d751ff7756.pyi deleted file mode 100644 index 40c3168..0000000 --- a/.transpyc_cache/594332d751ff7756.pyi +++ /dev/null @@ -1,171 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, dst_val: llvmlite.Value | t.CPtr, src_val: llvmlite.Value | t.CPtr, num_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/5974af27e1cdb182.doc.json b/.transpyc_cache/5974af27e1cdb182.doc.json deleted file mode 100644 index 28f2ad8..0000000 --- a/.transpyc_cache/5974af27e1cdb182.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_register_cexport_from_funcdef": "预注册 CExport/State 函数到全局表(仅注册,不生成 IR)", "translate_children": "遍历 tree.children 并翻译每个子节点\n\n Args:\n trans: 翻译器(含所有共享状态)\n tree: AST 模块节点\n\n Returns:\n t.CInt: 新增的变量数\n ", "handle_module_level_var": "处理模块级变量声明,创建全局变量", "create_wrapper_main": "创建包装 main 函数并翻译所有顶层语句\n\n Args:\n trans: 翻译器(含所有共享状态)\n tree: AST 模块节点\n i32_ty: i32 LLVMType\n\n Returns:\n t.CInt: 新增的变量数\n "} \ No newline at end of file diff --git a/.transpyc_cache/5974af27e1cdb182.pyi b/.transpyc_cache/5974af27e1cdb182.pyi deleted file mode 100644 index 3901124..0000000 --- a/.transpyc_cache/5974af27e1cdb182.pyi +++ /dev/null @@ -1,31 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesMain.py -Module: lib.core.Handles.HandlesMain -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import viperlib -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesBody as HandlesBody -import lib.core.Handles.HandlesFunctions as HandlesFunctions -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesClassDef as HandlesClassDef -import lib.core.Handles.HandlesAnnAssign as HandlesAnnAssign - -def _register_cexport_from_funcdef(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - -def translate_children(trans: HT.Translator | t.CPtr, tree: ast.AST | t.CPtr) -> int: pass - -def handle_module_level_var(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - -def create_wrapper_main(trans: HT.Translator | t.CPtr, tree: ast.AST | t.CPtr, i32_ty: llvmlite.LLVMType | t.CPtr) -> int: pass diff --git a/.transpyc_cache/59e00d50660b941e.doc.json b/.transpyc_cache/59e00d50660b941e.doc.json deleted file mode 100644 index e833e14..0000000 --- a/.transpyc_cache/59e00d50660b941e.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"os_exists": "检查文件/目录是否存在(跨平台)", "os_remove": "删除文件(跨平台)。成功返回 0,失败返回 -1。", "os_isdir": "检查路径是否为目录(跨平台)", "os_getsize": "返回文件大小(字节,跨平台)。失败返回 -1。"} \ No newline at end of file diff --git a/.transpyc_cache/59e00d50660b941e.pyi b/.transpyc_cache/59e00d50660b941e.pyi deleted file mode 100644 index 5236edb..0000000 --- a/.transpyc_cache/59e00d50660b941e.pyi +++ /dev/null @@ -1,19 +0,0 @@ -""" -Auto-generated Python stub file from os_backend.py -Module: os_backend -""" - - -import t, c -from stdint import * -import platmacro -import os._win32 -import os._posix - -def os_exists(path: str) -> bool: pass - -def os_remove(path: str) -> int: pass - -def os_isdir(path: str) -> bool: pass - -def os_getsize(path: str) -> t.CInt64T: pass diff --git a/.transpyc_cache/59f7d653d72cce3a.doc.json b/.transpyc_cache/59f7d653d72cce3a.doc.json deleted file mode 100644 index 7996d5c..0000000 --- a/.transpyc_cache/59f7d653d72cce3a.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"get_func_name": "从函数节点提取函数名", "escape_llvm_string": "将字符串转换为 LLVM IR 字符串字面量 c\"...\\00\" ", "get_llvm_type_bits": "获取 LLVM 整数类型的位宽,非整数类型返回 0", "get_llvm_float_bits": "获取 LLVM 浮点类型的位宽,非浮点类型返回 0", "is_ptr_type": "检查 ty 是否是 Ptr 类型,返回 1=是, 0=否", "_deref_if_ptr_ptr": "如果 obj_ptr 是 Ptr(Ptr(...)),load 解引用获取内层指针", "coerce_to_type": "将 val 强制转换为 target_ty\n\n 整数: sext(扩展)/ trunc(截断)\n 浮点: fpext(扩展)/ fptrunc(截断)\n int→float: sitofp\n float→int: fptosi\n ", "create_global_string": "创建全局字符串常量并返回 i8* bitcast", "translate_constant": "翻译常量(int/str/bool)", "translate_value": "翻译值表达式为 LLVM Value", "translate_compare": "翻译比较表达式,返回 i1 结果", "translate_unaryop": "翻译一元运算(-x, +x, not x, ~x)", "translate_boolop": "翻译布尔运算(and/or)的短路求值,返回 i1", "translate_name_value": "翻译变量引用(Name 节点)→ load", "ExprHandle": "表达式处理器:继承 Mixin 获得 Trans 回指针", "ExprHandle.HandleValue": "翻译值表达式,从 self.Trans 获取共享状态", "translate_subscript": "翻译下标表达式,返回加载的元素值", "translate_attribute": "翻译属性访问,返回加载的字段值", "get_subscript_ptr": "获取下标表达式的元素指针(用于赋值 lhs)", "get_attribute_ptr": "获取属性访问的字段指针(用于赋值 lhs)"} \ No newline at end of file diff --git a/.transpyc_cache/59f7d653d72cce3a.pyi b/.transpyc_cache/59f7d653d72cce3a.pyi deleted file mode 100644 index 9aa684e..0000000 --- a/.transpyc_cache/59f7d653d72cce3a.pyi +++ /dev/null @@ -1,69 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExpr.py -Module: lib.core.Handles.HandlesExpr -""" - - -import t, c -from stdint import * -import ast -import memhub -import string -import llvmlite -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesExprOps as HandlesExprOps -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.Handles.HandlesNonlocal as HandlesNonlocal -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesEnum as HandlesEnum - -def get_func_name(func_node: ast.AST | t.CPtr) -> str: pass - -def escape_llvm_string(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def get_llvm_type_bits(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def get_llvm_float_bits(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def is_ptr_type(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def _deref_if_ptr_ptr(builder: llvmlite.IRBuilder | t.CPtr, obj_ptr: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def coerce_to_type(builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def create_global_string(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, str_val: str, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_constant(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_value(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_compare(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_unaryop(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_boolop(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_name_value(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -@t.NoVTable -class ExprHandle(HandlesBase.Mixin): - def __init__(self: ExprHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleValue(self: ExprHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def NewExprHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprHandle | t.CPtr: pass - -def translate_subscript(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_attribute(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -import stdio - -def get_subscript_ptr(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def get_attribute_ptr(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass diff --git a/.transpyc_cache/5b12e242d96b322f.doc.json b/.transpyc_cache/5b12e242d96b322f.doc.json deleted file mode 100644 index a8e6f20..0000000 --- a/.transpyc_cache/5b12e242d96b322f.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_is_cenum_base": "检查 base 节点是否为 t.CEnum,返回 1=是 / 0=否", "_is_enum_class": "检查 ClassDef 是否继承自 t.CEnum,返回 1=是 / 0=否", "_is_cunion_base": "检查 base 节点是否为 t.CUnion,返回 1=是 / 0=否", "_is_union_class": "检查 ClassDef 是否继承自 t.CUnion,返回 1=是 / 0=否", "_has_decorator": "检查 decorator_list 中是否有指定装饰器名", "_is_marker_base": "检查基类名是否为标记基类,返回 1=是 / 0=否", "_get_base_name": "从 base AST 节点提取基类名,返回 None=失败", "_get_parent_class": "获取 ClassDef 的真实父类名,返回 None=无真实父类", "_has_any_func_cvtable": "检查类中是否有任何函数标记了 @t.CVTable,返回 1=有 / 0=无", "_should_method_be_virtual": "判断方法是否应该进入虚表,返回 1=包含 / 0=排除", "_detect_vtable_status": "检测类是否应该启用虚表", "_resolve_enum_member_type": "解析枚举成员的类型注解为 LLVM 整数类型", "_is_state_annotation": "检查注解节点是否为 t.State,返回 1=是 / 0=否", "_extract_int_value": "从 AST 节点提取整数值,失败返回 0", "_translate_enum_def": "翻译枚举类定义,返回 0", "_get_type_size": "计算 LLVM 类型的字节大小", "_translate_union_def": "翻译联合体定义,返回 0", "_is_generic_class": "检查 ClassDef 是否有类型参数(泛型类),返回 1=是 / 0=否", "_register_generic_template": "注册泛型类模板(类名 + ClassDef 节点)", "_find_generic_template": "查找泛型类模板,返回 ClassDef 节点或 None", "_mangle_generic_class_name": "生成特化类名: list + [int] -> list[int]\n\n 分配新缓冲区拼接,避免原地 strcat 导致缓冲区溢出\n ", "_clone_annotation": "拷贝类型注解表达式,替换类型参数 T 为具体类型名\n\n tp_names: 类型参数名列表 ['T']\n type_args: 类型实参名列表 ['int']\n ", "_clone_arguments": "拷贝 Arguments 节点,替换 arg annotation 中的 T", "_clone_classdef_for_spec": "拷贝 ClassDef 节点用于泛型特化\n\n - 替换类名为 spec_name\n - 清除 type_params(特化后不是泛型类)\n - 拷贝 children 中的 AnnAssign 和 FunctionDef,替换类型注解中的 T\n - 方法体直接引用原始节点(通过 type_map 上下文处理 T)\n ", "_find_cached_spec": "查找已缓存的特化名,未找到返回 None", "_cache_spec": "缓存特化结果", "_specialize_generic_class": "特化泛型类,返回特化类名\n\n 1. 查找泛型模板\n 2. 生成特化名\n 3. 检查缓存\n 4. 拷贝 ClassDef 节点(替换类型注解中的 T)\n 5. 设置 type_map 上下文(用于方法体中的 T 替换)\n 6. 调用 translate_class_def 翻译特化类\n 7. 返回特化名\n ", "translate_class_def": "翻译 class 定义,返回 0", "_vtable_strcat": "将 src 追加到 dst 末尾", "_vtable_name_needs_quote": "检查 LLVM 标识符是否需要引号(以数字开头或含 '.')", "_format_func_type_str": "从 Function 对象生成函数类型字符串", "_generate_vtable": "生成 VTable 全局变量", "_translate_oop_methods": "扫描 class body 中的方法并翻译,生成 __before_init__", "_translate_method": "翻译单个方法,返回 0", "_generate_before_init": "生成 __before_init__ 函数,返回 0"} \ No newline at end of file diff --git a/.transpyc_cache/5b12e242d96b322f.pyi b/.transpyc_cache/5b12e242d96b322f.pyi deleted file mode 100644 index 62b2e80..0000000 --- a/.transpyc_cache/5b12e242d96b322f.pyi +++ /dev/null @@ -1,104 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesClassDef.py -Module: lib.core.Handles.HandlesClassDef -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import viperlib -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesEnum as HandlesEnum - -ENUM_MEMBER_MAX_LOCAL: t.CDefine = 64 - -def _is_cenum_base(base_node: ast.AST | t.CPtr) -> int: pass - -def _is_enum_class(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _is_cunion_base(base_node: ast.AST | t.CPtr) -> int: pass - -def _is_union_class(cd: ast.ClassDef | t.CPtr) -> int: pass - - -_MARKER_BASES: t.CDefine = 8 - -def _has_decorator(decorator_list: list[ast.AST | t.CPtr] | t.CPtr, deco_name: str) -> int: pass - -def _is_marker_base(base_name: str) -> int: pass - -def _get_base_name(base_node: ast.AST | t.CPtr) -> str: pass - -def _get_parent_class(cd: ast.ClassDef | t.CPtr) -> str: pass - -def _has_any_func_cvtable(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _should_method_be_virtual(cd: ast.ClassDef | t.CPtr, fd: ast.FunctionDef | t.CPtr, trans: HT.Translator | t.CPtr) -> int: pass - -def _detect_vtable_status(cd: ast.ClassDef | t.CPtr, trans: HT.Translator | t.CPtr) -> int: pass - -def _resolve_enum_member_type(pool: memhub.MemBuddy | t.CPtr, ann_node: ast.AST | t.CPtr, imported_modules: str, from_imports: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _is_state_annotation(node: ast.AST | t.CPtr) -> int: pass - -def _extract_int_value(node: ast.AST | t.CPtr) -> t.CInt64T: pass - -def _translate_enum_def(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr) -> int: pass - -def _get_type_size(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def _translate_union_def(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr) -> int: pass - - -_generic_class_names: t.CExtern | list[str] | t.CPtr -_generic_class_nodes: t.CExtern | list[ast.ClassDef | t.CPtr] | t.CPtr - -def _is_generic_class(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _register_generic_template(pool: memhub.MemBuddy | t.CPtr, cd: ast.ClassDef | t.CPtr) -> t.CInt: pass - -def _find_generic_template(class_name: str) -> ast.ClassDef | t.CPtr: pass - -def _mangle_generic_class_name(pool: memhub.MemBuddy | t.CPtr, class_name: str, type_args: list[str] | t.CPtr) -> str: pass - -def _clone_annotation(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.AST | t.CPtr: pass - -def _clone_arguments(pool: memhub.MemBuddy | t.CPtr, args: ast.AST | t.CPtr, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.AST | t.CPtr: pass - -def _clone_classdef_for_spec(pool: memhub.MemBuddy | t.CPtr, cd: ast.ClassDef | t.CPtr, spec_name: str, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.ClassDef | t.CPtr: pass - - -_spec_keys: t.CExtern | list[str] | t.CPtr -_spec_names: t.CExtern | list[str] | t.CPtr - -def _find_cached_spec(spec_key: str) -> str: pass - -def _cache_spec(pool: memhub.MemBuddy | t.CPtr, spec_key: str, spec_name: str) -> t.CInt: pass - -def _specialize_generic_class(trans: HT.Translator | t.CPtr, class_name: str, type_args: list[str] | t.CPtr) -> str: pass - -def translate_class_def(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - - -VTBL_METHOD_MAX: t.CDefine = 32 - -def _vtable_strcat(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _vtable_name_needs_quote(name: str) -> int: pass - -def _format_func_type_str(pool: memhub.MemBuddy | t.CPtr, buf: t.CChar | t.CPtr, buf_size: t.CSizeT, func: llvmlite.Function | t.CPtr) -> int: pass - -def _generate_vtable(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr, class_name: str) -> int: pass - -def _translate_oop_methods(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass - -def _translate_method(trans: HT.Translator | t.CPtr, fd: ast.FunctionDef | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass - -def _generate_before_init(trans: HT.Translator | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass diff --git a/.transpyc_cache/5dab8cb390496d22.pyi b/.transpyc_cache/5dab8cb390496d22.pyi deleted file mode 100644 index 7056767..0000000 --- a/.transpyc_cache/5dab8cb390496d22.pyi +++ /dev/null @@ -1,182 +0,0 @@ -""" -Auto-generated Python stub file from ast.base.py -Module: ast.base -""" - - -import t, c -from stdint import * -import memhub -import string -import viperlib -from .tokens import TokOp - -class ASTKind(t.CEnum): - Module: t.State - FunctionDef: t.State - ClassDef: t.State - Assign: t.State - If: t.State - For: t.State - While: t.State - Return: t.State - Expr: t.State - Name: t.State - Constant: t.State - BinOp: t.State - UnaryOp: t.State - Call: t.State - Compare: t.State - Expression: t.State - Interactive: t.State - FunctionType: t.State - Delete: t.State - AugAssign: t.State - AnnAssign: t.State - With: t.State - Raise: t.State - Try: t.State - Assert: t.State - Global: t.State - Nonlocal: t.State - Pass: t.State - Break: t.State - Continue: t.State - Import: t.State - ImportFrom: t.State - Match: t.State - BoolOp: t.State - Lambda: t.State - IfExp: t.State - Dict: t.State - Set: t.State - ListComp: t.State - SetComp: t.State - DictComp: t.State - GeneratorExp: t.State - Await: t.State - Yield: t.State - YieldFrom: t.State - FormattedValue: t.State - JoinedStr: t.State - Attribute: t.State - Subscript: t.State - Starred: t.State - List: t.State - Tuple: t.State - Slice: t.State - NamedExpr: t.State - ExceptHandler: t.State - Arguments: t.State - Arg: t.State - Keyword: t.State - Alias: t.State - WithItem: t.State - Comprehension: t.State - OpNode: t.State - MatchCase: t.State - MatchValue: t.State - MatchSingleton: t.State - MatchSequence: t.State - MatchMapping: t.State - MatchClass: t.State - MatchStar: t.State - MatchAs: t.State - MatchOr: t.State -class ASTCtx(t.CEnum): - Load: t.State - Store: t.State - Del: t.State -class OpKind(t.CEnum): - Add: t.State - Sub: t.State - Mult: t.State - MatMult: t.State - Div: t.State - Mod: t.State - Pow: t.State - LShift: t.State - RShift: t.State - BitOr: t.State - BitXor: t.State - BitAnd: t.State - FloorDiv: t.State - And: t.State - Or: t.State - Eq: t.State - Ne: t.State - Lt: t.State - Le: t.State - Gt: t.State - Ge: t.State - Is: t.State - IsNot: t.State - In: t.State - NotIn: t.State - Not: t.State - UAdd: t.State - USub: t.State - Invert: t.State - NoneOp: t.State - -CONST_INT: t.CDefine = 1 -CONST_FLOAT: t.CDefine = 2 -CONST_STR: t.CDefine = 3 -CONST_BOOL: t.CDefine = 4 -CONST_NONE: t.CDefine = 5 -FLAG_IS_ASYNC: t.CDefine = 1 -FLAG_SIMPLE: t.CDefine = 2 -FLAG_HAS_STAR: t.CDefine = 4 - -class ASTFlag(t.CEnum): - IsAsync: t.State - Simple: t.State - HasStar: t.State - -def _copy_str(pool: memhub.MemManager | t.CPtr, src: str) -> str: pass - -def _set_pos(node: AST | t.CPtr, lineno: t.CInt, col_offset: t.CInt, end_lineno: t.CInt, end_col_offset: t.CInt) -> t.CInt: pass - -def _inherit_pos(node: AST | t.CPtr, ref: AST | t.CPtr) -> t.CInt: pass - -def _init_ast(node: AST | t.CPtr, pool: memhub.MemManager | t.CPtr, lineno: t.CInt, col: t.CInt) -> t.CInt: pass - -def _set_parent_list(lst: list[AST | t.CPtr] | t.CPtr, parent: AST | t.CPtr) -> t.CInt: pass - -def _append_child(lst: list[AST | t.CPtr] | t.CPtr, node: AST | t.CPtr, pool: memhub.MemManager | t.CPtr) -> t.CInt: pass - -def _binop_from_op(op_id: t.CInt) -> t.CInt: pass - -def _augop_from_op(op_id: t.CInt) -> t.CInt: pass - -def _cmpop_from_op(op_id: t.CInt) -> t.CInt: pass - -def _emit(buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT, text: str) -> t.CSizeT: pass - -def _emit_str(buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT, text: str) -> t.CSizeT: pass - -def _emit_int(buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT, val: t.CInt64T) -> t.CSizeT: pass - -def _op_name(op: t.CInt) -> str: pass - -def _dump_list(lst: list[AST | t.CPtr] | t.CPtr, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass - -def _dump_op_list(lst: t.CPtr, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass - - -@t.CVTable -class AST: - parent: AST | t.CPtr - pool: memhub.MemManager | t.CPtr - lineno: t.CInt - col_offset: t.CInt - end_lineno: t.CInt - end_col_offset: t.CInt - children: list[AST | t.CPtr] | t.CPtr - def kind(self: AST) -> t.CInt: pass - def type_name(self: AST) -> str: pass - def dump(self: AST, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass - def accept(self: AST, visitor: t.CPtr) -> t.CInt: pass - def append(self: AST, node: AST | t.CPtr) -> t.CInt: pass - -def dump(node: AST | t.CPtr, buf: t.CChar | t.CPtr, size: t.CSizeT) -> t.CInt: pass diff --git a/.transpyc_cache/5e3d33857a0e37f6.doc.json b/.transpyc_cache/5e3d33857a0e37f6.doc.json deleted file mode 100644 index 6b37383..0000000 --- a/.transpyc_cache/5e3d33857a0e37f6.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/5e3d33857a0e37f6.pyi b/.transpyc_cache/5e3d33857a0e37f6.pyi deleted file mode 100644 index e470478..0000000 --- a/.transpyc_cache/5e3d33857a0e37f6.pyi +++ /dev/null @@ -1,171 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, args_head: llvmlite.Value | t.CPtr, arg_count: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/5e430ae5bf7af3a2.doc.json b/.transpyc_cache/5e430ae5bf7af3a2.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/5e430ae5bf7af3a2.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/5e430ae5bf7af3a2.pyi b/.transpyc_cache/5e430ae5bf7af3a2.pyi deleted file mode 100644 index bbe03a4..0000000 --- a/.transpyc_cache/5e430ae5bf7af3a2.pyi +++ /dev/null @@ -1,13 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - - -from stdint import * -import w32.win32console -import t, c -from t import CInt, CExport -import mbuddytest - -def main() -> CInt | CExport: pass diff --git a/.transpyc_cache/5faaecd48491dce0.doc.json b/.transpyc_cache/5faaecd48491dce0.doc.json deleted file mode 100644 index c00e036..0000000 --- a/.transpyc_cache/5faaecd48491dce0.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数\n\n 直接接收三个 Value 参数,避免通过 Next 链表遍历(共享 alloca 对象的\n Next 字段可能被其他操作污染,导致链表断裂)。\n ", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/5faaecd48491dce0.pyi b/.transpyc_cache/5faaecd48491dce0.pyi deleted file mode 100644 index 40c3168..0000000 --- a/.transpyc_cache/5faaecd48491dce0.pyi +++ /dev/null @@ -1,171 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, dst_val: llvmlite.Value | t.CPtr, src_val: llvmlite.Value | t.CPtr, num_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/5fc006555963c808.doc.json b/.transpyc_cache/5fc006555963c808.doc.json deleted file mode 100644 index c00e036..0000000 --- a/.transpyc_cache/5fc006555963c808.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数\n\n 直接接收三个 Value 参数,避免通过 Next 链表遍历(共享 alloca 对象的\n Next 字段可能被其他操作污染,导致链表断裂)。\n ", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/5fc006555963c808.pyi b/.transpyc_cache/5fc006555963c808.pyi deleted file mode 100644 index 40c3168..0000000 --- a/.transpyc_cache/5fc006555963c808.pyi +++ /dev/null @@ -1,171 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, dst_val: llvmlite.Value | t.CPtr, src_val: llvmlite.Value | t.CPtr, num_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/605efc3aeda6b7a7.doc.json b/.transpyc_cache/605efc3aeda6b7a7.doc.json deleted file mode 100644 index 86441ed..0000000 --- a/.transpyc_cache/605efc3aeda6b7a7.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_load_includes_sha1_set": "读取 _sha1_map.txt,将 includes/ 开头的 SHA1 写入 sha1_set\n sha1_set 大小为 MAX_INCLUDES_SHA1 * 17(每个 SHA1 16字符+null)\n 返回找到的 includes SHA1 数量,-1 表示错误", "_is_in_sha1_set": "检查 sha1 是否在集合中", "WriteIncludesSha1Map": "将 includes 扫描结果写入 _sha1_map.txt(供 StubMerger 使用)\n\n 若 filter_set 不为 None 且 filter_count > 0,只写入 filter_set 中的条目。\n ", "_IsFuncDeclaredOrDefined": "检查 out_buf 中是否已有函数的 declare 或 define 行", "_CommentOutDeclareInBuf": "在 out_buf 中搜索 declare 行(包含 func_sig),将其注释掉", "_CommentOutGlobalInBuf": "在 out_buf 中搜索全局变量定义行(以 global_name 开头),将行首改为 ';'", "_CommentOutOpaqueTypeInBuf": "在 out_buf 中搜索 type_name_prefix 对应的 opaque 声明行,将行首改为 ';'\n\n type_name_prefix 格式: '%\"sha1.ClassName\"'(不含 '=' 和后续内容)\n 返回 1=已注释, 0=未找到\n ", "_HasFullTypeDefinition": "检查 out_buf 中是否已有 type_name_prefix 的完整定义", "_LoadAndAppendStub": "加载依赖 stub 并追加(跳过 header,去重)", "_LoadAndAppendTextDeclares": "从依赖 text.ll 提取 declare(define 转 declare),追加到 out_buf", "_PathToModuleName": "将文件路径转换为模块名\n\n 特殊处理 __init__.py:includes/ast/__init__.py → ast(而非 ast.__init__)\n ", "_BuildIncludesSha1Map": "从 _sha1_map.txt 构建 sha1→module_name 映射,返回条目数", "_FindSha1ByModName": "从模块名查找 SHA1(精确匹配)", "_AddSha1ToSet": "将 SHA1 加入集合,返回新 count", "_BuildReachableSha1Set": "构建可达 SHA1 集合(依赖图按需翻译)", "BuildCombinedIR": "组合本地 stub + 依赖 stubs + 本地 text → out_buf(按需加载)"} \ No newline at end of file diff --git a/.transpyc_cache/605efc3aeda6b7a7.pyi b/.transpyc_cache/605efc3aeda6b7a7.pyi deleted file mode 100644 index 4466a75..0000000 --- a/.transpyc_cache/605efc3aeda6b7a7.pyi +++ /dev/null @@ -1,60 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.StubMerger.py -Module: lib.core.StubMerger -""" - - -import t, c -from stdint import * -import memhub -import string -import stdio -import stdlib -import llvmlite -import w32.win32file as win32file -import w32.win32base as win32base -import w32.fileio as fileio -import viperlib -import sys -import ast -import lib.core.IncludesScanner as IncludesScanner -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesTranslator as HandlesTranslator - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -MAX_INCLUDES_SHA1: t.CDefine = 256 -STUB_READ_BUF_SIZE: t.CDefine = 262144 -MAX_INCLUDES: t.CDefine = 256 - -def _load_includes_sha1_set(pool: memhub.MemBuddy | t.CPtr, temp_dir: str, sha1_set: str) -> int: pass - -def _is_in_sha1_set(sha1: str, sha1_set: str, set_count: int) -> int: pass - -def WriteIncludesSha1Map(mb: memhub.MemBuddy | t.CPtr, temp_dir: str, scan_result: IncludesScanner.ScanResult | t.CPtr, filter_set: t.CChar | t.CPtr, filter_count: int) -> int: pass - -def _IsFuncDeclaredOrDefined(out_buf: bytes, func_sig: str) -> int: pass - -def _CommentOutDeclareInBuf(out_buf: bytes, func_sig: str) -> int: pass - -def _CommentOutGlobalInBuf(out_buf: bytes, global_name: str) -> int: pass - -def _CommentOutOpaqueTypeInBuf(out_buf: bytes, type_name_prefix: str) -> int: pass - -def _HasFullTypeDefinition(out_buf: bytes, type_name_prefix: str) -> int: pass - -def _LoadAndAppendStub(temp_dir: str, td_len: t.CSizeT, dep_sha1: str, dep_buf: bytes, out_buf: bytes, out_size: t.CSizeT, out_pos: t.CSizeT) -> t.CSizeT: pass - -def _LoadAndAppendTextDeclares(temp_dir: str, td_len: t.CSizeT, dep_sha1: str, dep_buf: bytes, out_buf: bytes, out_size: t.CSizeT, out_pos: t.CSizeT) -> t.CSizeT: pass - -def _PathToModuleName(path: str) -> str: pass - -def _BuildIncludesSha1Map(temp_dir: str, td_len: t.CSizeT, sha1_list: t.CChar | t.CPtr, mod_list: t.CChar | t.CPtr) -> int: pass - -def _FindSha1ByModName(sha1_arr: t.CChar | t.CPtr, mod_arr: t.CChar | t.CPtr, count: int, mod_name: str) -> str: pass - -def _AddSha1ToSet(set_buf: t.CChar | t.CPtr, count: int, sha1: str) -> int: pass - -def _BuildReachableSha1Set(mb: memhub.MemBuddy | t.CPtr, source_dir: str, temp_dir: str, reachable_set: t.CChar | t.CPtr) -> int: pass - -def BuildCombinedIR(temp_dir: str, local_sha1: str, out_buf: bytes, out_size: t.CSizeT) -> t.CSizeT: pass diff --git a/.transpyc_cache/62cc01c2bb770ca3.pyi b/.transpyc_cache/62cc01c2bb770ca3.pyi deleted file mode 100644 index 17b1307..0000000 --- a/.transpyc_cache/62cc01c2bb770ca3.pyi +++ /dev/null @@ -1,77 +0,0 @@ -""" -Auto-generated Python stub file from vrandom.py -Module: vrandom -""" - - -import t, c -import vipermath - -RDRAND_RETRY_LIMIT: t.CDefine = 10 -RDSEED_RETRY_LIMIT: t.CDefine = 100 - -def rdrand16() -> t.CUInt16T: pass - -def rdrand32() -> t.CUInt32T: pass - -def rdrand64() -> t.CUInt64T: pass - -def rdseed16() -> t.CUInt16T: pass - -def rdseed32() -> t.CUInt32T: pass - -def rdseed64() -> t.CUInt64T: pass - -def rdrand16_step(p: t.CUInt16T | t.CPtr) -> t.CInt: pass - -def rdrand32_step(p: t.CUInt32T | t.CPtr) -> t.CInt: pass - -def rdrand64_step(p: t.CUInt64T | t.CPtr) -> t.CInt: pass - -def rdseed16_step(p: t.CUInt16T | t.CPtr) -> t.CInt: pass - -def rdseed32_step(p: t.CUInt32T | t.CPtr) -> t.CInt: pass - -def rdseed64_step(p: t.CUInt64T | t.CPtr) -> t.CInt: pass - -def random_u16() -> t.CUInt16T: pass - -def random_u32() -> t.CUInt32T: pass - -def random_u64() -> t.CUInt64T: pass - -def seed_u16() -> t.CUInt16T: pass - -def seed_u32() -> t.CUInt32T: pass - -def seed_u64() -> t.CUInt64T: pass - -def randint(a: t.CInt, b: t.CInt) -> t.CInt: pass - -def randrange(start: t.CInt, stop: t.CInt, step: t.CInt) -> t.CInt: pass - -def getrandbits(k: t.CInt) -> t.CUInt64T: pass - -def random() -> t.CDouble: pass - -def uniform(a: t.CDouble, b: t.CDouble) -> t.CDouble: pass - -def triangular(low: t.CDouble, high: t.CDouble, mode: t.CDouble) -> t.CDouble: pass - -def betavariate(alpha: t.CDouble, beta: t.CDouble) -> t.CDouble: pass - -def expovariate(lambd: t.CDouble) -> t.CDouble: pass - -def gammavariate(alpha: t.CDouble, beta: t.CDouble) -> t.CDouble: pass - -def gauss(mu: t.CDouble, sigma: t.CDouble) -> t.CDouble: pass - -def normalvariate(mu: t.CDouble, sigma: t.CDouble) -> t.CDouble: pass - -def lognormvariate(mu: t.CDouble, sigma: t.CDouble) -> t.CDouble: pass - -def vonmisesvariate(mu: t.CDouble, kappa: t.CDouble) -> t.CDouble: pass - -def paretovariate(alpha: t.CDouble) -> t.CDouble: pass - -def weibullvariate(alpha: t.CDouble, beta: t.CDouble) -> t.CDouble: pass diff --git a/.transpyc_cache/64ac83614c9bdbc6.doc.json b/.transpyc_cache/64ac83614c9bdbc6.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/64ac83614c9bdbc6.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/64ac83614c9bdbc6.pyi b/.transpyc_cache/64ac83614c9bdbc6.pyi deleted file mode 100644 index 60711e1..0000000 --- a/.transpyc_cache/64ac83614c9bdbc6.pyi +++ /dev/null @@ -1,85 +0,0 @@ -""" -Auto-generated Python stub file from definetest.py -Module: definetest -""" - - -import t, c -from t import CInt, CInt32T, CUInt32T, CUInt64T, CFloat64T, CPtr, CChar, CDefine, CUInt16T -import viperlib -import stdlib -import platmacro - -MAX_SIZE: t.CDefine = 1024 -MIN_VAL: t.CDefine = 0 -MAX_VAL: t.CDefine = 100 -MASK_BYTE: t.CDefine = 0xFF -SHIFT_BITS: t.CDefine = 8 -PI_INT: t.CDefine = 3 -ENABLED: t.CDefine = 1 -DISABLED: t.CDefine = 0 -PAGE_SIZE: t.CDefine = 4096 -BUFFER_LEN: t.CDefine = 256 -CODE_SEG: t.CDefine | t.CUInt16T = 0x08 -DATA_SEG: t.CDefine | t.CUInt16T = 0x10 -STACK_SEG: t.CDefine | t.CUInt16T = 0x20 - -def MAKE_FLAG(bit: CInt32T) -> t.CDefine: - return 1 << bit - -def CLAMP(x: CInt32T, lo: CInt32T, hi: CInt32T) -> t.CDefine: - if x < lo: - return lo - if x > hi: - return hi - return x - -def test_basic_define() -> CInt: pass - -def test_define_arithmetic() -> CInt: pass - -def test_define_conditional() -> CInt: pass - -def test_define_loop() -> CInt: pass - -def test_typed_define() -> CInt: pass - -def test_define_function() -> CInt: pass - -def test_define_clamp() -> CInt: pass - -def test_define_string() -> CInt: pass - -def test_define_combined() -> CInt: pass - -def test_cif_basic() -> CInt: pass - -def test_cif_elif_else() -> CInt: pass - -def test_cifdef_cifndef() -> CInt: pass - -def test_cif_platform() -> CInt: pass - -def test_cif_nested() -> CInt: pass - -def test_cif_expr() -> CInt: pass - -def test_platmacro_platform() -> CInt: pass - -def test_platmacro_sizes() -> CInt: pass - -def test_platmacro_endian() -> CInt: pass - -def test_platmacro_features() -> CInt: pass - -def test_platmacro_align() -> CInt: pass - -def test_cifdef_cross_module() -> CInt: pass - -def test_cifdef_guard() -> CInt: pass - -def test_cifdef_undefined() -> CInt: pass - -def test_cifdef_complex() -> CInt: pass - -def define_main() -> CInt: pass diff --git a/.transpyc_cache/6503c97dde0c79c4.pyi b/.transpyc_cache/6503c97dde0c79c4.pyi deleted file mode 100644 index d332326..0000000 --- a/.transpyc_cache/6503c97dde0c79c4.pyi +++ /dev/null @@ -1,189 +0,0 @@ -""" -Auto-generated Python stub file from posix.py -Module: posix -""" - - -import t, c -from stdint import * - -DIR: t.CTypedef = t.CVoid | t.CPtr -mode_t: t.CTypedef = t.CUInt32T -pid_t: t.CTypedef = t.CInt32T -off_t: t.CTypedef = t.CInt64T -dev_t: t.CTypedef = t.CUInt64T -ino_t: t.CTypedef = t.CUInt64T -nlink_t: t.CTypedef = t.CUInt64T -uid_t: t.CTypedef = t.CUInt32T -gid_t: t.CTypedef = t.CUInt32T -blksize_t: t.CTypedef = t.CInt64T -blkcnt_t: t.CTypedef = t.CInt64T -time_t: t.CTypedef = t.CInt64T -O_RDONLY: t.CDefine = 0 -O_WRONLY: t.CDefine = 1 -O_RDWR: t.CDefine = 2 -O_CREAT: t.CDefine = 0o100 -O_EXCL: t.CDefine = 0o200 -O_TRUNC: t.CDefine = 0o1000 -O_APPEND: t.CDefine = 0o2000 -O_NONBLOCK: t.CDefine = 0o4000 -O_CLOEXEC: t.CDefine = 0o2000000 -F_OK: t.CDefine = 0 # 文件存在 -R_OK: t.CDefine = 4 # 可读 -W_OK: t.CDefine = 2 # 可写 -X_OK: t.CDefine = 1 # 可执行 -S_IFMT: t.CDefine = 0o170000 # 类型掩码 -S_IFSOCK: t.CDefine = 0o140000 # 套接字 -S_IFLNK: t.CDefine = 0o120000 # 符号链接 -S_IFREG: t.CDefine = 0o100000 # 普通文件 -S_IFBLK: t.CDefine = 0o060000 # 块设备 -S_IFDIR: t.CDefine = 0o040000 # 目录 -S_IFCHR: t.CDefine = 0o020000 # 字符设备 -S_IFIFO: t.CDefine = 0o010000 # FIFO/管道 -S_ISUID: t.CDefine = 0o4000 # set-user-ID -S_ISGID: t.CDefine = 0o2000 # set-group-ID -S_ISVTX: t.CDefine = 0o1000 # sticky 位 -S_IRWXU: t.CDefine = 0o700 # 用户读写执行 -S_IRUSR: t.CDefine = 0o400 # 用户读 -S_IWUSR: t.CDefine = 0o200 # 用户写 -S_IXUSR: t.CDefine = 0o100 # 用户执行 -S_IRWXG: t.CDefine = 0o070 # 组读写执行 -S_IRGRP: t.CDefine = 0o040 # 组读 -S_IWGRP: t.CDefine = 0o020 # 组写 -S_IXGRP: t.CDefine = 0o010 # 组执行 -S_IRWXO: t.CDefine = 0o007 # 其他读写执行 -S_IROTH: t.CDefine = 0o004 # 其他读 -S_IWOTH: t.CDefine = 0o002 # 其他写 -S_IXOTH: t.CDefine = 0o001 # 其他执行 -SEEK_SET: t.CDefine = 0 -SEEK_CUR: t.CDefine = 1 -SEEK_END: t.CDefine = 2 -PATH_MAX: t.CDefine = 4096 -NAME_MAX: t.CDefine = 255 -_SC_NPROCESSORS_ONLN: t.CDefine = 84 -_SC_PAGESIZE: t.CDefine = 30 -_SC_CLK_TCK: t.CDefine = 2 -DT_UNKNOWN: t.CDefine = 0 -DT_FIFO: t.CDefine = 1 -DT_CHR: t.CDefine = 2 -DT_DIR: t.CDefine = 4 -DT_BLK: t.CDefine = 6 -DT_REG: t.CDefine = 8 -DT_LNK: t.CDefine = 10 -DT_SOCK: t.CDefine = 12 -DT_WHT: t.CDefine = 14 -WNOHANG: t.CDefine = 1 -WUNTRACED: t.CDefine = 2 -WCONTINUED: t.CDefine = 8 - -class Stat: - st_dev: dev_t - st_ino: ino_t - st_nlink: nlink_t - st_mode: mode_t - st_uid: uid_t - st_gid: gid_t - __pad0: INT - st_rdev: dev_t - st_size: off_t - st_blksize: blksize_t - st_blocks: blkcnt_t - st_atim_sec: time_t - st_atim_nsec: LONGLONG - st_mtim_sec: time_t - st_mtim_nsec: LONGLONG - st_ctim_sec: time_t - st_ctim_nsec: LONGLONG - __unused0: LONGLONG - __unused1: LONGLONG - __unused2: LONGLONG -class Dirent: - d_ino: ino_t - d_off: off_t - d_reclen: USHORT - d_type: BYTE - d_name: CHARPTR - -def open(path: t.CConst | str, oflag: INT, *args) -> INT | t.State: pass - -def close(fd: INT) -> INT | t.State: pass - -def read(fd: INT, buf: bytes, count: t.CSizeT) -> ssize_t | t.State: pass - -def write(fd: INT, buf: t.CConst | bytes, count: t.CSizeT) -> ssize_t | t.State: pass - -def lseek(fd: INT, offset: off_t, whence: INT) -> off_t | t.State: pass - -def unlink(path: t.CConst | str) -> INT | t.State: pass - -def access(path: t.CConst | str, amode: INT) -> INT | t.State: pass - -def realpath(path: t.CConst | str, resolved: CHARPTR) -> CHARPTR | t.State: pass - -def rename(oldpath: t.CConst | str, newpath: t.CConst | str) -> INT | t.State: pass - -def chmod(path: t.CConst | str, mode: mode_t) -> INT | t.State: pass - -def stat(path: t.CConst | str, buf: Stat | t.CPtr) -> INT | t.State: pass - -def fstat(fd: INT, buf: Stat | t.CPtr) -> INT | t.State: pass - -def opendir(name: t.CConst | str) -> DIR | t.CPtr | t.State: pass - -def readdir(dirp: DIR | t.CPtr) -> Dirent | t.CPtr | t.State: pass - -def closedir(dirp: DIR | t.CPtr) -> INT | t.State: pass - -def mkdir(path: t.CConst | str, mode: mode_t) -> INT | t.State: pass - -def rmdir(path: t.CConst | str) -> INT | t.State: pass - -def getcwd(buf: CHARPTR, size: t.CSizeT) -> CHARPTR | t.State: pass - -def chdir(path: t.CConst | str) -> INT | t.State: pass - -def fork() -> pid_t | t.State: pass - -def execvp(file: t.CConst | str, argv: CHARPTR | t.CPtr) -> INT | t.State: pass - -def execv(path: t.CConst | str, argv: CHARPTR | t.CPtr) -> INT | t.State: pass - -def waitpid(pid: pid_t, status: INT | t.CPtr, options: INT) -> pid_t | t.State: pass - -def pipe(fds: INT | t.CPtr) -> INT | t.State: pass - -def dup2(oldfd: INT, newfd: INT) -> INT | t.State: pass - -def _exit(status: INT) -> t.CVoid | t.State: pass - -def getpid() -> pid_t | t.State: pass - -def getenv(name: t.CConst | str) -> CHARPTR | t.State: pass - -def setenv(name: t.CConst | str, value: t.CConst | str, overwrite: INT) -> INT | t.State: pass - -def sysconf(name: INT) -> LONG | t.State: pass - -def isatty(fd: INT) -> INT | t.State: pass - -def S_ISREG(mode: mode_t) -> bool: pass - -def S_ISDIR(mode: mode_t) -> bool: pass - -def S_ISLNK(mode: mode_t) -> bool: pass - -def S_ISCHR(mode: mode_t) -> bool: pass - -def S_ISBLK(mode: mode_t) -> bool: pass - -def S_ISFIFO(mode: mode_t) -> bool: pass - -def S_ISSOCK(mode: mode_t) -> bool: pass - -def WIFEXITED(status: INT) -> bool: pass - -def WEXITSTATUS(status: INT) -> INT: pass - -def WIFSIGNALED(status: INT) -> bool: pass - -def WTERMSIG(status: INT) -> INT: pass diff --git a/.transpyc_cache/6521d5529dba8eba.doc.json b/.transpyc_cache/6521d5529dba8eba.doc.json deleted file mode 100644 index 4dba15e..0000000 --- a/.transpyc_cache/6521d5529dba8eba.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"ReturnHandle": "Return 语句处理器:继承 Mixin 获得 Trans 回指针", "ReturnHandle.Handle": "翻译 Return 语句"} \ No newline at end of file diff --git a/.transpyc_cache/6521d5529dba8eba.pyi b/.transpyc_cache/6521d5529dba8eba.pyi deleted file mode 100644 index abcbbff..0000000 --- a/.transpyc_cache/6521d5529dba8eba.pyi +++ /dev/null @@ -1,23 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesReturn.py -Module: lib.core.Handles.HandlesReturn -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar - -@t.NoVTable -class ReturnHandle(HandlesBase.Mixin): - def __init__(self: ReturnHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def Handle(self: ReturnHandle, node: ast.AST | t.CPtr) -> int: pass - -def NewReturnHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ReturnHandle | t.CPtr: pass diff --git a/.transpyc_cache/657e182b27c2a022.pyi b/.transpyc_cache/657e182b27c2a022.pyi deleted file mode 100644 index 0a2057d..0000000 --- a/.transpyc_cache/657e182b27c2a022.pyi +++ /dev/null @@ -1,226 +0,0 @@ -""" -Auto-generated Python stub file from ast.stmts.py -Module: ast.stmts -""" - - -import t, c -from stdint import * -import memhub -import string -from .base import AST, ASTKind, ASTCtx, OpKind, _init_ast, _copy_str, _set_parent_list, _emit, _emit_str, _emit_int, _dump_list, FLAG_IS_ASYNC - -@t.CVTable -class Module(AST): - def __new__(self: Module, pool: memhub.MemManager | t.CPtr) -> t.CInt: pass - def __init__(self: Module, pool: memhub.MemManager | t.CPtr) -> t.CInt: pass - def kind(self: Module) -> t.CInt: pass - def type_name(self: Module) -> str: pass - def dump(self: Module, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class Assign(AST): - targets: list[AST | t.CPtr] | t.CPtr - value: AST | t.CPtr - def __new__(self: Assign, pool: memhub.MemManager | t.CPtr, targets: list[AST | t.CPtr] | t.CPtr, value: AST | t.CPtr) -> t.CInt: pass - def __init__(self: Assign, pool: memhub.MemManager | t.CPtr, targets: list[AST | t.CPtr] | t.CPtr, value: AST | t.CPtr) -> t.CInt: pass - def kind(self: Assign) -> t.CInt: pass - def type_name(self: Assign) -> str: pass - def dump(self: Assign, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class If(AST): - test: AST | t.CPtr - orelse: list[AST | t.CPtr] | t.CPtr - def __new__(self: If, pool: memhub.MemManager | t.CPtr, test: AST | t.CPtr, orelse: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def __init__(self: If, pool: memhub.MemManager | t.CPtr, test: AST | t.CPtr, orelse: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def kind(self: If) -> t.CInt: pass - def type_name(self: If) -> str: pass - def dump(self: If, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class For(AST): - target: AST | t.CPtr - iter: AST | t.CPtr - orelse: list[AST | t.CPtr] | t.CPtr - flags: t.CInt - def __new__(self: For, pool: memhub.MemManager | t.CPtr, target: AST | t.CPtr, iter: AST | t.CPtr, orelse: list[AST | t.CPtr] | t.CPtr, is_async: t.CInt) -> t.CInt: pass - def __init__(self: For, pool: memhub.MemManager | t.CPtr, target: AST | t.CPtr, iter: AST | t.CPtr, orelse: list[AST | t.CPtr] | t.CPtr, is_async: t.CInt) -> t.CInt: pass - def kind(self: For) -> t.CInt: pass - def type_name(self: For) -> str: pass - def dump(self: For, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class While(AST): - test: AST | t.CPtr - orelse: list[AST | t.CPtr] | t.CPtr - def __new__(self: While, pool: memhub.MemManager | t.CPtr, test: AST | t.CPtr, orelse: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def __init__(self: While, pool: memhub.MemManager | t.CPtr, test: AST | t.CPtr, orelse: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def kind(self: While) -> t.CInt: pass - def type_name(self: While) -> str: pass - def dump(self: While, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class Return(AST): - value: AST | t.CPtr - def __new__(self: Return, pool: memhub.MemManager | t.CPtr, value: AST | t.CPtr) -> t.CInt: pass - def __init__(self: Return, pool: memhub.MemManager | t.CPtr, value: AST | t.CPtr) -> t.CInt: pass - def kind(self: Return) -> t.CInt: pass - def type_name(self: Return) -> str: pass - def dump(self: Return, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class Expr(AST): - value: AST | t.CPtr - def __new__(self: Expr, pool: memhub.MemManager | t.CPtr, value: AST | t.CPtr) -> t.CInt: pass - def __init__(self: Expr, pool: memhub.MemManager | t.CPtr, value: AST | t.CPtr) -> t.CInt: pass - def kind(self: Expr) -> t.CInt: pass - def type_name(self: Expr) -> str: pass - def dump(self: Expr, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class FunctionDef(AST): - name: str - args: AST | t.CPtr - decorator_list: list[AST | t.CPtr] | t.CPtr - returns: AST | t.CPtr - flags: t.CInt - def __new__(self: FunctionDef, pool: memhub.MemManager | t.CPtr, name: str, args: AST | t.CPtr, decorator_list: list[AST | t.CPtr] | t.CPtr, returns: AST | t.CPtr, is_async: t.CInt) -> t.CInt: pass - def __init__(self: FunctionDef, pool: memhub.MemManager | t.CPtr, name: str, args: AST | t.CPtr, decorator_list: list[AST | t.CPtr] | t.CPtr, returns: AST | t.CPtr, is_async: t.CInt) -> t.CInt: pass - def kind(self: FunctionDef) -> t.CInt: pass - def type_name(self: FunctionDef) -> str: pass - def dump(self: FunctionDef, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class Expression(AST): - body: AST | t.CPtr - def __new__(self: Expression, pool: memhub.MemManager | t.CPtr, body: AST | t.CPtr) -> t.CInt: pass - def __init__(self: Expression, pool: memhub.MemManager | t.CPtr, body: AST | t.CPtr) -> t.CInt: pass - def kind(self: Expression) -> t.CInt: pass - def type_name(self: Expression) -> str: pass - def dump(self: Expression, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class Interactive(AST): - body: AST | t.CPtr - def __new__(self: Interactive, pool: memhub.MemManager | t.CPtr, body: AST | t.CPtr) -> t.CInt: pass - def __init__(self: Interactive, pool: memhub.MemManager | t.CPtr, body: AST | t.CPtr) -> t.CInt: pass - def kind(self: Interactive) -> t.CInt: pass - def type_name(self: Interactive) -> str: pass - def dump(self: Interactive, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class FunctionType(AST): - argtypes: list[AST | t.CPtr] | t.CPtr - returns: AST | t.CPtr - def __new__(self: FunctionType, pool: memhub.MemManager | t.CPtr, argtypes: list[AST | t.CPtr] | t.CPtr, returns: AST | t.CPtr) -> t.CInt: pass - def __init__(self: FunctionType, pool: memhub.MemManager | t.CPtr, argtypes: list[AST | t.CPtr] | t.CPtr, returns: AST | t.CPtr) -> t.CInt: pass - def kind(self: FunctionType) -> t.CInt: pass - def type_name(self: FunctionType) -> str: pass - def dump(self: FunctionType, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class ClassDef(AST): - name: str - bases: list[AST | t.CPtr] | t.CPtr - keywords: list[AST | t.CPtr] | t.CPtr - decorator_list: list[AST | t.CPtr] | t.CPtr - type_params: list[str] | t.CPtr - def __new__(self: ClassDef, pool: memhub.MemManager | t.CPtr, name: str, bases: list[AST | t.CPtr] | t.CPtr, keywords: list[AST | t.CPtr] | t.CPtr, decorator_list: list[AST | t.CPtr] | t.CPtr, type_params: list[str] | t.CPtr) -> t.CInt: pass - def __init__(self: ClassDef, pool: memhub.MemManager | t.CPtr, name: str, bases: list[AST | t.CPtr] | t.CPtr, keywords: list[AST | t.CPtr] | t.CPtr, decorator_list: list[AST | t.CPtr] | t.CPtr, type_params: list[str] | t.CPtr) -> t.CInt: pass - def kind(self: ClassDef) -> t.CInt: pass - def type_name(self: ClassDef) -> str: pass - def dump(self: ClassDef, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class Delete(AST): - targets: list[AST | t.CPtr] | t.CPtr - def __new__(self: Delete, pool: memhub.MemManager | t.CPtr, targets: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def __init__(self: Delete, pool: memhub.MemManager | t.CPtr, targets: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def kind(self: Delete) -> t.CInt: pass - def type_name(self: Delete) -> str: pass - def dump(self: Delete, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class AugAssign(AST): - target: AST | t.CPtr - op: t.CInt - value: AST | t.CPtr - def __new__(self: AugAssign, pool: memhub.MemManager | t.CPtr, target: AST | t.CPtr, op: t.CInt, value: AST | t.CPtr) -> t.CInt: pass - def __init__(self: AugAssign, pool: memhub.MemManager | t.CPtr, target: AST | t.CPtr, op: t.CInt, value: AST | t.CPtr) -> t.CInt: pass - def kind(self: AugAssign) -> t.CInt: pass - def type_name(self: AugAssign) -> str: pass - def dump(self: AugAssign, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class AnnAssign(AST): - target: AST | t.CPtr - annotation: AST | t.CPtr - value: AST | t.CPtr - simple: t.CInt - def __new__(self: AnnAssign, pool: memhub.MemManager | t.CPtr, target: AST | t.CPtr, annotation: AST | t.CPtr, value: AST | t.CPtr, simple: t.CInt) -> t.CInt: pass - def __init__(self: AnnAssign, pool: memhub.MemManager | t.CPtr, target: AST | t.CPtr, annotation: AST | t.CPtr, value: AST | t.CPtr, simple: t.CInt) -> t.CInt: pass - def kind(self: AnnAssign) -> t.CInt: pass - def type_name(self: AnnAssign) -> str: pass - def dump(self: AnnAssign, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class With(AST): - items: list[AST | t.CPtr] | t.CPtr - flags: t.CInt - def __new__(self: With, pool: memhub.MemManager | t.CPtr, items: list[AST | t.CPtr] | t.CPtr, is_async: t.CInt) -> t.CInt: pass - def __init__(self: With, pool: memhub.MemManager | t.CPtr, items: list[AST | t.CPtr] | t.CPtr, is_async: t.CInt) -> t.CInt: pass - def kind(self: With) -> t.CInt: pass - def type_name(self: With) -> str: pass - def dump(self: With, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class Raise(AST): - exc: AST | t.CPtr - cause: AST | t.CPtr - def __new__(self: Raise, pool: memhub.MemManager | t.CPtr, exc: AST | t.CPtr, cause: AST | t.CPtr) -> t.CInt: pass - def __init__(self: Raise, pool: memhub.MemManager | t.CPtr, exc: AST | t.CPtr, cause: AST | t.CPtr) -> t.CInt: pass - def kind(self: Raise) -> t.CInt: pass - def type_name(self: Raise) -> str: pass - def dump(self: Raise, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class Try(AST): - handlers: list[AST | t.CPtr] | t.CPtr - orelse: list[AST | t.CPtr] | t.CPtr - finalbody: list[AST | t.CPtr] | t.CPtr - def __new__(self: Try, pool: memhub.MemManager | t.CPtr, handlers: list[AST | t.CPtr] | t.CPtr, orelse: list[AST | t.CPtr] | t.CPtr, finalbody: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def __init__(self: Try, pool: memhub.MemManager | t.CPtr, handlers: list[AST | t.CPtr] | t.CPtr, orelse: list[AST | t.CPtr] | t.CPtr, finalbody: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def kind(self: Try) -> t.CInt: pass - def type_name(self: Try) -> str: pass - def dump(self: Try, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class Assert(AST): - test: AST | t.CPtr - msg: AST | t.CPtr - def __new__(self: Assert, pool: memhub.MemManager | t.CPtr, test: AST | t.CPtr, msg: AST | t.CPtr) -> t.CInt: pass - def __init__(self: Assert, pool: memhub.MemManager | t.CPtr, test: AST | t.CPtr, msg: AST | t.CPtr) -> t.CInt: pass - def kind(self: Assert) -> t.CInt: pass - def type_name(self: Assert) -> str: pass - def dump(self: Assert, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class Global(AST): - names: list[AST | t.CPtr] | t.CPtr - def __new__(self: Global, pool: memhub.MemManager | t.CPtr, names: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def __init__(self: Global, pool: memhub.MemManager | t.CPtr, names: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def kind(self: Global) -> t.CInt: pass - def type_name(self: Global) -> str: pass - def dump(self: Global, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class Nonlocal(AST): - names: list[AST | t.CPtr] | t.CPtr - def __new__(self: Nonlocal, pool: memhub.MemManager | t.CPtr, names: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def __init__(self: Nonlocal, pool: memhub.MemManager | t.CPtr, names: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def kind(self: Nonlocal) -> t.CInt: pass - def type_name(self: Nonlocal) -> str: pass - def dump(self: Nonlocal, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class Pass(AST): - def __new__(self: Pass, pool: memhub.MemManager | t.CPtr) -> t.CInt: pass - def __init__(self: Pass, pool: memhub.MemManager | t.CPtr) -> t.CInt: pass - def kind(self: Pass) -> t.CInt: pass - def type_name(self: Pass) -> str: pass - def dump(self: Pass, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class Break(AST): - def __new__(self: Break, pool: memhub.MemManager | t.CPtr) -> t.CInt: pass - def __init__(self: Break, pool: memhub.MemManager | t.CPtr) -> t.CInt: pass - def kind(self: Break) -> t.CInt: pass - def type_name(self: Break) -> str: pass - def dump(self: Break, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class Continue(AST): - def __new__(self: Continue, pool: memhub.MemManager | t.CPtr) -> t.CInt: pass - def __init__(self: Continue, pool: memhub.MemManager | t.CPtr) -> t.CInt: pass - def kind(self: Continue) -> t.CInt: pass - def type_name(self: Continue) -> str: pass - def dump(self: Continue, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class Import(AST): - names: list[AST | t.CPtr] | t.CPtr - def __new__(self: Import, pool: memhub.MemManager | t.CPtr, names: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def __init__(self: Import, pool: memhub.MemManager | t.CPtr, names: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def kind(self: Import) -> t.CInt: pass - def type_name(self: Import) -> str: pass - def dump(self: Import, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class ImportFrom(AST): - module: str - names: list[AST | t.CPtr] | t.CPtr - level: t.CInt - def __new__(self: ImportFrom, pool: memhub.MemManager | t.CPtr, module: str, names: list[AST | t.CPtr] | t.CPtr, level: t.CInt) -> t.CInt: pass - def __init__(self: ImportFrom, pool: memhub.MemManager | t.CPtr, module: str, names: list[AST | t.CPtr] | t.CPtr, level: t.CInt) -> t.CInt: pass - def kind(self: ImportFrom) -> t.CInt: pass - def type_name(self: ImportFrom) -> str: pass - def dump(self: ImportFrom, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass -class Match(AST): - subject: AST | t.CPtr - cases: list[AST | t.CPtr] | t.CPtr - def __new__(self: Match, pool: memhub.MemManager | t.CPtr, subject: AST | t.CPtr, cases: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def __init__(self: Match, pool: memhub.MemManager | t.CPtr, subject: AST | t.CPtr, cases: list[AST | t.CPtr] | t.CPtr) -> t.CInt: pass - def kind(self: Match) -> t.CInt: pass - def type_name(self: Match) -> str: pass - def dump(self: Match, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass \ No newline at end of file diff --git a/.transpyc_cache/65c212dc0785f1aa.doc.json b/.transpyc_cache/65c212dc0785f1aa.doc.json deleted file mode 100644 index a8e6f20..0000000 --- a/.transpyc_cache/65c212dc0785f1aa.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_is_cenum_base": "检查 base 节点是否为 t.CEnum,返回 1=是 / 0=否", "_is_enum_class": "检查 ClassDef 是否继承自 t.CEnum,返回 1=是 / 0=否", "_is_cunion_base": "检查 base 节点是否为 t.CUnion,返回 1=是 / 0=否", "_is_union_class": "检查 ClassDef 是否继承自 t.CUnion,返回 1=是 / 0=否", "_has_decorator": "检查 decorator_list 中是否有指定装饰器名", "_is_marker_base": "检查基类名是否为标记基类,返回 1=是 / 0=否", "_get_base_name": "从 base AST 节点提取基类名,返回 None=失败", "_get_parent_class": "获取 ClassDef 的真实父类名,返回 None=无真实父类", "_has_any_func_cvtable": "检查类中是否有任何函数标记了 @t.CVTable,返回 1=有 / 0=无", "_should_method_be_virtual": "判断方法是否应该进入虚表,返回 1=包含 / 0=排除", "_detect_vtable_status": "检测类是否应该启用虚表", "_resolve_enum_member_type": "解析枚举成员的类型注解为 LLVM 整数类型", "_is_state_annotation": "检查注解节点是否为 t.State,返回 1=是 / 0=否", "_extract_int_value": "从 AST 节点提取整数值,失败返回 0", "_translate_enum_def": "翻译枚举类定义,返回 0", "_get_type_size": "计算 LLVM 类型的字节大小", "_translate_union_def": "翻译联合体定义,返回 0", "_is_generic_class": "检查 ClassDef 是否有类型参数(泛型类),返回 1=是 / 0=否", "_register_generic_template": "注册泛型类模板(类名 + ClassDef 节点)", "_find_generic_template": "查找泛型类模板,返回 ClassDef 节点或 None", "_mangle_generic_class_name": "生成特化类名: list + [int] -> list[int]\n\n 分配新缓冲区拼接,避免原地 strcat 导致缓冲区溢出\n ", "_clone_annotation": "拷贝类型注解表达式,替换类型参数 T 为具体类型名\n\n tp_names: 类型参数名列表 ['T']\n type_args: 类型实参名列表 ['int']\n ", "_clone_arguments": "拷贝 Arguments 节点,替换 arg annotation 中的 T", "_clone_classdef_for_spec": "拷贝 ClassDef 节点用于泛型特化\n\n - 替换类名为 spec_name\n - 清除 type_params(特化后不是泛型类)\n - 拷贝 children 中的 AnnAssign 和 FunctionDef,替换类型注解中的 T\n - 方法体直接引用原始节点(通过 type_map 上下文处理 T)\n ", "_find_cached_spec": "查找已缓存的特化名,未找到返回 None", "_cache_spec": "缓存特化结果", "_specialize_generic_class": "特化泛型类,返回特化类名\n\n 1. 查找泛型模板\n 2. 生成特化名\n 3. 检查缓存\n 4. 拷贝 ClassDef 节点(替换类型注解中的 T)\n 5. 设置 type_map 上下文(用于方法体中的 T 替换)\n 6. 调用 translate_class_def 翻译特化类\n 7. 返回特化名\n ", "translate_class_def": "翻译 class 定义,返回 0", "_vtable_strcat": "将 src 追加到 dst 末尾", "_vtable_name_needs_quote": "检查 LLVM 标识符是否需要引号(以数字开头或含 '.')", "_format_func_type_str": "从 Function 对象生成函数类型字符串", "_generate_vtable": "生成 VTable 全局变量", "_translate_oop_methods": "扫描 class body 中的方法并翻译,生成 __before_init__", "_translate_method": "翻译单个方法,返回 0", "_generate_before_init": "生成 __before_init__ 函数,返回 0"} \ No newline at end of file diff --git a/.transpyc_cache/65c212dc0785f1aa.pyi b/.transpyc_cache/65c212dc0785f1aa.pyi deleted file mode 100644 index 62b2e80..0000000 --- a/.transpyc_cache/65c212dc0785f1aa.pyi +++ /dev/null @@ -1,104 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesClassDef.py -Module: lib.core.Handles.HandlesClassDef -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import viperlib -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesEnum as HandlesEnum - -ENUM_MEMBER_MAX_LOCAL: t.CDefine = 64 - -def _is_cenum_base(base_node: ast.AST | t.CPtr) -> int: pass - -def _is_enum_class(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _is_cunion_base(base_node: ast.AST | t.CPtr) -> int: pass - -def _is_union_class(cd: ast.ClassDef | t.CPtr) -> int: pass - - -_MARKER_BASES: t.CDefine = 8 - -def _has_decorator(decorator_list: list[ast.AST | t.CPtr] | t.CPtr, deco_name: str) -> int: pass - -def _is_marker_base(base_name: str) -> int: pass - -def _get_base_name(base_node: ast.AST | t.CPtr) -> str: pass - -def _get_parent_class(cd: ast.ClassDef | t.CPtr) -> str: pass - -def _has_any_func_cvtable(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _should_method_be_virtual(cd: ast.ClassDef | t.CPtr, fd: ast.FunctionDef | t.CPtr, trans: HT.Translator | t.CPtr) -> int: pass - -def _detect_vtable_status(cd: ast.ClassDef | t.CPtr, trans: HT.Translator | t.CPtr) -> int: pass - -def _resolve_enum_member_type(pool: memhub.MemBuddy | t.CPtr, ann_node: ast.AST | t.CPtr, imported_modules: str, from_imports: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _is_state_annotation(node: ast.AST | t.CPtr) -> int: pass - -def _extract_int_value(node: ast.AST | t.CPtr) -> t.CInt64T: pass - -def _translate_enum_def(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr) -> int: pass - -def _get_type_size(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def _translate_union_def(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr) -> int: pass - - -_generic_class_names: t.CExtern | list[str] | t.CPtr -_generic_class_nodes: t.CExtern | list[ast.ClassDef | t.CPtr] | t.CPtr - -def _is_generic_class(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _register_generic_template(pool: memhub.MemBuddy | t.CPtr, cd: ast.ClassDef | t.CPtr) -> t.CInt: pass - -def _find_generic_template(class_name: str) -> ast.ClassDef | t.CPtr: pass - -def _mangle_generic_class_name(pool: memhub.MemBuddy | t.CPtr, class_name: str, type_args: list[str] | t.CPtr) -> str: pass - -def _clone_annotation(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.AST | t.CPtr: pass - -def _clone_arguments(pool: memhub.MemBuddy | t.CPtr, args: ast.AST | t.CPtr, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.AST | t.CPtr: pass - -def _clone_classdef_for_spec(pool: memhub.MemBuddy | t.CPtr, cd: ast.ClassDef | t.CPtr, spec_name: str, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.ClassDef | t.CPtr: pass - - -_spec_keys: t.CExtern | list[str] | t.CPtr -_spec_names: t.CExtern | list[str] | t.CPtr - -def _find_cached_spec(spec_key: str) -> str: pass - -def _cache_spec(pool: memhub.MemBuddy | t.CPtr, spec_key: str, spec_name: str) -> t.CInt: pass - -def _specialize_generic_class(trans: HT.Translator | t.CPtr, class_name: str, type_args: list[str] | t.CPtr) -> str: pass - -def translate_class_def(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - - -VTBL_METHOD_MAX: t.CDefine = 32 - -def _vtable_strcat(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _vtable_name_needs_quote(name: str) -> int: pass - -def _format_func_type_str(pool: memhub.MemBuddy | t.CPtr, buf: t.CChar | t.CPtr, buf_size: t.CSizeT, func: llvmlite.Function | t.CPtr) -> int: pass - -def _generate_vtable(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr, class_name: str) -> int: pass - -def _translate_oop_methods(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass - -def _translate_method(trans: HT.Translator | t.CPtr, fd: ast.FunctionDef | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass - -def _generate_before_init(trans: HT.Translator | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass diff --git a/.transpyc_cache/663db7700139418e.doc.json b/.transpyc_cache/663db7700139418e.doc.json deleted file mode 100644 index e7fc1ec..0000000 --- a/.transpyc_cache/663db7700139418e.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"TranslateFileGetTrans": "翻译文件,返回 Translator 对象(调用者负责 dump_ir),None 失败", "ensure_dir": "递归创建目录(类似 mkdir -p),目录已存在视为成功\n\n Args:\n path: 目录路径(支持 / 或 \\ 分隔符)\n\n Returns:\n 0 成功(包括目录已存在),非 0 失败\n ", "write_ir_to_file": "将 IR 缓冲区写入 .ll 文件\n\n Args:\n ir_buf: IR 文本缓冲区\n ir_len: IR 文本长度\n output_dir: 输出目录(temp 或 output)\n module_name: 模块名(如 \"main\")\n\n Returns:\n 0 成功,非 0 失败\n ", "compile_ll_to_obj": "调用 llc 将 .ll 编译为 .obj\n\n Args:\n ir_path: .ll 文件路径\n output_dir: 输出目录\n module_name: 模块名(用于生成 .obj 文件名)\n cc_cmd: 编译器命令(如 \"llc\")\n cc_flags: 编译器参数(如 \"-filetype=obj -relocation-model=pic\")\n\n Returns:\n 0 成功,非 0 失败\n ", "collect_obj_files": "扫描 includes_binary_dir 目录,收集所有 .obj 文件路径到 out_buf\n\n Args:\n includes_binary_dir: includes.binary 目录路径\n out_buf: 输出缓冲区(用于存放空格分隔的 .obj 文件路径)\n out_size: 输出缓冲区大小\n\n Returns:\n 写入的字节数(不含 null 终止符),0 表示无文件或错误\n ", "link_obj_to_exe": "调用 clang++ 链接 .obj 为 .exe\n\n Args:\n output_dir: 输出目录(包含 .obj 文件)\n module_name: 模块名\n linker_cmd: 链接器命令(如 \"clang++\")\n linker_flags: 链接器参数\n linker_output: 输出文件名(如 \"test.exe\")\n includes_binary_dir: includes.binary 目录路径(链接时附加预编译 .obj)\n\n Returns:\n 0 成功,非 0 失败\n ", "compile_module_to_obj": "编译 IR 到 .obj(不链接)\n\n Args:\n ir_buf: LLVM IR 文本缓冲区\n ir_len: IR 文本长度\n temp_dir: 临时目录\n output_dir: 输出目录\n module_name: 模块名(SHA1)\n cc_cmd: 编译器命令\n cc_flags: 编译器参数\n\n Returns:\n 0 成功,非 0 失败\n ", "link_objs_to_exe": "链接多个 .obj 文件为 .exe\n\n Args:\n obj_paths: 空格分隔的 .obj 文件完整路径字符串\n obj_paths_len: obj_paths 长度\n linker_cmd: 链接器命令(如 \"clang++\")\n linker_flags: 链接器参数\n linker_output: 输出文件完整路径\n includes_binary_dir: includes.binary 目录路径(链接时附加预编译 .obj)\n\n Returns:\n 0 成功,非 0 失败\n ", "run_pipeline": "执行完整编译管线\n\n Args:\n ir_buf: LLVM IR 文本缓冲区\n ir_len: IR 文本长度\n temp_dir: 临时目录\n output_dir: 输出目录\n module_name: 模块名\n cc_cmd: 编译器命令\n cc_flags: 编译器参数\n linker_cmd: 链接器命令\n linker_flags: 链接器参数\n linker_output: 输出文件名\n includes_binary_dir: includes.binary 目录路径(链接时附加预编译 .obj)\n\n Returns:\n BuildResult 对象\n "} \ No newline at end of file diff --git a/.transpyc_cache/663db7700139418e.pyi b/.transpyc_cache/663db7700139418e.pyi deleted file mode 100644 index 3a8c9c7..0000000 --- a/.transpyc_cache/663db7700139418e.pyi +++ /dev/null @@ -1,50 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.BuildPipeline.py -Module: lib.core.BuildPipeline -""" - - -import t, c -from stdint import * -import stdio -import string -import stdlib -import memhub -import w32.fileio as fileio -import w32.win32file -import w32.win32base -import subprocess -import viperlib -import ast -import lib.core.Handles.HandlesTranslator as HandlesTranslator -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesType as HandlesType - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -SRC_BUF_SIZE: t.CDefine = 1048576 - -def TranslateFileGetTrans(mb: memhub.MemBuddy | t.CPtr, file_path: str, sha1_val: str) -> HandlesTranslator.Translator | t.CPtr: pass - - -class BuildResult: - Success: t.CInt - OutputPath: str - ErrorMsg: str - def __new__(self: BuildResult) -> t.CPtr: pass - def __init__(self: BuildResult) -> t.CInt: pass - -def ensure_dir(path: str) -> int: pass - -def write_ir_to_file(ir_buf: bytes, ir_len: t.CSizeT, output_dir: str, module_name: str) -> int: pass - -def compile_ll_to_obj(ir_path: str, output_dir: str, module_name: str, cc_cmd: str, cc_flags: str) -> int: pass - -def collect_obj_files(includes_binary_dir: str, out_buf: bytes, out_size: t.CSizeT) -> t.CSizeT: pass - -def link_obj_to_exe(output_dir: str, module_name: str, linker_cmd: str, linker_flags: str, linker_output: str, includes_binary_dir: str) -> int: pass - -def compile_module_to_obj(ir_buf: bytes, ir_len: t.CSizeT, temp_dir: str, output_dir: str, module_name: str, cc_cmd: str, cc_flags: str) -> int: pass - -def link_objs_to_exe(obj_paths: str, obj_paths_len: t.CSizeT, linker_cmd: str, linker_flags: str, linker_output: str, includes_binary_dir: str) -> int: pass - -def run_pipeline(ir_buf: bytes, ir_len: t.CSizeT, temp_dir: str, output_dir: str, module_name: str, cc_cmd: str, cc_flags: str, linker_cmd: str, linker_flags: str, linker_output: str, includes_binary_dir: str) -> BuildResult | t.CPtr: pass diff --git a/.transpyc_cache/66de93aaeebc0601.doc.json b/.transpyc_cache/66de93aaeebc0601.doc.json deleted file mode 100644 index 046af31..0000000 --- a/.transpyc_cache/66de93aaeebc0601.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"IfHandle": "if/elif/else 语句处理器:继承 Mixin 获得 Trans 回指针", "IfHandle.Handle": "翻译 if/elif/else 语句"} \ No newline at end of file diff --git a/.transpyc_cache/66de93aaeebc0601.pyi b/.transpyc_cache/66de93aaeebc0601.pyi deleted file mode 100644 index 2981cf3..0000000 --- a/.transpyc_cache/66de93aaeebc0601.pyi +++ /dev/null @@ -1,25 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesIf.py -Module: lib.core.Handles.HandlesIf -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesBody as HandlesBody - -@t.NoVTable -class IfHandle(HandlesBase.Mixin): - def __init__(self: IfHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def Handle(self: IfHandle, node: ast.AST | t.CPtr) -> int: pass - -def NewIfHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> IfHandle | t.CPtr: pass diff --git a/.transpyc_cache/6712b7f4f0f0e65d.doc.json b/.transpyc_cache/6712b7f4f0f0e65d.doc.json deleted file mode 100644 index a8e6f20..0000000 --- a/.transpyc_cache/6712b7f4f0f0e65d.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_is_cenum_base": "检查 base 节点是否为 t.CEnum,返回 1=是 / 0=否", "_is_enum_class": "检查 ClassDef 是否继承自 t.CEnum,返回 1=是 / 0=否", "_is_cunion_base": "检查 base 节点是否为 t.CUnion,返回 1=是 / 0=否", "_is_union_class": "检查 ClassDef 是否继承自 t.CUnion,返回 1=是 / 0=否", "_has_decorator": "检查 decorator_list 中是否有指定装饰器名", "_is_marker_base": "检查基类名是否为标记基类,返回 1=是 / 0=否", "_get_base_name": "从 base AST 节点提取基类名,返回 None=失败", "_get_parent_class": "获取 ClassDef 的真实父类名,返回 None=无真实父类", "_has_any_func_cvtable": "检查类中是否有任何函数标记了 @t.CVTable,返回 1=有 / 0=无", "_should_method_be_virtual": "判断方法是否应该进入虚表,返回 1=包含 / 0=排除", "_detect_vtable_status": "检测类是否应该启用虚表", "_resolve_enum_member_type": "解析枚举成员的类型注解为 LLVM 整数类型", "_is_state_annotation": "检查注解节点是否为 t.State,返回 1=是 / 0=否", "_extract_int_value": "从 AST 节点提取整数值,失败返回 0", "_translate_enum_def": "翻译枚举类定义,返回 0", "_get_type_size": "计算 LLVM 类型的字节大小", "_translate_union_def": "翻译联合体定义,返回 0", "_is_generic_class": "检查 ClassDef 是否有类型参数(泛型类),返回 1=是 / 0=否", "_register_generic_template": "注册泛型类模板(类名 + ClassDef 节点)", "_find_generic_template": "查找泛型类模板,返回 ClassDef 节点或 None", "_mangle_generic_class_name": "生成特化类名: list + [int] -> list[int]\n\n 分配新缓冲区拼接,避免原地 strcat 导致缓冲区溢出\n ", "_clone_annotation": "拷贝类型注解表达式,替换类型参数 T 为具体类型名\n\n tp_names: 类型参数名列表 ['T']\n type_args: 类型实参名列表 ['int']\n ", "_clone_arguments": "拷贝 Arguments 节点,替换 arg annotation 中的 T", "_clone_classdef_for_spec": "拷贝 ClassDef 节点用于泛型特化\n\n - 替换类名为 spec_name\n - 清除 type_params(特化后不是泛型类)\n - 拷贝 children 中的 AnnAssign 和 FunctionDef,替换类型注解中的 T\n - 方法体直接引用原始节点(通过 type_map 上下文处理 T)\n ", "_find_cached_spec": "查找已缓存的特化名,未找到返回 None", "_cache_spec": "缓存特化结果", "_specialize_generic_class": "特化泛型类,返回特化类名\n\n 1. 查找泛型模板\n 2. 生成特化名\n 3. 检查缓存\n 4. 拷贝 ClassDef 节点(替换类型注解中的 T)\n 5. 设置 type_map 上下文(用于方法体中的 T 替换)\n 6. 调用 translate_class_def 翻译特化类\n 7. 返回特化名\n ", "translate_class_def": "翻译 class 定义,返回 0", "_vtable_strcat": "将 src 追加到 dst 末尾", "_vtable_name_needs_quote": "检查 LLVM 标识符是否需要引号(以数字开头或含 '.')", "_format_func_type_str": "从 Function 对象生成函数类型字符串", "_generate_vtable": "生成 VTable 全局变量", "_translate_oop_methods": "扫描 class body 中的方法并翻译,生成 __before_init__", "_translate_method": "翻译单个方法,返回 0", "_generate_before_init": "生成 __before_init__ 函数,返回 0"} \ No newline at end of file diff --git a/.transpyc_cache/6712b7f4f0f0e65d.pyi b/.transpyc_cache/6712b7f4f0f0e65d.pyi deleted file mode 100644 index 62b2e80..0000000 --- a/.transpyc_cache/6712b7f4f0f0e65d.pyi +++ /dev/null @@ -1,104 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesClassDef.py -Module: lib.core.Handles.HandlesClassDef -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import viperlib -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesEnum as HandlesEnum - -ENUM_MEMBER_MAX_LOCAL: t.CDefine = 64 - -def _is_cenum_base(base_node: ast.AST | t.CPtr) -> int: pass - -def _is_enum_class(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _is_cunion_base(base_node: ast.AST | t.CPtr) -> int: pass - -def _is_union_class(cd: ast.ClassDef | t.CPtr) -> int: pass - - -_MARKER_BASES: t.CDefine = 8 - -def _has_decorator(decorator_list: list[ast.AST | t.CPtr] | t.CPtr, deco_name: str) -> int: pass - -def _is_marker_base(base_name: str) -> int: pass - -def _get_base_name(base_node: ast.AST | t.CPtr) -> str: pass - -def _get_parent_class(cd: ast.ClassDef | t.CPtr) -> str: pass - -def _has_any_func_cvtable(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _should_method_be_virtual(cd: ast.ClassDef | t.CPtr, fd: ast.FunctionDef | t.CPtr, trans: HT.Translator | t.CPtr) -> int: pass - -def _detect_vtable_status(cd: ast.ClassDef | t.CPtr, trans: HT.Translator | t.CPtr) -> int: pass - -def _resolve_enum_member_type(pool: memhub.MemBuddy | t.CPtr, ann_node: ast.AST | t.CPtr, imported_modules: str, from_imports: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _is_state_annotation(node: ast.AST | t.CPtr) -> int: pass - -def _extract_int_value(node: ast.AST | t.CPtr) -> t.CInt64T: pass - -def _translate_enum_def(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr) -> int: pass - -def _get_type_size(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def _translate_union_def(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr) -> int: pass - - -_generic_class_names: t.CExtern | list[str] | t.CPtr -_generic_class_nodes: t.CExtern | list[ast.ClassDef | t.CPtr] | t.CPtr - -def _is_generic_class(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _register_generic_template(pool: memhub.MemBuddy | t.CPtr, cd: ast.ClassDef | t.CPtr) -> t.CInt: pass - -def _find_generic_template(class_name: str) -> ast.ClassDef | t.CPtr: pass - -def _mangle_generic_class_name(pool: memhub.MemBuddy | t.CPtr, class_name: str, type_args: list[str] | t.CPtr) -> str: pass - -def _clone_annotation(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.AST | t.CPtr: pass - -def _clone_arguments(pool: memhub.MemBuddy | t.CPtr, args: ast.AST | t.CPtr, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.AST | t.CPtr: pass - -def _clone_classdef_for_spec(pool: memhub.MemBuddy | t.CPtr, cd: ast.ClassDef | t.CPtr, spec_name: str, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.ClassDef | t.CPtr: pass - - -_spec_keys: t.CExtern | list[str] | t.CPtr -_spec_names: t.CExtern | list[str] | t.CPtr - -def _find_cached_spec(spec_key: str) -> str: pass - -def _cache_spec(pool: memhub.MemBuddy | t.CPtr, spec_key: str, spec_name: str) -> t.CInt: pass - -def _specialize_generic_class(trans: HT.Translator | t.CPtr, class_name: str, type_args: list[str] | t.CPtr) -> str: pass - -def translate_class_def(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - - -VTBL_METHOD_MAX: t.CDefine = 32 - -def _vtable_strcat(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _vtable_name_needs_quote(name: str) -> int: pass - -def _format_func_type_str(pool: memhub.MemBuddy | t.CPtr, buf: t.CChar | t.CPtr, buf_size: t.CSizeT, func: llvmlite.Function | t.CPtr) -> int: pass - -def _generate_vtable(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr, class_name: str) -> int: pass - -def _translate_oop_methods(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass - -def _translate_method(trans: HT.Translator | t.CPtr, fd: ast.FunctionDef | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass - -def _generate_before_init(trans: HT.Translator | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass diff --git a/.transpyc_cache/67e6e5ea72c0e13c.doc.json b/.transpyc_cache/67e6e5ea72c0e13c.doc.json deleted file mode 100644 index 6b37383..0000000 --- a/.transpyc_cache/67e6e5ea72c0e13c.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/67e6e5ea72c0e13c.pyi b/.transpyc_cache/67e6e5ea72c0e13c.pyi deleted file mode 100644 index e470478..0000000 --- a/.transpyc_cache/67e6e5ea72c0e13c.pyi +++ /dev/null @@ -1,171 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, args_head: llvmlite.Value | t.CPtr, arg_count: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/68ee8e1ac0994b13.doc.json b/.transpyc_cache/68ee8e1ac0994b13.doc.json deleted file mode 100644 index ca04595..0000000 --- a/.transpyc_cache/68ee8e1ac0994b13.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"reset_visible_structs": "重置可见性状态(每个文件翻译前调用)\n\n pool: 内存分配器(严格模式下创建 HashTable)\n strict: 1=严格模式(用户文件),0=宽松模式(includes 文件)\n ", "add_visible_struct": "添加可见结构体名(类定义时和 from-import 时调用)", "is_struct_visible": "检查结构体是否可见,返回 1=可见 / 0=不可见", "init_struct_table": "初始化结构体注册表,返回 1 成功", "_get_struct_entry": "获取第 i 个结构体条目", "_get_field_entry": "获取结构体中第 i 个字段条目", "register_struct": "注册结构体类型,返回 StructEntry 指针\n\n 用类型指针去重(is 比较),不用类名去重。\n 这样跨模块同名类可以共存,各自有独立的字段定义。\n sha1 参数在注册时直接设置 ModuleSha1(避免 set_struct_sha1 找错 entry)。\n ", "set_struct_sha1": "设置结构体所属模块的 SHA1,返回 1=成功 / 0=失败", "get_struct_sha1": "获取结构体所属模块的 SHA1,返回 None=无 SHA1", "add_field": "向结构体添加字段,返回字段索引(-1 失败)\n\n default_val: 字段默认值 AST 节点(可选,None=无默认值)\n annot_class_name: 原始类型注解的类名(可选,用于联合类型字段的方法调用解析)\n ", "find_struct": "按类名查找结构体,返回 StructEntry 或 None", "find_struct_by_module": "按类名 + SHA1 查找结构体,返回 StructEntry 或 None\n\n SHA1 非 None 时:精确匹配 name+sha1,未找到返回 None(不回退,避免跨模块同名找错)\n SHA1 为 None 时:回退到 find_struct(name) 按类名查找第一个\n ", "find_struct_by_type": "按类型指针查找结构体(is 比较),返回 StructEntry 或 None", "lookup_field": "按结构体类型和字段名查找字段信息\n\n 两遍查找策略(跨模块同名类冲突的根本修复):\n 第一遍: 类型指针 is 身份比较(最高优先级,类型唯一确定 entry)\n 第二遍: 名称回退(is 未匹配时,按类名/strstr 匹配,字段未找到时 continue)\n ", "lookup_field_by_class": "按类名和字段名查找字段信息\n\n 优先用 SHA1 匹配(跨模块同名类区分),无 SHA1 时按类名查找第一个\n ", "get_struct_type": "按类名获取结构体的 LLVM 类型", "get_field_by_index": "按类名和字段索引获取字段信息", "struct_has_defaults": "检查结构体是否有任何带默认值的字段,返回 1=有 / 0=无", "_is_struct_type": "检查 ty 是否是 Struct 类型(独立函数,规避嵌套 match 编译器 BUG)", "get_struct_type_from_value": "从 Value 的类型推断结构体类型", "mark_as_union": "标记已注册的结构体为联合体,返回 1=成功 / 0=失败", "is_union_by_name": "按类名检查是否为联合体,返回 1=是 / 0=否", "is_union_by_type": "按类型指针检查是否为联合体,返回 1=是 / 0=否\n\n 先尝试类型指针 == 比较,失败时回退到名称匹配\n ", "mark_as_oop": "标记已注册的结构体为 OOP,返回 1=成功 / 0=失败", "is_oop_by_name": "按类名检查是否为 OOP 结构体,返回 1=是 / 0=否", "mark_has_init": "标记结构体拥有 __init__ 方法,返回 1=成功 / 0=失败", "has_init_by_name": "按类名检查是否有 __init__ 方法,返回 1=有 / 0=无", "mark_has_new": "标记结构体拥有 __new__ 方法,返回 1=成功 / 0=失败", "has_new_by_name": "按类名检查是否有 __new__ 方法,返回 1=有 / 0=无", "get_class_name_by_type": "按类型指针查找类名,返回类名字符串或 None", "_extract_struct_name": "从 LLVMType 提取 Struct 变体的 Name 字段,返回 None 非 Struct", "mark_has_vtable": "标记结构体拥有虚表,返回 1=成功 / 0=失败", "has_vtable_by_name": "按类名检查是否有虚表,返回 1=有 / 0=无", "mark_novtable": "标记结构体为 NoVTable,返回 1=成功 / 0=失败", "is_novtable_by_name": "按类名检查是否为 NoVTable,返回 1=是 / 0=否", "set_parent_name": "设置结构体的父类名,返回 1=成功 / 0=失败", "get_parent_name": "获取结构体的父类名,返回 None=无父类", "set_vtable_methods": "设置虚表方法名数组,返回 1=成功 / 0=失败", "get_vtable_method_index": "获取方法在虚表中的索引,返回 -1=未找到", "get_vtable_method_count": "获取虚表方法数量", "get_vtable_method_name": "获取虚表中第 idx 个方法名,返回 None=越界", "get_field_count": "获取结构体字段数量,返回 -1=未找到", "get_field_name_ptr": "获取 FieldEntry 的字段名,返回 None=未设置", "get_field_type_ptr": "获取 FieldEntry 的字段类型,返回 None=未设置", "get_field_default_ptr": "获取 FieldEntry 的默认值 AST 节点,返回 None=无默认值", "get_field_annot_class_name": "获取 FieldEntry 的原始类型注解类名,返回 None=未设置"} \ No newline at end of file diff --git a/.transpyc_cache/68ee8e1ac0994b13.pyi b/.transpyc_cache/68ee8e1ac0994b13.pyi deleted file mode 100644 index 24ef0f1..0000000 --- a/.transpyc_cache/68ee8e1ac0994b13.pyi +++ /dev/null @@ -1,139 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesStruct.py -Module: lib.core.Handles.HandlesStruct -""" - - -import t, c -from stdint import * -import memhub -import string -import llvmlite -import stdio -import ast -import hashtable - -STRUCT_MAX: t.CDefine = 512 -FIELD_MAX: t.CDefine = 32 -FIELD_NAME_MAX: t.CDefine = 64 - -@t.NoVTable -class FieldEntry: - Name: t.CChar | t.CPtr - Index: int - Ty: llvmlite.LLVMType | t.CPtr - DefaultVal: ast.AST | t.CPtr - AnnotClassName: str -@t.NoVTable -class StructEntry: - Name: t.CChar | t.CPtr - Ty: llvmlite.LLVMType | t.CPtr - FieldCount: int - Fields: FieldEntry | t.CPtr - IsUnion: int - IsOOP: int - HasInit: int - HasNew: int - HasVTable: int - IsNoVTable: int - ParentName: t.CChar | t.CPtr - VTableMethodCount: int - VTableMethods: t.CChar | t.CPtr - ModuleSha1: t.CChar | t.CPtr - -_struct_table: t.CExtern | StructEntry | t.CPtr -_struct_count: t.CExtern | int -_visible_structs: t.CExtern | hashtable.HashTable | t.CPtr -_strict_visibility: t.CExtern | int - -def reset_visible_structs(pool: memhub.MemBuddy | t.CPtr, strict: int) -> t.CInt: pass - -def add_visible_struct(pool: memhub.MemBuddy | t.CPtr, name: str) -> t.CInt: pass - -def is_struct_visible(name: str) -> int: pass - -def init_struct_table(pool: memhub.MemBuddy | t.CPtr) -> int: pass - -def _get_struct_entry(i: int) -> StructEntry | t.CPtr: pass - -def _get_field_entry(struct_entry: StructEntry | t.CPtr, i: int) -> FieldEntry | t.CPtr: pass - -def register_struct(pool: memhub.MemBuddy | t.CPtr, name: str, struct_ty: llvmlite.LLVMType | t.CPtr, sha1: str) -> StructEntry | t.CPtr: pass - -def set_struct_sha1(pool: memhub.MemBuddy | t.CPtr, class_name: str, sha1: str) -> int: pass - -def get_struct_sha1(class_name: str) -> str: pass - -def add_field(pool: memhub.MemBuddy | t.CPtr, struct_entry: StructEntry | t.CPtr, field_name: str, field_ty: llvmlite.LLVMType | t.CPtr, default_val: ast.AST | t.CPtr, annot_class_name: str) -> int: pass - -def find_struct(name: str) -> StructEntry | t.CPtr: pass - -def find_struct_by_module(name: str, sha1: str) -> StructEntry | t.CPtr: pass - -def find_struct_by_type(struct_ty: llvmlite.LLVMType | t.CPtr) -> StructEntry | t.CPtr: pass - -def lookup_field(struct_ty: llvmlite.LLVMType | t.CPtr, field_name: str) -> FieldEntry | t.CPtr: pass - -def lookup_field_by_class(class_name: str, field_name: str, sha1: str) -> FieldEntry | t.CPtr: pass - -def get_struct_type(class_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def get_field_by_index(class_name: str, idx: int) -> FieldEntry | t.CPtr: pass - -def struct_has_defaults(class_name: str) -> int: pass - -def _is_struct_type(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def get_struct_type_from_value(val: llvmlite.Value | t.CPtr) -> llvmlite.LLVMType | t.CPtr: pass - -def mark_as_union(name: str) -> int: pass - -def is_union_by_name(name: str) -> int: pass - -def is_union_by_type(struct_ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def mark_as_oop(name: str) -> int: pass - -def is_oop_by_name(name: str) -> int: pass - -def mark_has_init(name: str) -> int: pass - -def has_init_by_name(name: str) -> int: pass - -def mark_has_new(name: str) -> int: pass - -def has_new_by_name(name: str) -> int: pass - -def get_class_name_by_type(pool: memhub.MemBuddy | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr) -> str: pass - -def _extract_struct_name(ty: llvmlite.LLVMType | t.CPtr) -> str: pass - -def mark_has_vtable(name: str) -> int: pass - -def has_vtable_by_name(name: str) -> int: pass - -def mark_novtable(name: str) -> int: pass - -def is_novtable_by_name(name: str) -> int: pass - -def set_parent_name(name: str, parent_name: str) -> int: pass - -def get_parent_name(name: str) -> str: pass - -def set_vtable_methods(name: str, methods: t.CChar | t.CPtr, count: int) -> int: pass - -def get_vtable_method_index(name: str, method_name: str) -> int: pass - -def get_vtable_method_count(name: str) -> int: pass - -def get_vtable_method_name(name: str, idx: int) -> str: pass - -def get_field_count(name: str) -> int: pass - -def get_field_name_ptr(fe: FieldEntry | t.CPtr) -> str: pass - -def get_field_type_ptr(fe: FieldEntry | t.CPtr) -> llvmlite.LLVMType | t.CPtr: pass - -def get_field_default_ptr(fe: FieldEntry | t.CPtr) -> ast.AST | t.CPtr: pass - -def get_field_annot_class_name(fe: FieldEntry | t.CPtr) -> str: pass diff --git a/.transpyc_cache/6961b76a167891e5.doc.json b/.transpyc_cache/6961b76a167891e5.doc.json deleted file mode 100644 index d24160b..0000000 --- a/.transpyc_cache/6961b76a167891e5.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"Translator": "翻译器:管理编译状态,委托 Handles 模块执行翻译", "Translator._init_state": "初始化变量表、函数表和子 Handle", "Translator.translate": "将 AST 翻译为 LLVM IR", "Translator._translate_wrapper_main": "委托 HandlesMain.create_wrapper_main() 创建包装 main(trans 单参)", "Translator._translate_module_level": "委托 HandlesMain.translate_children() 翻译模块级语句(trans 单参)", "Translator.dump_ir": "将 LLVM IR 输出到缓冲区\n\n mode: 0=完整, 1=stub(仅声明), 2=text(仅代码)\n ", "add_global_name": "添加一个 global 变量名", "is_global_name": "检查 name 是否在当前函数的 global 集合中", "add_nonlocal_name": "添加一个 nonlocal 变量名", "is_nonlocal_name": "检查 name 是否在当前函数的 nonlocal 集合中", "get_nonlocal_index": "获取 nonlocal 变量在 env 中的索引(0-based),找不到返回 -1", "clear_scope_names": "清空当前函数的 global/nonlocal 名称集合(进入新函数时调用)"} \ No newline at end of file diff --git a/.transpyc_cache/6961b76a167891e5.pyi b/.transpyc_cache/6961b76a167891e5.pyi deleted file mode 100644 index 89de3bc..0000000 --- a/.transpyc_cache/6961b76a167891e5.pyi +++ /dev/null @@ -1,88 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesTranslator.py -Module: lib.core.Handles.HandlesTranslator -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.Handles.HandlesMain as HandlesMain -import lib.core.Handles.HandlesAssign as HandlesAssign -import lib.core.Handles.HandlesReturn as HandlesReturn -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesAnnAssign as HandlesAnnAssign -import lib.core.Handles.HandlesAugAssign as HandlesAugAssign -import lib.core.Handles.HandlesIf as HandlesIf -import lib.core.Handles.HandlesWhile as HandlesWhile -import lib.core.Handles.HandlesFor as HandlesFor -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.Projectrans.Config as Config - -MAX_VARS: t.CDefine = 256 -MAX_FUNCS: t.CDefine = 256 -MAX_GLOBAL_NAMES: t.CDefine = 32 - -@t.NoVTable -class Translator: - Module: llvmlite.LLVMModule | t.CPtr - Pool: memhub.MemBuddy | t.CPtr - _funcs: HandlesExprCall.FuncEntry | t.CPtr - _func_count: t.CInt - _imported_modules: str - _from_imports: str - _cur_func: llvmlite.Function | t.CPtr - _cur_builder: llvmlite.IRBuilder | t.CPtr - _break_bb: llvmlite.BasicBlock | t.CPtr - _continue_bb: llvmlite.BasicBlock | t.CPtr - _label_counter: t.CInt - _global_names: str - _global_name_count: t.CInt - _nonlocal_names: str - _nonlocal_name_count: t.CInt - _cur_func_name: str - ModuleSha1: str - _closure_env_offsets: t.CInt - _closure_env_count: t.CInt - GenericTypeParamNames: list[str] | t.CPtr - GenericTypeArgs: list[str] | t.CPtr - _declare_only: t.CInt - AssignH: HandlesAssign.AssignHandle | t.CPtr - ReturnH: HandlesReturn.ReturnHandle | t.CPtr - ImportsH: HandlesImports.ImportsHandle | t.CPtr - AnnAssignH: HandlesAnnAssign.AnnAssignHandle | t.CPtr - AugAssignH: HandlesAugAssign.AugAssignHandle | t.CPtr - IfH: HandlesIf.IfHandle | t.CPtr - WhileH: HandlesWhile.WhileHandle | t.CPtr - ForH: HandlesFor.ForHandle | t.CPtr - ExprH: HandlesExpr.ExprHandle | t.CPtr - ExprCallH: HandlesExprCall.ExprCallHandle | t.CPtr - SymTab: HandlesVar.SymbolTable | t.CPtr - def __init__(self: Translator) -> t.CInt: pass - def _init_state(self: Translator, pool: memhub.MemBuddy | t.CPtr) -> t.CInt: pass - def translate(self: Translator, tree: ast.AST | t.CPtr) -> int: pass - def _translate_wrapper_main(self: Translator, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, tree: ast.AST | t.CPtr, i32_ty: llvmlite.LLVMType | t.CPtr) -> t.CInt: pass - def _translate_module_level(self: Translator, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, tree: ast.AST | t.CPtr) -> t.CInt: pass - def dump_ir(self: Translator, buf: bytes, size: t.CSizeT, mode: int) -> t.CInt: pass - -def add_global_name(trans: HT.Translator | t.CPtr, name: str) -> t.CInt: pass - -def is_global_name(trans: HT.Translator | t.CPtr, name: str) -> int: pass - -def add_nonlocal_name(trans: HT.Translator | t.CPtr, name: str) -> t.CInt: pass - -def is_nonlocal_name(trans: HT.Translator | t.CPtr, name: str) -> int: pass - -def get_nonlocal_index(trans: HT.Translator | t.CPtr, name: str) -> int: pass - -def clear_scope_names(trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -_mbuddy: t.CExtern | memhub.MemBuddy | t.CPtr \ No newline at end of file diff --git a/.transpyc_cache/69b86cf4726da53f.doc.json b/.transpyc_cache/69b86cf4726da53f.doc.json deleted file mode 100644 index 9c0ba29..0000000 --- a/.transpyc_cache/69b86cf4726da53f.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"AnnAssignHandle": "AnnAssign 语句处理器:继承 Mixin 获得 Trans 回指针", "AnnAssignHandle.PreScan": "预扫描 AnnAssign,提前创建 alloca 到 entry block 顶部", "AnnAssignHandle.Handle": "翻译 AnnAssign(target=Name, annotation=..., value=expr)"} \ No newline at end of file diff --git a/.transpyc_cache/69b86cf4726da53f.pyi b/.transpyc_cache/69b86cf4726da53f.pyi deleted file mode 100644 index ef1d109..0000000 --- a/.transpyc_cache/69b86cf4726da53f.pyi +++ /dev/null @@ -1,28 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesAnnAssign.py -Module: lib.core.Handles.HandlesAnnAssign -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesNonlocal as HandlesNonlocal -import lib.core.Handles.HandlesClassDef as HandlesClassDef -import lib.core.Handles.HandlesExprCall as HandlesExprCall - -@t.NoVTable -class AnnAssignHandle(HandlesBase.Mixin): - def __init__(self: AnnAssignHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def PreScan(self: AnnAssignHandle, node: ast.AST | t.CPtr) -> int: pass - def Handle(self: AnnAssignHandle, node: ast.AST | t.CPtr) -> int: pass - -def NewAnnAssignHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> AnnAssignHandle | t.CPtr: pass diff --git a/.transpyc_cache/6a1088ddb47c1d62.doc.json b/.transpyc_cache/6a1088ddb47c1d62.doc.json deleted file mode 100644 index a8e6f20..0000000 --- a/.transpyc_cache/6a1088ddb47c1d62.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_is_cenum_base": "检查 base 节点是否为 t.CEnum,返回 1=是 / 0=否", "_is_enum_class": "检查 ClassDef 是否继承自 t.CEnum,返回 1=是 / 0=否", "_is_cunion_base": "检查 base 节点是否为 t.CUnion,返回 1=是 / 0=否", "_is_union_class": "检查 ClassDef 是否继承自 t.CUnion,返回 1=是 / 0=否", "_has_decorator": "检查 decorator_list 中是否有指定装饰器名", "_is_marker_base": "检查基类名是否为标记基类,返回 1=是 / 0=否", "_get_base_name": "从 base AST 节点提取基类名,返回 None=失败", "_get_parent_class": "获取 ClassDef 的真实父类名,返回 None=无真实父类", "_has_any_func_cvtable": "检查类中是否有任何函数标记了 @t.CVTable,返回 1=有 / 0=无", "_should_method_be_virtual": "判断方法是否应该进入虚表,返回 1=包含 / 0=排除", "_detect_vtable_status": "检测类是否应该启用虚表", "_resolve_enum_member_type": "解析枚举成员的类型注解为 LLVM 整数类型", "_is_state_annotation": "检查注解节点是否为 t.State,返回 1=是 / 0=否", "_extract_int_value": "从 AST 节点提取整数值,失败返回 0", "_translate_enum_def": "翻译枚举类定义,返回 0", "_get_type_size": "计算 LLVM 类型的字节大小", "_translate_union_def": "翻译联合体定义,返回 0", "_is_generic_class": "检查 ClassDef 是否有类型参数(泛型类),返回 1=是 / 0=否", "_register_generic_template": "注册泛型类模板(类名 + ClassDef 节点)", "_find_generic_template": "查找泛型类模板,返回 ClassDef 节点或 None", "_mangle_generic_class_name": "生成特化类名: list + [int] -> list[int]\n\n 分配新缓冲区拼接,避免原地 strcat 导致缓冲区溢出\n ", "_clone_annotation": "拷贝类型注解表达式,替换类型参数 T 为具体类型名\n\n tp_names: 类型参数名列表 ['T']\n type_args: 类型实参名列表 ['int']\n ", "_clone_arguments": "拷贝 Arguments 节点,替换 arg annotation 中的 T", "_clone_classdef_for_spec": "拷贝 ClassDef 节点用于泛型特化\n\n - 替换类名为 spec_name\n - 清除 type_params(特化后不是泛型类)\n - 拷贝 children 中的 AnnAssign 和 FunctionDef,替换类型注解中的 T\n - 方法体直接引用原始节点(通过 type_map 上下文处理 T)\n ", "_find_cached_spec": "查找已缓存的特化名,未找到返回 None", "_cache_spec": "缓存特化结果", "_specialize_generic_class": "特化泛型类,返回特化类名\n\n 1. 查找泛型模板\n 2. 生成特化名\n 3. 检查缓存\n 4. 拷贝 ClassDef 节点(替换类型注解中的 T)\n 5. 设置 type_map 上下文(用于方法体中的 T 替换)\n 6. 调用 translate_class_def 翻译特化类\n 7. 返回特化名\n ", "translate_class_def": "翻译 class 定义,返回 0", "_vtable_strcat": "将 src 追加到 dst 末尾", "_vtable_name_needs_quote": "检查 LLVM 标识符是否需要引号(以数字开头或含 '.')", "_format_func_type_str": "从 Function 对象生成函数类型字符串", "_generate_vtable": "生成 VTable 全局变量", "_translate_oop_methods": "扫描 class body 中的方法并翻译,生成 __before_init__", "_translate_method": "翻译单个方法,返回 0", "_generate_before_init": "生成 __before_init__ 函数,返回 0"} \ No newline at end of file diff --git a/.transpyc_cache/6a1088ddb47c1d62.pyi b/.transpyc_cache/6a1088ddb47c1d62.pyi deleted file mode 100644 index 62b2e80..0000000 --- a/.transpyc_cache/6a1088ddb47c1d62.pyi +++ /dev/null @@ -1,104 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesClassDef.py -Module: lib.core.Handles.HandlesClassDef -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import viperlib -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesEnum as HandlesEnum - -ENUM_MEMBER_MAX_LOCAL: t.CDefine = 64 - -def _is_cenum_base(base_node: ast.AST | t.CPtr) -> int: pass - -def _is_enum_class(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _is_cunion_base(base_node: ast.AST | t.CPtr) -> int: pass - -def _is_union_class(cd: ast.ClassDef | t.CPtr) -> int: pass - - -_MARKER_BASES: t.CDefine = 8 - -def _has_decorator(decorator_list: list[ast.AST | t.CPtr] | t.CPtr, deco_name: str) -> int: pass - -def _is_marker_base(base_name: str) -> int: pass - -def _get_base_name(base_node: ast.AST | t.CPtr) -> str: pass - -def _get_parent_class(cd: ast.ClassDef | t.CPtr) -> str: pass - -def _has_any_func_cvtable(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _should_method_be_virtual(cd: ast.ClassDef | t.CPtr, fd: ast.FunctionDef | t.CPtr, trans: HT.Translator | t.CPtr) -> int: pass - -def _detect_vtable_status(cd: ast.ClassDef | t.CPtr, trans: HT.Translator | t.CPtr) -> int: pass - -def _resolve_enum_member_type(pool: memhub.MemBuddy | t.CPtr, ann_node: ast.AST | t.CPtr, imported_modules: str, from_imports: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _is_state_annotation(node: ast.AST | t.CPtr) -> int: pass - -def _extract_int_value(node: ast.AST | t.CPtr) -> t.CInt64T: pass - -def _translate_enum_def(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr) -> int: pass - -def _get_type_size(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def _translate_union_def(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr) -> int: pass - - -_generic_class_names: t.CExtern | list[str] | t.CPtr -_generic_class_nodes: t.CExtern | list[ast.ClassDef | t.CPtr] | t.CPtr - -def _is_generic_class(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _register_generic_template(pool: memhub.MemBuddy | t.CPtr, cd: ast.ClassDef | t.CPtr) -> t.CInt: pass - -def _find_generic_template(class_name: str) -> ast.ClassDef | t.CPtr: pass - -def _mangle_generic_class_name(pool: memhub.MemBuddy | t.CPtr, class_name: str, type_args: list[str] | t.CPtr) -> str: pass - -def _clone_annotation(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.AST | t.CPtr: pass - -def _clone_arguments(pool: memhub.MemBuddy | t.CPtr, args: ast.AST | t.CPtr, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.AST | t.CPtr: pass - -def _clone_classdef_for_spec(pool: memhub.MemBuddy | t.CPtr, cd: ast.ClassDef | t.CPtr, spec_name: str, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.ClassDef | t.CPtr: pass - - -_spec_keys: t.CExtern | list[str] | t.CPtr -_spec_names: t.CExtern | list[str] | t.CPtr - -def _find_cached_spec(spec_key: str) -> str: pass - -def _cache_spec(pool: memhub.MemBuddy | t.CPtr, spec_key: str, spec_name: str) -> t.CInt: pass - -def _specialize_generic_class(trans: HT.Translator | t.CPtr, class_name: str, type_args: list[str] | t.CPtr) -> str: pass - -def translate_class_def(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - - -VTBL_METHOD_MAX: t.CDefine = 32 - -def _vtable_strcat(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _vtable_name_needs_quote(name: str) -> int: pass - -def _format_func_type_str(pool: memhub.MemBuddy | t.CPtr, buf: t.CChar | t.CPtr, buf_size: t.CSizeT, func: llvmlite.Function | t.CPtr) -> int: pass - -def _generate_vtable(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr, class_name: str) -> int: pass - -def _translate_oop_methods(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass - -def _translate_method(trans: HT.Translator | t.CPtr, fd: ast.FunctionDef | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass - -def _generate_before_init(trans: HT.Translator | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass diff --git a/.transpyc_cache/6ab1c6b14ca3ded8.doc.json b/.transpyc_cache/6ab1c6b14ca3ded8.doc.json deleted file mode 100644 index e7fc1ec..0000000 --- a/.transpyc_cache/6ab1c6b14ca3ded8.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"TranslateFileGetTrans": "翻译文件,返回 Translator 对象(调用者负责 dump_ir),None 失败", "ensure_dir": "递归创建目录(类似 mkdir -p),目录已存在视为成功\n\n Args:\n path: 目录路径(支持 / 或 \\ 分隔符)\n\n Returns:\n 0 成功(包括目录已存在),非 0 失败\n ", "write_ir_to_file": "将 IR 缓冲区写入 .ll 文件\n\n Args:\n ir_buf: IR 文本缓冲区\n ir_len: IR 文本长度\n output_dir: 输出目录(temp 或 output)\n module_name: 模块名(如 \"main\")\n\n Returns:\n 0 成功,非 0 失败\n ", "compile_ll_to_obj": "调用 llc 将 .ll 编译为 .obj\n\n Args:\n ir_path: .ll 文件路径\n output_dir: 输出目录\n module_name: 模块名(用于生成 .obj 文件名)\n cc_cmd: 编译器命令(如 \"llc\")\n cc_flags: 编译器参数(如 \"-filetype=obj -relocation-model=pic\")\n\n Returns:\n 0 成功,非 0 失败\n ", "collect_obj_files": "扫描 includes_binary_dir 目录,收集所有 .obj 文件路径到 out_buf\n\n Args:\n includes_binary_dir: includes.binary 目录路径\n out_buf: 输出缓冲区(用于存放空格分隔的 .obj 文件路径)\n out_size: 输出缓冲区大小\n\n Returns:\n 写入的字节数(不含 null 终止符),0 表示无文件或错误\n ", "link_obj_to_exe": "调用 clang++ 链接 .obj 为 .exe\n\n Args:\n output_dir: 输出目录(包含 .obj 文件)\n module_name: 模块名\n linker_cmd: 链接器命令(如 \"clang++\")\n linker_flags: 链接器参数\n linker_output: 输出文件名(如 \"test.exe\")\n includes_binary_dir: includes.binary 目录路径(链接时附加预编译 .obj)\n\n Returns:\n 0 成功,非 0 失败\n ", "compile_module_to_obj": "编译 IR 到 .obj(不链接)\n\n Args:\n ir_buf: LLVM IR 文本缓冲区\n ir_len: IR 文本长度\n temp_dir: 临时目录\n output_dir: 输出目录\n module_name: 模块名(SHA1)\n cc_cmd: 编译器命令\n cc_flags: 编译器参数\n\n Returns:\n 0 成功,非 0 失败\n ", "link_objs_to_exe": "链接多个 .obj 文件为 .exe\n\n Args:\n obj_paths: 空格分隔的 .obj 文件完整路径字符串\n obj_paths_len: obj_paths 长度\n linker_cmd: 链接器命令(如 \"clang++\")\n linker_flags: 链接器参数\n linker_output: 输出文件完整路径\n includes_binary_dir: includes.binary 目录路径(链接时附加预编译 .obj)\n\n Returns:\n 0 成功,非 0 失败\n ", "run_pipeline": "执行完整编译管线\n\n Args:\n ir_buf: LLVM IR 文本缓冲区\n ir_len: IR 文本长度\n temp_dir: 临时目录\n output_dir: 输出目录\n module_name: 模块名\n cc_cmd: 编译器命令\n cc_flags: 编译器参数\n linker_cmd: 链接器命令\n linker_flags: 链接器参数\n linker_output: 输出文件名\n includes_binary_dir: includes.binary 目录路径(链接时附加预编译 .obj)\n\n Returns:\n BuildResult 对象\n "} \ No newline at end of file diff --git a/.transpyc_cache/6ab1c6b14ca3ded8.pyi b/.transpyc_cache/6ab1c6b14ca3ded8.pyi deleted file mode 100644 index 3a8c9c7..0000000 --- a/.transpyc_cache/6ab1c6b14ca3ded8.pyi +++ /dev/null @@ -1,50 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.BuildPipeline.py -Module: lib.core.BuildPipeline -""" - - -import t, c -from stdint import * -import stdio -import string -import stdlib -import memhub -import w32.fileio as fileio -import w32.win32file -import w32.win32base -import subprocess -import viperlib -import ast -import lib.core.Handles.HandlesTranslator as HandlesTranslator -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesType as HandlesType - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -SRC_BUF_SIZE: t.CDefine = 1048576 - -def TranslateFileGetTrans(mb: memhub.MemBuddy | t.CPtr, file_path: str, sha1_val: str) -> HandlesTranslator.Translator | t.CPtr: pass - - -class BuildResult: - Success: t.CInt - OutputPath: str - ErrorMsg: str - def __new__(self: BuildResult) -> t.CPtr: pass - def __init__(self: BuildResult) -> t.CInt: pass - -def ensure_dir(path: str) -> int: pass - -def write_ir_to_file(ir_buf: bytes, ir_len: t.CSizeT, output_dir: str, module_name: str) -> int: pass - -def compile_ll_to_obj(ir_path: str, output_dir: str, module_name: str, cc_cmd: str, cc_flags: str) -> int: pass - -def collect_obj_files(includes_binary_dir: str, out_buf: bytes, out_size: t.CSizeT) -> t.CSizeT: pass - -def link_obj_to_exe(output_dir: str, module_name: str, linker_cmd: str, linker_flags: str, linker_output: str, includes_binary_dir: str) -> int: pass - -def compile_module_to_obj(ir_buf: bytes, ir_len: t.CSizeT, temp_dir: str, output_dir: str, module_name: str, cc_cmd: str, cc_flags: str) -> int: pass - -def link_objs_to_exe(obj_paths: str, obj_paths_len: t.CSizeT, linker_cmd: str, linker_flags: str, linker_output: str, includes_binary_dir: str) -> int: pass - -def run_pipeline(ir_buf: bytes, ir_len: t.CSizeT, temp_dir: str, output_dir: str, module_name: str, cc_cmd: str, cc_flags: str, linker_cmd: str, linker_flags: str, linker_output: str, includes_binary_dir: str) -> BuildResult | t.CPtr: pass diff --git a/.transpyc_cache/6b8853854d6ef556.doc.json b/.transpyc_cache/6b8853854d6ef556.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/6b8853854d6ef556.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/6b8853854d6ef556.pyi b/.transpyc_cache/6b8853854d6ef556.pyi deleted file mode 100644 index 66d8d02..0000000 --- a/.transpyc_cache/6b8853854d6ef556.pyi +++ /dev/null @@ -1,23 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - -import c - - -import t -import stdio -import string -import testcheck - -def test_for_in_string() -> t.CInt: pass - -def test_for_in_char_ptr() -> t.CInt: pass - -def test_strcpy_for_in() -> t.CInt: pass - - -import w32.win32memory - -def main() -> t.CInt: pass diff --git a/.transpyc_cache/6ba73c618fc5471e.doc.json b/.transpyc_cache/6ba73c618fc5471e.doc.json deleted file mode 100644 index c00e036..0000000 --- a/.transpyc_cache/6ba73c618fc5471e.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数\n\n 直接接收三个 Value 参数,避免通过 Next 链表遍历(共享 alloca 对象的\n Next 字段可能被其他操作污染,导致链表断裂)。\n ", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/6ba73c618fc5471e.pyi b/.transpyc_cache/6ba73c618fc5471e.pyi deleted file mode 100644 index 40c3168..0000000 --- a/.transpyc_cache/6ba73c618fc5471e.pyi +++ /dev/null @@ -1,171 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, dst_val: llvmlite.Value | t.CPtr, src_val: llvmlite.Value | t.CPtr, num_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/6deb1a24b47f47fc.doc.json b/.transpyc_cache/6deb1a24b47f47fc.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/6deb1a24b47f47fc.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/6deb1a24b47f47fc.pyi b/.transpyc_cache/6deb1a24b47f47fc.pyi deleted file mode 100644 index 1c16d75..0000000 --- a/.transpyc_cache/6deb1a24b47f47fc.pyi +++ /dev/null @@ -1,36 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - - -import t -import c -import stdio -import stdlib -import string -import memhub -import testcheck -import _fakeduck - -def test_for_in_range() -> t.CInt: pass - -def test_for_in_str() -> t.CInt: pass - -def test_for_in_list() -> t.CInt: pass - -def test_zip_list_list() -> t.CInt: pass - -def test_zip_range_list() -> t.CInt: pass - -def test_zip_str_str() -> t.CInt: pass - -def test_zip_range_len_list() -> t.CInt: pass - -def test_enumerate_list() -> t.CInt: pass - -def test_enumerate_str() -> t.CInt: pass - -def test_enumerate_range() -> t.CInt: pass - -def main() -> t.CInt: pass diff --git a/.transpyc_cache/6f43cc10b998bf0b.doc.json b/.transpyc_cache/6f43cc10b998bf0b.doc.json deleted file mode 100644 index a8e6f20..0000000 --- a/.transpyc_cache/6f43cc10b998bf0b.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_is_cenum_base": "检查 base 节点是否为 t.CEnum,返回 1=是 / 0=否", "_is_enum_class": "检查 ClassDef 是否继承自 t.CEnum,返回 1=是 / 0=否", "_is_cunion_base": "检查 base 节点是否为 t.CUnion,返回 1=是 / 0=否", "_is_union_class": "检查 ClassDef 是否继承自 t.CUnion,返回 1=是 / 0=否", "_has_decorator": "检查 decorator_list 中是否有指定装饰器名", "_is_marker_base": "检查基类名是否为标记基类,返回 1=是 / 0=否", "_get_base_name": "从 base AST 节点提取基类名,返回 None=失败", "_get_parent_class": "获取 ClassDef 的真实父类名,返回 None=无真实父类", "_has_any_func_cvtable": "检查类中是否有任何函数标记了 @t.CVTable,返回 1=有 / 0=无", "_should_method_be_virtual": "判断方法是否应该进入虚表,返回 1=包含 / 0=排除", "_detect_vtable_status": "检测类是否应该启用虚表", "_resolve_enum_member_type": "解析枚举成员的类型注解为 LLVM 整数类型", "_is_state_annotation": "检查注解节点是否为 t.State,返回 1=是 / 0=否", "_extract_int_value": "从 AST 节点提取整数值,失败返回 0", "_translate_enum_def": "翻译枚举类定义,返回 0", "_get_type_size": "计算 LLVM 类型的字节大小", "_translate_union_def": "翻译联合体定义,返回 0", "_is_generic_class": "检查 ClassDef 是否有类型参数(泛型类),返回 1=是 / 0=否", "_register_generic_template": "注册泛型类模板(类名 + ClassDef 节点)", "_find_generic_template": "查找泛型类模板,返回 ClassDef 节点或 None", "_mangle_generic_class_name": "生成特化类名: list + [int] -> list[int]\n\n 分配新缓冲区拼接,避免原地 strcat 导致缓冲区溢出\n ", "_clone_annotation": "拷贝类型注解表达式,替换类型参数 T 为具体类型名\n\n tp_names: 类型参数名列表 ['T']\n type_args: 类型实参名列表 ['int']\n ", "_clone_arguments": "拷贝 Arguments 节点,替换 arg annotation 中的 T", "_clone_classdef_for_spec": "拷贝 ClassDef 节点用于泛型特化\n\n - 替换类名为 spec_name\n - 清除 type_params(特化后不是泛型类)\n - 拷贝 children 中的 AnnAssign 和 FunctionDef,替换类型注解中的 T\n - 方法体直接引用原始节点(通过 type_map 上下文处理 T)\n ", "_find_cached_spec": "查找已缓存的特化名,未找到返回 None", "_cache_spec": "缓存特化结果", "_specialize_generic_class": "特化泛型类,返回特化类名\n\n 1. 查找泛型模板\n 2. 生成特化名\n 3. 检查缓存\n 4. 拷贝 ClassDef 节点(替换类型注解中的 T)\n 5. 设置 type_map 上下文(用于方法体中的 T 替换)\n 6. 调用 translate_class_def 翻译特化类\n 7. 返回特化名\n ", "translate_class_def": "翻译 class 定义,返回 0", "_vtable_strcat": "将 src 追加到 dst 末尾", "_vtable_name_needs_quote": "检查 LLVM 标识符是否需要引号(以数字开头或含 '.')", "_format_func_type_str": "从 Function 对象生成函数类型字符串", "_generate_vtable": "生成 VTable 全局变量", "_translate_oop_methods": "扫描 class body 中的方法并翻译,生成 __before_init__", "_translate_method": "翻译单个方法,返回 0", "_generate_before_init": "生成 __before_init__ 函数,返回 0"} \ No newline at end of file diff --git a/.transpyc_cache/6f43cc10b998bf0b.pyi b/.transpyc_cache/6f43cc10b998bf0b.pyi deleted file mode 100644 index 62b2e80..0000000 --- a/.transpyc_cache/6f43cc10b998bf0b.pyi +++ /dev/null @@ -1,104 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesClassDef.py -Module: lib.core.Handles.HandlesClassDef -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import viperlib -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesEnum as HandlesEnum - -ENUM_MEMBER_MAX_LOCAL: t.CDefine = 64 - -def _is_cenum_base(base_node: ast.AST | t.CPtr) -> int: pass - -def _is_enum_class(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _is_cunion_base(base_node: ast.AST | t.CPtr) -> int: pass - -def _is_union_class(cd: ast.ClassDef | t.CPtr) -> int: pass - - -_MARKER_BASES: t.CDefine = 8 - -def _has_decorator(decorator_list: list[ast.AST | t.CPtr] | t.CPtr, deco_name: str) -> int: pass - -def _is_marker_base(base_name: str) -> int: pass - -def _get_base_name(base_node: ast.AST | t.CPtr) -> str: pass - -def _get_parent_class(cd: ast.ClassDef | t.CPtr) -> str: pass - -def _has_any_func_cvtable(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _should_method_be_virtual(cd: ast.ClassDef | t.CPtr, fd: ast.FunctionDef | t.CPtr, trans: HT.Translator | t.CPtr) -> int: pass - -def _detect_vtable_status(cd: ast.ClassDef | t.CPtr, trans: HT.Translator | t.CPtr) -> int: pass - -def _resolve_enum_member_type(pool: memhub.MemBuddy | t.CPtr, ann_node: ast.AST | t.CPtr, imported_modules: str, from_imports: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _is_state_annotation(node: ast.AST | t.CPtr) -> int: pass - -def _extract_int_value(node: ast.AST | t.CPtr) -> t.CInt64T: pass - -def _translate_enum_def(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr) -> int: pass - -def _get_type_size(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def _translate_union_def(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr) -> int: pass - - -_generic_class_names: t.CExtern | list[str] | t.CPtr -_generic_class_nodes: t.CExtern | list[ast.ClassDef | t.CPtr] | t.CPtr - -def _is_generic_class(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _register_generic_template(pool: memhub.MemBuddy | t.CPtr, cd: ast.ClassDef | t.CPtr) -> t.CInt: pass - -def _find_generic_template(class_name: str) -> ast.ClassDef | t.CPtr: pass - -def _mangle_generic_class_name(pool: memhub.MemBuddy | t.CPtr, class_name: str, type_args: list[str] | t.CPtr) -> str: pass - -def _clone_annotation(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.AST | t.CPtr: pass - -def _clone_arguments(pool: memhub.MemBuddy | t.CPtr, args: ast.AST | t.CPtr, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.AST | t.CPtr: pass - -def _clone_classdef_for_spec(pool: memhub.MemBuddy | t.CPtr, cd: ast.ClassDef | t.CPtr, spec_name: str, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.ClassDef | t.CPtr: pass - - -_spec_keys: t.CExtern | list[str] | t.CPtr -_spec_names: t.CExtern | list[str] | t.CPtr - -def _find_cached_spec(spec_key: str) -> str: pass - -def _cache_spec(pool: memhub.MemBuddy | t.CPtr, spec_key: str, spec_name: str) -> t.CInt: pass - -def _specialize_generic_class(trans: HT.Translator | t.CPtr, class_name: str, type_args: list[str] | t.CPtr) -> str: pass - -def translate_class_def(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - - -VTBL_METHOD_MAX: t.CDefine = 32 - -def _vtable_strcat(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _vtable_name_needs_quote(name: str) -> int: pass - -def _format_func_type_str(pool: memhub.MemBuddy | t.CPtr, buf: t.CChar | t.CPtr, buf_size: t.CSizeT, func: llvmlite.Function | t.CPtr) -> int: pass - -def _generate_vtable(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr, class_name: str) -> int: pass - -def _translate_oop_methods(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass - -def _translate_method(trans: HT.Translator | t.CPtr, fd: ast.FunctionDef | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass - -def _generate_before_init(trans: HT.Translator | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass diff --git a/.transpyc_cache/6f5e876273093314.doc.json b/.transpyc_cache/6f5e876273093314.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/6f5e876273093314.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/6f5e876273093314.pyi b/.transpyc_cache/6f5e876273093314.pyi deleted file mode 100644 index 94c6e0f..0000000 --- a/.transpyc_cache/6f5e876273093314.pyi +++ /dev/null @@ -1,10 +0,0 @@ -""" -Auto-generated Python stub file from deref_min_test.py -Module: deref_min_test -""" - - -import stdio -import t, c - -def deref_min_test() -> int: pass diff --git a/.transpyc_cache/6ff26590374ae6fc.pyi b/.transpyc_cache/6ff26590374ae6fc.pyi deleted file mode 100644 index 1b1bba1..0000000 --- a/.transpyc_cache/6ff26590374ae6fc.pyi +++ /dev/null @@ -1,39 +0,0 @@ -""" -Auto-generated Python stub file from hashlib.__sha512.py -Module: hashlib.__sha512 -""" - - -import t, c - -SHA512_BLOCK_LEN: t.CDefine = 128 -SHA512_DIGEST_LEN: t.CDefine = 64 - -def sha512_ror(x: t.CUInt64T, n: int) -> t.CUInt64T: pass - -def sha512_shr(x: t.CUInt64T, n: int) -> t.CUInt64T: pass - -def sha512_Ch(x: t.CUInt64T, y: t.CUInt64T, z: t.CUInt64T) -> t.CUInt64T: pass - -def sha512_Maj(x: t.CUInt64T, y: t.CUInt64T, z: t.CUInt64T) -> t.CUInt64T: pass - -def sha512_BigSigma0(x: t.CUInt64T) -> t.CUInt64T: pass - -def sha512_BigSigma1(x: t.CUInt64T) -> t.CUInt64T: pass - -def sha512_Sigma0(x: t.CUInt64T) -> t.CUInt64T: pass - -def sha512_Sigma1(x: t.CUInt64T) -> t.CUInt64T: pass - - -sha512_K: t.CExtern | t.CArray[t.CUInt64T, 80] - -@t.Object -class sha512: - state: t.CArray[t.CUInt64T, 8] - count: t.CArray[t.CUInt64T, 2] - buf: t.CArray[t.CUInt8T, SHA512_BLOCK_LEN] - def __init__(self: sha512) -> t.CInt: pass - def transform(self: sha512, block: t.CArray[t.CUInt8T, SHA512_BLOCK_LEN]) -> t.CInt: pass - def update(self: sha512, s: str) -> t.CInt: pass - def final(self: sha512, out: t.CArray[t.CUInt8T, SHA512_DIGEST_LEN]) -> t.CInt: pass \ No newline at end of file diff --git a/.transpyc_cache/717c696d67fecfc6.doc.json b/.transpyc_cache/717c696d67fecfc6.doc.json deleted file mode 100644 index 95e17f3..0000000 --- a/.transpyc_cache/717c696d67fecfc6.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_load_includes_sha1_set": "读取 _sha1_map.txt,将 includes/ 开头的 SHA1 写入 sha1_set\n sha1_set 大小为 MAX_INCLUDES_SHA1 * 17(每个 SHA1 16字符+null)\n 返回找到的 includes SHA1 数量,-1 表示错误", "_is_in_sha1_set": "检查 sha1 是否在集合中", "WriteIncludesSha1Map": "将 includes 扫描结果写入 _sha1_map.txt(供 StubMerger 使用)\n\n 若 filter_set 不为 None 且 filter_count > 0,只写入 filter_set 中的条目。\n ", "_IsFuncDeclaredOrDefined": "检查 out_buf 中是否已有函数的 declare 或 define 行", "_CommentOutDeclareInBuf": "在 out_buf 中搜索 declare 行(包含 func_sig),将其注释掉", "_CommentOutGlobalInBuf": "在 out_buf 中搜索全局变量定义行(以 global_name 开头),将行首改为 ';'", "_CommentOutOpaqueTypeInBuf": "在 out_buf 中搜索 type_name_prefix 对应的 opaque 声明行,将行首改为 ';'\n\n type_name_prefix 格式: '%\"sha1.ClassName\"'(不含 '=' 和后续内容)\n 返回 1=已注释, 0=未找到\n ", "_HasFullTypeDefinition": "检查 out_buf 中是否已有 type_name_prefix 的完整定义", "_LoadAndAppendStub": "加载依赖 stub 并追加(跳过 header,去重)", "_LoadAndAppendTextDeclares": "从依赖 text.ll 提取 declare(define 转 declare),追加到 out_buf", "_PathToModuleName": "将文件路径转换为模块名", "_BuildIncludesSha1Map": "从 _sha1_map.txt 构建 sha1→module_name 映射,返回条目数", "_FindSha1ByModName": "从模块名查找 SHA1(精确匹配)", "_AddSha1ToSet": "将 SHA1 加入集合,返回新 count", "_BuildReachableSha1Set": "构建可达 SHA1 集合(依赖图按需翻译)", "BuildCombinedIR": "组合本地 stub + 依赖 stubs + 本地 text → out_buf(按需加载)"} \ No newline at end of file diff --git a/.transpyc_cache/717c696d67fecfc6.pyi b/.transpyc_cache/717c696d67fecfc6.pyi deleted file mode 100644 index 4466a75..0000000 --- a/.transpyc_cache/717c696d67fecfc6.pyi +++ /dev/null @@ -1,60 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.StubMerger.py -Module: lib.core.StubMerger -""" - - -import t, c -from stdint import * -import memhub -import string -import stdio -import stdlib -import llvmlite -import w32.win32file as win32file -import w32.win32base as win32base -import w32.fileio as fileio -import viperlib -import sys -import ast -import lib.core.IncludesScanner as IncludesScanner -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesTranslator as HandlesTranslator - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -MAX_INCLUDES_SHA1: t.CDefine = 256 -STUB_READ_BUF_SIZE: t.CDefine = 262144 -MAX_INCLUDES: t.CDefine = 256 - -def _load_includes_sha1_set(pool: memhub.MemBuddy | t.CPtr, temp_dir: str, sha1_set: str) -> int: pass - -def _is_in_sha1_set(sha1: str, sha1_set: str, set_count: int) -> int: pass - -def WriteIncludesSha1Map(mb: memhub.MemBuddy | t.CPtr, temp_dir: str, scan_result: IncludesScanner.ScanResult | t.CPtr, filter_set: t.CChar | t.CPtr, filter_count: int) -> int: pass - -def _IsFuncDeclaredOrDefined(out_buf: bytes, func_sig: str) -> int: pass - -def _CommentOutDeclareInBuf(out_buf: bytes, func_sig: str) -> int: pass - -def _CommentOutGlobalInBuf(out_buf: bytes, global_name: str) -> int: pass - -def _CommentOutOpaqueTypeInBuf(out_buf: bytes, type_name_prefix: str) -> int: pass - -def _HasFullTypeDefinition(out_buf: bytes, type_name_prefix: str) -> int: pass - -def _LoadAndAppendStub(temp_dir: str, td_len: t.CSizeT, dep_sha1: str, dep_buf: bytes, out_buf: bytes, out_size: t.CSizeT, out_pos: t.CSizeT) -> t.CSizeT: pass - -def _LoadAndAppendTextDeclares(temp_dir: str, td_len: t.CSizeT, dep_sha1: str, dep_buf: bytes, out_buf: bytes, out_size: t.CSizeT, out_pos: t.CSizeT) -> t.CSizeT: pass - -def _PathToModuleName(path: str) -> str: pass - -def _BuildIncludesSha1Map(temp_dir: str, td_len: t.CSizeT, sha1_list: t.CChar | t.CPtr, mod_list: t.CChar | t.CPtr) -> int: pass - -def _FindSha1ByModName(sha1_arr: t.CChar | t.CPtr, mod_arr: t.CChar | t.CPtr, count: int, mod_name: str) -> str: pass - -def _AddSha1ToSet(set_buf: t.CChar | t.CPtr, count: int, sha1: str) -> int: pass - -def _BuildReachableSha1Set(mb: memhub.MemBuddy | t.CPtr, source_dir: str, temp_dir: str, reachable_set: t.CChar | t.CPtr) -> int: pass - -def BuildCombinedIR(temp_dir: str, local_sha1: str, out_buf: bytes, out_size: t.CSizeT) -> t.CSizeT: pass diff --git a/.transpyc_cache/71b5771c2400c31a.doc.json b/.transpyc_cache/71b5771c2400c31a.doc.json deleted file mode 100644 index dda4745..0000000 --- a/.transpyc_cache/71b5771c2400c31a.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"get_func_name": "从函数节点提取函数名", "escape_llvm_string": "将字符串转换为 LLVM IR 字符串字面量 c\"...\\00\" ", "get_llvm_type_bits": "获取 LLVM 整数类型的位宽,非整数类型返回 0", "get_llvm_float_bits": "获取 LLVM 浮点类型的位宽,非浮点类型返回 0", "is_ptr_type": "检查 ty 是否是 Ptr 类型,返回 1=是, 0=否", "_deref_if_ptr_ptr": "如果 obj_ptr 是 Ptr(Ptr(...)),load 解引用获取内层指针", "coerce_to_type": "将 val 强制转换为 target_ty\n\n 整数: sext(扩展)/ trunc(截断)\n 浮点: fpext(扩展)/ fptrunc(截断)\n int→float: sitofp\n float→int: fptosi\n ", "create_global_string": "创建全局字符串常量并返回 i8* bitcast", "translate_constant": "翻译常量(int/str/bool)", "_infer_elem_type_from_value": "从 LLVM Value 的类型推断 list 元素类型名", "_find_pool_var": "查找上下文中的 pool 变量,返回 alloca 或 None", "translate_list_literal": "翻译 list 字面量 [a, b, c] → list[T](pool) + append 序列", "translate_value": "翻译值表达式为 LLVM Value", "translate_compare": "翻译比较表达式,返回 i1 结果", "translate_unaryop": "翻译一元运算(-x, +x, not x, ~x)", "translate_boolop": "翻译布尔运算(and/or)的短路求值,返回 i1", "translate_name_value": "翻译变量引用(Name 节点)→ load", "ExprHandle": "表达式处理器:继承 Mixin 获得 Trans 回指针", "ExprHandle.HandleValue": "翻译值表达式,从 self.Trans 获取共享状态", "list_getitem_inline": "内联生成 list __getitem__ 逻辑,返回元素地址 (i8*)", "_list_elem_type_from_name": "从 list 类型名提取元素 LLVM 类型", "list_setitem_inline": "内联生成 list __setitem__ 逻辑,返回 0", "is_list_subscript": "检查 Subscript 节点是否是 list[T] 类型,返回 list 对象指针或 None", "translate_subscript": "翻译下标表达式,返回加载的元素值", "translate_attribute": "翻译属性访问,返回加载的字段值", "get_subscript_ptr": "获取下标表达式的元素指针(用于赋值 lhs)", "get_attribute_ptr": "获取属性访问的字段指针(用于赋值 lhs)"} \ No newline at end of file diff --git a/.transpyc_cache/71b5771c2400c31a.pyi b/.transpyc_cache/71b5771c2400c31a.pyi deleted file mode 100644 index 60fab85..0000000 --- a/.transpyc_cache/71b5771c2400c31a.pyi +++ /dev/null @@ -1,81 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExpr.py -Module: lib.core.Handles.HandlesExpr -""" - - -import t, c -from stdint import * -import ast -import memhub -import string -import llvmlite -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesExprOps as HandlesExprOps -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.Handles.HandlesNonlocal as HandlesNonlocal -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesEnum as HandlesEnum -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -def get_func_name(func_node: ast.AST | t.CPtr) -> str: pass - -def escape_llvm_string(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def get_llvm_type_bits(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def get_llvm_float_bits(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def is_ptr_type(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def _deref_if_ptr_ptr(builder: llvmlite.IRBuilder | t.CPtr, obj_ptr: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def coerce_to_type(builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def create_global_string(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, str_val: str, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_constant(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_elem_type_from_value(pool: memhub.MemBuddy | t.CPtr, value: llvmlite.Value | t.CPtr) -> str: pass - -def _find_pool_var(trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_list_literal(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, elem_type_name: str, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_value(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_compare(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_unaryop(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_boolop(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_name_value(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -@t.NoVTable -class ExprHandle(HandlesBase.Mixin): - def __init__(self: ExprHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleValue(self: ExprHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def NewExprHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprHandle | t.CPtr: pass - -def list_getitem_inline(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, lm_obj: llvmlite.Value | t.CPtr, idx_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _list_elem_type_from_name(pool: memhub.MemBuddy | t.CPtr, struct_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def list_setitem_inline(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, lm_obj: llvmlite.Value | t.CPtr, idx_val: llvmlite.Value | t.CPtr, rhs_val: llvmlite.Value | t.CPtr) -> int: pass - -def is_list_subscript(node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_subscript(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_attribute(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def get_subscript_ptr(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def get_attribute_ptr(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass diff --git a/.transpyc_cache/71d73729480f2fd2.doc.json b/.transpyc_cache/71d73729480f2fd2.doc.json deleted file mode 100644 index 046af31..0000000 --- a/.transpyc_cache/71d73729480f2fd2.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"IfHandle": "if/elif/else 语句处理器:继承 Mixin 获得 Trans 回指针", "IfHandle.Handle": "翻译 if/elif/else 语句"} \ No newline at end of file diff --git a/.transpyc_cache/71d73729480f2fd2.pyi b/.transpyc_cache/71d73729480f2fd2.pyi deleted file mode 100644 index fd54f7e..0000000 --- a/.transpyc_cache/71d73729480f2fd2.pyi +++ /dev/null @@ -1,26 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesIf.py -Module: lib.core.Handles.HandlesIf -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesBody as HandlesBody - -@t.NoVTable -class IfHandle(HandlesBase.Mixin): - def __init__(self: IfHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def Handle(self: IfHandle, node: ast.AST | t.CPtr) -> int: pass - -def NewIfHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> IfHandle | t.CPtr: pass diff --git a/.transpyc_cache/71e0a3ffcb3ebfad.pyi b/.transpyc_cache/71e0a3ffcb3ebfad.pyi deleted file mode 100644 index 574b20e..0000000 --- a/.transpyc_cache/71e0a3ffcb3ebfad.pyi +++ /dev/null @@ -1,20 +0,0 @@ -""" -Auto-generated Python stub file from stdarg.py -Module: stdarg -""" - -import c - - -import t - -def va_start(args: t.CPtr, last_arg: t.CPtr) -> t.State: pass - -def va_arg(args: t.CPtr, type: t.CPtr) -> t.CPtr | t.State: pass - -def va_end(args: t.CPtr) -> t.State | t.State: pass - - -va_list: t.CTypedef = t.CUnsignedChar | t.CPtr - -def arg(type: t.CType) -> t.State: pass diff --git a/.transpyc_cache/7259cdb36d66dc67.doc.json b/.transpyc_cache/7259cdb36d66dc67.doc.json deleted file mode 100644 index c3a1e25..0000000 --- a/.transpyc_cache/7259cdb36d66dc67.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"SrcFileEntry": "源文件条目", "RunMultiFileProject": "多文件项目编译\n\n Returns: 0 成功,非 0 失败\n "} \ No newline at end of file diff --git a/.transpyc_cache/7259cdb36d66dc67.pyi b/.transpyc_cache/7259cdb36d66dc67.pyi deleted file mode 100644 index ad12e1f..0000000 --- a/.transpyc_cache/7259cdb36d66dc67.pyi +++ /dev/null @@ -1,39 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Phase2.py -Module: lib.core.Phase2 -""" - - -import t, c -from stdint import * -import stdio -import string -import stdlib -import memhub -import viperlib -import w32.fileio as fileio -import w32.win32file -import w32.win32base -import sys -import ast -import llvmlite -import subprocess -import argparse -import lib.core.VLogger as VLogger -import lib.core.Handles.HandlesTranslator as HandlesTranslator -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.BuildPipeline as BuildPipeline -import lib.core.StubMerger as StubMerger -import lib.Projectrans.Utils as Utils -import lib.Projectrans.Config as Config - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -SRC_BUF_SIZE: t.CDefine = 1048576 -MAX_SRC_FILES: t.CDefine = 32 - -@t.NoVTable -class SrcFileEntry: - Path: str - Sha1: str - -def RunMultiFileProject(mb: memhub.MemBuddy | t.CPtr, source_dir: str, temp_dir: str, output_dir: str, cc_cmd: str, cc_flags: str, linker_cmd: str, linker_flags: str, linker_output: str, includes_binary_dir: str, includes_dir: str, do_phase1: int, do_phase2: int, log: VLogger.Logger | t.CPtr, args: argparse.ParsedArgs | t.CPtr) -> int: pass diff --git a/.transpyc_cache/73a5dbb3cd24b3bf.doc.json b/.transpyc_cache/73a5dbb3cd24b3bf.doc.json deleted file mode 100644 index 8c2a0a2..0000000 --- a/.transpyc_cache/73a5dbb3cd24b3bf.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"AssignHandle": "Assign 语句处理器:继承 Mixin 获得 Trans 回指针 + 共享方法"} \ No newline at end of file diff --git a/.transpyc_cache/73a5dbb3cd24b3bf.pyi b/.transpyc_cache/73a5dbb3cd24b3bf.pyi deleted file mode 100644 index 1e1b4bd..0000000 --- a/.transpyc_cache/73a5dbb3cd24b3bf.pyi +++ /dev/null @@ -1,29 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesAssign.py -Module: lib.core.Handles.HandlesAssign -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesNonlocal as HandlesNonlocal -import lib.core.Handles.HandlesType as HandlesType - -@t.NoVTable -class AssignHandle(HandlesBase.Mixin): - _CurrentClass: str - def __init__(self: AssignHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def Handle(self: AssignHandle, node: ast.AST | t.CPtr) -> int: pass - -def NewAssignHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> AssignHandle | t.CPtr: pass diff --git a/.transpyc_cache/73fcdc4dd1618580.pyi b/.transpyc_cache/73fcdc4dd1618580.pyi deleted file mode 100644 index d94a709..0000000 --- a/.transpyc_cache/73fcdc4dd1618580.pyi +++ /dev/null @@ -1,29 +0,0 @@ -""" -Auto-generated Python stub file from hashlib.__sha1.py -Module: hashlib.__sha1 -""" - - -import t, c - -SHA1_BLOCK_LEN: t.CDefine = 64 -SHA1_DIGEST_LEN: t.CDefine = 20 - -def sha1_rotl(x: t.CUInt32T, n: t.CInt) -> t.CUInt32T: pass - -def sha1_f1(b: t.CUInt32T, c: t.CUInt32T, d: t.CUInt32T) -> t.CUInt32T: pass - -def sha1_f2(b: t.CUInt32T, c: t.CUInt32T, d: t.CUInt32T) -> t.CUInt32T: pass - -def sha1_f3(b: t.CUInt32T, c: t.CUInt32T, d: t.CUInt32T) -> t.CUInt32T: pass - - -@t.Object -class sha1: - state: t.CArray[t.CUInt32T, 5] - count: t.CUInt64T - buf: t.CArray[t.CUInt8T, SHA1_BLOCK_LEN] - def __init__(self: sha1) -> t.CInt: pass - def transform(self: sha1, block: t.CUInt8T | t.CPtr) -> t.CInt: pass - def update(self: sha1, s: str) -> t.CInt: pass - def final(self: sha1, out: t.CArray[t.CUInt8T, SHA1_DIGEST_LEN]) -> t.CInt: pass \ No newline at end of file diff --git a/.transpyc_cache/744224bb5e87b5ef.doc.json b/.transpyc_cache/744224bb5e87b5ef.doc.json deleted file mode 100644 index c00e036..0000000 --- a/.transpyc_cache/744224bb5e87b5ef.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数\n\n 直接接收三个 Value 参数,避免通过 Next 链表遍历(共享 alloca 对象的\n Next 字段可能被其他操作污染,导致链表断裂)。\n ", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/744224bb5e87b5ef.pyi b/.transpyc_cache/744224bb5e87b5ef.pyi deleted file mode 100644 index 40c3168..0000000 --- a/.transpyc_cache/744224bb5e87b5ef.pyi +++ /dev/null @@ -1,171 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, dst_val: llvmlite.Value | t.CPtr, src_val: llvmlite.Value | t.CPtr, num_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/74ca31446cac2107.doc.json b/.transpyc_cache/74ca31446cac2107.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/74ca31446cac2107.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/74ca31446cac2107.pyi b/.transpyc_cache/74ca31446cac2107.pyi deleted file mode 100644 index 5aca605..0000000 --- a/.transpyc_cache/74ca31446cac2107.pyi +++ /dev/null @@ -1,11 +0,0 @@ -""" -Auto-generated Python stub file from string_min_test.py -Module: string_min_test -""" - - -import stdio -import t, c -import string - -def string_min_test() -> int: pass diff --git a/.transpyc_cache/75583f20a922ab2e.doc.json b/.transpyc_cache/75583f20a922ab2e.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/75583f20a922ab2e.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/75583f20a922ab2e.pyi b/.transpyc_cache/75583f20a922ab2e.pyi deleted file mode 100644 index 10da71f..0000000 --- a/.transpyc_cache/75583f20a922ab2e.pyi +++ /dev/null @@ -1,38 +0,0 @@ -""" -Auto-generated Python stub file from zc.test.py -Module: zc.test -""" - - -import config -import t, c - -def AboutSizeTWhileTest(length: t.CSizeT) -> t.CInt: pass - -def MathBasicTest(x: t.CInt, y: t.CInt) -> t.CInt: pass - -def MathAdvancedTest(value: t.CInt) -> t.CInt: pass - -def WhileWithElifElseTest(start: t.CInt, end: t.CInt) -> t.CInt: pass - -def NestedWhileWithMacrosTest(outer_limit: t.CInt, inner_limit: t.CInt) -> t.CInt: pass - -def ComplexConditionTest(a: t.CInt, b: t.CInt, c_val: t.CInt) -> t.CInt: pass - -def RetryLoopTest(retry_count: t.CInt) -> t.CInt: pass - -def BitwiseOperationsTest(value: t.CInt) -> t.CInt: pass - -def CompoundAssignmentMathTest(a: t.CInt, b: t.CInt) -> t.CInt: pass - -def PowerAndModuloTest(base: t.CInt, exponent: t.CInt) -> t.CInt: pass - -def MixedArithmeticTest(x: t.CInt, y: t.CInt, z: t.CInt) -> t.CInt: pass - -def MathWithWhileLoopTest(start: t.CInt, count: t.CInt) -> t.CInt: pass - -def ComplexNestedMathTest(a: t.CInt, b: t.CInt) -> t.CInt: pass - -def ConditionalMathChainTest(value: t.CInt) -> t.CInt: pass - -def BitManipulationMathTest(value: t.CInt) -> t.CInt: pass diff --git a/.transpyc_cache/75dc9247529e6e0e.doc.json b/.transpyc_cache/75dc9247529e6e0e.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/75dc9247529e6e0e.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/75dc9247529e6e0e.pyi b/.transpyc_cache/75dc9247529e6e0e.pyi deleted file mode 100644 index 7f94c53..0000000 --- a/.transpyc_cache/75dc9247529e6e0e.pyi +++ /dev/null @@ -1,48 +0,0 @@ -""" -Auto-generated Python stub file from deco_test.py -Module: deco_test -""" - - -import stdio -import t, c -import string - -MAX_VALUE: t.CDefine = 256 -PI_APPROX: t.CDefine = 314 - -def ExportedAdd(a: t.CInt, b: t.CInt) -> t.CInt | t.CExport: pass - -def InlineSquare(x: t.CInt) -> t.CInt | t.CInline: pass - -def NormalSub(a: t.CInt, b: t.CInt) -> t.CInt: pass - -def ExportedInlineCube(x: t.CInt) -> t.CInt | t.CExport | t.CInline: pass - -def ExportedFindChar(s: str, ch: t.CInt) -> str | t.CExport: pass - -def test_cdefine() -> t.CInt: pass - -def test_cexport() -> t.CInt: pass - -def test_cinline() -> t.CInt: pass - -def test_deco_normal() -> t.CInt: pass - -def test_export_inline() -> t.CInt: pass - -def test_export_ptr() -> t.CInt: pass - -def ExternalDecl(x: t.CInt) -> t.CInt | t.CExtern | t.CExport: pass - -def StateDecl(x: t.CInt) -> t.CInt | t.State: pass - -def StateVoidDecl() -> t.State: pass - -def test_extern_decl() -> t.CInt: pass - -def test_state_decl() -> t.CInt: pass - -def test_state_void_decl() -> t.CInt: pass - -def deco_test() -> int: pass diff --git a/.transpyc_cache/766d8e14db1ff917.doc.json b/.transpyc_cache/766d8e14db1ff917.doc.json deleted file mode 100644 index f67a6e1..0000000 --- a/.transpyc_cache/766d8e14db1ff917.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/766d8e14db1ff917.pyi b/.transpyc_cache/766d8e14db1ff917.pyi deleted file mode 100644 index 477ab88..0000000 --- a/.transpyc_cache/766d8e14db1ff917.pyi +++ /dev/null @@ -1,169 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/76dd6c275aa72b3b.pyi b/.transpyc_cache/76dd6c275aa72b3b.pyi deleted file mode 100644 index cd52873..0000000 --- a/.transpyc_cache/76dd6c275aa72b3b.pyi +++ /dev/null @@ -1,41 +0,0 @@ -""" -Auto-generated Python stub file from os.__init__.py -Module: os.__init__ -""" - - -import t, c -from stdint import * -import platmacro -import memhub -import os.path -import os._win32 -import os._posix - -_mbuddy: t.CExtern | memhub.MemBuddy | t.CPtr - -def exists(path: str) -> bool: pass - -def isdir(path: str) -> bool: pass - -def isfile(path: str) -> bool: pass - -def getsize(path: str) -> t.CInt64T: pass - -def getcwd() -> str: pass - -def chdir(path: str) -> int: pass - -def mkdir(path: str) -> int: pass - -def remove(path: str) -> int: pass - -def rmdir(path: str) -> int: pass - -def rename(old_path: str, new_path: str) -> int: pass - -def chmod(path: str, mode: int) -> int: pass - -def listdir(path: str, out_names: str, max_count: ULONG) -> ULONG: pass - -def system(cmd: str) -> int: pass diff --git a/.transpyc_cache/78418cf2ee722f0f.doc.json b/.transpyc_cache/78418cf2ee722f0f.doc.json deleted file mode 100644 index 04e9521..0000000 --- a/.transpyc_cache/78418cf2ee722f0f.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"test_cdefine_values": "测试 CDefine 常量值是否正确", "test_bitops_width": "测试位运算是否保持正确类型宽度"} \ No newline at end of file diff --git a/.transpyc_cache/78418cf2ee722f0f.pyi b/.transpyc_cache/78418cf2ee722f0f.pyi deleted file mode 100644 index 0e4d365..0000000 --- a/.transpyc_cache/78418cf2ee722f0f.pyi +++ /dev/null @@ -1,50 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - - -from stdint import * -import t, c -import stdio -import string -import w32.win32console -import w32.win32memory -import testcheck - -def test_zext_u8_u32() -> t.CInt: pass - -def test_sext_i8_i32() -> t.CInt: pass - -def test_zext_u32_u64() -> t.CInt: pass - -def test_sext_i32_i64() -> t.CInt: pass - -def test_trunc_u64_u32() -> t.CInt: pass - -def test_mixed_signed_unsigned() -> t.CInt: pass - - -VAL_32BIT: t.CDefine = 0x80000000 -VAL_NEG: t.CDefine = -1 -VAL_BIG: t.CDefine = 0xFFFFFFFF - -def test_cdefine_values() -> t.CInt: pass - -def test_bitops_width() -> t.CInt: pass - -def test_unsigned_divmod() -> t.CInt: pass - -def test_signed_divmod_neg() -> t.CInt: pass - -def test_comparison_types() -> t.CInt: pass - -def test_ptr_int_cast() -> t.CInt: pass - -def test_u64_mul() -> t.CInt: pass - -def test_bool_ops() -> t.CInt: pass - -def test_ternary() -> t.CInt: pass - -def main() -> t.CInt | t.CExport: pass diff --git a/.transpyc_cache/784dde8a8697b7ab.doc.json b/.transpyc_cache/784dde8a8697b7ab.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/784dde8a8697b7ab.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/784dde8a8697b7ab.pyi b/.transpyc_cache/784dde8a8697b7ab.pyi deleted file mode 100644 index 193ea96..0000000 --- a/.transpyc_cache/784dde8a8697b7ab.pyi +++ /dev/null @@ -1,54 +0,0 @@ -""" -Auto-generated Python stub file from __zlib.zdeflate.py -Module: __zlib.zdeflate -""" - - -from stdint import * -import zchecksum -import zhuff -import zdef -import string -import t, c - -@t.Object -class zdeflate_stream: - writer: zdef.zbit_writer - window: BYTE | t.CPtr - window_pos: t.CInt - window_size: t.CInt - hash_head: t.CInt | t.CPtr - hash_prev: t.CInt | t.CPtr - level: t.CInt - strategy: t.CInt - wbits: t.CInt - is_finished: t.CInt - adler: t.CUInt32T - def find_match(self: zdeflate_stream, data: BYTE | t.CPtr, data_len: t.CSizeT, pos: t.CSizeT, best_dist: t.CInt | t.CPtr) -> t.CInt: pass - def update_hash(self: zdeflate_stream, data: BYTE | t.CPtr, pos: t.CSizeT) -> t.CInt: pass - def write_fixed_block(self: zdeflate_stream, data: UINT8PTR, length: t.CSizeT, final: t.CInt) -> t.CInt: pass - def encode_block_data(self: zdeflate_stream, data: UINT8PTR, length: t.CSizeT, lit_tree: zhuff.zhuff_tree | t.CPtr, dist_tree: zhuff.zhuff_tree | t.CPtr) -> t.CInt: pass - def write_dynamic_block(self: zdeflate_stream, data: UINT8PTR, length: t.CSizeT, final: t.CInt) -> t.CInt: pass - def compress_block(self: zdeflate_stream, data: UINT8PTR, length: t.CSizeT, final: t.CInt) -> t.CInt: pass - def write_stored_block(self: zdeflate_stream, data: UINT8PTR, length: t.CSizeT, final: t.CInt) -> t.CInt: pass - def compress(self: zdeflate_stream, data: UINT8PTR, length: t.CSizeT, out: t.CUInt8T | t.CPtr[t.CPtr], out_len: t.CSizeT | t.CPtr) -> t.CInt: pass - def flush(self: zdeflate_stream, mode: t.CInt, out: t.CUInt8T | t.CPtr[t.CPtr], out_len: t.CSizeT | t.CPtr) -> t.CInt: pass - def set_dictionary(self: zdeflate_stream, dict: UINT8PTR, length: t.CSizeT) -> t.CInt: pass - def copy(self: zdeflate_stream) -> zdeflate_stream | t.CPtr: pass - def destroy(self: zdeflate_stream) -> t.CInt: pass - -def zdeflate_count_freqs(lit_freqs: INTPTR, dist_freqs: INTPTR, s: zdeflate_stream | t.CPtr, data: UINT8PTR, length: t.CSizeT) -> t.CInt: pass - -def zdeflate_hash(p: BYTE | t.CPtr) -> t.CUnsignedInt: pass - -def zdeflate_len_to_symbol(length: t.CInt) -> t.CInt: pass - -def zdeflate_dist_to_symbol(dist: t.CInt) -> t.CInt: pass - -def zdeflate_count_cl_freqs(all_lengths: INTPTR, total: t.CInt, cl_freqs: INTPTR) -> t.CInt: pass - -def zdeflate_write_cl_encoded(all_lengths: INTPTR, total: t.CInt, w: zdef.zbit_writer | t.CPtr, cl_tree: zhuff.zhuff_tree | t.CPtr) -> t.CInt: pass - -def zdeflate_create(level: t.CInt, wbits: t.CInt, mem_level: t.CInt, strategy: t.CInt) -> zdeflate_stream | t.CPtr: pass - -def zdeflate_one_shot(data: UINT8PTR, length: t.CSizeT, level: t.CInt, wbits: t.CInt, out_len: t.CSizeT | t.CPtr) -> t.CUInt8T | t.CPtr: pass diff --git a/.transpyc_cache/78943d0dbc89a29a.doc.json b/.transpyc_cache/78943d0dbc89a29a.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/78943d0dbc89a29a.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/78943d0dbc89a29a.pyi b/.transpyc_cache/78943d0dbc89a29a.pyi deleted file mode 100644 index ce1d065..0000000 --- a/.transpyc_cache/78943d0dbc89a29a.pyi +++ /dev/null @@ -1,16 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - - -from stdint import * -import w32.win32console -import t, c -from t import CInt, CExport -import stdio -import stdlib -import string -import testcheck - -def main() -> CInt | CExport: pass diff --git a/.transpyc_cache/78bbe886bbe5ca8f.doc.json b/.transpyc_cache/78bbe886bbe5ca8f.doc.json deleted file mode 100644 index ffc63a6..0000000 --- a/.transpyc_cache/78bbe886bbe5ca8f.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"add_imported_module": "记录已导入的模块名,返回新的 imported_modules 字符串指针", "is_module_imported": "检查模块是否已导入(词边界精确匹配,避免子串误匹配)", "add_from_import": "添加 from-import 映射 \"name:module\",返回新的 from_imports 字符串", "lookup_from_import": "查找 from-import 名称,返回模块名或 None\n\n 支持 star import: 如果 from_imports 中有 \"*:module\" 条目,\n 且未找到精确名称匹配,且 allow_star_fallback != 0,则返回 star import 的模块名。\n ", "_resolve_relative_module": "解析相对导入为完整模块名", "compute_package_from_relpath": "从相对路径计算包名(目录部分,分隔符替换为 .)", "ImportsHandle": "导入语句处理器:继承 Mixin 获得 Trans 回指针", "ImportsHandle.HandleImport": "处理 import 语句,返回 0", "ImportsHandle.HandleImportFromModule": "处理 from X import Y 的模块部分,更新 trans._imported_modules", "ImportsHandle.HandleImportFromNames": "处理 from X import Y 的名称部分,更新 trans._from_imports"} \ No newline at end of file diff --git a/.transpyc_cache/78bbe886bbe5ca8f.pyi b/.transpyc_cache/78bbe886bbe5ca8f.pyi deleted file mode 100644 index 868248b..0000000 --- a/.transpyc_cache/78bbe886bbe5ca8f.pyi +++ /dev/null @@ -1,38 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesImports.py -Module: lib.core.Handles.HandlesImports -""" - - -import t, c -from stdint import * -import ast -import memhub -import string -import viperlib -import stdio -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesStruct as HandlesStruct - -def add_imported_module(pool: memhub.MemBuddy | t.CPtr, imported_modules: str, name: str) -> str: pass - -def is_module_imported(imported_modules: str, name: str) -> int: pass - -def add_from_import(pool: memhub.MemBuddy | t.CPtr, from_imports: str, local_name: str, module_name: str) -> str: pass - -def lookup_from_import(from_imports: str, name: str, allow_star_fallback: int) -> str: pass - -def _resolve_relative_module(pool: memhub.MemBuddy | t.CPtr, current_package: str, level: t.CInt, module: str) -> str: pass - -def compute_package_from_relpath(pool: memhub.MemBuddy | t.CPtr, rel_path: str) -> str: pass - - -@t.NoVTable -class ImportsHandle(HandlesBase.Mixin): - def __init__(self: ImportsHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleImport(self: ImportsHandle, node: ast.AST | t.CPtr) -> int: pass - def HandleImportFromModule(self: ImportsHandle, node: ast.AST | t.CPtr) -> int: pass - def HandleImportFromNames(self: ImportsHandle, node: ast.AST | t.CPtr) -> int: pass - -def NewImportsHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ImportsHandle | t.CPtr: pass diff --git a/.transpyc_cache/79ce76014465c04f.doc.json b/.transpyc_cache/79ce76014465c04f.doc.json deleted file mode 100644 index 6723531..0000000 --- a/.transpyc_cache/79ce76014465c04f.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"reset_visible_structs": "重置可见性状态(每个文件翻译前调用)\n\n pool: 内存分配器(严格模式下创建 HashTable)\n strict: 1=严格模式(用户文件),0=宽松模式(includes 文件)\n ", "add_visible_struct": "添加可见结构体名(类定义时和 from-import 时调用)", "is_struct_visible": "检查结构体是否可见,返回 1=可见 / 0=不可见", "init_struct_table": "初始化结构体注册表,返回 1 成功", "_get_struct_entry": "获取第 i 个结构体条目", "_get_field_entry": "获取结构体中第 i 个字段条目", "register_struct": "注册结构体类型,返回 StructEntry 指针\n\n 用类型指针去重(is 比较),不用类名去重。\n 这样跨模块同名类可以共存,各自有独立的字段定义。\n sha1 参数在注册时直接设置 ModuleSha1(避免 set_struct_sha1 找错 entry)。\n ", "set_struct_sha1": "设置结构体所属模块的 SHA1,返回 1=成功 / 0=失败", "get_struct_sha1": "获取结构体所属模块的 SHA1,返回 None=无 SHA1", "add_field": "向结构体添加字段,返回字段索引(-1 失败)\n\n default_val: 字段默认值 AST 节点(可选,None=无默认值)\n ", "find_struct": "按类名查找结构体,返回 StructEntry 或 None", "find_struct_by_module": "按类名 + SHA1 查找结构体,返回 StructEntry 或 None\n\n SHA1 非 None 时:精确匹配 name+sha1,未找到返回 None(不回退,避免跨模块同名找错)\n SHA1 为 None 时:回退到 find_struct(name) 按类名查找第一个\n ", "find_struct_by_type": "按类型指针查找结构体(is 比较),返回 StructEntry 或 None", "lookup_field": "按结构体类型和字段名查找字段信息\n\n 两遍查找策略(跨模块同名类冲突的根本修复):\n 第一遍: 类型指针 is 身份比较(最高优先级,类型唯一确定 entry)\n 第二遍: 名称回退(is 未匹配时,按类名/strstr 匹配,字段未找到时 continue)\n ", "lookup_field_by_class": "按类名和字段名查找字段信息\n\n 优先用 SHA1 匹配(跨模块同名类区分),无 SHA1 时按类名查找第一个\n ", "get_struct_type": "按类名获取结构体的 LLVM 类型", "get_field_by_index": "按类名和字段索引获取字段信息", "struct_has_defaults": "检查结构体是否有任何带默认值的字段,返回 1=有 / 0=无", "_is_struct_type": "检查 ty 是否是 Struct 类型(独立函数,规避嵌套 match 编译器 BUG)", "get_struct_type_from_value": "从 Value 的类型推断结构体类型", "mark_as_union": "标记已注册的结构体为联合体,返回 1=成功 / 0=失败", "is_union_by_name": "按类名检查是否为联合体,返回 1=是 / 0=否", "is_union_by_type": "按类型指针检查是否为联合体,返回 1=是 / 0=否\n\n 先尝试类型指针 == 比较,失败时回退到名称匹配\n ", "mark_as_oop": "标记已注册的结构体为 OOP,返回 1=成功 / 0=失败", "is_oop_by_name": "按类名检查是否为 OOP 结构体,返回 1=是 / 0=否", "mark_has_init": "标记结构体拥有 __init__ 方法,返回 1=成功 / 0=失败", "has_init_by_name": "按类名检查是否有 __init__ 方法,返回 1=有 / 0=无", "mark_has_new": "标记结构体拥有 __new__ 方法,返回 1=成功 / 0=失败", "has_new_by_name": "按类名检查是否有 __new__ 方法,返回 1=有 / 0=无", "get_class_name_by_type": "按类型指针查找类名,返回类名字符串或 None", "_extract_struct_name": "从 LLVMType 提取 Struct 变体的 Name 字段,返回 None 非 Struct", "mark_has_vtable": "标记结构体拥有虚表,返回 1=成功 / 0=失败", "has_vtable_by_name": "按类名检查是否有虚表,返回 1=有 / 0=无", "mark_novtable": "标记结构体为 NoVTable,返回 1=成功 / 0=失败", "is_novtable_by_name": "按类名检查是否为 NoVTable,返回 1=是 / 0=否", "set_parent_name": "设置结构体的父类名,返回 1=成功 / 0=失败", "get_parent_name": "获取结构体的父类名,返回 None=无父类", "set_vtable_methods": "设置虚表方法名数组,返回 1=成功 / 0=失败", "get_vtable_method_index": "获取方法在虚表中的索引,返回 -1=未找到", "get_vtable_method_count": "获取虚表方法数量", "get_vtable_method_name": "获取虚表中第 idx 个方法名,返回 None=越界", "get_field_count": "获取结构体字段数量,返回 -1=未找到", "get_field_name_ptr": "获取 FieldEntry 的字段名,返回 None=未设置", "get_field_type_ptr": "获取 FieldEntry 的字段类型,返回 None=未设置", "get_field_default_ptr": "获取 FieldEntry 的默认值 AST 节点,返回 None=无默认值"} \ No newline at end of file diff --git a/.transpyc_cache/79ce76014465c04f.pyi b/.transpyc_cache/79ce76014465c04f.pyi deleted file mode 100644 index b854517..0000000 --- a/.transpyc_cache/79ce76014465c04f.pyi +++ /dev/null @@ -1,136 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesStruct.py -Module: lib.core.Handles.HandlesStruct -""" - - -import t, c -from stdint import * -import memhub -import string -import llvmlite -import stdio -import ast -import hashtable - -STRUCT_MAX: t.CDefine = 512 -FIELD_MAX: t.CDefine = 32 -FIELD_NAME_MAX: t.CDefine = 64 - -@t.NoVTable -class FieldEntry: - Name: t.CChar | t.CPtr - Index: int - Ty: llvmlite.LLVMType | t.CPtr - DefaultVal: ast.AST | t.CPtr -@t.NoVTable -class StructEntry: - Name: t.CChar | t.CPtr - Ty: llvmlite.LLVMType | t.CPtr - FieldCount: int - Fields: FieldEntry | t.CPtr - IsUnion: int - IsOOP: int - HasInit: int - HasNew: int - HasVTable: int - IsNoVTable: int - ParentName: t.CChar | t.CPtr - VTableMethodCount: int - VTableMethods: t.CChar | t.CPtr - ModuleSha1: t.CChar | t.CPtr - -_struct_table: t.CExtern | StructEntry | t.CPtr -_struct_count: t.CExtern | int -_visible_structs: t.CExtern | hashtable.HashTable | t.CPtr -_strict_visibility: t.CExtern | int - -def reset_visible_structs(pool: memhub.MemBuddy | t.CPtr, strict: int) -> t.CInt: pass - -def add_visible_struct(pool: memhub.MemBuddy | t.CPtr, name: str) -> t.CInt: pass - -def is_struct_visible(name: str) -> int: pass - -def init_struct_table(pool: memhub.MemBuddy | t.CPtr) -> int: pass - -def _get_struct_entry(i: int) -> StructEntry | t.CPtr: pass - -def _get_field_entry(struct_entry: StructEntry | t.CPtr, i: int) -> FieldEntry | t.CPtr: pass - -def register_struct(pool: memhub.MemBuddy | t.CPtr, name: str, struct_ty: llvmlite.LLVMType | t.CPtr, sha1: str) -> StructEntry | t.CPtr: pass - -def set_struct_sha1(pool: memhub.MemBuddy | t.CPtr, class_name: str, sha1: str) -> int: pass - -def get_struct_sha1(class_name: str) -> str: pass - -def add_field(pool: memhub.MemBuddy | t.CPtr, struct_entry: StructEntry | t.CPtr, field_name: str, field_ty: llvmlite.LLVMType | t.CPtr, default_val: ast.AST | t.CPtr) -> int: pass - -def find_struct(name: str) -> StructEntry | t.CPtr: pass - -def find_struct_by_module(name: str, sha1: str) -> StructEntry | t.CPtr: pass - -def find_struct_by_type(struct_ty: llvmlite.LLVMType | t.CPtr) -> StructEntry | t.CPtr: pass - -def lookup_field(struct_ty: llvmlite.LLVMType | t.CPtr, field_name: str) -> FieldEntry | t.CPtr: pass - -def lookup_field_by_class(class_name: str, field_name: str, sha1: str) -> FieldEntry | t.CPtr: pass - -def get_struct_type(class_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def get_field_by_index(class_name: str, idx: int) -> FieldEntry | t.CPtr: pass - -def struct_has_defaults(class_name: str) -> int: pass - -def _is_struct_type(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def get_struct_type_from_value(val: llvmlite.Value | t.CPtr) -> llvmlite.LLVMType | t.CPtr: pass - -def mark_as_union(name: str) -> int: pass - -def is_union_by_name(name: str) -> int: pass - -def is_union_by_type(struct_ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def mark_as_oop(name: str) -> int: pass - -def is_oop_by_name(name: str) -> int: pass - -def mark_has_init(name: str) -> int: pass - -def has_init_by_name(name: str) -> int: pass - -def mark_has_new(name: str) -> int: pass - -def has_new_by_name(name: str) -> int: pass - -def get_class_name_by_type(pool: memhub.MemBuddy | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr) -> str: pass - -def _extract_struct_name(ty: llvmlite.LLVMType | t.CPtr) -> str: pass - -def mark_has_vtable(name: str) -> int: pass - -def has_vtable_by_name(name: str) -> int: pass - -def mark_novtable(name: str) -> int: pass - -def is_novtable_by_name(name: str) -> int: pass - -def set_parent_name(name: str, parent_name: str) -> int: pass - -def get_parent_name(name: str) -> str: pass - -def set_vtable_methods(name: str, methods: t.CChar | t.CPtr, count: int) -> int: pass - -def get_vtable_method_index(name: str, method_name: str) -> int: pass - -def get_vtable_method_count(name: str) -> int: pass - -def get_vtable_method_name(name: str, idx: int) -> str: pass - -def get_field_count(name: str) -> int: pass - -def get_field_name_ptr(fe: FieldEntry | t.CPtr) -> str: pass - -def get_field_type_ptr(fe: FieldEntry | t.CPtr) -> llvmlite.LLVMType | t.CPtr: pass - -def get_field_default_ptr(fe: FieldEntry | t.CPtr) -> ast.AST | t.CPtr: pass diff --git a/.transpyc_cache/79ef7477acd14bd7.doc.json b/.transpyc_cache/79ef7477acd14bd7.doc.json deleted file mode 100644 index 7996d5c..0000000 --- a/.transpyc_cache/79ef7477acd14bd7.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"get_func_name": "从函数节点提取函数名", "escape_llvm_string": "将字符串转换为 LLVM IR 字符串字面量 c\"...\\00\" ", "get_llvm_type_bits": "获取 LLVM 整数类型的位宽,非整数类型返回 0", "get_llvm_float_bits": "获取 LLVM 浮点类型的位宽,非浮点类型返回 0", "is_ptr_type": "检查 ty 是否是 Ptr 类型,返回 1=是, 0=否", "_deref_if_ptr_ptr": "如果 obj_ptr 是 Ptr(Ptr(...)),load 解引用获取内层指针", "coerce_to_type": "将 val 强制转换为 target_ty\n\n 整数: sext(扩展)/ trunc(截断)\n 浮点: fpext(扩展)/ fptrunc(截断)\n int→float: sitofp\n float→int: fptosi\n ", "create_global_string": "创建全局字符串常量并返回 i8* bitcast", "translate_constant": "翻译常量(int/str/bool)", "translate_value": "翻译值表达式为 LLVM Value", "translate_compare": "翻译比较表达式,返回 i1 结果", "translate_unaryop": "翻译一元运算(-x, +x, not x, ~x)", "translate_boolop": "翻译布尔运算(and/or)的短路求值,返回 i1", "translate_name_value": "翻译变量引用(Name 节点)→ load", "ExprHandle": "表达式处理器:继承 Mixin 获得 Trans 回指针", "ExprHandle.HandleValue": "翻译值表达式,从 self.Trans 获取共享状态", "translate_subscript": "翻译下标表达式,返回加载的元素值", "translate_attribute": "翻译属性访问,返回加载的字段值", "get_subscript_ptr": "获取下标表达式的元素指针(用于赋值 lhs)", "get_attribute_ptr": "获取属性访问的字段指针(用于赋值 lhs)"} \ No newline at end of file diff --git a/.transpyc_cache/79ef7477acd14bd7.pyi b/.transpyc_cache/79ef7477acd14bd7.pyi deleted file mode 100644 index 9aa684e..0000000 --- a/.transpyc_cache/79ef7477acd14bd7.pyi +++ /dev/null @@ -1,69 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExpr.py -Module: lib.core.Handles.HandlesExpr -""" - - -import t, c -from stdint import * -import ast -import memhub -import string -import llvmlite -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesExprOps as HandlesExprOps -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.Handles.HandlesNonlocal as HandlesNonlocal -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesEnum as HandlesEnum - -def get_func_name(func_node: ast.AST | t.CPtr) -> str: pass - -def escape_llvm_string(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def get_llvm_type_bits(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def get_llvm_float_bits(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def is_ptr_type(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def _deref_if_ptr_ptr(builder: llvmlite.IRBuilder | t.CPtr, obj_ptr: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def coerce_to_type(builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def create_global_string(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, str_val: str, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_constant(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_value(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_compare(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_unaryop(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_boolop(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_name_value(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -@t.NoVTable -class ExprHandle(HandlesBase.Mixin): - def __init__(self: ExprHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleValue(self: ExprHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def NewExprHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprHandle | t.CPtr: pass - -def translate_subscript(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_attribute(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -import stdio - -def get_subscript_ptr(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def get_attribute_ptr(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass diff --git a/.transpyc_cache/7b6b920fefb08181.doc.json b/.transpyc_cache/7b6b920fefb08181.doc.json deleted file mode 100644 index 8c2a0a2..0000000 --- a/.transpyc_cache/7b6b920fefb08181.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"AssignHandle": "Assign 语句处理器:继承 Mixin 获得 Trans 回指针 + 共享方法"} \ No newline at end of file diff --git a/.transpyc_cache/7b6b920fefb08181.pyi b/.transpyc_cache/7b6b920fefb08181.pyi deleted file mode 100644 index a5ea74e..0000000 --- a/.transpyc_cache/7b6b920fefb08181.pyi +++ /dev/null @@ -1,28 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesAssign.py -Module: lib.core.Handles.HandlesAssign -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesNonlocal as HandlesNonlocal -import lib.core.Handles.HandlesType as HandlesType - -@t.NoVTable -class AssignHandle(HandlesBase.Mixin): - _CurrentClass: str - def __init__(self: AssignHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def Handle(self: AssignHandle, node: ast.AST | t.CPtr) -> int: pass - -def NewAssignHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> AssignHandle | t.CPtr: pass diff --git a/.transpyc_cache/7bb99cc1646d2ae2.doc.json b/.transpyc_cache/7bb99cc1646d2ae2.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/7bb99cc1646d2ae2.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/7bb99cc1646d2ae2.pyi b/.transpyc_cache/7bb99cc1646d2ae2.pyi deleted file mode 100644 index a0accc6..0000000 --- a/.transpyc_cache/7bb99cc1646d2ae2.pyi +++ /dev/null @@ -1,44 +0,0 @@ -""" -Auto-generated Python stub file from test_main.py -Module: test_main -""" - - -import stdio -import t, c -import testcheck -from stdint import * -from asm_test import asm_test -from attr_test import attr_test -from augassign_test import augassign_test -from closure_test import closure_test -from deco_test import deco_test -from deref_min_test import deref_min_test -from deref_test import deref_test -from eq_test import eq_test -from float_test import float_test -from flow_test import flow_test -from for_test import for_test -from func_test import func_test -from llvmir_test import llvmir_test -from oop_test import oop_test -from ptr_only_test import ptr_only_test -from ptr_test import ptr_test -from simple_test import simple_test -from string_min_test import string_min_test -from string_test import string_test -from struct_test import struct_test -from type_bit_test import type_bit_test -from vtable_test import vtable_test -from inherit_test import inherit_test -from func_vtable_test import func_vtable_test -from virtual_dispatch_test import virtual_dispatch_test -from new_test import new_test -from namespace_test import namespace_test -from testcheck_test import testcheck_test -from opovl_test import opovl_test -from generic_test import generic_test - -def check_heap(name: str) -> int: pass - -def main() -> int: pass diff --git a/.transpyc_cache/7c5d5ec59c5fb0a8.doc.json b/.transpyc_cache/7c5d5ec59c5fb0a8.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/7c5d5ec59c5fb0a8.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/7c5d5ec59c5fb0a8.pyi b/.transpyc_cache/7c5d5ec59c5fb0a8.pyi deleted file mode 100644 index 3c94870..0000000 --- a/.transpyc_cache/7c5d5ec59c5fb0a8.pyi +++ /dev/null @@ -1,765 +0,0 @@ -""" -Auto-generated Python stub file from cpython.py -Module: cpython -""" - - -import t, c - -class PyObject: - ob_refcnt: t.CLong - ob_type: t.CPtr - -def Py_INCREF(op: PyObject | t.CPtr) -> t.CVoid | t.State: pass - -def Py_DECREF(op: PyObject | t.CPtr) -> t.CVoid | t.State: pass - -def Py_XINCREF(op: PyObject | t.CPtr) -> t.CVoid | t.State: pass - -def Py_XDECREF(op: PyObject | t.CPtr) -> t.CVoid | t.State: pass - -def Py_DecRef(op: PyObject | t.CPtr) -> t.CVoid | t.State: pass - -def Py_Initialize() -> t.CVoid | t.State: pass - -def Py_Finalize() -> t.CVoid | t.State: pass - -def Py_InitializeEx(initsigs: t.CInt) -> t.CVoid | t.State: pass - -def Py_FinalizeEx() -> t.CInt | t.State: pass - -def Py_IsInitialized() -> t.CInt | t.State: pass - - -class PySTATUS: - func: t.CConst | str - err_msg: t.CConst | str - exitcode: t.CInt -class PyPreConfig: - _config_version: t.CInt - _config_init: t.CInt - parse_argv: t.CInt - isolated: t.CInt - use_environment: t.CInt - utf8_mode: t.CInt - coerce_c_locale: t.CInt - C_locale_warnings: t.CInt - allocator: t.CInt - dev_mode: t.CInt -class PyWideStringList: - length: t.CSizeT - items: t.CPtr -class PyConfig: - _config_version: t.CInt - _config_init: t.CInt - isolated: t.CInt - use_environment: t.CInt - dev_mode: t.CInt - install_signal_handlers: t.CInt - use_hash_seed: t.CInt - hash_seed: t.CUnsignedLong - faulthandler: t.CInt - tracemalloc: t.CInt - import_time: t.CInt - show_ref_count: t.CInt - dump_refs: t.CInt - dump_refs_file: t.CConst | str - malloc_stats: t.CInt - filesystem_errors: t.CInt - pycache_prefix: t.CConst | str - parse_argv: t.CInt - argv: PyWideStringList - program_name: t.CConst | str - xoptions: PyWideStringList - warnoptions: PyWideStringList - site_import: t.CInt - bytes_warning: t.CInt - warn_default_encoding: t.CInt - inspect: t.CInt - interactive: t.CInt - optimization_level: t.CInt - parser_debug: t.CInt - verbose: t.CInt - quiet: t.CInt - home: t.CConst | str - pythonpath_env: t.CConst | str - module_search_paths: PyWideStringList - module_search_paths_set: t.CInt - executable: t.CConst | str - base_executable: t.CConst | str - prefix: t.CConst | str - base_prefix: t.CConst | str - exec_prefix: t.CConst | str - base_exec_prefix: t.CConst | str - platlibdir: t.CConst | str - stdio_filename: t.CConst | str - -def PyConfig_InitPythonConfig(config: PyConfig | t.CPtr) -> t.CVoid | t.State: pass - -def PyConfig_InitIsolatedConfig(config: PyConfig | t.CPtr) -> t.CVoid | t.State: pass - -def PyConfig_Clear(config: PyConfig | t.CPtr) -> t.CVoid | t.State: pass - -def PyConfig_Read(config: PyConfig | t.CPtr) -> PySTATUS | t.State: pass - -def Py_InitializeFromConfig(config: PyConfig | t.CPtr) -> PySTATUS | t.State: pass - -def Py_DecodeLocale(s: t.CConst | str) -> str | t.State: pass - -def PyStatus_Exception(status: PySTATUS) -> t.CInt | t.State: pass - -def PyLong_FromLong(v: t.CLong) -> PyObject | t.CPtr | t.State: pass - -def PyLong_FromUnsignedLong(v: t.CUnsignedLong) -> PyObject | t.CPtr | t.State: pass - -def PyLong_FromLongLong(v: t.CLong) -> PyObject | t.CPtr | t.State: pass - -def PyLong_FromUnsignedLongLong(v: t.CUnsignedLong) -> PyObject | t.CPtr | t.State: pass - -def PyLong_FromSsize_t(v: t.CPtrDiffT) -> PyObject | t.CPtr | t.State: pass - -def PyLong_FromSize_t(v: t.CSizeT) -> PyObject | t.CPtr | t.State: pass - -def PyLong_FromDouble(v: t.CDouble) -> PyObject | t.CPtr | t.State: pass - -def PyLong_AsLong(obj: PyObject | t.CPtr) -> t.CLong | t.State: pass - -def PyLong_AsUnsignedLong(obj: PyObject | t.CPtr) -> t.CUnsignedLong | t.State: pass - -def PyLong_AsLongLong(obj: PyObject | t.CPtr) -> t.CLong | t.State: pass - -def PyLong_AsUnsignedLongLong(obj: PyObject | t.CPtr) -> t.CUnsignedLong | t.State: pass - -def PyLong_AsDouble(obj: PyObject | t.CPtr) -> t.CDouble | t.State: pass - -def PyLong_AsSsize_t(obj: PyObject | t.CPtr) -> t.CPtrDiffT | t.State: pass - -def PyLong_AsSize_t(obj: PyObject | t.CPtr) -> t.CSizeT | t.State: pass - -def PyFloat_FromDouble(v: t.CDouble) -> PyObject | t.CPtr | t.State: pass - -def PyFloat_AsDouble(obj: PyObject | t.CPtr) -> t.CDouble | t.State: pass - -def PyFloat_FromString(s: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyUnicode_FromString(u: t.CConst | str) -> PyObject | t.CPtr | t.State: pass - -def PyUnicode_FromStringAndSize(u: t.CConst | str, size: t.CSizeT) -> PyObject | t.CPtr | t.State: pass - -def PyUnicode_FromFormat(fmt: t.CConst | str) -> PyObject | t.CPtr | t.State: pass - -def PyUnicode_AsUTF8(obj: PyObject | t.CPtr) -> str | t.State: pass - -def PyUnicode_AsUTF8AndSize(obj: PyObject | t.CPtr, size: t.CPtrDiffT | t.CPtr) -> str | t.State: pass - -def PyUnicode_AsWideChar(obj: PyObject | t.CPtr, wbuf: t.CPtr, bufsize: t.CSizeT) -> t.CSizeT | t.State: pass - -def PyUnicode_GetLength(obj: PyObject | t.CPtr) -> t.CPtrDiffT | t.State: pass - -def PyUnicode_ReadChar(obj: PyObject | t.CPtr, idx: t.CSizeT) -> t.CUInt32T | t.State: pass - -def PyUnicode_WriteChar(obj: PyObject | t.CPtr, idx: t.CSizeT, ch: t.CUInt32T) -> t.CInt | t.State: pass - -def PyUnicode_Compare(l: PyObject | t.CPtr, r: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PyUnicode_Concat(l: PyObject | t.CPtr, r: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyUnicode_Contains(container: PyObject | t.CPtr, element: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PyUnicode_Format(fmt: PyObject | t.CPtr, args: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyUnicode_InternInPlace(s: PyObject | t.CPtr | t.CPtr) -> t.CVoid | t.State: pass - -def PyUnicode_InternFromString(u: t.CConst | str) -> PyObject | t.CPtr | t.State: pass - -def PyBytes_FromString(v: t.CConst | str) -> PyObject | t.CPtr | t.State: pass - -def PyBytes_FromStringAndSize(v: t.CConst | str, size: t.CSizeT) -> PyObject | t.CPtr | t.State: pass - -def PyBytes_AsString(obj: PyObject | t.CPtr) -> str | t.State: pass - -def PyBytes_Size(obj: PyObject | t.CPtr) -> t.CSizeT | t.State: pass - -def PyBytes_FromObject(o: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyBytes_FromFormat(fmt: t.CConst | str) -> PyObject | t.CPtr | t.State: pass - -def PyBool_FromLong(v: t.CLong) -> PyObject | t.CPtr | t.State: pass - - -Py_True: t.CExtern | PyObject | t.CPtr | t.State -Py_False: t.CExtern | PyObject | t.CPtr | t.State -Py_None: t.CExtern | PyObject | t.CPtr | t.State - -def PyList_New(len: t.CSizeT) -> PyObject | t.CPtr | t.State: pass - -def PyList_Size(lst: PyObject | t.CPtr) -> t.CSizeT | t.State: pass - -def PyList_GetItem(lst: PyObject | t.CPtr, idx: t.CSizeT) -> PyObject | t.CPtr | t.State: pass - -def PyList_SetItem(lst: PyObject | t.CPtr, idx: t.CSizeT, item: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PyList_Insert(lst: PyObject | t.CPtr, idx: t.CSizeT, item: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PyList_Append(lst: PyObject | t.CPtr, item: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PyList_GetSlice(lst: PyObject | t.CPtr, lo: t.CSizeT, hi: t.CSizeT) -> PyObject | t.CPtr | t.State: pass - -def PyList_SetSlice(lst: PyObject | t.CPtr, lo: t.CSizeT, hi: t.CSizeT, items: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PyList_Sort(lst: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PyList_Reverse(lst: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PyList_AsTuple(lst: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyTuple_New(len: t.CSizeT) -> PyObject | t.CPtr | t.State: pass - -def PyTuple_Size(tup: PyObject | t.CPtr) -> t.CSizeT | t.State: pass - -def PyTuple_GetItem(tup: PyObject | t.CPtr, idx: t.CSizeT) -> PyObject | t.CPtr | t.State: pass - -def PyTuple_SetItem(tup: PyObject | t.CPtr, idx: t.CSizeT, item: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PyTuple_GetSlice(tup: PyObject | t.CPtr, lo: t.CSizeT, hi: t.CSizeT) -> PyObject | t.CPtr | t.State: pass - -def PyTuple_Pack(n: t.CSizeT) -> PyObject | t.CPtr | t.State: pass - -def PyDict_New() -> PyObject | t.CPtr | t.State: pass - -def PyDict_GetItem(d: PyObject | t.CPtr, key: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyDict_GetItemString(d: PyObject | t.CPtr, key: t.CConst | str) -> PyObject | t.CPtr | t.State: pass - -def PyDict_SetItem(d: PyObject | t.CPtr, key: PyObject | t.CPtr, val: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PyDict_SetItemString(d: PyObject | t.CPtr, key: t.CConst | str, val: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PyDict_DelItem(d: PyObject | t.CPtr, key: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PyDict_DelItemString(d: PyObject | t.CPtr, key: t.CConst | str) -> t.CInt | t.State: pass - -def PyDict_Size(d: PyObject | t.CPtr) -> t.CSizeT | t.State: pass - -def PyDict_Keys(d: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyDict_Values(d: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyDict_Items(d: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyDict_Copy(d: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyDict_Clear(d: PyObject | t.CPtr) -> t.CVoid | t.State: pass - -def PyDict_Contains(d: PyObject | t.CPtr, key: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PyDict_Next(d: PyObject | t.CPtr, pos: t.CPtrDiffT | t.CPtr, key: PyObject | t.CPtr | t.CPtr, val: PyObject | t.CPtr | t.CPtr) -> t.CInt | t.State: pass - -def PyDict_Merge(d: PyObject | t.CPtr, other: PyObject | t.CPtr, override: t.CInt) -> t.CInt | t.State: pass - -def PyDict_Update(d: PyObject | t.CPtr, other: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PyObject_Str(obj: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyObject_Repr(obj: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyObject_Type(obj: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyObject_IsInstance(obj: PyObject | t.CPtr, cls: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PyObject_IsSubclass(obj: PyObject | t.CPtr, cls: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PyObject_HasAttr(obj: PyObject | t.CPtr, name: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PyObject_HasAttrString(obj: PyObject | t.CPtr, name: t.CConst | str) -> t.CInt | t.State: pass - -def PyObject_GetAttr(obj: PyObject | t.CPtr, name: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyObject_GetAttrString(obj: PyObject | t.CPtr, name: t.CConst | str) -> PyObject | t.CPtr | t.State: pass - -def PyObject_SetAttr(obj: PyObject | t.CPtr, name: PyObject | t.CPtr, val: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PyObject_SetAttrString(obj: PyObject | t.CPtr, name: t.CConst | str, val: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PyObject_DelAttr(obj: PyObject | t.CPtr, name: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PyObject_DelAttrString(obj: PyObject | t.CPtr, name: t.CConst | str) -> t.CInt | t.State: pass - -def PyObject_Call(callable: PyObject | t.CPtr, args: PyObject | t.CPtr, kwargs: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyObject_CallObject(callable: PyObject | t.CPtr, args: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyObject_CallNoArgs(callable: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyObject_CallOneArg(callable: PyObject | t.CPtr, arg: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyObject_IsTrue(obj: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PyObject_Not(obj: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PyObject_RichCompare(o1: PyObject | t.CPtr, o2: PyObject | t.CPtr, opid: t.CInt) -> PyObject | t.CPtr | t.State: pass - -def PyObject_RichCompareBool(o1: PyObject | t.CPtr, o2: PyObject | t.CPtr, opid: t.CInt) -> t.CInt | t.State: pass - -def PyObject_Hash(obj: PyObject | t.CPtr) -> t.CLong | t.State: pass - -def PyObject_Length(obj: PyObject | t.CPtr) -> t.CSizeT | t.State: pass - -def PyObject_GetItem(obj: PyObject | t.CPtr, key: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyObject_SetItem(obj: PyObject | t.CPtr, key: PyObject | t.CPtr, val: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PyObject_DelItem(obj: PyObject | t.CPtr, key: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PyObject_Dir(obj: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyObject_GetIter(obj: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyIter_Next(obj: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - - -Py_LT: t.CExtern | t.CInt | t.State -Py_LE: t.CExtern | t.CInt | t.State -Py_EQ: t.CExtern | t.CInt | t.State -Py_NE: t.CExtern | t.CInt | t.State -Py_GT: t.CExtern | t.CInt | t.State -Py_GE: t.CExtern | t.CInt | t.State - -def PyImport_ImportModule(name: t.CConst | str) -> PyObject | t.CPtr | t.State: pass - -def PyImport_Import(name: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyImport_ImportModuleLevelObject(name: PyObject | t.CPtr, globs: PyObject | t.CPtr, locs: PyObject | t.CPtr, fromlist: PyObject | t.CPtr, level: t.CInt) -> PyObject | t.CPtr | t.State: pass - -def PyImport_ReloadModule(mod: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyImport_AddModule(name: t.CConst | str) -> PyObject | t.CPtr | t.State: pass - -def PyImport_GetModuleDict() -> PyObject | t.CPtr | t.State: pass - -def PyImport_ImportModuleEx(name: t.CConst | str, globs: PyObject | t.CPtr, locs: PyObject | t.CPtr, fromlist: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - - -class PyMethodDef: - ml_name: t.CConst | str - ml_meth: t.CPtr - ml_flags: t.CInt - ml_doc: t.CConst | str -class PyModuleDef_Base: - ob_base: PyObject - m_init: t.CPtr - m_index: t.CSizeT - m_copy: PyObject | t.CPtr -class PyModuleDef: - m_base: PyModuleDef_Base - m_name: t.CConst | str - m_doc: t.CConst | str - m_size: t.CPtrDiffT - m_methods: PyMethodDef | t.CPtr - m_slots: t.CPtr - m_traverse: t.CPtr - m_clear: t.CPtr - m_free: t.CPtr - -def PyModule_Create(mod: PyModuleDef | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyModule_Create2(mod: PyModuleDef | t.CPtr, ver: t.CInt) -> PyObject | t.CPtr | t.State: pass - -def PyModule_GetName(mod: PyObject | t.CPtr) -> str | t.State: pass - -def PyModule_GetDict(mod: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyModule_GetFilenameObject(mod: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyModule_AddObject(mod: PyObject | t.CPtr, name: t.CConst | str, val: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PyModule_AddObjectRef(mod: PyObject | t.CPtr, name: t.CConst | str, val: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PyModule_AddIntConstant(mod: PyObject | t.CPtr, name: t.CConst | str, val: t.CLong) -> t.CInt | t.State: pass - -def PyModule_AddStringConstant(mod: PyObject | t.CPtr, name: t.CConst | str, val: t.CConst | str) -> t.CInt | t.State: pass - -def PyGILState_Ensure() -> t.CInt | t.State: pass - -def PyGILState_Release(state: t.CInt) -> t.CVoid | t.State: pass - -def PyEval_SaveThread() -> t.CPtr | t.State: pass - -def PyEval_RestoreThread(tstate: t.CPtr) -> t.CVoid | t.State: pass - -def PyEval_AcquireThread(tstate: t.CPtr) -> t.CVoid | t.State: pass - -def PyEval_ReleaseThread(tstate: t.CPtr) -> t.CVoid | t.State: pass - -def PyEval_AcquireLock() -> t.CVoid | t.State: pass - -def PyEval_ReleaseLock() -> t.CVoid | t.State: pass - -def PyEval_ThreadsInitialized() -> t.CInt | t.State: pass - -def PyEval_InitThreads() -> t.CVoid | t.State: pass - -def PyErr_Occurred() -> PyObject | t.CPtr | t.State: pass - -def PyErr_Clear() -> t.CVoid | t.State: pass - -def PyErr_Fetch(tp: PyObject | t.CPtr | t.CPtr, val: PyObject | t.CPtr | t.CPtr, tb: PyObject | t.CPtr | t.CPtr) -> t.CVoid | t.State: pass - -def PyErr_Restore(tp: PyObject | t.CPtr, val: PyObject | t.CPtr, tb: PyObject | t.CPtr) -> t.CVoid | t.State: pass - -def PyErr_NormalizeException(tp: PyObject | t.CPtr | t.CPtr, val: PyObject | t.CPtr | t.CPtr, tb: PyObject | t.CPtr | t.CPtr) -> t.CVoid | t.State: pass - -def PyErr_SetString(tp: PyObject | t.CPtr, msg: t.CConst | str) -> t.CVoid | t.State: pass - -def PyErr_SetObject(tp: PyObject | t.CPtr, val: PyObject | t.CPtr) -> t.CVoid | t.State: pass - -def PyErr_BadArgument() -> t.CPtr | t.State: pass - -def PyErr_NoMemory() -> t.CPtr | t.State: pass - -def PyErr_Print() -> t.CVoid | t.State: pass - -def PyErr_ExceptionMatches(exc: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PyErr_GivenExceptionMatches(given: PyObject | t.CPtr, exc: PyObject | t.CPtr) -> t.CInt | t.State: pass - - -PyExc_BaseException: t.CExtern | PyObject | t.CPtr | t.State -PyExc_Exception: t.CExtern | PyObject | t.CPtr | t.State -PyExc_TypeError: t.CExtern | PyObject | t.CPtr | t.State -PyExc_ValueError: t.CExtern | PyObject | t.CPtr | t.State -PyExc_RuntimeError: t.CExtern | PyObject | t.CPtr | t.State -PyExc_KeyError: t.CExtern | PyObject | t.CPtr | t.State -PyExc_IndexError: t.CExtern | PyObject | t.CPtr | t.State -PyExc_AttributeError: t.CExtern | PyObject | t.CPtr | t.State -PyExc_ImportError: t.CExtern | PyObject | t.CPtr | t.State -PyExc_OSError: t.CExtern | PyObject | t.CPtr | t.State -PyExc_IOError: t.CExtern | PyObject | t.CPtr | t.State -PyExc_ZeroDivisionError: t.CExtern | PyObject | t.CPtr | t.State -PyExc_OverflowError: t.CExtern | PyObject | t.CPtr | t.State -PyExc_MemoryError: t.CExtern | PyObject | t.CPtr | t.State -PyExc_NameError: t.CExtern | PyObject | t.CPtr | t.State -PyExc_StopIteration: t.CExtern | PyObject | t.CPtr | t.State -PyExc_NotImplementedError: t.CExtern | PyObject | t.CPtr | t.State -PyExc_SyntaxError: t.CExtern | PyObject | t.CPtr | t.State -PyExc_FileNotFoundError: t.CExtern | PyObject | t.CPtr | t.State -PyExc_PermissionError: t.CExtern | PyObject | t.CPtr | t.State -PyExc_IsADirectoryError: t.CExtern | PyObject | t.CPtr | t.State -PyExc_NotADirectoryError: t.CExtern | PyObject | t.CPtr | t.State - -def Py_BuildValue(fmt: t.CConst | str) -> PyObject | t.CPtr | t.State: pass - -def Py_VaBuildValue(fmt: t.CConst | str, va: t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyLong_Check(obj: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PyFloat_Check(obj: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PyUnicode_Check(obj: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PyBytes_Check(obj: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PyList_Check(obj: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PyTuple_Check(obj: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PyDict_Check(obj: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PyBool_Check(obj: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PyNone_Check(obj: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PyMem_Malloc(size: t.CSizeT) -> t.CPtr | t.State: pass - -def PyMem_Realloc(ptr: t.CPtr, size: t.CSizeT) -> t.CPtr | t.State: pass - -def PyMem_Free(ptr: t.CPtr) -> t.CVoid | t.State: pass - -def PyMem_Calloc(nelem: t.CSizeT, elsize: t.CSizeT) -> t.CPtr | t.State: pass - -def PyObject_Malloc(size: t.CSizeT) -> t.CPtr | t.State: pass - -def PyObject_Realloc(ptr: t.CPtr, size: t.CSizeT) -> t.CPtr | t.State: pass - -def PyObject_Free(ptr: t.CPtr) -> t.CVoid | t.State: pass - -def PyObject_Calloc(nelem: t.CSizeT, elsize: t.CSizeT) -> t.CPtr | t.State: pass - -def PyObject_Init(obj: PyObject | t.CPtr, tp: t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyObject_InitVar(obj: PyObject | t.CPtr, tp: t.CPtr, size: t.CSizeT) -> PyObject | t.CPtr | t.State: pass - -def PyFile_FromString(filename: t.CConst | str, mode: t.CConst | str) -> PyObject | t.CPtr | t.State: pass - -def PyFile_AsFile(file: PyObject | t.CPtr) -> t.CPtr | t.State: pass - -def PyFile_WriteObject(obj: PyObject | t.CPtr, file: PyObject | t.CPtr, flags: t.CInt) -> t.CInt | t.State: pass - -def PyFile_WriteString(s: t.CConst | str, file: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def Py_CompileString(s: t.CConst | str, filename: t.CConst | str, start: t.CInt) -> PyObject | t.CPtr | t.State: pass - -def PyEval_EvalCode(code: PyObject | t.CPtr, globs: PyObject | t.CPtr, locs: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyEval_EvalCodeEx(code: PyObject | t.CPtr, globs: PyObject | t.CPtr, locs: PyObject | t.CPtr, args: PyObject | t.CPtr | t.CPtr, argc: t.CInt, kws: PyObject | t.CPtr | t.CPtr, kwc: t.CInt, defs: PyObject | t.CPtr | t.CPtr, defc: t.CInt, kwdefs: PyObject | t.CPtr, closure: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyEval_EvalFrame(frame: t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyEval_CallObject(callable: PyObject | t.CPtr, args: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyEval_CallFunction(callable: PyObject | t.CPtr, fmt: t.CConst | str) -> PyObject | t.CPtr | t.State: pass - -def PyEval_CallMethod(obj: PyObject | t.CPtr, method: t.CConst | str, fmt: t.CConst | str) -> PyObject | t.CPtr | t.State: pass - -def PyRun_SimpleString(cmd: t.CConst | str) -> t.CInt | t.State: pass - -def PyRun_SimpleFile(fp: t.CPtr, filename: t.CConst | str) -> t.CInt | t.State: pass - -def PyRun_AnyFile(fp: t.CPtr, filename: t.CConst | str) -> t.CInt | t.State: pass - -def PyRun_String(s: t.CConst | str, start: t.CInt, globs: PyObject | t.CPtr, locs: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyRun_File(fp: t.CPtr, filename: t.CConst | str, start: t.CInt, globs: PyObject | t.CPtr, locs: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - - -Py_single_input: t.CExtern | t.CInt | t.State -Py_file_input: t.CExtern | t.CInt | t.State -Py_eval_input: t.CExtern | t.CInt | t.State - -def PyCapsule_New(ptr: t.CPtr, name: t.CConst | str, dtor: t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyCapsule_GetPointer(cap: PyObject | t.CPtr, name: t.CConst | str) -> t.CPtr | t.State: pass - -def PyCapsule_GetName(cap: PyObject | t.CPtr) -> str | t.State: pass - -def PyCapsule_IsValid(cap: PyObject | t.CPtr, name: t.CConst | str) -> t.CInt | t.State: pass - -def PyCapsule_SetPointer(cap: PyObject | t.CPtr, ptr: t.CPtr) -> t.CInt | t.State: pass - -def PyCapsule_SetName(cap: PyObject | t.CPtr, name: t.CConst | str) -> t.CInt | t.State: pass - -def PyCapsule_SetDestructor(cap: PyObject | t.CPtr, dtor: t.CPtr) -> t.CInt | t.State: pass - -def PySequence_Check(obj: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PySequence_Size(obj: PyObject | t.CPtr) -> t.CSizeT | t.State: pass - -def PySequence_Length(obj: PyObject | t.CPtr) -> t.CSizeT | t.State: pass - -def PySequence_Concat(o1: PyObject | t.CPtr, o2: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PySequence_Repeat(obj: PyObject | t.CPtr, count: t.CSizeT) -> PyObject | t.CPtr | t.State: pass - -def PySequence_GetItem(obj: PyObject | t.CPtr, idx: t.CSizeT) -> PyObject | t.CPtr | t.State: pass - -def PySequence_SetItem(obj: PyObject | t.CPtr, idx: t.CSizeT, val: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PySequence_DelItem(obj: PyObject | t.CPtr, idx: t.CSizeT) -> t.CInt | t.State: pass - -def PySequence_GetSlice(obj: PyObject | t.CPtr, start: t.CSizeT, end: t.CSizeT) -> PyObject | t.CPtr | t.State: pass - -def PySequence_SetSlice(obj: PyObject | t.CPtr, start: t.CSizeT, end: t.CSizeT, val: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PySequence_DelSlice(obj: PyObject | t.CPtr, start: t.CSizeT, end: t.CSizeT) -> t.CInt | t.State: pass - -def PySequence_Contains(obj: PyObject | t.CPtr, val: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PySequence_Index(obj: PyObject | t.CPtr, val: PyObject | t.CPtr) -> t.CSizeT | t.State: pass - -def PySequence_Count(obj: PyObject | t.CPtr, val: PyObject | t.CPtr) -> t.CSizeT | t.State: pass - -def PySequence_List(obj: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PySequence_Tuple(obj: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyMapping_Check(obj: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PyMapping_Size(obj: PyObject | t.CPtr) -> t.CSizeT | t.State: pass - -def PyMapping_Length(obj: PyObject | t.CPtr) -> t.CSizeT | t.State: pass - -def PyMapping_HasKey(obj: PyObject | t.CPtr, key: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PyMapping_HasKeyString(obj: PyObject | t.CPtr, key: t.CConst | str) -> t.CInt | t.State: pass - -def PyMapping_GetItemString(obj: PyObject | t.CPtr, key: t.CConst | str) -> PyObject | t.CPtr | t.State: pass - -def PyMapping_SetItemString(obj: PyObject | t.CPtr, key: t.CConst | str, val: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PyMapping_Keys(obj: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyMapping_Values(obj: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyMapping_Items(obj: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyNumber_Add(o1: PyObject | t.CPtr, o2: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyNumber_Subtract(o1: PyObject | t.CPtr, o2: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyNumber_Multiply(o1: PyObject | t.CPtr, o2: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyNumber_MatrixMultiply(o1: PyObject | t.CPtr, o2: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyNumber_FloorDivide(o1: PyObject | t.CPtr, o2: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyNumber_TrueDivide(o1: PyObject | t.CPtr, o2: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyNumber_Modulo(o1: PyObject | t.CPtr, o2: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyNumber_Power(o1: PyObject | t.CPtr, o2: PyObject | t.CPtr, o3: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyNumber_Negative(obj: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyNumber_Positive(obj: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyNumber_Absolute(obj: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyNumber_Invert(obj: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyNumber_Lshift(o1: PyObject | t.CPtr, o2: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyNumber_Rshift(o1: PyObject | t.CPtr, o2: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyNumber_And(o1: PyObject | t.CPtr, o2: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyNumber_Xor(o1: PyObject | t.CPtr, o2: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyNumber_Or(o1: PyObject | t.CPtr, o2: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyNumber_Index(obj: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyNumber_Long(obj: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyNumber_Float(obj: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyNumber_Check(obj: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PyWeakref_NewRef(obj: PyObject | t.CPtr, cb: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyWeakref_GetObject(ref: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyWeakref_Check(obj: PyObject | t.CPtr) -> t.CInt | t.State: pass - - -class PyGetSetDef: - name: t.CConst | str - get: t.CPtr - set: t.CPtr - doc: t.CConst | str - closure: t.CPtr -class PyMemberDef: - name: t.CConst | str - type: t.CInt - offset: t.CPtrDiffT - flags: t.CInt - doc: t.CConst | str - -def PySys_GetObject(name: t.CConst | str) -> PyObject | t.CPtr | t.State: pass - -def PySys_SetObject(name: t.CConst | str, val: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PySys_ResetWarnOptions() -> t.CVoid | t.State: pass - -def PySys_AddWarnOption(s: PyObject | t.CPtr) -> t.CVoid | t.State: pass - -def PySYS_AddXOption(s: PyObject | t.CPtr) -> t.CVoid | t.State: pass - -def PySys_WriteStdout(fmt: t.CConst | str) -> t.CVoid | t.State: pass - -def PySys_WriteStderr(fmt: t.CConst | str) -> t.CVoid | t.State: pass - -def PySys_FormatStdout(fmt: t.CConst | str) -> t.CVoid | t.State: pass - -def PySys_FormatStderr(fmt: t.CConst | str) -> t.CVoid | t.State: pass - -def PyMemoryView_FromObject(obj: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyMemoryView_GetContiguous(obj: PyObject | t.CPtr, btype: t.CInt, order: t.CChar) -> PyObject | t.CPtr | t.State: pass - -def PyMemoryView_Check(obj: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PySet_New(iterable: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PySet_Add(s: PyObject | t.CPtr, key: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PySet_Discard(s: PyObject | t.CPtr, key: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PySet_Contains(s: PyObject | t.CPtr, key: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PySet_Size(s: PyObject | t.CPtr) -> t.CSizeT | t.State: pass - -def PySet_Clear(s: PyObject | t.CPtr) -> t.CVoid | t.State: pass - -def PySet_Check(obj: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PyFrozenSet_New(iterable: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PyFrozenSet_Check(obj: PyObject | t.CPtr) -> t.CInt | t.State: pass - -def PySlice_New(start: PyObject | t.CPtr, stop: PyObject | t.CPtr, step: PyObject | t.CPtr) -> PyObject | t.CPtr | t.State: pass - -def PySlice_GetIndicesEx(sl: PyObject | t.CPtr, length: t.CSizeT, start: t.CSizeT | t.CPtr, stop: t.CSizeT | t.CPtr, step: t.CSizeT | t.CPtr, slicelen: t.CSizeT | t.CPtr) -> t.CInt | t.State: pass - -def PySlice_Unpack(sl: PyObject | t.CPtr, start: t.CPtrDiffT | t.CPtr, stop: t.CPtrDiffT | t.CPtr, step: t.CPtrDiffT | t.CPtr) -> t.CVoid | t.State: pass - -def PySlice_AdjustIndices(length: t.CSizeT, start: t.CPtrDiffT | t.CPtr, stop: t.CPtrDiffT | t.CPtr, step: t.CPtrDiffT) -> t.CSizeT | t.State: pass - -def PySlice_Check(obj: PyObject | t.CPtr) -> t.CInt | t.State: pass - - -class PyLongObj: - ptr: PyObject | t.CPtr - def __new__(self: PyLongObj) -> 'PyLongObj' | t.CPtr: pass - @staticmethod - def from_long(val: t.CLong) -> 'PyLongObj' | t.CPtr: pass - def __add__(self: PyLongObj, other: PyLongObj | t.CPtr) -> 'PyLongObj' | t.CPtr: pass - def __sub__(self: PyLongObj, other: PyLongObj | t.CPtr) -> 'PyLongObj' | t.CPtr: pass - def __mul__(self: PyLongObj, other: PyLongObj | t.CPtr) -> 'PyLongObj' | t.CPtr: pass - def __neg__(self: PyLongObj) -> 'PyLongObj' | t.CPtr: pass - def to_long(self: PyLongObj) -> t.CLong: pass - def __str__(self: PyLongObj) -> PyObject | t.CPtr: pass - def dec_ref(self: PyLongObj) -> t.CInt: pass -class PyFloatObj: - ptr: PyObject | t.CPtr - def __new__(self: PyFloatObj) -> 'PyFloatObj' | t.CPtr: pass - @staticmethod - def from_double(val: t.CDouble) -> 'PyFloatObj' | t.CPtr: pass - def __add__(self: PyFloatObj, other: PyFloatObj | t.CPtr) -> 'PyFloatObj' | t.CPtr: pass - def __sub__(self: PyFloatObj, other: PyFloatObj | t.CPtr) -> 'PyFloatObj' | t.CPtr: pass - def __mul__(self: PyFloatObj, other: PyFloatObj | t.CPtr) -> 'PyFloatObj' | t.CPtr: pass - def __truediv__(self: PyFloatObj, other: PyFloatObj | t.CPtr) -> 'PyFloatObj' | t.CPtr: pass - def __neg__(self: PyFloatObj) -> 'PyFloatObj' | t.CPtr: pass - def to_double(self: PyFloatObj) -> t.CDouble: pass - def __str__(self: PyFloatObj) -> PyObject | t.CPtr: pass - def dec_ref(self: PyFloatObj) -> t.CInt: pass -class PyUnicodeObj: - ptr: PyObject | t.CPtr - def __new__(self: PyUnicodeObj) -> 'PyUnicodeObj' | t.CPtr: pass - @staticmethod - def from_string(s: t.CChar | t.CPtr) -> 'PyUnicodeObj' | t.CPtr: pass - def __add__(self: PyUnicodeObj, other: PyUnicodeObj | t.CPtr) -> 'PyUnicodeObj' | t.CPtr: pass - def __len__(self: PyUnicodeObj) -> t.CPtrDiffT: pass - def as_utf8(self: PyUnicodeObj) -> t.CChar | t.CPtr: pass - def __str__(self: PyUnicodeObj) -> PyObject | t.CPtr: pass - def dec_ref(self: PyUnicodeObj) -> t.CInt: pass -class PyListObj: - ptr: PyObject | t.CPtr - def __new__(self: PyListObj) -> 'PyListObj' | t.CPtr: pass - @staticmethod - def new() -> 'PyListObj' | t.CPtr: pass - def __getitem__(self: PyListObj, idx: t.CSizeT) -> PyObject | t.CPtr: pass - def __setitem__(self: PyListObj, idx: t.CSizeT, val: PyObject | t.CPtr) -> t.CInt: pass - def __len__(self: PyListObj) -> t.CSizeT: pass - def append(self: PyListObj, item: PyObject | t.CPtr) -> t.CInt: pass - def dec_ref(self: PyListObj) -> t.CInt: pass -class PyDictObj: - ptr: PyObject | t.CPtr - def __new__(self: PyDictObj) -> 'PyDictObj' | t.CPtr: pass - @staticmethod - def new() -> 'PyDictObj' | t.CPtr: pass - def __getitem__(self: PyDictObj, key: PyObject | t.CPtr) -> PyObject | t.CPtr: pass - def __setitem__(self: PyDictObj, key: PyObject | t.CPtr, val: PyObject | t.CPtr) -> t.CInt: pass - def __len__(self: PyDictObj) -> t.CSizeT: pass - def get_string(self: PyDictObj, key: t.CChar | t.CPtr) -> PyObject | t.CPtr: pass - def set_string(self: PyDictObj, key: t.CChar | t.CPtr, val: PyObject | t.CPtr) -> t.CInt: pass - def dec_ref(self: PyDictObj) -> t.CInt: pass \ No newline at end of file diff --git a/.transpyc_cache/7e260c14d2712119.doc.json b/.transpyc_cache/7e260c14d2712119.doc.json deleted file mode 100644 index c90d338..0000000 --- a/.transpyc_cache/7e260c14d2712119.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"SrcFileEntry": "源文件条目", "_ScanDirForPyFiles": "递归扫描目录,收集 .py 文件到 entries,返回新的 file_count", "RunMultiFileProject": "多文件项目编译\n\n Returns: 0 成功,非 0 失败\n "} \ No newline at end of file diff --git a/.transpyc_cache/7e260c14d2712119.pyi b/.transpyc_cache/7e260c14d2712119.pyi deleted file mode 100644 index 2398e44..0000000 --- a/.transpyc_cache/7e260c14d2712119.pyi +++ /dev/null @@ -1,42 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Phase2.py -Module: lib.core.Phase2 -""" - - -import t, c -from stdint import * -import stdio -import string -import stdlib -import memhub -import viperlib -import w32.fileio as fileio -import w32.win32file -import w32.win32base -import sys -import ast -import llvmlite -import subprocess -import argparse -import lib.core.VLogger as VLogger -import lib.core.Handles.HandlesTranslator as HandlesTranslator -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.BuildPipeline as BuildPipeline -import lib.core.StubMerger as StubMerger -import lib.Projectrans.Utils as Utils -import lib.Projectrans.Config as Config - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -SRC_BUF_SIZE: t.CDefine = 1048576 -MAX_SRC_FILES: t.CDefine = 64 - -@t.NoVTable -class SrcFileEntry: - Path: str - Sha1: str - -def _ScanDirForPyFiles(mb: memhub.MemBuddy | t.CPtr, dir_path: str, entries: SrcFileEntry | t.CPtr, entry_size: t.CSizeT, file_count: int, max_files: int) -> int: pass - -def RunMultiFileProject(mb: memhub.MemBuddy | t.CPtr, source_dir: str, temp_dir: str, output_dir: str, cc_cmd: str, cc_flags: str, linker_cmd: str, linker_flags: str, linker_output: str, includes_binary_dir: str, includes_dir: str, do_phase1: int, do_phase2: int, log: VLogger.Logger | t.CPtr, args: argparse.ParsedArgs | t.CPtr) -> int: pass diff --git a/.transpyc_cache/7eb1251b89cc1b7d.doc.json b/.transpyc_cache/7eb1251b89cc1b7d.doc.json deleted file mode 100644 index e7fc1ec..0000000 --- a/.transpyc_cache/7eb1251b89cc1b7d.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"TranslateFileGetTrans": "翻译文件,返回 Translator 对象(调用者负责 dump_ir),None 失败", "ensure_dir": "递归创建目录(类似 mkdir -p),目录已存在视为成功\n\n Args:\n path: 目录路径(支持 / 或 \\ 分隔符)\n\n Returns:\n 0 成功(包括目录已存在),非 0 失败\n ", "write_ir_to_file": "将 IR 缓冲区写入 .ll 文件\n\n Args:\n ir_buf: IR 文本缓冲区\n ir_len: IR 文本长度\n output_dir: 输出目录(temp 或 output)\n module_name: 模块名(如 \"main\")\n\n Returns:\n 0 成功,非 0 失败\n ", "compile_ll_to_obj": "调用 llc 将 .ll 编译为 .obj\n\n Args:\n ir_path: .ll 文件路径\n output_dir: 输出目录\n module_name: 模块名(用于生成 .obj 文件名)\n cc_cmd: 编译器命令(如 \"llc\")\n cc_flags: 编译器参数(如 \"-filetype=obj -relocation-model=pic\")\n\n Returns:\n 0 成功,非 0 失败\n ", "collect_obj_files": "扫描 includes_binary_dir 目录,收集所有 .obj 文件路径到 out_buf\n\n Args:\n includes_binary_dir: includes.binary 目录路径\n out_buf: 输出缓冲区(用于存放空格分隔的 .obj 文件路径)\n out_size: 输出缓冲区大小\n\n Returns:\n 写入的字节数(不含 null 终止符),0 表示无文件或错误\n ", "link_obj_to_exe": "调用 clang++ 链接 .obj 为 .exe\n\n Args:\n output_dir: 输出目录(包含 .obj 文件)\n module_name: 模块名\n linker_cmd: 链接器命令(如 \"clang++\")\n linker_flags: 链接器参数\n linker_output: 输出文件名(如 \"test.exe\")\n includes_binary_dir: includes.binary 目录路径(链接时附加预编译 .obj)\n\n Returns:\n 0 成功,非 0 失败\n ", "compile_module_to_obj": "编译 IR 到 .obj(不链接)\n\n Args:\n ir_buf: LLVM IR 文本缓冲区\n ir_len: IR 文本长度\n temp_dir: 临时目录\n output_dir: 输出目录\n module_name: 模块名(SHA1)\n cc_cmd: 编译器命令\n cc_flags: 编译器参数\n\n Returns:\n 0 成功,非 0 失败\n ", "link_objs_to_exe": "链接多个 .obj 文件为 .exe\n\n Args:\n obj_paths: 空格分隔的 .obj 文件完整路径字符串\n obj_paths_len: obj_paths 长度\n linker_cmd: 链接器命令(如 \"clang++\")\n linker_flags: 链接器参数\n linker_output: 输出文件完整路径\n includes_binary_dir: includes.binary 目录路径(链接时附加预编译 .obj)\n\n Returns:\n 0 成功,非 0 失败\n ", "run_pipeline": "执行完整编译管线\n\n Args:\n ir_buf: LLVM IR 文本缓冲区\n ir_len: IR 文本长度\n temp_dir: 临时目录\n output_dir: 输出目录\n module_name: 模块名\n cc_cmd: 编译器命令\n cc_flags: 编译器参数\n linker_cmd: 链接器命令\n linker_flags: 链接器参数\n linker_output: 输出文件名\n includes_binary_dir: includes.binary 目录路径(链接时附加预编译 .obj)\n\n Returns:\n BuildResult 对象\n "} \ No newline at end of file diff --git a/.transpyc_cache/7eb1251b89cc1b7d.pyi b/.transpyc_cache/7eb1251b89cc1b7d.pyi deleted file mode 100644 index 3a8c9c7..0000000 --- a/.transpyc_cache/7eb1251b89cc1b7d.pyi +++ /dev/null @@ -1,50 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.BuildPipeline.py -Module: lib.core.BuildPipeline -""" - - -import t, c -from stdint import * -import stdio -import string -import stdlib -import memhub -import w32.fileio as fileio -import w32.win32file -import w32.win32base -import subprocess -import viperlib -import ast -import lib.core.Handles.HandlesTranslator as HandlesTranslator -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesType as HandlesType - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -SRC_BUF_SIZE: t.CDefine = 1048576 - -def TranslateFileGetTrans(mb: memhub.MemBuddy | t.CPtr, file_path: str, sha1_val: str) -> HandlesTranslator.Translator | t.CPtr: pass - - -class BuildResult: - Success: t.CInt - OutputPath: str - ErrorMsg: str - def __new__(self: BuildResult) -> t.CPtr: pass - def __init__(self: BuildResult) -> t.CInt: pass - -def ensure_dir(path: str) -> int: pass - -def write_ir_to_file(ir_buf: bytes, ir_len: t.CSizeT, output_dir: str, module_name: str) -> int: pass - -def compile_ll_to_obj(ir_path: str, output_dir: str, module_name: str, cc_cmd: str, cc_flags: str) -> int: pass - -def collect_obj_files(includes_binary_dir: str, out_buf: bytes, out_size: t.CSizeT) -> t.CSizeT: pass - -def link_obj_to_exe(output_dir: str, module_name: str, linker_cmd: str, linker_flags: str, linker_output: str, includes_binary_dir: str) -> int: pass - -def compile_module_to_obj(ir_buf: bytes, ir_len: t.CSizeT, temp_dir: str, output_dir: str, module_name: str, cc_cmd: str, cc_flags: str) -> int: pass - -def link_objs_to_exe(obj_paths: str, obj_paths_len: t.CSizeT, linker_cmd: str, linker_flags: str, linker_output: str, includes_binary_dir: str) -> int: pass - -def run_pipeline(ir_buf: bytes, ir_len: t.CSizeT, temp_dir: str, output_dir: str, module_name: str, cc_cmd: str, cc_flags: str, linker_cmd: str, linker_flags: str, linker_output: str, includes_binary_dir: str) -> BuildResult | t.CPtr: pass diff --git a/.transpyc_cache/7fa5782c9657b2ba.doc.json b/.transpyc_cache/7fa5782c9657b2ba.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/7fa5782c9657b2ba.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/7fa5782c9657b2ba.pyi b/.transpyc_cache/7fa5782c9657b2ba.pyi deleted file mode 100644 index 9dc1839..0000000 --- a/.transpyc_cache/7fa5782c9657b2ba.pyi +++ /dev/null @@ -1,14 +0,0 @@ -""" -Auto-generated Python stub file from generic_test.py -Module: generic_test -""" - - -import stdio -import stdlib -import t, c -import testcheck -import memhub -import _list - -def generic_test() -> int: pass diff --git a/.transpyc_cache/7fff0dc7524a3a93.doc.json b/.transpyc_cache/7fff0dc7524a3a93.doc.json deleted file mode 100644 index c00e036..0000000 --- a/.transpyc_cache/7fff0dc7524a3a93.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数\n\n 直接接收三个 Value 参数,避免通过 Next 链表遍历(共享 alloca 对象的\n Next 字段可能被其他操作污染,导致链表断裂)。\n ", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/7fff0dc7524a3a93.pyi b/.transpyc_cache/7fff0dc7524a3a93.pyi deleted file mode 100644 index 40c3168..0000000 --- a/.transpyc_cache/7fff0dc7524a3a93.pyi +++ /dev/null @@ -1,171 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, dst_val: llvmlite.Value | t.CPtr, src_val: llvmlite.Value | t.CPtr, num_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/80241c7d6f357bd1.doc.json b/.transpyc_cache/80241c7d6f357bd1.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/80241c7d6f357bd1.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/80241c7d6f357bd1.pyi b/.transpyc_cache/80241c7d6f357bd1.pyi deleted file mode 100644 index 25cba70..0000000 --- a/.transpyc_cache/80241c7d6f357bd1.pyi +++ /dev/null @@ -1,10 +0,0 @@ -""" -Auto-generated Python stub file from asm_test.py -Module: asm_test -""" - - -import stdio -import t, c - -def asm_test() -> int: pass diff --git a/.transpyc_cache/8046d45456d0b153.doc.json b/.transpyc_cache/8046d45456d0b153.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/8046d45456d0b153.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/8046d45456d0b153.pyi b/.transpyc_cache/8046d45456d0b153.pyi deleted file mode 100644 index a6ccaab..0000000 --- a/.transpyc_cache/8046d45456d0b153.pyi +++ /dev/null @@ -1,18 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - - -import t, c -from stdint import * -import stdio -import stdlib -import socket -import memhub -import requests - -_mbuddy: t.CExtern | memhub.MemBuddy | t.CPtr - -@t.CExport -def main() -> int: pass diff --git a/.transpyc_cache/814e6b31adfc6256.doc.json b/.transpyc_cache/814e6b31adfc6256.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/814e6b31adfc6256.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/814e6b31adfc6256.pyi b/.transpyc_cache/814e6b31adfc6256.pyi deleted file mode 100644 index 0a0bccf..0000000 --- a/.transpyc_cache/814e6b31adfc6256.pyi +++ /dev/null @@ -1,69 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - -import c - - -import t -from stdio import printf -import testcheck - -def log(ctx: t.CVoid | t.CPtr, func_name: str, phase: t.CInt, args_ptr: t.CVoid | t.CPtr, ret_ptr: t.CVoid | t.CPtr, decor_args_ptr: t.CVoid | t.CPtr) -> t.CInt | t.CExport: pass - -def trace(ctx: t.CVoid | t.CPtr, func_name: str, phase: t.CInt, args_ptr: t.CVoid | t.CPtr, ret_ptr: t.CVoid | t.CPtr, decor_args_ptr: t.CVoid | t.CPtr) -> t.CInt | t.CExport: pass - - -_timing_tmp: t.CExtern | t.CInt - -def timing(ctx: t.CVoid | t.CPtr, func_name: str, phase: t.CInt, args_ptr: t.CVoid | t.CPtr, ret_ptr: t.CVoid | t.CPtr, decor_args_ptr: t.CVoid | t.CPtr) -> t.CInt | t.CExport: pass - -def repeat(ctx: t.CVoid | t.CPtr, func_name: str, phase: t.CInt, args_ptr: t.CVoid | t.CPtr, ret_ptr: t.CVoid | t.CPtr, decor_args_ptr: t.CVoid | t.CPtr) -> t.CInt | t.CExport: pass - - -_skip_count: t.CExtern | t.CInt - -def skip(ctx: t.CVoid | t.CPtr, func_name: str, phase: t.CInt, args_ptr: t.CVoid | t.CPtr, ret_ptr: t.CVoid | t.CPtr, decor_args_ptr: t.CVoid | t.CPtr) -> t.CInt | t.CExport: pass - - -_call_count: t.CExtern | t.CInt - -def count_calls(ctx: t.CVoid | t.CPtr, func_name: str, phase: t.CInt, args_ptr: t.CVoid | t.CPtr, ret_ptr: t.CVoid | t.CPtr, decor_args_ptr: t.CVoid | t.CPtr) -> t.CInt | t.CExport: pass - -@log -def add(a: t.CInt, b: t.CInt) -> t.CInt | t.CExport: pass - -@log -@trace -def multiply(a: t.CInt, b: t.CInt) -> t.CInt | t.CExport: pass - -@log -def greet(name: str) -> t.CVoid | t.CExport: pass - -@log -def get_value() -> t.CInt | t.CExport: pass - -@timing -def compute(x: t.CInt) -> t.CInt | t.CExport: pass - -@repeat(3) -def echo(msg: str) -> t.CVoid | t.CExport: pass - -@timing -@log -def power(base: t.CInt, exp: t.CInt) -> t.CInt | t.CExport: pass - -@skip -def dangerous() -> t.CInt | t.CExport: pass - -@repeat(3) -def accumulate(x: t.CInt) -> t.CInt | t.CExport: pass - -@count_calls -def factorial(n: t.CInt) -> t.CInt | t.CExport: pass - -@log -def fib(n: t.CInt) -> t.CInt | t.CExport: pass - -def main() -> t.CInt | t.CExport: pass diff --git a/.transpyc_cache/81eb28ba912467a6.doc.json b/.transpyc_cache/81eb28ba912467a6.doc.json deleted file mode 100644 index f6225ef..0000000 --- a/.transpyc_cache/81eb28ba912467a6.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"translate_stmt": "翻译单条语句,返回新增的变量数", "translate_global": "翻译 global 语句:记录 global 变量名", "translate_nonlocal": "翻译 nonlocal 语句:记录 nonlocal 变量名", "translate_expr_stmt": "翻译表达式语句(printf 调用等)", "pre_scan_allocas": "预扫描语句中的 AnnAssign,提前创建 alloca\n\n 返回新增的变量数\n ", "translate_break": "翻译 break 语句:跳转到循环 end 块", "translate_continue": "翻译 continue 语句:跳转到循环 cond/incr 块", "get_stmt_kind_name": "获取语句类型名"} \ No newline at end of file diff --git a/.transpyc_cache/81eb28ba912467a6.pyi b/.transpyc_cache/81eb28ba912467a6.pyi deleted file mode 100644 index aa52e34..0000000 --- a/.transpyc_cache/81eb28ba912467a6.pyi +++ /dev/null @@ -1,35 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesBody.py -Module: lib.core.Handles.HandlesBody -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import viperlib -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.Handles.HandlesFunctions as HandlesFunctions -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -def translate_stmt(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - -def translate_global(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - -def translate_nonlocal(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - -def translate_expr_stmt(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - -def pre_scan_allocas(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - -def translate_break(trans: HT.Translator | t.CPtr) -> int: pass - -def translate_continue(trans: HT.Translator | t.CPtr) -> int: pass - -def get_stmt_kind_name(node: ast.AST | t.CPtr) -> str: pass diff --git a/.transpyc_cache/83ba314b4637eec9.doc.json b/.transpyc_cache/83ba314b4637eec9.doc.json deleted file mode 100644 index 656d90d..0000000 --- a/.transpyc_cache/83ba314b4637eec9.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"TypeRegistry.Register": "注册一个 TypeInfo。ti.Name 字段必须已设置。\n\n Returns:\n 1 表示成功,0 表示失败(ti 为 None 或 Name 为 None)\n ", "TypeRegistry.Lookup": "按名称查找 TypeInfo。\n\n Returns:\n 找到返回 TypeInfo*,找不到返回 None\n ", "TypeRegistry.Has": "检查类型是否已注册。", "Mixin": "所有 Handle 的非多态基类:持有 Translator 回指针 + 共享委托方法", "Mixin.InitMixin": "初始化 Mixin 字段(子类 __init__ 中调用)"} \ No newline at end of file diff --git a/.transpyc_cache/83ba314b4637eec9.pyi b/.transpyc_cache/83ba314b4637eec9.pyi deleted file mode 100644 index 1d05ab4..0000000 --- a/.transpyc_cache/83ba314b4637eec9.pyi +++ /dev/null @@ -1,54 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesBase.py -Module: lib.core.Handles.HandlesBase -""" - - -import t, c -from stdint import * -import string -import viperlib -import memhub -import hashtable -import lib.core.Handles.HandlesTranslator as HT - -class TypeKind(t.CEnum): - Basic: t.State - Pointer: t.State - Struct: t.State - Union: t.State - Enum: t.State - Typedef: t.State - Function: t.State - Array: t.State - Void: t.State -@t.NoVTable -class TypeInfo: - Kind: int - Name: str - Size: int - Align: int - IsSigned: int - PtrCount: int - IsConst: int - IsVolatile: int -class TypeRegistry: - _ht: hashtable.HashTable | t.CPtr - __mbuddy__: memhub.MemManager | t.CPtr - def Register(self: TypeRegistry, ti: TypeInfo | t.CPtr) -> int: pass - def Lookup(self: TypeRegistry, name: str) -> TypeInfo | t.CPtr: pass - def Has(self: TypeRegistry, name: str) -> int: pass - -def NewTypeInfo(pool: memhub.MemManager | t.CPtr) -> TypeInfo | t.CPtr: pass - -def NewTypeRegistry(pool: memhub.MemManager | t.CPtr) -> TypeRegistry | t.CPtr: pass - -def TypeToLLVM(buf: t.CChar | t.CPtr, buf_size: t.CSizeT, ti: TypeInfo | t.CPtr) -> int: pass - - -@t.NoVTable -class Mixin: - Trans: HT.Translator | t.CPtr - def InitMixin(self: Mixin, trans: HT.Translator | t.CPtr) -> int: pass - -_mbuddy: t.CExtern | t.CVoid | t.CPtr \ No newline at end of file diff --git a/.transpyc_cache/862591435f13ef30.doc.json b/.transpyc_cache/862591435f13ef30.doc.json deleted file mode 100644 index c00e036..0000000 --- a/.transpyc_cache/862591435f13ef30.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数\n\n 直接接收三个 Value 参数,避免通过 Next 链表遍历(共享 alloca 对象的\n Next 字段可能被其他操作污染,导致链表断裂)。\n ", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/862591435f13ef30.pyi b/.transpyc_cache/862591435f13ef30.pyi deleted file mode 100644 index 40c3168..0000000 --- a/.transpyc_cache/862591435f13ef30.pyi +++ /dev/null @@ -1,171 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, dst_val: llvmlite.Value | t.CPtr, src_val: llvmlite.Value | t.CPtr, num_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/8639fbe371566e75.doc.json b/.transpyc_cache/8639fbe371566e75.doc.json deleted file mode 100644 index 8c2a0a2..0000000 --- a/.transpyc_cache/8639fbe371566e75.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"AssignHandle": "Assign 语句处理器:继承 Mixin 获得 Trans 回指针 + 共享方法"} \ No newline at end of file diff --git a/.transpyc_cache/8639fbe371566e75.pyi b/.transpyc_cache/8639fbe371566e75.pyi deleted file mode 100644 index 1e1b4bd..0000000 --- a/.transpyc_cache/8639fbe371566e75.pyi +++ /dev/null @@ -1,29 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesAssign.py -Module: lib.core.Handles.HandlesAssign -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesNonlocal as HandlesNonlocal -import lib.core.Handles.HandlesType as HandlesType - -@t.NoVTable -class AssignHandle(HandlesBase.Mixin): - _CurrentClass: str - def __init__(self: AssignHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def Handle(self: AssignHandle, node: ast.AST | t.CPtr) -> int: pass - -def NewAssignHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> AssignHandle | t.CPtr: pass diff --git a/.transpyc_cache/8642175afa282a4f.doc.json b/.transpyc_cache/8642175afa282a4f.doc.json deleted file mode 100644 index 95e17f3..0000000 --- a/.transpyc_cache/8642175afa282a4f.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_load_includes_sha1_set": "读取 _sha1_map.txt,将 includes/ 开头的 SHA1 写入 sha1_set\n sha1_set 大小为 MAX_INCLUDES_SHA1 * 17(每个 SHA1 16字符+null)\n 返回找到的 includes SHA1 数量,-1 表示错误", "_is_in_sha1_set": "检查 sha1 是否在集合中", "WriteIncludesSha1Map": "将 includes 扫描结果写入 _sha1_map.txt(供 StubMerger 使用)\n\n 若 filter_set 不为 None 且 filter_count > 0,只写入 filter_set 中的条目。\n ", "_IsFuncDeclaredOrDefined": "检查 out_buf 中是否已有函数的 declare 或 define 行", "_CommentOutDeclareInBuf": "在 out_buf 中搜索 declare 行(包含 func_sig),将其注释掉", "_CommentOutGlobalInBuf": "在 out_buf 中搜索全局变量定义行(以 global_name 开头),将行首改为 ';'", "_CommentOutOpaqueTypeInBuf": "在 out_buf 中搜索 type_name_prefix 对应的 opaque 声明行,将行首改为 ';'\n\n type_name_prefix 格式: '%\"sha1.ClassName\"'(不含 '=' 和后续内容)\n 返回 1=已注释, 0=未找到\n ", "_HasFullTypeDefinition": "检查 out_buf 中是否已有 type_name_prefix 的完整定义", "_LoadAndAppendStub": "加载依赖 stub 并追加(跳过 header,去重)", "_LoadAndAppendTextDeclares": "从依赖 text.ll 提取 declare(define 转 declare),追加到 out_buf", "_PathToModuleName": "将文件路径转换为模块名", "_BuildIncludesSha1Map": "从 _sha1_map.txt 构建 sha1→module_name 映射,返回条目数", "_FindSha1ByModName": "从模块名查找 SHA1(精确匹配)", "_AddSha1ToSet": "将 SHA1 加入集合,返回新 count", "_BuildReachableSha1Set": "构建可达 SHA1 集合(依赖图按需翻译)", "BuildCombinedIR": "组合本地 stub + 依赖 stubs + 本地 text → out_buf(按需加载)"} \ No newline at end of file diff --git a/.transpyc_cache/8642175afa282a4f.pyi b/.transpyc_cache/8642175afa282a4f.pyi deleted file mode 100644 index 4466a75..0000000 --- a/.transpyc_cache/8642175afa282a4f.pyi +++ /dev/null @@ -1,60 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.StubMerger.py -Module: lib.core.StubMerger -""" - - -import t, c -from stdint import * -import memhub -import string -import stdio -import stdlib -import llvmlite -import w32.win32file as win32file -import w32.win32base as win32base -import w32.fileio as fileio -import viperlib -import sys -import ast -import lib.core.IncludesScanner as IncludesScanner -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesTranslator as HandlesTranslator - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -MAX_INCLUDES_SHA1: t.CDefine = 256 -STUB_READ_BUF_SIZE: t.CDefine = 262144 -MAX_INCLUDES: t.CDefine = 256 - -def _load_includes_sha1_set(pool: memhub.MemBuddy | t.CPtr, temp_dir: str, sha1_set: str) -> int: pass - -def _is_in_sha1_set(sha1: str, sha1_set: str, set_count: int) -> int: pass - -def WriteIncludesSha1Map(mb: memhub.MemBuddy | t.CPtr, temp_dir: str, scan_result: IncludesScanner.ScanResult | t.CPtr, filter_set: t.CChar | t.CPtr, filter_count: int) -> int: pass - -def _IsFuncDeclaredOrDefined(out_buf: bytes, func_sig: str) -> int: pass - -def _CommentOutDeclareInBuf(out_buf: bytes, func_sig: str) -> int: pass - -def _CommentOutGlobalInBuf(out_buf: bytes, global_name: str) -> int: pass - -def _CommentOutOpaqueTypeInBuf(out_buf: bytes, type_name_prefix: str) -> int: pass - -def _HasFullTypeDefinition(out_buf: bytes, type_name_prefix: str) -> int: pass - -def _LoadAndAppendStub(temp_dir: str, td_len: t.CSizeT, dep_sha1: str, dep_buf: bytes, out_buf: bytes, out_size: t.CSizeT, out_pos: t.CSizeT) -> t.CSizeT: pass - -def _LoadAndAppendTextDeclares(temp_dir: str, td_len: t.CSizeT, dep_sha1: str, dep_buf: bytes, out_buf: bytes, out_size: t.CSizeT, out_pos: t.CSizeT) -> t.CSizeT: pass - -def _PathToModuleName(path: str) -> str: pass - -def _BuildIncludesSha1Map(temp_dir: str, td_len: t.CSizeT, sha1_list: t.CChar | t.CPtr, mod_list: t.CChar | t.CPtr) -> int: pass - -def _FindSha1ByModName(sha1_arr: t.CChar | t.CPtr, mod_arr: t.CChar | t.CPtr, count: int, mod_name: str) -> str: pass - -def _AddSha1ToSet(set_buf: t.CChar | t.CPtr, count: int, sha1: str) -> int: pass - -def _BuildReachableSha1Set(mb: memhub.MemBuddy | t.CPtr, source_dir: str, temp_dir: str, reachable_set: t.CChar | t.CPtr) -> int: pass - -def BuildCombinedIR(temp_dir: str, local_sha1: str, out_buf: bytes, out_size: t.CSizeT) -> t.CSizeT: pass diff --git a/.transpyc_cache/86e203c56ae4de20.doc.json b/.transpyc_cache/86e203c56ae4de20.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/86e203c56ae4de20.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/86e203c56ae4de20.pyi b/.transpyc_cache/86e203c56ae4de20.pyi deleted file mode 100644 index ba09b5a..0000000 --- a/.transpyc_cache/86e203c56ae4de20.pyi +++ /dev/null @@ -1,27 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - -import c - - -import t -import stdio -import testcheck - -def test_for_loop() -> t.CInt: pass - -def test_while_loop() -> t.CInt: pass - -def test_nested_loop() -> t.CInt: pass - -def test_break() -> t.CInt: pass - -def test_continue() -> t.CInt: pass - -def test_range_step() -> t.CInt: pass - -def test_loop_u64() -> t.CInt: pass - -def main() -> t.CInt: pass diff --git a/.transpyc_cache/888ea5bd6ab516ae.doc.json b/.transpyc_cache/888ea5bd6ab516ae.doc.json deleted file mode 100644 index c189e56..0000000 --- a/.transpyc_cache/888ea5bd6ab516ae.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"compute_sha1": "计算字符串的 SHA1,返回前 16 个十六进制字符(用于文件命名)", "CleanDir": "删除目录中所有文件(非递归),返回删除的文件数,-1 表示错误"} \ No newline at end of file diff --git a/.transpyc_cache/888ea5bd6ab516ae.pyi b/.transpyc_cache/888ea5bd6ab516ae.pyi deleted file mode 100644 index e4ed12e..0000000 --- a/.transpyc_cache/888ea5bd6ab516ae.pyi +++ /dev/null @@ -1,21 +0,0 @@ -""" -Auto-generated Python stub file from lib.Projectrans.Utils.py -Module: lib.Projectrans.Utils -""" - - -import t, c -from stdint import * -import memhub -import string -import stdlib -import viperlib -import hashlib -import w32.win32file -import w32.win32base - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr - -def compute_sha1(pool: memhub.MemBuddy | t.CPtr, content: str) -> str: pass - -def CleanDir(dir_path: str) -> int: pass diff --git a/.transpyc_cache/895376eafe64af68.doc.json b/.transpyc_cache/895376eafe64af68.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/895376eafe64af68.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/895376eafe64af68.pyi b/.transpyc_cache/895376eafe64af68.pyi deleted file mode 100644 index e2b929c..0000000 --- a/.transpyc_cache/895376eafe64af68.pyi +++ /dev/null @@ -1,12 +0,0 @@ -""" -Auto-generated Python stub file from simple_test.py -Module: simple_test -""" - -import t -import c - - -import stdio - -def simple_test() -> int: pass diff --git a/.transpyc_cache/8959998ad305c7b1.doc.json b/.transpyc_cache/8959998ad305c7b1.doc.json deleted file mode 100644 index 6b37383..0000000 --- a/.transpyc_cache/8959998ad305c7b1.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/8959998ad305c7b1.pyi b/.transpyc_cache/8959998ad305c7b1.pyi deleted file mode 100644 index e470478..0000000 --- a/.transpyc_cache/8959998ad305c7b1.pyi +++ /dev/null @@ -1,171 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, args_head: llvmlite.Value | t.CPtr, arg_count: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/8a97754e9e3c2b9a.doc.json b/.transpyc_cache/8a97754e9e3c2b9a.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/8a97754e9e3c2b9a.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/8a97754e9e3c2b9a.pyi b/.transpyc_cache/8a97754e9e3c2b9a.pyi deleted file mode 100644 index c3e417c..0000000 --- a/.transpyc_cache/8a97754e9e3c2b9a.pyi +++ /dev/null @@ -1,30 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - - -import t, c -from stdint import * -from stdio import printf -import memhub -import json -import string -import w32.win32memory as win32mem -import testcheck - -def test_construct(pool: memhub.MemPool | t.CPtr) -> t.CInt: pass - -def test_build_structures(pool: memhub.MemPool | t.CPtr) -> t.CInt: pass - -def test_parse(pool: memhub.MemPool | t.CPtr) -> t.CInt: pass - -def test_write(pool: memhub.MemPool | t.CPtr) -> t.CInt: pass - -def test_nested(pool: memhub.MemPool | t.CPtr) -> t.CInt: pass - -def test_mpool_reuse() -> t.CInt: pass - -def test_escape(pool: memhub.MemPool | t.CPtr) -> t.CInt: pass - -def main() -> t.CInt | t.CExport: pass diff --git a/.transpyc_cache/8e0d8fdba991b3b4.doc.json b/.transpyc_cache/8e0d8fdba991b3b4.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/8e0d8fdba991b3b4.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/8e0d8fdba991b3b4.pyi b/.transpyc_cache/8e0d8fdba991b3b4.pyi deleted file mode 100644 index 1aebea2..0000000 --- a/.transpyc_cache/8e0d8fdba991b3b4.pyi +++ /dev/null @@ -1,25 +0,0 @@ -""" -Auto-generated Python stub file from config.py -Module: config -""" - - -import stdint -import t, c - -A: t.CExtern | t.CChar | t.CPtr - -class BIT_TEST(t.Object): - a: t.CInt | t.Bit(1) - b: t.CInt | t.Bit(1) - c: t.CInt | t.Bit(1) - d: t.CInt | t.Bit(5) -class OOP_TEST(t.Object): - a: t.CInt - def __init__(self: OOP_TEST) -> t.CInt: pass - def __call__(self: OOP_TEST) -> stdint.UINT: pass -class ENUM_TEST(t.CEnum): - A: t.State = 0 - B: t.State - C: t.State - Len: t.State \ No newline at end of file diff --git a/.transpyc_cache/8ebed83a7817fa0c.pyi b/.transpyc_cache/8ebed83a7817fa0c.pyi deleted file mode 100644 index 6375e88..0000000 --- a/.transpyc_cache/8ebed83a7817fa0c.pyi +++ /dev/null @@ -1,15 +0,0 @@ -""" -Auto-generated Python stub file from zlib.zchecksum.py -Module: zlib.zchecksum -""" - - -from stdint import * -import t, c - -def zchecksum_adler32(data: UINT8PTR, length: t.CSizeT, init: UINT32) -> t.CUInt32T: pass - - -crc32_table: t.CExtern | t.CArray[t.CUInt32T, 256] - -def zchecksum_crc32(data: UINT8PTR, length: t.CSizeT, init: t.CUInt32T) -> t.CUInt32T: pass diff --git a/.transpyc_cache/8f12094c840be06a.doc.json b/.transpyc_cache/8f12094c840be06a.doc.json deleted file mode 100644 index 0487965..0000000 --- a/.transpyc_cache/8f12094c840be06a.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"InitLib": "初始化 lib 包的全局 _mbuddy 指针,并级联注入到所有子模块。\n\n Args:\n mb: memhub.MemManager 实例指针(MemBuddy 等子类通过多态传入)\n\n Returns:\n 0 表示成功,非 0 表示失败\n "} \ No newline at end of file diff --git a/.transpyc_cache/8f12094c840be06a.pyi b/.transpyc_cache/8f12094c840be06a.pyi deleted file mode 100644 index ac07294..0000000 --- a/.transpyc_cache/8f12094c840be06a.pyi +++ /dev/null @@ -1,14 +0,0 @@ -""" -Auto-generated Python stub file from lib.__init__.py -Module: lib.__init__ -""" - - -import t, c -from stdint import * -import memhub -import lib.core.VLogger as VLogger - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr - -def InitLib(mb: memhub.MemManager | t.CPtr) -> int: pass diff --git a/.transpyc_cache/90921d009fdd674c.pyi b/.transpyc_cache/90921d009fdd674c.pyi deleted file mode 100644 index 86d9bcf..0000000 --- a/.transpyc_cache/90921d009fdd674c.pyi +++ /dev/null @@ -1,56 +0,0 @@ -""" -Auto-generated Python stub file from zlib.zdeflate.py -Module: zlib.zdeflate -""" - - -from stdint import * -import zlib.zchecksum as zchecksum -import zlib.zhuff as zhuff -import zlib.zdef as zdef -import string -import memhub -import t, c - -@t.Object -class zdeflate_stream: - pool: memhub.MemManager | t.CPtr - writer: zdef.zbit_writer - window: BYTE | t.CPtr - window_pos: t.CInt - window_size: t.CInt - hash_head: t.CInt | t.CPtr - hash_prev: t.CInt | t.CPtr - level: t.CInt - strategy: t.CInt - wbits: t.CInt - is_finished: t.CInt - adler: t.CUInt32T - def find_match(self: zdeflate_stream, data: BYTE | t.CPtr, data_len: t.CSizeT, pos: t.CSizeT, best_dist: t.CInt | t.CPtr) -> t.CInt: pass - def update_hash(self: zdeflate_stream, data: BYTE | t.CPtr, pos: t.CSizeT) -> t.CInt: pass - def write_fixed_block(self: zdeflate_stream, data: UINT8PTR, length: t.CSizeT, final: t.CInt) -> t.CInt: pass - def encode_block_data(self: zdeflate_stream, data: UINT8PTR, length: t.CSizeT, lit_tree: zhuff.zhuff_tree | t.CPtr, dist_tree: zhuff.zhuff_tree | t.CPtr) -> t.CInt: pass - def write_dynamic_block(self: zdeflate_stream, data: UINT8PTR, length: t.CSizeT, final: t.CInt) -> t.CInt: pass - def compress_block(self: zdeflate_stream, data: UINT8PTR, length: t.CSizeT, final: t.CInt) -> t.CInt: pass - def write_stored_block(self: zdeflate_stream, data: UINT8PTR, length: t.CSizeT, final: t.CInt) -> t.CInt: pass - def compress(self: zdeflate_stream, data: UINT8PTR, length: t.CSizeT, out: t.CUInt8T | t.CPtr[t.CPtr], out_len: t.CSizeT | t.CPtr) -> t.CInt: pass - def flush(self: zdeflate_stream, mode: t.CInt, out: t.CUInt8T | t.CPtr[t.CPtr], out_len: t.CSizeT | t.CPtr) -> t.CInt: pass - def set_dictionary(self: zdeflate_stream, dict: UINT8PTR, length: t.CSizeT) -> t.CInt: pass - def copy(self: zdeflate_stream) -> zdeflate_stream | t.CPtr: pass - def destroy(self: zdeflate_stream) -> t.CInt: pass - -def zdeflate_count_freqs(lit_freqs: INTPTR, dist_freqs: INTPTR, s: zdeflate_stream | t.CPtr, data: UINT8PTR, length: t.CSizeT) -> t.CInt: pass - -def zdeflate_hash(p: BYTE | t.CPtr) -> t.CUnsignedInt: pass - -def zdeflate_len_to_symbol(length: t.CInt) -> t.CInt: pass - -def zdeflate_dist_to_symbol(dist: t.CInt) -> t.CInt: pass - -def zdeflate_count_cl_freqs(all_lengths: INTPTR, total: t.CInt, cl_freqs: INTPTR) -> t.CInt: pass - -def zdeflate_write_cl_encoded(all_lengths: INTPTR, total: t.CInt, w: zdef.zbit_writer | t.CPtr, cl_tree: zhuff.zhuff_tree | t.CPtr) -> t.CInt: pass - -def zdeflate_create(pool: memhub.MemManager | t.CPtr, level: t.CInt, wbits: t.CInt, mem_level: t.CInt, strategy: t.CInt) -> zdeflate_stream | t.CPtr: pass - -def zdeflate_one_shot(pool: memhub.MemManager | t.CPtr, data: UINT8PTR, length: t.CSizeT, level: t.CInt, wbits: t.CInt, out_len: t.CSizeT | t.CPtr) -> t.CUInt8T | t.CPtr: pass diff --git a/.transpyc_cache/90d4bbcb87a33305.doc.json b/.transpyc_cache/90d4bbcb87a33305.doc.json deleted file mode 100644 index 6b37383..0000000 --- a/.transpyc_cache/90d4bbcb87a33305.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/90d4bbcb87a33305.pyi b/.transpyc_cache/90d4bbcb87a33305.pyi deleted file mode 100644 index e470478..0000000 --- a/.transpyc_cache/90d4bbcb87a33305.pyi +++ /dev/null @@ -1,171 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, args_head: llvmlite.Value | t.CPtr, arg_count: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/9172f37e8d46721b.doc.json b/.transpyc_cache/9172f37e8d46721b.doc.json deleted file mode 100644 index 47b20d9..0000000 --- a/.transpyc_cache/9172f37e8d46721b.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_get_external_func_param_ty": "获取外部函数第 param_idx 个参数的期望类型,None 表示用字面量原类型\n\n 对 Win32 API 函数的所有非指针参数返回 i64,匹配 declare 中\n ULONG/SIZE_T 被统一翻译为 i64 的情况。\n ", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数\n\n 直接接收三个 Value 参数,避免通过 Next 链表遍历(共享 alloca 对象的\n Next 字段可能被其他操作污染,导致链表断裂)。\n ", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/9172f37e8d46721b.pyi b/.transpyc_cache/9172f37e8d46721b.pyi deleted file mode 100644 index 5214419..0000000 --- a/.transpyc_cache/9172f37e8d46721b.pyi +++ /dev/null @@ -1,173 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _get_external_func_param_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str, param_idx: int) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, dst_val: llvmlite.Value | t.CPtr, src_val: llvmlite.Value | t.CPtr, num_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/91a2bd55f6b00ffc.doc.json b/.transpyc_cache/91a2bd55f6b00ffc.doc.json deleted file mode 100644 index c3a1e25..0000000 --- a/.transpyc_cache/91a2bd55f6b00ffc.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"SrcFileEntry": "源文件条目", "RunMultiFileProject": "多文件项目编译\n\n Returns: 0 成功,非 0 失败\n "} \ No newline at end of file diff --git a/.transpyc_cache/91a2bd55f6b00ffc.pyi b/.transpyc_cache/91a2bd55f6b00ffc.pyi deleted file mode 100644 index ad12e1f..0000000 --- a/.transpyc_cache/91a2bd55f6b00ffc.pyi +++ /dev/null @@ -1,39 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Phase2.py -Module: lib.core.Phase2 -""" - - -import t, c -from stdint import * -import stdio -import string -import stdlib -import memhub -import viperlib -import w32.fileio as fileio -import w32.win32file -import w32.win32base -import sys -import ast -import llvmlite -import subprocess -import argparse -import lib.core.VLogger as VLogger -import lib.core.Handles.HandlesTranslator as HandlesTranslator -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.BuildPipeline as BuildPipeline -import lib.core.StubMerger as StubMerger -import lib.Projectrans.Utils as Utils -import lib.Projectrans.Config as Config - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -SRC_BUF_SIZE: t.CDefine = 1048576 -MAX_SRC_FILES: t.CDefine = 32 - -@t.NoVTable -class SrcFileEntry: - Path: str - Sha1: str - -def RunMultiFileProject(mb: memhub.MemBuddy | t.CPtr, source_dir: str, temp_dir: str, output_dir: str, cc_cmd: str, cc_flags: str, linker_cmd: str, linker_flags: str, linker_output: str, includes_binary_dir: str, includes_dir: str, do_phase1: int, do_phase2: int, log: VLogger.Logger | t.CPtr, args: argparse.ParsedArgs | t.CPtr) -> int: pass diff --git a/.transpyc_cache/924ed8cd4ea5c4c2.doc.json b/.transpyc_cache/924ed8cd4ea5c4c2.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/924ed8cd4ea5c4c2.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/924ed8cd4ea5c4c2.pyi b/.transpyc_cache/924ed8cd4ea5c4c2.pyi deleted file mode 100644 index 16c5c7a..0000000 --- a/.transpyc_cache/924ed8cd4ea5c4c2.pyi +++ /dev/null @@ -1,38 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - - -import t -import stdio -import string -import c -import testcheck - -def test_string_ptr_iter() -> t.CInt: pass - -def test_string_ascii_sum() -> t.CInt: pass - -def test_manual_strcpy() -> t.CInt: pass - -def test_ptr_offset_compare() -> t.CInt: pass - -def test_manual_strlen() -> t.CInt: pass - -def test_reverse_string_ptr() -> t.CInt: pass - -def test_double_pointer() -> t.CInt: pass - -def test_ptr_arithmetic() -> t.CInt: pass - -def test_manual_strcmp() -> t.CInt: pass - - -class Vec2: - x: t.CInt - y: t.CInt - -def test_struct_ptr_access() -> t.CInt: pass - -def main() -> t.CInt: pass diff --git a/.transpyc_cache/93427ff78e455f30.doc.json b/.transpyc_cache/93427ff78e455f30.doc.json deleted file mode 100644 index a63fb44..0000000 --- a/.transpyc_cache/93427ff78e455f30.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"WhileHandle": "while 循环语句处理器:继承 Mixin 获得 Trans 回指针", "WhileHandle.Handle": "翻译 while 循环语句"} \ No newline at end of file diff --git a/.transpyc_cache/93427ff78e455f30.pyi b/.transpyc_cache/93427ff78e455f30.pyi deleted file mode 100644 index 0a1cc1e..0000000 --- a/.transpyc_cache/93427ff78e455f30.pyi +++ /dev/null @@ -1,26 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesWhile.py -Module: lib.core.Handles.HandlesWhile -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesBody as HandlesBody - -@t.NoVTable -class WhileHandle(HandlesBase.Mixin): - def __init__(self: WhileHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def Handle(self: WhileHandle, node: ast.AST | t.CPtr) -> int: pass - -def NewWhileHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> WhileHandle | t.CPtr: pass diff --git a/.transpyc_cache/93816021912fb156.doc.json b/.transpyc_cache/93816021912fb156.doc.json deleted file mode 100644 index 42f2fd1..0000000 --- a/.transpyc_cache/93816021912fb156.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"AugAssignHandle": "增强赋值处理器 (+=, -=, *=, etc.):继承 Mixin 获得 Trans 回指针", "AugAssignHandle.Handle": "翻译增强赋值语句 (x += 1, y -= 2, etc.)", "_apply_aug_op": "应用增强赋值的二元运算(指针算术 + 整数运算)"} \ No newline at end of file diff --git a/.transpyc_cache/93816021912fb156.pyi b/.transpyc_cache/93816021912fb156.pyi deleted file mode 100644 index ee3342d..0000000 --- a/.transpyc_cache/93816021912fb156.pyi +++ /dev/null @@ -1,27 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesAugAssign.py -Module: lib.core.Handles.HandlesAugAssign -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import stdio -import string -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesNonlocal as HandlesNonlocal - -@t.NoVTable -class AugAssignHandle(HandlesBase.Mixin): - def __init__(self: AugAssignHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def Handle(self: AugAssignHandle, node: ast.AST | t.CPtr) -> int: pass - -def _apply_aug_op(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, op: int, lhs: llvmlite.Value | t.CPtr, rhs: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def NewAugAssignHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> AugAssignHandle | t.CPtr: pass diff --git a/.transpyc_cache/93964ed348985612.doc.json b/.transpyc_cache/93964ed348985612.doc.json deleted file mode 100644 index dda4745..0000000 --- a/.transpyc_cache/93964ed348985612.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"get_func_name": "从函数节点提取函数名", "escape_llvm_string": "将字符串转换为 LLVM IR 字符串字面量 c\"...\\00\" ", "get_llvm_type_bits": "获取 LLVM 整数类型的位宽,非整数类型返回 0", "get_llvm_float_bits": "获取 LLVM 浮点类型的位宽,非浮点类型返回 0", "is_ptr_type": "检查 ty 是否是 Ptr 类型,返回 1=是, 0=否", "_deref_if_ptr_ptr": "如果 obj_ptr 是 Ptr(Ptr(...)),load 解引用获取内层指针", "coerce_to_type": "将 val 强制转换为 target_ty\n\n 整数: sext(扩展)/ trunc(截断)\n 浮点: fpext(扩展)/ fptrunc(截断)\n int→float: sitofp\n float→int: fptosi\n ", "create_global_string": "创建全局字符串常量并返回 i8* bitcast", "translate_constant": "翻译常量(int/str/bool)", "_infer_elem_type_from_value": "从 LLVM Value 的类型推断 list 元素类型名", "_find_pool_var": "查找上下文中的 pool 变量,返回 alloca 或 None", "translate_list_literal": "翻译 list 字面量 [a, b, c] → list[T](pool) + append 序列", "translate_value": "翻译值表达式为 LLVM Value", "translate_compare": "翻译比较表达式,返回 i1 结果", "translate_unaryop": "翻译一元运算(-x, +x, not x, ~x)", "translate_boolop": "翻译布尔运算(and/or)的短路求值,返回 i1", "translate_name_value": "翻译变量引用(Name 节点)→ load", "ExprHandle": "表达式处理器:继承 Mixin 获得 Trans 回指针", "ExprHandle.HandleValue": "翻译值表达式,从 self.Trans 获取共享状态", "list_getitem_inline": "内联生成 list __getitem__ 逻辑,返回元素地址 (i8*)", "_list_elem_type_from_name": "从 list 类型名提取元素 LLVM 类型", "list_setitem_inline": "内联生成 list __setitem__ 逻辑,返回 0", "is_list_subscript": "检查 Subscript 节点是否是 list[T] 类型,返回 list 对象指针或 None", "translate_subscript": "翻译下标表达式,返回加载的元素值", "translate_attribute": "翻译属性访问,返回加载的字段值", "get_subscript_ptr": "获取下标表达式的元素指针(用于赋值 lhs)", "get_attribute_ptr": "获取属性访问的字段指针(用于赋值 lhs)"} \ No newline at end of file diff --git a/.transpyc_cache/93964ed348985612.pyi b/.transpyc_cache/93964ed348985612.pyi deleted file mode 100644 index 60fab85..0000000 --- a/.transpyc_cache/93964ed348985612.pyi +++ /dev/null @@ -1,81 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExpr.py -Module: lib.core.Handles.HandlesExpr -""" - - -import t, c -from stdint import * -import ast -import memhub -import string -import llvmlite -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesExprOps as HandlesExprOps -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.Handles.HandlesNonlocal as HandlesNonlocal -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesEnum as HandlesEnum -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -def get_func_name(func_node: ast.AST | t.CPtr) -> str: pass - -def escape_llvm_string(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def get_llvm_type_bits(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def get_llvm_float_bits(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def is_ptr_type(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def _deref_if_ptr_ptr(builder: llvmlite.IRBuilder | t.CPtr, obj_ptr: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def coerce_to_type(builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def create_global_string(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, str_val: str, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_constant(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_elem_type_from_value(pool: memhub.MemBuddy | t.CPtr, value: llvmlite.Value | t.CPtr) -> str: pass - -def _find_pool_var(trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_list_literal(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, elem_type_name: str, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_value(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_compare(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_unaryop(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_boolop(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_name_value(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -@t.NoVTable -class ExprHandle(HandlesBase.Mixin): - def __init__(self: ExprHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleValue(self: ExprHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def NewExprHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprHandle | t.CPtr: pass - -def list_getitem_inline(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, lm_obj: llvmlite.Value | t.CPtr, idx_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _list_elem_type_from_name(pool: memhub.MemBuddy | t.CPtr, struct_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def list_setitem_inline(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, lm_obj: llvmlite.Value | t.CPtr, idx_val: llvmlite.Value | t.CPtr, rhs_val: llvmlite.Value | t.CPtr) -> int: pass - -def is_list_subscript(node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_subscript(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_attribute(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def get_subscript_ptr(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def get_attribute_ptr(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass diff --git a/.transpyc_cache/93c1d18e35d188d6.pyi b/.transpyc_cache/93c1d18e35d188d6.pyi deleted file mode 100644 index a8cd09e..0000000 --- a/.transpyc_cache/93c1d18e35d188d6.pyi +++ /dev/null @@ -1,53 +0,0 @@ -""" -Auto-generated Python stub file from platmacro.py -Module: platmacro -""" - - -import t, c - -IS_WINDOWS: t.CDefine = 1 -IS_WIN64: t.CDefine = 1 -IS_X86_64: t.CDefine = 1 -IS_LP64: t.CDefine = 1 -IS_LITTLE_ENDIAN: t.CDefine = 1 -IS_LINUX: t.CDefine = 0 -IS_MACOS: t.CDefine = 0 -IS_ARM64: t.CDefine = 0 -IS_BIG_ENDIAN: t.CDefine = 0 -IS_ILP32: t.CDefine = 0 -PTR_SIZE: t.CDefine = t.CSizeT().Size -INT_SIZE: t.CDefine = 4 -LONG_SIZE: t.CDefine = t.CLong().Size -WORD_SIZE: t.CDefine = t.CSizeT().Size -CACHE_LINE_SIZE: t.CDefine = 64 -PAGE_SIZE: t.CDefine = 4096 -STACK_ALIGN: t.CDefine = 16 -MAX_PATH_LEN: t.CDefine = 260 -PLATFORM_NAME: t.CDefine = 1 -ARCH_NAME: t.CDefine = 1 -WINVER: t.CDefine = 0x0A00 -_WIN32_WINNT: t.CDefine = 0x0A00 -NTDDI_VERSION: t.CDefine = 0x0A000006 -HAS_SSE2: t.CDefine = 1 -HAS_AVX: t.CDefine = 1 -HAS_AVX2: t.CDefine = 1 -HAS_FMA: t.CDefine = 1 -HAS_NEON: t.CDefine = 0 -ALIGNOF_INT: t.CDefine = 4 -ALIGNOF_LONG: t.CDefine = t.CLong().Size // 8 -ALIGNOF_PTR: t.CDefine = t.CSizeT().Size // 8 -ALIGNOF_DOUBLE: t.CDefine = 8 -ALIGNOF_LONG_DOUBLE: t.CDefine = 16 -SIZEOF_SHORT: t.CDefine = 2 -SIZEOF_INT: t.CDefine = 4 -SIZEOF_LONG: t.CDefine = t.CLong().Size // 8 -SIZEOF_LONG_LONG: t.CDefine = 8 -SIZEOF_FLOAT: t.CDefine = 4 -SIZEOF_DOUBLE: t.CDefine = 8 -SIZEOF_LONG_DOUBLE: t.CDefine = 16 -SIZEOF_POINTER: t.CDefine = t.CSizeT().Size // 8 -SIZEOF_SIZE_T: t.CDefine = t.CSizeT().Size // 8 -SIZEOF_PTRDIFF_T: t.CDefine = t.CPtrDiffT().Size // 8 -BYTE_ORDER_LE: t.CDefine = 1 -BYTE_ORDER_BE: t.CDefine = 0 \ No newline at end of file diff --git a/Test/AstTest/temp/ab6e54ba9a669f76.pyi b/.transpyc_cache/9474791561654346.pyi similarity index 83% rename from Test/AstTest/temp/ab6e54ba9a669f76.pyi rename to .transpyc_cache/9474791561654346.pyi index 4fc3440..1f82b1e 100644 --- a/Test/AstTest/temp/ab6e54ba9a669f76.pyi +++ b/.transpyc_cache/9474791561654346.pyi @@ -46,3 +46,14 @@ def atoll(src: str) -> t.CInt64T: pass def atof(src: str) -> t.CDouble: pass def split(s: str, delim: str, result: t.CArray[str]) -> int: pass + + +ascii_lowercase: t.CExtern | str +ascii_uppercase: t.CExtern | str +ascii_letters: t.CExtern | str +digits: t.CExtern | str +hexdigits: t.CExtern | str +octdigits: t.CExtern | str +punctuation: t.CExtern | str +whitespace: t.CExtern | str +printable: t.CExtern | str \ No newline at end of file diff --git a/.transpyc_cache/950028de389b7a7b.doc.json b/.transpyc_cache/950028de389b7a7b.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/950028de389b7a7b.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/950028de389b7a7b.pyi b/.transpyc_cache/950028de389b7a7b.pyi deleted file mode 100644 index b7bdb15..0000000 --- a/.transpyc_cache/950028de389b7a7b.pyi +++ /dev/null @@ -1,41 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - - -import t, c -from stdint import * -import stdio -import string -import stdlib -import memhub -import argparse -import w32.win32console as w32cmd -import w32.fileio as fileio -import w32.win32file -import w32.win32base -import sys -import ast -import lib -import lib.core.VLogger as VLogger -import lib.core.Handles.HandlesTranslator as HandlesTranslator -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.BuildPipeline as BuildPipeline -import lib.core.IncludesScanner as IncludesScanner -import lib.core.StubMerger as StubMerger -import lib.core.Phase1 as Phase1 -import lib.core.Phase2 as Phase2 -import lib.Projectrans.Config as Config -import lib.Projectrans.Utils as Utils -import llvmlite -import subprocess -import viperlib -import hashlib - -POOL_SIZE: t.CDefine = 1073741824 -CODE_PAGE: t.CDefine = 65001 -SRC_BUF_SIZE: t.CDefine = 1048576 - -def main() -> int: pass diff --git a/.transpyc_cache/953883473b8184c1.doc.json b/.transpyc_cache/953883473b8184c1.doc.json deleted file mode 100644 index 5d5c7e9..0000000 --- a/.transpyc_cache/953883473b8184c1.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"extract_func_attrs": "从 decorator_list 提取 c.Attribute 属性,返回 LLVM IR 属性字符串", "_get_attr_name_from_node": "从 AST 节点提取属性名\n\n 支持:\n - Call(func=Attribute(...)): t.attr.always_inline() -> \"always_inline\"\n - Attribute: t.attr.packed -> \"packed\"\n - Attribute(t.attr.llvm.xxx): t.attr.llvm.nounwind -> \"nounwind\"\n ", "_append_llvm_attr": "将属性名映射到 LLVM 属性名并追加到缓冲区\n\n 返回 1 表示已追加,0 表示不支持该属性\n ", "_append_str": "将字符串追加到 buf 末尾(用 strlen+strcpy 模拟 strcat)", "_mangle_name": "为任意名称添加 SHA1 前缀(不做 main/export 检查)", "_mangle_name_with_sha1": "用指定 SHA1 为名称添加前缀(不做 main/export 检查)", "_mangle_func_name": "为函数名添加 SHA1 前缀(检查 main/export)", "translate_function_def": "翻译函数定义,返回新增的变量数(通常为 0,函数定义不增加当前作用域变量)", "translate_nested_function_def": "翻译嵌套函数定义:提升为顶层函数 + 创建闭包", "create_function": "创建 LLVM 函数并添加参数"} \ No newline at end of file diff --git a/.transpyc_cache/953883473b8184c1.pyi b/.transpyc_cache/953883473b8184c1.pyi deleted file mode 100644 index d7a865c..0000000 --- a/.transpyc_cache/953883473b8184c1.pyi +++ /dev/null @@ -1,43 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesFunctions.py -Module: lib.core.Handles.HandlesFunctions -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import viperlib -import stdio -import stdlib -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesBody as HandlesBody -import lib.core.Handles.HandlesNonlocal as HandlesNonlocal -import lib.core.Handles.HandlesImports as HandlesImports - -def extract_func_attrs(pool: memhub.MemBuddy | t.CPtr, decorator_list: list[ast.AST | t.CPtr] | t.CPtr, imported_modules: str) -> t.CChar | t.CPtr: pass - -def _get_attr_name_from_node(node: ast.AST | t.CPtr) -> str: pass - -def _append_llvm_attr(attrs_buf: t.CChar | t.CPtr, attr_name: str) -> int: pass - -def _append_str(buf: t.CChar | t.CPtr, s: str) -> None: pass - -def _mangle_name(trans: HT.Translator | t.CPtr, name: str) -> str: pass - -def _mangle_name_with_sha1(sha1: str, name: str) -> str: pass - -def _mangle_func_name(trans: HT.Translator | t.CPtr, name: str, has_export: int) -> str: pass - -def translate_function_def(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - -def translate_nested_function_def(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - -def create_function(pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, name: str, args_node: ast.AST | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Function | t.CPtr: pass diff --git a/.transpyc_cache/95394ca8da0f655a.pyi b/.transpyc_cache/95394ca8da0f655a.pyi deleted file mode 100644 index 27fd0e2..0000000 --- a/.transpyc_cache/95394ca8da0f655a.pyi +++ /dev/null @@ -1,70 +0,0 @@ -""" -Auto-generated Python stub file from llvmlite.__init__.py -Module: llvmlite.__init__ -""" - - -import t, c -from stdint import * -import memhub -import string -import viperlib -from .__types import LLVMType, ParamNode, LLVMTypeCore, Int1, Int8, Int16, Int32, Int64, Ptr, Func, Void, Array, Struct, Half, Float, Double, FP128, Label, new_param_node, param_list_append, paramnode_get_ty, paramnode_get_next, paramnode_set_ty, paramnode_set_next, TypePrint, PrintStructDefinition, get_struct_name -from .__values import Value, new_value, ConstInt, ConstNull, ConstZero, ConstFloat, SSAValue, ValuePrint, value_get_ty, value_get_next, value_set_ty, value_set_next, value_set_name, value_set_isconst -from .__function import Line, BasicBlock, Param, Function, new_line, new_basic_block, new_param, new_function, function_add_param, function_add_block, block_append_line, block_append_text, function_set_attrs, param_set_attrs, function_get_name, function_get_ret_ty, function_get_params, function_get_param_head, function_get_next, function_is_declared, param_get_name, param_get_ty, param_get_next, FunctionPrint -from .__module import LLVMModule, GlobalVariable, NamedTypeNode, new_module, new_global_variable, module_add_function, module_add_global, module_add_named_type, module_set_target, module_set_datalayout, global_set_constant, global_set_linkage, global_set_unnamed_addr, global_set_section, LLVMModulePrint, OUTPUT_FULL, OUTPUT_STUB, OUTPUT_TEXT, module_ensure_opaque_for_type -from .__builder import IRBuilder, new_builder, position_at_end, build_alloca, build_load, build_store, build_add, build_sub, build_mul, build_sdiv, build_udiv, build_srem, build_urem, build_and, build_or, build_xor, build_shl, build_lshr, build_ashr, build_fadd, build_fsub, build_fmul, build_fdiv, build_frem, build_fneg, build_icmp, build_fcmp, build_br, build_cond_br, build_ret, build_ret_void, build_call, build_call_indirect, build_bitcast, build_sext, build_trunc, build_zext, build_ptrtoint, build_inttoptr, build_fpext, build_fptrunc, build_fp2si, build_si2fp, build_fp2ui, build_ui2fp, build_gep, build_gep_array, build_gep_struct, build_phi, build_switch, build_select, build_unreachable, build_atomicrmw, build_cmpxchg, build_inline_asm, PhiIncoming, new_phi_incoming, SwitchCase, new_switch_case, ICMP_EQ, ICMP_NE, ICMP_SGT, ICMP_SGE, ICMP_SLT, ICMP_SLE, ICMP_UGT, ICMP_UGE, ICMP_ULT, ICMP_ULE, FCMP_FALSE, FCMP_OEQ, FCMP_OGT, FCMP_OGE, FCMP_OLT, FCMP_OLE, FCMP_ONE, FCMP_ORD, FCMP_UNO, FCMP_UEQ, FCMP_UGT, FCMP_UGE, FCMP_ULT, FCMP_ULE, FCMP_UNE, FCMP_TRUE, ATOMIC_XCHG, ATOMIC_ADD, ATOMIC_SUB, ATOMIC_AND, ATOMIC_NAND, ATOMIC_OR, ATOMIC_XOR, ATOMIC_MAX, ATOMIC_MIN, ATOMIC_UMAX, ATOMIC_UMIN, ATOMIC_ORDER_NOTATOMIC, ATOMIC_ORDER_UNORDERED, ATOMIC_ORDER_MONOTONIC, ATOMIC_ORDER_ACQUIRE, ATOMIC_ORDER_RELEASE, ATOMIC_ORDER_ACQ_REL, ATOMIC_ORDER_SEQ_CST -from .__verify import VerifyResult, NameEntry, verify_function, verify_module, VERIFY_OK, VERIFY_ERR_NO_TERMINATOR, VERIFY_ERR_DUPLICATE_DEF, VERIFY_ERR_UNDEFINED_USE, VERIFY_ERR_PHI_NOT_FIRST, _new_verify_result - -def _str_dup(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def create_block(pool: memhub.MemBuddy | t.CPtr, func: Function | t.CPtr, name: t.CChar | t.CPtr) -> BasicBlock | t.CPtr: pass - -def const_int(pool: memhub.MemBuddy | t.CPtr, bits: t.CInt, val: t.CInt64T) -> Value | t.CPtr: pass - -def const_int32(pool: memhub.MemBuddy | t.CPtr, val: t.CInt64T) -> Value | t.CPtr: pass - -def const_int64(pool: memhub.MemBuddy | t.CPtr, val: t.CInt64T) -> Value | t.CPtr: pass - -def create_function(pool: memhub.MemBuddy | t.CPtr, mod: LLVMModule | t.CPtr, name: t.CChar | t.CPtr, ret_ty: LLVMType | t.CPtr) -> Function | t.CPtr: pass - -def add_param(pool: memhub.MemBuddy | t.CPtr, func: Function | t.CPtr, ty: LLVMType | t.CPtr, name: t.CChar | t.CPtr) -> Param | t.CPtr: pass - -def create_declare(pool: memhub.MemBuddy | t.CPtr, mod: LLVMModule | t.CPtr, name: t.CChar | t.CPtr, ret_ty: LLVMType | t.CPtr) -> Function | t.CPtr: pass - -def create_global_string(pool: memhub.MemBuddy | t.CPtr, mod: LLVMModule | t.CPtr, name: t.CChar | t.CPtr, text: t.CChar | t.CPtr) -> GlobalVariable | t.CPtr: pass - -def create_global_int(pool: memhub.MemBuddy | t.CPtr, mod: LLVMModule | t.CPtr, name: t.CChar | t.CPtr, bits: t.CInt, val: t.CInt64T) -> GlobalVariable | t.CPtr: pass - - -@t.NoVTable -class LLVMModuleCore: - Pool: memhub.MemBuddy | t.CPtr - def __init__(self: LLVMModuleCore, pool: memhub.MemBuddy | t.CPtr) -> t.CInt: pass - def NewModule(self: LLVMModuleCore, name: t.CChar | t.CPtr) -> LLVMModule | t.CPtr: pass - def CreateFunction(self: LLVMModuleCore, mod: LLVMModule | t.CPtr, name: t.CChar | t.CPtr, ret_ty: LLVMType | t.CPtr) -> Function | t.CPtr: pass - def CreateDeclare(self: LLVMModuleCore, mod: LLVMModule | t.CPtr, name: t.CChar | t.CPtr, ret_ty: LLVMType | t.CPtr) -> Function | t.CPtr: pass - def AddParam(self: LLVMModuleCore, func: Function | t.CPtr, ty: LLVMType | t.CPtr, name: t.CChar | t.CPtr) -> Param | t.CPtr: pass - def FunctionSetAttrs(self: LLVMModuleCore, func: Function | t.CPtr, attrs: t.CChar | t.CPtr) -> t.CInt: pass - def ParamSetAttrs(self: LLVMModuleCore, param: Param | t.CPtr, attrs: t.CChar | t.CPtr) -> t.CInt: pass - def CreateBlock(self: LLVMModuleCore, func: Function | t.CPtr, name: t.CChar | t.CPtr) -> BasicBlock | t.CPtr: pass - def NewBuilder(self: LLVMModuleCore, func: Function | t.CPtr) -> IRBuilder | t.CPtr: pass - def NewGlobal(self: LLVMModuleCore, mod: LLVMModule | t.CPtr, name: t.CChar | t.CPtr, ty: LLVMType | t.CPtr) -> GlobalVariable | t.CPtr: pass - def CreateGlobalString(self: LLVMModuleCore, mod: LLVMModule | t.CPtr, name: t.CChar | t.CPtr, text: t.CChar | t.CPtr) -> GlobalVariable | t.CPtr: pass - def CreateGlobalInt(self: LLVMModuleCore, mod: LLVMModule | t.CPtr, name: t.CChar | t.CPtr, bits: t.CInt, val: t.CInt64T) -> GlobalVariable | t.CPtr: pass - def GlobalSetConstant(self: LLVMModuleCore, gv: GlobalVariable | t.CPtr, is_const: t.CInt) -> t.CInt: pass - def GlobalSetLinkage(self: LLVMModuleCore, gv: GlobalVariable | t.CPtr, linkage: t.CChar | t.CPtr) -> t.CInt: pass - def GlobalSetUnnamedAddr(self: LLVMModuleCore, gv: GlobalVariable | t.CPtr, level: t.CInt) -> t.CInt: pass - def GlobalSetSection(self: LLVMModuleCore, gv: GlobalVariable | t.CPtr, section: t.CChar | t.CPtr) -> t.CInt: pass - def ConstInt(self: LLVMModuleCore, bits: t.CInt, val: t.CInt64T) -> Value | t.CPtr: pass - def ConstInt32(self: LLVMModuleCore, val: t.CInt64T) -> Value | t.CPtr: pass - def ConstInt64(self: LLVMModuleCore, val: t.CInt64T) -> Value | t.CPtr: pass - def ConstFloat(self: LLVMModuleCore, ty: LLVMType | t.CPtr, val: t.CDouble) -> Value | t.CPtr: pass - def SSAValue(self: LLVMModuleCore, ty: LLVMType | t.CPtr, name: t.CChar | t.CPtr) -> Value | t.CPtr: pass - def ConstNull(self: LLVMModuleCore, ty: LLVMType | t.CPtr, name: t.CChar | t.CPtr) -> Value | t.CPtr: pass - def PrintValue(self: LLVMModuleCore, buf: t.CChar | t.CPtr, size: t.CSizeT, val: Value | t.CPtr) -> t.CInt: pass - def PrintFunction(self: LLVMModuleCore, buf: t.CChar | t.CPtr, size: t.CSizeT, func: Function | t.CPtr) -> t.CInt: pass - def PrintModule(self: LLVMModuleCore, buf: t.CChar | t.CPtr, size: t.CSizeT, mod: LLVMModule | t.CPtr) -> t.CInt: pass - def NewVerifyResult(self: LLVMModuleCore, buf_size: t.CSizeT) -> VerifyResult | t.CPtr: pass - def VerifyFunction(self: LLVMModuleCore, func: Function | t.CPtr, result: VerifyResult | t.CPtr) -> t.CInt: pass - def VerifyModule(self: LLVMModuleCore, mod: LLVMModule | t.CPtr, result: VerifyResult | t.CPtr) -> t.CInt: pass \ No newline at end of file diff --git a/.transpyc_cache/96368aa26ab1b560.doc.json b/.transpyc_cache/96368aa26ab1b560.doc.json deleted file mode 100644 index 525feb5..0000000 --- a/.transpyc_cache/96368aa26ab1b560.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_load_includes_sha1_set": "读取 _sha1_map.txt,将 includes/ 开头的 SHA1 写入 sha1_set\n sha1_set 大小为 MAX_INCLUDES_SHA1 * 17(每个 SHA1 16字符+null)\n 返回找到的 includes SHA1 数量,-1 表示错误", "_is_in_sha1_set": "检查 sha1 是否在集合中", "WriteIncludesSha1Map": "将 includes 扫描结果写入 _sha1_map.txt(供 StubMerger 使用)\n\n 若 filter_set 不为 None 且 filter_count > 0,只写入 filter_set 中的条目。\n ", "_IsFuncDeclaredOrDefined": "检查 out_buf 中是否已有函数的 declare 或 define 行", "_CommentOutDeclareInBuf": "在 out_buf 中搜索 declare 行(包含 func_sig),将其注释掉", "_CommentOutGlobalInBuf": "在 out_buf 中搜索全局变量定义行(以 global_name 开头),将行首改为 ';'", "_LoadAndAppendStub": "加载依赖 stub 并追加(跳过 header,去重)", "_LoadAndAppendTextDeclares": "从依赖 text.ll 提取 declare(define 转 declare),追加到 out_buf", "_PathToModuleName": "将文件路径转换为模块名", "_BuildIncludesSha1Map": "从 _sha1_map.txt 构建 sha1→module_name 映射,返回条目数", "_FindSha1ByModName": "从模块名查找 SHA1(精确匹配)", "_AddSha1ToSet": "将 SHA1 加入集合,返回新 count", "_BuildReachableSha1Set": "构建可达 SHA1 集合(依赖图按需翻译)", "BuildCombinedIR": "组合本地 stub + 依赖 stubs + 本地 text → out_buf(按需加载)"} \ No newline at end of file diff --git a/.transpyc_cache/96368aa26ab1b560.pyi b/.transpyc_cache/96368aa26ab1b560.pyi deleted file mode 100644 index 8513bb5..0000000 --- a/.transpyc_cache/96368aa26ab1b560.pyi +++ /dev/null @@ -1,56 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.StubMerger.py -Module: lib.core.StubMerger -""" - - -import t, c -from stdint import * -import memhub -import string -import stdio -import stdlib -import llvmlite -import w32.win32file as win32file -import w32.win32base as win32base -import w32.fileio as fileio -import viperlib -import sys -import ast -import lib.core.IncludesScanner as IncludesScanner -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesTranslator as HandlesTranslator - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -MAX_INCLUDES_SHA1: t.CDefine = 256 -STUB_READ_BUF_SIZE: t.CDefine = 262144 -MAX_INCLUDES: t.CDefine = 256 - -def _load_includes_sha1_set(pool: memhub.MemBuddy | t.CPtr, temp_dir: str, sha1_set: str) -> int: pass - -def _is_in_sha1_set(sha1: str, sha1_set: str, set_count: int) -> int: pass - -def WriteIncludesSha1Map(mb: memhub.MemBuddy | t.CPtr, temp_dir: str, scan_result: IncludesScanner.ScanResult | t.CPtr, filter_set: t.CChar | t.CPtr, filter_count: int) -> int: pass - -def _IsFuncDeclaredOrDefined(out_buf: bytes, func_sig: str) -> int: pass - -def _CommentOutDeclareInBuf(out_buf: bytes, func_sig: str) -> int: pass - -def _CommentOutGlobalInBuf(out_buf: bytes, global_name: str) -> int: pass - -def _LoadAndAppendStub(temp_dir: str, td_len: t.CSizeT, dep_sha1: str, dep_buf: bytes, out_buf: bytes, out_size: t.CSizeT, out_pos: t.CSizeT) -> t.CSizeT: pass - -def _LoadAndAppendTextDeclares(temp_dir: str, td_len: t.CSizeT, dep_sha1: str, dep_buf: bytes, out_buf: bytes, out_size: t.CSizeT, out_pos: t.CSizeT) -> t.CSizeT: pass - -def _PathToModuleName(path: str) -> str: pass - -def _BuildIncludesSha1Map(temp_dir: str, td_len: t.CSizeT, sha1_list: t.CChar | t.CPtr, mod_list: t.CChar | t.CPtr) -> int: pass - -def _FindSha1ByModName(sha1_arr: t.CChar | t.CPtr, mod_arr: t.CChar | t.CPtr, count: int, mod_name: str) -> str: pass - -def _AddSha1ToSet(set_buf: t.CChar | t.CPtr, count: int, sha1: str) -> int: pass - -def _BuildReachableSha1Set(mb: memhub.MemBuddy | t.CPtr, source_dir: str, temp_dir: str, reachable_set: t.CChar | t.CPtr) -> int: pass - -def BuildCombinedIR(temp_dir: str, local_sha1: str, out_buf: bytes, out_size: t.CSizeT) -> t.CSizeT: pass diff --git a/.transpyc_cache/96837bcc64032444.pyi b/.transpyc_cache/96837bcc64032444.pyi deleted file mode 100644 index 46e78bd..0000000 --- a/.transpyc_cache/96837bcc64032444.pyi +++ /dev/null @@ -1,13 +0,0 @@ -""" -Auto-generated Python stub file from hashlib.__init__.py -Module: hashlib.__init__ -""" - -import t -import c - - -from .__md5 import md5, MD5_DIGEST_LEN -from .__sha1 import sha1, SHA1_DIGEST_LEN -from .__sha256 import sha256, SHA256_DIGEST_LEN -from .__sha512 import sha512, SHA512_DIGEST_LEN \ No newline at end of file diff --git a/.transpyc_cache/969c589035910845.doc.json b/.transpyc_cache/969c589035910845.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/969c589035910845.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/969c589035910845.pyi b/.transpyc_cache/969c589035910845.pyi deleted file mode 100644 index ae928ab..0000000 --- a/.transpyc_cache/969c589035910845.pyi +++ /dev/null @@ -1,10 +0,0 @@ -""" -Auto-generated Python stub file from flow_test.py -Module: flow_test -""" - - -import stdio -import t, c - -def flow_test() -> int: pass diff --git a/.transpyc_cache/97043f0d52da437f.doc.json b/.transpyc_cache/97043f0d52da437f.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/97043f0d52da437f.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/97043f0d52da437f.pyi b/.transpyc_cache/97043f0d52da437f.pyi deleted file mode 100644 index f132db1..0000000 --- a/.transpyc_cache/97043f0d52da437f.pyi +++ /dev/null @@ -1,26 +0,0 @@ -""" -Auto-generated Python stub file from inherit_test.py -Module: inherit_test -""" - - -import stdio -import t, c - -@t.CVTable -class Animal: - name: t.CInt - def __init__(self: Animal, n: t.CInt) -> t.CInt: pass - def GetName(self: Animal) -> t.CInt: pass - def Speak(self: Animal) -> t.CInt: pass -class Dog(Animal): - breed: t.CInt - def __init__(self: Dog, n: t.CInt, b: t.CInt) -> t.CInt: pass - def Speak(self: Dog) -> t.CInt: pass - def GetBreed(self: Dog) -> t.CInt: pass -class Cat(Animal): - color: t.CInt - def __init__(self: Cat, n: t.CInt, col: t.CInt) -> t.CInt: pass - def GetColor(self: Cat) -> t.CInt: pass - -def inherit_test() -> int: pass diff --git a/.transpyc_cache/982690df9fb41dde.doc.json b/.transpyc_cache/982690df9fb41dde.doc.json deleted file mode 100644 index f6225ef..0000000 --- a/.transpyc_cache/982690df9fb41dde.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"translate_stmt": "翻译单条语句,返回新增的变量数", "translate_global": "翻译 global 语句:记录 global 变量名", "translate_nonlocal": "翻译 nonlocal 语句:记录 nonlocal 变量名", "translate_expr_stmt": "翻译表达式语句(printf 调用等)", "pre_scan_allocas": "预扫描语句中的 AnnAssign,提前创建 alloca\n\n 返回新增的变量数\n ", "translate_break": "翻译 break 语句:跳转到循环 end 块", "translate_continue": "翻译 continue 语句:跳转到循环 cond/incr 块", "get_stmt_kind_name": "获取语句类型名"} \ No newline at end of file diff --git a/.transpyc_cache/982690df9fb41dde.pyi b/.transpyc_cache/982690df9fb41dde.pyi deleted file mode 100644 index aa52e34..0000000 --- a/.transpyc_cache/982690df9fb41dde.pyi +++ /dev/null @@ -1,35 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesBody.py -Module: lib.core.Handles.HandlesBody -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import viperlib -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.Handles.HandlesFunctions as HandlesFunctions -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -def translate_stmt(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - -def translate_global(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - -def translate_nonlocal(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - -def translate_expr_stmt(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - -def pre_scan_allocas(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - -def translate_break(trans: HT.Translator | t.CPtr) -> int: pass - -def translate_continue(trans: HT.Translator | t.CPtr) -> int: pass - -def get_stmt_kind_name(node: ast.AST | t.CPtr) -> str: pass diff --git a/.transpyc_cache/9852dff1297b8322.doc.json b/.transpyc_cache/9852dff1297b8322.doc.json deleted file mode 100644 index f67a6e1..0000000 --- a/.transpyc_cache/9852dff1297b8322.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/9852dff1297b8322.pyi b/.transpyc_cache/9852dff1297b8322.pyi deleted file mode 100644 index 477ab88..0000000 --- a/.transpyc_cache/9852dff1297b8322.pyi +++ /dev/null @@ -1,169 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/98826042e4664018.doc.json b/.transpyc_cache/98826042e4664018.doc.json deleted file mode 100644 index 525feb5..0000000 --- a/.transpyc_cache/98826042e4664018.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_load_includes_sha1_set": "读取 _sha1_map.txt,将 includes/ 开头的 SHA1 写入 sha1_set\n sha1_set 大小为 MAX_INCLUDES_SHA1 * 17(每个 SHA1 16字符+null)\n 返回找到的 includes SHA1 数量,-1 表示错误", "_is_in_sha1_set": "检查 sha1 是否在集合中", "WriteIncludesSha1Map": "将 includes 扫描结果写入 _sha1_map.txt(供 StubMerger 使用)\n\n 若 filter_set 不为 None 且 filter_count > 0,只写入 filter_set 中的条目。\n ", "_IsFuncDeclaredOrDefined": "检查 out_buf 中是否已有函数的 declare 或 define 行", "_CommentOutDeclareInBuf": "在 out_buf 中搜索 declare 行(包含 func_sig),将其注释掉", "_CommentOutGlobalInBuf": "在 out_buf 中搜索全局变量定义行(以 global_name 开头),将行首改为 ';'", "_LoadAndAppendStub": "加载依赖 stub 并追加(跳过 header,去重)", "_LoadAndAppendTextDeclares": "从依赖 text.ll 提取 declare(define 转 declare),追加到 out_buf", "_PathToModuleName": "将文件路径转换为模块名", "_BuildIncludesSha1Map": "从 _sha1_map.txt 构建 sha1→module_name 映射,返回条目数", "_FindSha1ByModName": "从模块名查找 SHA1(精确匹配)", "_AddSha1ToSet": "将 SHA1 加入集合,返回新 count", "_BuildReachableSha1Set": "构建可达 SHA1 集合(依赖图按需翻译)", "BuildCombinedIR": "组合本地 stub + 依赖 stubs + 本地 text → out_buf(按需加载)"} \ No newline at end of file diff --git a/.transpyc_cache/98826042e4664018.pyi b/.transpyc_cache/98826042e4664018.pyi deleted file mode 100644 index 8513bb5..0000000 --- a/.transpyc_cache/98826042e4664018.pyi +++ /dev/null @@ -1,56 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.StubMerger.py -Module: lib.core.StubMerger -""" - - -import t, c -from stdint import * -import memhub -import string -import stdio -import stdlib -import llvmlite -import w32.win32file as win32file -import w32.win32base as win32base -import w32.fileio as fileio -import viperlib -import sys -import ast -import lib.core.IncludesScanner as IncludesScanner -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesTranslator as HandlesTranslator - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -MAX_INCLUDES_SHA1: t.CDefine = 256 -STUB_READ_BUF_SIZE: t.CDefine = 262144 -MAX_INCLUDES: t.CDefine = 256 - -def _load_includes_sha1_set(pool: memhub.MemBuddy | t.CPtr, temp_dir: str, sha1_set: str) -> int: pass - -def _is_in_sha1_set(sha1: str, sha1_set: str, set_count: int) -> int: pass - -def WriteIncludesSha1Map(mb: memhub.MemBuddy | t.CPtr, temp_dir: str, scan_result: IncludesScanner.ScanResult | t.CPtr, filter_set: t.CChar | t.CPtr, filter_count: int) -> int: pass - -def _IsFuncDeclaredOrDefined(out_buf: bytes, func_sig: str) -> int: pass - -def _CommentOutDeclareInBuf(out_buf: bytes, func_sig: str) -> int: pass - -def _CommentOutGlobalInBuf(out_buf: bytes, global_name: str) -> int: pass - -def _LoadAndAppendStub(temp_dir: str, td_len: t.CSizeT, dep_sha1: str, dep_buf: bytes, out_buf: bytes, out_size: t.CSizeT, out_pos: t.CSizeT) -> t.CSizeT: pass - -def _LoadAndAppendTextDeclares(temp_dir: str, td_len: t.CSizeT, dep_sha1: str, dep_buf: bytes, out_buf: bytes, out_size: t.CSizeT, out_pos: t.CSizeT) -> t.CSizeT: pass - -def _PathToModuleName(path: str) -> str: pass - -def _BuildIncludesSha1Map(temp_dir: str, td_len: t.CSizeT, sha1_list: t.CChar | t.CPtr, mod_list: t.CChar | t.CPtr) -> int: pass - -def _FindSha1ByModName(sha1_arr: t.CChar | t.CPtr, mod_arr: t.CChar | t.CPtr, count: int, mod_name: str) -> str: pass - -def _AddSha1ToSet(set_buf: t.CChar | t.CPtr, count: int, sha1: str) -> int: pass - -def _BuildReachableSha1Set(mb: memhub.MemBuddy | t.CPtr, source_dir: str, temp_dir: str, reachable_set: t.CChar | t.CPtr) -> int: pass - -def BuildCombinedIR(temp_dir: str, local_sha1: str, out_buf: bytes, out_size: t.CSizeT) -> t.CSizeT: pass diff --git a/.transpyc_cache/9928c0bfda57ff30.doc.json b/.transpyc_cache/9928c0bfda57ff30.doc.json deleted file mode 100644 index f8bc59e..0000000 --- a/.transpyc_cache/9928c0bfda57ff30.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"add_imported_module": "记录已导入的模块名,返回新的 imported_modules 字符串指针", "is_module_imported": "检查模块是否已导入(词边界精确匹配,避免子串误匹配)", "add_from_import": "添加 from-import 映射 \"name:module\",返回新的 from_imports 字符串", "lookup_from_import": "查找 from-import 名称,返回模块名或 None\n\n 支持 star import: 如果 from_imports 中有 \"*:module\" 条目,\n 且未找到精确名称匹配,则返回 star import 的模块名。\n ", "ImportsHandle": "导入语句处理器:继承 Mixin 获得 Trans 回指针", "ImportsHandle.HandleImport": "处理 import 语句,返回 0", "ImportsHandle.HandleImportFromModule": "处理 from X import Y 的模块部分,更新 trans._imported_modules", "ImportsHandle.HandleImportFromNames": "处理 from X import Y 的名称部分,更新 trans._from_imports"} \ No newline at end of file diff --git a/.transpyc_cache/9928c0bfda57ff30.pyi b/.transpyc_cache/9928c0bfda57ff30.pyi deleted file mode 100644 index 7abd965..0000000 --- a/.transpyc_cache/9928c0bfda57ff30.pyi +++ /dev/null @@ -1,34 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesImports.py -Module: lib.core.Handles.HandlesImports -""" - - -import t, c -from stdint import * -import ast -import memhub -import string -import viperlib -import stdio -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesStruct as HandlesStruct - -def add_imported_module(pool: memhub.MemBuddy | t.CPtr, imported_modules: str, name: str) -> str: pass - -def is_module_imported(imported_modules: str, name: str) -> int: pass - -def add_from_import(pool: memhub.MemBuddy | t.CPtr, from_imports: str, local_name: str, module_name: str) -> str: pass - -def lookup_from_import(from_imports: str, name: str) -> str: pass - - -@t.NoVTable -class ImportsHandle(HandlesBase.Mixin): - def __init__(self: ImportsHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleImport(self: ImportsHandle, node: ast.AST | t.CPtr) -> int: pass - def HandleImportFromModule(self: ImportsHandle, node: ast.AST | t.CPtr) -> int: pass - def HandleImportFromNames(self: ImportsHandle, node: ast.AST | t.CPtr) -> int: pass - -def NewImportsHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ImportsHandle | t.CPtr: pass diff --git a/.transpyc_cache/9b52a4613d3ad296.doc.json b/.transpyc_cache/9b52a4613d3ad296.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/9b52a4613d3ad296.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/9b52a4613d3ad296.pyi b/.transpyc_cache/9b52a4613d3ad296.pyi deleted file mode 100644 index b7bdb15..0000000 --- a/.transpyc_cache/9b52a4613d3ad296.pyi +++ /dev/null @@ -1,41 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - - -import t, c -from stdint import * -import stdio -import string -import stdlib -import memhub -import argparse -import w32.win32console as w32cmd -import w32.fileio as fileio -import w32.win32file -import w32.win32base -import sys -import ast -import lib -import lib.core.VLogger as VLogger -import lib.core.Handles.HandlesTranslator as HandlesTranslator -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.BuildPipeline as BuildPipeline -import lib.core.IncludesScanner as IncludesScanner -import lib.core.StubMerger as StubMerger -import lib.core.Phase1 as Phase1 -import lib.core.Phase2 as Phase2 -import lib.Projectrans.Config as Config -import lib.Projectrans.Utils as Utils -import llvmlite -import subprocess -import viperlib -import hashlib - -POOL_SIZE: t.CDefine = 1073741824 -CODE_PAGE: t.CDefine = 65001 -SRC_BUF_SIZE: t.CDefine = 1048576 - -def main() -> int: pass diff --git a/.transpyc_cache/9b7d2adaae94f021.doc.json b/.transpyc_cache/9b7d2adaae94f021.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/9b7d2adaae94f021.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/9b7d2adaae94f021.pyi b/.transpyc_cache/9b7d2adaae94f021.pyi deleted file mode 100644 index 3552322..0000000 --- a/.transpyc_cache/9b7d2adaae94f021.pyi +++ /dev/null @@ -1,65 +0,0 @@ -""" -Auto-generated Python stub file from __zlib.zdef.py -Module: __zlib.zdef -""" - - -from stdint import * -import stddef -import string -import stdlib -import t, c - -ZDEFLATE_WINDOW_BITS: t.CDefine = 15 -ZDEFLATE_WINDOW_SIZE: t.CDefine = (1 << ZDEFLATE_WINDOW_BITS) -ZDEFLATE_WINDOW_MASK: t.CDefine = (ZDEFLATE_WINDOW_SIZE - 1) -ZDEFLATE_MIN_MATCH: t.CDefine = 3 -ZDEFLATE_MAX_MATCH: t.CDefine = 258 -ZDEFLATE_HASH_BITS: t.CDefine = 15 -ZDEFLATE_HASH_SIZE: t.CDefine = (1 << ZDEFLATE_HASH_BITS) -ZDEFLATE_HASH_MASK: t.CDefine = (ZDEFLATE_HASH_SIZE - 1) -ZDEFLATE_MAX_CODES: t.CDefine = 288 -ZDEFLATE_MAX_DIST_CODES: t.CDefine = 32 -ZDEFLATE_MAX_BITS: t.CDefine = 15 -ZDEFLATE_MAX_CODELEN_CODES: t.CDefine = 19 -ZDEFLATE_LIT_COUNT: t.CDefine = 286 -ZDEFLATE_DIST_COUNT: t.CDefine = 30 -ZDEFLATE_LEN_SYMBOLS_BASE: t.CDefine = 257 -ZDEFLATE_END_OF_BLOCK: t.CDefine = 256 -zdeflate_len_extra_bits: t.CExtern | t.CArray[t.CInt, 29] -zdeflate_len_base: t.CExtern | t.CArray[t.CInt, 29] -zdeflate_dist_extra_bits: t.CExtern | t.CArray[t.CInt, 30] -zdeflate_dist_base: t.CExtern | t.CArray[t.CInt, 30] -zdeflate_codelen_order: t.CExtern | t.CArray[int, 19] - -@t.Object -class zbit_writer: - buf: BYTE | t.CPtr - cap: t.CSizeT - byte_pos: t.CSizeT - bit_pos: t.CInt - def __init__(self: zbit_writer) -> t.CInt: pass - def ensure(self: zbit_writer, need: t.CSizeT) -> t.CInt: pass - def write_bits(self: zbit_writer, value: UINT, nbits: t.CInt) -> t.CInt: pass - def write_bits_rev(self: zbit_writer, code: UINT, nbits: t.CInt) -> t.CInt: pass - def stored_block(self: zbit_writer, data: UINT8PTR, length: t.CSizeT, final: t.CInt) -> t.CInt: pass - def write_zlib_header(self: zbit_writer, wbits: t.CInt, level: t.CInt) -> t.CInt: pass - def write_gzip_header(self: zbit_writer) -> t.CInt: pass - def align(self: zbit_writer) -> t.CInt: pass - def total(self: zbit_writer) -> t.CSizeT: pass - def free(self: zbit_writer) -> t.CInt: pass - def __del__(self: zbit_writer) -> t.CInt: pass -@t.Object -class zbit_reader: - buf: BYTE | t.CPtr - length: t.CSizeT - byte_pos: t.CSizeT - bit_pos: t.CInt - def init(self: zbit_reader, buf: BYTE | t.CPtr, length: t.CSizeT) -> t.CInt: pass - def read_bits(self: zbit_reader, nbits: t.CInt, out: UINTPTR) -> t.CInt: pass - def read_bits_rev(self: zbit_reader, nbits: t.CInt, out: UINTPTR) -> t.CInt: pass - def align(self: zbit_reader) -> t.CInt: pass - -def zdef_alloc(n: t.CSizeT) -> VOIDPTR: pass - -def zdef_free(p: VOIDPTR) -> t.CInt: pass diff --git a/.transpyc_cache/9ba128b762cf2b4d.doc.json b/.transpyc_cache/9ba128b762cf2b4d.doc.json deleted file mode 100644 index ca04595..0000000 --- a/.transpyc_cache/9ba128b762cf2b4d.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"reset_visible_structs": "重置可见性状态(每个文件翻译前调用)\n\n pool: 内存分配器(严格模式下创建 HashTable)\n strict: 1=严格模式(用户文件),0=宽松模式(includes 文件)\n ", "add_visible_struct": "添加可见结构体名(类定义时和 from-import 时调用)", "is_struct_visible": "检查结构体是否可见,返回 1=可见 / 0=不可见", "init_struct_table": "初始化结构体注册表,返回 1 成功", "_get_struct_entry": "获取第 i 个结构体条目", "_get_field_entry": "获取结构体中第 i 个字段条目", "register_struct": "注册结构体类型,返回 StructEntry 指针\n\n 用类型指针去重(is 比较),不用类名去重。\n 这样跨模块同名类可以共存,各自有独立的字段定义。\n sha1 参数在注册时直接设置 ModuleSha1(避免 set_struct_sha1 找错 entry)。\n ", "set_struct_sha1": "设置结构体所属模块的 SHA1,返回 1=成功 / 0=失败", "get_struct_sha1": "获取结构体所属模块的 SHA1,返回 None=无 SHA1", "add_field": "向结构体添加字段,返回字段索引(-1 失败)\n\n default_val: 字段默认值 AST 节点(可选,None=无默认值)\n annot_class_name: 原始类型注解的类名(可选,用于联合类型字段的方法调用解析)\n ", "find_struct": "按类名查找结构体,返回 StructEntry 或 None", "find_struct_by_module": "按类名 + SHA1 查找结构体,返回 StructEntry 或 None\n\n SHA1 非 None 时:精确匹配 name+sha1,未找到返回 None(不回退,避免跨模块同名找错)\n SHA1 为 None 时:回退到 find_struct(name) 按类名查找第一个\n ", "find_struct_by_type": "按类型指针查找结构体(is 比较),返回 StructEntry 或 None", "lookup_field": "按结构体类型和字段名查找字段信息\n\n 两遍查找策略(跨模块同名类冲突的根本修复):\n 第一遍: 类型指针 is 身份比较(最高优先级,类型唯一确定 entry)\n 第二遍: 名称回退(is 未匹配时,按类名/strstr 匹配,字段未找到时 continue)\n ", "lookup_field_by_class": "按类名和字段名查找字段信息\n\n 优先用 SHA1 匹配(跨模块同名类区分),无 SHA1 时按类名查找第一个\n ", "get_struct_type": "按类名获取结构体的 LLVM 类型", "get_field_by_index": "按类名和字段索引获取字段信息", "struct_has_defaults": "检查结构体是否有任何带默认值的字段,返回 1=有 / 0=无", "_is_struct_type": "检查 ty 是否是 Struct 类型(独立函数,规避嵌套 match 编译器 BUG)", "get_struct_type_from_value": "从 Value 的类型推断结构体类型", "mark_as_union": "标记已注册的结构体为联合体,返回 1=成功 / 0=失败", "is_union_by_name": "按类名检查是否为联合体,返回 1=是 / 0=否", "is_union_by_type": "按类型指针检查是否为联合体,返回 1=是 / 0=否\n\n 先尝试类型指针 == 比较,失败时回退到名称匹配\n ", "mark_as_oop": "标记已注册的结构体为 OOP,返回 1=成功 / 0=失败", "is_oop_by_name": "按类名检查是否为 OOP 结构体,返回 1=是 / 0=否", "mark_has_init": "标记结构体拥有 __init__ 方法,返回 1=成功 / 0=失败", "has_init_by_name": "按类名检查是否有 __init__ 方法,返回 1=有 / 0=无", "mark_has_new": "标记结构体拥有 __new__ 方法,返回 1=成功 / 0=失败", "has_new_by_name": "按类名检查是否有 __new__ 方法,返回 1=有 / 0=无", "get_class_name_by_type": "按类型指针查找类名,返回类名字符串或 None", "_extract_struct_name": "从 LLVMType 提取 Struct 变体的 Name 字段,返回 None 非 Struct", "mark_has_vtable": "标记结构体拥有虚表,返回 1=成功 / 0=失败", "has_vtable_by_name": "按类名检查是否有虚表,返回 1=有 / 0=无", "mark_novtable": "标记结构体为 NoVTable,返回 1=成功 / 0=失败", "is_novtable_by_name": "按类名检查是否为 NoVTable,返回 1=是 / 0=否", "set_parent_name": "设置结构体的父类名,返回 1=成功 / 0=失败", "get_parent_name": "获取结构体的父类名,返回 None=无父类", "set_vtable_methods": "设置虚表方法名数组,返回 1=成功 / 0=失败", "get_vtable_method_index": "获取方法在虚表中的索引,返回 -1=未找到", "get_vtable_method_count": "获取虚表方法数量", "get_vtable_method_name": "获取虚表中第 idx 个方法名,返回 None=越界", "get_field_count": "获取结构体字段数量,返回 -1=未找到", "get_field_name_ptr": "获取 FieldEntry 的字段名,返回 None=未设置", "get_field_type_ptr": "获取 FieldEntry 的字段类型,返回 None=未设置", "get_field_default_ptr": "获取 FieldEntry 的默认值 AST 节点,返回 None=无默认值", "get_field_annot_class_name": "获取 FieldEntry 的原始类型注解类名,返回 None=未设置"} \ No newline at end of file diff --git a/.transpyc_cache/9ba128b762cf2b4d.pyi b/.transpyc_cache/9ba128b762cf2b4d.pyi deleted file mode 100644 index 9662312..0000000 --- a/.transpyc_cache/9ba128b762cf2b4d.pyi +++ /dev/null @@ -1,139 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesStruct.py -Module: lib.core.Handles.HandlesStruct -""" - - -import t, c -from stdint import * -import memhub -import string -import llvmlite -import stdio -import ast -import hashtable - -STRUCT_MAX: t.CDefine = 512 -FIELD_MAX: t.CDefine = 32 -FIELD_NAME_MAX: t.CDefine = 64 - -@t.NoVTable -class FieldEntry: - Name: t.CChar | t.CPtr - Index: int - Ty: llvmlite.LLVMType | t.CPtr - DefaultVal: ast.AST | t.CPtr - AnnotClassName: t.CChar | t.CPtr -@t.NoVTable -class StructEntry: - Name: t.CChar | t.CPtr - Ty: llvmlite.LLVMType | t.CPtr - FieldCount: int - Fields: FieldEntry | t.CPtr - IsUnion: int - IsOOP: int - HasInit: int - HasNew: int - HasVTable: int - IsNoVTable: int - ParentName: t.CChar | t.CPtr - VTableMethodCount: int - VTableMethods: t.CChar | t.CPtr - ModuleSha1: t.CChar | t.CPtr - -_struct_table: t.CExtern | StructEntry | t.CPtr -_struct_count: t.CExtern | int -_visible_structs: t.CExtern | hashtable.HashTable | t.CPtr -_strict_visibility: t.CExtern | int - -def reset_visible_structs(pool: memhub.MemBuddy | t.CPtr, strict: int) -> t.CInt: pass - -def add_visible_struct(pool: memhub.MemBuddy | t.CPtr, name: str) -> t.CInt: pass - -def is_struct_visible(name: str) -> int: pass - -def init_struct_table(pool: memhub.MemBuddy | t.CPtr) -> int: pass - -def _get_struct_entry(i: int) -> StructEntry | t.CPtr: pass - -def _get_field_entry(struct_entry: StructEntry | t.CPtr, i: int) -> FieldEntry | t.CPtr: pass - -def register_struct(pool: memhub.MemBuddy | t.CPtr, name: str, struct_ty: llvmlite.LLVMType | t.CPtr, sha1: str) -> StructEntry | t.CPtr: pass - -def set_struct_sha1(pool: memhub.MemBuddy | t.CPtr, class_name: str, sha1: str) -> int: pass - -def get_struct_sha1(class_name: str) -> str: pass - -def add_field(pool: memhub.MemBuddy | t.CPtr, struct_entry: StructEntry | t.CPtr, field_name: str, field_ty: llvmlite.LLVMType | t.CPtr, default_val: ast.AST | t.CPtr, annot_class_name: t.CChar | t.CPtr) -> int: pass - -def find_struct(name: str) -> StructEntry | t.CPtr: pass - -def find_struct_by_module(name: str, sha1: str) -> StructEntry | t.CPtr: pass - -def find_struct_by_type(struct_ty: llvmlite.LLVMType | t.CPtr) -> StructEntry | t.CPtr: pass - -def lookup_field(struct_ty: llvmlite.LLVMType | t.CPtr, field_name: str) -> FieldEntry | t.CPtr: pass - -def lookup_field_by_class(class_name: str, field_name: str, sha1: str) -> FieldEntry | t.CPtr: pass - -def get_struct_type(class_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def get_field_by_index(class_name: str, idx: int) -> FieldEntry | t.CPtr: pass - -def struct_has_defaults(class_name: str) -> int: pass - -def _is_struct_type(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def get_struct_type_from_value(val: llvmlite.Value | t.CPtr) -> llvmlite.LLVMType | t.CPtr: pass - -def mark_as_union(name: str) -> int: pass - -def is_union_by_name(name: str) -> int: pass - -def is_union_by_type(struct_ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def mark_as_oop(name: str) -> int: pass - -def is_oop_by_name(name: str) -> int: pass - -def mark_has_init(name: str) -> int: pass - -def has_init_by_name(name: str) -> int: pass - -def mark_has_new(name: str) -> int: pass - -def has_new_by_name(name: str) -> int: pass - -def get_class_name_by_type(pool: memhub.MemBuddy | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr) -> str: pass - -def _extract_struct_name(ty: llvmlite.LLVMType | t.CPtr) -> str: pass - -def mark_has_vtable(name: str) -> int: pass - -def has_vtable_by_name(name: str) -> int: pass - -def mark_novtable(name: str) -> int: pass - -def is_novtable_by_name(name: str) -> int: pass - -def set_parent_name(name: str, parent_name: str) -> int: pass - -def get_parent_name(name: str) -> str: pass - -def set_vtable_methods(name: str, methods: t.CChar | t.CPtr, count: int) -> int: pass - -def get_vtable_method_index(name: str, method_name: str) -> int: pass - -def get_vtable_method_count(name: str) -> int: pass - -def get_vtable_method_name(name: str, idx: int) -> str: pass - -def get_field_count(name: str) -> int: pass - -def get_field_name_ptr(fe: FieldEntry | t.CPtr) -> str: pass - -def get_field_type_ptr(fe: FieldEntry | t.CPtr) -> llvmlite.LLVMType | t.CPtr: pass - -def get_field_default_ptr(fe: FieldEntry | t.CPtr) -> ast.AST | t.CPtr: pass - -def get_field_annot_class_name(fe: FieldEntry | t.CPtr) -> str: pass diff --git a/.transpyc_cache/9d798d964b9d3411.doc.json b/.transpyc_cache/9d798d964b9d3411.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/9d798d964b9d3411.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/9d798d964b9d3411.pyi b/.transpyc_cache/9d798d964b9d3411.pyi deleted file mode 100644 index e7501ef..0000000 --- a/.transpyc_cache/9d798d964b9d3411.pyi +++ /dev/null @@ -1,28 +0,0 @@ -""" -Auto-generated Python stub file from new_test.py -Module: new_test -""" - - -import stdio -import t, c - -class WithNew: - value: t.CInt - def __new__(self: WithNew, v: t.CInt) -> t.CInt: pass - def __init__(self: WithNew, v: t.CInt) -> t.CInt: pass - def GetValue(self: WithNew) -> t.CInt: pass -class WithNewNoArgs: - value: t.CInt - def __new__(self: WithNewNoArgs) -> t.CInt: pass - def __init__(self: WithNewNoArgs, v: t.CInt) -> t.CInt: pass - def GetValue(self: WithNewNoArgs) -> t.CInt: pass -@t.CVTable -class WithNewVTable: - value: t.CInt - def __new__(self: WithNewVTable, v: t.CInt) -> t.CInt: pass - def __init__(self: WithNewVTable, v: t.CInt) -> t.CInt: pass - def GetValue(self: WithNewVTable) -> t.CInt: pass - def Speak(self: WithNewVTable) -> t.CInt: pass - -def new_test() -> int: pass diff --git a/.transpyc_cache/9d8e1c9631c28b1b.doc.json b/.transpyc_cache/9d8e1c9631c28b1b.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/9d8e1c9631c28b1b.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/9d8e1c9631c28b1b.pyi b/.transpyc_cache/9d8e1c9631c28b1b.pyi deleted file mode 100644 index e67abb0..0000000 --- a/.transpyc_cache/9d8e1c9631c28b1b.pyi +++ /dev/null @@ -1,16 +0,0 @@ -""" -Auto-generated Python stub file from closure_test.py -Module: closure_test -""" - - -import stdio -import t, c - -g_count: t.CExtern | int - -def test_global() -> int: pass - -def make_counter() -> t.CPtr: pass - -def closure_test() -> int: pass diff --git a/.transpyc_cache/9e38ca4de81ccb6d.doc.json b/.transpyc_cache/9e38ca4de81ccb6d.doc.json deleted file mode 100644 index c00e036..0000000 --- a/.transpyc_cache/9e38ca4de81ccb6d.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数\n\n 直接接收三个 Value 参数,避免通过 Next 链表遍历(共享 alloca 对象的\n Next 字段可能被其他操作污染,导致链表断裂)。\n ", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/9e38ca4de81ccb6d.pyi b/.transpyc_cache/9e38ca4de81ccb6d.pyi deleted file mode 100644 index 40c3168..0000000 --- a/.transpyc_cache/9e38ca4de81ccb6d.pyi +++ /dev/null @@ -1,171 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, dst_val: llvmlite.Value | t.CPtr, src_val: llvmlite.Value | t.CPtr, num_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/9f6e387913081f0e.doc.json b/.transpyc_cache/9f6e387913081f0e.doc.json deleted file mode 100644 index d24160b..0000000 --- a/.transpyc_cache/9f6e387913081f0e.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"Translator": "翻译器:管理编译状态,委托 Handles 模块执行翻译", "Translator._init_state": "初始化变量表、函数表和子 Handle", "Translator.translate": "将 AST 翻译为 LLVM IR", "Translator._translate_wrapper_main": "委托 HandlesMain.create_wrapper_main() 创建包装 main(trans 单参)", "Translator._translate_module_level": "委托 HandlesMain.translate_children() 翻译模块级语句(trans 单参)", "Translator.dump_ir": "将 LLVM IR 输出到缓冲区\n\n mode: 0=完整, 1=stub(仅声明), 2=text(仅代码)\n ", "add_global_name": "添加一个 global 变量名", "is_global_name": "检查 name 是否在当前函数的 global 集合中", "add_nonlocal_name": "添加一个 nonlocal 变量名", "is_nonlocal_name": "检查 name 是否在当前函数的 nonlocal 集合中", "get_nonlocal_index": "获取 nonlocal 变量在 env 中的索引(0-based),找不到返回 -1", "clear_scope_names": "清空当前函数的 global/nonlocal 名称集合(进入新函数时调用)"} \ No newline at end of file diff --git a/.transpyc_cache/9f6e387913081f0e.pyi b/.transpyc_cache/9f6e387913081f0e.pyi deleted file mode 100644 index 89de3bc..0000000 --- a/.transpyc_cache/9f6e387913081f0e.pyi +++ /dev/null @@ -1,88 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesTranslator.py -Module: lib.core.Handles.HandlesTranslator -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.Handles.HandlesMain as HandlesMain -import lib.core.Handles.HandlesAssign as HandlesAssign -import lib.core.Handles.HandlesReturn as HandlesReturn -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesAnnAssign as HandlesAnnAssign -import lib.core.Handles.HandlesAugAssign as HandlesAugAssign -import lib.core.Handles.HandlesIf as HandlesIf -import lib.core.Handles.HandlesWhile as HandlesWhile -import lib.core.Handles.HandlesFor as HandlesFor -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.Projectrans.Config as Config - -MAX_VARS: t.CDefine = 256 -MAX_FUNCS: t.CDefine = 256 -MAX_GLOBAL_NAMES: t.CDefine = 32 - -@t.NoVTable -class Translator: - Module: llvmlite.LLVMModule | t.CPtr - Pool: memhub.MemBuddy | t.CPtr - _funcs: HandlesExprCall.FuncEntry | t.CPtr - _func_count: t.CInt - _imported_modules: str - _from_imports: str - _cur_func: llvmlite.Function | t.CPtr - _cur_builder: llvmlite.IRBuilder | t.CPtr - _break_bb: llvmlite.BasicBlock | t.CPtr - _continue_bb: llvmlite.BasicBlock | t.CPtr - _label_counter: t.CInt - _global_names: str - _global_name_count: t.CInt - _nonlocal_names: str - _nonlocal_name_count: t.CInt - _cur_func_name: str - ModuleSha1: str - _closure_env_offsets: t.CInt - _closure_env_count: t.CInt - GenericTypeParamNames: list[str] | t.CPtr - GenericTypeArgs: list[str] | t.CPtr - _declare_only: t.CInt - AssignH: HandlesAssign.AssignHandle | t.CPtr - ReturnH: HandlesReturn.ReturnHandle | t.CPtr - ImportsH: HandlesImports.ImportsHandle | t.CPtr - AnnAssignH: HandlesAnnAssign.AnnAssignHandle | t.CPtr - AugAssignH: HandlesAugAssign.AugAssignHandle | t.CPtr - IfH: HandlesIf.IfHandle | t.CPtr - WhileH: HandlesWhile.WhileHandle | t.CPtr - ForH: HandlesFor.ForHandle | t.CPtr - ExprH: HandlesExpr.ExprHandle | t.CPtr - ExprCallH: HandlesExprCall.ExprCallHandle | t.CPtr - SymTab: HandlesVar.SymbolTable | t.CPtr - def __init__(self: Translator) -> t.CInt: pass - def _init_state(self: Translator, pool: memhub.MemBuddy | t.CPtr) -> t.CInt: pass - def translate(self: Translator, tree: ast.AST | t.CPtr) -> int: pass - def _translate_wrapper_main(self: Translator, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, tree: ast.AST | t.CPtr, i32_ty: llvmlite.LLVMType | t.CPtr) -> t.CInt: pass - def _translate_module_level(self: Translator, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, tree: ast.AST | t.CPtr) -> t.CInt: pass - def dump_ir(self: Translator, buf: bytes, size: t.CSizeT, mode: int) -> t.CInt: pass - -def add_global_name(trans: HT.Translator | t.CPtr, name: str) -> t.CInt: pass - -def is_global_name(trans: HT.Translator | t.CPtr, name: str) -> int: pass - -def add_nonlocal_name(trans: HT.Translator | t.CPtr, name: str) -> t.CInt: pass - -def is_nonlocal_name(trans: HT.Translator | t.CPtr, name: str) -> int: pass - -def get_nonlocal_index(trans: HT.Translator | t.CPtr, name: str) -> int: pass - -def clear_scope_names(trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -_mbuddy: t.CExtern | memhub.MemBuddy | t.CPtr \ No newline at end of file diff --git a/.transpyc_cache/9fdf7e28103d0ff0.doc.json b/.transpyc_cache/9fdf7e28103d0ff0.doc.json deleted file mode 100644 index ca04595..0000000 --- a/.transpyc_cache/9fdf7e28103d0ff0.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"reset_visible_structs": "重置可见性状态(每个文件翻译前调用)\n\n pool: 内存分配器(严格模式下创建 HashTable)\n strict: 1=严格模式(用户文件),0=宽松模式(includes 文件)\n ", "add_visible_struct": "添加可见结构体名(类定义时和 from-import 时调用)", "is_struct_visible": "检查结构体是否可见,返回 1=可见 / 0=不可见", "init_struct_table": "初始化结构体注册表,返回 1 成功", "_get_struct_entry": "获取第 i 个结构体条目", "_get_field_entry": "获取结构体中第 i 个字段条目", "register_struct": "注册结构体类型,返回 StructEntry 指针\n\n 用类型指针去重(is 比较),不用类名去重。\n 这样跨模块同名类可以共存,各自有独立的字段定义。\n sha1 参数在注册时直接设置 ModuleSha1(避免 set_struct_sha1 找错 entry)。\n ", "set_struct_sha1": "设置结构体所属模块的 SHA1,返回 1=成功 / 0=失败", "get_struct_sha1": "获取结构体所属模块的 SHA1,返回 None=无 SHA1", "add_field": "向结构体添加字段,返回字段索引(-1 失败)\n\n default_val: 字段默认值 AST 节点(可选,None=无默认值)\n annot_class_name: 原始类型注解的类名(可选,用于联合类型字段的方法调用解析)\n ", "find_struct": "按类名查找结构体,返回 StructEntry 或 None", "find_struct_by_module": "按类名 + SHA1 查找结构体,返回 StructEntry 或 None\n\n SHA1 非 None 时:精确匹配 name+sha1,未找到返回 None(不回退,避免跨模块同名找错)\n SHA1 为 None 时:回退到 find_struct(name) 按类名查找第一个\n ", "find_struct_by_type": "按类型指针查找结构体(is 比较),返回 StructEntry 或 None", "lookup_field": "按结构体类型和字段名查找字段信息\n\n 两遍查找策略(跨模块同名类冲突的根本修复):\n 第一遍: 类型指针 is 身份比较(最高优先级,类型唯一确定 entry)\n 第二遍: 名称回退(is 未匹配时,按类名/strstr 匹配,字段未找到时 continue)\n ", "lookup_field_by_class": "按类名和字段名查找字段信息\n\n 优先用 SHA1 匹配(跨模块同名类区分),无 SHA1 时按类名查找第一个\n ", "get_struct_type": "按类名获取结构体的 LLVM 类型", "get_field_by_index": "按类名和字段索引获取字段信息", "struct_has_defaults": "检查结构体是否有任何带默认值的字段,返回 1=有 / 0=无", "_is_struct_type": "检查 ty 是否是 Struct 类型(独立函数,规避嵌套 match 编译器 BUG)", "get_struct_type_from_value": "从 Value 的类型推断结构体类型", "mark_as_union": "标记已注册的结构体为联合体,返回 1=成功 / 0=失败", "is_union_by_name": "按类名检查是否为联合体,返回 1=是 / 0=否", "is_union_by_type": "按类型指针检查是否为联合体,返回 1=是 / 0=否\n\n 先尝试类型指针 == 比较,失败时回退到名称匹配\n ", "mark_as_oop": "标记已注册的结构体为 OOP,返回 1=成功 / 0=失败", "is_oop_by_name": "按类名检查是否为 OOP 结构体,返回 1=是 / 0=否", "mark_has_init": "标记结构体拥有 __init__ 方法,返回 1=成功 / 0=失败", "has_init_by_name": "按类名检查是否有 __init__ 方法,返回 1=有 / 0=无", "mark_has_new": "标记结构体拥有 __new__ 方法,返回 1=成功 / 0=失败", "has_new_by_name": "按类名检查是否有 __new__ 方法,返回 1=有 / 0=无", "get_class_name_by_type": "按类型指针查找类名,返回类名字符串或 None", "_extract_struct_name": "从 LLVMType 提取 Struct 变体的 Name 字段,返回 None 非 Struct", "mark_has_vtable": "标记结构体拥有虚表,返回 1=成功 / 0=失败", "has_vtable_by_name": "按类名检查是否有虚表,返回 1=有 / 0=无", "mark_novtable": "标记结构体为 NoVTable,返回 1=成功 / 0=失败", "is_novtable_by_name": "按类名检查是否为 NoVTable,返回 1=是 / 0=否", "set_parent_name": "设置结构体的父类名,返回 1=成功 / 0=失败", "get_parent_name": "获取结构体的父类名,返回 None=无父类", "set_vtable_methods": "设置虚表方法名数组,返回 1=成功 / 0=失败", "get_vtable_method_index": "获取方法在虚表中的索引,返回 -1=未找到", "get_vtable_method_count": "获取虚表方法数量", "get_vtable_method_name": "获取虚表中第 idx 个方法名,返回 None=越界", "get_field_count": "获取结构体字段数量,返回 -1=未找到", "get_field_name_ptr": "获取 FieldEntry 的字段名,返回 None=未设置", "get_field_type_ptr": "获取 FieldEntry 的字段类型,返回 None=未设置", "get_field_default_ptr": "获取 FieldEntry 的默认值 AST 节点,返回 None=无默认值", "get_field_annot_class_name": "获取 FieldEntry 的原始类型注解类名,返回 None=未设置"} \ No newline at end of file diff --git a/.transpyc_cache/9fdf7e28103d0ff0.pyi b/.transpyc_cache/9fdf7e28103d0ff0.pyi deleted file mode 100644 index b529a3b..0000000 --- a/.transpyc_cache/9fdf7e28103d0ff0.pyi +++ /dev/null @@ -1,139 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesStruct.py -Module: lib.core.Handles.HandlesStruct -""" - - -import t, c -from stdint import * -import memhub -import string -import llvmlite -import stdio -import ast -import hashtable - -STRUCT_MAX: t.CDefine = 512 -FIELD_MAX: t.CDefine = 32 -FIELD_NAME_MAX: t.CDefine = 64 - -@t.NoVTable -class FieldEntry: - Name: t.CChar | t.CPtr - Index: int - Ty: llvmlite.LLVMType | t.CPtr - DefaultVal: ast.AST | t.CPtr - AnnotClassName: t.CChar | t.CPtr -@t.NoVTable -class StructEntry: - Name: t.CChar | t.CPtr - Ty: llvmlite.LLVMType | t.CPtr - FieldCount: int - Fields: FieldEntry | t.CPtr - IsUnion: int - IsOOP: int - HasInit: int - HasNew: int - HasVTable: int - IsNoVTable: int - ParentName: t.CChar | t.CPtr - VTableMethodCount: int - VTableMethods: t.CChar | t.CPtr - ModuleSha1: t.CChar | t.CPtr - -_struct_table: t.CExtern | StructEntry | t.CPtr -_struct_count: t.CExtern | int -_visible_structs: t.CExtern | hashtable.HashTable | t.CPtr -_strict_visibility: t.CExtern | int - -def reset_visible_structs(pool: memhub.MemBuddy | t.CPtr, strict: int) -> t.CInt: pass - -def add_visible_struct(pool: memhub.MemBuddy | t.CPtr, name: str) -> t.CInt: pass - -def is_struct_visible(name: str) -> int: pass - -def init_struct_table(pool: memhub.MemBuddy | t.CPtr) -> int: pass - -def _get_struct_entry(i: int) -> StructEntry | t.CPtr: pass - -def _get_field_entry(struct_entry: StructEntry | t.CPtr, i: int) -> FieldEntry | t.CPtr: pass - -def register_struct(pool: memhub.MemBuddy | t.CPtr, name: str, struct_ty: llvmlite.LLVMType | t.CPtr, sha1: str) -> StructEntry | t.CPtr: pass - -def set_struct_sha1(pool: memhub.MemBuddy | t.CPtr, class_name: str, sha1: str) -> int: pass - -def get_struct_sha1(class_name: str) -> str: pass - -def add_field(pool: memhub.MemBuddy | t.CPtr, struct_entry: StructEntry | t.CPtr, field_name: str, field_ty: llvmlite.LLVMType | t.CPtr, default_val: ast.AST | t.CPtr, annot_class_name: str) -> int: pass - -def find_struct(name: str) -> StructEntry | t.CPtr: pass - -def find_struct_by_module(name: str, sha1: str) -> StructEntry | t.CPtr: pass - -def find_struct_by_type(struct_ty: llvmlite.LLVMType | t.CPtr) -> StructEntry | t.CPtr: pass - -def lookup_field(struct_ty: llvmlite.LLVMType | t.CPtr, field_name: str) -> FieldEntry | t.CPtr: pass - -def lookup_field_by_class(class_name: str, field_name: str, sha1: str) -> FieldEntry | t.CPtr: pass - -def get_struct_type(class_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def get_field_by_index(class_name: str, idx: int) -> FieldEntry | t.CPtr: pass - -def struct_has_defaults(class_name: str) -> int: pass - -def _is_struct_type(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def get_struct_type_from_value(val: llvmlite.Value | t.CPtr) -> llvmlite.LLVMType | t.CPtr: pass - -def mark_as_union(name: str) -> int: pass - -def is_union_by_name(name: str) -> int: pass - -def is_union_by_type(struct_ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def mark_as_oop(name: str) -> int: pass - -def is_oop_by_name(name: str) -> int: pass - -def mark_has_init(name: str) -> int: pass - -def has_init_by_name(name: str) -> int: pass - -def mark_has_new(name: str) -> int: pass - -def has_new_by_name(name: str) -> int: pass - -def get_class_name_by_type(pool: memhub.MemBuddy | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr) -> str: pass - -def _extract_struct_name(ty: llvmlite.LLVMType | t.CPtr) -> str: pass - -def mark_has_vtable(name: str) -> int: pass - -def has_vtable_by_name(name: str) -> int: pass - -def mark_novtable(name: str) -> int: pass - -def is_novtable_by_name(name: str) -> int: pass - -def set_parent_name(name: str, parent_name: str) -> int: pass - -def get_parent_name(name: str) -> str: pass - -def set_vtable_methods(name: str, methods: t.CChar | t.CPtr, count: int) -> int: pass - -def get_vtable_method_index(name: str, method_name: str) -> int: pass - -def get_vtable_method_count(name: str) -> int: pass - -def get_vtable_method_name(name: str, idx: int) -> str: pass - -def get_field_count(name: str) -> int: pass - -def get_field_name_ptr(fe: FieldEntry | t.CPtr) -> str: pass - -def get_field_type_ptr(fe: FieldEntry | t.CPtr) -> llvmlite.LLVMType | t.CPtr: pass - -def get_field_default_ptr(fe: FieldEntry | t.CPtr) -> ast.AST | t.CPtr: pass - -def get_field_annot_class_name(fe: FieldEntry | t.CPtr) -> str: pass diff --git a/.transpyc_cache/a03139660029514f.doc.json b/.transpyc_cache/a03139660029514f.doc.json deleted file mode 100644 index 7aab3b8..0000000 --- a/.transpyc_cache/a03139660029514f.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_cleanup": "清理可能残留的测试文件/目录"} \ No newline at end of file diff --git a/.transpyc_cache/a03139660029514f.pyi b/.transpyc_cache/a03139660029514f.pyi deleted file mode 100644 index 39bb90d..0000000 --- a/.transpyc_cache/a03139660029514f.pyi +++ /dev/null @@ -1,34 +0,0 @@ -""" -Auto-generated Python stub file from syslibtest_impl.py -Module: syslibtest_impl -""" - - -import t, c -from stdint import * -from t import CInt, CPtr, CUInt8T, CSizeT -import testcheck -import viperlib -import stdlib -import memhub -import platmacro -import os -import os.path -import os_backend -import shutil -import sys -import subprocess -import string -import w32.fileio -import w32.win32base -import w32.win32process - -TEST_DIR: t.CDefine = "__sylibtest_dir__" -TEST_FILE: t.CDefine = "__sylibtest_file.txt" -TEST_COPY: t.CDefine = "__sylibtest_copy.txt" -TEST_TREE: t.CDefine = "__sylibtest_tree__" -TEST_MOVE: t.CDefine = "__sylibtest_moved.txt" - -def _cleanup() -> t.CInt: pass - -def run() -> CInt: pass diff --git a/.transpyc_cache/a0612a85a12439a9.doc.json b/.transpyc_cache/a0612a85a12439a9.doc.json deleted file mode 100644 index c00e036..0000000 --- a/.transpyc_cache/a0612a85a12439a9.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数\n\n 直接接收三个 Value 参数,避免通过 Next 链表遍历(共享 alloca 对象的\n Next 字段可能被其他操作污染,导致链表断裂)。\n ", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/a0612a85a12439a9.pyi b/.transpyc_cache/a0612a85a12439a9.pyi deleted file mode 100644 index 40c3168..0000000 --- a/.transpyc_cache/a0612a85a12439a9.pyi +++ /dev/null @@ -1,171 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, dst_val: llvmlite.Value | t.CPtr, src_val: llvmlite.Value | t.CPtr, num_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/a0e0675172e4f01f.doc.json b/.transpyc_cache/a0e0675172e4f01f.doc.json deleted file mode 100644 index 5d5c7e9..0000000 --- a/.transpyc_cache/a0e0675172e4f01f.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"extract_func_attrs": "从 decorator_list 提取 c.Attribute 属性,返回 LLVM IR 属性字符串", "_get_attr_name_from_node": "从 AST 节点提取属性名\n\n 支持:\n - Call(func=Attribute(...)): t.attr.always_inline() -> \"always_inline\"\n - Attribute: t.attr.packed -> \"packed\"\n - Attribute(t.attr.llvm.xxx): t.attr.llvm.nounwind -> \"nounwind\"\n ", "_append_llvm_attr": "将属性名映射到 LLVM 属性名并追加到缓冲区\n\n 返回 1 表示已追加,0 表示不支持该属性\n ", "_append_str": "将字符串追加到 buf 末尾(用 strlen+strcpy 模拟 strcat)", "_mangle_name": "为任意名称添加 SHA1 前缀(不做 main/export 检查)", "_mangle_name_with_sha1": "用指定 SHA1 为名称添加前缀(不做 main/export 检查)", "_mangle_func_name": "为函数名添加 SHA1 前缀(检查 main/export)", "translate_function_def": "翻译函数定义,返回新增的变量数(通常为 0,函数定义不增加当前作用域变量)", "translate_nested_function_def": "翻译嵌套函数定义:提升为顶层函数 + 创建闭包", "create_function": "创建 LLVM 函数并添加参数"} \ No newline at end of file diff --git a/.transpyc_cache/a0e0675172e4f01f.pyi b/.transpyc_cache/a0e0675172e4f01f.pyi deleted file mode 100644 index d7a865c..0000000 --- a/.transpyc_cache/a0e0675172e4f01f.pyi +++ /dev/null @@ -1,43 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesFunctions.py -Module: lib.core.Handles.HandlesFunctions -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import viperlib -import stdio -import stdlib -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesBody as HandlesBody -import lib.core.Handles.HandlesNonlocal as HandlesNonlocal -import lib.core.Handles.HandlesImports as HandlesImports - -def extract_func_attrs(pool: memhub.MemBuddy | t.CPtr, decorator_list: list[ast.AST | t.CPtr] | t.CPtr, imported_modules: str) -> t.CChar | t.CPtr: pass - -def _get_attr_name_from_node(node: ast.AST | t.CPtr) -> str: pass - -def _append_llvm_attr(attrs_buf: t.CChar | t.CPtr, attr_name: str) -> int: pass - -def _append_str(buf: t.CChar | t.CPtr, s: str) -> None: pass - -def _mangle_name(trans: HT.Translator | t.CPtr, name: str) -> str: pass - -def _mangle_name_with_sha1(sha1: str, name: str) -> str: pass - -def _mangle_func_name(trans: HT.Translator | t.CPtr, name: str, has_export: int) -> str: pass - -def translate_function_def(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - -def translate_nested_function_def(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - -def create_function(pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, name: str, args_node: ast.AST | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Function | t.CPtr: pass diff --git a/.transpyc_cache/a30bd51aa00f0bef.doc.json b/.transpyc_cache/a30bd51aa00f0bef.doc.json deleted file mode 100644 index d24160b..0000000 --- a/.transpyc_cache/a30bd51aa00f0bef.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"Translator": "翻译器:管理编译状态,委托 Handles 模块执行翻译", "Translator._init_state": "初始化变量表、函数表和子 Handle", "Translator.translate": "将 AST 翻译为 LLVM IR", "Translator._translate_wrapper_main": "委托 HandlesMain.create_wrapper_main() 创建包装 main(trans 单参)", "Translator._translate_module_level": "委托 HandlesMain.translate_children() 翻译模块级语句(trans 单参)", "Translator.dump_ir": "将 LLVM IR 输出到缓冲区\n\n mode: 0=完整, 1=stub(仅声明), 2=text(仅代码)\n ", "add_global_name": "添加一个 global 变量名", "is_global_name": "检查 name 是否在当前函数的 global 集合中", "add_nonlocal_name": "添加一个 nonlocal 变量名", "is_nonlocal_name": "检查 name 是否在当前函数的 nonlocal 集合中", "get_nonlocal_index": "获取 nonlocal 变量在 env 中的索引(0-based),找不到返回 -1", "clear_scope_names": "清空当前函数的 global/nonlocal 名称集合(进入新函数时调用)"} \ No newline at end of file diff --git a/.transpyc_cache/a30bd51aa00f0bef.pyi b/.transpyc_cache/a30bd51aa00f0bef.pyi deleted file mode 100644 index 0e885bf..0000000 --- a/.transpyc_cache/a30bd51aa00f0bef.pyi +++ /dev/null @@ -1,89 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesTranslator.py -Module: lib.core.Handles.HandlesTranslator -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.Handles.HandlesMain as HandlesMain -import lib.core.Handles.HandlesAssign as HandlesAssign -import lib.core.Handles.HandlesReturn as HandlesReturn -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesAnnAssign as HandlesAnnAssign -import lib.core.Handles.HandlesAugAssign as HandlesAugAssign -import lib.core.Handles.HandlesIf as HandlesIf -import lib.core.Handles.HandlesWhile as HandlesWhile -import lib.core.Handles.HandlesFor as HandlesFor -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesFunctions as HandlesFunctions -import lib.Projectrans.Config as Config - -MAX_VARS: t.CDefine = 256 -MAX_FUNCS: t.CDefine = 256 -MAX_GLOBAL_NAMES: t.CDefine = 32 - -@t.NoVTable -class Translator: - Module: llvmlite.LLVMModule | t.CPtr - Pool: memhub.MemBuddy | t.CPtr - _funcs: HandlesExprCall.FuncEntry | t.CPtr - _func_count: t.CInt - _imported_modules: str - _from_imports: str - _cur_func: llvmlite.Function | t.CPtr - _cur_builder: llvmlite.IRBuilder | t.CPtr - _break_bb: llvmlite.BasicBlock | t.CPtr - _continue_bb: llvmlite.BasicBlock | t.CPtr - _label_counter: t.CInt - _global_names: str - _global_name_count: t.CInt - _nonlocal_names: str - _nonlocal_name_count: t.CInt - _cur_func_name: str - ModuleSha1: str - _closure_env_offsets: t.CInt - _closure_env_count: t.CInt - GenericTypeParamNames: list[str] | t.CPtr - GenericTypeArgs: list[str] | t.CPtr - _declare_only: t.CInt - AssignH: HandlesAssign.AssignHandle | t.CPtr - ReturnH: HandlesReturn.ReturnHandle | t.CPtr - ImportsH: HandlesImports.ImportsHandle | t.CPtr - AnnAssignH: HandlesAnnAssign.AnnAssignHandle | t.CPtr - AugAssignH: HandlesAugAssign.AugAssignHandle | t.CPtr - IfH: HandlesIf.IfHandle | t.CPtr - WhileH: HandlesWhile.WhileHandle | t.CPtr - ForH: HandlesFor.ForHandle | t.CPtr - ExprH: HandlesExpr.ExprHandle | t.CPtr - ExprCallH: HandlesExprCall.ExprCallHandle | t.CPtr - SymTab: HandlesVar.SymbolTable | t.CPtr - def __init__(self: Translator) -> t.CInt: pass - def _init_state(self: Translator, pool: memhub.MemBuddy | t.CPtr) -> t.CInt: pass - def translate(self: Translator, tree: ast.AST | t.CPtr) -> int: pass - def _translate_wrapper_main(self: Translator, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, tree: ast.AST | t.CPtr, i32_ty: llvmlite.LLVMType | t.CPtr) -> t.CInt: pass - def _translate_module_level(self: Translator, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, tree: ast.AST | t.CPtr) -> t.CInt: pass - def dump_ir(self: Translator, buf: bytes, size: t.CSizeT, mode: int) -> t.CInt: pass - -def add_global_name(trans: HT.Translator | t.CPtr, name: str) -> t.CInt: pass - -def is_global_name(trans: HT.Translator | t.CPtr, name: str) -> int: pass - -def add_nonlocal_name(trans: HT.Translator | t.CPtr, name: str) -> t.CInt: pass - -def is_nonlocal_name(trans: HT.Translator | t.CPtr, name: str) -> int: pass - -def get_nonlocal_index(trans: HT.Translator | t.CPtr, name: str) -> int: pass - -def clear_scope_names(trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -_mbuddy: t.CExtern | memhub.MemBuddy | t.CPtr \ No newline at end of file diff --git a/.transpyc_cache/a47313ed1481da7d.doc.json b/.transpyc_cache/a47313ed1481da7d.doc.json deleted file mode 100644 index a8e6f20..0000000 --- a/.transpyc_cache/a47313ed1481da7d.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_is_cenum_base": "检查 base 节点是否为 t.CEnum,返回 1=是 / 0=否", "_is_enum_class": "检查 ClassDef 是否继承自 t.CEnum,返回 1=是 / 0=否", "_is_cunion_base": "检查 base 节点是否为 t.CUnion,返回 1=是 / 0=否", "_is_union_class": "检查 ClassDef 是否继承自 t.CUnion,返回 1=是 / 0=否", "_has_decorator": "检查 decorator_list 中是否有指定装饰器名", "_is_marker_base": "检查基类名是否为标记基类,返回 1=是 / 0=否", "_get_base_name": "从 base AST 节点提取基类名,返回 None=失败", "_get_parent_class": "获取 ClassDef 的真实父类名,返回 None=无真实父类", "_has_any_func_cvtable": "检查类中是否有任何函数标记了 @t.CVTable,返回 1=有 / 0=无", "_should_method_be_virtual": "判断方法是否应该进入虚表,返回 1=包含 / 0=排除", "_detect_vtable_status": "检测类是否应该启用虚表", "_resolve_enum_member_type": "解析枚举成员的类型注解为 LLVM 整数类型", "_is_state_annotation": "检查注解节点是否为 t.State,返回 1=是 / 0=否", "_extract_int_value": "从 AST 节点提取整数值,失败返回 0", "_translate_enum_def": "翻译枚举类定义,返回 0", "_get_type_size": "计算 LLVM 类型的字节大小", "_translate_union_def": "翻译联合体定义,返回 0", "_is_generic_class": "检查 ClassDef 是否有类型参数(泛型类),返回 1=是 / 0=否", "_register_generic_template": "注册泛型类模板(类名 + ClassDef 节点)", "_find_generic_template": "查找泛型类模板,返回 ClassDef 节点或 None", "_mangle_generic_class_name": "生成特化类名: list + [int] -> list[int]\n\n 分配新缓冲区拼接,避免原地 strcat 导致缓冲区溢出\n ", "_clone_annotation": "拷贝类型注解表达式,替换类型参数 T 为具体类型名\n\n tp_names: 类型参数名列表 ['T']\n type_args: 类型实参名列表 ['int']\n ", "_clone_arguments": "拷贝 Arguments 节点,替换 arg annotation 中的 T", "_clone_classdef_for_spec": "拷贝 ClassDef 节点用于泛型特化\n\n - 替换类名为 spec_name\n - 清除 type_params(特化后不是泛型类)\n - 拷贝 children 中的 AnnAssign 和 FunctionDef,替换类型注解中的 T\n - 方法体直接引用原始节点(通过 type_map 上下文处理 T)\n ", "_find_cached_spec": "查找已缓存的特化名,未找到返回 None", "_cache_spec": "缓存特化结果", "_specialize_generic_class": "特化泛型类,返回特化类名\n\n 1. 查找泛型模板\n 2. 生成特化名\n 3. 检查缓存\n 4. 拷贝 ClassDef 节点(替换类型注解中的 T)\n 5. 设置 type_map 上下文(用于方法体中的 T 替换)\n 6. 调用 translate_class_def 翻译特化类\n 7. 返回特化名\n ", "translate_class_def": "翻译 class 定义,返回 0", "_vtable_strcat": "将 src 追加到 dst 末尾", "_vtable_name_needs_quote": "检查 LLVM 标识符是否需要引号(以数字开头或含 '.')", "_format_func_type_str": "从 Function 对象生成函数类型字符串", "_generate_vtable": "生成 VTable 全局变量", "_translate_oop_methods": "扫描 class body 中的方法并翻译,生成 __before_init__", "_translate_method": "翻译单个方法,返回 0", "_generate_before_init": "生成 __before_init__ 函数,返回 0"} \ No newline at end of file diff --git a/.transpyc_cache/a47313ed1481da7d.pyi b/.transpyc_cache/a47313ed1481da7d.pyi deleted file mode 100644 index 62b2e80..0000000 --- a/.transpyc_cache/a47313ed1481da7d.pyi +++ /dev/null @@ -1,104 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesClassDef.py -Module: lib.core.Handles.HandlesClassDef -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import viperlib -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesEnum as HandlesEnum - -ENUM_MEMBER_MAX_LOCAL: t.CDefine = 64 - -def _is_cenum_base(base_node: ast.AST | t.CPtr) -> int: pass - -def _is_enum_class(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _is_cunion_base(base_node: ast.AST | t.CPtr) -> int: pass - -def _is_union_class(cd: ast.ClassDef | t.CPtr) -> int: pass - - -_MARKER_BASES: t.CDefine = 8 - -def _has_decorator(decorator_list: list[ast.AST | t.CPtr] | t.CPtr, deco_name: str) -> int: pass - -def _is_marker_base(base_name: str) -> int: pass - -def _get_base_name(base_node: ast.AST | t.CPtr) -> str: pass - -def _get_parent_class(cd: ast.ClassDef | t.CPtr) -> str: pass - -def _has_any_func_cvtable(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _should_method_be_virtual(cd: ast.ClassDef | t.CPtr, fd: ast.FunctionDef | t.CPtr, trans: HT.Translator | t.CPtr) -> int: pass - -def _detect_vtable_status(cd: ast.ClassDef | t.CPtr, trans: HT.Translator | t.CPtr) -> int: pass - -def _resolve_enum_member_type(pool: memhub.MemBuddy | t.CPtr, ann_node: ast.AST | t.CPtr, imported_modules: str, from_imports: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _is_state_annotation(node: ast.AST | t.CPtr) -> int: pass - -def _extract_int_value(node: ast.AST | t.CPtr) -> t.CInt64T: pass - -def _translate_enum_def(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr) -> int: pass - -def _get_type_size(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def _translate_union_def(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr) -> int: pass - - -_generic_class_names: t.CExtern | list[str] | t.CPtr -_generic_class_nodes: t.CExtern | list[ast.ClassDef | t.CPtr] | t.CPtr - -def _is_generic_class(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _register_generic_template(pool: memhub.MemBuddy | t.CPtr, cd: ast.ClassDef | t.CPtr) -> t.CInt: pass - -def _find_generic_template(class_name: str) -> ast.ClassDef | t.CPtr: pass - -def _mangle_generic_class_name(pool: memhub.MemBuddy | t.CPtr, class_name: str, type_args: list[str] | t.CPtr) -> str: pass - -def _clone_annotation(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.AST | t.CPtr: pass - -def _clone_arguments(pool: memhub.MemBuddy | t.CPtr, args: ast.AST | t.CPtr, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.AST | t.CPtr: pass - -def _clone_classdef_for_spec(pool: memhub.MemBuddy | t.CPtr, cd: ast.ClassDef | t.CPtr, spec_name: str, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.ClassDef | t.CPtr: pass - - -_spec_keys: t.CExtern | list[str] | t.CPtr -_spec_names: t.CExtern | list[str] | t.CPtr - -def _find_cached_spec(spec_key: str) -> str: pass - -def _cache_spec(pool: memhub.MemBuddy | t.CPtr, spec_key: str, spec_name: str) -> t.CInt: pass - -def _specialize_generic_class(trans: HT.Translator | t.CPtr, class_name: str, type_args: list[str] | t.CPtr) -> str: pass - -def translate_class_def(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - - -VTBL_METHOD_MAX: t.CDefine = 32 - -def _vtable_strcat(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _vtable_name_needs_quote(name: str) -> int: pass - -def _format_func_type_str(pool: memhub.MemBuddy | t.CPtr, buf: t.CChar | t.CPtr, buf_size: t.CSizeT, func: llvmlite.Function | t.CPtr) -> int: pass - -def _generate_vtable(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr, class_name: str) -> int: pass - -def _translate_oop_methods(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass - -def _translate_method(trans: HT.Translator | t.CPtr, fd: ast.FunctionDef | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass - -def _generate_before_init(trans: HT.Translator | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass diff --git a/.transpyc_cache/a5407d80d9f015ed.doc.json b/.transpyc_cache/a5407d80d9f015ed.doc.json deleted file mode 100644 index c3a1e25..0000000 --- a/.transpyc_cache/a5407d80d9f015ed.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"SrcFileEntry": "源文件条目", "RunMultiFileProject": "多文件项目编译\n\n Returns: 0 成功,非 0 失败\n "} \ No newline at end of file diff --git a/.transpyc_cache/a5407d80d9f015ed.pyi b/.transpyc_cache/a5407d80d9f015ed.pyi deleted file mode 100644 index ad12e1f..0000000 --- a/.transpyc_cache/a5407d80d9f015ed.pyi +++ /dev/null @@ -1,39 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Phase2.py -Module: lib.core.Phase2 -""" - - -import t, c -from stdint import * -import stdio -import string -import stdlib -import memhub -import viperlib -import w32.fileio as fileio -import w32.win32file -import w32.win32base -import sys -import ast -import llvmlite -import subprocess -import argparse -import lib.core.VLogger as VLogger -import lib.core.Handles.HandlesTranslator as HandlesTranslator -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.BuildPipeline as BuildPipeline -import lib.core.StubMerger as StubMerger -import lib.Projectrans.Utils as Utils -import lib.Projectrans.Config as Config - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -SRC_BUF_SIZE: t.CDefine = 1048576 -MAX_SRC_FILES: t.CDefine = 32 - -@t.NoVTable -class SrcFileEntry: - Path: str - Sha1: str - -def RunMultiFileProject(mb: memhub.MemBuddy | t.CPtr, source_dir: str, temp_dir: str, output_dir: str, cc_cmd: str, cc_flags: str, linker_cmd: str, linker_flags: str, linker_output: str, includes_binary_dir: str, includes_dir: str, do_phase1: int, do_phase2: int, log: VLogger.Logger | t.CPtr, args: argparse.ParsedArgs | t.CPtr) -> int: pass diff --git a/.transpyc_cache/a68b70f233541a7f.pyi b/.transpyc_cache/a68b70f233541a7f.pyi deleted file mode 100644 index 3cb3a02..0000000 --- a/.transpyc_cache/a68b70f233541a7f.pyi +++ /dev/null @@ -1,44 +0,0 @@ -""" -Auto-generated Python stub file from os._win32.py -Module: os._win32 -""" - - -import t, c -from stdint import * -import w32.win32base -import w32.win32file -import memhub -import stdlib - -MAX_PATH_LEN: t.CDefine = 260 -INVALID_FILE_ATTRIBUTES: t.CDefine = 0xFFFFFFFF -_mbuddy: t.CExtern | memhub.MemBuddy | t.CPtr - -def _get_attrs(path: str) -> ULONG: pass - -def exists(path: str) -> bool: pass - -def isdir(path: str) -> bool: pass - -def isfile(path: str) -> bool: pass - -def getsize(path: str) -> t.CInt64T: pass - -def getcwd() -> str: pass - -def chdir(path: str) -> int: pass - -def mkdir(path: str) -> int: pass - -def remove(path: str) -> int: pass - -def rmdir(path: str) -> int: pass - -def rename(old_path: str, new_path: str) -> int: pass - -def chmod(path: str, mode: int) -> int: pass - -def listdir(path: str, out_names: str, max_count: ULONG) -> ULONG: pass - -def system(cmd: str) -> int: pass diff --git a/.transpyc_cache/a6972611852b8a4e.doc.json b/.transpyc_cache/a6972611852b8a4e.doc.json deleted file mode 100644 index c00e036..0000000 --- a/.transpyc_cache/a6972611852b8a4e.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数\n\n 直接接收三个 Value 参数,避免通过 Next 链表遍历(共享 alloca 对象的\n Next 字段可能被其他操作污染,导致链表断裂)。\n ", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/a6972611852b8a4e.pyi b/.transpyc_cache/a6972611852b8a4e.pyi deleted file mode 100644 index 40c3168..0000000 --- a/.transpyc_cache/a6972611852b8a4e.pyi +++ /dev/null @@ -1,171 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, dst_val: llvmlite.Value | t.CPtr, src_val: llvmlite.Value | t.CPtr, num_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/a6a3e195cd7dd0b4.doc.json b/.transpyc_cache/a6a3e195cd7dd0b4.doc.json deleted file mode 100644 index 56e8c7e..0000000 --- a/.transpyc_cache/a6a3e195cd7dd0b4.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"RunPhase1": "Phase1: 扫描 includes 目录,按需翻译并生成 stub"} \ No newline at end of file diff --git a/.transpyc_cache/a6a3e195cd7dd0b4.pyi b/.transpyc_cache/a6a3e195cd7dd0b4.pyi deleted file mode 100644 index d866b3e..0000000 --- a/.transpyc_cache/a6a3e195cd7dd0b4.pyi +++ /dev/null @@ -1,31 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Phase1.py -Module: lib.core.Phase1 -""" - - -import t, c -from stdint import * -import stdio -import string -import stdlib -import memhub -import viperlib -import w32.fileio as fileio -import w32.win32file -import w32.win32base -import ast -import llvmlite -import lib.core.VLogger as VLogger -import lib.core.Handles.HandlesTranslator as HandlesTranslator -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.IncludesScanner as IncludesScanner -import lib.core.StubMerger as StubMerger -import lib.Projectrans.Config as Config - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -SRC_BUF_SIZE: t.CDefine = 1048576 - -def RunPhase1(mb: memhub.MemBuddy | t.CPtr, includes_dir: str, temp_dir: str, log: VLogger.Logger | t.CPtr) -> int: pass diff --git a/.transpyc_cache/a711c9c66fd7c6ca.doc.json b/.transpyc_cache/a711c9c66fd7c6ca.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/a711c9c66fd7c6ca.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/a711c9c66fd7c6ca.pyi b/.transpyc_cache/a711c9c66fd7c6ca.pyi deleted file mode 100644 index 213e2c8..0000000 --- a/.transpyc_cache/a711c9c66fd7c6ca.pyi +++ /dev/null @@ -1,20 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - - -from stdint import * -import w32.win32console -import t, c -from t import CInt, CExport -import stdio -import stdlib -import string -import testcheck - -def bump_true(buf: bytes) -> bool: pass - -def bump_false(buf: bytes) -> bool: pass - -def main() -> CInt | CExport: pass diff --git a/.transpyc_cache/a7cf0ce4066332ae.doc.json b/.transpyc_cache/a7cf0ce4066332ae.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/a7cf0ce4066332ae.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/a7cf0ce4066332ae.pyi b/.transpyc_cache/a7cf0ce4066332ae.pyi deleted file mode 100644 index 3042835..0000000 --- a/.transpyc_cache/a7cf0ce4066332ae.pyi +++ /dev/null @@ -1,44 +0,0 @@ -""" -Auto-generated Python stub file from opovl_test.py -Module: opovl_test -""" - - -import stdio -import stdlib -import t, c -import testcheck - -class Counter: - val: t.CInt - def __init__(self: Counter, v: t.CInt) -> t.CInt: pass - def __add__(self: Counter, n: t.CInt) -> t.CInt: pass - def __sub__(self: Counter, n: t.CInt) -> t.CInt: pass - def __mul__(self: Counter, n: t.CInt) -> t.CInt: pass - def __div__(self: Counter, n: t.CInt) -> t.CInt: pass - def __mod__(self: Counter, n: t.CInt) -> t.CInt: pass - def __eq__(self: Counter, n: t.CInt) -> t.CInt: pass - def __ne__(self: Counter, n: t.CInt) -> t.CInt: pass - def __lt__(self: Counter, n: t.CInt) -> t.CInt: pass - def __le__(self: Counter, n: t.CInt) -> t.CInt: pass - def __gt__(self: Counter, n: t.CInt) -> t.CInt: pass - def __ge__(self: Counter, n: t.CInt) -> t.CInt: pass -class BitBox: - flags: t.CInt - def __init__(self: BitBox, v: t.CInt) -> t.CInt: pass - def __and__(self: BitBox, mask: t.CInt) -> t.CInt: pass - def __or__(self: BitBox, mask: t.CInt) -> t.CInt: pass - def __xor__(self: BitBox, mask: t.CInt) -> t.CInt: pass - def __lshift__(self: BitBox, n: t.CInt) -> t.CInt: pass - def __rshift__(self: BitBox, n: t.CInt) -> t.CInt: pass -class Vec2: - x: t.CInt - y: t.CInt - def __new__(self: Vec2, x0: t.CInt, y0: t.CInt) -> t.CInt: pass - def __init__(self: Vec2, x0: t.CInt, y0: t.CInt) -> t.CInt: pass - def __add__(self: Vec2, other: Vec2 | t.CPtr) -> Vec2 | t.CPtr: pass - def __sub__(self: Vec2, other: Vec2 | t.CPtr) -> Vec2 | t.CPtr: pass - def __eq__(self: Vec2, other: Vec2 | t.CPtr) -> t.CInt: pass - def __ne__(self: Vec2, other: Vec2 | t.CPtr) -> t.CInt: pass - -def opovl_test() -> int: pass diff --git a/.transpyc_cache/a9ad5e41081c9377.doc.json b/.transpyc_cache/a9ad5e41081c9377.doc.json deleted file mode 100644 index 47b20d9..0000000 --- a/.transpyc_cache/a9ad5e41081c9377.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_get_external_func_param_ty": "获取外部函数第 param_idx 个参数的期望类型,None 表示用字面量原类型\n\n 对 Win32 API 函数的所有非指针参数返回 i64,匹配 declare 中\n ULONG/SIZE_T 被统一翻译为 i64 的情况。\n ", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数\n\n 直接接收三个 Value 参数,避免通过 Next 链表遍历(共享 alloca 对象的\n Next 字段可能被其他操作污染,导致链表断裂)。\n ", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/a9ad5e41081c9377.pyi b/.transpyc_cache/a9ad5e41081c9377.pyi deleted file mode 100644 index 5214419..0000000 --- a/.transpyc_cache/a9ad5e41081c9377.pyi +++ /dev/null @@ -1,173 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _get_external_func_param_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str, param_idx: int) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, dst_val: llvmlite.Value | t.CPtr, src_val: llvmlite.Value | t.CPtr, num_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/a9b97a11bf30daa0.doc.json b/.transpyc_cache/a9b97a11bf30daa0.doc.json deleted file mode 100644 index 67e7a8b..0000000 --- a/.transpyc_cache/a9b97a11bf30daa0.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_DiagAppend": "追加诊断信息到 diag.txt(追加模式,不依赖 printf 缓冲)", "TranslateFileGetTrans": "翻译文件,返回 Translator 对象(调用者负责 dump_ir),None 失败", "ensure_dir": "递归创建目录(类似 mkdir -p),目录已存在视为成功\n\n Args:\n path: 目录路径(支持 / 或 \\ 分隔符)\n\n Returns:\n 0 成功(包括目录已存在),非 0 失败\n ", "write_ir_to_file": "将 IR 缓冲区写入 .ll 文件\n\n Args:\n ir_buf: IR 文本缓冲区\n ir_len: IR 文本长度\n output_dir: 输出目录(temp 或 output)\n module_name: 模块名(如 \"main\")\n\n Returns:\n 0 成功,非 0 失败\n ", "compile_ll_to_obj": "调用 llc 将 .ll 编译为 .obj\n\n Args:\n ir_path: .ll 文件路径\n output_dir: 输出目录\n module_name: 模块名(用于生成 .obj 文件名)\n cc_cmd: 编译器命令(如 \"llc\")\n cc_flags: 编译器参数(如 \"-filetype=obj -relocation-model=pic\")\n\n Returns:\n 0 成功,非 0 失败\n ", "collect_obj_files": "扫描 includes_binary_dir 目录,收集所有 .obj 文件路径到 out_buf\n\n Args:\n includes_binary_dir: includes.binary 目录路径\n out_buf: 输出缓冲区(用于存放空格分隔的 .obj 文件路径)\n out_size: 输出缓冲区大小\n\n Returns:\n 写入的字节数(不含 null 终止符),0 表示无文件或错误\n ", "link_obj_to_exe": "调用 clang++ 链接 .obj 为 .exe\n\n Args:\n output_dir: 输出目录(包含 .obj 文件)\n module_name: 模块名\n linker_cmd: 链接器命令(如 \"clang++\")\n linker_flags: 链接器参数\n linker_output: 输出文件名(如 \"test.exe\")\n includes_binary_dir: includes.binary 目录路径(链接时附加预编译 .obj)\n\n Returns:\n 0 成功,非 0 失败\n ", "compile_module_to_obj": "编译 IR 到 .obj(不链接)\n\n Args:\n ir_buf: LLVM IR 文本缓冲区\n ir_len: IR 文本长度\n temp_dir: 临时目录\n output_dir: 输出目录\n module_name: 模块名(SHA1)\n cc_cmd: 编译器命令\n cc_flags: 编译器参数\n\n Returns:\n 0 成功,非 0 失败\n ", "link_objs_to_exe": "链接多个 .obj 文件为 .exe\n\n Args:\n obj_paths: 空格分隔的 .obj 文件完整路径字符串\n obj_paths_len: obj_paths 长度\n linker_cmd: 链接器命令(如 \"clang++\")\n linker_flags: 链接器参数\n linker_output: 输出文件完整路径\n includes_binary_dir: includes.binary 目录路径(链接时附加预编译 .obj)\n\n Returns:\n 0 成功,非 0 失败\n ", "run_pipeline": "执行完整编译管线\n\n Args:\n ir_buf: LLVM IR 文本缓冲区\n ir_len: IR 文本长度\n temp_dir: 临时目录\n output_dir: 输出目录\n module_name: 模块名\n cc_cmd: 编译器命令\n cc_flags: 编译器参数\n linker_cmd: 链接器命令\n linker_flags: 链接器参数\n linker_output: 输出文件名\n includes_binary_dir: includes.binary 目录路径(链接时附加预编译 .obj)\n\n Returns:\n BuildResult 对象\n "} \ No newline at end of file diff --git a/.transpyc_cache/a9b97a11bf30daa0.pyi b/.transpyc_cache/a9b97a11bf30daa0.pyi deleted file mode 100644 index 9d8b33e..0000000 --- a/.transpyc_cache/a9b97a11bf30daa0.pyi +++ /dev/null @@ -1,52 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.BuildPipeline.py -Module: lib.core.BuildPipeline -""" - - -import t, c -from stdint import * -import stdio -import string -import stdlib -import memhub -import w32.fileio as fileio -import w32.win32file -import w32.win32base -import subprocess -import viperlib -import ast -import lib.core.Handles.HandlesTranslator as HandlesTranslator -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesType as HandlesType - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -SRC_BUF_SIZE: t.CDefine = 1048576 - -def _DiagAppend(msg: bytes) -> t.CInt: pass - -def TranslateFileGetTrans(mb: memhub.MemBuddy | t.CPtr, file_path: str, sha1_val: str) -> HandlesTranslator.Translator | t.CPtr: pass - - -class BuildResult: - Success: t.CInt - OutputPath: str - ErrorMsg: str - def __new__(self: BuildResult) -> t.CPtr: pass - def __init__(self: BuildResult) -> t.CInt: pass - -def ensure_dir(path: str) -> int: pass - -def write_ir_to_file(ir_buf: bytes, ir_len: t.CSizeT, output_dir: str, module_name: str) -> int: pass - -def compile_ll_to_obj(ir_path: str, output_dir: str, module_name: str, cc_cmd: str, cc_flags: str) -> int: pass - -def collect_obj_files(includes_binary_dir: str, out_buf: bytes, out_size: t.CSizeT) -> t.CSizeT: pass - -def link_obj_to_exe(output_dir: str, module_name: str, linker_cmd: str, linker_flags: str, linker_output: str, includes_binary_dir: str) -> int: pass - -def compile_module_to_obj(ir_buf: bytes, ir_len: t.CSizeT, temp_dir: str, output_dir: str, module_name: str, cc_cmd: str, cc_flags: str) -> int: pass - -def link_objs_to_exe(obj_paths: str, obj_paths_len: t.CSizeT, linker_cmd: str, linker_flags: str, linker_output: str, includes_binary_dir: str) -> int: pass - -def run_pipeline(ir_buf: bytes, ir_len: t.CSizeT, temp_dir: str, output_dir: str, module_name: str, cc_cmd: str, cc_flags: str, linker_cmd: str, linker_flags: str, linker_output: str, includes_binary_dir: str) -> BuildResult | t.CPtr: pass diff --git a/.transpyc_cache/a9df037d9178888f.doc.json b/.transpyc_cache/a9df037d9178888f.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/a9df037d9178888f.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/a9df037d9178888f.pyi b/.transpyc_cache/a9df037d9178888f.pyi deleted file mode 100644 index 4b413d7..0000000 --- a/.transpyc_cache/a9df037d9178888f.pyi +++ /dev/null @@ -1,31 +0,0 @@ -""" -Auto-generated Python stub file from func_vtable_test.py -Module: func_vtable_test -""" - - -import stdio -import t, c - -@t.NoVTable -class NoVTableClass: - val: t.CInt - def __init__(self: NoVTableClass, v: t.CInt) -> t.CInt: pass - @t.CVTable - def VirtualMethod(self: NoVTableClass) -> t.CInt: pass - def NormalMethod(self: NoVTableClass) -> t.CInt: pass -@t.CVTable -class CVTableClass: - val: t.CInt - def __init__(self: CVTableClass, v: t.CInt) -> t.CInt: pass - def KeptMethod(self: CVTableClass) -> t.CInt: pass - @t.NoVTable - def ExcludedMethod(self: CVTableClass) -> t.CInt: pass -class DefaultClass: - val: t.CInt - def __init__(self: DefaultClass, v: t.CInt) -> t.CInt: pass - @t.CVTable - def VirtualMethod(self: DefaultClass) -> t.CInt: pass - def NormalMethod(self: DefaultClass) -> t.CInt: pass - -def func_vtable_test() -> int: pass diff --git a/.transpyc_cache/aba439b7882ad9d6.pyi b/.transpyc_cache/aba439b7882ad9d6.pyi deleted file mode 100644 index 124ce31..0000000 --- a/.transpyc_cache/aba439b7882ad9d6.pyi +++ /dev/null @@ -1,67 +0,0 @@ -""" -Auto-generated Python stub file from argparse.py -Module: argparse -""" - - -import t, c -from stdint import * -import string -import memhub -import stdio -import hashtable - -STRING: t.CDefine = 0 -INT: t.CDefine = 1 -BOOL: t.CDefine = 2 -STORE: t.CDefine = 0 -STORE_TRUE: t.CDefine = 1 -STORE_FALSE: t.CDefine = 2 -COUNT: t.CDefine = 3 -MAX_ARGS: t.CDefine = 32 -_mbuddy: t.CExtern | memhub.MemBuddy | t.CPtr - -class Argument: - name: str - short_name: str - help_text: str - arg_type: INT - action: INT - default_int: INT - default_str: str - required: bool - is_positional: bool - dest: str -class ParsedArgs: - _ht: hashtable.HashTable | t.CPtr - __mbuddy__: memhub.MemBuddy | t.CPtr - def __new__(self: ParsedArgs, mb: memhub.MemBuddy | t.CPtr) -> t.CPtr: pass - def __init__(self: ParsedArgs, mb: memhub.MemBuddy | t.CPtr) -> t.CInt: pass - def get_str(self: ParsedArgs, name: str) -> str: pass - def get_int(self: ParsedArgs, name: str) -> INT: pass - def get_bool(self: ParsedArgs, name: str) -> INT: pass - def has(self: ParsedArgs, name: str) -> bool: pass - def _set_str(self: ParsedArgs, name: str, val: str) -> t.CInt: pass - def _set_int(self: ParsedArgs, name: str, val: INT) -> t.CInt: pass - def _set_bool(self: ParsedArgs, name: str, val: bool) -> t.CInt: pass -class ArgumentParser: - _prog: str - _description: str - _args: Argument | t.CPtr - _arg_count: INT - __mbuddy__: memhub.MemBuddy | t.CPtr - def __new__(self: ArgumentParser, prog: str, description: str, pool: memhub.MemBuddy | t.CPtr) -> t.CPtr: pass - def __init__(self: ArgumentParser, prog: str, description: str, pool: memhub.MemBuddy | t.CPtr) -> t.CInt: pass - def add_argument(self: ArgumentParser, name: str, short: str, arg_type: INT, default: INT, default_str: str, required: bool, action: INT, help: str) -> t.CInt: pass - def _get_arg(self: ArgumentParser, idx: INT) -> Argument | t.CPtr: pass - def _find_long(self: ArgumentParser, token: str) -> INT: pass - def _find_long_prefix(self: ArgumentParser, token: str) -> INT: pass - def _find_short(self: ArgumentParser, token: str) -> INT: pass - def _find_positional(self: ArgumentParser, pos_idx: INT) -> INT: pass - def _store_value(self: ArgumentParser, args: ParsedArgs | t.CPtr, arg: Argument | t.CPtr, value: str) -> t.CInt: pass - def _apply_action(self: ArgumentParser, args: ParsedArgs | t.CPtr, arg: Argument | t.CPtr) -> t.CInt: pass - def parse_args(self: ArgumentParser, argc: INT, argv: str | t.CPtr) -> ParsedArgs | t.CPtr: pass - def print_help(self: ArgumentParser) -> t.CInt: pass - def print_usage(self: ArgumentParser) -> t.CInt: pass - -def release(args: ParsedArgs | t.CPtr) -> t.CInt: pass diff --git a/.transpyc_cache/abbcbd92436cc16a.pyi b/.transpyc_cache/abbcbd92436cc16a.pyi deleted file mode 100644 index 9a57653..0000000 --- a/.transpyc_cache/abbcbd92436cc16a.pyi +++ /dev/null @@ -1,41 +0,0 @@ -""" -Auto-generated Python stub file from shutil.py -Module: shutil -""" - - -import t, c -from stdint import * -import platmacro -import memhub -import string -import w32.win32base -import w32.win32file -import posix - -COPY_BUF_SIZE: t.CDefine = 65536 -_mbuddy: t.CExtern | memhub.MemBuddy | t.CPtr - -def copyfile(src: str, dst: str) -> int: pass - -def _copyfile_win32(src: str, dst: str) -> int: pass - -def _copyfile_posix(src: str, dst: str) -> int: pass - -def copy(src: str, dst: str) -> int: pass - -def _copy_win32(src: str, dst: str) -> int: pass - -def _copy_posix(src: str, dst: str) -> int: pass - -def rmtree(path: str) -> int: pass - -def _rmtree_win32(path: str) -> int: pass - -def _rmtree_posix(path: str) -> int: pass - -def move(src: str, dst: str) -> int: pass - -def _move_win32(src: str, dst: str) -> int: pass - -def _move_posix(src: str, dst: str) -> int: pass diff --git a/.transpyc_cache/ac0d686cb2cc783b.doc.json b/.transpyc_cache/ac0d686cb2cc783b.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/ac0d686cb2cc783b.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/ac0d686cb2cc783b.pyi b/.transpyc_cache/ac0d686cb2cc783b.pyi deleted file mode 100644 index 7b2670f..0000000 --- a/.transpyc_cache/ac0d686cb2cc783b.pyi +++ /dev/null @@ -1,73 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - -import c - - -import t -import t as tt -import stdio -import testcheck -from t import CEnum as en -from t import CUnion as un -from t import REnum as ren -from t import CStruct as cs -from t import CInt as myint -from t import CChar, CPtr - -class Color(en): - Red = 0 - Green = 1 - Blue = 2 -class Status(tt.CEnum): - Ok = 0 - Error = 1 -class Data(un): - i_val: t.CInt - f_val: t.CFloat -class Opt(ren): - class Some: - val: myint - None_ = 0 -class Parent: - a: t.CInt - def get_a(self: Parent) -> t.CInt: pass -class Child(Parent): - b: t.CInt - def get_sum(self: Child) -> t.CInt: pass -class Base: - x: t.CInt - def base_val(self: Base) -> t.CInt: pass -class Mid(Base): - y: t.CInt - def mid_val(self: Mid) -> t.CInt: pass -class Leaf(Mid): - z: t.CInt - def leaf_val(self: Leaf) -> t.CInt: pass - -val: t.CExtern | myint - -class NetHeader: - magic: t.CInt | t.BigEndian - length: t.CShort | t.BigEndian - normal: t.CInt -class TtPoint(tt.CStruct): - x: t.CInt - y: t.CInt -@tt.Object -class TtObject: - val: t.CInt - def get_val(self: TtObject) -> t.CInt: pass -class CsPoint(cs): - x: t.CInt - y: t.CInt -class TtUnion(tt.CUnion): - a: t.CInt - b: t.CFloat -@tt.Object -class TtEmptyObject: - val: t.CInt - -def main() -> t.CInt: pass diff --git a/.transpyc_cache/aca085940d1ca494.doc.json b/.transpyc_cache/aca085940d1ca494.doc.json deleted file mode 100644 index 47b20d9..0000000 --- a/.transpyc_cache/aca085940d1ca494.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_get_external_func_param_ty": "获取外部函数第 param_idx 个参数的期望类型,None 表示用字面量原类型\n\n 对 Win32 API 函数的所有非指针参数返回 i64,匹配 declare 中\n ULONG/SIZE_T 被统一翻译为 i64 的情况。\n ", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数\n\n 直接接收三个 Value 参数,避免通过 Next 链表遍历(共享 alloca 对象的\n Next 字段可能被其他操作污染,导致链表断裂)。\n ", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/aca085940d1ca494.pyi b/.transpyc_cache/aca085940d1ca494.pyi deleted file mode 100644 index 5214419..0000000 --- a/.transpyc_cache/aca085940d1ca494.pyi +++ /dev/null @@ -1,173 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _get_external_func_param_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str, param_idx: int) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, dst_val: llvmlite.Value | t.CPtr, src_val: llvmlite.Value | t.CPtr, num_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/ae0cc890f657076d.doc.json b/.transpyc_cache/ae0cc890f657076d.doc.json deleted file mode 100644 index 0d6dd61..0000000 --- a/.transpyc_cache/ae0cc890f657076d.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"get_func_name": "从函数节点提取函数名", "escape_llvm_string": "将字符串转换为 LLVM IR 字符串字面量 c\"...\\00\" ", "get_llvm_type_bits": "获取 LLVM 整数类型的位宽,非整数类型返回 0", "get_llvm_float_bits": "获取 LLVM 浮点类型的位宽,非浮点类型返回 0", "is_ptr_type": "检查 ty 是否是 Ptr 类型,返回 1=是, 0=否", "_deref_if_ptr_ptr": "如果 obj_ptr 是 Ptr(Ptr(...)),load 解引用获取内层指针", "coerce_to_type": "将 val 强制转换为 target_ty\n\n 整数: sext(扩展)/ trunc(截断)\n 浮点: fpext(扩展)/ fptrunc(截断)\n int→float: sitofp\n float→int: fptosi\n ", "create_global_string": "创建全局字符串常量并返回 i8* bitcast", "translate_constant": "翻译常量(int/str/bool)", "_infer_elem_type_from_value": "从 LLVM Value 的类型推断 list 元素类型名", "_find_pool_var": "查找上下文中的 pool 变量,返回 alloca 或 None", "translate_list_literal": "翻译 list 字面量 [a, b, c] → list[T](pool) + append 序列", "translate_value": "翻译值表达式为 LLVM Value", "translate_compare": "翻译比较表达式,返回 i1 结果", "translate_unaryop": "翻译一元运算(-x, +x, not x, ~x)", "translate_boolop": "翻译布尔运算(and/or)的短路求值,返回 i1", "translate_name_value": "翻译变量引用(Name 节点)→ load", "ExprHandle": "表达式处理器:继承 Mixin 获得 Trans 回指针", "ExprHandle.HandleValue": "翻译值表达式,从 self.Trans 获取共享状态", "list_getitem_inline": "内联生成 list __getitem__ 逻辑,返回元素地址 (i8*)", "_list_elem_type_from_name": "从 list 类型名提取元素 LLVM 类型", "list_setitem_inline": "内联生成 list __setitem__ 逻辑,返回 0", "is_list_subscript": "检查 Subscript 节点是否是 list[T] 类型,返回 list 对象指针或 None", "translate_subscript": "翻译下标表达式,返回加载的元素值", "find_global_in_module": "在模块全局变量链表中按名称查找全局变量", "make_global_ref": "创建全局变量引用 (类型为 ty*,名称为 @name)", "_resolve_module_attribute_global": "解析模块属性访问,返回全局变量引用 (用于跨模块 global 访问)", "translate_attribute": "翻译属性访问,返回加载的字段值", "get_subscript_ptr": "获取下标表达式的元素指针(用于赋值 lhs)", "get_attribute_ptr": "获取属性访问的字段指针(用于赋值 lhs)"} \ No newline at end of file diff --git a/.transpyc_cache/ae0cc890f657076d.pyi b/.transpyc_cache/ae0cc890f657076d.pyi deleted file mode 100644 index 2cb20be..0000000 --- a/.transpyc_cache/ae0cc890f657076d.pyi +++ /dev/null @@ -1,88 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExpr.py -Module: lib.core.Handles.HandlesExpr -""" - - -import t, c -from stdint import * -import ast -import memhub -import string -import llvmlite -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesExprOps as HandlesExprOps -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.Handles.HandlesNonlocal as HandlesNonlocal -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesEnum as HandlesEnum -import lib.core.Handles.HandlesClassDef as HandlesClassDef -import lib.core.Handles.HandlesImports as HandlesImports - -def get_func_name(func_node: ast.AST | t.CPtr) -> str: pass - -def escape_llvm_string(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def get_llvm_type_bits(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def get_llvm_float_bits(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def is_ptr_type(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def _deref_if_ptr_ptr(builder: llvmlite.IRBuilder | t.CPtr, obj_ptr: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def coerce_to_type(builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def create_global_string(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, str_val: str, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_constant(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_elem_type_from_value(pool: memhub.MemBuddy | t.CPtr, value: llvmlite.Value | t.CPtr) -> str: pass - -def _find_pool_var(trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_list_literal(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, elem_type_name: str, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_value(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_compare(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_unaryop(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_boolop(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_name_value(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -@t.NoVTable -class ExprHandle(HandlesBase.Mixin): - def __init__(self: ExprHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleValue(self: ExprHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def NewExprHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprHandle | t.CPtr: pass - -def list_getitem_inline(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, lm_obj: llvmlite.Value | t.CPtr, idx_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _list_elem_type_from_name(pool: memhub.MemBuddy | t.CPtr, struct_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def list_setitem_inline(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, lm_obj: llvmlite.Value | t.CPtr, idx_val: llvmlite.Value | t.CPtr, rhs_val: llvmlite.Value | t.CPtr) -> int: pass - -def is_list_subscript(node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_subscript(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def find_global_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.GlobalVariable | t.CPtr: pass - -def make_global_ref(pool: memhub.MemBuddy | t.CPtr, name: str, ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _resolve_module_attribute_global(pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, trans: HT.Translator | t.CPtr, at: ast.Attribute | t.CPtr, ty_hint: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_attribute(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def get_subscript_ptr(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def get_attribute_ptr(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass diff --git a/.transpyc_cache/ae1e8a6903834d9c.doc.json b/.transpyc_cache/ae1e8a6903834d9c.doc.json deleted file mode 100644 index c00e036..0000000 --- a/.transpyc_cache/ae1e8a6903834d9c.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数\n\n 直接接收三个 Value 参数,避免通过 Next 链表遍历(共享 alloca 对象的\n Next 字段可能被其他操作污染,导致链表断裂)。\n ", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/ae1e8a6903834d9c.pyi b/.transpyc_cache/ae1e8a6903834d9c.pyi deleted file mode 100644 index 40c3168..0000000 --- a/.transpyc_cache/ae1e8a6903834d9c.pyi +++ /dev/null @@ -1,171 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, dst_val: llvmlite.Value | t.CPtr, src_val: llvmlite.Value | t.CPtr, num_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/aeb670958072076e.pyi b/.transpyc_cache/aeb670958072076e.pyi deleted file mode 100644 index a953d5c..0000000 --- a/.transpyc_cache/aeb670958072076e.pyi +++ /dev/null @@ -1,33 +0,0 @@ -""" -Auto-generated Python stub file from ast.visitor.py -Module: ast.visitor -""" - - -import t, c -from stdint import * -import memhub -import string -from .base import AST, ASTKind - -@t.CVTable -class ASTVisitor: - pool: memhub.MemManager | t.CPtr - def __new__(self: ASTVisitor, pool: memhub.MemManager | t.CPtr) -> t.CInt: pass - def __init__(self: ASTVisitor, pool: memhub.MemManager | t.CPtr) -> t.CInt: pass - def visit(self: ASTVisitor, node: AST | t.CPtr) -> t.CInt: pass - def visit_Module(self: ASTVisitor, node: AST | t.CPtr) -> t.CInt: pass - def visit_FunctionDef(self: ASTVisitor, node: AST | t.CPtr) -> t.CInt: pass - def visit_Assign(self: ASTVisitor, node: AST | t.CPtr) -> t.CInt: pass - def visit_If(self: ASTVisitor, node: AST | t.CPtr) -> t.CInt: pass - def visit_For(self: ASTVisitor, node: AST | t.CPtr) -> t.CInt: pass - def visit_While(self: ASTVisitor, node: AST | t.CPtr) -> t.CInt: pass - def visit_Return(self: ASTVisitor, node: AST | t.CPtr) -> t.CInt: pass - def visit_Expr(self: ASTVisitor, node: AST | t.CPtr) -> t.CInt: pass - def visit_Name(self: ASTVisitor, node: AST | t.CPtr) -> t.CInt: pass - def visit_Constant(self: ASTVisitor, node: AST | t.CPtr) -> t.CInt: pass - def visit_BinOp(self: ASTVisitor, node: AST | t.CPtr) -> t.CInt: pass - def visit_UnaryOp(self: ASTVisitor, node: AST | t.CPtr) -> t.CInt: pass - def visit_Call(self: ASTVisitor, node: AST | t.CPtr) -> t.CInt: pass - def visit_Compare(self: ASTVisitor, node: AST | t.CPtr) -> t.CInt: pass - def visit_generic(self: ASTVisitor, node: AST | t.CPtr) -> t.CInt: pass \ No newline at end of file diff --git a/.transpyc_cache/aeb8034bdb2b370b.doc.json b/.transpyc_cache/aeb8034bdb2b370b.doc.json deleted file mode 100644 index c00e036..0000000 --- a/.transpyc_cache/aeb8034bdb2b370b.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数\n\n 直接接收三个 Value 参数,避免通过 Next 链表遍历(共享 alloca 对象的\n Next 字段可能被其他操作污染,导致链表断裂)。\n ", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/aeb8034bdb2b370b.pyi b/.transpyc_cache/aeb8034bdb2b370b.pyi deleted file mode 100644 index 40c3168..0000000 --- a/.transpyc_cache/aeb8034bdb2b370b.pyi +++ /dev/null @@ -1,171 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, dst_val: llvmlite.Value | t.CPtr, src_val: llvmlite.Value | t.CPtr, num_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/af9484a65085bf4b.doc.json b/.transpyc_cache/af9484a65085bf4b.doc.json deleted file mode 100644 index 2fbc2fa..0000000 --- a/.transpyc_cache/af9484a65085bf4b.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"get_env_ptr_var": "获取或创建 _env_ptr 变量(存储闭包 env 指针)", "load_nonlocal_var": "从闭包 env 加载 nonlocal 变量值(env 直接存储 i32 值)", "get_nonlocal_var_ptr": "获取 nonlocal 变量在 env 中的地址(i32*),用于 store 操作"} \ No newline at end of file diff --git a/.transpyc_cache/af9484a65085bf4b.pyi b/.transpyc_cache/af9484a65085bf4b.pyi deleted file mode 100644 index 3d49af5..0000000 --- a/.transpyc_cache/af9484a65085bf4b.pyi +++ /dev/null @@ -1,21 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesNonlocal.py -Module: lib.core.Handles.HandlesNonlocal -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesVar as HandlesVar - -def get_env_ptr_var(trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def load_nonlocal_var(trans: HT.Translator | t.CPtr, name: str) -> llvmlite.Value | t.CPtr: pass - -def get_nonlocal_var_ptr(trans: HT.Translator | t.CPtr, name: str) -> llvmlite.Value | t.CPtr: pass diff --git a/.transpyc_cache/b1122357fee8fd68.doc.json b/.transpyc_cache/b1122357fee8fd68.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/b1122357fee8fd68.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/b1122357fee8fd68.pyi b/.transpyc_cache/b1122357fee8fd68.pyi deleted file mode 100644 index 97850c4..0000000 --- a/.transpyc_cache/b1122357fee8fd68.pyi +++ /dev/null @@ -1,36 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - -import c - - -import t -from stdio import printf -import testcheck - -@t.CStruct -class Point: - x: t.CInt - y: t.CInt -@t.CEnum -class Color: - RED = 1 - GREEN = 2 - BLUE = 3 -@t.CUnion -class Data: - i: t.CInt - f: t.CFloat - -@t.CExport -def test() -> t.CInt: pass - -@t.CStatic -def static_func() -> t.CInt: pass - -@t.CStatic -def mixed_func() -> t.CInt | t.CExport: pass - -def main() -> t.CInt: pass diff --git a/.transpyc_cache/b235d6477436c524.doc.json b/.transpyc_cache/b235d6477436c524.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/b235d6477436c524.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/b235d6477436c524.pyi b/.transpyc_cache/b235d6477436c524.pyi deleted file mode 100644 index fa0bd7d..0000000 --- a/.transpyc_cache/b235d6477436c524.pyi +++ /dev/null @@ -1,131 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - - -from stdint import * -import w32.win32console -import t, c -from t import CInt, CPtr, CChar, CInt32T, CUInt64T, CFloat64T, CExport, State -import viperlib -import stdlib -import definetest -import enumtest -import mpooltest -import vectortest -import fileiotest -import testcheck - -def add[T](a: T, b: T) -> T: pass - -def add_u64[T](a: T, b: T, c: CUInt64T) -> T: pass - -def fxi[T1, T2](a: T1, b: T2) -> T1: pass - -def fxi2[T1, T2, T3](a: T1, b: T2, c: T3) -> T1: pass - -def wrap_add[T](a: T, b: T) -> T: pass - -def double_add[T](a: T, b: T) -> T: pass - - -class A[T]: - def __init__(self: A, a: T) -> t.CInt: pass - def get_a(self: A) -> T: pass -class Pair[T1, T2]: - def __init__(self: Pair, first: T1, second: T2) -> t.CInt: pass - def get_first(self: Pair) -> T1: pass - def get_second(self: Pair) -> T2: pass -class Calculator[T]: - def __init__(self: Calculator, init_val: T) -> t.CInt: pass - def compute(self: Calculator, other: T) -> T: pass - def double_compute(self: Calculator, other: T) -> T: pass -class Container[T]: - def __init__(self: Container, v: T) -> t.CInt: pass - def get_value(self: Container) -> T: pass - def get_flag(self: Container) -> CInt32T: pass -@t.CVTable -class Shape: - def __init__(self: Shape, x: CFloat64T, y: CFloat64T) -> t.CInt: pass - def area(self: Shape) -> CFloat64T: pass - def perimeter(self: Shape) -> CFloat64T: pass - def describe(self: Shape) -> CFloat64T: pass -@t.CVTable -class Circle(Shape): - def __init__(self: Circle, x: CFloat64T, y: CFloat64T, r: CFloat64T) -> t.CInt: pass - def area(self: Circle) -> CFloat64T: pass - def perimeter(self: Circle) -> CFloat64T: pass - def scale(self: Circle, factor: CFloat64T) -> 'Circle' | CPtr: pass - def move(self: Circle, dx: CFloat64T, dy: CFloat64T) -> 'Circle' | CPtr: pass -@t.CVTable -class Rect(Shape): - def __init__(self: Rect, x: CFloat64T, y: CFloat64T, w: CFloat64T, h: CFloat64T) -> t.CInt: pass - def area(self: Rect) -> CFloat64T: pass - def perimeter(self: Rect) -> CFloat64T: pass - def scale(self: Rect, factor: CFloat64T) -> 'Rect' | CPtr: pass -class Vec2: - x: CFloat64T - y: CFloat64T - def __new__() -> 'Vec2' | CPtr: pass - def __init__(self: Vec2, x: CFloat64T, y: CFloat64T) -> t.CInt: pass - def __add__(self: Vec2, b: 'Vec2' | CPtr) -> 'Vec2' | CPtr: pass - def __sub__(self: Vec2, b: 'Vec2' | CPtr) -> 'Vec2' | CPtr: pass - def __mul__(self: Vec2, s: CFloat64T) -> 'Vec2' | CPtr: pass - def __neg__(self: Vec2) -> 'Vec2' | CPtr: pass - def dot(self: Vec2, b: 'Vec2' | CPtr) -> CFloat64T: pass - def len_sq(self: Vec2) -> CFloat64T: pass -class Vec3: - x: CFloat64T - y: CFloat64T - z: CFloat64T - def __new__() -> 'Vec3' | CPtr: pass - def __init__(self: Vec3, x: CFloat64T, y: CFloat64T, z: CFloat64T) -> t.CInt: pass - def __add__(self: Vec3, b: 'Vec3' | CPtr) -> 'Vec3' | CPtr: pass - def __sub__(self: Vec3, b: 'Vec3' | CPtr) -> 'Vec3' | CPtr: pass - def __mul__(self: Vec3, s: CFloat64T) -> 'Vec3' | CPtr: pass - def __neg__(self: Vec3) -> 'Vec3' | CPtr: pass - def dot(self: Vec3, b: 'Vec3' | CPtr) -> CFloat64T: pass - def cross(self: Vec3, b: 'Vec3' | CPtr) -> 'Vec3' | CPtr: pass - def len_sq(self: Vec3) -> CFloat64T: pass -@t.CVTable -class Dog: - def __init__(self: Dog, name_val: CInt, bark_power: CInt32T) -> t.CInt: pass - def speak(self: Dog) -> CInt: pass - def bite(self: Dog) -> CInt32T: pass - def take_damage(self: Dog, dmg: CInt32T) -> 'Dog' | CPtr: pass - def is_alive(self: Dog) -> CInt: pass -@t.CVTable -class Cat: - def __init__(self: Cat, name_val: CInt, lives: CInt32T) -> t.CInt: pass - def speak(self: Cat) -> CInt: pass - def scratch(self: Cat) -> CInt32T: pass - def take_damage(self: Cat, dmg: CInt32T) -> 'Cat' | CPtr: pass - def is_alive(self: Cat) -> CInt: pass -class Transform: - px: CFloat64T - py: CFloat64T - pz: CFloat64T - scale_x: CFloat64T - scale_y: CFloat64T - scale_z: CFloat64T - def __new__() -> 'Transform' | CPtr: pass - def __init__(self: Transform, px: CFloat64T, py: CFloat64T, pz: CFloat64T) -> t.CInt: pass - def apply_scale(self: Transform, sx: CFloat64T, sy: CFloat64T, sz: CFloat64T) -> 'Transform' | CPtr: pass - def world_position(self: Transform) -> 'Vec3' | CPtr: pass -@t.CVTable -class Vehicle: - def __init__(self: Vehicle, speed: CInt32T) -> t.CInt: pass - def move(self: Vehicle) -> CInt: pass - def is_running(self: Vehicle) -> CInt: pass -@t.CVTable -class Car(Vehicle): - def __init__(self: Car, speed: CInt32T, doors: CInt32T) -> t.CInt: pass - def honk(self: Car) -> CInt: pass -@t.CVTable -class ElectricCar(Car): - def __init__(self: ElectricCar, speed: CInt32T, doors: CInt32T, battery: CInt32T) -> t.CInt: pass - def charge(self: ElectricCar) -> t.CInt: pass - def move(self: ElectricCar) -> CInt: pass - -def main() -> CInt | CExport: pass diff --git a/.transpyc_cache/b298756207e2da58.doc.json b/.transpyc_cache/b298756207e2da58.doc.json deleted file mode 100644 index c00e036..0000000 --- a/.transpyc_cache/b298756207e2da58.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数\n\n 直接接收三个 Value 参数,避免通过 Next 链表遍历(共享 alloca 对象的\n Next 字段可能被其他操作污染,导致链表断裂)。\n ", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/b298756207e2da58.pyi b/.transpyc_cache/b298756207e2da58.pyi deleted file mode 100644 index 40c3168..0000000 --- a/.transpyc_cache/b298756207e2da58.pyi +++ /dev/null @@ -1,171 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, dst_val: llvmlite.Value | t.CPtr, src_val: llvmlite.Value | t.CPtr, num_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/b29b80b6106e4be7.doc.json b/.transpyc_cache/b29b80b6106e4be7.doc.json deleted file mode 100644 index 724daa6..0000000 --- a/.transpyc_cache/b29b80b6106e4be7.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到\n\n allow_star_fallback: 传 0 禁用 star import 回退(用于明确模块名/函数名查找)\n ", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_get_external_func_param_ty": "获取外部函数第 param_idx 个参数的期望类型,None 表示用字面量原类型\n\n 对 Win32 API 函数的所有非指针参数返回 i64,匹配 declare 中\n ULONG/SIZE_T 被统一翻译为 i64 的情况。\n ", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数\n\n 直接接收三个 Value 参数,避免通过 Next 链表遍历(共享 alloca 对象的\n Next 字段可能被其他操作污染,导致链表断裂)。\n ", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/b29b80b6106e4be7.pyi b/.transpyc_cache/b29b80b6106e4be7.pyi deleted file mode 100644 index 065139b..0000000 --- a/.transpyc_cache/b29b80b6106e4be7.pyi +++ /dev/null @@ -1,173 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str, allow_star_fallback: int) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _get_external_func_param_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str, param_idx: int) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, dst_val: llvmlite.Value | t.CPtr, src_val: llvmlite.Value | t.CPtr, num_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/b3c2b99b6f3be4c7.doc.json b/.transpyc_cache/b3c2b99b6f3be4c7.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/b3c2b99b6f3be4c7.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/b3c2b99b6f3be4c7.pyi b/.transpyc_cache/b3c2b99b6f3be4c7.pyi deleted file mode 100644 index 155b94e..0000000 --- a/.transpyc_cache/b3c2b99b6f3be4c7.pyi +++ /dev/null @@ -1,17 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - - -from stdint import * -import w32.win32console -import t, c -from t import CInt, CExport -import stdio -import stdlib -import string -import memhub -import testcheck - -def main() -> CInt | CExport: pass diff --git a/.transpyc_cache/b3fd73f7abbd88a8.doc.json b/.transpyc_cache/b3fd73f7abbd88a8.doc.json deleted file mode 100644 index 86441ed..0000000 --- a/.transpyc_cache/b3fd73f7abbd88a8.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_load_includes_sha1_set": "读取 _sha1_map.txt,将 includes/ 开头的 SHA1 写入 sha1_set\n sha1_set 大小为 MAX_INCLUDES_SHA1 * 17(每个 SHA1 16字符+null)\n 返回找到的 includes SHA1 数量,-1 表示错误", "_is_in_sha1_set": "检查 sha1 是否在集合中", "WriteIncludesSha1Map": "将 includes 扫描结果写入 _sha1_map.txt(供 StubMerger 使用)\n\n 若 filter_set 不为 None 且 filter_count > 0,只写入 filter_set 中的条目。\n ", "_IsFuncDeclaredOrDefined": "检查 out_buf 中是否已有函数的 declare 或 define 行", "_CommentOutDeclareInBuf": "在 out_buf 中搜索 declare 行(包含 func_sig),将其注释掉", "_CommentOutGlobalInBuf": "在 out_buf 中搜索全局变量定义行(以 global_name 开头),将行首改为 ';'", "_CommentOutOpaqueTypeInBuf": "在 out_buf 中搜索 type_name_prefix 对应的 opaque 声明行,将行首改为 ';'\n\n type_name_prefix 格式: '%\"sha1.ClassName\"'(不含 '=' 和后续内容)\n 返回 1=已注释, 0=未找到\n ", "_HasFullTypeDefinition": "检查 out_buf 中是否已有 type_name_prefix 的完整定义", "_LoadAndAppendStub": "加载依赖 stub 并追加(跳过 header,去重)", "_LoadAndAppendTextDeclares": "从依赖 text.ll 提取 declare(define 转 declare),追加到 out_buf", "_PathToModuleName": "将文件路径转换为模块名\n\n 特殊处理 __init__.py:includes/ast/__init__.py → ast(而非 ast.__init__)\n ", "_BuildIncludesSha1Map": "从 _sha1_map.txt 构建 sha1→module_name 映射,返回条目数", "_FindSha1ByModName": "从模块名查找 SHA1(精确匹配)", "_AddSha1ToSet": "将 SHA1 加入集合,返回新 count", "_BuildReachableSha1Set": "构建可达 SHA1 集合(依赖图按需翻译)", "BuildCombinedIR": "组合本地 stub + 依赖 stubs + 本地 text → out_buf(按需加载)"} \ No newline at end of file diff --git a/.transpyc_cache/b3fd73f7abbd88a8.pyi b/.transpyc_cache/b3fd73f7abbd88a8.pyi deleted file mode 100644 index 4466a75..0000000 --- a/.transpyc_cache/b3fd73f7abbd88a8.pyi +++ /dev/null @@ -1,60 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.StubMerger.py -Module: lib.core.StubMerger -""" - - -import t, c -from stdint import * -import memhub -import string -import stdio -import stdlib -import llvmlite -import w32.win32file as win32file -import w32.win32base as win32base -import w32.fileio as fileio -import viperlib -import sys -import ast -import lib.core.IncludesScanner as IncludesScanner -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesTranslator as HandlesTranslator - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -MAX_INCLUDES_SHA1: t.CDefine = 256 -STUB_READ_BUF_SIZE: t.CDefine = 262144 -MAX_INCLUDES: t.CDefine = 256 - -def _load_includes_sha1_set(pool: memhub.MemBuddy | t.CPtr, temp_dir: str, sha1_set: str) -> int: pass - -def _is_in_sha1_set(sha1: str, sha1_set: str, set_count: int) -> int: pass - -def WriteIncludesSha1Map(mb: memhub.MemBuddy | t.CPtr, temp_dir: str, scan_result: IncludesScanner.ScanResult | t.CPtr, filter_set: t.CChar | t.CPtr, filter_count: int) -> int: pass - -def _IsFuncDeclaredOrDefined(out_buf: bytes, func_sig: str) -> int: pass - -def _CommentOutDeclareInBuf(out_buf: bytes, func_sig: str) -> int: pass - -def _CommentOutGlobalInBuf(out_buf: bytes, global_name: str) -> int: pass - -def _CommentOutOpaqueTypeInBuf(out_buf: bytes, type_name_prefix: str) -> int: pass - -def _HasFullTypeDefinition(out_buf: bytes, type_name_prefix: str) -> int: pass - -def _LoadAndAppendStub(temp_dir: str, td_len: t.CSizeT, dep_sha1: str, dep_buf: bytes, out_buf: bytes, out_size: t.CSizeT, out_pos: t.CSizeT) -> t.CSizeT: pass - -def _LoadAndAppendTextDeclares(temp_dir: str, td_len: t.CSizeT, dep_sha1: str, dep_buf: bytes, out_buf: bytes, out_size: t.CSizeT, out_pos: t.CSizeT) -> t.CSizeT: pass - -def _PathToModuleName(path: str) -> str: pass - -def _BuildIncludesSha1Map(temp_dir: str, td_len: t.CSizeT, sha1_list: t.CChar | t.CPtr, mod_list: t.CChar | t.CPtr) -> int: pass - -def _FindSha1ByModName(sha1_arr: t.CChar | t.CPtr, mod_arr: t.CChar | t.CPtr, count: int, mod_name: str) -> str: pass - -def _AddSha1ToSet(set_buf: t.CChar | t.CPtr, count: int, sha1: str) -> int: pass - -def _BuildReachableSha1Set(mb: memhub.MemBuddy | t.CPtr, source_dir: str, temp_dir: str, reachable_set: t.CChar | t.CPtr) -> int: pass - -def BuildCombinedIR(temp_dir: str, local_sha1: str, out_buf: bytes, out_size: t.CSizeT) -> t.CSizeT: pass diff --git a/.transpyc_cache/b436212dcff1be29.doc.json b/.transpyc_cache/b436212dcff1be29.doc.json deleted file mode 100644 index c6f42ec..0000000 --- a/.transpyc_cache/b436212dcff1be29.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"test_global_write": "测试:缺少 global 声明时,赋值是否修改模块级变量", "test_global_write_no_decl": "测试:没有 global 声明时,赋值是否创建局部变量", "test_global_ptr_no_decl": "测试:没有 global 声明时,指针赋值是否创建局部变量", "test_pointer_arithmetic": "测试指针算术:偏移计算是否正确", "test_array_decay": "测试 list[t.CChar, N] 传递给 t.CConst | str 参数", "test_pointer_cast": "测试指针与整数之间的类型转换", "test_pointer_offset": "测试指针偏移:CUInt8T* + N 应该偏移 N 字节,CUInt32T* + N 应该偏移 N*4 字节", "test_struct_pointer": "测试结构体指针的成员访问", "test_memcpy_pointers": "测试 memcpy 在指针之间的数据复制", "test_pointer_param": "测试指针作为函数参数传递"} \ No newline at end of file diff --git a/.transpyc_cache/b436212dcff1be29.pyi b/.transpyc_cache/b436212dcff1be29.pyi deleted file mode 100644 index ab57c0d..0000000 --- a/.transpyc_cache/b436212dcff1be29.pyi +++ /dev/null @@ -1,48 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - - -from stdint import * -import t, c -import stdio -import string -import w32.win32console -import w32.win32memory -import testcheck - -_g_val: t.CExtern | t.CInt -_g_ptr: t.CExtern | t.CUInt32T | t.CPtr - -def test_global_write() -> t.CInt: pass - -def test_global_write_no_decl() -> t.CInt: pass - -def test_global_ptr() -> t.CInt: pass - -def test_global_ptr_no_decl() -> t.CInt: pass - -def test_pointer_arithmetic() -> t.CInt: pass - -def test_array_decay() -> t.CInt: pass - -def test_pointer_cast() -> t.CInt: pass - -def test_pointer_offset() -> t.CInt: pass - - -class TestStruct: - a: t.CInt - b: t.CInt - c: t.CUInt64T - -def test_struct_pointer() -> t.CInt: pass - -def test_memcpy_pointers() -> t.CInt: pass - -def fill_array(arr: t.CUInt32T | t.CPtr, count: t.CInt, val: t.CUInt32T) -> t.CInt: pass - -def test_pointer_param() -> t.CInt: pass - -def main() -> t.CInt | t.CExport: pass diff --git a/.transpyc_cache/b547ac4f380bddb6.pyi b/.transpyc_cache/b547ac4f380bddb6.pyi deleted file mode 100644 index e960341..0000000 --- a/.transpyc_cache/b547ac4f380bddb6.pyi +++ /dev/null @@ -1,166 +0,0 @@ -""" -Auto-generated Python stub file from ast.tokens.py -Module: ast.tokens -""" - - -import t, c -from stdint import * -import memhub -import string - -class TokenType(t.CEnum): - EndMarker: t.State - NewLine: t.State - Indent: t.State - Dedent: t.State - Name: t.State - Number: t.State - String: t.State - FStringStart: t.State - FStringMiddle: t.State - FStringEnd: t.State - Op: t.State - Nl: t.State - Comment: t.State - Encoding: t.State -class Keyword(t.CEnum): - NotKeyword: t.State - False_: t.State - None_: t.State - True_: t.State - And: t.State - As: t.State - Assert: t.State - Async: t.State - Await: t.State - Break: t.State - Class: t.State - Continue: t.State - Def: t.State - Del: t.State - Elif: t.State - Else: t.State - Except: t.State - Finally: t.State - For: t.State - From: t.State - Global: t.State - If: t.State - Import: t.State - In: t.State - Is: t.State - Lambda: t.State - Nonlocal: t.State - Not: t.State - Or: t.State - Pass: t.State - Raise: t.State - Return: t.State - Try: t.State - While: t.State - With: t.State - Yield: t.State - Match: t.State - Case: t.State - Type: t.State -class TokOp(t.CEnum): - LPar: t.State - RPar: t.State - Lsqb: t.State - Rsqb: t.State - LBrace: t.State - RBrace: t.State - Comma: t.State - Colon: t.State - Dot: t.State - Semi: t.State - At: t.State - Equal: t.State - RArrow: t.State - PlusEq: t.State - MinusEq: t.State - StarEq: t.State - SlashEq: t.State - DSlashEq: t.State - PercentEq: t.State - AtEq: t.State - AmpEq: t.State - VBarEq: t.State - CaretEq: t.State - GtGtEq: t.State - LtLtEq: t.State - StarEqEq: t.State - DSlash: t.State - StarStar: t.State - LtLt: t.State - GtGt: t.State - LessEq: t.State - GreaterEq: t.State - EqEq: t.State - ExclaimEq: t.State - Less: t.State - Greater: t.State - Plus: t.State - Minus: t.State - Star: t.State - Slash: t.State - Percent: t.State - Amp: t.State - VBar: t.State - Caret: t.State - Tilde: t.State - ColonEq: t.State - Ellipsis: t.State - Bang: t.State -class Token: - type: t.CInt - op_subtype: t.CInt - kw_subtype: t.CInt - str_val: str - int_val: t.CInt64T - float_val: t.CDouble - is_float: t.CInt - is_complex: t.CInt - lineno: t.CInt - col_offset: t.CInt - end_lineno: t.CInt - end_col_offset: t.CInt - next: Token | t.CPtr - def __new__(self: Token, pool: memhub.MemManager | t.CPtr) -> t.CInt: pass -class KwEntry: - name: str - kw_id: t.CInt - next: KwEntry | t.CPtr - def __new__(self: KwEntry, pool: memhub.MemManager | t.CPtr) -> t.CInt: pass - -_kw_head: t.CExtern | KwEntry | t.CPtr -_kw_pool: t.CExtern | memhub.MemManager | t.CPtr - -def _kw_intern(pool: memhub.MemManager | t.CPtr, name: str, kw_id: t.CInt) -> t.CInt: pass - -def _kw_lookup(name: str) -> t.CInt: pass - -def _init_keywords(pool: memhub.MemManager | t.CPtr) -> t.CInt: pass - - -class OpEntry: - name: str - op_id: t.CInt - length: t.CInt - next: OpEntry | t.CPtr - def __new__(self: OpEntry, pool: memhub.MemManager | t.CPtr) -> t.CInt: pass - -_op_head: t.CExtern | OpEntry | t.CPtr - -def _op_intern(pool: memhub.MemManager | t.CPtr, name: str, op_id: t.CInt) -> t.CInt: pass - -def _init_operators(pool: memhub.MemManager | t.CPtr) -> t.CInt: pass - -def _init_tables(pool: memhub.MemManager | t.CPtr) -> t.CInt: pass - -def new_token(pool: memhub.MemManager | t.CPtr, ttype: t.CInt, lineno: t.CInt, col_offset: t.CInt) -> Token | t.CPtr: pass - -def token_set_str(pool: memhub.MemManager | t.CPtr, tok: Token | t.CPtr, src: str, start: t.CSizeT, length: t.CSizeT) -> t.CInt: pass - -def token_set_str_literal(pool: memhub.MemManager | t.CPtr, tok: Token | t.CPtr, text: str) -> t.CInt: pass diff --git a/.transpyc_cache/b558d8d8f01f4825.pyi b/.transpyc_cache/b558d8d8f01f4825.pyi deleted file mode 100644 index a326df6..0000000 --- a/.transpyc_cache/b558d8d8f01f4825.pyi +++ /dev/null @@ -1,39 +0,0 @@ -""" -Auto-generated Python stub file from requests.py -Module: requests -""" - - -import t, c -from stdint import * -import string -import socket -import memhub -import stdio - -_mbuddy: t.CExtern | memhub.MemBuddy | t.CPtr -_socket_ready: t.CExtern | bool -HTTP_PORT: t.CDefine = 80 -HTTP_BUFSIZ: t.CDefine = 4096 - -class Response: - status_code: INT - text: str - body_len: INT - _raw_buf: str - -def _EnsureSocketInit() -> INT: pass - -def _AllocResponse() -> Response | t.CPtr: pass - -def _ParseUrl(url: str, host_buf: str, host_size: INT, path_buf: str, path_size: INT, port: INT | t.CPtr) -> INT: pass - -def _ParseStatusLine(resp_text: str, out_code: INT | t.CPtr) -> INT: pass - -def _FindBodyStart(resp_text: str, resp_len: INT) -> INT: pass - -def get(url: str) -> Response | t.CPtr: pass - -def post(url: str, data: str, content_type: str) -> Response | t.CPtr: pass - -def release(resp: Response | t.CPtr) -> t.CInt: pass diff --git a/.transpyc_cache/b5a965302cded36b.pyi b/.transpyc_cache/b5a965302cded36b.pyi deleted file mode 100644 index bfdb955..0000000 --- a/.transpyc_cache/b5a965302cded36b.pyi +++ /dev/null @@ -1,44 +0,0 @@ -""" -Auto-generated Python stub file from sys.py -Module: sys -""" - - -import t, c -from stdint import * -import platmacro -import memhub -import string -import stdio -import w32.win32base -import w32.win32process -import posix - -_mbuddy: t.CExtern | memhub.MemBuddy | t.CPtr - -def fgets(buf: t.CChar | t.CPtr, size: t.CInt, stream: t.CVoid | t.CPtr) -> t.CChar | t.CPtr | t.CExtern | t.CExport: pass - -def fflush(stream: t.CVoid | t.CPtr) -> t.CInt | t.CExtern | t.CExport: pass - -def exit(status: INT) -> VOID | t.CExtern | t.CExport: pass - - -maxsize: t.CDefine = 9223372036854775807 - -def platform() -> str: pass - -def get_pid() -> int: pass - - -_argc: t.CExtern | INT -_argv: t.CExtern | str | t.CPtr - -def _init_argv() -> t.CInt: pass - -def _init_argv_win32() -> t.CInt: pass - -def _init_argv_posix() -> t.CInt: pass - -def argc() -> int: pass - -def argv(index: int) -> str: pass diff --git a/.transpyc_cache/b5d05dbd7fee36ef.doc.json b/.transpyc_cache/b5d05dbd7fee36ef.doc.json deleted file mode 100644 index 86441ed..0000000 --- a/.transpyc_cache/b5d05dbd7fee36ef.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_load_includes_sha1_set": "读取 _sha1_map.txt,将 includes/ 开头的 SHA1 写入 sha1_set\n sha1_set 大小为 MAX_INCLUDES_SHA1 * 17(每个 SHA1 16字符+null)\n 返回找到的 includes SHA1 数量,-1 表示错误", "_is_in_sha1_set": "检查 sha1 是否在集合中", "WriteIncludesSha1Map": "将 includes 扫描结果写入 _sha1_map.txt(供 StubMerger 使用)\n\n 若 filter_set 不为 None 且 filter_count > 0,只写入 filter_set 中的条目。\n ", "_IsFuncDeclaredOrDefined": "检查 out_buf 中是否已有函数的 declare 或 define 行", "_CommentOutDeclareInBuf": "在 out_buf 中搜索 declare 行(包含 func_sig),将其注释掉", "_CommentOutGlobalInBuf": "在 out_buf 中搜索全局变量定义行(以 global_name 开头),将行首改为 ';'", "_CommentOutOpaqueTypeInBuf": "在 out_buf 中搜索 type_name_prefix 对应的 opaque 声明行,将行首改为 ';'\n\n type_name_prefix 格式: '%\"sha1.ClassName\"'(不含 '=' 和后续内容)\n 返回 1=已注释, 0=未找到\n ", "_HasFullTypeDefinition": "检查 out_buf 中是否已有 type_name_prefix 的完整定义", "_LoadAndAppendStub": "加载依赖 stub 并追加(跳过 header,去重)", "_LoadAndAppendTextDeclares": "从依赖 text.ll 提取 declare(define 转 declare),追加到 out_buf", "_PathToModuleName": "将文件路径转换为模块名\n\n 特殊处理 __init__.py:includes/ast/__init__.py → ast(而非 ast.__init__)\n ", "_BuildIncludesSha1Map": "从 _sha1_map.txt 构建 sha1→module_name 映射,返回条目数", "_FindSha1ByModName": "从模块名查找 SHA1(精确匹配)", "_AddSha1ToSet": "将 SHA1 加入集合,返回新 count", "_BuildReachableSha1Set": "构建可达 SHA1 集合(依赖图按需翻译)", "BuildCombinedIR": "组合本地 stub + 依赖 stubs + 本地 text → out_buf(按需加载)"} \ No newline at end of file diff --git a/.transpyc_cache/b5d05dbd7fee36ef.pyi b/.transpyc_cache/b5d05dbd7fee36ef.pyi deleted file mode 100644 index 4466a75..0000000 --- a/.transpyc_cache/b5d05dbd7fee36ef.pyi +++ /dev/null @@ -1,60 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.StubMerger.py -Module: lib.core.StubMerger -""" - - -import t, c -from stdint import * -import memhub -import string -import stdio -import stdlib -import llvmlite -import w32.win32file as win32file -import w32.win32base as win32base -import w32.fileio as fileio -import viperlib -import sys -import ast -import lib.core.IncludesScanner as IncludesScanner -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesTranslator as HandlesTranslator - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -MAX_INCLUDES_SHA1: t.CDefine = 256 -STUB_READ_BUF_SIZE: t.CDefine = 262144 -MAX_INCLUDES: t.CDefine = 256 - -def _load_includes_sha1_set(pool: memhub.MemBuddy | t.CPtr, temp_dir: str, sha1_set: str) -> int: pass - -def _is_in_sha1_set(sha1: str, sha1_set: str, set_count: int) -> int: pass - -def WriteIncludesSha1Map(mb: memhub.MemBuddy | t.CPtr, temp_dir: str, scan_result: IncludesScanner.ScanResult | t.CPtr, filter_set: t.CChar | t.CPtr, filter_count: int) -> int: pass - -def _IsFuncDeclaredOrDefined(out_buf: bytes, func_sig: str) -> int: pass - -def _CommentOutDeclareInBuf(out_buf: bytes, func_sig: str) -> int: pass - -def _CommentOutGlobalInBuf(out_buf: bytes, global_name: str) -> int: pass - -def _CommentOutOpaqueTypeInBuf(out_buf: bytes, type_name_prefix: str) -> int: pass - -def _HasFullTypeDefinition(out_buf: bytes, type_name_prefix: str) -> int: pass - -def _LoadAndAppendStub(temp_dir: str, td_len: t.CSizeT, dep_sha1: str, dep_buf: bytes, out_buf: bytes, out_size: t.CSizeT, out_pos: t.CSizeT) -> t.CSizeT: pass - -def _LoadAndAppendTextDeclares(temp_dir: str, td_len: t.CSizeT, dep_sha1: str, dep_buf: bytes, out_buf: bytes, out_size: t.CSizeT, out_pos: t.CSizeT) -> t.CSizeT: pass - -def _PathToModuleName(path: str) -> str: pass - -def _BuildIncludesSha1Map(temp_dir: str, td_len: t.CSizeT, sha1_list: t.CChar | t.CPtr, mod_list: t.CChar | t.CPtr) -> int: pass - -def _FindSha1ByModName(sha1_arr: t.CChar | t.CPtr, mod_arr: t.CChar | t.CPtr, count: int, mod_name: str) -> str: pass - -def _AddSha1ToSet(set_buf: t.CChar | t.CPtr, count: int, sha1: str) -> int: pass - -def _BuildReachableSha1Set(mb: memhub.MemBuddy | t.CPtr, source_dir: str, temp_dir: str, reachable_set: t.CChar | t.CPtr) -> int: pass - -def BuildCombinedIR(temp_dir: str, local_sha1: str, out_buf: bytes, out_size: t.CSizeT) -> t.CSizeT: pass diff --git a/.transpyc_cache/b69cdee68f223fef.doc.json b/.transpyc_cache/b69cdee68f223fef.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/b69cdee68f223fef.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/b777c587cc21465a.doc.json b/.transpyc_cache/b777c587cc21465a.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/b777c587cc21465a.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/b777c587cc21465a.pyi b/.transpyc_cache/b777c587cc21465a.pyi deleted file mode 100644 index e70167d..0000000 --- a/.transpyc_cache/b777c587cc21465a.pyi +++ /dev/null @@ -1,16 +0,0 @@ -""" -Auto-generated Python stub file from vectortest.py -Module: vectortest -""" - - -import t, c -from t import CInt, CPtr, CChar, CFloat64T -import viperlib -import stdlib -import vector -import memhub - -POOL_SIZE: t.CDefine = 4096 - -def vector_main() -> CInt: pass diff --git a/.transpyc_cache/b7eeff93aa63e70f.doc.json b/.transpyc_cache/b7eeff93aa63e70f.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/b7eeff93aa63e70f.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/b7eeff93aa63e70f.pyi b/.transpyc_cache/b7eeff93aa63e70f.pyi deleted file mode 100644 index 807845f..0000000 --- a/.transpyc_cache/b7eeff93aa63e70f.pyi +++ /dev/null @@ -1,25 +0,0 @@ -""" -Auto-generated Python stub file from namespace_defs.py -Module: namespace_defs -""" - - -import stdio -import t, c - -@t.CVTable -class Widget: - id: t.CInt - def __init__(self: Widget, i: t.CInt) -> t.CInt: pass - def GetId(self: Widget) -> t.CInt: pass - def Render(self: Widget) -> t.CInt: pass -class Gadget(Widget): - extra: t.CInt - def __init__(self: Gadget, i: t.CInt, e: t.CInt) -> t.CInt: pass - def Render(self: Gadget) -> t.CInt: pass - def GetExtra(self: Gadget) -> t.CInt: pass -class PlainStruct: - x: t.CInt - y: t.CInt - def __init__(self: PlainStruct, ax: t.CInt, ay: t.CInt) -> t.CInt: pass - def Sum(self: PlainStruct) -> t.CInt: pass \ No newline at end of file diff --git a/.transpyc_cache/b8c66c8ff44eb874.pyi b/.transpyc_cache/b8c66c8ff44eb874.pyi deleted file mode 100644 index 85bdb8f..0000000 --- a/.transpyc_cache/b8c66c8ff44eb874.pyi +++ /dev/null @@ -1,46 +0,0 @@ -""" -Auto-generated Python stub file from hashtable.py -Module: hashtable -""" - - -import t, c -import string -import memhub -from stdint import * - -_HT_EMPTY: t.CDefine = 0 -_HT_TOMBSTONE: t.CDefine = 1 -_HT_INIT_CAP: t.CDefine = 16 -_HT_SLOT_SIZE: t.CDefine = 24 -_FNV_OFFSET: t.CExtern | t.CUInt64T -_FNV_PRIME: t.CExtern | t.CUInt64T - -def _fnv1a_hash(key: str) -> t.CUInt64T: pass - - -class HashTable: - __slots__: t.CVoid | t.CPtr - __count__: t.CSizeT = 0 - __capacity__: t.CSizeT = 16 - __tombstones__: t.CSizeT = 0 - __mbuddy__: memhub.MemBuddy | t.CPtr - __iter_index__: t.CSizeT = 0 - def __new__(self: HashTable, mb: memhub.MemBuddy | t.CPtr) -> t.CPtr: pass - def __init__(self: HashTable, mb: memhub.MemBuddy | t.CPtr) -> t.CInt: pass - def _slot_hash(self: HashTable, idx: t.CSizeT) -> t.CUInt64T: pass - def _slot_key(self: HashTable, idx: t.CSizeT) -> str: pass - def _slot_value(self: HashTable, idx: t.CSizeT) -> t.CPtr: pass - def _set_slot(self: HashTable, idx: t.CSizeT, h: t.CUInt64T, key: str, val: t.CPtr) -> t.CInt: pass - def _find_slot(self: HashTable, key: str, h: t.CUInt64T) -> t.CSizeT: pass - def _resize(self: HashTable, new_cap: t.CSizeT) -> t.CInt: pass - def __setitem__(self: HashTable, key: str, val: t.CNeedPtr) -> t.CInt: pass - def __getitem__(self: HashTable, key: str) -> t.CPtr: pass - def __contains__(self: HashTable, key: str) -> t.CInt: pass - def __delitem__(self: HashTable, key: str) -> t.CInt: pass - def __len__(self: HashTable) -> t.CSizeT: pass - def __iter__(self: HashTable) -> HashTable | t.CPtr: pass - def __next__(self: HashTable) -> str: pass - def get(self: HashTable, key: str, default: t.CPtr) -> t.CPtr: pass - def set_int(self: HashTable, key: str, val: int) -> t.CInt: pass - def set_str(self: HashTable, key: str, val: str) -> t.CInt: pass \ No newline at end of file diff --git a/.transpyc_cache/b8cbe044a10adcca.doc.json b/.transpyc_cache/b8cbe044a10adcca.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/b8cbe044a10adcca.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/b8cbe044a10adcca.pyi b/.transpyc_cache/b8cbe044a10adcca.pyi deleted file mode 100644 index 7809327..0000000 --- a/.transpyc_cache/b8cbe044a10adcca.pyi +++ /dev/null @@ -1,23 +0,0 @@ -""" -Auto-generated Python stub file from eq_test.py -Module: eq_test -""" - - -import stdio -import t, c -import string - -def test_int_eq() -> t.CInt: pass - -def test_int_cmp() -> t.CInt: pass - -def test_ptr_is_none() -> t.CInt: pass - -def test_ptr_assign_none() -> t.CInt: pass - -def test_ptr_eq_none() -> t.CInt: pass - -def test_bool_logic() -> t.CInt: pass - -def eq_test() -> int: pass diff --git a/.transpyc_cache/bc52b7a79738d25a.doc.json b/.transpyc_cache/bc52b7a79738d25a.doc.json deleted file mode 100644 index 6b37383..0000000 --- a/.transpyc_cache/bc52b7a79738d25a.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/bc52b7a79738d25a.pyi b/.transpyc_cache/bc52b7a79738d25a.pyi deleted file mode 100644 index e470478..0000000 --- a/.transpyc_cache/bc52b7a79738d25a.pyi +++ /dev/null @@ -1,171 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, args_head: llvmlite.Value | t.CPtr, arg_count: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/bd82e3ca81546c76.doc.json b/.transpyc_cache/bd82e3ca81546c76.doc.json deleted file mode 100644 index 0858afd..0000000 --- a/.transpyc_cache/bd82e3ca81546c76.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"FileEntry": "扫描到的文件条目", "ScanResult": "扫描结果集合", "create_scan_result": "创建扫描结果容器,预分配 MAX_FILES 个槽位", "add_file_entry": "添加文件条目到扫描结果,返回 0 成功", "compute_file_sha1": "读取文件内容并计算 SHA1 前16字符(CRLF→LF 后计算,与 Projectrans.py 一致)", "scan_directory_recursive": "递归扫描目录,收集 .py 文件", "scan_includes": "扫描 includes 目录,返回所有 .py 文件的扫描结果", "find_entry_by_module": "按模块名查找文件条目"} \ No newline at end of file diff --git a/.transpyc_cache/bd82e3ca81546c76.pyi b/.transpyc_cache/bd82e3ca81546c76.pyi deleted file mode 100644 index ba0eee6..0000000 --- a/.transpyc_cache/bd82e3ca81546c76.pyi +++ /dev/null @@ -1,45 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.IncludesScanner.py -Module: lib.core.IncludesScanner -""" - - -import t, c -from stdint import * -import memhub -import string -import stdio -import stdlib -import w32.win32file as win32file -import w32.win32base as win32base -import w32.fileio as fileio -import hashlib -import viperlib - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -MAX_PATH_LEN: t.CDefine = 512 -MAX_FILES: t.CDefine = 256 - -@t.NoVTable -class FileEntry: - Path: str - Sha1: str - RelPath: str - ModuleName: str -@t.NoVTable -class ScanResult: - Entries: FileEntry | t.CPtr - Count: t.CInt - Capacity: t.CInt - -def create_scan_result(pool: memhub.MemBuddy | t.CPtr) -> ScanResult | t.CPtr: pass - -def add_file_entry(result: ScanResult | t.CPtr, pool: memhub.MemBuddy | t.CPtr, abs_path: str, rel_path: str, sha1: str) -> int: pass - -def compute_file_sha1(pool: memhub.MemBuddy | t.CPtr, file_path: str) -> str: pass - -def scan_directory_recursive(pool: memhub.MemBuddy | t.CPtr, root_dir: str, rel_prefix: str, result: ScanResult | t.CPtr) -> int: pass - -def scan_includes(pool: memhub.MemBuddy | t.CPtr, includes_dir: str) -> ScanResult | t.CPtr: pass - -def find_entry_by_module(result: ScanResult | t.CPtr, module_name: str) -> FileEntry | t.CPtr: pass diff --git a/.transpyc_cache/bdfc8bd243b7e5b7.doc.json b/.transpyc_cache/bdfc8bd243b7e5b7.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/bdfc8bd243b7e5b7.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/bdfc8bd243b7e5b7.pyi b/.transpyc_cache/bdfc8bd243b7e5b7.pyi deleted file mode 100644 index bd232f2..0000000 --- a/.transpyc_cache/bdfc8bd243b7e5b7.pyi +++ /dev/null @@ -1,87 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - - -import t -import stdio -import c -import testcheck - -def square[T](x: T) -> T: pass - -def test_generic_square_types() -> t.CInt: pass - -def clamp[T](val: T, lo: T, hi: T) -> T: pass - -def test_generic_clamp() -> t.CInt: pass - - -class Stack[T]: - data: t.CArray[t.CInt, 16] - top: t.CInt - def __init__(self: Stack) -> t.CInt: pass - def push(self: Stack, val: T) -> t.CInt: pass - def pop(self: Stack) -> T: pass - def is_empty(self: Stack) -> t.CInt: pass - def size_of(self: Stack) -> t.CSizeT: pass - def type_size(self: Stack) -> t.CSizeT: pass - -def test_generic_stack() -> t.CInt: pass - - -class IntPair: - a: t.CInt - b: t.CInt - -def generic_swap[T](p: IntPair | t.CPtr) -> t.CInt: pass - -def test_generic_swap() -> t.CInt: pass - - -class Range[T]: - start: T - end_val: T - step: T - def __init__(self: Range, s: T, e: T, st: T) -> t.CInt: pass - def sum_all(self: Range) -> T: pass - -def test_generic_range() -> t.CInt: pass - -def array_sum(arr: t.CArray[t.CInt, 8], n: t.CInt) -> t.CInt: pass - -def test_generic_array_sum() -> t.CInt: pass - -def max_of_three[T](a: T, b: T, c_val: T) -> T: pass - -def test_generic_max_three() -> t.CInt: pass - - -class Container[T]: - values: t.CArray[t.CInt, 8] - size: t.CInt - def __init__(self: Container) -> t.CInt: pass - def add(self: Container, v: T) -> t.CInt: pass - def get(self: Container, idx: t.CInt) -> T: pass - def contains(self: Container, v: T) -> t.CInt: pass - def total(self: Container) -> T: pass - -def test_generic_container() -> t.CInt: pass - -def factorial[T](n: T) -> T: pass - -def test_generic_factorial() -> t.CInt: pass - - -class Accumulator[T]: - total: T - def __init__(self: Accumulator, start: T) -> t.CInt: pass - def add_val(self: Accumulator, v: T) -> t.CInt: pass - def get_result(self: Accumulator) -> T: pass - -def test_generic_accumulator() -> t.CInt: pass - -def test_generic_sizeof_bug() -> t.CInt: pass - -def main() -> t.CInt: pass diff --git a/.transpyc_cache/bf38ca6c448d2d33.doc.json b/.transpyc_cache/bf38ca6c448d2d33.doc.json deleted file mode 100644 index 86441ed..0000000 --- a/.transpyc_cache/bf38ca6c448d2d33.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_load_includes_sha1_set": "读取 _sha1_map.txt,将 includes/ 开头的 SHA1 写入 sha1_set\n sha1_set 大小为 MAX_INCLUDES_SHA1 * 17(每个 SHA1 16字符+null)\n 返回找到的 includes SHA1 数量,-1 表示错误", "_is_in_sha1_set": "检查 sha1 是否在集合中", "WriteIncludesSha1Map": "将 includes 扫描结果写入 _sha1_map.txt(供 StubMerger 使用)\n\n 若 filter_set 不为 None 且 filter_count > 0,只写入 filter_set 中的条目。\n ", "_IsFuncDeclaredOrDefined": "检查 out_buf 中是否已有函数的 declare 或 define 行", "_CommentOutDeclareInBuf": "在 out_buf 中搜索 declare 行(包含 func_sig),将其注释掉", "_CommentOutGlobalInBuf": "在 out_buf 中搜索全局变量定义行(以 global_name 开头),将行首改为 ';'", "_CommentOutOpaqueTypeInBuf": "在 out_buf 中搜索 type_name_prefix 对应的 opaque 声明行,将行首改为 ';'\n\n type_name_prefix 格式: '%\"sha1.ClassName\"'(不含 '=' 和后续内容)\n 返回 1=已注释, 0=未找到\n ", "_HasFullTypeDefinition": "检查 out_buf 中是否已有 type_name_prefix 的完整定义", "_LoadAndAppendStub": "加载依赖 stub 并追加(跳过 header,去重)", "_LoadAndAppendTextDeclares": "从依赖 text.ll 提取 declare(define 转 declare),追加到 out_buf", "_PathToModuleName": "将文件路径转换为模块名\n\n 特殊处理 __init__.py:includes/ast/__init__.py → ast(而非 ast.__init__)\n ", "_BuildIncludesSha1Map": "从 _sha1_map.txt 构建 sha1→module_name 映射,返回条目数", "_FindSha1ByModName": "从模块名查找 SHA1(精确匹配)", "_AddSha1ToSet": "将 SHA1 加入集合,返回新 count", "_BuildReachableSha1Set": "构建可达 SHA1 集合(依赖图按需翻译)", "BuildCombinedIR": "组合本地 stub + 依赖 stubs + 本地 text → out_buf(按需加载)"} \ No newline at end of file diff --git a/.transpyc_cache/bf38ca6c448d2d33.pyi b/.transpyc_cache/bf38ca6c448d2d33.pyi deleted file mode 100644 index 4466a75..0000000 --- a/.transpyc_cache/bf38ca6c448d2d33.pyi +++ /dev/null @@ -1,60 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.StubMerger.py -Module: lib.core.StubMerger -""" - - -import t, c -from stdint import * -import memhub -import string -import stdio -import stdlib -import llvmlite -import w32.win32file as win32file -import w32.win32base as win32base -import w32.fileio as fileio -import viperlib -import sys -import ast -import lib.core.IncludesScanner as IncludesScanner -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesTranslator as HandlesTranslator - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -MAX_INCLUDES_SHA1: t.CDefine = 256 -STUB_READ_BUF_SIZE: t.CDefine = 262144 -MAX_INCLUDES: t.CDefine = 256 - -def _load_includes_sha1_set(pool: memhub.MemBuddy | t.CPtr, temp_dir: str, sha1_set: str) -> int: pass - -def _is_in_sha1_set(sha1: str, sha1_set: str, set_count: int) -> int: pass - -def WriteIncludesSha1Map(mb: memhub.MemBuddy | t.CPtr, temp_dir: str, scan_result: IncludesScanner.ScanResult | t.CPtr, filter_set: t.CChar | t.CPtr, filter_count: int) -> int: pass - -def _IsFuncDeclaredOrDefined(out_buf: bytes, func_sig: str) -> int: pass - -def _CommentOutDeclareInBuf(out_buf: bytes, func_sig: str) -> int: pass - -def _CommentOutGlobalInBuf(out_buf: bytes, global_name: str) -> int: pass - -def _CommentOutOpaqueTypeInBuf(out_buf: bytes, type_name_prefix: str) -> int: pass - -def _HasFullTypeDefinition(out_buf: bytes, type_name_prefix: str) -> int: pass - -def _LoadAndAppendStub(temp_dir: str, td_len: t.CSizeT, dep_sha1: str, dep_buf: bytes, out_buf: bytes, out_size: t.CSizeT, out_pos: t.CSizeT) -> t.CSizeT: pass - -def _LoadAndAppendTextDeclares(temp_dir: str, td_len: t.CSizeT, dep_sha1: str, dep_buf: bytes, out_buf: bytes, out_size: t.CSizeT, out_pos: t.CSizeT) -> t.CSizeT: pass - -def _PathToModuleName(path: str) -> str: pass - -def _BuildIncludesSha1Map(temp_dir: str, td_len: t.CSizeT, sha1_list: t.CChar | t.CPtr, mod_list: t.CChar | t.CPtr) -> int: pass - -def _FindSha1ByModName(sha1_arr: t.CChar | t.CPtr, mod_arr: t.CChar | t.CPtr, count: int, mod_name: str) -> str: pass - -def _AddSha1ToSet(set_buf: t.CChar | t.CPtr, count: int, sha1: str) -> int: pass - -def _BuildReachableSha1Set(mb: memhub.MemBuddy | t.CPtr, source_dir: str, temp_dir: str, reachable_set: t.CChar | t.CPtr) -> int: pass - -def BuildCombinedIR(temp_dir: str, local_sha1: str, out_buf: bytes, out_size: t.CSizeT) -> t.CSizeT: pass diff --git a/.transpyc_cache/c01b27dbcd683245.doc.json b/.transpyc_cache/c01b27dbcd683245.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/c01b27dbcd683245.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/c01b27dbcd683245.pyi b/.transpyc_cache/c01b27dbcd683245.pyi deleted file mode 100644 index fdb53f8..0000000 --- a/.transpyc_cache/c01b27dbcd683245.pyi +++ /dev/null @@ -1,30 +0,0 @@ -""" -Auto-generated Python stub file from fileiotest.py -Module: fileiotest -""" - - -import t, c -from t import CInt, CInt32T, CUInt32T, CPtr, CChar, CExport -from stdint import * -import stdlib -import viperlib -import w32.win32base -import w32.win32file -import w32.win32console -import w32.fileio -from w32.fileio import File, FileW, MODE, FRESULT, SEEK_SET, SEEK_CUR, SEEK_END - -BUF_SIZE: t.CDefine = 4096 - -def fileio_main() -> t.CInt: pass - -def fileio_with_test() -> t.CInt: pass - -def fileio_handle_test() -> t.CInt: pass - -def fileio_rw_test() -> t.CInt: pass - -def fileio_wide_test() -> t.CInt: pass - -def fileio_chinese_test() -> t.CInt: pass diff --git a/.transpyc_cache/c1416dfae155d6e2.doc.json b/.transpyc_cache/c1416dfae155d6e2.doc.json deleted file mode 100644 index 4cc35ca..0000000 --- a/.transpyc_cache/c1416dfae155d6e2.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"test_snprintf_u8": "测试 CUInt8T 值通过 t.CUnsignedInt() 传递给 %u", "test_snprintf_u16": "测试 CUInt16T 值通过 t.CUnsignedInt() 传递给 %u", "test_snprintf_u64": "测试 CUInt64T 值传递给 %lu", "test_snprintf_d_neg": "测试 %d 格式化负整数", "test_snprintf_mixed": "模拟 desktop.py 的时间格式化", "test_printf_variadic": "测试 printf 直接输出 variadic 参数", "test_snprintf_multi_lu": "测试多个 %lu 连续(模拟 perf 日志格式)", "test_snprintf_u8_edge": "测试 CUInt8T 边界值"} \ No newline at end of file diff --git a/.transpyc_cache/c1416dfae155d6e2.pyi b/.transpyc_cache/c1416dfae155d6e2.pyi deleted file mode 100644 index 636e8b0..0000000 --- a/.transpyc_cache/c1416dfae155d6e2.pyi +++ /dev/null @@ -1,39 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - - -from stdint import * -import t, c -import stdio -import testcheck -import string -import viperlib -import w32.win32console - -def test_snprintf_u8() -> t.CInt: pass - -def test_snprintf_u16() -> t.CInt: pass - -def test_snprintf_u64() -> t.CInt: pass - -def test_snprintf_d_neg() -> t.CInt: pass - -def test_snprintf_d_pos() -> t.CInt: pass - -def test_snprintf_x() -> t.CInt: pass - -def test_snprintf_mixed() -> t.CInt: pass - -def test_printf_variadic() -> t.CInt: pass - -def test_snprintf_multi_lu() -> t.CInt: pass - -def test_snprintf_zero() -> t.CInt: pass - -def test_snprintf_large() -> t.CInt: pass - -def test_snprintf_u8_edge() -> t.CInt: pass - -def main() -> t.CInt | t.CExport: pass diff --git a/.transpyc_cache/c24f25b14b4bbd0a.pyi b/.transpyc_cache/c24f25b14b4bbd0a.pyi deleted file mode 100644 index a7c0c1f..0000000 --- a/.transpyc_cache/c24f25b14b4bbd0a.pyi +++ /dev/null @@ -1,91 +0,0 @@ -""" -Auto-generated Python stub file from vipersimd.py -Module: vipersimd -""" - - -import t, c - -def simd_add4d(a: t.CPtr, b: t.CPtr, out: t.CPtr) -> t.CVoid: pass - -def simd_sub4d(a: t.CPtr, b: t.CPtr, out: t.CPtr) -> t.CVoid: pass - -def simd_mul4d(a: t.CPtr, b: t.CPtr, out: t.CPtr) -> t.CVoid: pass - -def simd_div4d(a: t.CPtr, b: t.CPtr, out: t.CPtr) -> t.CVoid: pass - -def simd_sqrt4d(a: t.CPtr, out: t.CPtr) -> t.CVoid: pass - -def simd_neg4d(a: t.CPtr, out: t.CPtr) -> t.CVoid: pass - -def simd_abs4d(a: t.CPtr, out: t.CPtr) -> t.CVoid: pass - -def simd_max4d(a: t.CPtr, b: t.CPtr, out: t.CPtr) -> t.CVoid: pass - -def simd_min4d(a: t.CPtr, b: t.CPtr, out: t.CPtr) -> t.CVoid: pass - -def simd_mul_scalar4d(a: t.CPtr, scalar: t.CPtr, out: t.CPtr) -> t.CVoid: pass - -def simd_add_scalar4d(a: t.CPtr, scalar: t.CPtr, out: t.CPtr) -> t.CVoid: pass - -def simd_hsum4d(a: t.CPtr, out: t.CPtr) -> t.CVoid: pass - -def simd_dot4d(a: t.CPtr, b: t.CPtr, out: t.CPtr) -> t.CVoid: pass - -def simd_fma4d(a: t.CPtr, b: t.CPtr, c_val: t.CPtr, out: t.CPtr) -> t.CVoid: pass - -def simd_add4f(a: t.CPtr, b: t.CPtr, out: t.CPtr) -> t.CVoid: pass - -def simd_sub4f(a: t.CPtr, b: t.CPtr, out: t.CPtr) -> t.CVoid: pass - -def simd_mul4f(a: t.CPtr, b: t.CPtr, out: t.CPtr) -> t.CVoid: pass - -def simd_div4f(a: t.CPtr, b: t.CPtr, out: t.CPtr) -> t.CVoid: pass - -def simd_add_array(a: t.CPtr, b: t.CPtr, out: t.CPtr, n: t.CSizeT) -> t.CVoid: pass - -def simd_sub_array(a: t.CPtr, b: t.CPtr, out: t.CPtr, n: t.CSizeT) -> t.CVoid: pass - -def simd_mul_array(a: t.CPtr, b: t.CPtr, out: t.CPtr, n: t.CSizeT) -> t.CVoid: pass - -def simd_div_array(a: t.CPtr, b: t.CPtr, out: t.CPtr, n: t.CSizeT) -> t.CVoid: pass - -def simd_sqrt_array(a: t.CPtr, out: t.CPtr, n: t.CSizeT) -> t.CVoid: pass - -def simd_abs_array(a: t.CPtr, out: t.CPtr, n: t.CSizeT) -> t.CVoid: pass - -def simd_neg_array(a: t.CPtr, out: t.CPtr, n: t.CSizeT) -> t.CVoid: pass - -def simd_dot_array(a: t.CPtr, b: t.CPtr, n: t.CSizeT, out: t.CPtr) -> t.CVoid: pass - -def simd_sqrt(x: t.CDouble) -> t.CDouble: pass - -def simd_fabs(x: t.CDouble) -> t.CDouble: pass - -def simd_floor(x: t.CDouble) -> t.CDouble: pass - -def simd_ceil(x: t.CDouble) -> t.CDouble: pass - -def simd_round(x: t.CDouble) -> t.CDouble: pass - -def simd_trunc(x: t.CDouble) -> t.CDouble: pass - -def simd_fma(a: t.CDouble, b: t.CDouble, c_val: t.CDouble) -> t.CDouble: pass - -def simd_copysign(mag: t.CDouble, sign: t.CDouble) -> t.CDouble: pass - -def simd_neg(x: t.CDouble) -> t.CDouble: pass - -def simd_minnum(a: t.CDouble, b: t.CDouble) -> t.CDouble: pass - -def simd_maxnum(a: t.CDouble, b: t.CDouble) -> t.CDouble: pass - -def simd_exp(x: t.CDouble) -> t.CDouble: pass - -def simd_log(x: t.CDouble) -> t.CDouble: pass - -def simd_sin(x: t.CDouble) -> t.CDouble: pass - -def simd_cos(x: t.CDouble) -> t.CDouble: pass - -def simd_pow(x: t.CDouble, y: t.CDouble) -> t.CDouble: pass diff --git a/.transpyc_cache/c2ed034f4bfaad51.doc.json b/.transpyc_cache/c2ed034f4bfaad51.doc.json deleted file mode 100644 index f8bc59e..0000000 --- a/.transpyc_cache/c2ed034f4bfaad51.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"add_imported_module": "记录已导入的模块名,返回新的 imported_modules 字符串指针", "is_module_imported": "检查模块是否已导入(词边界精确匹配,避免子串误匹配)", "add_from_import": "添加 from-import 映射 \"name:module\",返回新的 from_imports 字符串", "lookup_from_import": "查找 from-import 名称,返回模块名或 None\n\n 支持 star import: 如果 from_imports 中有 \"*:module\" 条目,\n 且未找到精确名称匹配,则返回 star import 的模块名。\n ", "ImportsHandle": "导入语句处理器:继承 Mixin 获得 Trans 回指针", "ImportsHandle.HandleImport": "处理 import 语句,返回 0", "ImportsHandle.HandleImportFromModule": "处理 from X import Y 的模块部分,更新 trans._imported_modules", "ImportsHandle.HandleImportFromNames": "处理 from X import Y 的名称部分,更新 trans._from_imports"} \ No newline at end of file diff --git a/.transpyc_cache/c2ed034f4bfaad51.pyi b/.transpyc_cache/c2ed034f4bfaad51.pyi deleted file mode 100644 index 7abd965..0000000 --- a/.transpyc_cache/c2ed034f4bfaad51.pyi +++ /dev/null @@ -1,34 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesImports.py -Module: lib.core.Handles.HandlesImports -""" - - -import t, c -from stdint import * -import ast -import memhub -import string -import viperlib -import stdio -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesStruct as HandlesStruct - -def add_imported_module(pool: memhub.MemBuddy | t.CPtr, imported_modules: str, name: str) -> str: pass - -def is_module_imported(imported_modules: str, name: str) -> int: pass - -def add_from_import(pool: memhub.MemBuddy | t.CPtr, from_imports: str, local_name: str, module_name: str) -> str: pass - -def lookup_from_import(from_imports: str, name: str) -> str: pass - - -@t.NoVTable -class ImportsHandle(HandlesBase.Mixin): - def __init__(self: ImportsHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleImport(self: ImportsHandle, node: ast.AST | t.CPtr) -> int: pass - def HandleImportFromModule(self: ImportsHandle, node: ast.AST | t.CPtr) -> int: pass - def HandleImportFromNames(self: ImportsHandle, node: ast.AST | t.CPtr) -> int: pass - -def NewImportsHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ImportsHandle | t.CPtr: pass diff --git a/.transpyc_cache/c2f78fe75716e993.doc.json b/.transpyc_cache/c2f78fe75716e993.doc.json deleted file mode 100644 index dda4745..0000000 --- a/.transpyc_cache/c2f78fe75716e993.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"get_func_name": "从函数节点提取函数名", "escape_llvm_string": "将字符串转换为 LLVM IR 字符串字面量 c\"...\\00\" ", "get_llvm_type_bits": "获取 LLVM 整数类型的位宽,非整数类型返回 0", "get_llvm_float_bits": "获取 LLVM 浮点类型的位宽,非浮点类型返回 0", "is_ptr_type": "检查 ty 是否是 Ptr 类型,返回 1=是, 0=否", "_deref_if_ptr_ptr": "如果 obj_ptr 是 Ptr(Ptr(...)),load 解引用获取内层指针", "coerce_to_type": "将 val 强制转换为 target_ty\n\n 整数: sext(扩展)/ trunc(截断)\n 浮点: fpext(扩展)/ fptrunc(截断)\n int→float: sitofp\n float→int: fptosi\n ", "create_global_string": "创建全局字符串常量并返回 i8* bitcast", "translate_constant": "翻译常量(int/str/bool)", "_infer_elem_type_from_value": "从 LLVM Value 的类型推断 list 元素类型名", "_find_pool_var": "查找上下文中的 pool 变量,返回 alloca 或 None", "translate_list_literal": "翻译 list 字面量 [a, b, c] → list[T](pool) + append 序列", "translate_value": "翻译值表达式为 LLVM Value", "translate_compare": "翻译比较表达式,返回 i1 结果", "translate_unaryop": "翻译一元运算(-x, +x, not x, ~x)", "translate_boolop": "翻译布尔运算(and/or)的短路求值,返回 i1", "translate_name_value": "翻译变量引用(Name 节点)→ load", "ExprHandle": "表达式处理器:继承 Mixin 获得 Trans 回指针", "ExprHandle.HandleValue": "翻译值表达式,从 self.Trans 获取共享状态", "list_getitem_inline": "内联生成 list __getitem__ 逻辑,返回元素地址 (i8*)", "_list_elem_type_from_name": "从 list 类型名提取元素 LLVM 类型", "list_setitem_inline": "内联生成 list __setitem__ 逻辑,返回 0", "is_list_subscript": "检查 Subscript 节点是否是 list[T] 类型,返回 list 对象指针或 None", "translate_subscript": "翻译下标表达式,返回加载的元素值", "translate_attribute": "翻译属性访问,返回加载的字段值", "get_subscript_ptr": "获取下标表达式的元素指针(用于赋值 lhs)", "get_attribute_ptr": "获取属性访问的字段指针(用于赋值 lhs)"} \ No newline at end of file diff --git a/.transpyc_cache/c2f78fe75716e993.pyi b/.transpyc_cache/c2f78fe75716e993.pyi deleted file mode 100644 index c495a8e..0000000 --- a/.transpyc_cache/c2f78fe75716e993.pyi +++ /dev/null @@ -1,84 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExpr.py -Module: lib.core.Handles.HandlesExpr -""" - - -import t, c -from stdint import * -import ast -import memhub -import string -import llvmlite -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesExprOps as HandlesExprOps -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.Handles.HandlesNonlocal as HandlesNonlocal -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesEnum as HandlesEnum -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -def get_func_name(func_node: ast.AST | t.CPtr) -> str: pass - -def escape_llvm_string(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def get_llvm_type_bits(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def get_llvm_float_bits(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def is_ptr_type(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def _deref_if_ptr_ptr(builder: llvmlite.IRBuilder | t.CPtr, obj_ptr: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def coerce_to_type(builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def create_global_string(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, str_val: str, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_constant(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_elem_type_from_value(pool: memhub.MemBuddy | t.CPtr, value: llvmlite.Value | t.CPtr) -> str: pass - -def _find_pool_var(trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_list_literal(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, elem_type_name: str, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_value(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_compare(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_unaryop(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_boolop(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_name_value(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -@t.NoVTable -class ExprHandle(HandlesBase.Mixin): - def __init__(self: ExprHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleValue(self: ExprHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def NewExprHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprHandle | t.CPtr: pass - -def list_getitem_inline(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, lm_obj: llvmlite.Value | t.CPtr, idx_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _list_elem_type_from_name(pool: memhub.MemBuddy | t.CPtr, struct_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def list_setitem_inline(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, lm_obj: llvmlite.Value | t.CPtr, idx_val: llvmlite.Value | t.CPtr, rhs_val: llvmlite.Value | t.CPtr) -> int: pass - -def is_list_subscript(node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_subscript(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_attribute(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -import stdio - -def get_subscript_ptr(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def get_attribute_ptr(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass diff --git a/.transpyc_cache/c325121077fc50d9.doc.json b/.transpyc_cache/c325121077fc50d9.doc.json deleted file mode 100644 index 28f2ad8..0000000 --- a/.transpyc_cache/c325121077fc50d9.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_register_cexport_from_funcdef": "预注册 CExport/State 函数到全局表(仅注册,不生成 IR)", "translate_children": "遍历 tree.children 并翻译每个子节点\n\n Args:\n trans: 翻译器(含所有共享状态)\n tree: AST 模块节点\n\n Returns:\n t.CInt: 新增的变量数\n ", "handle_module_level_var": "处理模块级变量声明,创建全局变量", "create_wrapper_main": "创建包装 main 函数并翻译所有顶层语句\n\n Args:\n trans: 翻译器(含所有共享状态)\n tree: AST 模块节点\n i32_ty: i32 LLVMType\n\n Returns:\n t.CInt: 新增的变量数\n "} \ No newline at end of file diff --git a/.transpyc_cache/c325121077fc50d9.pyi b/.transpyc_cache/c325121077fc50d9.pyi deleted file mode 100644 index 2294a70..0000000 --- a/.transpyc_cache/c325121077fc50d9.pyi +++ /dev/null @@ -1,30 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesMain.py -Module: lib.core.Handles.HandlesMain -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import viperlib -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesBody as HandlesBody -import lib.core.Handles.HandlesFunctions as HandlesFunctions -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -def _register_cexport_from_funcdef(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - -def translate_children(trans: HT.Translator | t.CPtr, tree: ast.AST | t.CPtr) -> int: pass - -def handle_module_level_var(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - -def create_wrapper_main(trans: HT.Translator | t.CPtr, tree: ast.AST | t.CPtr, i32_ty: llvmlite.LLVMType | t.CPtr) -> int: pass diff --git a/.transpyc_cache/c39f3e540adb7b4e.doc.json b/.transpyc_cache/c39f3e540adb7b4e.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/c39f3e540adb7b4e.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/c39f3e540adb7b4e.pyi b/.transpyc_cache/c39f3e540adb7b4e.pyi deleted file mode 100644 index 7862af7..0000000 --- a/.transpyc_cache/c39f3e540adb7b4e.pyi +++ /dev/null @@ -1,41 +0,0 @@ -""" -Auto-generated Python stub file from llvmir_test.py -Module: llvmir_test -""" - - -import t, c -from stdint import * -import stdio - -def test_add() -> t.CInt: pass - -def test_sub() -> t.CInt: pass - -def test_mul() -> t.CInt: pass - -def test_sdiv() -> t.CInt: pass - -def test_and() -> t.CInt: pass - -def test_or() -> t.CInt: pass - -def test_xor() -> t.CInt: pass - -def test_shl() -> t.CInt: pass - -def test_lout() -> t.CInt: pass - -def test_icmp_eq() -> t.CInt: pass - -def test_icmp_ne() -> t.CInt: pass - -def test_icmp_slt() -> t.CInt: pass - -def test_srem() -> t.CInt: pass - -def test_lshr() -> t.CInt: pass - -def test_nested() -> t.CInt: pass - -def llvmir_test() -> t.CInt: pass diff --git a/.transpyc_cache/c3a6aed1f1fb8b1e.pyi b/.transpyc_cache/c3a6aed1f1fb8b1e.pyi deleted file mode 100644 index 68a99b1..0000000 --- a/.transpyc_cache/c3a6aed1f1fb8b1e.pyi +++ /dev/null @@ -1,240 +0,0 @@ -""" -Auto-generated Python stub file from numpy.__init__.py -Module: numpy.__init__ -""" - - -from stdint import * -import stdlib -import string -import vipermath -import stdio -import t, c -import memhub - -MAX_NDIM: t.CDefine = 4 -float64: t.CTypedef = t.CDouble -float32: t.CTypedef = t.CFloat -int64: t.CTypedef = t.CLong -int32: t.CTypedef = t.CInt -uint8: t.CTypedef = t.CUnsignedChar -pi: t.CDefine = 3.14159265358979323846 -e: t.CDefine = 2.71828182845904523536 - -@t.Object -class ndarray[T]: - data: T | t.CPtr - shape: t.CArray[t.CSizeT, MAX_NDIM] - strides: t.CArray[t.CSizeT, MAX_NDIM] - ndim: t.CInt - size: t.CSizeT - owns_data: t.CInt - pool: memhub.MemManager | t.CPtr - def __new__(self: ndarray, pool: memhub.MemManager | t.CPtr, n: t.CSizeT) -> t.CInt: pass - def __add__(self: ndarray, other: ndarray[T] | t.CPtr) -> ndarray[T] | t.CPtr: pass - def __sub__(self: ndarray, other: ndarray[T] | t.CPtr) -> ndarray[T] | t.CPtr: pass - def __mul__(self: ndarray, other: ndarray[T] | t.CPtr) -> ndarray[T] | t.CPtr: pass - def __truediv__(self: ndarray, other: ndarray[T] | t.CPtr) -> ndarray[T] | t.CPtr: pass - def __floordiv__(self: ndarray, other: ndarray[T] | t.CPtr) -> ndarray[T] | t.CPtr: pass - def __mod__(self: ndarray, other: ndarray[T] | t.CPtr) -> ndarray[T] | t.CPtr: pass - def __neg__(self: ndarray) -> ndarray[T] | t.CPtr: pass - def __len__(self: ndarray) -> t.CInt: pass - def at2d(self: ndarray, row: t.CSizeT, col: t.CSizeT) -> T: pass - def set2d(self: ndarray, row: t.CSizeT, col: t.CSizeT, val: T) -> t.CInt: pass - def delete(self: ndarray) -> t.CInt: pass - def fill(self: ndarray, val: T) -> t.CInt: pass - def copy(self: ndarray) -> ndarray[T] | t.CPtr: pass - def reshape(self: ndarray, new_shape: INTPTR, new_ndim: t.CInt) -> ndarray[T] | t.CPtr: pass - def sum(self: ndarray) -> T: pass - def mean(self: ndarray) -> T: pass - def min(self: ndarray) -> T: pass - def max(self: ndarray) -> T: pass - def argmax(self: ndarray) -> t.CInt: pass - def argmin(self: ndarray) -> t.CInt: pass - def dot(self: ndarray, other: ndarray[T] | t.CPtr) -> T: pass - def T(self: ndarray) -> ndarray[T] | t.CPtr: pass - def print_arr(self: ndarray) -> t.CInt: pass - -Float64Array: t.CTypedef = ndarray[t.CDouble] -Float32Array: t.CTypedef = ndarray[t.CFloat] -Int64Array: t.CTypedef = ndarray[t.CLong] -Int32Array: t.CTypedef = ndarray[t.CInt] -Uint8Array: t.CTypedef = ndarray[t.CUnsignedChar] - -def _alloc_ndarray(pool: memhub.MemManager | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def _compute_strides(a: ndarray[t.CDouble] | t.CPtr) -> t.CInt: pass - -def _empty_like(a: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def array(pool: memhub.MemManager | t.CPtr, data: t.CDouble | t.CPtr, n: t.CSizeT) -> ndarray[t.CDouble] | t.CPtr: pass - -def zeros(pool: memhub.MemManager | t.CPtr, n: t.CSizeT) -> ndarray[t.CDouble] | t.CPtr: pass - -def ones(pool: memhub.MemManager | t.CPtr, n: t.CSizeT) -> ndarray[t.CDouble] | t.CPtr: pass - -def full(pool: memhub.MemManager | t.CPtr, n: t.CSizeT, val: t.CDouble) -> ndarray[t.CDouble] | t.CPtr: pass - -def arange(pool: memhub.MemManager | t.CPtr, start: t.CDouble, stop: t.CDouble, step: t.CDouble) -> ndarray[t.CDouble] | t.CPtr: pass - -def linspace(pool: memhub.MemManager | t.CPtr, start: t.CDouble, stop: t.CDouble, num: t.CSizeT) -> ndarray[t.CDouble] | t.CPtr: pass - -def empty2d(pool: memhub.MemManager | t.CPtr, rows: t.CSizeT, cols: t.CSizeT) -> ndarray[t.CDouble] | t.CPtr: pass - -def zeros2d(pool: memhub.MemManager | t.CPtr, rows: t.CSizeT, cols: t.CSizeT) -> ndarray[t.CDouble] | t.CPtr: pass - -def ones2d(pool: memhub.MemManager | t.CPtr, rows: t.CSizeT, cols: t.CSizeT) -> ndarray[t.CDouble] | t.CPtr: pass - -def eye(pool: memhub.MemManager | t.CPtr, n: t.CSizeT) -> ndarray[t.CDouble] | t.CPtr: pass - -def diag(pool: memhub.MemManager | t.CPtr, vals: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def np_abs(a: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def np_sqrt(a: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def np_exp(a: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def np_log(a: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def np_sin(a: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def np_cos(a: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def np_tan(a: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def np_pow(a: ndarray[t.CDouble] | t.CPtr, p: t.CDouble) -> ndarray[t.CDouble] | t.CPtr: pass - -def add_scalar(a: ndarray[t.CDouble] | t.CPtr, s: t.CDouble) -> ndarray[t.CDouble] | t.CPtr: pass - -def mul_scalar(a: ndarray[t.CDouble] | t.CPtr, s: t.CDouble) -> ndarray[t.CDouble] | t.CPtr: pass - -def sub_scalar(a: ndarray[t.CDouble] | t.CPtr, s: t.CDouble) -> ndarray[t.CDouble] | t.CPtr: pass - -def div_scalar(a: ndarray[t.CDouble] | t.CPtr, s: t.CDouble) -> ndarray[t.CDouble] | t.CPtr: pass - -def matmul(a: ndarray[t.CDouble] | t.CPtr, b: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def dot_product(a: ndarray[t.CDouble] | t.CPtr, b: ndarray[t.CDouble] | t.CPtr) -> t.CDouble: pass - -def np_sum(a: ndarray[t.CDouble] | t.CPtr) -> t.CDouble: pass - -def np_mean(a: ndarray[t.CDouble] | t.CPtr) -> t.CDouble: pass - -def np_min(a: ndarray[t.CDouble] | t.CPtr) -> t.CDouble: pass - -def np_max(a: ndarray[t.CDouble] | t.CPtr) -> t.CDouble: pass - -def np_argmax(a: ndarray[t.CDouble] | t.CPtr) -> t.CInt: pass - -def np_argmin(a: ndarray[t.CDouble] | t.CPtr) -> t.CInt: pass - -def var(a: ndarray[t.CDouble] | t.CPtr) -> t.CDouble: pass - -def std(a: ndarray[t.CDouble] | t.CPtr) -> t.CDouble: pass - -def norm(a: ndarray[t.CDouble] | t.CPtr) -> t.CDouble: pass - -def clip(a: ndarray[t.CDouble] | t.CPtr, lo: t.CDouble, hi: t.CDouble) -> ndarray[t.CDouble] | t.CPtr: pass - -def concatenate(a: ndarray[t.CDouble] | t.CPtr, b: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def sort_arr(a: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def reverse(a: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def np_log10(a: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def np_log2(a: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def np_floor(a: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def np_ceil(a: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def np_round(a: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def np_sign(a: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def np_tanh(a: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def np_sinh(a: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def np_cosh(a: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def np_arcsin(a: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def np_arccos(a: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def np_arctan(a: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def np_arctan2(y: ndarray[t.CDouble] | t.CPtr, x: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def np_degrees(a: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def np_radians(a: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def np_isnan(a: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def np_isinf(a: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def np_maximum(a: ndarray[t.CDouble] | t.CPtr, b: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def np_minimum(a: ndarray[t.CDouble] | t.CPtr, b: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def cumsum(a: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def diff(a: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def flatten(a: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def trace(a: ndarray[t.CDouble] | t.CPtr) -> t.CDouble: pass - -def outer(a: ndarray[t.CDouble] | t.CPtr, b: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def np_where(condition: ndarray[t.CDouble] | t.CPtr, x: ndarray[t.CDouble] | t.CPtr, y: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def np_count_nonzero(a: ndarray[t.CDouble] | t.CPtr) -> t.CInt: pass - -def np_all(a: ndarray[t.CDouble] | t.CPtr) -> t.CInt: pass - -def np_any(a: ndarray[t.CDouble] | t.CPtr) -> t.CInt: pass - -def np_equal(a: ndarray[t.CDouble] | t.CPtr, b: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def np_not_equal(a: ndarray[t.CDouble] | t.CPtr, b: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def np_less(a: ndarray[t.CDouble] | t.CPtr, b: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def np_greater(a: ndarray[t.CDouble] | t.CPtr, b: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def np_less_equal(a: ndarray[t.CDouble] | t.CPtr, b: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def np_greater_equal(a: ndarray[t.CDouble] | t.CPtr, b: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def empty(pool: memhub.MemManager | t.CPtr, n: t.CSizeT) -> ndarray[t.CDouble] | t.CPtr: pass - -def full2d(pool: memhub.MemManager | t.CPtr, rows: t.CSizeT, cols: t.CSizeT, val: t.CDouble) -> ndarray[t.CDouble] | t.CPtr: pass - -def zeros_like(a: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def ones_like(a: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def arange1(pool: memhub.MemManager | t.CPtr, stop: t.CDouble) -> ndarray[t.CDouble] | t.CPtr: pass - -def linspace2(pool: memhub.MemManager | t.CPtr, start: t.CDouble, stop: t.CDouble) -> ndarray[t.CDouble] | t.CPtr: pass - -def meshgrid(x: ndarray[t.CDouble] | t.CPtr, y: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def det2x2(a: ndarray[t.CDouble] | t.CPtr) -> t.CDouble: pass - -def inv2x2(a: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def cross3(a: ndarray[t.CDouble] | t.CPtr, b: ndarray[t.CDouble] | t.CPtr) -> ndarray[t.CDouble] | t.CPtr: pass - -def np_interp(x: t.CDouble, xp: ndarray[t.CDouble] | t.CPtr, fp: ndarray[t.CDouble] | t.CPtr) -> t.CDouble: pass - -def prod(a: ndarray[t.CDouble] | t.CPtr) -> t.CDouble: pass - -def median(a: ndarray[t.CDouble] | t.CPtr) -> t.CDouble: pass - -def percentile(a: ndarray[t.CDouble] | t.CPtr, q: t.CDouble) -> t.CDouble: pass diff --git a/.transpyc_cache/c3b259b4059f8668.pyi b/.transpyc_cache/c3b259b4059f8668.pyi deleted file mode 100644 index 67ff4ce..0000000 --- a/.transpyc_cache/c3b259b4059f8668.pyi +++ /dev/null @@ -1,23 +0,0 @@ -""" -Auto-generated Python stub file from viperlib.py -Module: viperlib -""" - - -import t, c -import viperio -from stdarg import arg, va_arg - -TEMP_BUF_SIZE: t.CDefine = 68 - -def get_digit_count(num: t.CUnsignedInt, base: t.CInt) -> t.CStatic | t.CInt: pass - -def sprintf(buf: t.CChar | t.CPtr, rule: str, *args) -> t.CVoid | t.CExport: pass - -def vsprintf(buf: t.CChar | t.CPtr, rule: str, *args) -> t.CInt: pass - -def snprintf(buf: t.CChar | t.CPtr, size: t.CSizeT, fmt: str, *args) -> t.CInt | t.CExport: pass - -def _check_special_float(fv: t.CDouble) -> t.CInt: pass - -def vsnprintf(buf: t.CChar | t.CPtr, size: t.CSizeT, fmt: str, ap: t.CChar | t.CPtr) -> t.CInt | t.CExport: pass diff --git a/.transpyc_cache/c4960bf577b21f14.doc.json b/.transpyc_cache/c4960bf577b21f14.doc.json deleted file mode 100644 index c90d338..0000000 --- a/.transpyc_cache/c4960bf577b21f14.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"SrcFileEntry": "源文件条目", "_ScanDirForPyFiles": "递归扫描目录,收集 .py 文件到 entries,返回新的 file_count", "RunMultiFileProject": "多文件项目编译\n\n Returns: 0 成功,非 0 失败\n "} \ No newline at end of file diff --git a/.transpyc_cache/c4960bf577b21f14.pyi b/.transpyc_cache/c4960bf577b21f14.pyi deleted file mode 100644 index 819d958..0000000 --- a/.transpyc_cache/c4960bf577b21f14.pyi +++ /dev/null @@ -1,41 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Phase2.py -Module: lib.core.Phase2 -""" - - -import t, c -from stdint import * -import stdio -import string -import stdlib -import memhub -import viperlib -import w32.fileio as fileio -import w32.win32file -import w32.win32base -import sys -import ast -import llvmlite -import subprocess -import argparse -import lib.core.VLogger as VLogger -import lib.core.Handles.HandlesTranslator as HandlesTranslator -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.BuildPipeline as BuildPipeline -import lib.core.StubMerger as StubMerger -import lib.Projectrans.Utils as Utils -import lib.Projectrans.Config as Config - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -SRC_BUF_SIZE: t.CDefine = 1048576 -MAX_SRC_FILES: t.CDefine = 64 - -@t.NoVTable -class SrcFileEntry: - Path: str - Sha1: str - -def _ScanDirForPyFiles(mb: memhub.MemBuddy | t.CPtr, dir_path: str, entries: SrcFileEntry | t.CPtr, entry_size: t.CSizeT, file_count: int, max_files: int) -> int: pass - -def RunMultiFileProject(mb: memhub.MemBuddy | t.CPtr, source_dir: str, temp_dir: str, output_dir: str, cc_cmd: str, cc_flags: str, linker_cmd: str, linker_flags: str, linker_output: str, includes_binary_dir: str, includes_dir: str, do_phase1: int, do_phase2: int, log: VLogger.Logger | t.CPtr, args: argparse.ParsedArgs | t.CPtr) -> int: pass diff --git a/.transpyc_cache/c4f2d483ec0f4db5.doc.json b/.transpyc_cache/c4f2d483ec0f4db5.doc.json deleted file mode 100644 index a8e6f20..0000000 --- a/.transpyc_cache/c4f2d483ec0f4db5.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_is_cenum_base": "检查 base 节点是否为 t.CEnum,返回 1=是 / 0=否", "_is_enum_class": "检查 ClassDef 是否继承自 t.CEnum,返回 1=是 / 0=否", "_is_cunion_base": "检查 base 节点是否为 t.CUnion,返回 1=是 / 0=否", "_is_union_class": "检查 ClassDef 是否继承自 t.CUnion,返回 1=是 / 0=否", "_has_decorator": "检查 decorator_list 中是否有指定装饰器名", "_is_marker_base": "检查基类名是否为标记基类,返回 1=是 / 0=否", "_get_base_name": "从 base AST 节点提取基类名,返回 None=失败", "_get_parent_class": "获取 ClassDef 的真实父类名,返回 None=无真实父类", "_has_any_func_cvtable": "检查类中是否有任何函数标记了 @t.CVTable,返回 1=有 / 0=无", "_should_method_be_virtual": "判断方法是否应该进入虚表,返回 1=包含 / 0=排除", "_detect_vtable_status": "检测类是否应该启用虚表", "_resolve_enum_member_type": "解析枚举成员的类型注解为 LLVM 整数类型", "_is_state_annotation": "检查注解节点是否为 t.State,返回 1=是 / 0=否", "_extract_int_value": "从 AST 节点提取整数值,失败返回 0", "_translate_enum_def": "翻译枚举类定义,返回 0", "_get_type_size": "计算 LLVM 类型的字节大小", "_translate_union_def": "翻译联合体定义,返回 0", "_is_generic_class": "检查 ClassDef 是否有类型参数(泛型类),返回 1=是 / 0=否", "_register_generic_template": "注册泛型类模板(类名 + ClassDef 节点)", "_find_generic_template": "查找泛型类模板,返回 ClassDef 节点或 None", "_mangle_generic_class_name": "生成特化类名: list + [int] -> list[int]\n\n 分配新缓冲区拼接,避免原地 strcat 导致缓冲区溢出\n ", "_clone_annotation": "拷贝类型注解表达式,替换类型参数 T 为具体类型名\n\n tp_names: 类型参数名列表 ['T']\n type_args: 类型实参名列表 ['int']\n ", "_clone_arguments": "拷贝 Arguments 节点,替换 arg annotation 中的 T", "_clone_classdef_for_spec": "拷贝 ClassDef 节点用于泛型特化\n\n - 替换类名为 spec_name\n - 清除 type_params(特化后不是泛型类)\n - 拷贝 children 中的 AnnAssign 和 FunctionDef,替换类型注解中的 T\n - 方法体直接引用原始节点(通过 type_map 上下文处理 T)\n ", "_find_cached_spec": "查找已缓存的特化名,未找到返回 None", "_cache_spec": "缓存特化结果", "_specialize_generic_class": "特化泛型类,返回特化类名\n\n 1. 查找泛型模板\n 2. 生成特化名\n 3. 检查缓存\n 4. 拷贝 ClassDef 节点(替换类型注解中的 T)\n 5. 设置 type_map 上下文(用于方法体中的 T 替换)\n 6. 调用 translate_class_def 翻译特化类\n 7. 返回特化名\n ", "translate_class_def": "翻译 class 定义,返回 0", "_vtable_strcat": "将 src 追加到 dst 末尾", "_vtable_name_needs_quote": "检查 LLVM 标识符是否需要引号(以数字开头或含 '.')", "_format_func_type_str": "从 Function 对象生成函数类型字符串", "_generate_vtable": "生成 VTable 全局变量", "_translate_oop_methods": "扫描 class body 中的方法并翻译,生成 __before_init__", "_translate_method": "翻译单个方法,返回 0", "_generate_before_init": "生成 __before_init__ 函数,返回 0"} \ No newline at end of file diff --git a/.transpyc_cache/c4f2d483ec0f4db5.pyi b/.transpyc_cache/c4f2d483ec0f4db5.pyi deleted file mode 100644 index 62b2e80..0000000 --- a/.transpyc_cache/c4f2d483ec0f4db5.pyi +++ /dev/null @@ -1,104 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesClassDef.py -Module: lib.core.Handles.HandlesClassDef -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import viperlib -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesEnum as HandlesEnum - -ENUM_MEMBER_MAX_LOCAL: t.CDefine = 64 - -def _is_cenum_base(base_node: ast.AST | t.CPtr) -> int: pass - -def _is_enum_class(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _is_cunion_base(base_node: ast.AST | t.CPtr) -> int: pass - -def _is_union_class(cd: ast.ClassDef | t.CPtr) -> int: pass - - -_MARKER_BASES: t.CDefine = 8 - -def _has_decorator(decorator_list: list[ast.AST | t.CPtr] | t.CPtr, deco_name: str) -> int: pass - -def _is_marker_base(base_name: str) -> int: pass - -def _get_base_name(base_node: ast.AST | t.CPtr) -> str: pass - -def _get_parent_class(cd: ast.ClassDef | t.CPtr) -> str: pass - -def _has_any_func_cvtable(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _should_method_be_virtual(cd: ast.ClassDef | t.CPtr, fd: ast.FunctionDef | t.CPtr, trans: HT.Translator | t.CPtr) -> int: pass - -def _detect_vtable_status(cd: ast.ClassDef | t.CPtr, trans: HT.Translator | t.CPtr) -> int: pass - -def _resolve_enum_member_type(pool: memhub.MemBuddy | t.CPtr, ann_node: ast.AST | t.CPtr, imported_modules: str, from_imports: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _is_state_annotation(node: ast.AST | t.CPtr) -> int: pass - -def _extract_int_value(node: ast.AST | t.CPtr) -> t.CInt64T: pass - -def _translate_enum_def(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr) -> int: pass - -def _get_type_size(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def _translate_union_def(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr) -> int: pass - - -_generic_class_names: t.CExtern | list[str] | t.CPtr -_generic_class_nodes: t.CExtern | list[ast.ClassDef | t.CPtr] | t.CPtr - -def _is_generic_class(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _register_generic_template(pool: memhub.MemBuddy | t.CPtr, cd: ast.ClassDef | t.CPtr) -> t.CInt: pass - -def _find_generic_template(class_name: str) -> ast.ClassDef | t.CPtr: pass - -def _mangle_generic_class_name(pool: memhub.MemBuddy | t.CPtr, class_name: str, type_args: list[str] | t.CPtr) -> str: pass - -def _clone_annotation(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.AST | t.CPtr: pass - -def _clone_arguments(pool: memhub.MemBuddy | t.CPtr, args: ast.AST | t.CPtr, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.AST | t.CPtr: pass - -def _clone_classdef_for_spec(pool: memhub.MemBuddy | t.CPtr, cd: ast.ClassDef | t.CPtr, spec_name: str, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.ClassDef | t.CPtr: pass - - -_spec_keys: t.CExtern | list[str] | t.CPtr -_spec_names: t.CExtern | list[str] | t.CPtr - -def _find_cached_spec(spec_key: str) -> str: pass - -def _cache_spec(pool: memhub.MemBuddy | t.CPtr, spec_key: str, spec_name: str) -> t.CInt: pass - -def _specialize_generic_class(trans: HT.Translator | t.CPtr, class_name: str, type_args: list[str] | t.CPtr) -> str: pass - -def translate_class_def(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - - -VTBL_METHOD_MAX: t.CDefine = 32 - -def _vtable_strcat(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _vtable_name_needs_quote(name: str) -> int: pass - -def _format_func_type_str(pool: memhub.MemBuddy | t.CPtr, buf: t.CChar | t.CPtr, buf_size: t.CSizeT, func: llvmlite.Function | t.CPtr) -> int: pass - -def _generate_vtable(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr, class_name: str) -> int: pass - -def _translate_oop_methods(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass - -def _translate_method(trans: HT.Translator | t.CPtr, fd: ast.FunctionDef | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass - -def _generate_before_init(trans: HT.Translator | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass diff --git a/.transpyc_cache/c688cec0f891dd97.doc.json b/.transpyc_cache/c688cec0f891dd97.doc.json deleted file mode 100644 index 86441ed..0000000 --- a/.transpyc_cache/c688cec0f891dd97.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_load_includes_sha1_set": "读取 _sha1_map.txt,将 includes/ 开头的 SHA1 写入 sha1_set\n sha1_set 大小为 MAX_INCLUDES_SHA1 * 17(每个 SHA1 16字符+null)\n 返回找到的 includes SHA1 数量,-1 表示错误", "_is_in_sha1_set": "检查 sha1 是否在集合中", "WriteIncludesSha1Map": "将 includes 扫描结果写入 _sha1_map.txt(供 StubMerger 使用)\n\n 若 filter_set 不为 None 且 filter_count > 0,只写入 filter_set 中的条目。\n ", "_IsFuncDeclaredOrDefined": "检查 out_buf 中是否已有函数的 declare 或 define 行", "_CommentOutDeclareInBuf": "在 out_buf 中搜索 declare 行(包含 func_sig),将其注释掉", "_CommentOutGlobalInBuf": "在 out_buf 中搜索全局变量定义行(以 global_name 开头),将行首改为 ';'", "_CommentOutOpaqueTypeInBuf": "在 out_buf 中搜索 type_name_prefix 对应的 opaque 声明行,将行首改为 ';'\n\n type_name_prefix 格式: '%\"sha1.ClassName\"'(不含 '=' 和后续内容)\n 返回 1=已注释, 0=未找到\n ", "_HasFullTypeDefinition": "检查 out_buf 中是否已有 type_name_prefix 的完整定义", "_LoadAndAppendStub": "加载依赖 stub 并追加(跳过 header,去重)", "_LoadAndAppendTextDeclares": "从依赖 text.ll 提取 declare(define 转 declare),追加到 out_buf", "_PathToModuleName": "将文件路径转换为模块名\n\n 特殊处理 __init__.py:includes/ast/__init__.py → ast(而非 ast.__init__)\n ", "_BuildIncludesSha1Map": "从 _sha1_map.txt 构建 sha1→module_name 映射,返回条目数", "_FindSha1ByModName": "从模块名查找 SHA1(精确匹配)", "_AddSha1ToSet": "将 SHA1 加入集合,返回新 count", "_BuildReachableSha1Set": "构建可达 SHA1 集合(依赖图按需翻译)", "BuildCombinedIR": "组合本地 stub + 依赖 stubs + 本地 text → out_buf(按需加载)"} \ No newline at end of file diff --git a/.transpyc_cache/c688cec0f891dd97.pyi b/.transpyc_cache/c688cec0f891dd97.pyi deleted file mode 100644 index 4466a75..0000000 --- a/.transpyc_cache/c688cec0f891dd97.pyi +++ /dev/null @@ -1,60 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.StubMerger.py -Module: lib.core.StubMerger -""" - - -import t, c -from stdint import * -import memhub -import string -import stdio -import stdlib -import llvmlite -import w32.win32file as win32file -import w32.win32base as win32base -import w32.fileio as fileio -import viperlib -import sys -import ast -import lib.core.IncludesScanner as IncludesScanner -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesTranslator as HandlesTranslator - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -MAX_INCLUDES_SHA1: t.CDefine = 256 -STUB_READ_BUF_SIZE: t.CDefine = 262144 -MAX_INCLUDES: t.CDefine = 256 - -def _load_includes_sha1_set(pool: memhub.MemBuddy | t.CPtr, temp_dir: str, sha1_set: str) -> int: pass - -def _is_in_sha1_set(sha1: str, sha1_set: str, set_count: int) -> int: pass - -def WriteIncludesSha1Map(mb: memhub.MemBuddy | t.CPtr, temp_dir: str, scan_result: IncludesScanner.ScanResult | t.CPtr, filter_set: t.CChar | t.CPtr, filter_count: int) -> int: pass - -def _IsFuncDeclaredOrDefined(out_buf: bytes, func_sig: str) -> int: pass - -def _CommentOutDeclareInBuf(out_buf: bytes, func_sig: str) -> int: pass - -def _CommentOutGlobalInBuf(out_buf: bytes, global_name: str) -> int: pass - -def _CommentOutOpaqueTypeInBuf(out_buf: bytes, type_name_prefix: str) -> int: pass - -def _HasFullTypeDefinition(out_buf: bytes, type_name_prefix: str) -> int: pass - -def _LoadAndAppendStub(temp_dir: str, td_len: t.CSizeT, dep_sha1: str, dep_buf: bytes, out_buf: bytes, out_size: t.CSizeT, out_pos: t.CSizeT) -> t.CSizeT: pass - -def _LoadAndAppendTextDeclares(temp_dir: str, td_len: t.CSizeT, dep_sha1: str, dep_buf: bytes, out_buf: bytes, out_size: t.CSizeT, out_pos: t.CSizeT) -> t.CSizeT: pass - -def _PathToModuleName(path: str) -> str: pass - -def _BuildIncludesSha1Map(temp_dir: str, td_len: t.CSizeT, sha1_list: t.CChar | t.CPtr, mod_list: t.CChar | t.CPtr) -> int: pass - -def _FindSha1ByModName(sha1_arr: t.CChar | t.CPtr, mod_arr: t.CChar | t.CPtr, count: int, mod_name: str) -> str: pass - -def _AddSha1ToSet(set_buf: t.CChar | t.CPtr, count: int, sha1: str) -> int: pass - -def _BuildReachableSha1Set(mb: memhub.MemBuddy | t.CPtr, source_dir: str, temp_dir: str, reachable_set: t.CChar | t.CPtr) -> int: pass - -def BuildCombinedIR(temp_dir: str, local_sha1: str, out_buf: bytes, out_size: t.CSizeT) -> t.CSizeT: pass diff --git a/.transpyc_cache/c70684ccfe48a5a9.doc.json b/.transpyc_cache/c70684ccfe48a5a9.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/c70684ccfe48a5a9.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/c70684ccfe48a5a9.pyi b/.transpyc_cache/c70684ccfe48a5a9.pyi deleted file mode 100644 index f6f33f4..0000000 --- a/.transpyc_cache/c70684ccfe48a5a9.pyi +++ /dev/null @@ -1,24 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - - -from stdint import * -import w32.win32console -import t, c -from t import CInt, CExport -import memhub -import stdlib -import sys -import os -import os._win32 -import os._posix -import os.path -import shutil -import subprocess -import syslibtest_impl - -ARENA_SIZE: t.CDefine = 1048576 - -def main() -> CInt | CExport: pass diff --git a/.transpyc_cache/c7b66e67f49c5c06.doc.json b/.transpyc_cache/c7b66e67f49c5c06.doc.json deleted file mode 100644 index a8e6f20..0000000 --- a/.transpyc_cache/c7b66e67f49c5c06.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_is_cenum_base": "检查 base 节点是否为 t.CEnum,返回 1=是 / 0=否", "_is_enum_class": "检查 ClassDef 是否继承自 t.CEnum,返回 1=是 / 0=否", "_is_cunion_base": "检查 base 节点是否为 t.CUnion,返回 1=是 / 0=否", "_is_union_class": "检查 ClassDef 是否继承自 t.CUnion,返回 1=是 / 0=否", "_has_decorator": "检查 decorator_list 中是否有指定装饰器名", "_is_marker_base": "检查基类名是否为标记基类,返回 1=是 / 0=否", "_get_base_name": "从 base AST 节点提取基类名,返回 None=失败", "_get_parent_class": "获取 ClassDef 的真实父类名,返回 None=无真实父类", "_has_any_func_cvtable": "检查类中是否有任何函数标记了 @t.CVTable,返回 1=有 / 0=无", "_should_method_be_virtual": "判断方法是否应该进入虚表,返回 1=包含 / 0=排除", "_detect_vtable_status": "检测类是否应该启用虚表", "_resolve_enum_member_type": "解析枚举成员的类型注解为 LLVM 整数类型", "_is_state_annotation": "检查注解节点是否为 t.State,返回 1=是 / 0=否", "_extract_int_value": "从 AST 节点提取整数值,失败返回 0", "_translate_enum_def": "翻译枚举类定义,返回 0", "_get_type_size": "计算 LLVM 类型的字节大小", "_translate_union_def": "翻译联合体定义,返回 0", "_is_generic_class": "检查 ClassDef 是否有类型参数(泛型类),返回 1=是 / 0=否", "_register_generic_template": "注册泛型类模板(类名 + ClassDef 节点)", "_find_generic_template": "查找泛型类模板,返回 ClassDef 节点或 None", "_mangle_generic_class_name": "生成特化类名: list + [int] -> list[int]\n\n 分配新缓冲区拼接,避免原地 strcat 导致缓冲区溢出\n ", "_clone_annotation": "拷贝类型注解表达式,替换类型参数 T 为具体类型名\n\n tp_names: 类型参数名列表 ['T']\n type_args: 类型实参名列表 ['int']\n ", "_clone_arguments": "拷贝 Arguments 节点,替换 arg annotation 中的 T", "_clone_classdef_for_spec": "拷贝 ClassDef 节点用于泛型特化\n\n - 替换类名为 spec_name\n - 清除 type_params(特化后不是泛型类)\n - 拷贝 children 中的 AnnAssign 和 FunctionDef,替换类型注解中的 T\n - 方法体直接引用原始节点(通过 type_map 上下文处理 T)\n ", "_find_cached_spec": "查找已缓存的特化名,未找到返回 None", "_cache_spec": "缓存特化结果", "_specialize_generic_class": "特化泛型类,返回特化类名\n\n 1. 查找泛型模板\n 2. 生成特化名\n 3. 检查缓存\n 4. 拷贝 ClassDef 节点(替换类型注解中的 T)\n 5. 设置 type_map 上下文(用于方法体中的 T 替换)\n 6. 调用 translate_class_def 翻译特化类\n 7. 返回特化名\n ", "translate_class_def": "翻译 class 定义,返回 0", "_vtable_strcat": "将 src 追加到 dst 末尾", "_vtable_name_needs_quote": "检查 LLVM 标识符是否需要引号(以数字开头或含 '.')", "_format_func_type_str": "从 Function 对象生成函数类型字符串", "_generate_vtable": "生成 VTable 全局变量", "_translate_oop_methods": "扫描 class body 中的方法并翻译,生成 __before_init__", "_translate_method": "翻译单个方法,返回 0", "_generate_before_init": "生成 __before_init__ 函数,返回 0"} \ No newline at end of file diff --git a/.transpyc_cache/c7b66e67f49c5c06.pyi b/.transpyc_cache/c7b66e67f49c5c06.pyi deleted file mode 100644 index 62b2e80..0000000 --- a/.transpyc_cache/c7b66e67f49c5c06.pyi +++ /dev/null @@ -1,104 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesClassDef.py -Module: lib.core.Handles.HandlesClassDef -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import viperlib -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesEnum as HandlesEnum - -ENUM_MEMBER_MAX_LOCAL: t.CDefine = 64 - -def _is_cenum_base(base_node: ast.AST | t.CPtr) -> int: pass - -def _is_enum_class(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _is_cunion_base(base_node: ast.AST | t.CPtr) -> int: pass - -def _is_union_class(cd: ast.ClassDef | t.CPtr) -> int: pass - - -_MARKER_BASES: t.CDefine = 8 - -def _has_decorator(decorator_list: list[ast.AST | t.CPtr] | t.CPtr, deco_name: str) -> int: pass - -def _is_marker_base(base_name: str) -> int: pass - -def _get_base_name(base_node: ast.AST | t.CPtr) -> str: pass - -def _get_parent_class(cd: ast.ClassDef | t.CPtr) -> str: pass - -def _has_any_func_cvtable(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _should_method_be_virtual(cd: ast.ClassDef | t.CPtr, fd: ast.FunctionDef | t.CPtr, trans: HT.Translator | t.CPtr) -> int: pass - -def _detect_vtable_status(cd: ast.ClassDef | t.CPtr, trans: HT.Translator | t.CPtr) -> int: pass - -def _resolve_enum_member_type(pool: memhub.MemBuddy | t.CPtr, ann_node: ast.AST | t.CPtr, imported_modules: str, from_imports: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _is_state_annotation(node: ast.AST | t.CPtr) -> int: pass - -def _extract_int_value(node: ast.AST | t.CPtr) -> t.CInt64T: pass - -def _translate_enum_def(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr) -> int: pass - -def _get_type_size(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def _translate_union_def(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr) -> int: pass - - -_generic_class_names: t.CExtern | list[str] | t.CPtr -_generic_class_nodes: t.CExtern | list[ast.ClassDef | t.CPtr] | t.CPtr - -def _is_generic_class(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _register_generic_template(pool: memhub.MemBuddy | t.CPtr, cd: ast.ClassDef | t.CPtr) -> t.CInt: pass - -def _find_generic_template(class_name: str) -> ast.ClassDef | t.CPtr: pass - -def _mangle_generic_class_name(pool: memhub.MemBuddy | t.CPtr, class_name: str, type_args: list[str] | t.CPtr) -> str: pass - -def _clone_annotation(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.AST | t.CPtr: pass - -def _clone_arguments(pool: memhub.MemBuddy | t.CPtr, args: ast.AST | t.CPtr, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.AST | t.CPtr: pass - -def _clone_classdef_for_spec(pool: memhub.MemBuddy | t.CPtr, cd: ast.ClassDef | t.CPtr, spec_name: str, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.ClassDef | t.CPtr: pass - - -_spec_keys: t.CExtern | list[str] | t.CPtr -_spec_names: t.CExtern | list[str] | t.CPtr - -def _find_cached_spec(spec_key: str) -> str: pass - -def _cache_spec(pool: memhub.MemBuddy | t.CPtr, spec_key: str, spec_name: str) -> t.CInt: pass - -def _specialize_generic_class(trans: HT.Translator | t.CPtr, class_name: str, type_args: list[str] | t.CPtr) -> str: pass - -def translate_class_def(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - - -VTBL_METHOD_MAX: t.CDefine = 32 - -def _vtable_strcat(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _vtable_name_needs_quote(name: str) -> int: pass - -def _format_func_type_str(pool: memhub.MemBuddy | t.CPtr, buf: t.CChar | t.CPtr, buf_size: t.CSizeT, func: llvmlite.Function | t.CPtr) -> int: pass - -def _generate_vtable(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr, class_name: str) -> int: pass - -def _translate_oop_methods(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass - -def _translate_method(trans: HT.Translator | t.CPtr, fd: ast.FunctionDef | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass - -def _generate_before_init(trans: HT.Translator | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass diff --git a/.transpyc_cache/c7ef33270dce36e3.doc.json b/.transpyc_cache/c7ef33270dce36e3.doc.json deleted file mode 100644 index 28f2ad8..0000000 --- a/.transpyc_cache/c7ef33270dce36e3.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_register_cexport_from_funcdef": "预注册 CExport/State 函数到全局表(仅注册,不生成 IR)", "translate_children": "遍历 tree.children 并翻译每个子节点\n\n Args:\n trans: 翻译器(含所有共享状态)\n tree: AST 模块节点\n\n Returns:\n t.CInt: 新增的变量数\n ", "handle_module_level_var": "处理模块级变量声明,创建全局变量", "create_wrapper_main": "创建包装 main 函数并翻译所有顶层语句\n\n Args:\n trans: 翻译器(含所有共享状态)\n tree: AST 模块节点\n i32_ty: i32 LLVMType\n\n Returns:\n t.CInt: 新增的变量数\n "} \ No newline at end of file diff --git a/.transpyc_cache/c7ef33270dce36e3.pyi b/.transpyc_cache/c7ef33270dce36e3.pyi deleted file mode 100644 index 2294a70..0000000 --- a/.transpyc_cache/c7ef33270dce36e3.pyi +++ /dev/null @@ -1,30 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesMain.py -Module: lib.core.Handles.HandlesMain -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import viperlib -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesBody as HandlesBody -import lib.core.Handles.HandlesFunctions as HandlesFunctions -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -def _register_cexport_from_funcdef(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - -def translate_children(trans: HT.Translator | t.CPtr, tree: ast.AST | t.CPtr) -> int: pass - -def handle_module_level_var(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - -def create_wrapper_main(trans: HT.Translator | t.CPtr, tree: ast.AST | t.CPtr, i32_ty: llvmlite.LLVMType | t.CPtr) -> int: pass diff --git a/.transpyc_cache/c9d54a4158f7f5a8.pyi b/.transpyc_cache/c9d54a4158f7f5a8.pyi deleted file mode 100644 index 3e2d738..0000000 --- a/.transpyc_cache/c9d54a4158f7f5a8.pyi +++ /dev/null @@ -1,34 +0,0 @@ -""" -Auto-generated Python stub file from hashlib.__sha256.py -Module: hashlib.__sha256 -""" - - -import t, c - -SHA256_BLOCK_LEN: t.CDefine = 64 -SHA256_DIGEST_LEN: t.CDefine = 32 -sha256_K: t.CExtern | t.CArray[t.CUInt32T, 64] - -def s0(x: t.CUInt32T) -> t.CUInt32T: pass - -def s1(x: t.CUInt32T) -> t.CUInt32T: pass - -def S0(x: t.CUInt32T) -> t.CUInt32T: pass - -def S1(x: t.CUInt32T) -> t.CUInt32T: pass - -def Ch(x: t.CUInt32T, y: t.CUInt32T, z: t.CUInt32T) -> t.CUInt32T: pass - -def Maj(x: t.CUInt32T, y: t.CUInt32T, z: t.CUInt32T) -> t.CUInt32T: pass - - -@t.Object -class sha256: - state: t.CArray[t.CUInt32T, 8] - count: t.CUInt64T - buf: t.CArray[t.CUInt8T, SHA256_BLOCK_LEN] - def __init__(self: sha256) -> t.CInt: pass - def transform(self: sha256, block: t.CUInt8T | t.CPtr) -> t.CInt: pass - def update(self: sha256, s: str) -> t.CInt: pass - def final(self: sha256, out: t.CArray[t.CUInt8T, SHA256_DIGEST_LEN]) -> t.CInt: pass \ No newline at end of file diff --git a/.transpyc_cache/cb151b297f4ea56d.doc.json b/.transpyc_cache/cb151b297f4ea56d.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/cb151b297f4ea56d.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/cb151b297f4ea56d.pyi b/.transpyc_cache/cb151b297f4ea56d.pyi deleted file mode 100644 index 125a3b3..0000000 --- a/.transpyc_cache/cb151b297f4ea56d.pyi +++ /dev/null @@ -1,15 +0,0 @@ -""" -Auto-generated Python stub file from __zlib.zchecksum.py -Module: __zlib.zchecksum -""" - - -from stdint import * -import t, c - -def zchecksum_adler32(data: UINT8PTR, length: t.CSizeT, init: UINT32) -> t.CUInt32T: pass - - -crc32_table: t.CExtern | t.CArray[t.CUInt32T, 256] - -def zchecksum_crc32(data: UINT8PTR, length: t.CSizeT, init: t.CUInt32T) -> t.CUInt32T: pass diff --git a/.transpyc_cache/cc3ad7f3bc880326.doc.json b/.transpyc_cache/cc3ad7f3bc880326.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/cc3ad7f3bc880326.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/cc3ad7f3bc880326.pyi b/.transpyc_cache/cc3ad7f3bc880326.pyi deleted file mode 100644 index 47bbff6..0000000 --- a/.transpyc_cache/cc3ad7f3bc880326.pyi +++ /dev/null @@ -1,12 +0,0 @@ -""" -Auto-generated Python stub file from virtual_dispatch_test.py -Module: virtual_dispatch_test -""" - - -import stdio -import t, c -import string -from inherit_test import Animal, Dog - -def virtual_dispatch_test() -> int: pass diff --git a/.transpyc_cache/cc436a125bbaf28c.pyi b/.transpyc_cache/cc436a125bbaf28c.pyi deleted file mode 100644 index a905387..0000000 --- a/.transpyc_cache/cc436a125bbaf28c.pyi +++ /dev/null @@ -1,34 +0,0 @@ -""" -Auto-generated Python stub file from hashlib.__md5.py -Module: hashlib.__md5 -""" - - -import t, c - -MD5_BLOCK_LEN: t.CDefine = 64 # 分组块大小 -MD5_DIGEST_LEN: t.CDefine = 16 # 摘要输出长度 - -def md5_F(x: t.CUInt32T, y: t.CUInt32T, z: t.CUInt32T) -> t.CUInt32T: pass - -def md5_G(x: t.CUInt32T, y: t.CUInt32T, z: t.CUInt32T) -> t.CUInt32T: pass - -def md5_H(x: t.CUInt32T, y: t.CUInt32T, z: t.CUInt32T) -> t.CUInt32T: pass - -def md5_I(x: t.CUInt32T, y: t.CUInt32T, z: t.CUInt32T) -> t.CUInt32T: pass - -def md5_rotl(x: t.CUInt32T, n: t.CInt) -> t.CUInt32T: pass - - -md5_T: t.CExtern | t.CArray[t.CUInt32T, 64] -md5_S: t.CExtern | t.CArray[t.CInt, 64] - -@t.Object -class md5: - state: t.CArray[t.CUInt32T, 4] - count: t.CUInt64T - buf: t.CArray[t.CUInt8T, MD5_BLOCK_LEN] - def __init__(self: md5) -> t.CInt: pass - def transform(self: md5, block: t.CUInt8T | t.CPtr) -> t.CInt: pass - def update(self: md5, s: str) -> t.CInt: pass - def final(self: md5, out: t.CArray[t.CUInt8T, MD5_DIGEST_LEN]) -> t.CInt: pass \ No newline at end of file diff --git a/.transpyc_cache/cdff0d7b58fc935b.doc.json b/.transpyc_cache/cdff0d7b58fc935b.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/cdff0d7b58fc935b.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/cdff0d7b58fc935b.pyi b/.transpyc_cache/cdff0d7b58fc935b.pyi deleted file mode 100644 index 0fb8976..0000000 --- a/.transpyc_cache/cdff0d7b58fc935b.pyi +++ /dev/null @@ -1,14 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - - -from stdint import * -import t, c -import ctraits -import stdio -import testcheck - -@t.CExport -def main() -> int: pass diff --git a/.transpyc_cache/cfc83b830141b00e.doc.json b/.transpyc_cache/cfc83b830141b00e.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/cfc83b830141b00e.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/cfc83b830141b00e.pyi b/.transpyc_cache/cfc83b830141b00e.pyi deleted file mode 100644 index 5af877f..0000000 --- a/.transpyc_cache/cfc83b830141b00e.pyi +++ /dev/null @@ -1,27 +0,0 @@ -""" -Auto-generated Python stub file from zc.config.py -Module: zc.config -""" - - -import t, c - -POSMAX: t.CDefine = 100 -MAX_RETRY: t.CDefine = 5 -BUFFER_SIZE: t.CDefine = 256 -PI: t.CDefine = 3.14159 -EULER: t.CDefine = 2.71828 -TRUE: t.CDefine = 1 -FALSE: t.CDefine = 0 -NULL: t.CDefine = 0 -MATH_OFFSET: t.CDefine = 10 -MATH_SCALE: t.CDefine = 2 -THRESHOLD: t.CDefine = 50 -LOOP_LIMIT: t.CDefine = 20 -SHIFT_AMOUNT: t.CDefine = 2 -MASK_VALUE: t.CDefine = 0xFF -BIT_RANGE: t.CDefine = 4 -EXPONENT_BASE: t.CDefine = 3 -MODULO_DIVISOR: t.CDefine = 7 -SCALE_SHIFT: t.CDefine = 4 -HALF_SCALE: t.CDefine = 0.5 \ No newline at end of file diff --git a/.transpyc_cache/d152115b49e50218.pyi b/.transpyc_cache/d152115b49e50218.pyi deleted file mode 100644 index 1e7a152..0000000 --- a/.transpyc_cache/d152115b49e50218.pyi +++ /dev/null @@ -1,42 +0,0 @@ -""" -Auto-generated Python stub file from os._posix.py -Module: os._posix -""" - - -import t, c -from stdint import * -import posix -import memhub -import stdlib - -MAX_PATH_LEN: t.CDefine = 4096 -_mbuddy: t.CExtern | memhub.MemBuddy | t.CPtr - -def _stat(path: str) -> posix.Stat | t.CPtr: pass - -def exists(path: str) -> bool: pass - -def isdir(path: str) -> bool: pass - -def isfile(path: str) -> bool: pass - -def getsize(path: str) -> t.CInt64T: pass - -def getcwd_impl() -> str: pass - -def chdir_impl(path: str) -> int: pass - -def mkdir_impl(path: str) -> int: pass - -def remove(path: str) -> int: pass - -def rmdir_impl(path: str) -> int: pass - -def rename_impl(old_path: str, new_path: str) -> int: pass - -def chmod_impl(path: str, mode: int) -> int: pass - -def listdir(path: str, out_names: str, max_count: ULONG) -> ULONG: pass - -def system_impl(cmd: str) -> int: pass diff --git a/.transpyc_cache/d1599ecbac5b6586.doc.json b/.transpyc_cache/d1599ecbac5b6586.doc.json deleted file mode 100644 index a6b0616..0000000 --- a/.transpyc_cache/d1599ecbac5b6586.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"TranslateFileGetTrans": "翻译文件,返回 Translator 对象(调用者负责 dump_ir),None 失败\n\n current_package: 当前文件所属包名(用于解析相对导入),None 表示顶级模块\n ", "ensure_dir": "递归创建目录(类似 mkdir -p),目录已存在视为成功\n\n Args:\n path: 目录路径(支持 / 或 \\ 分隔符)\n\n Returns:\n 0 成功(包括目录已存在),非 0 失败\n ", "write_ir_to_file": "将 IR 缓冲区写入 .ll 文件\n\n Args:\n ir_buf: IR 文本缓冲区\n ir_len: IR 文本长度\n output_dir: 输出目录(temp 或 output)\n module_name: 模块名(如 \"main\")\n\n Returns:\n 0 成功,非 0 失败\n ", "compile_ll_to_obj": "调用 llc 将 .ll 编译为 .obj\n\n Args:\n ir_path: .ll 文件路径\n output_dir: 输出目录\n module_name: 模块名(用于生成 .obj 文件名)\n cc_cmd: 编译器命令(如 \"llc\")\n cc_flags: 编译器参数(如 \"-filetype=obj -relocation-model=pic\")\n\n Returns:\n 0 成功,非 0 失败\n ", "collect_obj_files": "扫描 includes_binary_dir 目录,收集所有 .obj 文件路径到 out_buf\n\n Args:\n includes_binary_dir: includes.binary 目录路径\n out_buf: 输出缓冲区(用于存放空格分隔的 .obj 文件路径)\n out_size: 输出缓冲区大小\n\n Returns:\n 写入的字节数(不含 null 终止符),0 表示无文件或错误\n ", "link_obj_to_exe": "调用 clang++ 链接 .obj 为 .exe\n\n Args:\n output_dir: 输出目录(包含 .obj 文件)\n module_name: 模块名\n linker_cmd: 链接器命令(如 \"clang++\")\n linker_flags: 链接器参数\n linker_output: 输出文件名(如 \"test.exe\")\n includes_binary_dir: includes.binary 目录路径(链接时附加预编译 .obj)\n\n Returns:\n 0 成功,非 0 失败\n ", "compile_module_to_obj": "编译 IR 到 .obj(不链接)\n\n Args:\n ir_buf: LLVM IR 文本缓冲区\n ir_len: IR 文本长度\n temp_dir: 临时目录\n output_dir: 输出目录\n module_name: 模块名(SHA1)\n cc_cmd: 编译器命令\n cc_flags: 编译器参数\n\n Returns:\n 0 成功,非 0 失败\n ", "link_objs_to_exe": "链接多个 .obj 文件为 .exe\n\n Args:\n obj_paths: 空格分隔的 .obj 文件完整路径字符串\n obj_paths_len: obj_paths 长度\n linker_cmd: 链接器命令(如 \"clang++\")\n linker_flags: 链接器参数\n linker_output: 输出文件完整路径\n includes_binary_dir: includes.binary 目录路径(链接时附加预编译 .obj)\n\n Returns:\n 0 成功,非 0 失败\n ", "run_pipeline": "执行完整编译管线\n\n Args:\n ir_buf: LLVM IR 文本缓冲区\n ir_len: IR 文本长度\n temp_dir: 临时目录\n output_dir: 输出目录\n module_name: 模块名\n cc_cmd: 编译器命令\n cc_flags: 编译器参数\n linker_cmd: 链接器命令\n linker_flags: 链接器参数\n linker_output: 输出文件名\n includes_binary_dir: includes.binary 目录路径(链接时附加预编译 .obj)\n\n Returns:\n BuildResult 对象\n "} \ No newline at end of file diff --git a/.transpyc_cache/d1599ecbac5b6586.pyi b/.transpyc_cache/d1599ecbac5b6586.pyi deleted file mode 100644 index c155594..0000000 --- a/.transpyc_cache/d1599ecbac5b6586.pyi +++ /dev/null @@ -1,51 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.BuildPipeline.py -Module: lib.core.BuildPipeline -""" - - -import t, c -from stdint import * -import stdio -import string -import stdlib -import memhub -import w32.fileio as fileio -import w32.win32file -import w32.win32base -import subprocess -import viperlib -import ast -import lib.core.Handles.HandlesTranslator as HandlesTranslator -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesImports as HandlesImports - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -SRC_BUF_SIZE: t.CDefine = 1048576 - -def TranslateFileGetTrans(mb: memhub.MemBuddy | t.CPtr, file_path: str, sha1_val: str, current_package: str) -> HandlesTranslator.Translator | t.CPtr: pass - - -class BuildResult: - Success: t.CInt - OutputPath: str - ErrorMsg: str - def __new__(self: BuildResult) -> t.CPtr: pass - def __init__(self: BuildResult) -> t.CInt: pass - -def ensure_dir(path: str) -> int: pass - -def write_ir_to_file(ir_buf: bytes, ir_len: t.CSizeT, output_dir: str, module_name: str) -> int: pass - -def compile_ll_to_obj(ir_path: str, output_dir: str, module_name: str, cc_cmd: str, cc_flags: str) -> int: pass - -def collect_obj_files(includes_binary_dir: str, out_buf: bytes, out_size: t.CSizeT) -> t.CSizeT: pass - -def link_obj_to_exe(output_dir: str, module_name: str, linker_cmd: str, linker_flags: str, linker_output: str, includes_binary_dir: str) -> int: pass - -def compile_module_to_obj(ir_buf: bytes, ir_len: t.CSizeT, temp_dir: str, output_dir: str, module_name: str, cc_cmd: str, cc_flags: str) -> int: pass - -def link_objs_to_exe(obj_paths: str, obj_paths_len: t.CSizeT, linker_cmd: str, linker_flags: str, linker_output: str, includes_binary_dir: str) -> int: pass - -def run_pipeline(ir_buf: bytes, ir_len: t.CSizeT, temp_dir: str, output_dir: str, module_name: str, cc_cmd: str, cc_flags: str, linker_cmd: str, linker_flags: str, linker_output: str, includes_binary_dir: str) -> BuildResult | t.CPtr: pass diff --git a/.transpyc_cache/d28c16ea0550c4a4.doc.json b/.transpyc_cache/d28c16ea0550c4a4.doc.json deleted file mode 100644 index dda4745..0000000 --- a/.transpyc_cache/d28c16ea0550c4a4.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"get_func_name": "从函数节点提取函数名", "escape_llvm_string": "将字符串转换为 LLVM IR 字符串字面量 c\"...\\00\" ", "get_llvm_type_bits": "获取 LLVM 整数类型的位宽,非整数类型返回 0", "get_llvm_float_bits": "获取 LLVM 浮点类型的位宽,非浮点类型返回 0", "is_ptr_type": "检查 ty 是否是 Ptr 类型,返回 1=是, 0=否", "_deref_if_ptr_ptr": "如果 obj_ptr 是 Ptr(Ptr(...)),load 解引用获取内层指针", "coerce_to_type": "将 val 强制转换为 target_ty\n\n 整数: sext(扩展)/ trunc(截断)\n 浮点: fpext(扩展)/ fptrunc(截断)\n int→float: sitofp\n float→int: fptosi\n ", "create_global_string": "创建全局字符串常量并返回 i8* bitcast", "translate_constant": "翻译常量(int/str/bool)", "_infer_elem_type_from_value": "从 LLVM Value 的类型推断 list 元素类型名", "_find_pool_var": "查找上下文中的 pool 变量,返回 alloca 或 None", "translate_list_literal": "翻译 list 字面量 [a, b, c] → list[T](pool) + append 序列", "translate_value": "翻译值表达式为 LLVM Value", "translate_compare": "翻译比较表达式,返回 i1 结果", "translate_unaryop": "翻译一元运算(-x, +x, not x, ~x)", "translate_boolop": "翻译布尔运算(and/or)的短路求值,返回 i1", "translate_name_value": "翻译变量引用(Name 节点)→ load", "ExprHandle": "表达式处理器:继承 Mixin 获得 Trans 回指针", "ExprHandle.HandleValue": "翻译值表达式,从 self.Trans 获取共享状态", "list_getitem_inline": "内联生成 list __getitem__ 逻辑,返回元素地址 (i8*)", "_list_elem_type_from_name": "从 list 类型名提取元素 LLVM 类型", "list_setitem_inline": "内联生成 list __setitem__ 逻辑,返回 0", "is_list_subscript": "检查 Subscript 节点是否是 list[T] 类型,返回 list 对象指针或 None", "translate_subscript": "翻译下标表达式,返回加载的元素值", "translate_attribute": "翻译属性访问,返回加载的字段值", "get_subscript_ptr": "获取下标表达式的元素指针(用于赋值 lhs)", "get_attribute_ptr": "获取属性访问的字段指针(用于赋值 lhs)"} \ No newline at end of file diff --git a/.transpyc_cache/d28c16ea0550c4a4.pyi b/.transpyc_cache/d28c16ea0550c4a4.pyi deleted file mode 100644 index 60fab85..0000000 --- a/.transpyc_cache/d28c16ea0550c4a4.pyi +++ /dev/null @@ -1,81 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExpr.py -Module: lib.core.Handles.HandlesExpr -""" - - -import t, c -from stdint import * -import ast -import memhub -import string -import llvmlite -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesExprOps as HandlesExprOps -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.Handles.HandlesNonlocal as HandlesNonlocal -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesEnum as HandlesEnum -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -def get_func_name(func_node: ast.AST | t.CPtr) -> str: pass - -def escape_llvm_string(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def get_llvm_type_bits(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def get_llvm_float_bits(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def is_ptr_type(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def _deref_if_ptr_ptr(builder: llvmlite.IRBuilder | t.CPtr, obj_ptr: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def coerce_to_type(builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def create_global_string(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, str_val: str, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_constant(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_elem_type_from_value(pool: memhub.MemBuddy | t.CPtr, value: llvmlite.Value | t.CPtr) -> str: pass - -def _find_pool_var(trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_list_literal(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, elem_type_name: str, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_value(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_compare(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_unaryop(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_boolop(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_name_value(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -@t.NoVTable -class ExprHandle(HandlesBase.Mixin): - def __init__(self: ExprHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleValue(self: ExprHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def NewExprHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprHandle | t.CPtr: pass - -def list_getitem_inline(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, lm_obj: llvmlite.Value | t.CPtr, idx_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _list_elem_type_from_name(pool: memhub.MemBuddy | t.CPtr, struct_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def list_setitem_inline(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, lm_obj: llvmlite.Value | t.CPtr, idx_val: llvmlite.Value | t.CPtr, rhs_val: llvmlite.Value | t.CPtr) -> int: pass - -def is_list_subscript(node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_subscript(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_attribute(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def get_subscript_ptr(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def get_attribute_ptr(builder: llvmlite.IRBuilder | t.CPtr, pool: memhub.MemBuddy | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass diff --git a/.transpyc_cache/d33c3f139167d275.doc.json b/.transpyc_cache/d33c3f139167d275.doc.json deleted file mode 100644 index a8e6f20..0000000 --- a/.transpyc_cache/d33c3f139167d275.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_is_cenum_base": "检查 base 节点是否为 t.CEnum,返回 1=是 / 0=否", "_is_enum_class": "检查 ClassDef 是否继承自 t.CEnum,返回 1=是 / 0=否", "_is_cunion_base": "检查 base 节点是否为 t.CUnion,返回 1=是 / 0=否", "_is_union_class": "检查 ClassDef 是否继承自 t.CUnion,返回 1=是 / 0=否", "_has_decorator": "检查 decorator_list 中是否有指定装饰器名", "_is_marker_base": "检查基类名是否为标记基类,返回 1=是 / 0=否", "_get_base_name": "从 base AST 节点提取基类名,返回 None=失败", "_get_parent_class": "获取 ClassDef 的真实父类名,返回 None=无真实父类", "_has_any_func_cvtable": "检查类中是否有任何函数标记了 @t.CVTable,返回 1=有 / 0=无", "_should_method_be_virtual": "判断方法是否应该进入虚表,返回 1=包含 / 0=排除", "_detect_vtable_status": "检测类是否应该启用虚表", "_resolve_enum_member_type": "解析枚举成员的类型注解为 LLVM 整数类型", "_is_state_annotation": "检查注解节点是否为 t.State,返回 1=是 / 0=否", "_extract_int_value": "从 AST 节点提取整数值,失败返回 0", "_translate_enum_def": "翻译枚举类定义,返回 0", "_get_type_size": "计算 LLVM 类型的字节大小", "_translate_union_def": "翻译联合体定义,返回 0", "_is_generic_class": "检查 ClassDef 是否有类型参数(泛型类),返回 1=是 / 0=否", "_register_generic_template": "注册泛型类模板(类名 + ClassDef 节点)", "_find_generic_template": "查找泛型类模板,返回 ClassDef 节点或 None", "_mangle_generic_class_name": "生成特化类名: list + [int] -> list[int]\n\n 分配新缓冲区拼接,避免原地 strcat 导致缓冲区溢出\n ", "_clone_annotation": "拷贝类型注解表达式,替换类型参数 T 为具体类型名\n\n tp_names: 类型参数名列表 ['T']\n type_args: 类型实参名列表 ['int']\n ", "_clone_arguments": "拷贝 Arguments 节点,替换 arg annotation 中的 T", "_clone_classdef_for_spec": "拷贝 ClassDef 节点用于泛型特化\n\n - 替换类名为 spec_name\n - 清除 type_params(特化后不是泛型类)\n - 拷贝 children 中的 AnnAssign 和 FunctionDef,替换类型注解中的 T\n - 方法体直接引用原始节点(通过 type_map 上下文处理 T)\n ", "_find_cached_spec": "查找已缓存的特化名,未找到返回 None", "_cache_spec": "缓存特化结果", "_specialize_generic_class": "特化泛型类,返回特化类名\n\n 1. 查找泛型模板\n 2. 生成特化名\n 3. 检查缓存\n 4. 拷贝 ClassDef 节点(替换类型注解中的 T)\n 5. 设置 type_map 上下文(用于方法体中的 T 替换)\n 6. 调用 translate_class_def 翻译特化类\n 7. 返回特化名\n ", "translate_class_def": "翻译 class 定义,返回 0", "_vtable_strcat": "将 src 追加到 dst 末尾", "_vtable_name_needs_quote": "检查 LLVM 标识符是否需要引号(以数字开头或含 '.')", "_format_func_type_str": "从 Function 对象生成函数类型字符串", "_generate_vtable": "生成 VTable 全局变量", "_translate_oop_methods": "扫描 class body 中的方法并翻译,生成 __before_init__", "_translate_method": "翻译单个方法,返回 0", "_generate_before_init": "生成 __before_init__ 函数,返回 0"} \ No newline at end of file diff --git a/.transpyc_cache/d33c3f139167d275.pyi b/.transpyc_cache/d33c3f139167d275.pyi deleted file mode 100644 index 62b2e80..0000000 --- a/.transpyc_cache/d33c3f139167d275.pyi +++ /dev/null @@ -1,104 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesClassDef.py -Module: lib.core.Handles.HandlesClassDef -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import viperlib -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesEnum as HandlesEnum - -ENUM_MEMBER_MAX_LOCAL: t.CDefine = 64 - -def _is_cenum_base(base_node: ast.AST | t.CPtr) -> int: pass - -def _is_enum_class(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _is_cunion_base(base_node: ast.AST | t.CPtr) -> int: pass - -def _is_union_class(cd: ast.ClassDef | t.CPtr) -> int: pass - - -_MARKER_BASES: t.CDefine = 8 - -def _has_decorator(decorator_list: list[ast.AST | t.CPtr] | t.CPtr, deco_name: str) -> int: pass - -def _is_marker_base(base_name: str) -> int: pass - -def _get_base_name(base_node: ast.AST | t.CPtr) -> str: pass - -def _get_parent_class(cd: ast.ClassDef | t.CPtr) -> str: pass - -def _has_any_func_cvtable(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _should_method_be_virtual(cd: ast.ClassDef | t.CPtr, fd: ast.FunctionDef | t.CPtr, trans: HT.Translator | t.CPtr) -> int: pass - -def _detect_vtable_status(cd: ast.ClassDef | t.CPtr, trans: HT.Translator | t.CPtr) -> int: pass - -def _resolve_enum_member_type(pool: memhub.MemBuddy | t.CPtr, ann_node: ast.AST | t.CPtr, imported_modules: str, from_imports: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _is_state_annotation(node: ast.AST | t.CPtr) -> int: pass - -def _extract_int_value(node: ast.AST | t.CPtr) -> t.CInt64T: pass - -def _translate_enum_def(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr) -> int: pass - -def _get_type_size(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def _translate_union_def(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr) -> int: pass - - -_generic_class_names: t.CExtern | list[str] | t.CPtr -_generic_class_nodes: t.CExtern | list[ast.ClassDef | t.CPtr] | t.CPtr - -def _is_generic_class(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _register_generic_template(pool: memhub.MemBuddy | t.CPtr, cd: ast.ClassDef | t.CPtr) -> t.CInt: pass - -def _find_generic_template(class_name: str) -> ast.ClassDef | t.CPtr: pass - -def _mangle_generic_class_name(pool: memhub.MemBuddy | t.CPtr, class_name: str, type_args: list[str] | t.CPtr) -> str: pass - -def _clone_annotation(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.AST | t.CPtr: pass - -def _clone_arguments(pool: memhub.MemBuddy | t.CPtr, args: ast.AST | t.CPtr, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.AST | t.CPtr: pass - -def _clone_classdef_for_spec(pool: memhub.MemBuddy | t.CPtr, cd: ast.ClassDef | t.CPtr, spec_name: str, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.ClassDef | t.CPtr: pass - - -_spec_keys: t.CExtern | list[str] | t.CPtr -_spec_names: t.CExtern | list[str] | t.CPtr - -def _find_cached_spec(spec_key: str) -> str: pass - -def _cache_spec(pool: memhub.MemBuddy | t.CPtr, spec_key: str, spec_name: str) -> t.CInt: pass - -def _specialize_generic_class(trans: HT.Translator | t.CPtr, class_name: str, type_args: list[str] | t.CPtr) -> str: pass - -def translate_class_def(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - - -VTBL_METHOD_MAX: t.CDefine = 32 - -def _vtable_strcat(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _vtable_name_needs_quote(name: str) -> int: pass - -def _format_func_type_str(pool: memhub.MemBuddy | t.CPtr, buf: t.CChar | t.CPtr, buf_size: t.CSizeT, func: llvmlite.Function | t.CPtr) -> int: pass - -def _generate_vtable(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr, class_name: str) -> int: pass - -def _translate_oop_methods(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass - -def _translate_method(trans: HT.Translator | t.CPtr, fd: ast.FunctionDef | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass - -def _generate_before_init(trans: HT.Translator | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass diff --git a/.transpyc_cache/d358712e53b4da98.doc.json b/.transpyc_cache/d358712e53b4da98.doc.json deleted file mode 100644 index ac292ab..0000000 --- a/.transpyc_cache/d358712e53b4da98.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"ForHandle": "for 循环语句处理器:继承 Mixin 获得 Trans 回指针", "ForHandle.Handle": "翻译 for i in range(...) 循环语句", "ForHandle._handle_ptr_iter": "指针迭代: for x in ptr: 直到解引用为空"} \ No newline at end of file diff --git a/.transpyc_cache/d358712e53b4da98.pyi b/.transpyc_cache/d358712e53b4da98.pyi deleted file mode 100644 index 08527b9..0000000 --- a/.transpyc_cache/d358712e53b4da98.pyi +++ /dev/null @@ -1,28 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesFor.py -Module: lib.core.Handles.HandlesFor -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesBody as HandlesBody -import lib.core.Handles.HandlesType as HandlesType - -@t.NoVTable -class ForHandle(HandlesBase.Mixin): - def __init__(self: ForHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def Handle(self: ForHandle, node: ast.AST | t.CPtr) -> int: pass - def _handle_ptr_iter(self: ForHandle, for_node: ast.For | t.CPtr, var_name: str) -> int: pass - -def NewForHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ForHandle | t.CPtr: pass diff --git a/.transpyc_cache/d541ade6afb689a5.pyi b/.transpyc_cache/d541ade6afb689a5.pyi deleted file mode 100644 index fd4ddf5..0000000 --- a/.transpyc_cache/d541ade6afb689a5.pyi +++ /dev/null @@ -1,44 +0,0 @@ -""" -Auto-generated Python stub file from zlib.zhuff.py -Module: zlib.zhuff -""" - - -from stdint import * -import zlib.zdef as zdef -import memhub -import t, c - -ZHUFF_MAX_CODES: t.CDefine = 288 -ZHUFF_MAX_BITS: t.CDefine = 15 - -class zhuff_code: - code: UINT - bits: t.CInt -@t.Object -class zhuff_tree: - pool: memhub.MemManager | t.CPtr - codes: t.CArray[zhuff_code, ZHUFF_MAX_CODES] - count: t.CInt - max_bits: t.CInt - def __init__(self: zhuff_tree) -> t.CInt: pass - def build_codes(self: zhuff_tree, freqs: INTPTR, count: t.CInt, max_bits: t.CInt) -> t.CInt: pass - def build_fixed_lit_tree(self: zhuff_tree) -> t.CInt: pass - def build_fixed_dist_tree(self: zhuff_tree) -> t.CInt: pass - def encode_symbol(self: zhuff_tree, symbol: int, writer: zdef.zbit_writer | t.CPtr) -> t.CInt: pass - def build_code_lengths(self: zhuff_tree, lengths: t.CInt | t.CPtr, freqs: t.CInt | t.CPtr, count: t.CInt, max_bits: t.CInt) -> t.CInt: pass - def get_fixed_lit_lengths(self: zhuff_tree, lengths: INTPTR) -> t.CInt: pass - def get_fixed_dist_lengths(self: zhuff_tree, lengths: INTPTR) -> t.CInt: pass - def build_tree_from_lengths(self: zhuff_tree, lengths: INTPTR, count: t.CInt, max_bits: t.CInt) -> t.CInt: pass -class zhuff_decode_node: - children: t.CArray[t.CInt, 2] - symbol: t.CInt -@t.Object -class zhuff_decode_tree: - pool: memhub.MemManager | t.CPtr - nodes: t.CArray[zhuff_decode_node, 2 * ZHUFF_MAX_CODES] - node_count: t.CInt - root: t.CInt - def __init__(self: zhuff_decode_tree) -> t.CInt: pass - def build_decode_tree(self: zhuff_decode_tree, ht: zhuff_tree | t.CPtr) -> t.CInt: pass - def decode_symbol(self: zhuff_decode_tree, reader: zdef.zbit_reader | t.CPtr) -> t.CInt: pass \ No newline at end of file diff --git a/.transpyc_cache/d63d2c2a2bd9bd2a.pyi b/.transpyc_cache/d63d2c2a2bd9bd2a.pyi deleted file mode 100644 index cc9d917..0000000 --- a/.transpyc_cache/d63d2c2a2bd9bd2a.pyi +++ /dev/null @@ -1,10 +0,0 @@ -""" -Auto-generated Python stub file from zlib.__init__.py -Module: zlib.__init__ -""" - -import t -import c - - -from .pyzlib import * \ No newline at end of file diff --git a/.transpyc_cache/d7662500f1c2c0ff.doc.json b/.transpyc_cache/d7662500f1c2c0ff.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/d7662500f1c2c0ff.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/d7662500f1c2c0ff.pyi b/.transpyc_cache/d7662500f1c2c0ff.pyi deleted file mode 100644 index 03248a5..0000000 --- a/.transpyc_cache/d7662500f1c2c0ff.pyi +++ /dev/null @@ -1,12 +0,0 @@ -""" -Auto-generated Python stub file from testcheck_test.py -Module: testcheck_test -""" - - -import stdio -import t, c -import string -import testcheck - -def testcheck_test() -> int: pass diff --git a/.transpyc_cache/d7e3386b828acb66.pyi b/.transpyc_cache/d7e3386b828acb66.pyi deleted file mode 100644 index aa17fc3..0000000 --- a/.transpyc_cache/d7e3386b828acb66.pyi +++ /dev/null @@ -1,115 +0,0 @@ -""" -Auto-generated Python stub file from socket.py -Module: socket -""" - - -import t, c -from stdint import * -import string -import platmacro -import stdio -import w32.winsock2 - -AF_INET: t.CDefine = 2 -AF_INET6: t.CDefine = 10 -SOCK_STREAM: t.CDefine = 1 -SOCK_DGRAM: t.CDefine = 2 -SOCK_RAW: t.CDefine = 3 -IPPROTO_TCP: t.CDefine = 6 -IPPROTO_UDP: t.CDefine = 17 -SOL_SOCKET: t.CDefine = 1 -SO_RCVTIMEO: t.CDefine = 20 -SO_SNDTIMEO: t.CDefine = 21 -SO_REUSEADDR: t.CDefine = 2 -INADDR_ANY: t.CDefine = 0 -SOCKET_ERROR: t.CDefine = -1 -INVALID_SOCKET: t.CDefine = -1 -SOCKET_DEFAULT_TIMEOUT: t.CDefine = 0 - -class SocketAddr: - family: u16 - port: u16 - addr: u32 - zero: u64 -class HostEnt: - h_name: CHARPTR - h_aliases: CHARPTR - h_addrtype: INT - h_length: INT - h_addr_list: CHARPTR -class timeval: - tv_sec: INT - tv_usec: INT - -def socket(family: INT, type: INT, protocol: INT) -> u64 | t.CExtern | t.CExport: pass - -def connect(fd: u64, addr: SocketAddr | t.CPtr, addrlen: INT) -> INT | t.CExtern | t.CExport: pass - -def send(fd: u64, buf: t.CVoid | t.CPtr, len: INT, flags: INT) -> INT | t.CExtern | t.CExport: pass - -def recv(fd: u64, buf: t.CVoid | t.CPtr, len: INT, flags: INT) -> INT | t.CExtern | t.CExport: pass - -def bind(fd: u64, addr: SocketAddr | t.CPtr, addrlen: INT) -> INT | t.CExtern | t.CExport: pass - -def listen(fd: u64, backlog: INT) -> INT | t.CExtern | t.CExport: pass - -def accept(fd: u64, addr: SocketAddr | t.CPtr, addrlen: INT | t.CPtr) -> u64 | t.CExtern | t.CExport: pass - -def setsockopt(fd: u64, level: INT, optname: INT, optval: t.CVoid | t.CPtr, optlen: INT) -> INT | t.CExtern | t.CExport: pass - -def gethostbyname(name: t.CChar | t.CConst | t.CPtr) -> HostEnt | t.CPtr | t.CExtern | t.CExport: pass - -def ntohs(netshort: u16) -> u16 | t.CExtern | t.CExport: pass - -def htons(hostshort: u16) -> u16 | t.CExtern | t.CExport: pass - -def close(fd: u64) -> INT | t.CExtern | t.CExport: pass - -def _CloseFd(fd: INT) -> INT: pass - -def _MakeAddr(host: str, port: INT) -> SocketAddr: pass - -def _ParseIPv4(ip_str: str, out_addr: u32 | t.CPtr) -> bool: pass - - -class Socket: - fd: INT - family: INT - type: INT - protocol: INT - def __init__(self: Socket, family: INT, type: INT, protocol: INT) -> t.CInt: pass - def connect(self: Socket, host: str, port: INT) -> INT: pass - def send(self: Socket, data: t.CVoid | t.CPtr, length: INT) -> INT: pass - def recv(self: Socket, buf: t.CVoid | t.CPtr, bufsize: INT) -> INT: pass - def sendall(self: Socket, data: t.CVoid | t.CPtr, length: INT) -> INT: pass - def close(self: Socket) -> INT: pass - def bind(self: Socket, host: str, port: INT) -> INT: pass - def listen(self: Socket, backlog: INT) -> INT: pass - def accept(self: Socket, out_client: 'Socket' | t.CPtr) -> INT: pass - def settimeout(self: Socket, timeout_ms: INT) -> INT: pass - def fileno(self: Socket) -> INT: pass - -def SocketInit() -> INT: pass - -def SocketCleanup() -> INT: pass - -def SocketCreate(family: INT, type: INT, protocol: INT, out_sock: Socket | t.CPtr) -> INT: pass - -def SocketConnect(sock: Socket | t.CPtr, host: str, port: INT) -> INT: pass - -def SocketSend(sock: Socket | t.CPtr, data: t.CVoid | t.CPtr, length: INT) -> INT: pass - -def SocketRecv(sock: Socket | t.CPtr, buf: t.CVoid | t.CPtr, bufsize: INT) -> INT: pass - -def SocketClose(sock: Socket | t.CPtr) -> INT: pass - -def SocketBind(sock: Socket | t.CPtr, host: str, port: INT) -> INT: pass - -def SocketListen(sock: Socket | t.CPtr, backlog: INT) -> INT: pass - -def SocketAccept(sock: Socket | t.CPtr, out_client: Socket | t.CPtr) -> INT: pass - -def SocketSetTimeout(sock: Socket | t.CPtr, timeout_ms: INT) -> INT: pass - -def SocketIsValid(sock: Socket | t.CPtr) -> bool: pass diff --git a/.transpyc_cache/d855b3e66d1d6522.doc.json b/.transpyc_cache/d855b3e66d1d6522.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/d855b3e66d1d6522.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/d855b3e66d1d6522.pyi b/.transpyc_cache/d855b3e66d1d6522.pyi deleted file mode 100644 index 09ce9d4..0000000 --- a/.transpyc_cache/d855b3e66d1d6522.pyi +++ /dev/null @@ -1,66 +0,0 @@ -""" -Auto-generated Python stub file from __zlib.test_pyzlib.py -Module: __zlib.test_pyzlib -""" - - -from stdint import * -import pyzlib -import zhuff -import zdef -from stdio import printf -import stdlib -from string import strlen -import string -import t, c - -test_passed: t.CExtern | t.CInt -test_failed: t.CExtern | t.CInt - -def check(name: str, condition: t.CInt, detail: str) -> t.CInt: pass - -def print_hex_test(data: BYTEPTR, length: t.CSizeT, max_show: t.CSizeT) -> t.CInt: pass - -def print_separator() -> t.CInt: pass - -def section_header(title: str) -> t.CInt: pass - -def section_footer() -> t.CInt: pass - -def test_version() -> t.CInt: pass - -def test_compress_decompress() -> t.CInt: pass - -def test_compress_levels() -> t.CInt: pass - -def test_compressobj() -> t.CInt: pass - -def test_decompressobj() -> t.CInt: pass - -def test_decompressobj_max_length() -> t.CInt: pass - -def test_decompressobj_unused_data() -> t.CInt: pass - -def test_compress_copy() -> t.CInt: pass - -def test_decompress_copy() -> t.CInt: pass - -def test_adler32() -> t.CInt: pass - -def test_crc32() -> t.CInt: pass - -def test_empty_compress() -> t.CInt: pass - -def test_gzip_format() -> t.CInt: pass - -def test_raw_deflate() -> t.CInt: pass - -def test_zdict() -> t.CInt: pass - -def test_huffman_tree() -> t.CInt: pass - -def test_error_handling() -> t.CInt: pass - -def test_constants() -> t.CInt: pass - -def main123456() -> t.CInt: pass diff --git a/.transpyc_cache/d9322f0db660edd8.doc.json b/.transpyc_cache/d9322f0db660edd8.doc.json deleted file mode 100644 index 4dba15e..0000000 --- a/.transpyc_cache/d9322f0db660edd8.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"ReturnHandle": "Return 语句处理器:继承 Mixin 获得 Trans 回指针", "ReturnHandle.Handle": "翻译 Return 语句"} \ No newline at end of file diff --git a/.transpyc_cache/d9322f0db660edd8.pyi b/.transpyc_cache/d9322f0db660edd8.pyi deleted file mode 100644 index abcbbff..0000000 --- a/.transpyc_cache/d9322f0db660edd8.pyi +++ /dev/null @@ -1,23 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesReturn.py -Module: lib.core.Handles.HandlesReturn -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar - -@t.NoVTable -class ReturnHandle(HandlesBase.Mixin): - def __init__(self: ReturnHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def Handle(self: ReturnHandle, node: ast.AST | t.CPtr) -> int: pass - -def NewReturnHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ReturnHandle | t.CPtr: pass diff --git a/.transpyc_cache/da80633346bb66e2.doc.json b/.transpyc_cache/da80633346bb66e2.doc.json deleted file mode 100644 index c00e036..0000000 --- a/.transpyc_cache/da80633346bb66e2.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数\n\n 直接接收三个 Value 参数,避免通过 Next 链表遍历(共享 alloca 对象的\n Next 字段可能被其他操作污染,导致链表断裂)。\n ", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/da80633346bb66e2.pyi b/.transpyc_cache/da80633346bb66e2.pyi deleted file mode 100644 index 40c3168..0000000 --- a/.transpyc_cache/da80633346bb66e2.pyi +++ /dev/null @@ -1,171 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, dst_val: llvmlite.Value | t.CPtr, src_val: llvmlite.Value | t.CPtr, num_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/db434883fc668c7c.doc.json b/.transpyc_cache/db434883fc668c7c.doc.json deleted file mode 100644 index 45fcbeb..0000000 --- a/.transpyc_cache/db434883fc668c7c.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_generic_context": "设置泛型特化上下文(进入泛型类方法体翻译时调用)", "clear_generic_context": "清除泛型特化上下文(离开泛型类方法体翻译时调用)", "resolve_generic_type_name": "如果 name 是泛型类型参数,返回对应的具体类型名;否则返回 name 本身\n\n 用于表达式中的 T 替换(如 T.__sizeof__() → int.__sizeof__())\n ", "_get_type_name_from_annotation": "从类型注解节点提取类型名(支持 Name/Attribute/BinOp)", "_parse_type_string": "将类型名字符串解析为 AST 节点", "set_current_file": "设置当前编译的文件名(供报错使用)", "_read_source_line": "从源文件读取第 lineno 行内容", "fatal_error": "以 Python 风格报错并退出(带源代码行)", "fatal_type_error": "以 Python 风格报错并退出(fatal_error 的别名)", "map_t_type": "将 t.CXxx / c.CXxx 类型名映射到 LLVMType\n\n 注意: t.CChar | t.CPtr = i8* = str = bytes\n ", "_is_t_attr": "检测节点是否是 t.attr_name 形式", "extract_class_name_from_annotation": "从类型注解 AST 中提取类名,返回 None=无法提取", "resolve_annotation_type": "解析类型注解节点为 LLVMType\n\n Args:\n pool: 内存分配器\n node: 类型注解 AST 节点(Name 或 Attribute)\n imported_modules: 已导入模块名字符串(空格分隔)\n from_imports: from-import 映射字符串(\"name:module name:module\" 格式)\n ", "has_decorator_marker": "检测类型注解中是否包含指定的装饰器标记", "is_pass_body": "检测函数体是否为 pass(空体或仅含 pass 语句)", "get_llvm_type_bits": "获取 LLVM 整数类型的位宽,非整数类型返回 0", "infer_expr_type": "推断表达式的 LLVM 类型\n\n param_types 格式: \"name:bits,name:bits,...\"\n ", "infer_return_type": "扫描函数体中的 return 语句,推断返回类型", "build_param_types_str": "构建参数类型编码字符串 \"name:bits,name:bits,...\" ", "_strappend": "将 src 追加到 dst 末尾"} \ No newline at end of file diff --git a/.transpyc_cache/db434883fc668c7c.pyi b/.transpyc_cache/db434883fc668c7c.pyi deleted file mode 100644 index d6de8a3..0000000 --- a/.transpyc_cache/db434883fc668c7c.pyi +++ /dev/null @@ -1,66 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesType.py -Module: lib.core.Handles.HandlesType -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import sys -import stdlib -import viperlib -import w32.fileio as fileio -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesStruct as HandlesStruct - -_g_current_file: t.CExtern | str -_g_generic_tp_names: t.CExtern | list[str] | t.CPtr -_g_generic_type_args: t.CExtern | list[str] | t.CPtr - -def set_generic_context(tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> t.CInt: pass - -def clear_generic_context() -> t.CInt: pass - -def resolve_generic_type_name(name: str) -> str: pass - -def _get_type_name_from_annotation(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _parse_type_string(pool: memhub.MemBuddy | t.CPtr, type_str: str, ctx: t.CInt) -> ast.AST | t.CPtr: pass - -def set_current_file(file_path: str) -> t.CInt: pass - - -_SRC_BUF_SIZE: t.CDefine = 262144 - -def _read_source_line(file_path: str, lineno: int) -> str: pass - -def fatal_error(node: ast.AST | t.CPtr, msg: str) -> t.CInt: pass - -def fatal_type_error(node: ast.AST | t.CPtr, msg: str) -> t.CInt: pass - -def map_t_type(pool: memhub.MemBuddy | t.CPtr, type_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _is_t_attr(node: ast.AST | t.CPtr, attr_name: str, imported_modules: str) -> int: pass - -def extract_class_name_from_annotation(node: ast.AST | t.CPtr, imported_modules: str) -> str: pass - -def resolve_annotation_type(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr, imported_modules: str, from_imports: str) -> llvmlite.LLVMType | t.CPtr: pass - -def has_decorator_marker(node: ast.AST | t.CPtr, marker_name: str) -> int: pass - -def is_pass_body(body: list[ast.AST | t.CPtr] | t.CPtr) -> int: pass - -def get_llvm_type_bits(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def infer_expr_type(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr, param_types: str) -> llvmlite.LLVMType | t.CPtr: pass - -def infer_return_type(pool: memhub.MemBuddy | t.CPtr, body: list[ast.AST | t.CPtr] | t.CPtr, param_types: str) -> llvmlite.LLVMType | t.CPtr: pass - -def build_param_types_str(pool: memhub.MemBuddy | t.CPtr, args_node: ast.AST | t.CPtr) -> str: pass - -def _strappend(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass diff --git a/.transpyc_cache/db4aafce81f39b32.doc.json b/.transpyc_cache/db4aafce81f39b32.doc.json deleted file mode 100644 index c3a1e25..0000000 --- a/.transpyc_cache/db4aafce81f39b32.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"SrcFileEntry": "源文件条目", "RunMultiFileProject": "多文件项目编译\n\n Returns: 0 成功,非 0 失败\n "} \ No newline at end of file diff --git a/.transpyc_cache/db4aafce81f39b32.pyi b/.transpyc_cache/db4aafce81f39b32.pyi deleted file mode 100644 index ad12e1f..0000000 --- a/.transpyc_cache/db4aafce81f39b32.pyi +++ /dev/null @@ -1,39 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Phase2.py -Module: lib.core.Phase2 -""" - - -import t, c -from stdint import * -import stdio -import string -import stdlib -import memhub -import viperlib -import w32.fileio as fileio -import w32.win32file -import w32.win32base -import sys -import ast -import llvmlite -import subprocess -import argparse -import lib.core.VLogger as VLogger -import lib.core.Handles.HandlesTranslator as HandlesTranslator -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.BuildPipeline as BuildPipeline -import lib.core.StubMerger as StubMerger -import lib.Projectrans.Utils as Utils -import lib.Projectrans.Config as Config - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -SRC_BUF_SIZE: t.CDefine = 1048576 -MAX_SRC_FILES: t.CDefine = 32 - -@t.NoVTable -class SrcFileEntry: - Path: str - Sha1: str - -def RunMultiFileProject(mb: memhub.MemBuddy | t.CPtr, source_dir: str, temp_dir: str, output_dir: str, cc_cmd: str, cc_flags: str, linker_cmd: str, linker_flags: str, linker_output: str, includes_binary_dir: str, includes_dir: str, do_phase1: int, do_phase2: int, log: VLogger.Logger | t.CPtr, args: argparse.ParsedArgs | t.CPtr) -> int: pass diff --git a/.transpyc_cache/db7c4a8f09d02a17.doc.json b/.transpyc_cache/db7c4a8f09d02a17.doc.json deleted file mode 100644 index 56e8c7e..0000000 --- a/.transpyc_cache/db7c4a8f09d02a17.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"RunPhase1": "Phase1: 扫描 includes 目录,按需翻译并生成 stub"} \ No newline at end of file diff --git a/.transpyc_cache/db7c4a8f09d02a17.pyi b/.transpyc_cache/db7c4a8f09d02a17.pyi deleted file mode 100644 index c2761c1..0000000 --- a/.transpyc_cache/db7c4a8f09d02a17.pyi +++ /dev/null @@ -1,32 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Phase1.py -Module: lib.core.Phase1 -""" - - -import t, c -from stdint import * -import stdio -import string -import stdlib -import memhub -import viperlib -import w32.fileio as fileio -import w32.win32file -import w32.win32base -import ast -import llvmlite -import lib.core.VLogger as VLogger -import lib.core.Handles.HandlesTranslator as HandlesTranslator -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.IncludesScanner as IncludesScanner -import lib.core.StubMerger as StubMerger -import lib.Projectrans.Config as Config - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -SRC_BUF_SIZE: t.CDefine = 1048576 - -def RunPhase1(mb: memhub.MemBuddy | t.CPtr, includes_dir: str, temp_dir: str, log: VLogger.Logger | t.CPtr) -> int: pass diff --git a/.transpyc_cache/dd19090b337e9bea.doc.json b/.transpyc_cache/dd19090b337e9bea.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/dd19090b337e9bea.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/dd19090b337e9bea.pyi b/.transpyc_cache/dd19090b337e9bea.pyi deleted file mode 100644 index 898995b..0000000 --- a/.transpyc_cache/dd19090b337e9bea.pyi +++ /dev/null @@ -1,41 +0,0 @@ -""" -Auto-generated Python stub file from __zlib.zhuff.py -Module: __zlib.zhuff -""" - - -from stdint import * -import zdef -import t, c - -ZHUFF_MAX_CODES: t.CDefine = 288 -ZHUFF_MAX_BITS: t.CDefine = 15 - -class zhuff_code: - code: UINT - bits: t.CInt -@t.Object -class zhuff_tree: - codes: t.CArray[zhuff_code, ZHUFF_MAX_CODES] - count: t.CInt - max_bits: t.CInt - def __init__(self: zhuff_tree) -> t.CInt: pass - def build_codes(self: zhuff_tree, freqs: INTPTR, count: t.CInt, max_bits: t.CInt) -> t.CInt: pass - def build_fixed_lit_tree(self: zhuff_tree) -> t.CInt: pass - def build_fixed_dist_tree(self: zhuff_tree) -> t.CInt: pass - def encode_symbol(self: zhuff_tree, symbol: int, writer: zdef.zbit_writer | t.CPtr) -> t.CInt: pass - def build_code_lengths(self: zhuff_tree, lengths: t.CInt | t.CPtr, freqs: t.CInt | t.CPtr, count: t.CInt, max_bits: t.CInt) -> t.CInt: pass - def get_fixed_lit_lengths(self: zhuff_tree, lengths: INTPTR) -> t.CInt: pass - def get_fixed_dist_lengths(self: zhuff_tree, lengths: INTPTR) -> t.CInt: pass - def build_tree_from_lengths(self: zhuff_tree, lengths: INTPTR, count: t.CInt, max_bits: t.CInt) -> t.CInt: pass -class zhuff_decode_node: - children: t.CArray[t.CInt, 2] - symbol: t.CInt -@t.Object -class zhuff_decode_tree: - nodes: t.CArray[zhuff_decode_node, 2 * ZHUFF_MAX_CODES] - node_count: t.CInt - root: t.CInt - def __init__(self: zhuff_decode_tree) -> t.CInt: pass - def build_decode_tree(self: zhuff_decode_tree, ht: zhuff_tree | t.CPtr) -> t.CInt: pass - def decode_symbol(self: zhuff_decode_tree, reader: zdef.zbit_reader | t.CPtr) -> t.CInt: pass \ No newline at end of file diff --git a/.transpyc_cache/df4ee63d3fef30a0.doc.json b/.transpyc_cache/df4ee63d3fef30a0.doc.json deleted file mode 100644 index c00e036..0000000 --- a/.transpyc_cache/df4ee63d3fef30a0.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数\n\n 直接接收三个 Value 参数,避免通过 Next 链表遍历(共享 alloca 对象的\n Next 字段可能被其他操作污染,导致链表断裂)。\n ", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/df4ee63d3fef30a0.pyi b/.transpyc_cache/df4ee63d3fef30a0.pyi deleted file mode 100644 index 40c3168..0000000 --- a/.transpyc_cache/df4ee63d3fef30a0.pyi +++ /dev/null @@ -1,171 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, dst_val: llvmlite.Value | t.CPtr, src_val: llvmlite.Value | t.CPtr, num_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/e0009679269c6b63.doc.json b/.transpyc_cache/e0009679269c6b63.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/e0009679269c6b63.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/e0009679269c6b63.pyi b/.transpyc_cache/e0009679269c6b63.pyi deleted file mode 100644 index 1a43833..0000000 --- a/.transpyc_cache/e0009679269c6b63.pyi +++ /dev/null @@ -1,23 +0,0 @@ -""" -Auto-generated Python stub file from string_test.py -Module: string_test -""" - - -import stdio -import t, c -import string - -def test_strlen() -> t.CInt: pass - -def test_strcmp() -> t.CInt: pass - -def test_strncmp() -> t.CInt: pass - -def test_atoi() -> t.CInt: pass - -def test_strchr() -> t.CInt: pass - -def test_strstr() -> t.CInt: pass - -def string_test() -> int: pass diff --git a/.transpyc_cache/e0b84369e50c937c.pyi b/.transpyc_cache/e0b84369e50c937c.pyi deleted file mode 100644 index c10ea89..0000000 --- a/.transpyc_cache/e0b84369e50c937c.pyi +++ /dev/null @@ -1,93 +0,0 @@ -""" -Auto-generated Python stub file from llvmlite.__function.py -Module: llvmlite.__function -""" - - -import t, c -from stdint import * -import string -import viperlib -import memhub -import stdio -from linkedlist import GSListNode, GSList -from .__types import LLVMType, ParamNode, TypePrint - -class Line(GSListNode[Line]): - Buf: t.CChar | t.CPtr - Len: t.CSizeT -class BasicBlock(GSListNode[BasicBlock]): - Name: t.CChar | t.CPtr - Lines: GSList[Line] | t.CPtr - IsTerminated: t.CInt -class Param(GSListNode[Param]): - Ty: LLVMType | t.CPtr - Name: t.CChar | t.CPtr - Attrs: t.CChar | t.CPtr -class Function(GSListNode[Function]): - Name: t.CChar | t.CPtr - RetTy: LLVMType | t.CPtr - Params: GSList[Param] | t.CPtr - Blocks: GSList[BasicBlock] | t.CPtr - IsDeclared: t.CInt - IsVarArg: t.CInt - Attrs: t.CChar | t.CPtr - -LINE_SIZE: t.CDefine = 24 - -def new_line(pool: memhub.MemBuddy | t.CPtr, text: t.CChar | t.CPtr) -> Line | t.CPtr: pass - -def _new_gslist(pool: memhub.MemBuddy | t.CPtr, list_size: t.CSizeT) -> t.CPtr: pass - - -BLOCK_SIZE: t.CDefine = 32 - -def new_basic_block(pool: memhub.MemBuddy | t.CPtr, name: t.CChar | t.CPtr) -> BasicBlock | t.CPtr: pass - - -PARAM_SIZE: t.CDefine = 32 - -def new_param(pool: memhub.MemBuddy | t.CPtr, ty: LLVMType | t.CPtr, name: t.CChar | t.CPtr) -> Param | t.CPtr: pass - - -FUNC_SIZE: t.CDefine = 56 - -def new_function(pool: memhub.MemBuddy | t.CPtr, name: t.CChar | t.CPtr, ret_ty: LLVMType | t.CPtr) -> Function | t.CPtr: pass - -def function_add_param(func: Function | t.CPtr, param: Param | t.CPtr) -> t.CInt: pass - -def function_add_block(func: Function | t.CPtr, block: BasicBlock | t.CPtr) -> t.CInt: pass - -def function_move_block_to_end(func: Function | t.CPtr, block: BasicBlock | t.CPtr) -> t.CInt: pass - -def block_append_line(block: BasicBlock | t.CPtr, line: Line | t.CPtr) -> t.CInt: pass - -def block_append_text(pool: memhub.MemBuddy | t.CPtr, block: BasicBlock | t.CPtr, text: t.CChar | t.CPtr) -> t.CInt: pass - -def function_set_attrs(func: Function | t.CPtr, attrs: t.CChar | t.CPtr) -> t.CInt: pass - -def param_set_attrs(param: Param | t.CPtr, attrs: t.CChar | t.CPtr) -> t.CInt: pass - -def _ll_name_needs_quote(name: str) -> t.CInt: pass - -def FunctionPrint(buf: t.CChar | t.CPtr, size: t.CSizeT, func: Function | t.CPtr, pool: memhub.MemBuddy | t.CPtr) -> t.CInt: pass - -def _append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def function_get_name(func: Function | t.CPtr) -> t.CChar | t.CPtr: pass - -def function_get_ret_ty(func: Function | t.CPtr) -> LLVMType | t.CPtr: pass - -def function_get_params(func: Function | t.CPtr) -> GSList[Param] | t.CPtr: pass - -def function_get_param_head(func: Function | t.CPtr) -> Param | t.CPtr: pass - -def function_get_next(func: Function | t.CPtr) -> Function | t.CPtr: pass - -def function_is_declared(func: Function | t.CPtr) -> t.CInt: pass - -def param_get_name(param: Param | t.CPtr) -> t.CChar | t.CPtr: pass - -def param_get_ty(param: Param | t.CPtr) -> LLVMType | t.CPtr: pass - -def param_get_next(param: Param | t.CPtr) -> Param | t.CPtr: pass diff --git a/.transpyc_cache/e24a7f4a875f4518.doc.json b/.transpyc_cache/e24a7f4a875f4518.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/e24a7f4a875f4518.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/e24a7f4a875f4518.pyi b/.transpyc_cache/e24a7f4a875f4518.pyi deleted file mode 100644 index 2825744..0000000 --- a/.transpyc_cache/e24a7f4a875f4518.pyi +++ /dev/null @@ -1,13 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - - -from stdint import * -import t, c -import stdio -import vrandom -import testcheck - -def main() -> t.CInt: pass diff --git a/.transpyc_cache/e272d279f536a678.doc.json b/.transpyc_cache/e272d279f536a678.doc.json deleted file mode 100644 index 95e17f3..0000000 --- a/.transpyc_cache/e272d279f536a678.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_load_includes_sha1_set": "读取 _sha1_map.txt,将 includes/ 开头的 SHA1 写入 sha1_set\n sha1_set 大小为 MAX_INCLUDES_SHA1 * 17(每个 SHA1 16字符+null)\n 返回找到的 includes SHA1 数量,-1 表示错误", "_is_in_sha1_set": "检查 sha1 是否在集合中", "WriteIncludesSha1Map": "将 includes 扫描结果写入 _sha1_map.txt(供 StubMerger 使用)\n\n 若 filter_set 不为 None 且 filter_count > 0,只写入 filter_set 中的条目。\n ", "_IsFuncDeclaredOrDefined": "检查 out_buf 中是否已有函数的 declare 或 define 行", "_CommentOutDeclareInBuf": "在 out_buf 中搜索 declare 行(包含 func_sig),将其注释掉", "_CommentOutGlobalInBuf": "在 out_buf 中搜索全局变量定义行(以 global_name 开头),将行首改为 ';'", "_CommentOutOpaqueTypeInBuf": "在 out_buf 中搜索 type_name_prefix 对应的 opaque 声明行,将行首改为 ';'\n\n type_name_prefix 格式: '%\"sha1.ClassName\"'(不含 '=' 和后续内容)\n 返回 1=已注释, 0=未找到\n ", "_HasFullTypeDefinition": "检查 out_buf 中是否已有 type_name_prefix 的完整定义", "_LoadAndAppendStub": "加载依赖 stub 并追加(跳过 header,去重)", "_LoadAndAppendTextDeclares": "从依赖 text.ll 提取 declare(define 转 declare),追加到 out_buf", "_PathToModuleName": "将文件路径转换为模块名", "_BuildIncludesSha1Map": "从 _sha1_map.txt 构建 sha1→module_name 映射,返回条目数", "_FindSha1ByModName": "从模块名查找 SHA1(精确匹配)", "_AddSha1ToSet": "将 SHA1 加入集合,返回新 count", "_BuildReachableSha1Set": "构建可达 SHA1 集合(依赖图按需翻译)", "BuildCombinedIR": "组合本地 stub + 依赖 stubs + 本地 text → out_buf(按需加载)"} \ No newline at end of file diff --git a/.transpyc_cache/e272d279f536a678.pyi b/.transpyc_cache/e272d279f536a678.pyi deleted file mode 100644 index 4466a75..0000000 --- a/.transpyc_cache/e272d279f536a678.pyi +++ /dev/null @@ -1,60 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.StubMerger.py -Module: lib.core.StubMerger -""" - - -import t, c -from stdint import * -import memhub -import string -import stdio -import stdlib -import llvmlite -import w32.win32file as win32file -import w32.win32base as win32base -import w32.fileio as fileio -import viperlib -import sys -import ast -import lib.core.IncludesScanner as IncludesScanner -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesTranslator as HandlesTranslator - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -MAX_INCLUDES_SHA1: t.CDefine = 256 -STUB_READ_BUF_SIZE: t.CDefine = 262144 -MAX_INCLUDES: t.CDefine = 256 - -def _load_includes_sha1_set(pool: memhub.MemBuddy | t.CPtr, temp_dir: str, sha1_set: str) -> int: pass - -def _is_in_sha1_set(sha1: str, sha1_set: str, set_count: int) -> int: pass - -def WriteIncludesSha1Map(mb: memhub.MemBuddy | t.CPtr, temp_dir: str, scan_result: IncludesScanner.ScanResult | t.CPtr, filter_set: t.CChar | t.CPtr, filter_count: int) -> int: pass - -def _IsFuncDeclaredOrDefined(out_buf: bytes, func_sig: str) -> int: pass - -def _CommentOutDeclareInBuf(out_buf: bytes, func_sig: str) -> int: pass - -def _CommentOutGlobalInBuf(out_buf: bytes, global_name: str) -> int: pass - -def _CommentOutOpaqueTypeInBuf(out_buf: bytes, type_name_prefix: str) -> int: pass - -def _HasFullTypeDefinition(out_buf: bytes, type_name_prefix: str) -> int: pass - -def _LoadAndAppendStub(temp_dir: str, td_len: t.CSizeT, dep_sha1: str, dep_buf: bytes, out_buf: bytes, out_size: t.CSizeT, out_pos: t.CSizeT) -> t.CSizeT: pass - -def _LoadAndAppendTextDeclares(temp_dir: str, td_len: t.CSizeT, dep_sha1: str, dep_buf: bytes, out_buf: bytes, out_size: t.CSizeT, out_pos: t.CSizeT) -> t.CSizeT: pass - -def _PathToModuleName(path: str) -> str: pass - -def _BuildIncludesSha1Map(temp_dir: str, td_len: t.CSizeT, sha1_list: t.CChar | t.CPtr, mod_list: t.CChar | t.CPtr) -> int: pass - -def _FindSha1ByModName(sha1_arr: t.CChar | t.CPtr, mod_arr: t.CChar | t.CPtr, count: int, mod_name: str) -> str: pass - -def _AddSha1ToSet(set_buf: t.CChar | t.CPtr, count: int, sha1: str) -> int: pass - -def _BuildReachableSha1Set(mb: memhub.MemBuddy | t.CPtr, source_dir: str, temp_dir: str, reachable_set: t.CChar | t.CPtr) -> int: pass - -def BuildCombinedIR(temp_dir: str, local_sha1: str, out_buf: bytes, out_size: t.CSizeT) -> t.CSizeT: pass diff --git a/.transpyc_cache/e285a7afdd9d844f.doc.json b/.transpyc_cache/e285a7afdd9d844f.doc.json deleted file mode 100644 index 6b37383..0000000 --- a/.transpyc_cache/e285a7afdd9d844f.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/e285a7afdd9d844f.pyi b/.transpyc_cache/e285a7afdd9d844f.pyi deleted file mode 100644 index e470478..0000000 --- a/.transpyc_cache/e285a7afdd9d844f.pyi +++ /dev/null @@ -1,171 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, args_head: llvmlite.Value | t.CPtr, arg_count: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/e306c57855054e23.doc.json b/.transpyc_cache/e306c57855054e23.doc.json deleted file mode 100644 index 6b37383..0000000 --- a/.transpyc_cache/e306c57855054e23.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/e306c57855054e23.pyi b/.transpyc_cache/e306c57855054e23.pyi deleted file mode 100644 index e470478..0000000 --- a/.transpyc_cache/e306c57855054e23.pyi +++ /dev/null @@ -1,171 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, args_head: llvmlite.Value | t.CPtr, arg_count: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/e36333e2cadb713a.doc.json b/.transpyc_cache/e36333e2cadb713a.doc.json deleted file mode 100644 index 4a5f0f2..0000000 --- a/.transpyc_cache/e36333e2cadb713a.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"Load_project_config": "加载工程配置文件(project.vpj)\n\n Args:\n path: 配置文件路径\n\n Returns:\n 0 表示成功,非 0 表示失败\n ", "_join_path": "将相对路径与 project_dir 拼接为绝对路径\n\n - ./App + Test → Test/App\n - ./temp + Test → Test/temp\n - ../includes + Test → Test/../includes(OS 解析为 includes)\n - 绝对路径保持不变\n - None 返回 None\n ", "resolve_paths": "解析并规范化工程路径(src/temp/output/includes)\n\n 将 project.vpj 中的相对路径(以 ./ 开头)转换为基于 project_dir 的路径。\n\n Args:\n project_dir: 工程根目录(project.vpj 所在目录)\n\n Returns:\n 0 表示成功,非 0 表示失败\n ", "get_includes_binary_dir": "获取 includes.binary 目录路径(includes 目录 + .binary 后缀)\n\n includes 目录如 ../includes,则 includes.binary 为 ../includes.binary\n ", "print_config": "打印当前配置(调试用)"} \ No newline at end of file diff --git a/.transpyc_cache/e36333e2cadb713a.pyi b/.transpyc_cache/e36333e2cadb713a.pyi deleted file mode 100644 index eaefae9..0000000 --- a/.transpyc_cache/e36333e2cadb713a.pyi +++ /dev/null @@ -1,40 +0,0 @@ -""" -Auto-generated Python stub file from lib.Projectrans.Config.py -Module: lib.Projectrans.Config -""" - - -import t, c -from stdint import * -import memhub -import string -import stdio -import viperlib -from json.__parser import parse as json_parse -from json import JsonValue, JSON_OBJECT, JSON_INT -import w32.fileio as fileio - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -SourceDir: t.CExtern | str -TempDir: t.CExtern | str -OutputDir: t.CExtern | str -ProjectName: t.CExtern | str -ProjectVersion: t.CExtern | str -CompilerCmd: t.CExtern | str -LinkerCmd: t.CExtern | str -LinkerOutput: t.CExtern | str -TargetTriple: t.CExtern | str -TargetDataLayout: t.CExtern | str -SliceLevel: t.CExtern | t.CInt -StrictMode: t.CExtern | t.CInt -IncludesDir: t.CExtern | str - -def Load_project_config(path: str) -> int: pass - -def _join_path(rel: str, project_dir: str) -> str: pass - -def resolve_paths(project_dir: str) -> int: pass - -def get_includes_binary_dir() -> str: pass - -def print_config() -> t.CInt: pass diff --git a/.transpyc_cache/e3834089153af692.doc.json b/.transpyc_cache/e3834089153af692.doc.json deleted file mode 100644 index 47b20d9..0000000 --- a/.transpyc_cache/e3834089153af692.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_get_external_func_param_ty": "获取外部函数第 param_idx 个参数的期望类型,None 表示用字面量原类型\n\n 对 Win32 API 函数的所有非指针参数返回 i64,匹配 declare 中\n ULONG/SIZE_T 被统一翻译为 i64 的情况。\n ", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数\n\n 直接接收三个 Value 参数,避免通过 Next 链表遍历(共享 alloca 对象的\n Next 字段可能被其他操作污染,导致链表断裂)。\n ", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/e3834089153af692.pyi b/.transpyc_cache/e3834089153af692.pyi deleted file mode 100644 index 5214419..0000000 --- a/.transpyc_cache/e3834089153af692.pyi +++ /dev/null @@ -1,173 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _get_external_func_param_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str, param_idx: int) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, dst_val: llvmlite.Value | t.CPtr, src_val: llvmlite.Value | t.CPtr, num_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/e3ac223bdaf94a0c.doc.json b/.transpyc_cache/e3ac223bdaf94a0c.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/e3ac223bdaf94a0c.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/e3ac223bdaf94a0c.pyi b/.transpyc_cache/e3ac223bdaf94a0c.pyi deleted file mode 100644 index 10d5c52..0000000 --- a/.transpyc_cache/e3ac223bdaf94a0c.pyi +++ /dev/null @@ -1,110 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - -import c - - -import t -from stdint import * -from stdio import printf -from stdlib import malloc -import testcheck - -class Rect: - width: t.CInt - height: t.CInt - def __new__(self: Rect, w: t.CInt, h: t.CInt) -> 'Rect' | t.CPtr: pass - def __init__(self: Rect, w: t.CInt, h: t.CInt) -> t.CInt: pass - @property - def area(self: Rect) -> t.CInt: pass - @property - def is_square(self: Rect) -> bool: pass - -def test_property_getter() -> t.CInt: pass - - -class Temperature: - _celsius: t.CDouble - def __new__(self: Temperature, celsius_val: t.CDouble) -> 'Temperature' | t.CPtr: pass - def __init__(self: Temperature, celsius_val: t.CDouble) -> t.CInt: pass - @property - def celsius(self: Temperature) -> t.CDouble: pass - @celsius.setter - def celsius(self: Temperature, val: t.CDouble) -> t.CInt: pass - @property - def fahrenheit(self: Temperature) -> t.CDouble: pass - -def test_property_setter() -> t.CInt: pass - - -class Counter: - _count: t.CInt - def __new__(self: Counter) -> 'Counter' | t.CPtr: pass - def __init__(self: Counter) -> t.CInt: pass - @property - def value(self: Counter) -> t.CInt: pass - @value.setter - def value(self: Counter, v: t.CInt) -> t.CInt: pass - -def test_property_getter_redef() -> t.CInt: pass - - -class Config: - _value: t.CInt - _deleted: t.CInt - def __new__(self: Config, v: t.CInt) -> 'Config' | t.CPtr: pass - def __init__(self: Config, v: t.CInt) -> t.CInt: pass - @property - def value(self: Config) -> t.CInt: pass - @value.setter - def value(self: Config, v: t.CInt) -> t.CInt: pass - @value.deleter - def value(self: Config) -> t.CInt: pass - def is_deleted(self: Config) -> bool: pass - -def test_property_deleter() -> t.CInt: pass - - -class MathUtils: - @staticmethod - def add(a: t.CInt, b: t.CInt) -> t.CInt: pass - @staticmethod - def max_val(a: t.CInt, b: t.CInt) -> t.CInt: pass - -def test_staticmethod() -> t.CInt: pass - - -class Point: - x: t.CDouble - y: t.CDouble - def __new__(self: Point, x: t.CDouble, y: t.CDouble) -> 'Point' | t.CPtr: pass - def __init__(self: Point, x: t.CDouble, y: t.CDouble) -> t.CInt: pass - @classmethod - def origin(cls: Point) -> Point: pass - @classmethod - def from_int(cls: Point, x: t.CInt, y: t.CInt) -> Point: pass - def dist_sq(self: Point) -> t.CDouble: pass - -def test_classmethod() -> t.CInt: pass - - -class Circle: - _radius: t.CDouble - def __new__(self: Circle, r: t.CDouble) -> 'Circle' | t.CPtr: pass - def __init__(self: Circle, r: t.CDouble) -> t.CInt: pass - @property - def radius(self: Circle) -> t.CDouble: pass - @radius.setter - def radius(self: Circle, val: t.CDouble) -> t.CInt: pass - @property - def area(self: Circle) -> t.CDouble: pass - @staticmethod - def is_unit(r: t.CDouble) -> bool: pass - @classmethod - def unit(cls: Circle) -> Circle: pass - -def test_combined() -> t.CInt: pass - -def main() -> t.CInt | t.CExport: pass diff --git a/.transpyc_cache/e3e7b6de8d7d8b03.pyi b/.transpyc_cache/e3e7b6de8d7d8b03.pyi deleted file mode 100644 index ac69b1b..0000000 --- a/.transpyc_cache/e3e7b6de8d7d8b03.pyi +++ /dev/null @@ -1,53 +0,0 @@ -""" -Auto-generated Python stub file from _dict.py -Module: _dict -""" - - -import t, c -import memhub -import string -import json -from stdint import * - -VARIANT_NONE: t.CDefine = 0 # 无类型/空值 -VARIANT_INT: t.CDefine = 1 # int (i64) -VARIANT_FLOAT: t.CDefine = 2 # float (f32) -VARIANT_DOUBLE: t.CDefine = 3 # double (f64) -VARIANT_STR: t.CDefine = 4 # str (i8*) -VARIANT_DICT: t.CDefine = 5 # dict* -VARIANT_LIST: t.CDefine = 6 # list* -VARIANT_BOOL: t.CDefine = 7 # bool (i1/i32) -VARIANT_PTR: t.CDefine = 8 # 自定义指针类型 -_VARIANT_SIZE: t.CDefine = 16 - -class dict: - __keys__: t.CPtr - __values__: t.CPtr - __count__: t.CSizeT = 0 - __capacity__: t.CSizeT = 8 - __mbuddy__: memhub.MemBuddy | t.CPtr - __iter_index__: t.CSizeT = 0 - def __new__(self: dict, mb: memhub.MemBuddy | t.CPtr) -> t.CPtr: pass - def __init__(self: dict, mb: memhub.MemBuddy | t.CPtr) -> t.CInt: pass - def __len__(self: dict) -> t.CSizeT: pass - def _find(self: dict, key: str) -> t.CSizeT: pass - def __getitem__(self: dict, key: str) -> t.CPtr: pass - def __setitem__(self: dict, key: str, val: t.CNeedPtr) -> t.CInt: pass - def _set_variant_raw(self: dict, key: str, vtype: t.CInt, ptr: t.CPtr) -> t.CInt: pass - def set_int(self: dict, key: str, val: int) -> t.CInt: pass - def set_str(self: dict, key: str, val: str) -> t.CInt: pass - def set_float(self: dict, key: str, val: float) -> t.CInt: pass - def set_double(self: dict, key: str, val: t.CDouble) -> t.CInt: pass - def set_dict(self: dict, key: str, val: dict | t.CPtr) -> t.CInt: pass - def set_list(self: dict, key: str, val: t.CPtr) -> t.CInt: pass - def set_bool(self: dict, key: str, val: t.CInt) -> t.CInt: pass - def get_vtype(self: dict, key: str) -> t.CInt: pass - def get(self: dict, key: str, default: t.CPtr) -> t.CPtr: pass - def contains(self: dict, key: str) -> t.CInt: pass - def __iter__(self: dict) -> dict | t.CPtr: pass - def __next__(self: dict) -> str: pass - def to_json(self: dict, pool: memhub.MemManager | t.CPtr) -> json.JsonValue | t.CPtr: pass - def from_json(self: dict, pool: memhub.MemManager | t.CPtr, root: json.JsonValue | t.CPtr) -> t.CInt: pass - def dumps(self: dict, pool: memhub.MemManager | t.CPtr) -> str: pass - def loads(self: dict, pool: memhub.MemManager | t.CPtr, json_str: str) -> t.CInt: pass \ No newline at end of file diff --git a/.transpyc_cache/e3f3b9ed2a5030c6.doc.json b/.transpyc_cache/e3f3b9ed2a5030c6.doc.json deleted file mode 100644 index 95e17f3..0000000 --- a/.transpyc_cache/e3f3b9ed2a5030c6.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_load_includes_sha1_set": "读取 _sha1_map.txt,将 includes/ 开头的 SHA1 写入 sha1_set\n sha1_set 大小为 MAX_INCLUDES_SHA1 * 17(每个 SHA1 16字符+null)\n 返回找到的 includes SHA1 数量,-1 表示错误", "_is_in_sha1_set": "检查 sha1 是否在集合中", "WriteIncludesSha1Map": "将 includes 扫描结果写入 _sha1_map.txt(供 StubMerger 使用)\n\n 若 filter_set 不为 None 且 filter_count > 0,只写入 filter_set 中的条目。\n ", "_IsFuncDeclaredOrDefined": "检查 out_buf 中是否已有函数的 declare 或 define 行", "_CommentOutDeclareInBuf": "在 out_buf 中搜索 declare 行(包含 func_sig),将其注释掉", "_CommentOutGlobalInBuf": "在 out_buf 中搜索全局变量定义行(以 global_name 开头),将行首改为 ';'", "_CommentOutOpaqueTypeInBuf": "在 out_buf 中搜索 type_name_prefix 对应的 opaque 声明行,将行首改为 ';'\n\n type_name_prefix 格式: '%\"sha1.ClassName\"'(不含 '=' 和后续内容)\n 返回 1=已注释, 0=未找到\n ", "_HasFullTypeDefinition": "检查 out_buf 中是否已有 type_name_prefix 的完整定义", "_LoadAndAppendStub": "加载依赖 stub 并追加(跳过 header,去重)", "_LoadAndAppendTextDeclares": "从依赖 text.ll 提取 declare(define 转 declare),追加到 out_buf", "_PathToModuleName": "将文件路径转换为模块名", "_BuildIncludesSha1Map": "从 _sha1_map.txt 构建 sha1→module_name 映射,返回条目数", "_FindSha1ByModName": "从模块名查找 SHA1(精确匹配)", "_AddSha1ToSet": "将 SHA1 加入集合,返回新 count", "_BuildReachableSha1Set": "构建可达 SHA1 集合(依赖图按需翻译)", "BuildCombinedIR": "组合本地 stub + 依赖 stubs + 本地 text → out_buf(按需加载)"} \ No newline at end of file diff --git a/.transpyc_cache/e3f3b9ed2a5030c6.pyi b/.transpyc_cache/e3f3b9ed2a5030c6.pyi deleted file mode 100644 index 4466a75..0000000 --- a/.transpyc_cache/e3f3b9ed2a5030c6.pyi +++ /dev/null @@ -1,60 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.StubMerger.py -Module: lib.core.StubMerger -""" - - -import t, c -from stdint import * -import memhub -import string -import stdio -import stdlib -import llvmlite -import w32.win32file as win32file -import w32.win32base as win32base -import w32.fileio as fileio -import viperlib -import sys -import ast -import lib.core.IncludesScanner as IncludesScanner -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesTranslator as HandlesTranslator - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -MAX_INCLUDES_SHA1: t.CDefine = 256 -STUB_READ_BUF_SIZE: t.CDefine = 262144 -MAX_INCLUDES: t.CDefine = 256 - -def _load_includes_sha1_set(pool: memhub.MemBuddy | t.CPtr, temp_dir: str, sha1_set: str) -> int: pass - -def _is_in_sha1_set(sha1: str, sha1_set: str, set_count: int) -> int: pass - -def WriteIncludesSha1Map(mb: memhub.MemBuddy | t.CPtr, temp_dir: str, scan_result: IncludesScanner.ScanResult | t.CPtr, filter_set: t.CChar | t.CPtr, filter_count: int) -> int: pass - -def _IsFuncDeclaredOrDefined(out_buf: bytes, func_sig: str) -> int: pass - -def _CommentOutDeclareInBuf(out_buf: bytes, func_sig: str) -> int: pass - -def _CommentOutGlobalInBuf(out_buf: bytes, global_name: str) -> int: pass - -def _CommentOutOpaqueTypeInBuf(out_buf: bytes, type_name_prefix: str) -> int: pass - -def _HasFullTypeDefinition(out_buf: bytes, type_name_prefix: str) -> int: pass - -def _LoadAndAppendStub(temp_dir: str, td_len: t.CSizeT, dep_sha1: str, dep_buf: bytes, out_buf: bytes, out_size: t.CSizeT, out_pos: t.CSizeT) -> t.CSizeT: pass - -def _LoadAndAppendTextDeclares(temp_dir: str, td_len: t.CSizeT, dep_sha1: str, dep_buf: bytes, out_buf: bytes, out_size: t.CSizeT, out_pos: t.CSizeT) -> t.CSizeT: pass - -def _PathToModuleName(path: str) -> str: pass - -def _BuildIncludesSha1Map(temp_dir: str, td_len: t.CSizeT, sha1_list: t.CChar | t.CPtr, mod_list: t.CChar | t.CPtr) -> int: pass - -def _FindSha1ByModName(sha1_arr: t.CChar | t.CPtr, mod_arr: t.CChar | t.CPtr, count: int, mod_name: str) -> str: pass - -def _AddSha1ToSet(set_buf: t.CChar | t.CPtr, count: int, sha1: str) -> int: pass - -def _BuildReachableSha1Set(mb: memhub.MemBuddy | t.CPtr, source_dir: str, temp_dir: str, reachable_set: t.CChar | t.CPtr) -> int: pass - -def BuildCombinedIR(temp_dir: str, local_sha1: str, out_buf: bytes, out_size: t.CSizeT) -> t.CSizeT: pass diff --git a/.transpyc_cache/e445a2bb299d1b7d.doc.json b/.transpyc_cache/e445a2bb299d1b7d.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/e445a2bb299d1b7d.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/e445a2bb299d1b7d.pyi b/.transpyc_cache/e445a2bb299d1b7d.pyi deleted file mode 100644 index 355f684..0000000 --- a/.transpyc_cache/e445a2bb299d1b7d.pyi +++ /dev/null @@ -1,51 +0,0 @@ -""" -Auto-generated Python stub file from __zlib.zinflate.py -Module: __zlib.zinflate -""" - - -from stdint import * -import zinflate -import zchecksum -import zdef -import zhuff -import string -import t, c - -@t.Object -class zinflate_stream: - reader: zdef.zbit_reader - window: BYTEPTR - window_pos: t.CInt - window_size: t.CInt - wbits: t.CInt - is_finished: t.CInt - is_initialized: t.CInt - header_parsed: t.CInt - is_gzip: t.CInt - adler: t.CUInt32T - crc: t.CUInt32T - output: BYTEPTR - output_len: t.CSizeT - output_cap: t.CSizeT - input_data: t.CConst | BYTEPTR - input_len: t.CSizeT - input_pos: t.CSizeT - max_length: t.CSizeT - def __init__(self: zinflate_stream) -> t.CInt: pass - def output_byte(self: zinflate_stream, byte: BYTE) -> t.CInt: pass - def parse_header(self: zinflate_stream) -> t.CInt: pass - def read_bits_from_input(self: zinflate_stream, nbits: t.CInt, out: UINTPTR) -> t.CInt: pass - def read_huffman(self: zinflate_stream, dt: zhuff.zhuff_decode_tree | t.CPtr) -> t.CInt: pass - def inflate_block_stored(self: zinflate_stream) -> t.CInt: pass - def inflate_block_fixed(self: zinflate_stream) -> t.CInt: pass - def inflate_block_dynamic(self: zinflate_stream) -> t.CInt: pass - def inflate_stream(self: zinflate_stream) -> t.CInt: pass - def decompress(self: zinflate_stream, data: UINT8PTR, length: t.CSizeT, max_length: t.CSizeT, out: t.CUInt8T | t.CPtr[t.CPtr], out_len: t.CSizeT | t.CPtr) -> t.CInt: pass - def set_dictionary(self: zinflate_stream, dict: UINT8PTR, length: t.CSizeT) -> t.CInt: pass - def copy(self: zinflate_stream) -> zinflate_stream | t.CPtr: pass - def destroy(self: zinflate_stream) -> t.CInt: pass - -def zinflate_one_shot(data: UINT8PTR, length: t.CSizeT, wbits: t.CInt, bufsize: t.CSizeT, out_len: t.CSizeT | t.CPtr) -> t.CUInt8T | t.CPtr: pass - -def zinflate_create(wbits: t.CInt) -> zinflate_stream | t.CPtr: pass diff --git a/.transpyc_cache/e4c98f097b75da35.doc.json b/.transpyc_cache/e4c98f097b75da35.doc.json deleted file mode 100644 index 56e8c7e..0000000 --- a/.transpyc_cache/e4c98f097b75da35.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"RunPhase1": "Phase1: 扫描 includes 目录,按需翻译并生成 stub"} \ No newline at end of file diff --git a/.transpyc_cache/e4c98f097b75da35.pyi b/.transpyc_cache/e4c98f097b75da35.pyi deleted file mode 100644 index d866b3e..0000000 --- a/.transpyc_cache/e4c98f097b75da35.pyi +++ /dev/null @@ -1,31 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Phase1.py -Module: lib.core.Phase1 -""" - - -import t, c -from stdint import * -import stdio -import string -import stdlib -import memhub -import viperlib -import w32.fileio as fileio -import w32.win32file -import w32.win32base -import ast -import llvmlite -import lib.core.VLogger as VLogger -import lib.core.Handles.HandlesTranslator as HandlesTranslator -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesExprCall as HandlesExprCall -import lib.core.IncludesScanner as IncludesScanner -import lib.core.StubMerger as StubMerger -import lib.Projectrans.Config as Config - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -SRC_BUF_SIZE: t.CDefine = 1048576 - -def RunPhase1(mb: memhub.MemBuddy | t.CPtr, includes_dir: str, temp_dir: str, log: VLogger.Logger | t.CPtr) -> int: pass diff --git a/.transpyc_cache/e5be27ae4fe7ce04.doc.json b/.transpyc_cache/e5be27ae4fe7ce04.doc.json deleted file mode 100644 index 7307589..0000000 --- a/.transpyc_cache/e5be27ae4fe7ce04.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"init_enum_table": "初始化枚举注册表,返回 1 成功", "_get_enum_entry": "获取第 i 个枚举条目", "_get_enum_member": "获取枚举中第 i 个成员条目", "register_enum": "注册枚举类型,返回 EnumEntry 指针", "add_enum_member": "向枚举添加成员,返回成员索引(-1 失败)", "find_enum": "按枚举类名查找,返回 EnumEntry 或 None", "lookup_enum_member": "按枚举类名和成员名查找,返回 EnumMember 或 None", "is_enum_class": "检查类名是否为已注册枚举,返回 1=是 / 0=否", "get_enum_base_type": "按枚举类名获取基准类型"} \ No newline at end of file diff --git a/.transpyc_cache/e5be27ae4fe7ce04.pyi b/.transpyc_cache/e5be27ae4fe7ce04.pyi deleted file mode 100644 index ee312c4..0000000 --- a/.transpyc_cache/e5be27ae4fe7ce04.pyi +++ /dev/null @@ -1,48 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesEnum.py -Module: lib.core.Handles.HandlesEnum -""" - - -import t, c -from stdint import * -import memhub -import string -import llvmlite -import stdio - -ENUM_MAX: t.CDefine = 64 -ENUM_MEMBER_MAX: t.CDefine = 64 - -@t.NoVTable -class EnumMember: - Name: t.CChar | t.CPtr - Value: t.CInt64T - Ty: llvmlite.LLVMType | t.CPtr -@t.NoVTable -class EnumEntry: - Name: t.CChar | t.CPtr - BaseTy: llvmlite.LLVMType | t.CPtr - MemberCount: int - Members: EnumMember | t.CPtr - -_enum_table: t.CExtern | EnumEntry | t.CPtr -_enum_count: t.CExtern | int - -def init_enum_table(pool: memhub.MemBuddy | t.CPtr) -> int: pass - -def _get_enum_entry(i: int) -> EnumEntry | t.CPtr: pass - -def _get_enum_member(enum_entry: EnumEntry | t.CPtr, i: int) -> EnumMember | t.CPtr: pass - -def register_enum(pool: memhub.MemBuddy | t.CPtr, name: str, base_ty: llvmlite.LLVMType | t.CPtr) -> EnumEntry | t.CPtr: pass - -def add_enum_member(pool: memhub.MemBuddy | t.CPtr, enum_entry: EnumEntry | t.CPtr, member_name: str, member_val: t.CInt64T, member_ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def find_enum(name: str) -> EnumEntry | t.CPtr: pass - -def lookup_enum_member(enum_name: str, member_name: str) -> EnumMember | t.CPtr: pass - -def is_enum_class(name: str) -> int: pass - -def get_enum_base_type(enum_name: str) -> llvmlite.LLVMType | t.CPtr: pass diff --git a/.transpyc_cache/e5fb16127bce8f68.doc.json b/.transpyc_cache/e5fb16127bce8f68.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/e5fb16127bce8f68.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/e5fb16127bce8f68.pyi b/.transpyc_cache/e5fb16127bce8f68.pyi deleted file mode 100644 index 5677a22..0000000 --- a/.transpyc_cache/e5fb16127bce8f68.pyi +++ /dev/null @@ -1,66 +0,0 @@ -""" -Auto-generated Python stub file from zc.class_test.py -Module: zc.class_test -""" - - -import stdio -import stdint -import t, c - -class SimpleData(t.Object): - x: t.CInt - y: t.CInt -class Point3D(t.Object): - x: t.CFloat - y: t.CFloat - z: t.CFloat -class Student(t.Object): - name: t.CChar | t.CPtr - age: t.CInt - score: t.CInt - def __init__(self: Student, n: t.CChar | t.CPtr, a: t.CInt, s: t.CInt) -> t.CInt: pass - def get_age(self: Student) -> t.CInt: pass - def get_score(self: Student) -> t.CInt: pass -class Counter(t.Object): - value: t.CInt - def __init__(self: Counter, initial: t.CInt) -> t.CInt: pass - def increment(self: Counter) -> t.CInt: pass - def get_value(self: Counter) -> t.CInt: pass -class StackObj(t.Object): - data: t.CInt - next_ptr: t.CVoid | t.CPtr - -def TestBasicDataClass() -> t.CInt: pass - -def TestPoint3DClass() -> t.CInt: pass - -def TestStudentClass() -> t.CInt: pass - -def TestCounterClass() -> t.CInt: pass - -def TestStackAllocation() -> t.CInt: pass - -def TestHeapAllocation() -> t.CInt: pass - -def TestHeapObjectWithInit() -> t.CInt: pass - -def TestMultipleStackObjects() -> t.CInt: pass - -def TestImplicitInitCall() -> t.CInt: pass - -def TestClassWithBitFields() -> t.CInt: pass - -def TestIntArray() -> t.CInt: pass - -def TestFloatArray() -> t.CInt: pass - -def TestCharArray() -> t.CInt: pass - -def TestNestedArray() -> t.CInt: pass - -def TestArrayWithStruct() -> t.CInt: pass - -def TestArrayPointer() -> t.CInt: pass - -def TestDynamicString() -> t.CInt: pass diff --git a/.transpyc_cache/e7183a8c64d4872d.doc.json b/.transpyc_cache/e7183a8c64d4872d.doc.json deleted file mode 100644 index a8e6f20..0000000 --- a/.transpyc_cache/e7183a8c64d4872d.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_is_cenum_base": "检查 base 节点是否为 t.CEnum,返回 1=是 / 0=否", "_is_enum_class": "检查 ClassDef 是否继承自 t.CEnum,返回 1=是 / 0=否", "_is_cunion_base": "检查 base 节点是否为 t.CUnion,返回 1=是 / 0=否", "_is_union_class": "检查 ClassDef 是否继承自 t.CUnion,返回 1=是 / 0=否", "_has_decorator": "检查 decorator_list 中是否有指定装饰器名", "_is_marker_base": "检查基类名是否为标记基类,返回 1=是 / 0=否", "_get_base_name": "从 base AST 节点提取基类名,返回 None=失败", "_get_parent_class": "获取 ClassDef 的真实父类名,返回 None=无真实父类", "_has_any_func_cvtable": "检查类中是否有任何函数标记了 @t.CVTable,返回 1=有 / 0=无", "_should_method_be_virtual": "判断方法是否应该进入虚表,返回 1=包含 / 0=排除", "_detect_vtable_status": "检测类是否应该启用虚表", "_resolve_enum_member_type": "解析枚举成员的类型注解为 LLVM 整数类型", "_is_state_annotation": "检查注解节点是否为 t.State,返回 1=是 / 0=否", "_extract_int_value": "从 AST 节点提取整数值,失败返回 0", "_translate_enum_def": "翻译枚举类定义,返回 0", "_get_type_size": "计算 LLVM 类型的字节大小", "_translate_union_def": "翻译联合体定义,返回 0", "_is_generic_class": "检查 ClassDef 是否有类型参数(泛型类),返回 1=是 / 0=否", "_register_generic_template": "注册泛型类模板(类名 + ClassDef 节点)", "_find_generic_template": "查找泛型类模板,返回 ClassDef 节点或 None", "_mangle_generic_class_name": "生成特化类名: list + [int] -> list[int]\n\n 分配新缓冲区拼接,避免原地 strcat 导致缓冲区溢出\n ", "_clone_annotation": "拷贝类型注解表达式,替换类型参数 T 为具体类型名\n\n tp_names: 类型参数名列表 ['T']\n type_args: 类型实参名列表 ['int']\n ", "_clone_arguments": "拷贝 Arguments 节点,替换 arg annotation 中的 T", "_clone_classdef_for_spec": "拷贝 ClassDef 节点用于泛型特化\n\n - 替换类名为 spec_name\n - 清除 type_params(特化后不是泛型类)\n - 拷贝 children 中的 AnnAssign 和 FunctionDef,替换类型注解中的 T\n - 方法体直接引用原始节点(通过 type_map 上下文处理 T)\n ", "_find_cached_spec": "查找已缓存的特化名,未找到返回 None", "_cache_spec": "缓存特化结果", "_specialize_generic_class": "特化泛型类,返回特化类名\n\n 1. 查找泛型模板\n 2. 生成特化名\n 3. 检查缓存\n 4. 拷贝 ClassDef 节点(替换类型注解中的 T)\n 5. 设置 type_map 上下文(用于方法体中的 T 替换)\n 6. 调用 translate_class_def 翻译特化类\n 7. 返回特化名\n ", "translate_class_def": "翻译 class 定义,返回 0", "_vtable_strcat": "将 src 追加到 dst 末尾", "_vtable_name_needs_quote": "检查 LLVM 标识符是否需要引号(以数字开头或含 '.')", "_format_func_type_str": "从 Function 对象生成函数类型字符串", "_generate_vtable": "生成 VTable 全局变量", "_translate_oop_methods": "扫描 class body 中的方法并翻译,生成 __before_init__", "_translate_method": "翻译单个方法,返回 0", "_generate_before_init": "生成 __before_init__ 函数,返回 0"} \ No newline at end of file diff --git a/.transpyc_cache/e7183a8c64d4872d.pyi b/.transpyc_cache/e7183a8c64d4872d.pyi deleted file mode 100644 index 62b2e80..0000000 --- a/.transpyc_cache/e7183a8c64d4872d.pyi +++ /dev/null @@ -1,104 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesClassDef.py -Module: lib.core.Handles.HandlesClassDef -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import viperlib -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesEnum as HandlesEnum - -ENUM_MEMBER_MAX_LOCAL: t.CDefine = 64 - -def _is_cenum_base(base_node: ast.AST | t.CPtr) -> int: pass - -def _is_enum_class(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _is_cunion_base(base_node: ast.AST | t.CPtr) -> int: pass - -def _is_union_class(cd: ast.ClassDef | t.CPtr) -> int: pass - - -_MARKER_BASES: t.CDefine = 8 - -def _has_decorator(decorator_list: list[ast.AST | t.CPtr] | t.CPtr, deco_name: str) -> int: pass - -def _is_marker_base(base_name: str) -> int: pass - -def _get_base_name(base_node: ast.AST | t.CPtr) -> str: pass - -def _get_parent_class(cd: ast.ClassDef | t.CPtr) -> str: pass - -def _has_any_func_cvtable(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _should_method_be_virtual(cd: ast.ClassDef | t.CPtr, fd: ast.FunctionDef | t.CPtr, trans: HT.Translator | t.CPtr) -> int: pass - -def _detect_vtable_status(cd: ast.ClassDef | t.CPtr, trans: HT.Translator | t.CPtr) -> int: pass - -def _resolve_enum_member_type(pool: memhub.MemBuddy | t.CPtr, ann_node: ast.AST | t.CPtr, imported_modules: str, from_imports: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _is_state_annotation(node: ast.AST | t.CPtr) -> int: pass - -def _extract_int_value(node: ast.AST | t.CPtr) -> t.CInt64T: pass - -def _translate_enum_def(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr) -> int: pass - -def _get_type_size(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def _translate_union_def(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr) -> int: pass - - -_generic_class_names: t.CExtern | list[str] | t.CPtr -_generic_class_nodes: t.CExtern | list[ast.ClassDef | t.CPtr] | t.CPtr - -def _is_generic_class(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _register_generic_template(pool: memhub.MemBuddy | t.CPtr, cd: ast.ClassDef | t.CPtr) -> t.CInt: pass - -def _find_generic_template(class_name: str) -> ast.ClassDef | t.CPtr: pass - -def _mangle_generic_class_name(pool: memhub.MemBuddy | t.CPtr, class_name: str, type_args: list[str] | t.CPtr) -> str: pass - -def _clone_annotation(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.AST | t.CPtr: pass - -def _clone_arguments(pool: memhub.MemBuddy | t.CPtr, args: ast.AST | t.CPtr, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.AST | t.CPtr: pass - -def _clone_classdef_for_spec(pool: memhub.MemBuddy | t.CPtr, cd: ast.ClassDef | t.CPtr, spec_name: str, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.ClassDef | t.CPtr: pass - - -_spec_keys: t.CExtern | list[str] | t.CPtr -_spec_names: t.CExtern | list[str] | t.CPtr - -def _find_cached_spec(spec_key: str) -> str: pass - -def _cache_spec(pool: memhub.MemBuddy | t.CPtr, spec_key: str, spec_name: str) -> t.CInt: pass - -def _specialize_generic_class(trans: HT.Translator | t.CPtr, class_name: str, type_args: list[str] | t.CPtr) -> str: pass - -def translate_class_def(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - - -VTBL_METHOD_MAX: t.CDefine = 32 - -def _vtable_strcat(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _vtable_name_needs_quote(name: str) -> int: pass - -def _format_func_type_str(pool: memhub.MemBuddy | t.CPtr, buf: t.CChar | t.CPtr, buf_size: t.CSizeT, func: llvmlite.Function | t.CPtr) -> int: pass - -def _generate_vtable(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr, class_name: str) -> int: pass - -def _translate_oop_methods(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass - -def _translate_method(trans: HT.Translator | t.CPtr, fd: ast.FunctionDef | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass - -def _generate_before_init(trans: HT.Translator | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass diff --git a/.transpyc_cache/e74870eba3e6d774.doc.json b/.transpyc_cache/e74870eba3e6d774.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/e74870eba3e6d774.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/e74870eba3e6d774.pyi b/.transpyc_cache/e74870eba3e6d774.pyi deleted file mode 100644 index ec2af45..0000000 --- a/.transpyc_cache/e74870eba3e6d774.pyi +++ /dev/null @@ -1,15 +0,0 @@ -""" -Auto-generated Python stub file from float_test.py -Module: float_test -""" - - -import stdio -import t, c - -class DataUnion(t.CUnion): - i: t.CInt - f: t.CFloat - l: t.CInt64T - -def float_test() -> int: pass diff --git a/.transpyc_cache/e773fbfd4a1e4587.doc.json b/.transpyc_cache/e773fbfd4a1e4587.doc.json deleted file mode 100644 index 95e17f3..0000000 --- a/.transpyc_cache/e773fbfd4a1e4587.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_load_includes_sha1_set": "读取 _sha1_map.txt,将 includes/ 开头的 SHA1 写入 sha1_set\n sha1_set 大小为 MAX_INCLUDES_SHA1 * 17(每个 SHA1 16字符+null)\n 返回找到的 includes SHA1 数量,-1 表示错误", "_is_in_sha1_set": "检查 sha1 是否在集合中", "WriteIncludesSha1Map": "将 includes 扫描结果写入 _sha1_map.txt(供 StubMerger 使用)\n\n 若 filter_set 不为 None 且 filter_count > 0,只写入 filter_set 中的条目。\n ", "_IsFuncDeclaredOrDefined": "检查 out_buf 中是否已有函数的 declare 或 define 行", "_CommentOutDeclareInBuf": "在 out_buf 中搜索 declare 行(包含 func_sig),将其注释掉", "_CommentOutGlobalInBuf": "在 out_buf 中搜索全局变量定义行(以 global_name 开头),将行首改为 ';'", "_CommentOutOpaqueTypeInBuf": "在 out_buf 中搜索 type_name_prefix 对应的 opaque 声明行,将行首改为 ';'\n\n type_name_prefix 格式: '%\"sha1.ClassName\"'(不含 '=' 和后续内容)\n 返回 1=已注释, 0=未找到\n ", "_HasFullTypeDefinition": "检查 out_buf 中是否已有 type_name_prefix 的完整定义", "_LoadAndAppendStub": "加载依赖 stub 并追加(跳过 header,去重)", "_LoadAndAppendTextDeclares": "从依赖 text.ll 提取 declare(define 转 declare),追加到 out_buf", "_PathToModuleName": "将文件路径转换为模块名", "_BuildIncludesSha1Map": "从 _sha1_map.txt 构建 sha1→module_name 映射,返回条目数", "_FindSha1ByModName": "从模块名查找 SHA1(精确匹配)", "_AddSha1ToSet": "将 SHA1 加入集合,返回新 count", "_BuildReachableSha1Set": "构建可达 SHA1 集合(依赖图按需翻译)", "BuildCombinedIR": "组合本地 stub + 依赖 stubs + 本地 text → out_buf(按需加载)"} \ No newline at end of file diff --git a/.transpyc_cache/e773fbfd4a1e4587.pyi b/.transpyc_cache/e773fbfd4a1e4587.pyi deleted file mode 100644 index 4466a75..0000000 --- a/.transpyc_cache/e773fbfd4a1e4587.pyi +++ /dev/null @@ -1,60 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.StubMerger.py -Module: lib.core.StubMerger -""" - - -import t, c -from stdint import * -import memhub -import string -import stdio -import stdlib -import llvmlite -import w32.win32file as win32file -import w32.win32base as win32base -import w32.fileio as fileio -import viperlib -import sys -import ast -import lib.core.IncludesScanner as IncludesScanner -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesTranslator as HandlesTranslator - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -MAX_INCLUDES_SHA1: t.CDefine = 256 -STUB_READ_BUF_SIZE: t.CDefine = 262144 -MAX_INCLUDES: t.CDefine = 256 - -def _load_includes_sha1_set(pool: memhub.MemBuddy | t.CPtr, temp_dir: str, sha1_set: str) -> int: pass - -def _is_in_sha1_set(sha1: str, sha1_set: str, set_count: int) -> int: pass - -def WriteIncludesSha1Map(mb: memhub.MemBuddy | t.CPtr, temp_dir: str, scan_result: IncludesScanner.ScanResult | t.CPtr, filter_set: t.CChar | t.CPtr, filter_count: int) -> int: pass - -def _IsFuncDeclaredOrDefined(out_buf: bytes, func_sig: str) -> int: pass - -def _CommentOutDeclareInBuf(out_buf: bytes, func_sig: str) -> int: pass - -def _CommentOutGlobalInBuf(out_buf: bytes, global_name: str) -> int: pass - -def _CommentOutOpaqueTypeInBuf(out_buf: bytes, type_name_prefix: str) -> int: pass - -def _HasFullTypeDefinition(out_buf: bytes, type_name_prefix: str) -> int: pass - -def _LoadAndAppendStub(temp_dir: str, td_len: t.CSizeT, dep_sha1: str, dep_buf: bytes, out_buf: bytes, out_size: t.CSizeT, out_pos: t.CSizeT) -> t.CSizeT: pass - -def _LoadAndAppendTextDeclares(temp_dir: str, td_len: t.CSizeT, dep_sha1: str, dep_buf: bytes, out_buf: bytes, out_size: t.CSizeT, out_pos: t.CSizeT) -> t.CSizeT: pass - -def _PathToModuleName(path: str) -> str: pass - -def _BuildIncludesSha1Map(temp_dir: str, td_len: t.CSizeT, sha1_list: t.CChar | t.CPtr, mod_list: t.CChar | t.CPtr) -> int: pass - -def _FindSha1ByModName(sha1_arr: t.CChar | t.CPtr, mod_arr: t.CChar | t.CPtr, count: int, mod_name: str) -> str: pass - -def _AddSha1ToSet(set_buf: t.CChar | t.CPtr, count: int, sha1: str) -> int: pass - -def _BuildReachableSha1Set(mb: memhub.MemBuddy | t.CPtr, source_dir: str, temp_dir: str, reachable_set: t.CChar | t.CPtr) -> int: pass - -def BuildCombinedIR(temp_dir: str, local_sha1: str, out_buf: bytes, out_size: t.CSizeT) -> t.CSizeT: pass diff --git a/.transpyc_cache/eb252050d92f8fb9.doc.json b/.transpyc_cache/eb252050d92f8fb9.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/eb252050d92f8fb9.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/eb252050d92f8fb9.pyi b/.transpyc_cache/eb252050d92f8fb9.pyi deleted file mode 100644 index 00b3762..0000000 --- a/.transpyc_cache/eb252050d92f8fb9.pyi +++ /dev/null @@ -1,10 +0,0 @@ -""" -Auto-generated Python stub file from deref_test.py -Module: deref_test -""" - - -import stdio -import t, c - -def deref_test() -> int: pass diff --git a/.transpyc_cache/ed1c124f3cb787c9.doc.json b/.transpyc_cache/ed1c124f3cb787c9.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/ed1c124f3cb787c9.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/ed1c124f3cb787c9.pyi b/.transpyc_cache/ed1c124f3cb787c9.pyi deleted file mode 100644 index 123d4fd..0000000 --- a/.transpyc_cache/ed1c124f3cb787c9.pyi +++ /dev/null @@ -1,10 +0,0 @@ -""" -Auto-generated Python stub file from ptr_only_test.py -Module: ptr_only_test -""" - - -import stdio -import t, c - -def ptr_only_test() -> int: pass diff --git a/.transpyc_cache/ee52c08239684346.pyi b/.transpyc_cache/ee52c08239684346.pyi deleted file mode 100644 index ee09339..0000000 --- a/.transpyc_cache/ee52c08239684346.pyi +++ /dev/null @@ -1,215 +0,0 @@ -""" -Auto-generated Python stub file from ast.parser.py -Module: ast.parser -""" - - -import t, c -from stdint import * -import memhub -import string -from .tokens import Token, TokenType, Keyword, TokOp -from .base import AST, ASTCtx, ASTKind, OpKind, ASTFlag, _set_pos, _binop_from_op, _augop_from_op, _cmpop_from_op, _copy_str, _inherit_pos, _init_ast, CONST_INT, CONST_FLOAT, CONST_STR, CONST_BOOL, CONST_NONE, FLAG_IS_ASYNC -from .exprs import BoolOp, BinOp, UnaryOp, Lambda, IfExp, Dict, Set, ListComp, SetComp, DictComp, GeneratorExp, Await, Yield, YieldFrom, FormattedValue, JoinedStr, Constant, NamedExpr, Attribute, Subscript, Starred, Name, List, Tuple, Slice, Call, Compare, OpNode -from .stmts import Module, Expression, Interactive, FunctionType, FunctionDef, ClassDef, Return, Delete, Assign, AugAssign, AnnAssign, For, While, If, With, Raise, Try, Assert, Global, Nonlocal, Pass, Break, Continue, Expr, Import, ImportFrom, Match -from .astaux import ExceptHandler, Arguments, Arg, Keyword as KwNode, Alias, WithItem, Comprehension -from .match import MatchCase, MatchValue, MatchSingleton, MatchSequence, MatchMapping, MatchClass, MatchStar, MatchAs, MatchOr -from .lexer import Lexer, _lexer_init, tokenize, new_lexer - -class Parser: - tokens: Token | t.CPtr - cur: Token | t.CPtr - pool: memhub.MemManager | t.CPtr - error_count: t.CInt - pending_decorators: list[AST | t.CPtr] | t.CPtr - def __new__(self: Parser, pool: memhub.MemManager | t.CPtr) -> t.CInt: pass - -def new_parser(pool: memhub.MemManager | t.CPtr) -> Parser | t.CPtr: pass - -def _parser_init(ps: Parser | t.CPtr, tokens: Token | t.CPtr, pool: memhub.MemManager | t.CPtr) -> t.CInt: pass - -def _advance(ps: Parser | t.CPtr) -> t.CInt: pass - -def _cur_type(ps: Parser | t.CPtr) -> t.CInt: pass - -def _cur_op(ps: Parser | t.CPtr) -> t.CInt: pass - -def _cur_kw(ps: Parser | t.CPtr) -> t.CInt: pass - -def _cur_str(ps: Parser | t.CPtr) -> str: pass - -def _cur_lineno(ps: Parser | t.CPtr) -> t.CInt: pass - -def _cur_col(ps: Parser | t.CPtr) -> t.CInt: pass - -def _skip_nl(ps: Parser | t.CPtr) -> t.CInt: pass - -def _skip_nls_and_newlines(ps: Parser | t.CPtr) -> t.CInt: pass - -def _expect_type(ps: Parser | t.CPtr, ttype: t.CInt) -> t.CInt: pass - -def _expect_op(ps: Parser | t.CPtr, op_id: t.CInt) -> t.CInt: pass - -def _match_op(ps: Parser | t.CPtr, op_id: t.CInt) -> t.CInt: pass - -def _accept_op(ps: Parser | t.CPtr, op_id: t.CInt) -> t.CInt: pass - -def _new_const_int(pool: memhub.MemManager | t.CPtr, val: t.CInt64T, lineno: t.CInt, col: t.CInt) -> AST | t.CPtr: pass - -def _new_const_float(pool: memhub.MemManager | t.CPtr, val: t.CDouble, lineno: t.CInt, col: t.CInt) -> AST | t.CPtr: pass - -def _new_const_str(pool: memhub.MemManager | t.CPtr, val: str, lineno: t.CInt, col: t.CInt) -> AST | t.CPtr: pass - -def _new_const_bool(pool: memhub.MemManager | t.CPtr, val: t.CInt, lineno: t.CInt, col: t.CInt) -> AST | t.CPtr: pass - -def _new_const_none(pool: memhub.MemManager | t.CPtr, lineno: t.CInt, col: t.CInt) -> AST | t.CPtr: pass - -def _set_ctx(node: AST | t.CPtr, ctx: t.CInt) -> t.CInt: pass - -def _fix_store_ctx(node: AST | t.CPtr) -> t.CInt: pass - -def _parse_expr(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_namedexpr(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_test(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_lambda(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_or_test(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_and_test(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_not_test(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_comparison(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _match_comp_op(ps: Parser | t.CPtr) -> t.CInt: pass - -def _advance_comp_op(ps: Parser | t.CPtr) -> t.CInt: pass - -def _parse_bitor(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_bitxor(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_bitand(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_shift(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_arith(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_term(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_factor(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_power(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_atom_expr(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_call(ps: Parser | t.CPtr, func: AST | t.CPtr) -> AST | t.CPtr: pass - -def _parse_subscript(ps: Parser | t.CPtr, value: AST | t.CPtr) -> AST | t.CPtr: pass - -def _parse_slice(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_atom(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_paren(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_list(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_brace(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_sub_expr(ps: Parser | t.CPtr, src: str) -> AST | t.CPtr: pass - -def _parse_fstring(ps: Parser | t.CPtr, content: str, lineno: t.CInt, col: t.CInt) -> AST | t.CPtr: pass - -def _parse_comprehension(ps: Parser | t.CPtr, elt: AST | t.CPtr, vtype: t.CInt, lineno: t.CInt, col: t.CInt) -> AST | t.CPtr: pass - -def _parse_comp_for(ps: Parser | t.CPtr) -> list[AST | t.CPtr] | t.CPtr: pass - -def _parse_target_list(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_target(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_yield(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_varargslist(ps: Parser | t.CPtr, is_lambda: t.CInt) -> AST | t.CPtr: pass - -def _parse_arg_def(ps: Parser | t.CPtr, is_lambda: t.CInt) -> AST | t.CPtr: pass - -def _parse_suite_into_children(ps: Parser | t.CPtr, parent: AST | t.CPtr) -> t.CInt: pass - -def _parse_statement_into(ps: Parser | t.CPtr, parent: AST | t.CPtr) -> t.CInt: pass - -def _parse_simple_stmt_into(ps: Parser | t.CPtr, parent: AST | t.CPtr) -> t.CInt: pass - -def _parse_small_stmt(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _maybe_tuple(ps: Parser | t.CPtr, first: AST | t.CPtr) -> AST | t.CPtr: pass - -def _parse_testlist(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_expr_stmt(ps: Parser | t.CPtr, first: AST | t.CPtr) -> AST | t.CPtr: pass - -def _parse_return(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_raise(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_global(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_nonlocal(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_import(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_from_import(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_alias_list(ps: Parser | t.CPtr) -> list[AST | t.CPtr] | t.CPtr: pass - -def _parse_del(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_assert(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_compound(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_if(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_if_tail(ps: Parser | t.CPtr) -> list[AST | t.CPtr] | t.CPtr: pass - -def _parse_while(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_for(ps: Parser | t.CPtr, is_async: t.CInt) -> AST | t.CPtr: pass - -def _parse_try(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_except_handler(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_with(ps: Parser | t.CPtr, is_async: t.CInt) -> AST | t.CPtr: pass - -def _parse_with_item(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_funcdef(ps: Parser | t.CPtr, is_async: t.CInt) -> AST | t.CPtr: pass - -def _parse_classdef(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_match(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _make_name_ast(pool: memhub.MemManager | t.CPtr, node: Name | t.CPtr) -> AST | t.CPtr: pass - -def _parse_pattern(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_closed_pattern(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_sequence_pattern(ps: Parser | t.CPtr, close_op: t.CInt, lineno: t.CInt, col: t.CInt) -> AST | t.CPtr: pass - -def _parse_mapping_pattern(ps: Parser | t.CPtr, lineno: t.CInt, col: t.CInt) -> AST | t.CPtr: pass - -def _parse_class_pattern(ps: Parser | t.CPtr, cls: AST | t.CPtr, lineno: t.CInt, col: t.CInt) -> AST | t.CPtr: pass - -def _parse_match_case(ps: Parser | t.CPtr) -> AST | t.CPtr: pass - -def _parse_decorators(ps: Parser | t.CPtr) -> list[AST | t.CPtr] | t.CPtr: pass - -def _parse_module_body(ps: Parser | t.CPtr, module_node: AST | t.CPtr) -> t.CInt: pass - -def parse_tokens(pool: memhub.MemManager | t.CPtr, tokens: Token | t.CPtr) -> AST | t.CPtr: pass diff --git a/.transpyc_cache/ef45adce81bf5b2d.doc.json b/.transpyc_cache/ef45adce81bf5b2d.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/ef45adce81bf5b2d.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/ef45adce81bf5b2d.pyi b/.transpyc_cache/ef45adce81bf5b2d.pyi deleted file mode 100644 index 7eeac7e..0000000 --- a/.transpyc_cache/ef45adce81bf5b2d.pyi +++ /dev/null @@ -1,12 +0,0 @@ -""" -Auto-generated Python stub file from namespace_test.py -Module: namespace_test -""" - - -import stdio -import t, c -import namespace_defs -from namespace_defs import Widget, Gadget, PlainStruct - -def namespace_test() -> int: pass diff --git a/.transpyc_cache/f08abd3a207590f0.doc.json b/.transpyc_cache/f08abd3a207590f0.doc.json deleted file mode 100644 index 724daa6..0000000 --- a/.transpyc_cache/f08abd3a207590f0.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到\n\n allow_star_fallback: 传 0 禁用 star import 回退(用于明确模块名/函数名查找)\n ", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_get_external_func_param_ty": "获取外部函数第 param_idx 个参数的期望类型,None 表示用字面量原类型\n\n 对 Win32 API 函数的所有非指针参数返回 i64,匹配 declare 中\n ULONG/SIZE_T 被统一翻译为 i64 的情况。\n ", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数\n\n 直接接收三个 Value 参数,避免通过 Next 链表遍历(共享 alloca 对象的\n Next 字段可能被其他操作污染,导致链表断裂)。\n ", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/f08abd3a207590f0.pyi b/.transpyc_cache/f08abd3a207590f0.pyi deleted file mode 100644 index 065139b..0000000 --- a/.transpyc_cache/f08abd3a207590f0.pyi +++ /dev/null @@ -1,173 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str, allow_star_fallback: int) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _get_external_func_param_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str, param_idx: int) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, dst_val: llvmlite.Value | t.CPtr, src_val: llvmlite.Value | t.CPtr, num_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/f26cd4c78b4d554c.doc.json b/.transpyc_cache/f26cd4c78b4d554c.doc.json deleted file mode 100644 index c00e036..0000000 --- a/.transpyc_cache/f26cd4c78b4d554c.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数\n\n 直接接收三个 Value 参数,避免通过 Next 链表遍历(共享 alloca 对象的\n Next 字段可能被其他操作污染,导致链表断裂)。\n ", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/f26cd4c78b4d554c.pyi b/.transpyc_cache/f26cd4c78b4d554c.pyi deleted file mode 100644 index 40c3168..0000000 --- a/.transpyc_cache/f26cd4c78b4d554c.pyi +++ /dev/null @@ -1,171 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, dst_val: llvmlite.Value | t.CPtr, src_val: llvmlite.Value | t.CPtr, num_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/.transpyc_cache/f26d7266c4f8762b.doc.json b/.transpyc_cache/f26d7266c4f8762b.doc.json deleted file mode 100644 index 7565271..0000000 --- a/.transpyc_cache/f26d7266c4f8762b.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"remote_func": "Remote function docstring.", "RemoteClass": "Remote class docstring.", "RemoteClass.remote_method": "Remote method docstring."} \ No newline at end of file diff --git a/.transpyc_cache/f26d7266c4f8762b.pyi b/.transpyc_cache/f26d7266c4f8762b.pyi deleted file mode 100644 index 845daee..0000000 --- a/.transpyc_cache/f26d7266c4f8762b.pyi +++ /dev/null @@ -1,19 +0,0 @@ -""" -Auto-generated Python stub file from remote.py -Module: remote -""" - -import c - - -import t - -def remote_func() -> t.CInt: pass - - -@t.Object -class RemoteClass: - value: t.CInt - def remote_method(self: RemoteClass) -> t.CInt: pass - -def no_doc_func() -> t.CInt: pass diff --git a/.transpyc_cache/f2fc34882dad695a.doc.json b/.transpyc_cache/f2fc34882dad695a.doc.json deleted file mode 100644 index c00e036..0000000 --- a/.transpyc_cache/f2fc34882dad695a.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"set_module_sha1_map": "设置全局模块 SHA1 映射", "_lookup_module_sha1": "查找模块名对应的 SHA1,找不到返回 None", "_lookup_module_sha1_suffix": "后缀匹配查找模块 SHA1,如 mod_suffix=\"__types\" 匹配 \"llvmlite.__types\"\n\n 用于 from .X import Y 的相对导入:impf.module 是 \".X\"(带前导点),\n 去掉前导点后为 \"X\",SHA1 映射表中键是 \"pkg.X\",需要后缀匹配。\n ", "register_cexport_func": "注册 CExport 函数到全局表(sha1+func_name 二元组)", "is_cexport_func": "检查 (sha1, func_name) 是否是 CExport 函数", "_lookup_mod_sha1": "从 from_imports 查找类所属模块的 SHA1,返回 None=未找到", "find_func_in_module": "在模块的函数链表中按名称查找函数\n\n 查找策略:\n 1. 精确匹配(如 \"strlen\" 匹配 @strlen,有 t.CExport 的函数)\n 2. 后缀匹配(如 \"atoi\" 匹配 @\"83210a72e829a086.atoi\",无 t.CExport 的函数)\n\n 使用 llvmlite.function_get_name/next 访问器绕过 stub 类型限制\n (stub 类型字段不足且字段类型可能错误,直接字段访问会被静默跳过)。\n ", "_infer_external_func_ret_ty": "根据函数名推断外部 includes 函数的返回类型", "_emit_llvm_memcpy_intrinsic": "将 memcpy 调用映射到 @llvm.memcpy 内联函数\n\n 直接接收三个 Value 参数,避免通过 Next 链表遍历(共享 alloca 对象的\n Next 字段可能被其他操作污染,导致链表断裂)。\n ", "translate_c_deref": "c.Deref(ptr) → load i8 from ptr", "translate_c_derefas": "c.DerefAs(ptr, val) → store val to ptr(bitcast 后 store)", "translate_c_addr": "c.Addr(var) → 返回变量的 alloca 指针(不 load)", "translate_c_load": "c.Load(a, b) → *a = *b(加载 b 的值,存储到 a)", "AsmOperand": "内联汇编操作数条目", "_asm_append_cstr": "将 C 字符串 src 追加到 dst 末尾", "_asm_escape_for_ir": "转义汇编文本用于 LLVM IR 字符串字面量", "_resolve_register": "将 t.ASM_DESCR.XXX 的属性名映射到约束字符串值", "_resolve_asm_descr": "递归解析约束表达式,返回约束字符串", "_asm_get_operand": "获取操作数数组中第 idx 个元素的指针", "_asm_is_c_call": "检查 Call 节点是否是 c.XXX 调用,返回属性名或 None", "_asm_add_operand": "添加操作数到数组,返回新计数(失败返回原计数)", "translate_c_asm": "翻译 c.Asm 内联汇编,返回结果 Value(无输出时返回 None)", "_llvmir_get_op": "获取第 i 个操作数槽位", "_llvmir_find_op_marker": "查找 %__OP 标记,返回标记开始位置或 None", "_llvmir_parse_op_num": "从 %__OPN__ 标记中解析编号 N", "_llvmir_match_icmp_pred": "将 icmp 预测字符串转为常量", "_llvmir_match_fcmp_pred": "将 fcmp 预测字符串转为常量", "_llvmir_extract_two_ops": "从模板中提取前两个 %__OP 标记的编号\n\n 结果写入 out_nums[0] 和 out_nums[1]\n 返回 1 成功, 0 失败\n ", "_llvmir_resolve_op": "根据操作数编号解析实际 Value", "_llvmir_store_outputs": "将结果存储到所有输出变量", "translate_c_llvmir": "翻译 c.LLVMIR 内联 LLVM IR,返回结果 Value", "_apply_struct_defaults": "应用结构体字段的默认值", "_translate_struct_ctor": "结构体构造函数:按字段顺序 store 参数值,返回结构体值\n\n OOP 结构体:alloca → call __before_init__(ptr) → call __init__(ptr, args) 或 store 参数 → load\n 普通结构体:alloca → zero + defaults → store 参数 → load\n ", "_do_virtual_call": "通过虚表间接调用虚方法,返回 call 结果(void 方法返回 None)", "_call_method_on_ptr": "在结构体指针上调用方法,返回 call 结果(void 方法返回 None)", "_infer_method_ret_ty": "根据方法名推断返回类型(stub 未注入时的回退方案)", "_translate_method_call": "翻译方法调用,返回 call 结果 Value", "_kwarg_name_matches": "检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)", "_translate_struct_ctor_kw": "结构体构造函数(关键字参数版本)", "_translate_call_with_kwargs": "带关键字参数的函数调用,按参数顺序构建调用链表\n\n 使用 llvmlite 访问器函数绕过 stub 类型限制:\n found_func.Params/RetTy/Name 和 cur_param.Name/Ty/Next 在 stub\n 类型中字段不足,直接访问会被 TransPyC 静默跳过。\n ", "_translate_t_type_cast": "类型转换:根据参数类型和目标类型选择转换方式", "_extract_type_args_from_slice": "从 Subscript.slice 提取类型实参名列表\n\n list[int] -> [\"int\"]\n dict[str, int] -> [\"str\", \"int\"]\n list[AST | t.CPtr] -> [\"AST|t.CPtr\"]\n ", "translate_call": "翻译函数调用,返回 call 结果 Value", "translate_closure_call": "通过闭包指针间接调用", "translate_printf_call": "翻译 printf 调用(特殊处理格式字符串)", "FuncEntry": "函数表条目", "init_func_table": "分配并清零函数表数组", "find_func_in_table": "在函数表中按名称查找,返回 Function 指针或 None", "add_func_to_table": "添加函数到函数表,返回 0 成功", "_init_global_func_table": "初始化全局函数表(用 stdlib.malloc 分配,生命周期=整个程序)", "_register_global_func": "注册函数到全局表(已存在则跳过),返回 0 成功\n\n 直接操作全局表,不调用 add_func_to_table,避免递归。\n ", "find_func_global": "在全局函数表中按名称查找,返回 Function 指针或 None", "ExprCallHandle": "函数调用处理器:继承 Mixin 获得 Trans 回指针", "ExprCallHandle.HandleCall": "翻译函数调用,从 self.Trans 获取共享状态", "ExprCallHandle.HandlePrintfCall": "翻译 printf 调用,从 self.Trans 获取共享状态"} \ No newline at end of file diff --git a/.transpyc_cache/f2fc34882dad695a.pyi b/.transpyc_cache/f2fc34882dad695a.pyi deleted file mode 100644 index 40c3168..0000000 --- a/.transpyc_cache/f2fc34882dad695a.pyi +++ /dev/null @@ -1,171 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesExprCall.py -Module: lib.core.Handles.HandlesExprCall -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import stdlib -import sys -import viperlib -import lib.core.Handles.HandlesBase as HandlesBase -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesExpr as HandlesExpr -import lib.core.Handles.HandlesVar as HandlesVar -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesClassDef as HandlesClassDef - -_g_sha1_arr: t.CExtern | bytes -_g_mod_arr: t.CExtern | bytes -_g_sha1_count: t.CExtern | int - -def set_module_sha1_map(sha1_arr: bytes, mod_arr: bytes, count: int) -> int: pass - -def _lookup_module_sha1(mod_name: str) -> str: pass - -def _lookup_module_sha1_suffix(mod_suffix: str) -> str: pass - - -_g_cexport_sha1_arr: t.CExtern | bytes -_g_cexport_func_arr: t.CExtern | bytes -_g_cexport_count: t.CExtern | int -_CEXPORT_MAX: t.CDefine = 256 - -def register_cexport_func(sha1: str, func_name: str) -> int: pass - -def is_cexport_func(sha1: str, func_name: str) -> int: pass - -def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr, from_imports: str, class_name: str) -> str: pass - -def find_func_in_module(mod: llvmlite.LLVMModule | t.CPtr, name: str) -> llvmlite.Function | t.CPtr: pass - -def _infer_external_func_ret_ty(pool: memhub.MemBuddy | t.CPtr, func_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _emit_llvm_memcpy_intrinsic(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, dst_val: llvmlite.Value | t.CPtr, src_val: llvmlite.Value | t.CPtr, num_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_deref(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_derefas(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_addr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_c_load(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -ASM_MAX_OPERANDS: t.CDefine = 16 -ASM_TEXT_BUF_SIZE: t.CDefine = 2048 -ASM_CONST_BUF_SIZE: t.CDefine = 512 -ASM_ARGS_BUF_SIZE: t.CDefine = 512 -ASM_LINE_BUF_SIZE: t.CDefine = 4096 - -@t.NoVTable -class AsmOperand: - Value: llvmlite.Value | t.CPtr - Constraint: str - IsOutput: int - -def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr, src: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _resolve_register(attr_name: str) -> str: pass - -def _resolve_asm_descr(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr) -> str: pass - -def _asm_get_operand(base: AsmOperand | t.CPtr, idx: int) -> AsmOperand | t.CPtr: pass - -def _asm_is_c_call(node: ast.Call | t.CPtr) -> str: pass - -def _asm_add_operand(operands: AsmOperand | t.CPtr, count: int, val: llvmlite.Value | t.CPtr, constraint: str, is_output: int) -> int: pass - -def translate_c_asm(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - - -LLVMIR_MAX_OPS: t.CDefine = 16 -LLVMIR_TEMPLATE_BUF: t.CDefine = 512 - -def _llvmir_get_op(buf: AsmOperand | t.CPtr, i: int) -> AsmOperand | t.CPtr: pass - -def _llvmir_find_op_marker(s: t.CChar | t.CPtr) -> t.CPtr: pass - -def _llvmir_parse_op_num(marker: t.CChar | t.CPtr) -> int: pass - -def _llvmir_match_icmp_pred(pred: str) -> int: pass - -def _llvmir_match_fcmp_pred(pred: str) -> int: pass - -def _llvmir_extract_two_ops(template: t.CChar | t.CPtr, out_nums: int | t.CPtr) -> int: pass - -def _llvmir_resolve_op(op_num: int, all_kinds: int | t.CPtr, all_indices: int | t.CPtr, input_ops: AsmOperand | t.CPtr, output_targets: AsmOperand | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _llvmir_store_outputs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, result: llvmlite.Value | t.CPtr, output_targets: AsmOperand | t.CPtr, output_count: int) -> llvmlite.Value | t.CPtr: pass - -def translate_c_llvmir(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _apply_struct_defaults(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, tmp: llvmlite.Value | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - -def _translate_struct_ctor(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _do_virtual_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, args_head: llvmlite.Value | t.CPtr, args_count: int, found_func: llvmlite.Function | t.CPtr, ret_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _call_method_on_ptr(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, self_ptr: llvmlite.Value | t.CPtr, extra_args: t.CSizeT | t.CPtr, extra_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _infer_method_ret_ty(pool: memhub.MemBuddy | t.CPtr, method_name: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _translate_method_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, class_name: str, method_name: str, obj_ptr: llvmlite.Value | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _kwarg_name_matches(kw_arg: str, param_name: t.CChar | t.CPtr) -> int: pass - -def _translate_struct_ctor_kw(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_call_with_kwargs(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, func_name: str, found_func: llvmlite.Function | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT, keywords: list[ast.AST | t.CPtr] | t.CPtr, kw_count: t.CSizeT, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _translate_t_type_cast(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, val: llvmlite.Value | t.CPtr, target_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr, slice_node: ast.AST | t.CPtr) -> list[str] | t.CPtr: pass - -def translate_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, node: ast.AST | t.CPtr, funcs_ptr: t.CPtr, func_count: int, trans: HT.Translator | t.CPtr) -> llvmlite.Value | t.CPtr: pass - -def translate_closure_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, closure_alloca: llvmlite.Value | t.CPtr, cargs: list[ast.AST | t.CPtr] | t.CPtr, can: t.CSizeT) -> llvmlite.Value | t.CPtr: pass - -def translate_printf_call(pool: memhub.MemBuddy | t.CPtr, builder: llvmlite.IRBuilder | t.CPtr, mod: llvmlite.LLVMModule | t.CPtr, cl: ast.Call | t.CPtr, trans: HT.Translator | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class FuncEntry: - Name: str - Func: llvmlite.Function | t.CPtr - -def init_func_table(pool: memhub.MemBuddy | t.CPtr, max_count: int) -> FuncEntry | t.CPtr: pass - -def find_func_in_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str) -> llvmlite.Function | t.CPtr: pass - -def add_func_to_table(funcs: FuncEntry | t.CPtr, func_count: int, name: str, func: llvmlite.Function | t.CPtr, max_count: int) -> int: pass - - -GLOBAL_FUNC_MAX: t.CDefine = 8192 -_global_funcs: t.CExtern | FuncEntry | t.CPtr -_global_func_count: t.CExtern | int - -def _init_global_func_table() -> int: pass - -def _register_global_func(name: str, func: llvmlite.Function | t.CPtr) -> int: pass - -def find_func_global(name: str) -> llvmlite.Function | t.CPtr: pass - - -@t.NoVTable -class ExprCallHandle(HandlesBase.Mixin): - def __init__(self: ExprCallHandle, trans: HT.Translator | t.CPtr) -> t.CInt: pass - def HandleCall(self: ExprCallHandle, node: ast.AST | t.CPtr) -> llvmlite.Value | t.CPtr: pass - def HandlePrintfCall(self: ExprCallHandle, cl: ast.Call | t.CPtr) -> t.CInt: pass - -def NewExprCallHandle(pool: memhub.MemBuddy | t.CPtr, trans: HT.Translator | t.CPtr) -> ExprCallHandle | t.CPtr: pass diff --git a/Test/ArgparseTest/temp/ee084e9fc6ee413a.pyi b/.transpyc_cache/f3560b99de458aec.pyi similarity index 88% rename from Test/ArgparseTest/temp/ee084e9fc6ee413a.pyi rename to .transpyc_cache/f3560b99de458aec.pyi index 45551ef..84f0bbf 100644 --- a/Test/ArgparseTest/temp/ee084e9fc6ee413a.pyi +++ b/.transpyc_cache/f3560b99de458aec.pyi @@ -34,7 +34,7 @@ class MemManager: def free(self: MemManager, ptr: t.CVoid | t.CPtr) -> t.CInt: pass def reset(self: MemManager) -> t.CInt: pass def calloc(self: MemManager, count: t.CSizeT, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def realloc(self: MemManager, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def realloc(self: MemManager, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass def __enter__(self: MemManager) -> 'MemManager' | t.CPtr: pass def __exit__(self: MemManager) -> t.CInt: pass def alloc_buf(self: MemManager, capacity: t.CSizeT) -> viperio.Buf | t.CPtr: pass @@ -78,4 +78,9 @@ class MemBuddy(MemManager): def alloc(self: MemBuddy, size: t.CSizeT) -> t.CVoid | t.CPtr: pass def free(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass def reset(self: MemBuddy) -> t.CInt: pass - def realloc(self: MemBuddy, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass \ No newline at end of file + def realloc(self: MemBuddy, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + @property + def mem_size(self: MemBuddy) -> t.CSizeT: pass + def stats(self: MemBuddy) -> t.CSizeT: pass + def free_count(self: MemBuddy) -> t.CSizeT: pass + def self_check(self: MemBuddy) -> t.CInt: pass \ No newline at end of file diff --git a/.transpyc_cache/f492cb40d913400b.doc.json b/.transpyc_cache/f492cb40d913400b.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/f492cb40d913400b.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/f492cb40d913400b.pyi b/.transpyc_cache/f492cb40d913400b.pyi deleted file mode 100644 index f8cf5c7..0000000 --- a/.transpyc_cache/f492cb40d913400b.pyi +++ /dev/null @@ -1,15 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - - -from stdint import * -import t, c -import stdio -import stdlib -import testcheck -import viperlib - -@t.CExport -def main() -> int: pass diff --git a/.transpyc_cache/f49abd3c81119ada.doc.json b/.transpyc_cache/f49abd3c81119ada.doc.json deleted file mode 100644 index 95e17f3..0000000 --- a/.transpyc_cache/f49abd3c81119ada.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_load_includes_sha1_set": "读取 _sha1_map.txt,将 includes/ 开头的 SHA1 写入 sha1_set\n sha1_set 大小为 MAX_INCLUDES_SHA1 * 17(每个 SHA1 16字符+null)\n 返回找到的 includes SHA1 数量,-1 表示错误", "_is_in_sha1_set": "检查 sha1 是否在集合中", "WriteIncludesSha1Map": "将 includes 扫描结果写入 _sha1_map.txt(供 StubMerger 使用)\n\n 若 filter_set 不为 None 且 filter_count > 0,只写入 filter_set 中的条目。\n ", "_IsFuncDeclaredOrDefined": "检查 out_buf 中是否已有函数的 declare 或 define 行", "_CommentOutDeclareInBuf": "在 out_buf 中搜索 declare 行(包含 func_sig),将其注释掉", "_CommentOutGlobalInBuf": "在 out_buf 中搜索全局变量定义行(以 global_name 开头),将行首改为 ';'", "_CommentOutOpaqueTypeInBuf": "在 out_buf 中搜索 type_name_prefix 对应的 opaque 声明行,将行首改为 ';'\n\n type_name_prefix 格式: '%\"sha1.ClassName\"'(不含 '=' 和后续内容)\n 返回 1=已注释, 0=未找到\n ", "_HasFullTypeDefinition": "检查 out_buf 中是否已有 type_name_prefix 的完整定义", "_LoadAndAppendStub": "加载依赖 stub 并追加(跳过 header,去重)", "_LoadAndAppendTextDeclares": "从依赖 text.ll 提取 declare(define 转 declare),追加到 out_buf", "_PathToModuleName": "将文件路径转换为模块名", "_BuildIncludesSha1Map": "从 _sha1_map.txt 构建 sha1→module_name 映射,返回条目数", "_FindSha1ByModName": "从模块名查找 SHA1(精确匹配)", "_AddSha1ToSet": "将 SHA1 加入集合,返回新 count", "_BuildReachableSha1Set": "构建可达 SHA1 集合(依赖图按需翻译)", "BuildCombinedIR": "组合本地 stub + 依赖 stubs + 本地 text → out_buf(按需加载)"} \ No newline at end of file diff --git a/.transpyc_cache/f49abd3c81119ada.pyi b/.transpyc_cache/f49abd3c81119ada.pyi deleted file mode 100644 index 4466a75..0000000 --- a/.transpyc_cache/f49abd3c81119ada.pyi +++ /dev/null @@ -1,60 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.StubMerger.py -Module: lib.core.StubMerger -""" - - -import t, c -from stdint import * -import memhub -import string -import stdio -import stdlib -import llvmlite -import w32.win32file as win32file -import w32.win32base as win32base -import w32.fileio as fileio -import viperlib -import sys -import ast -import lib.core.IncludesScanner as IncludesScanner -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesImports as HandlesImports -import lib.core.Handles.HandlesTranslator as HandlesTranslator - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -MAX_INCLUDES_SHA1: t.CDefine = 256 -STUB_READ_BUF_SIZE: t.CDefine = 262144 -MAX_INCLUDES: t.CDefine = 256 - -def _load_includes_sha1_set(pool: memhub.MemBuddy | t.CPtr, temp_dir: str, sha1_set: str) -> int: pass - -def _is_in_sha1_set(sha1: str, sha1_set: str, set_count: int) -> int: pass - -def WriteIncludesSha1Map(mb: memhub.MemBuddy | t.CPtr, temp_dir: str, scan_result: IncludesScanner.ScanResult | t.CPtr, filter_set: t.CChar | t.CPtr, filter_count: int) -> int: pass - -def _IsFuncDeclaredOrDefined(out_buf: bytes, func_sig: str) -> int: pass - -def _CommentOutDeclareInBuf(out_buf: bytes, func_sig: str) -> int: pass - -def _CommentOutGlobalInBuf(out_buf: bytes, global_name: str) -> int: pass - -def _CommentOutOpaqueTypeInBuf(out_buf: bytes, type_name_prefix: str) -> int: pass - -def _HasFullTypeDefinition(out_buf: bytes, type_name_prefix: str) -> int: pass - -def _LoadAndAppendStub(temp_dir: str, td_len: t.CSizeT, dep_sha1: str, dep_buf: bytes, out_buf: bytes, out_size: t.CSizeT, out_pos: t.CSizeT) -> t.CSizeT: pass - -def _LoadAndAppendTextDeclares(temp_dir: str, td_len: t.CSizeT, dep_sha1: str, dep_buf: bytes, out_buf: bytes, out_size: t.CSizeT, out_pos: t.CSizeT) -> t.CSizeT: pass - -def _PathToModuleName(path: str) -> str: pass - -def _BuildIncludesSha1Map(temp_dir: str, td_len: t.CSizeT, sha1_list: t.CChar | t.CPtr, mod_list: t.CChar | t.CPtr) -> int: pass - -def _FindSha1ByModName(sha1_arr: t.CChar | t.CPtr, mod_arr: t.CChar | t.CPtr, count: int, mod_name: str) -> str: pass - -def _AddSha1ToSet(set_buf: t.CChar | t.CPtr, count: int, sha1: str) -> int: pass - -def _BuildReachableSha1Set(mb: memhub.MemBuddy | t.CPtr, source_dir: str, temp_dir: str, reachable_set: t.CChar | t.CPtr) -> int: pass - -def BuildCombinedIR(temp_dir: str, local_sha1: str, out_buf: bytes, out_size: t.CSizeT) -> t.CSizeT: pass diff --git a/.transpyc_cache/f9c68a21786049ce.doc.json b/.transpyc_cache/f9c68a21786049ce.doc.json deleted file mode 100644 index 67e7a8b..0000000 --- a/.transpyc_cache/f9c68a21786049ce.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_DiagAppend": "追加诊断信息到 diag.txt(追加模式,不依赖 printf 缓冲)", "TranslateFileGetTrans": "翻译文件,返回 Translator 对象(调用者负责 dump_ir),None 失败", "ensure_dir": "递归创建目录(类似 mkdir -p),目录已存在视为成功\n\n Args:\n path: 目录路径(支持 / 或 \\ 分隔符)\n\n Returns:\n 0 成功(包括目录已存在),非 0 失败\n ", "write_ir_to_file": "将 IR 缓冲区写入 .ll 文件\n\n Args:\n ir_buf: IR 文本缓冲区\n ir_len: IR 文本长度\n output_dir: 输出目录(temp 或 output)\n module_name: 模块名(如 \"main\")\n\n Returns:\n 0 成功,非 0 失败\n ", "compile_ll_to_obj": "调用 llc 将 .ll 编译为 .obj\n\n Args:\n ir_path: .ll 文件路径\n output_dir: 输出目录\n module_name: 模块名(用于生成 .obj 文件名)\n cc_cmd: 编译器命令(如 \"llc\")\n cc_flags: 编译器参数(如 \"-filetype=obj -relocation-model=pic\")\n\n Returns:\n 0 成功,非 0 失败\n ", "collect_obj_files": "扫描 includes_binary_dir 目录,收集所有 .obj 文件路径到 out_buf\n\n Args:\n includes_binary_dir: includes.binary 目录路径\n out_buf: 输出缓冲区(用于存放空格分隔的 .obj 文件路径)\n out_size: 输出缓冲区大小\n\n Returns:\n 写入的字节数(不含 null 终止符),0 表示无文件或错误\n ", "link_obj_to_exe": "调用 clang++ 链接 .obj 为 .exe\n\n Args:\n output_dir: 输出目录(包含 .obj 文件)\n module_name: 模块名\n linker_cmd: 链接器命令(如 \"clang++\")\n linker_flags: 链接器参数\n linker_output: 输出文件名(如 \"test.exe\")\n includes_binary_dir: includes.binary 目录路径(链接时附加预编译 .obj)\n\n Returns:\n 0 成功,非 0 失败\n ", "compile_module_to_obj": "编译 IR 到 .obj(不链接)\n\n Args:\n ir_buf: LLVM IR 文本缓冲区\n ir_len: IR 文本长度\n temp_dir: 临时目录\n output_dir: 输出目录\n module_name: 模块名(SHA1)\n cc_cmd: 编译器命令\n cc_flags: 编译器参数\n\n Returns:\n 0 成功,非 0 失败\n ", "link_objs_to_exe": "链接多个 .obj 文件为 .exe\n\n Args:\n obj_paths: 空格分隔的 .obj 文件完整路径字符串\n obj_paths_len: obj_paths 长度\n linker_cmd: 链接器命令(如 \"clang++\")\n linker_flags: 链接器参数\n linker_output: 输出文件完整路径\n includes_binary_dir: includes.binary 目录路径(链接时附加预编译 .obj)\n\n Returns:\n 0 成功,非 0 失败\n ", "run_pipeline": "执行完整编译管线\n\n Args:\n ir_buf: LLVM IR 文本缓冲区\n ir_len: IR 文本长度\n temp_dir: 临时目录\n output_dir: 输出目录\n module_name: 模块名\n cc_cmd: 编译器命令\n cc_flags: 编译器参数\n linker_cmd: 链接器命令\n linker_flags: 链接器参数\n linker_output: 输出文件名\n includes_binary_dir: includes.binary 目录路径(链接时附加预编译 .obj)\n\n Returns:\n BuildResult 对象\n "} \ No newline at end of file diff --git a/.transpyc_cache/f9c68a21786049ce.pyi b/.transpyc_cache/f9c68a21786049ce.pyi deleted file mode 100644 index 9d8b33e..0000000 --- a/.transpyc_cache/f9c68a21786049ce.pyi +++ /dev/null @@ -1,52 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.BuildPipeline.py -Module: lib.core.BuildPipeline -""" - - -import t, c -from stdint import * -import stdio -import string -import stdlib -import memhub -import w32.fileio as fileio -import w32.win32file -import w32.win32base -import subprocess -import viperlib -import ast -import lib.core.Handles.HandlesTranslator as HandlesTranslator -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesType as HandlesType - -_mbuddy: t.CExtern | memhub.MemManager | t.CPtr -SRC_BUF_SIZE: t.CDefine = 1048576 - -def _DiagAppend(msg: bytes) -> t.CInt: pass - -def TranslateFileGetTrans(mb: memhub.MemBuddy | t.CPtr, file_path: str, sha1_val: str) -> HandlesTranslator.Translator | t.CPtr: pass - - -class BuildResult: - Success: t.CInt - OutputPath: str - ErrorMsg: str - def __new__(self: BuildResult) -> t.CPtr: pass - def __init__(self: BuildResult) -> t.CInt: pass - -def ensure_dir(path: str) -> int: pass - -def write_ir_to_file(ir_buf: bytes, ir_len: t.CSizeT, output_dir: str, module_name: str) -> int: pass - -def compile_ll_to_obj(ir_path: str, output_dir: str, module_name: str, cc_cmd: str, cc_flags: str) -> int: pass - -def collect_obj_files(includes_binary_dir: str, out_buf: bytes, out_size: t.CSizeT) -> t.CSizeT: pass - -def link_obj_to_exe(output_dir: str, module_name: str, linker_cmd: str, linker_flags: str, linker_output: str, includes_binary_dir: str) -> int: pass - -def compile_module_to_obj(ir_buf: bytes, ir_len: t.CSizeT, temp_dir: str, output_dir: str, module_name: str, cc_cmd: str, cc_flags: str) -> int: pass - -def link_objs_to_exe(obj_paths: str, obj_paths_len: t.CSizeT, linker_cmd: str, linker_flags: str, linker_output: str, includes_binary_dir: str) -> int: pass - -def run_pipeline(ir_buf: bytes, ir_len: t.CSizeT, temp_dir: str, output_dir: str, module_name: str, cc_cmd: str, cc_flags: str, linker_cmd: str, linker_flags: str, linker_output: str, includes_binary_dir: str) -> BuildResult | t.CPtr: pass diff --git a/.transpyc_cache/faec3233d98371da.doc.json b/.transpyc_cache/faec3233d98371da.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/faec3233d98371da.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/faec3233d98371da.pyi b/.transpyc_cache/faec3233d98371da.pyi deleted file mode 100644 index 308f5cb..0000000 --- a/.transpyc_cache/faec3233d98371da.pyi +++ /dev/null @@ -1,54 +0,0 @@ -""" -Auto-generated Python stub file from zc.logic_test.py -Module: zc.logic_test -""" - - -import config -import t, c - -def ForRangeBasicTest(stop: t.CInt) -> t.CInt: pass - -def ForRangeWithStartStop(start: t.CInt, stop: t.CInt, step: t.CInt) -> t.CInt: pass - -def NestedForRangeTest(rows: t.CInt, cols: t.CInt) -> t.CInt: pass - -def ForWithIfBreakTest(data_size: t.CInt) -> t.CInt: pass - -def ForWithIfContinueTest(n: t.CInt) -> t.CInt: pass - -def ForWithElifBranchTest(value: t.CInt) -> t.CInt: pass - -def WhileWithIfElifElseTest(iterations: t.CInt) -> t.CInt: pass - -def WhileWithNestedIfTest(limit: t.CInt) -> t.CInt: pass - -def WhileWithMatchCaseTest(value: t.CInt) -> t.CInt: pass - -def WhileWithMatchCaseNoBreakTest(value: t.CInt) -> t.CInt: pass - -def ComplexForWhileMatchTest(outer_limit: t.CInt, inner_limit: t.CInt) -> t.CInt: pass - -def ForWithCaseAndNoBreakTest(n: t.CInt) -> t.CInt: pass - -def WhileWithBreakConditionTest(limit: t.CInt) -> t.CInt: pass - -def NestedWhileWithMultipleBreakPoints(depth: t.CInt, width: t.CInt) -> t.CInt: pass - -def ForWithMatchCaseInLoopTest(iterations: t.CInt) -> t.CInt: pass - -def ComplexLogicWithElifChains(a: t.CInt, b: t.CInt, c_val: t.CInt) -> t.CInt: pass - -def ForRangeWithStepAndCondition(n: t.CInt, step: t.CInt) -> t.CInt: pass - -def MatchCaseWithGuardConditions(value: t.CInt) -> t.CInt: pass - -def WhileWithMultipleMatchCases(iterations: t.CInt) -> t.CInt: pass - -def ForWhileMixWithBreakAndContinue(n: t.CInt) -> t.CInt: pass - -def ComplexCaseMatchingWithRanges(start: t.CInt, end: t.CInt) -> t.CInt: pass - -def WhileWithElifInElifChain(limit: t.CInt) -> t.CInt: pass - -def ForWithCaseNoBreakNested(inner_limit: t.CInt) -> t.CInt: pass diff --git a/.transpyc_cache/fb6cea4f70fade7a.doc.json b/.transpyc_cache/fb6cea4f70fade7a.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.transpyc_cache/fb6cea4f70fade7a.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.transpyc_cache/fb6cea4f70fade7a.pyi b/.transpyc_cache/fb6cea4f70fade7a.pyi deleted file mode 100644 index 12b9442..0000000 --- a/.transpyc_cache/fb6cea4f70fade7a.pyi +++ /dev/null @@ -1,29 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - - -import t, c -from t import CInt, CLong, CDouble, CPtr, CSizeT -from stdio import printf -import cpython -import testcheck - -def test_init_finalize() -> t.CInt: pass - -def test_long_operations() -> t.CInt: pass - -def test_string_operations() -> t.CInt: pass - -def test_list_operations() -> t.CInt: pass - -def test_dict_operations() -> t.CInt: pass - -def test_pyrun_string() -> t.CInt: pass - -def test_import_module() -> t.CInt: pass - -def test_operator_overload() -> t.CInt: pass - -def main() -> CInt | t.CExport: pass diff --git a/.transpyc_cache/ff3ad21889888a9a.doc.json b/.transpyc_cache/ff3ad21889888a9a.doc.json deleted file mode 100644 index a8e6f20..0000000 --- a/.transpyc_cache/ff3ad21889888a9a.doc.json +++ /dev/null @@ -1 +0,0 @@ -{"_is_cenum_base": "检查 base 节点是否为 t.CEnum,返回 1=是 / 0=否", "_is_enum_class": "检查 ClassDef 是否继承自 t.CEnum,返回 1=是 / 0=否", "_is_cunion_base": "检查 base 节点是否为 t.CUnion,返回 1=是 / 0=否", "_is_union_class": "检查 ClassDef 是否继承自 t.CUnion,返回 1=是 / 0=否", "_has_decorator": "检查 decorator_list 中是否有指定装饰器名", "_is_marker_base": "检查基类名是否为标记基类,返回 1=是 / 0=否", "_get_base_name": "从 base AST 节点提取基类名,返回 None=失败", "_get_parent_class": "获取 ClassDef 的真实父类名,返回 None=无真实父类", "_has_any_func_cvtable": "检查类中是否有任何函数标记了 @t.CVTable,返回 1=有 / 0=无", "_should_method_be_virtual": "判断方法是否应该进入虚表,返回 1=包含 / 0=排除", "_detect_vtable_status": "检测类是否应该启用虚表", "_resolve_enum_member_type": "解析枚举成员的类型注解为 LLVM 整数类型", "_is_state_annotation": "检查注解节点是否为 t.State,返回 1=是 / 0=否", "_extract_int_value": "从 AST 节点提取整数值,失败返回 0", "_translate_enum_def": "翻译枚举类定义,返回 0", "_get_type_size": "计算 LLVM 类型的字节大小", "_translate_union_def": "翻译联合体定义,返回 0", "_is_generic_class": "检查 ClassDef 是否有类型参数(泛型类),返回 1=是 / 0=否", "_register_generic_template": "注册泛型类模板(类名 + ClassDef 节点)", "_find_generic_template": "查找泛型类模板,返回 ClassDef 节点或 None", "_mangle_generic_class_name": "生成特化类名: list + [int] -> list[int]\n\n 分配新缓冲区拼接,避免原地 strcat 导致缓冲区溢出\n ", "_clone_annotation": "拷贝类型注解表达式,替换类型参数 T 为具体类型名\n\n tp_names: 类型参数名列表 ['T']\n type_args: 类型实参名列表 ['int']\n ", "_clone_arguments": "拷贝 Arguments 节点,替换 arg annotation 中的 T", "_clone_classdef_for_spec": "拷贝 ClassDef 节点用于泛型特化\n\n - 替换类名为 spec_name\n - 清除 type_params(特化后不是泛型类)\n - 拷贝 children 中的 AnnAssign 和 FunctionDef,替换类型注解中的 T\n - 方法体直接引用原始节点(通过 type_map 上下文处理 T)\n ", "_find_cached_spec": "查找已缓存的特化名,未找到返回 None", "_cache_spec": "缓存特化结果", "_specialize_generic_class": "特化泛型类,返回特化类名\n\n 1. 查找泛型模板\n 2. 生成特化名\n 3. 检查缓存\n 4. 拷贝 ClassDef 节点(替换类型注解中的 T)\n 5. 设置 type_map 上下文(用于方法体中的 T 替换)\n 6. 调用 translate_class_def 翻译特化类\n 7. 返回特化名\n ", "translate_class_def": "翻译 class 定义,返回 0", "_vtable_strcat": "将 src 追加到 dst 末尾", "_vtable_name_needs_quote": "检查 LLVM 标识符是否需要引号(以数字开头或含 '.')", "_format_func_type_str": "从 Function 对象生成函数类型字符串", "_generate_vtable": "生成 VTable 全局变量", "_translate_oop_methods": "扫描 class body 中的方法并翻译,生成 __before_init__", "_translate_method": "翻译单个方法,返回 0", "_generate_before_init": "生成 __before_init__ 函数,返回 0"} \ No newline at end of file diff --git a/.transpyc_cache/ff3ad21889888a9a.pyi b/.transpyc_cache/ff3ad21889888a9a.pyi deleted file mode 100644 index 62b2e80..0000000 --- a/.transpyc_cache/ff3ad21889888a9a.pyi +++ /dev/null @@ -1,104 +0,0 @@ -""" -Auto-generated Python stub file from lib.core.Handles.HandlesClassDef.py -Module: lib.core.Handles.HandlesClassDef -""" - - -import t, c -from stdint import * -import ast -import llvmlite -import memhub -import string -import stdio -import viperlib -import lib.core.Handles.HandlesTranslator as HT -import lib.core.Handles.HandlesType as HandlesType -import lib.core.Handles.HandlesStruct as HandlesStruct -import lib.core.Handles.HandlesEnum as HandlesEnum - -ENUM_MEMBER_MAX_LOCAL: t.CDefine = 64 - -def _is_cenum_base(base_node: ast.AST | t.CPtr) -> int: pass - -def _is_enum_class(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _is_cunion_base(base_node: ast.AST | t.CPtr) -> int: pass - -def _is_union_class(cd: ast.ClassDef | t.CPtr) -> int: pass - - -_MARKER_BASES: t.CDefine = 8 - -def _has_decorator(decorator_list: list[ast.AST | t.CPtr] | t.CPtr, deco_name: str) -> int: pass - -def _is_marker_base(base_name: str) -> int: pass - -def _get_base_name(base_node: ast.AST | t.CPtr) -> str: pass - -def _get_parent_class(cd: ast.ClassDef | t.CPtr) -> str: pass - -def _has_any_func_cvtable(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _should_method_be_virtual(cd: ast.ClassDef | t.CPtr, fd: ast.FunctionDef | t.CPtr, trans: HT.Translator | t.CPtr) -> int: pass - -def _detect_vtable_status(cd: ast.ClassDef | t.CPtr, trans: HT.Translator | t.CPtr) -> int: pass - -def _resolve_enum_member_type(pool: memhub.MemBuddy | t.CPtr, ann_node: ast.AST | t.CPtr, imported_modules: str, from_imports: str) -> llvmlite.LLVMType | t.CPtr: pass - -def _is_state_annotation(node: ast.AST | t.CPtr) -> int: pass - -def _extract_int_value(node: ast.AST | t.CPtr) -> t.CInt64T: pass - -def _translate_enum_def(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr) -> int: pass - -def _get_type_size(ty: llvmlite.LLVMType | t.CPtr) -> int: pass - -def _translate_union_def(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr) -> int: pass - - -_generic_class_names: t.CExtern | list[str] | t.CPtr -_generic_class_nodes: t.CExtern | list[ast.ClassDef | t.CPtr] | t.CPtr - -def _is_generic_class(cd: ast.ClassDef | t.CPtr) -> int: pass - -def _register_generic_template(pool: memhub.MemBuddy | t.CPtr, cd: ast.ClassDef | t.CPtr) -> t.CInt: pass - -def _find_generic_template(class_name: str) -> ast.ClassDef | t.CPtr: pass - -def _mangle_generic_class_name(pool: memhub.MemBuddy | t.CPtr, class_name: str, type_args: list[str] | t.CPtr) -> str: pass - -def _clone_annotation(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.AST | t.CPtr: pass - -def _clone_arguments(pool: memhub.MemBuddy | t.CPtr, args: ast.AST | t.CPtr, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.AST | t.CPtr: pass - -def _clone_classdef_for_spec(pool: memhub.MemBuddy | t.CPtr, cd: ast.ClassDef | t.CPtr, spec_name: str, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.ClassDef | t.CPtr: pass - - -_spec_keys: t.CExtern | list[str] | t.CPtr -_spec_names: t.CExtern | list[str] | t.CPtr - -def _find_cached_spec(spec_key: str) -> str: pass - -def _cache_spec(pool: memhub.MemBuddy | t.CPtr, spec_key: str, spec_name: str) -> t.CInt: pass - -def _specialize_generic_class(trans: HT.Translator | t.CPtr, class_name: str, type_args: list[str] | t.CPtr) -> str: pass - -def translate_class_def(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass - - -VTBL_METHOD_MAX: t.CDefine = 32 - -def _vtable_strcat(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _vtable_name_needs_quote(name: str) -> int: pass - -def _format_func_type_str(pool: memhub.MemBuddy | t.CPtr, buf: t.CChar | t.CPtr, buf_size: t.CSizeT, func: llvmlite.Function | t.CPtr) -> int: pass - -def _generate_vtable(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr, class_name: str) -> int: pass - -def _translate_oop_methods(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass - -def _translate_method(trans: HT.Translator | t.CPtr, fd: ast.FunctionDef | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass - -def _generate_before_init(trans: HT.Translator | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass diff --git a/Test/ArgparseTest/output/08ea5281873244fd.deps.json b/Test/ArgparseTest/output/08ea5281873244fd.deps.json index f0801e0..bd634ff 100644 --- a/Test/ArgparseTest/output/08ea5281873244fd.deps.json +++ b/Test/ArgparseTest/output/08ea5281873244fd.deps.json @@ -1 +1 @@ -{"atom": "271ea3decb810db2", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "ab6e54ba9a669f76", "argparse": "aba439b7882ad9d6", "hashtable": "b8c66c8ff44eb874", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperio": "c9f4be41ca1cc2b4", "testcheck": "dd3002730623424b", "memhub": "ee084e9fc6ee413a", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"testcheck": "14d33679f7fadf1f", "atom": "271ea3decb810db2", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "argparse": "aba439b7882ad9d6", "hashtable": "b8c66c8ff44eb874", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperio": "c9f4be41ca1cc2b4", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/ArgparseTest/temp/dd3002730623424b.pyi b/Test/ArgparseTest/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/ArgparseTest/temp/dd3002730623424b.pyi rename to Test/ArgparseTest/temp/14d33679f7fadf1f.pyi diff --git a/Test/BuddyTest/temp/ab6e54ba9a669f76.pyi b/Test/ArgparseTest/temp/9474791561654346.pyi similarity index 83% rename from Test/BuddyTest/temp/ab6e54ba9a669f76.pyi rename to Test/ArgparseTest/temp/9474791561654346.pyi index 4fc3440..1f82b1e 100644 --- a/Test/BuddyTest/temp/ab6e54ba9a669f76.pyi +++ b/Test/ArgparseTest/temp/9474791561654346.pyi @@ -46,3 +46,14 @@ def atoll(src: str) -> t.CInt64T: pass def atof(src: str) -> t.CDouble: pass def split(s: str, delim: str, result: t.CArray[str]) -> int: pass + + +ascii_lowercase: t.CExtern | str +ascii_uppercase: t.CExtern | str +ascii_letters: t.CExtern | str +digits: t.CExtern | str +hexdigits: t.CExtern | str +octdigits: t.CExtern | str +punctuation: t.CExtern | str +whitespace: t.CExtern | str +printable: t.CExtern | str \ No newline at end of file diff --git a/Test/ArgparseTest/temp/_phase1_manifest.json b/Test/ArgparseTest/temp/_phase1_manifest.json index eb48d04..fc023e8 100644 --- a/Test/ArgparseTest/temp/_phase1_manifest.json +++ b/Test/ArgparseTest/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\ArgparseTest\\App\\main.py": {"sha1": "08ea5281873244fd", "mtime": 1783074740.4694562, "size": 8086}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\argparse.py": {"sha1": "aba439b7882ad9d6", "mtime": 1783072446.3366802, "size": 16968}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\atom.py": {"sha1": "271ea3decb810db2", "mtime": 1782226548.693161, "size": 1290}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\hashtable.py": {"sha1": "b8c66c8ff44eb874", "mtime": 1782826619.490043, "size": 9385}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\memhub.py": {"sha1": "ee084e9fc6ee413a", "mtime": 1784214242.4485993, "size": 17765}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "ab6e54ba9a669f76", "mtime": 1783933178.7264287, "size": 9922}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\ArgparseTest\\App\\main.py": {"sha1": "08ea5281873244fd", "mtime": 1783074740.4694562, "size": 8086}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\argparse.py": {"sha1": "aba439b7882ad9d6", "mtime": 1783072446.3366802, "size": 16968}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\atom.py": {"sha1": "271ea3decb810db2", "mtime": 1782226548.693161, "size": 1290}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\hashtable.py": {"sha1": "b8c66c8ff44eb874", "mtime": 1782826619.490043, "size": 9385}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\memhub.py": {"sha1": "f3560b99de458aec", "mtime": 1784375410.1873891, "size": 19458}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "9474791561654346", "mtime": 1784387475.6951904, "size": 10395}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file diff --git a/Test/ArgparseTest/temp/_sha1_map.txt b/Test/ArgparseTest/temp/_sha1_map.txt index 0b0b531..3af92f0 100644 --- a/Test/ArgparseTest/temp/_sha1_map.txt +++ b/Test/ArgparseTest/temp/_sha1_map.txt @@ -1,13 +1,13 @@ 08ea5281873244fd:main.py +14d33679f7fadf1f:includes/testcheck.py 271ea3decb810db2:includes/atom.py 6f62fe05c5ea1ceb:includes/stdio.py 7e529fe7a078cfef:includes/w32\win32base.py 90c53dd6db8d41cf:includes/stdlib.py -ab6e54ba9a669f76:includes/string.py +9474791561654346:includes/string.py aba439b7882ad9d6:includes/argparse.py b8c66c8ff44eb874:includes/hashtable.py bbdf3bbd4c3bc28c:includes/w32\win32console.py c9f4be41ca1cc2b4:includes/viperio.py -dd3002730623424b:includes/testcheck.py -ee084e9fc6ee413a:includes/memhub.py +f3560b99de458aec:includes/memhub.py f5522571bcce7bcb:includes/stdint.py diff --git a/.transpyc_cache/ee084e9fc6ee413a.pyi b/Test/ArgparseTest/temp/f3560b99de458aec.pyi similarity index 88% rename from .transpyc_cache/ee084e9fc6ee413a.pyi rename to Test/ArgparseTest/temp/f3560b99de458aec.pyi index 45551ef..84f0bbf 100644 --- a/.transpyc_cache/ee084e9fc6ee413a.pyi +++ b/Test/ArgparseTest/temp/f3560b99de458aec.pyi @@ -34,7 +34,7 @@ class MemManager: def free(self: MemManager, ptr: t.CVoid | t.CPtr) -> t.CInt: pass def reset(self: MemManager) -> t.CInt: pass def calloc(self: MemManager, count: t.CSizeT, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def realloc(self: MemManager, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def realloc(self: MemManager, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass def __enter__(self: MemManager) -> 'MemManager' | t.CPtr: pass def __exit__(self: MemManager) -> t.CInt: pass def alloc_buf(self: MemManager, capacity: t.CSizeT) -> viperio.Buf | t.CPtr: pass @@ -78,4 +78,9 @@ class MemBuddy(MemManager): def alloc(self: MemBuddy, size: t.CSizeT) -> t.CVoid | t.CPtr: pass def free(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass def reset(self: MemBuddy) -> t.CInt: pass - def realloc(self: MemBuddy, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass \ No newline at end of file + def realloc(self: MemBuddy, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + @property + def mem_size(self: MemBuddy) -> t.CSizeT: pass + def stats(self: MemBuddy) -> t.CSizeT: pass + def free_count(self: MemBuddy) -> t.CSizeT: pass + def self_check(self: MemBuddy) -> t.CInt: pass \ No newline at end of file diff --git a/Test/AstTest/output/0853acdbdfc9b27c.deps.json b/Test/AstTest/output/0853acdbdfc9b27c.deps.json index 3e48a90..454c6d2 100644 --- a/Test/AstTest/output/0853acdbdfc9b27c.deps.json +++ b/Test/AstTest/output/0853acdbdfc9b27c.deps.json @@ -1 +1 @@ -{"w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "ast.lexer": "0c212981c180e7fb", "lexer": "0c212981c180e7fb", "atom": "271ea3decb810db2", "ast.__init__": "34548789d646f432", "__init__": "34548789d646f432", "ast": "34548789d646f432", "ast.astaux": "4337fb260448bbe2", "astaux": "4337fb260448bbe2", "ast.exprs": "47767b5026a8ee15", "exprs": "47767b5026a8ee15", "ast.match": "4dd6b3f1427d1cc5", "match": "4dd6b3f1427d1cc5", "ast.base": "5dab8cb390496d22", "base": "5dab8cb390496d22", "posix": "6503c97dde0c79c4", "ast.stmts": "657e182b27c2a022", "stmts": "657e182b27c2a022", "stdio": "6f62fe05c5ea1ceb", "stdarg": "71e0a3ffcb3ebfad", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "platmacro": "93c1d18e35d188d6", "string": "ab6e54ba9a669f76", "ast.tokens": "b547ac4f380bddb6", "tokens": "b547ac4f380bddb6", "sys": "b5a965302cded36b", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperlib": "c3b259b4059f8668", "viperio": "c9f4be41ca1cc2b4", "memhub": "ee084e9fc6ee413a", "ast.parser": "ee52c08239684346", "parser": "ee52c08239684346", "stdint": "f5522571bcce7bcb", "main.tokens": "b547ac4f380bddb6", "main.base": "5dab8cb390496d22", "main.exprs": "47767b5026a8ee15", "main.stmts": "657e182b27c2a022", "main.astaux": "4337fb260448bbe2", "main.match": "4dd6b3f1427d1cc5", "main.lexer": "0c212981c180e7fb"} \ No newline at end of file +{"w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "ast.lexer": "0c212981c180e7fb", "lexer": "0c212981c180e7fb", "atom": "271ea3decb810db2", "ast.__init__": "34548789d646f432", "__init__": "34548789d646f432", "ast": "34548789d646f432", "ast.astaux": "4337fb260448bbe2", "astaux": "4337fb260448bbe2", "ast.exprs": "47767b5026a8ee15", "exprs": "47767b5026a8ee15", "ast.match": "4dd6b3f1427d1cc5", "match": "4dd6b3f1427d1cc5", "ast.base": "5dab8cb390496d22", "base": "5dab8cb390496d22", "posix": "6503c97dde0c79c4", "ast.stmts": "657e182b27c2a022", "stmts": "657e182b27c2a022", "stdio": "6f62fe05c5ea1ceb", "stdarg": "71e0a3ffcb3ebfad", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "platmacro": "93c1d18e35d188d6", "string": "9474791561654346", "ast.tokens": "b547ac4f380bddb6", "tokens": "b547ac4f380bddb6", "sys": "b5a965302cded36b", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperlib": "c3b259b4059f8668", "viperio": "c9f4be41ca1cc2b4", "ast.parser": "ee52c08239684346", "parser": "ee52c08239684346", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/ArgparseTest/temp/ab6e54ba9a669f76.pyi b/Test/AstTest/temp/9474791561654346.pyi similarity index 83% rename from Test/ArgparseTest/temp/ab6e54ba9a669f76.pyi rename to Test/AstTest/temp/9474791561654346.pyi index 4fc3440..1f82b1e 100644 --- a/Test/ArgparseTest/temp/ab6e54ba9a669f76.pyi +++ b/Test/AstTest/temp/9474791561654346.pyi @@ -46,3 +46,14 @@ def atoll(src: str) -> t.CInt64T: pass def atof(src: str) -> t.CDouble: pass def split(s: str, delim: str, result: t.CArray[str]) -> int: pass + + +ascii_lowercase: t.CExtern | str +ascii_uppercase: t.CExtern | str +ascii_letters: t.CExtern | str +digits: t.CExtern | str +hexdigits: t.CExtern | str +octdigits: t.CExtern | str +punctuation: t.CExtern | str +whitespace: t.CExtern | str +printable: t.CExtern | str \ No newline at end of file diff --git a/Test/AstTest/temp/_phase1_manifest.json b/Test/AstTest/temp/_phase1_manifest.json index 5ea6ddb..167d1f2 100644 --- a/Test/AstTest/temp/_phase1_manifest.json +++ b/Test/AstTest/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\AstTest\\App\\main.py": {"sha1": "0853acdbdfc9b27c", "mtime": 1782892830.6294758, "size": 2439}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\ast\\__init__.py": {"sha1": "34548789d646f432", "mtime": 1784102404.6307266, "size": 3409}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\ast\\astaux.py": {"sha1": "4337fb260448bbe2", "mtime": 1784006094.7981195, "size": 11489}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\ast\\base.py": {"sha1": "5dab8cb390496d22", "mtime": 1784197698.3282094, "size": 14966}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\ast\\exprs.py": {"sha1": "47767b5026a8ee15", "mtime": 1783239758.809719, "size": 40615}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\ast\\lexer.py": {"sha1": "0c212981c180e7fb", "mtime": 1783400609.908198, "size": 23535}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\ast\\match.py": {"sha1": "4dd6b3f1427d1cc5", "mtime": 1782961799.8492737, "size": 12309}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\ast\\parser.py": {"sha1": "ee52c08239684346", "mtime": 1784102405.1933146, "size": 85445}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\ast\\stmts.py": {"sha1": "657e182b27c2a022", "mtime": 1783929993.759902, "size": 37926}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\ast\\tokens.py": {"sha1": "b547ac4f380bddb6", "mtime": 1783165480.469121, "size": 13722}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\atom.py": {"sha1": "271ea3decb810db2", "mtime": 1782226548.693161, "size": 1290}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\memhub.py": {"sha1": "ee084e9fc6ee413a", "mtime": 1784214242.4485993, "size": 17765}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\platmacro.py": {"sha1": "93c1d18e35d188d6", "mtime": 1781237231.03366, "size": 1422}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\posix.py": {"sha1": "6503c97dde0c79c4", "mtime": 1783064077.6376991, "size": 10386}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdarg.py": {"sha1": "71e0a3ffcb3ebfad", "mtime": 1781258888.113146, "size": 277}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "ab6e54ba9a669f76", "mtime": 1783933178.7264287, "size": 9922}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\sys.py": {"sha1": "b5a965302cded36b", "mtime": 1783569641.07535, "size": 5509}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperlib.py": {"sha1": "c3b259b4059f8668", "mtime": 1782821991.979496, "size": 56772}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32process.py": {"sha1": "067c78e9f121dce3", "mtime": 1781200703.5409546, "size": 4802}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\AstTest\\App\\main.py": {"sha1": "0853acdbdfc9b27c", "mtime": 1782892830.6294758, "size": 2439}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\ast\\__init__.py": {"sha1": "34548789d646f432", "mtime": 1784102404.6307266, "size": 3409}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\ast\\astaux.py": {"sha1": "4337fb260448bbe2", "mtime": 1784006094.7981195, "size": 11489}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\ast\\base.py": {"sha1": "5dab8cb390496d22", "mtime": 1784197698.3282094, "size": 14966}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\ast\\exprs.py": {"sha1": "47767b5026a8ee15", "mtime": 1783239758.809719, "size": 40615}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\ast\\lexer.py": {"sha1": "0c212981c180e7fb", "mtime": 1783400609.908198, "size": 23535}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\ast\\match.py": {"sha1": "4dd6b3f1427d1cc5", "mtime": 1782961799.8492737, "size": 12309}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\ast\\parser.py": {"sha1": "ee52c08239684346", "mtime": 1784102405.1933146, "size": 85445}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\ast\\stmts.py": {"sha1": "657e182b27c2a022", "mtime": 1783929993.759902, "size": 37926}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\ast\\tokens.py": {"sha1": "b547ac4f380bddb6", "mtime": 1783165480.469121, "size": 13722}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\atom.py": {"sha1": "271ea3decb810db2", "mtime": 1782226548.693161, "size": 1290}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\memhub.py": {"sha1": "f3560b99de458aec", "mtime": 1784375410.1873891, "size": 19458}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\platmacro.py": {"sha1": "93c1d18e35d188d6", "mtime": 1781237231.03366, "size": 1422}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\posix.py": {"sha1": "6503c97dde0c79c4", "mtime": 1783064077.6376991, "size": 10386}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdarg.py": {"sha1": "71e0a3ffcb3ebfad", "mtime": 1781258888.113146, "size": 277}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "9474791561654346", "mtime": 1784387475.6951904, "size": 10395}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\sys.py": {"sha1": "b5a965302cded36b", "mtime": 1783569641.07535, "size": 5509}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperlib.py": {"sha1": "c3b259b4059f8668", "mtime": 1782821991.979496, "size": 56772}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32process.py": {"sha1": "067c78e9f121dce3", "mtime": 1781200703.5409546, "size": 4802}} \ No newline at end of file diff --git a/Test/AstTest/temp/_sha1_map.txt b/Test/AstTest/temp/_sha1_map.txt index 423f2d9..73d8864 100644 --- a/Test/AstTest/temp/_sha1_map.txt +++ b/Test/AstTest/temp/_sha1_map.txt @@ -14,12 +14,12 @@ 7e529fe7a078cfef:includes/w32\win32base.py 90c53dd6db8d41cf:includes/stdlib.py 93c1d18e35d188d6:includes/platmacro.py -ab6e54ba9a669f76:includes/string.py +9474791561654346:includes/string.py b547ac4f380bddb6:includes/ast\tokens.py b5a965302cded36b:includes/sys.py bbdf3bbd4c3bc28c:includes/w32\win32console.py c3b259b4059f8668:includes/viperlib.py c9f4be41ca1cc2b4:includes/viperio.py -ee084e9fc6ee413a:includes/memhub.py ee52c08239684346:includes/ast\parser.py +f3560b99de458aec:includes/memhub.py f5522571bcce7bcb:includes/stdint.py diff --git a/Test/AstTest/temp/ee084e9fc6ee413a.pyi b/Test/AstTest/temp/f3560b99de458aec.pyi similarity index 88% rename from Test/AstTest/temp/ee084e9fc6ee413a.pyi rename to Test/AstTest/temp/f3560b99de458aec.pyi index 45551ef..84f0bbf 100644 --- a/Test/AstTest/temp/ee084e9fc6ee413a.pyi +++ b/Test/AstTest/temp/f3560b99de458aec.pyi @@ -34,7 +34,7 @@ class MemManager: def free(self: MemManager, ptr: t.CVoid | t.CPtr) -> t.CInt: pass def reset(self: MemManager) -> t.CInt: pass def calloc(self: MemManager, count: t.CSizeT, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def realloc(self: MemManager, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def realloc(self: MemManager, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass def __enter__(self: MemManager) -> 'MemManager' | t.CPtr: pass def __exit__(self: MemManager) -> t.CInt: pass def alloc_buf(self: MemManager, capacity: t.CSizeT) -> viperio.Buf | t.CPtr: pass @@ -78,4 +78,9 @@ class MemBuddy(MemManager): def alloc(self: MemBuddy, size: t.CSizeT) -> t.CVoid | t.CPtr: pass def free(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass def reset(self: MemBuddy) -> t.CInt: pass - def realloc(self: MemBuddy, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass \ No newline at end of file + def realloc(self: MemBuddy, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + @property + def mem_size(self: MemBuddy) -> t.CSizeT: pass + def stats(self: MemBuddy) -> t.CSizeT: pass + def free_count(self: MemBuddy) -> t.CSizeT: pass + def self_check(self: MemBuddy) -> t.CInt: pass \ No newline at end of file diff --git a/Test/BuddyTest/App/mbuddytest.py b/Test/BuddyTest/App/mbuddytest.py index 08c2dd0..3cbc1d6 100644 --- a/Test/BuddyTest/App/mbuddytest.py +++ b/Test/BuddyTest/App/mbuddytest.py @@ -71,9 +71,13 @@ def mbuddy_main() -> CInt: # === calloc 测试 (验证清零) === testcheck.section("calloc 清零") arena2: bytes = stdlib.malloc(4096) + viperlib.snprintf(buf, 256, "arena2 = %p", arena2) + testcheck.info(buf) bd2: memhub.MemBuddy | CPtr = memhub.MemBuddy(arena2, 4096) dirty: bytes = bd2.alloc(64) + viperlib.snprintf(buf, 256, "dirty = %p", dirty) + testcheck.info(buf) d_c: CUInt8T | CPtr = CPtr(dirty) i: CInt for i in range(64): @@ -81,6 +85,8 @@ def mbuddy_main() -> CInt: bd2.free(dirty) cl: bytes = bd2.calloc(8, 8) + viperlib.snprintf(buf, 256, "cl = %p (arena2=%p, dirty was=%p)", cl, arena2, dirty) + testcheck.info(buf) if cl != None: cl_c: CUInt8T | CPtr = CPtr(cl) all_zero: CInt = 1 diff --git a/Test/BuddyTest/output/5a3d93d7860d5dc0.deps.json b/Test/BuddyTest/output/5a3d93d7860d5dc0.deps.json new file mode 100644 index 0000000..f4452bd --- /dev/null +++ b/Test/BuddyTest/output/5a3d93d7860d5dc0.deps.json @@ -0,0 +1 @@ +{"w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "testcheck": "14d33679f7fadf1f", "atom": "271ea3decb810db2", "main": "5e430ae5bf7af3a2", "stdio": "6f62fe05c5ea1ceb", "stdarg": "71e0a3ffcb3ebfad", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperlib": "c3b259b4059f8668", "viperio": "c9f4be41ca1cc2b4", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/BuddyTest/output/5e430ae5bf7af3a2.deps.json b/Test/BuddyTest/output/5e430ae5bf7af3a2.deps.json index e6327bb..cace671 100644 --- a/Test/BuddyTest/output/5e430ae5bf7af3a2.deps.json +++ b/Test/BuddyTest/output/5e430ae5bf7af3a2.deps.json @@ -1 +1 @@ -{"w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "atom": "271ea3decb810db2", "stdio": "6f62fe05c5ea1ceb", "stdarg": "71e0a3ffcb3ebfad", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "ab6e54ba9a669f76", "mbuddytest": "b69cdee68f223fef", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperlib": "c3b259b4059f8668", "viperio": "c9f4be41ca1cc2b4", "testcheck": "dd3002730623424b", "memhub": "ee084e9fc6ee413a", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "testcheck": "14d33679f7fadf1f", "atom": "271ea3decb810db2", "mbuddytest": "5a3d93d7860d5dc0", "stdio": "6f62fe05c5ea1ceb", "stdarg": "71e0a3ffcb3ebfad", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperlib": "c3b259b4059f8668", "viperio": "c9f4be41ca1cc2b4", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/BuddyTest/temp/dd3002730623424b.pyi b/Test/BuddyTest/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/BuddyTest/temp/dd3002730623424b.pyi rename to Test/BuddyTest/temp/14d33679f7fadf1f.pyi diff --git a/.transpyc_cache/0019c939aae7f9f1.doc.json b/Test/BuddyTest/temp/5a3d93d7860d5dc0.doc.json similarity index 100% rename from .transpyc_cache/0019c939aae7f9f1.doc.json rename to Test/BuddyTest/temp/5a3d93d7860d5dc0.doc.json diff --git a/.transpyc_cache/b69cdee68f223fef.pyi b/Test/BuddyTest/temp/5a3d93d7860d5dc0.pyi similarity index 100% rename from .transpyc_cache/b69cdee68f223fef.pyi rename to Test/BuddyTest/temp/5a3d93d7860d5dc0.pyi diff --git a/.transpyc_cache/ab6e54ba9a669f76.pyi b/Test/BuddyTest/temp/9474791561654346.pyi similarity index 83% rename from .transpyc_cache/ab6e54ba9a669f76.pyi rename to Test/BuddyTest/temp/9474791561654346.pyi index 4fc3440..1f82b1e 100644 --- a/.transpyc_cache/ab6e54ba9a669f76.pyi +++ b/Test/BuddyTest/temp/9474791561654346.pyi @@ -46,3 +46,14 @@ def atoll(src: str) -> t.CInt64T: pass def atof(src: str) -> t.CDouble: pass def split(s: str, delim: str, result: t.CArray[str]) -> int: pass + + +ascii_lowercase: t.CExtern | str +ascii_uppercase: t.CExtern | str +ascii_letters: t.CExtern | str +digits: t.CExtern | str +hexdigits: t.CExtern | str +octdigits: t.CExtern | str +punctuation: t.CExtern | str +whitespace: t.CExtern | str +printable: t.CExtern | str \ No newline at end of file diff --git a/Test/BuddyTest/temp/_phase1_manifest.json b/Test/BuddyTest/temp/_phase1_manifest.json index 61f3808..b1687f0 100644 --- a/Test/BuddyTest/temp/_phase1_manifest.json +++ b/Test/BuddyTest/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\BuddyTest\\App\\main.py": {"sha1": "5e430ae5bf7af3a2", "mtime": 1782224154.785576, "size": 260}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\BuddyTest\\App\\mbuddytest.py": {"sha1": "b69cdee68f223fef", "mtime": 1782827825.044477, "size": 19246}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\atom.py": {"sha1": "271ea3decb810db2", "mtime": 1782226548.693161, "size": 1290}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\memhub.py": {"sha1": "ee084e9fc6ee413a", "mtime": 1784214242.4485993, "size": 17765}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdarg.py": {"sha1": "71e0a3ffcb3ebfad", "mtime": 1781258888.113146, "size": 277}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "ab6e54ba9a669f76", "mtime": 1783933178.7264287, "size": 9922}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperlib.py": {"sha1": "c3b259b4059f8668", "mtime": 1782821991.979496, "size": 56772}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32process.py": {"sha1": "067c78e9f121dce3", "mtime": 1781200703.5409546, "size": 4802}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32sync.py": {"sha1": "06f53cc594b4ac6c", "mtime": 1782297500.2581685, "size": 4726}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\BuddyTest\\App\\main.py": {"sha1": "5e430ae5bf7af3a2", "mtime": 1782224154.785576, "size": 260}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\BuddyTest\\App\\mbuddytest.py": {"sha1": "5a3d93d7860d5dc0", "mtime": 1784377125.6382487, "size": 19514}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\atom.py": {"sha1": "271ea3decb810db2", "mtime": 1782226548.693161, "size": 1290}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\memhub.py": {"sha1": "f3560b99de458aec", "mtime": 1784375410.1873891, "size": 19458}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdarg.py": {"sha1": "71e0a3ffcb3ebfad", "mtime": 1781258888.113146, "size": 277}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "9474791561654346", "mtime": 1784387475.6951904, "size": 10395}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperlib.py": {"sha1": "c3b259b4059f8668", "mtime": 1782821991.979496, "size": 56772}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32process.py": {"sha1": "067c78e9f121dce3", "mtime": 1781200703.5409546, "size": 4802}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32sync.py": {"sha1": "06f53cc594b4ac6c", "mtime": 1782297500.2581685, "size": 4726}} \ No newline at end of file diff --git a/Test/BuddyTest/temp/_sha1_map.txt b/Test/BuddyTest/temp/_sha1_map.txt index 1524289..b1968c0 100644 --- a/Test/BuddyTest/temp/_sha1_map.txt +++ b/Test/BuddyTest/temp/_sha1_map.txt @@ -1,16 +1,16 @@ 067c78e9f121dce3:includes/w32\win32process.py 06f53cc594b4ac6c:includes/w32\win32sync.py +14d33679f7fadf1f:includes/testcheck.py 271ea3decb810db2:includes/atom.py +5a3d93d7860d5dc0:mbuddytest.py 5e430ae5bf7af3a2:main.py 6f62fe05c5ea1ceb:includes/stdio.py 71e0a3ffcb3ebfad:includes/stdarg.py 7e529fe7a078cfef:includes/w32\win32base.py 90c53dd6db8d41cf:includes/stdlib.py -ab6e54ba9a669f76:includes/string.py -b69cdee68f223fef:mbuddytest.py +9474791561654346:includes/string.py bbdf3bbd4c3bc28c:includes/w32\win32console.py c3b259b4059f8668:includes/viperlib.py c9f4be41ca1cc2b4:includes/viperio.py -dd3002730623424b:includes/testcheck.py -ee084e9fc6ee413a:includes/memhub.py +f3560b99de458aec:includes/memhub.py f5522571bcce7bcb:includes/stdint.py diff --git a/Test/BuddyTest/temp/_shared_sym.json b/Test/BuddyTest/temp/_shared_sym.json index 0700beb..858933d 100644 Binary files a/Test/BuddyTest/temp/_shared_sym.json and b/Test/BuddyTest/temp/_shared_sym.json differ diff --git a/Test/BuddyTest/temp/b69cdee68f223fef.doc.json b/Test/BuddyTest/temp/b69cdee68f223fef.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/Test/BuddyTest/temp/b69cdee68f223fef.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/Test/BuddyTest/temp/b69cdee68f223fef.pyi b/Test/BuddyTest/temp/b69cdee68f223fef.pyi deleted file mode 100644 index 3de0cb1..0000000 --- a/Test/BuddyTest/temp/b69cdee68f223fef.pyi +++ /dev/null @@ -1,21 +0,0 @@ -""" -Auto-generated Python stub file from mbuddytest.py -Module: mbuddytest -""" - - -import t, c -from t import CInt, CPtr, CChar, CUInt8T, CUInt32T, CUInt64T, CSizeT -import viperlib -import viperio -import stdlib -import memhub -import string -import testcheck -import w32.win32process -import w32.win32sync -import w32.win32base - -def _thread_alloc_free(param: t.CVoid | t.CPtr) -> t.CUInt32T: pass - -def mbuddy_main() -> CInt: pass diff --git a/Test/BuddyTest/temp/ee084e9fc6ee413a.pyi b/Test/BuddyTest/temp/f3560b99de458aec.pyi similarity index 88% rename from Test/BuddyTest/temp/ee084e9fc6ee413a.pyi rename to Test/BuddyTest/temp/f3560b99de458aec.pyi index 45551ef..84f0bbf 100644 --- a/Test/BuddyTest/temp/ee084e9fc6ee413a.pyi +++ b/Test/BuddyTest/temp/f3560b99de458aec.pyi @@ -34,7 +34,7 @@ class MemManager: def free(self: MemManager, ptr: t.CVoid | t.CPtr) -> t.CInt: pass def reset(self: MemManager) -> t.CInt: pass def calloc(self: MemManager, count: t.CSizeT, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def realloc(self: MemManager, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def realloc(self: MemManager, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass def __enter__(self: MemManager) -> 'MemManager' | t.CPtr: pass def __exit__(self: MemManager) -> t.CInt: pass def alloc_buf(self: MemManager, capacity: t.CSizeT) -> viperio.Buf | t.CPtr: pass @@ -78,4 +78,9 @@ class MemBuddy(MemManager): def alloc(self: MemBuddy, size: t.CSizeT) -> t.CVoid | t.CPtr: pass def free(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass def reset(self: MemBuddy) -> t.CInt: pass - def realloc(self: MemBuddy, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass \ No newline at end of file + def realloc(self: MemBuddy, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + @property + def mem_size(self: MemBuddy) -> t.CSizeT: pass + def stats(self: MemBuddy) -> t.CSizeT: pass + def free_count(self: MemBuddy) -> t.CSizeT: pass + def self_check(self: MemBuddy) -> t.CInt: pass \ No newline at end of file diff --git a/Test/BuiltinDecoratorTest/output/e3ac223bdaf94a0c.deps.json b/Test/BuiltinDecoratorTest/output/e3ac223bdaf94a0c.deps.json index d39611e..6162c1a 100644 --- a/Test/BuiltinDecoratorTest/output/e3ac223bdaf94a0c.deps.json +++ b/Test/BuiltinDecoratorTest/output/e3ac223bdaf94a0c.deps.json @@ -1 +1 @@ -{"stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "testcheck": "dd3002730623424b", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"testcheck": "14d33679f7fadf1f", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/BuiltinDecoratorTest/temp/dd3002730623424b.pyi b/Test/BuiltinDecoratorTest/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/BuiltinDecoratorTest/temp/dd3002730623424b.pyi rename to Test/BuiltinDecoratorTest/temp/14d33679f7fadf1f.pyi diff --git a/Test/BuiltinDecoratorTest/temp/_phase1_manifest.json b/Test/BuiltinDecoratorTest/temp/_phase1_manifest.json index be3bd83..16da402 100644 --- a/Test/BuiltinDecoratorTest/temp/_phase1_manifest.json +++ b/Test/BuiltinDecoratorTest/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\BuiltinDecoratorTest\\App\\main.py": {"sha1": "e3ac223bdaf94a0c", "mtime": 1782110312.4550886, "size": 8488}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\BuiltinDecoratorTest\\App\\main.py": {"sha1": "e3ac223bdaf94a0c", "mtime": 1782110312.4550886, "size": 8488}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file diff --git a/Test/BuiltinDecoratorTest/temp/_sha1_map.txt b/Test/BuiltinDecoratorTest/temp/_sha1_map.txt index b7d9faf..baa82d5 100644 --- a/Test/BuiltinDecoratorTest/temp/_sha1_map.txt +++ b/Test/BuiltinDecoratorTest/temp/_sha1_map.txt @@ -1,7 +1,7 @@ +14d33679f7fadf1f:includes/testcheck.py 6f62fe05c5ea1ceb:includes/stdio.py 7e529fe7a078cfef:includes/w32\win32base.py 90c53dd6db8d41cf:includes/stdlib.py bbdf3bbd4c3bc28c:includes/w32\win32console.py -dd3002730623424b:includes/testcheck.py e3ac223bdaf94a0c:main.py f5522571bcce7bcb:includes/stdint.py diff --git a/Test/CPythonTest/output/7c5d5ec59c5fb0a8.deps.json b/Test/CPythonTest/output/7c5d5ec59c5fb0a8.deps.json index 3410980..ac61f3a 100644 --- a/Test/CPythonTest/output/7c5d5ec59c5fb0a8.deps.json +++ b/Test/CPythonTest/output/7c5d5ec59c5fb0a8.deps.json @@ -1 +1 @@ -{"stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "testcheck": "dd3002730623424b", "stdint": "f5522571bcce7bcb", "main": "fb6cea4f70fade7a"} \ No newline at end of file +{"testcheck": "14d33679f7fadf1f", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "stdint": "f5522571bcce7bcb", "main": "fb6cea4f70fade7a"} \ No newline at end of file diff --git a/Test/CPythonTest/output/fb6cea4f70fade7a.deps.json b/Test/CPythonTest/output/fb6cea4f70fade7a.deps.json index ace5dc1..77cce3b 100644 --- a/Test/CPythonTest/output/fb6cea4f70fade7a.deps.json +++ b/Test/CPythonTest/output/fb6cea4f70fade7a.deps.json @@ -1 +1 @@ -{"stdio": "6f62fe05c5ea1ceb", "cpython": "7c5d5ec59c5fb0a8", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "testcheck": "dd3002730623424b", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"testcheck": "14d33679f7fadf1f", "stdio": "6f62fe05c5ea1ceb", "cpython": "7c5d5ec59c5fb0a8", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/CPythonTest/temp/dd3002730623424b.pyi b/Test/CPythonTest/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/CPythonTest/temp/dd3002730623424b.pyi rename to Test/CPythonTest/temp/14d33679f7fadf1f.pyi diff --git a/Test/CPythonTest/temp/_phase1_manifest.json b/Test/CPythonTest/temp/_phase1_manifest.json index 15aa5ad..d411b38 100644 --- a/Test/CPythonTest/temp/_phase1_manifest.json +++ b/Test/CPythonTest/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\CPythonTest\\App\\cpython.py": {"sha1": "7c5d5ec59c5fb0a8", "mtime": 1781613876.1585274, "size": 39169}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\CPythonTest\\App\\main.py": {"sha1": "fb6cea4f70fade7a", "mtime": 1782403889.06048, "size": 13919}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\CPythonTest\\App\\cpython.py": {"sha1": "7c5d5ec59c5fb0a8", "mtime": 1781613876.1585274, "size": 39169}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\CPythonTest\\App\\main.py": {"sha1": "fb6cea4f70fade7a", "mtime": 1782403889.06048, "size": 13919}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file diff --git a/Test/CPythonTest/temp/_sha1_map.txt b/Test/CPythonTest/temp/_sha1_map.txt index c8ce35d..8859590 100644 --- a/Test/CPythonTest/temp/_sha1_map.txt +++ b/Test/CPythonTest/temp/_sha1_map.txt @@ -1,7 +1,7 @@ +14d33679f7fadf1f:includes/testcheck.py 6f62fe05c5ea1ceb:includes/stdio.py 7c5d5ec59c5fb0a8:cpython.py 7e529fe7a078cfef:includes/w32\win32base.py bbdf3bbd4c3bc28c:includes/w32\win32console.py -dd3002730623424b:includes/testcheck.py f5522571bcce7bcb:includes/stdint.py fb6cea4f70fade7a:main.py diff --git a/Test/CPythonTest/temp/_shared_sym.json b/Test/CPythonTest/temp/_shared_sym.json index bfedc6a..1ac55d9 100644 Binary files a/Test/CPythonTest/temp/_shared_sym.json and b/Test/CPythonTest/temp/_shared_sym.json differ diff --git a/Test/ClosureTest/output/52e6b51da061882f.deps.json b/Test/ClosureTest/output/52e6b51da061882f.deps.json index f02d7ee..2a27f59 100644 --- a/Test/ClosureTest/output/52e6b51da061882f.deps.json +++ b/Test/ClosureTest/output/52e6b51da061882f.deps.json @@ -1 +1 @@ -{"stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "testcheck": "dd3002730623424b", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"testcheck": "14d33679f7fadf1f", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/ClosureTest/temp/dd3002730623424b.pyi b/Test/ClosureTest/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/ClosureTest/temp/dd3002730623424b.pyi rename to Test/ClosureTest/temp/14d33679f7fadf1f.pyi diff --git a/Test/ClosureTest/temp/_phase1_manifest.json b/Test/ClosureTest/temp/_phase1_manifest.json index 53006ec..08588c9 100644 --- a/Test/ClosureTest/temp/_phase1_manifest.json +++ b/Test/ClosureTest/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\ClosureTest\\App\\main.py": {"sha1": "52e6b51da061882f", "mtime": 1782266177.611862, "size": 5497}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\ClosureTest\\App\\main.py": {"sha1": "52e6b51da061882f", "mtime": 1782266177.611862, "size": 5497}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file diff --git a/Test/ClosureTest/temp/_sha1_map.txt b/Test/ClosureTest/temp/_sha1_map.txt index bf5f6eb..96dfbac 100644 --- a/Test/ClosureTest/temp/_sha1_map.txt +++ b/Test/ClosureTest/temp/_sha1_map.txt @@ -1,6 +1,6 @@ +14d33679f7fadf1f:includes/testcheck.py 52e6b51da061882f:main.py 6f62fe05c5ea1ceb:includes/stdio.py 7e529fe7a078cfef:includes/w32\win32base.py bbdf3bbd4c3bc28c:includes/w32\win32console.py -dd3002730623424b:includes/testcheck.py f5522571bcce7bcb:includes/stdint.py diff --git a/Test/ClosureTest2/output/440f18f9dce85a95.deps.json b/Test/ClosureTest2/output/440f18f9dce85a95.deps.json index f02d7ee..2a27f59 100644 --- a/Test/ClosureTest2/output/440f18f9dce85a95.deps.json +++ b/Test/ClosureTest2/output/440f18f9dce85a95.deps.json @@ -1 +1 @@ -{"stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "testcheck": "dd3002730623424b", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"testcheck": "14d33679f7fadf1f", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/ClosureTest2/temp/dd3002730623424b.pyi b/Test/ClosureTest2/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/ClosureTest2/temp/dd3002730623424b.pyi rename to Test/ClosureTest2/temp/14d33679f7fadf1f.pyi diff --git a/Test/ClosureTest2/temp/_phase1_manifest.json b/Test/ClosureTest2/temp/_phase1_manifest.json index b1275e7..3bc899e 100644 --- a/Test/ClosureTest2/temp/_phase1_manifest.json +++ b/Test/ClosureTest2/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\ClosureTest2\\App\\main.py": {"sha1": "440f18f9dce85a95", "mtime": 1782266179.2717218, "size": 7586}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\ClosureTest2\\App\\main.py": {"sha1": "440f18f9dce85a95", "mtime": 1782266179.2717218, "size": 7586}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file diff --git a/Test/ClosureTest2/temp/_sha1_map.txt b/Test/ClosureTest2/temp/_sha1_map.txt index c01f543..1a0a5e9 100644 --- a/Test/ClosureTest2/temp/_sha1_map.txt +++ b/Test/ClosureTest2/temp/_sha1_map.txt @@ -1,6 +1,6 @@ +14d33679f7fadf1f:includes/testcheck.py 440f18f9dce85a95:main.py 6f62fe05c5ea1ceb:includes/stdio.py 7e529fe7a078cfef:includes/w32\win32base.py bbdf3bbd4c3bc28c:includes/w32\win32console.py -dd3002730623424b:includes/testcheck.py f5522571bcce7bcb:includes/stdint.py diff --git a/Test/DecoratorMarkerTest/output/b1122357fee8fd68.deps.json b/Test/DecoratorMarkerTest/output/b1122357fee8fd68.deps.json index f02d7ee..2a27f59 100644 --- a/Test/DecoratorMarkerTest/output/b1122357fee8fd68.deps.json +++ b/Test/DecoratorMarkerTest/output/b1122357fee8fd68.deps.json @@ -1 +1 @@ -{"stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "testcheck": "dd3002730623424b", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"testcheck": "14d33679f7fadf1f", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/DecoratorMarkerTest/temp/dd3002730623424b.pyi b/Test/DecoratorMarkerTest/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/DecoratorMarkerTest/temp/dd3002730623424b.pyi rename to Test/DecoratorMarkerTest/temp/14d33679f7fadf1f.pyi diff --git a/Test/DecoratorMarkerTest/temp/_phase1_manifest.json b/Test/DecoratorMarkerTest/temp/_phase1_manifest.json index 4e31ba8..48674f2 100644 --- a/Test/DecoratorMarkerTest/temp/_phase1_manifest.json +++ b/Test/DecoratorMarkerTest/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\DecoratorMarkerTest\\App\\main.py": {"sha1": "b1122357fee8fd68", "mtime": 1782110269.7636156, "size": 1840}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\DecoratorMarkerTest\\App\\main.py": {"sha1": "b1122357fee8fd68", "mtime": 1782110269.7636156, "size": 1840}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file diff --git a/Test/DecoratorMarkerTest/temp/_sha1_map.txt b/Test/DecoratorMarkerTest/temp/_sha1_map.txt index 235a656..a08ed2e 100644 --- a/Test/DecoratorMarkerTest/temp/_sha1_map.txt +++ b/Test/DecoratorMarkerTest/temp/_sha1_map.txt @@ -1,6 +1,6 @@ +14d33679f7fadf1f:includes/testcheck.py 6f62fe05c5ea1ceb:includes/stdio.py 7e529fe7a078cfef:includes/w32\win32base.py b1122357fee8fd68:main.py bbdf3bbd4c3bc28c:includes/w32\win32console.py -dd3002730623424b:includes/testcheck.py f5522571bcce7bcb:includes/stdint.py diff --git a/Test/DecoratorTest/output/814e6b31adfc6256.deps.json b/Test/DecoratorTest/output/814e6b31adfc6256.deps.json index f02d7ee..2a27f59 100644 --- a/Test/DecoratorTest/output/814e6b31adfc6256.deps.json +++ b/Test/DecoratorTest/output/814e6b31adfc6256.deps.json @@ -1 +1 @@ -{"stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "testcheck": "dd3002730623424b", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"testcheck": "14d33679f7fadf1f", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/DecoratorTest/temp/dd3002730623424b.pyi b/Test/DecoratorTest/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/DecoratorTest/temp/dd3002730623424b.pyi rename to Test/DecoratorTest/temp/14d33679f7fadf1f.pyi diff --git a/Test/DecoratorTest/temp/_phase1_manifest.json b/Test/DecoratorTest/temp/_phase1_manifest.json index cfc1fbe..963980f 100644 --- a/Test/DecoratorTest/temp/_phase1_manifest.json +++ b/Test/DecoratorTest/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\DecoratorTest\\App\\main.py": {"sha1": "814e6b31adfc6256", "mtime": 1782110086.8867075, "size": 10275}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\DecoratorTest\\App\\main.py": {"sha1": "814e6b31adfc6256", "mtime": 1782110086.8867075, "size": 10275}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file diff --git a/Test/DecoratorTest/temp/_sha1_map.txt b/Test/DecoratorTest/temp/_sha1_map.txt index 25fd6ed..9afdfce 100644 --- a/Test/DecoratorTest/temp/_sha1_map.txt +++ b/Test/DecoratorTest/temp/_sha1_map.txt @@ -1,6 +1,6 @@ +14d33679f7fadf1f:includes/testcheck.py 6f62fe05c5ea1ceb:includes/stdio.py 7e529fe7a078cfef:includes/w32\win32base.py 814e6b31adfc6256:main.py bbdf3bbd4c3bc28c:includes/w32\win32console.py -dd3002730623424b:includes/testcheck.py f5522571bcce7bcb:includes/stdint.py diff --git a/Test/DictTest/output/b3c2b99b6f3be4c7.deps.json b/Test/DictTest/output/b3c2b99b6f3be4c7.deps.json new file mode 100644 index 0000000..8dbb9c7 --- /dev/null +++ b/Test/DictTest/output/b3c2b99b6f3be4c7.deps.json @@ -0,0 +1 @@ +{"testcheck": "14d33679f7fadf1f", "json.__writer": "20cd49775c100a38", "__writer": "20cd49775c100a38", "json.__parser": "240a9a4157959a9f", "__parser": "240a9a4157959a9f", "atom": "271ea3decb810db2", "json.__init__": "57288496f7c2d1ad", "__init__": "57288496f7c2d1ad", "json": "57288496f7c2d1ad", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperio": "c9f4be41ca1cc2b4", "_dict": "e3e7b6de8d7d8b03", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/DictTest/temp/dd3002730623424b.pyi b/Test/DictTest/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/DictTest/temp/dd3002730623424b.pyi rename to Test/DictTest/temp/14d33679f7fadf1f.pyi diff --git a/Test/DictTest/temp/9474791561654346.pyi b/Test/DictTest/temp/9474791561654346.pyi new file mode 100644 index 0000000..1f82b1e --- /dev/null +++ b/Test/DictTest/temp/9474791561654346.pyi @@ -0,0 +1,59 @@ +""" +Auto-generated Python stub file from string.py +Module: string +""" + + +from stdint import * +import t, c + +def strcpy(dest: str, src: str) -> str: pass + +def strcat(dest: str, src: str) -> str: pass + +def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass + +def strlen(src: str) -> t.CSizeT | t.CExport: pass + +def strcmp(str1: str, str2: str) -> t.CInt: pass + +def samestr(str1: str, str2: str) -> bool: pass + +def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass + +def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass + +def strchr(s: str, cr: t.CInt) -> str: pass + +def strrchr(s: str, cr: t.CInt) -> str: pass + +def strstr(s: str, needle: str) -> str: pass + +def strspn(s: str, skip: str) -> int: pass + +def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def atoi(src: str) -> t.CInt: pass + +def atoll(src: str) -> t.CInt64T: pass + +def atof(src: str) -> t.CDouble: pass + +def split(s: str, delim: str, result: t.CArray[str]) -> int: pass + + +ascii_lowercase: t.CExtern | str +ascii_uppercase: t.CExtern | str +ascii_letters: t.CExtern | str +digits: t.CExtern | str +hexdigits: t.CExtern | str +octdigits: t.CExtern | str +punctuation: t.CExtern | str +whitespace: t.CExtern | str +printable: t.CExtern | str \ No newline at end of file diff --git a/Test/DictTest/temp/_phase1_manifest.json b/Test/DictTest/temp/_phase1_manifest.json index 97063a5..caf5f35 100644 --- a/Test/DictTest/temp/_phase1_manifest.json +++ b/Test/DictTest/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\DictTest\\App\\main.py": {"sha1": "b3c2b99b6f3be4c7", "mtime": 1782827868.8446941, "size": 8245}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\_dict.py": {"sha1": "e3e7b6de8d7d8b03", "mtime": 1782919714.6072268, "size": 12055}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\atom.py": {"sha1": "271ea3decb810db2", "mtime": 1782226548.693161, "size": 1290}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\json\\__init__.py": {"sha1": "57288496f7c2d1ad", "mtime": 1783239811.8873823, "size": 7653}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\json\\__parser.py": {"sha1": "240a9a4157959a9f", "mtime": 1782826918.100951, "size": 7517}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\json\\__writer.py": {"sha1": "20cd49775c100a38", "mtime": 1782826901.8906734, "size": 3784}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\memhub.py": {"sha1": "ee084e9fc6ee413a", "mtime": 1784214242.4485993, "size": 17765}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "ab6e54ba9a669f76", "mtime": 1783933178.7264287, "size": 9922}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\DictTest\\App\\main.py": {"sha1": "b3c2b99b6f3be4c7", "mtime": 1782827868.8446941, "size": 8245}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\_dict.py": {"sha1": "e3e7b6de8d7d8b03", "mtime": 1782919714.6072268, "size": 12055}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\atom.py": {"sha1": "271ea3decb810db2", "mtime": 1782226548.693161, "size": 1290}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\json\\__init__.py": {"sha1": "57288496f7c2d1ad", "mtime": 1783239811.8873823, "size": 7653}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\json\\__parser.py": {"sha1": "240a9a4157959a9f", "mtime": 1782826918.100951, "size": 7517}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\json\\__writer.py": {"sha1": "20cd49775c100a38", "mtime": 1782826901.8906734, "size": 3784}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\memhub.py": {"sha1": "f3560b99de458aec", "mtime": 1784375410.1873891, "size": 19458}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "9474791561654346", "mtime": 1784387475.6951904, "size": 10395}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file diff --git a/Test/DictTest/temp/_sha1_map.txt b/Test/DictTest/temp/_sha1_map.txt index 640f738..8c70a57 100644 --- a/Test/DictTest/temp/_sha1_map.txt +++ b/Test/DictTest/temp/_sha1_map.txt @@ -1,3 +1,4 @@ +14d33679f7fadf1f:includes/testcheck.py 20cd49775c100a38:includes/json\__writer.py 240a9a4157959a9f:includes/json\__parser.py 271ea3decb810db2:includes/atom.py @@ -5,11 +6,10 @@ 6f62fe05c5ea1ceb:includes/stdio.py 7e529fe7a078cfef:includes/w32\win32base.py 90c53dd6db8d41cf:includes/stdlib.py -ab6e54ba9a669f76:includes/string.py +9474791561654346:includes/string.py b3c2b99b6f3be4c7:main.py bbdf3bbd4c3bc28c:includes/w32\win32console.py c9f4be41ca1cc2b4:includes/viperio.py -dd3002730623424b:includes/testcheck.py e3e7b6de8d7d8b03:includes/_dict.py -ee084e9fc6ee413a:includes/memhub.py +f3560b99de458aec:includes/memhub.py f5522571bcce7bcb:includes/stdint.py diff --git a/Test/DictTest/temp/ab6e54ba9a669f76.pyi b/Test/DictTest/temp/ab6e54ba9a669f76.pyi deleted file mode 100644 index 4fc3440..0000000 --- a/Test/DictTest/temp/ab6e54ba9a669f76.pyi +++ /dev/null @@ -1,48 +0,0 @@ -""" -Auto-generated Python stub file from string.py -Module: string -""" - - -from stdint import * -import t, c - -def strcpy(dest: str, src: str) -> str: pass - -def strcat(dest: str, src: str) -> str: pass - -def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass - -def strlen(src: str) -> t.CSizeT | t.CExport: pass - -def strcmp(str1: str, str2: str) -> t.CInt: pass - -def samestr(str1: str, str2: str) -> bool: pass - -def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass - -def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass - -def strchr(s: str, cr: t.CInt) -> str: pass - -def strrchr(s: str, cr: t.CInt) -> str: pass - -def strstr(s: str, needle: str) -> str: pass - -def strspn(s: str, skip: str) -> int: pass - -def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def atoi(src: str) -> t.CInt: pass - -def atoll(src: str) -> t.CInt64T: pass - -def atof(src: str) -> t.CDouble: pass - -def split(s: str, delim: str, result: t.CArray[str]) -> int: pass diff --git a/Test/DictTest/temp/ee084e9fc6ee413a.pyi b/Test/DictTest/temp/ee084e9fc6ee413a.pyi deleted file mode 100644 index 45551ef..0000000 --- a/Test/DictTest/temp/ee084e9fc6ee413a.pyi +++ /dev/null @@ -1,81 +0,0 @@ -""" -Auto-generated Python stub file from memhub.py -Module: memhub -""" - - -import t, c -from stdint import * -import string -import atom -import viperio - -MEMHUB_ALIGN: t.CDefine = 8 -MEMSLAB_MIN_BLOCK: t.CDefine = 16 -MEMSLAB_BITMAP_BYTES: t.CDefine = 256 -MEMBUDDY_MIN_BLOCK: t.CDefine = 32 -MEMBUDDY_MAX_ORDERS: t.CDefine = 32 -MEMBUDDY_HEADER_SIZE: t.CDefine = 8 - -def _align_up(val: t.CSizeT, align: t.CSizeT) -> t.CSizeT: pass - -def _largest_pow2_le(val: t.CSizeT) -> t.CSizeT: pass - -def _block_size_at_order(order: t.CInt) -> t.CSizeT: pass - - -@t.CVTable -class MemManager: - __provides__: list[str] = ['__memmgr__'] - base: t.CVoid | t.CPtr - size: t.CSizeT - def __init__(self: MemManager, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemManager, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemManager, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemManager) -> t.CInt: pass - def calloc(self: MemManager, count: t.CSizeT, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def realloc(self: MemManager, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def __enter__(self: MemManager) -> 'MemManager' | t.CPtr: pass - def __exit__(self: MemManager) -> t.CInt: pass - def alloc_buf(self: MemManager, capacity: t.CSizeT) -> viperio.Buf | t.CPtr: pass -class MemPool(MemManager): - offset: t.CSizeT - high_water: t.CSizeT - def __init__(self: MemPool, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemPool, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemPool, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemPool) -> t.CInt: pass -class MemSlab(MemManager): - block_size: t.CSizeT - block_count: t.CSizeT - used_count: t.CSizeT - free_list: t.CVoid | t.CPtr - alloc_map: t.CUInt8T | t.CPtr - alloc_map_size: t.CSizeT - usable: t.CVoid | t.CPtr - usable_size: t.CSizeT - def __init__(self: MemSlab, base: t.CVoid | t.CPtr, size: t.CSizeT, block_size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemSlab, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemSlab, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemSlab) -> t.CInt: pass -class MemBuddy(MemManager): - max_order: t.CInt - free_lists: t.CUInt64T | t.CPtr - lock_val: t.CVolatile | t.CInt - usable: t.CVoid | t.CPtr - usable_size: t.CSizeT - def __init__(self: MemBuddy, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def _fl_push(self: MemBuddy, order: t.CInt, block: t.CVoid | t.CPtr) -> t.CInt: pass - def _fl_pop(self: MemBuddy, order: t.CInt) -> t.CVoid | t.CPtr: pass - def _fl_find_and_remove(self: MemBuddy, order: t.CInt, target: t.CVoid | t.CPtr) -> t.CInt: pass - def _buddy_of(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CVoid | t.CPtr: pass - def _order_for_size(self: MemBuddy, size: t.CSizeT) -> t.CInt: pass - def _split_to_order(self: MemBuddy, to_order: t.CInt) -> t.CVoid | t.CPtr: pass - def _coalesce(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CInt: pass - def _is_valid_ptr(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def _lock(self: MemBuddy) -> t.CInt: pass - def _unlock(self: MemBuddy) -> t.CInt: pass - def alloc(self: MemBuddy, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemBuddy) -> t.CInt: pass - def realloc(self: MemBuddy, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass \ No newline at end of file diff --git a/Test/DictTest/temp/f3560b99de458aec.pyi b/Test/DictTest/temp/f3560b99de458aec.pyi new file mode 100644 index 0000000..84f0bbf --- /dev/null +++ b/Test/DictTest/temp/f3560b99de458aec.pyi @@ -0,0 +1,86 @@ +""" +Auto-generated Python stub file from memhub.py +Module: memhub +""" + + +import t, c +from stdint import * +import string +import atom +import viperio + +MEMHUB_ALIGN: t.CDefine = 8 +MEMSLAB_MIN_BLOCK: t.CDefine = 16 +MEMSLAB_BITMAP_BYTES: t.CDefine = 256 +MEMBUDDY_MIN_BLOCK: t.CDefine = 32 +MEMBUDDY_MAX_ORDERS: t.CDefine = 32 +MEMBUDDY_HEADER_SIZE: t.CDefine = 8 + +def _align_up(val: t.CSizeT, align: t.CSizeT) -> t.CSizeT: pass + +def _largest_pow2_le(val: t.CSizeT) -> t.CSizeT: pass + +def _block_size_at_order(order: t.CInt) -> t.CSizeT: pass + + +@t.CVTable +class MemManager: + __provides__: list[str] = ['__memmgr__'] + base: t.CVoid | t.CPtr + size: t.CSizeT + def __init__(self: MemManager, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemManager, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemManager, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemManager) -> t.CInt: pass + def calloc(self: MemManager, count: t.CSizeT, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def realloc(self: MemManager, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def __enter__(self: MemManager) -> 'MemManager' | t.CPtr: pass + def __exit__(self: MemManager) -> t.CInt: pass + def alloc_buf(self: MemManager, capacity: t.CSizeT) -> viperio.Buf | t.CPtr: pass +class MemPool(MemManager): + offset: t.CSizeT + high_water: t.CSizeT + def __init__(self: MemPool, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemPool, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemPool, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemPool) -> t.CInt: pass +class MemSlab(MemManager): + block_size: t.CSizeT + block_count: t.CSizeT + used_count: t.CSizeT + free_list: t.CVoid | t.CPtr + alloc_map: t.CUInt8T | t.CPtr + alloc_map_size: t.CSizeT + usable: t.CVoid | t.CPtr + usable_size: t.CSizeT + def __init__(self: MemSlab, base: t.CVoid | t.CPtr, size: t.CSizeT, block_size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemSlab, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemSlab, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemSlab) -> t.CInt: pass +class MemBuddy(MemManager): + max_order: t.CInt + free_lists: t.CUInt64T | t.CPtr + lock_val: t.CVolatile | t.CInt + usable: t.CVoid | t.CPtr + usable_size: t.CSizeT + def __init__(self: MemBuddy, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def _fl_push(self: MemBuddy, order: t.CInt, block: t.CVoid | t.CPtr) -> t.CInt: pass + def _fl_pop(self: MemBuddy, order: t.CInt) -> t.CVoid | t.CPtr: pass + def _fl_find_and_remove(self: MemBuddy, order: t.CInt, target: t.CVoid | t.CPtr) -> t.CInt: pass + def _buddy_of(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CVoid | t.CPtr: pass + def _order_for_size(self: MemBuddy, size: t.CSizeT) -> t.CInt: pass + def _split_to_order(self: MemBuddy, to_order: t.CInt) -> t.CVoid | t.CPtr: pass + def _coalesce(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CInt: pass + def _is_valid_ptr(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def _lock(self: MemBuddy) -> t.CInt: pass + def _unlock(self: MemBuddy) -> t.CInt: pass + def alloc(self: MemBuddy, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemBuddy) -> t.CInt: pass + def realloc(self: MemBuddy, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + @property + def mem_size(self: MemBuddy) -> t.CSizeT: pass + def stats(self: MemBuddy) -> t.CSizeT: pass + def free_count(self: MemBuddy) -> t.CSizeT: pass + def self_check(self: MemBuddy) -> t.CInt: pass \ No newline at end of file diff --git a/Test/DocTest/output/14a9b576ab5d21c9.deps.json b/Test/DocTest/output/14a9b576ab5d21c9.deps.json index 8c41c52..e51640e 100644 --- a/Test/DocTest/output/14a9b576ab5d21c9.deps.json +++ b/Test/DocTest/output/14a9b576ab5d21c9.deps.json @@ -1 +1 @@ -{"stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "testcheck": "dd3002730623424b", "remote": "f26d7266c4f8762b", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"testcheck": "14d33679f7fadf1f", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "remote": "f26d7266c4f8762b", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/DocTest/output/f26d7266c4f8762b.deps.json b/Test/DocTest/output/f26d7266c4f8762b.deps.json index bb4c88a..f6647fb 100644 --- a/Test/DocTest/output/f26d7266c4f8762b.deps.json +++ b/Test/DocTest/output/f26d7266c4f8762b.deps.json @@ -1 +1 @@ -{"main": "14a9b576ab5d21c9", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "testcheck": "dd3002730623424b", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"main": "14a9b576ab5d21c9", "testcheck": "14d33679f7fadf1f", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/DocTest/temp/dd3002730623424b.pyi b/Test/DocTest/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/DocTest/temp/dd3002730623424b.pyi rename to Test/DocTest/temp/14d33679f7fadf1f.pyi diff --git a/Test/DocTest/temp/9474791561654346.pyi b/Test/DocTest/temp/9474791561654346.pyi new file mode 100644 index 0000000..1f82b1e --- /dev/null +++ b/Test/DocTest/temp/9474791561654346.pyi @@ -0,0 +1,59 @@ +""" +Auto-generated Python stub file from string.py +Module: string +""" + + +from stdint import * +import t, c + +def strcpy(dest: str, src: str) -> str: pass + +def strcat(dest: str, src: str) -> str: pass + +def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass + +def strlen(src: str) -> t.CSizeT | t.CExport: pass + +def strcmp(str1: str, str2: str) -> t.CInt: pass + +def samestr(str1: str, str2: str) -> bool: pass + +def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass + +def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass + +def strchr(s: str, cr: t.CInt) -> str: pass + +def strrchr(s: str, cr: t.CInt) -> str: pass + +def strstr(s: str, needle: str) -> str: pass + +def strspn(s: str, skip: str) -> int: pass + +def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def atoi(src: str) -> t.CInt: pass + +def atoll(src: str) -> t.CInt64T: pass + +def atof(src: str) -> t.CDouble: pass + +def split(s: str, delim: str, result: t.CArray[str]) -> int: pass + + +ascii_lowercase: t.CExtern | str +ascii_uppercase: t.CExtern | str +ascii_letters: t.CExtern | str +digits: t.CExtern | str +hexdigits: t.CExtern | str +octdigits: t.CExtern | str +punctuation: t.CExtern | str +whitespace: t.CExtern | str +printable: t.CExtern | str \ No newline at end of file diff --git a/Test/DocTest/temp/_phase1_manifest.json b/Test/DocTest/temp/_phase1_manifest.json index 4de65ec..bca0a48 100644 --- a/Test/DocTest/temp/_phase1_manifest.json +++ b/Test/DocTest/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\DocTest\\App\\main.py": {"sha1": "14a9b576ab5d21c9", "mtime": 1782474568.0454285, "size": 2162}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\DocTest\\App\\remote.py": {"sha1": "f26d7266c4f8762b", "mtime": 1782397989.7183921, "size": 271}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "ab6e54ba9a669f76", "mtime": 1783933178.7264287, "size": 9922}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\DocTest\\App\\main.py": {"sha1": "14a9b576ab5d21c9", "mtime": 1782474568.0454285, "size": 2162}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\DocTest\\App\\remote.py": {"sha1": "f26d7266c4f8762b", "mtime": 1782397989.7183921, "size": 271}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "9474791561654346", "mtime": 1784387475.6951904, "size": 10395}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file diff --git a/Test/DocTest/temp/_sha1_map.txt b/Test/DocTest/temp/_sha1_map.txt index 6779449..c5995f7 100644 --- a/Test/DocTest/temp/_sha1_map.txt +++ b/Test/DocTest/temp/_sha1_map.txt @@ -1,8 +1,8 @@ 14a9b576ab5d21c9:main.py +14d33679f7fadf1f:includes/testcheck.py 6f62fe05c5ea1ceb:includes/stdio.py 7e529fe7a078cfef:includes/w32\win32base.py -ab6e54ba9a669f76:includes/string.py +9474791561654346:includes/string.py bbdf3bbd4c3bc28c:includes/w32\win32console.py -dd3002730623424b:includes/testcheck.py f26d7266c4f8762b:remote.py f5522571bcce7bcb:includes/stdint.py diff --git a/Test/DocTest/temp/_shared_sym.json b/Test/DocTest/temp/_shared_sym.json index fd3e3b7..7a82d90 100644 Binary files a/Test/DocTest/temp/_shared_sym.json and b/Test/DocTest/temp/_shared_sym.json differ diff --git a/Test/DocTest/temp/ab6e54ba9a669f76.pyi b/Test/DocTest/temp/ab6e54ba9a669f76.pyi deleted file mode 100644 index 4fc3440..0000000 --- a/Test/DocTest/temp/ab6e54ba9a669f76.pyi +++ /dev/null @@ -1,48 +0,0 @@ -""" -Auto-generated Python stub file from string.py -Module: string -""" - - -from stdint import * -import t, c - -def strcpy(dest: str, src: str) -> str: pass - -def strcat(dest: str, src: str) -> str: pass - -def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass - -def strlen(src: str) -> t.CSizeT | t.CExport: pass - -def strcmp(str1: str, str2: str) -> t.CInt: pass - -def samestr(str1: str, str2: str) -> bool: pass - -def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass - -def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass - -def strchr(s: str, cr: t.CInt) -> str: pass - -def strrchr(s: str, cr: t.CInt) -> str: pass - -def strstr(s: str, needle: str) -> str: pass - -def strspn(s: str, skip: str) -> int: pass - -def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def atoi(src: str) -> t.CInt: pass - -def atoll(src: str) -> t.CInt64T: pass - -def atof(src: str) -> t.CDouble: pass - -def split(s: str, delim: str, result: t.CArray[str]) -> int: pass diff --git a/Test/EdgeCaseTest/output/ac0d686cb2cc783b.deps.json b/Test/EdgeCaseTest/output/ac0d686cb2cc783b.deps.json index f02d7ee..2a27f59 100644 --- a/Test/EdgeCaseTest/output/ac0d686cb2cc783b.deps.json +++ b/Test/EdgeCaseTest/output/ac0d686cb2cc783b.deps.json @@ -1 +1 @@ -{"stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "testcheck": "dd3002730623424b", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"testcheck": "14d33679f7fadf1f", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/EdgeCaseTest/temp/dd3002730623424b.pyi b/Test/EdgeCaseTest/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/EdgeCaseTest/temp/dd3002730623424b.pyi rename to Test/EdgeCaseTest/temp/14d33679f7fadf1f.pyi diff --git a/Test/EdgeCaseTest/temp/_phase1_manifest.json b/Test/EdgeCaseTest/temp/_phase1_manifest.json index 6ba8e32..410c9f8 100644 --- a/Test/EdgeCaseTest/temp/_phase1_manifest.json +++ b/Test/EdgeCaseTest/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\EdgeCaseTest\\App\\main.py": {"sha1": "ac0d686cb2cc783b", "mtime": 1782110086.5178304, "size": 7487}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\EdgeCaseTest\\App\\main.py": {"sha1": "ac0d686cb2cc783b", "mtime": 1782110086.5178304, "size": 7487}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file diff --git a/Test/EdgeCaseTest/temp/_sha1_map.txt b/Test/EdgeCaseTest/temp/_sha1_map.txt index d770431..57a4084 100644 --- a/Test/EdgeCaseTest/temp/_sha1_map.txt +++ b/Test/EdgeCaseTest/temp/_sha1_map.txt @@ -1,6 +1,6 @@ +14d33679f7fadf1f:includes/testcheck.py 6f62fe05c5ea1ceb:includes/stdio.py 7e529fe7a078cfef:includes/w32\win32base.py ac0d686cb2cc783b:main.py bbdf3bbd4c3bc28c:includes/w32\win32console.py -dd3002730623424b:includes/testcheck.py f5522571bcce7bcb:includes/stdint.py diff --git a/Test/EqTest/output/78943d0dbc89a29a.deps.json b/Test/EqTest/output/78943d0dbc89a29a.deps.json index 262dabd..a86f7c5 100644 --- a/Test/EqTest/output/78943d0dbc89a29a.deps.json +++ b/Test/EqTest/output/78943d0dbc89a29a.deps.json @@ -1 +1 @@ -{"stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "testcheck": "dd3002730623424b", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"testcheck": "14d33679f7fadf1f", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/EqTest/temp/dd3002730623424b.pyi b/Test/EqTest/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/EqTest/temp/dd3002730623424b.pyi rename to Test/EqTest/temp/14d33679f7fadf1f.pyi diff --git a/Test/EqTest/temp/9474791561654346.pyi b/Test/EqTest/temp/9474791561654346.pyi new file mode 100644 index 0000000..1f82b1e --- /dev/null +++ b/Test/EqTest/temp/9474791561654346.pyi @@ -0,0 +1,59 @@ +""" +Auto-generated Python stub file from string.py +Module: string +""" + + +from stdint import * +import t, c + +def strcpy(dest: str, src: str) -> str: pass + +def strcat(dest: str, src: str) -> str: pass + +def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass + +def strlen(src: str) -> t.CSizeT | t.CExport: pass + +def strcmp(str1: str, str2: str) -> t.CInt: pass + +def samestr(str1: str, str2: str) -> bool: pass + +def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass + +def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass + +def strchr(s: str, cr: t.CInt) -> str: pass + +def strrchr(s: str, cr: t.CInt) -> str: pass + +def strstr(s: str, needle: str) -> str: pass + +def strspn(s: str, skip: str) -> int: pass + +def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def atoi(src: str) -> t.CInt: pass + +def atoll(src: str) -> t.CInt64T: pass + +def atof(src: str) -> t.CDouble: pass + +def split(s: str, delim: str, result: t.CArray[str]) -> int: pass + + +ascii_lowercase: t.CExtern | str +ascii_uppercase: t.CExtern | str +ascii_letters: t.CExtern | str +digits: t.CExtern | str +hexdigits: t.CExtern | str +octdigits: t.CExtern | str +punctuation: t.CExtern | str +whitespace: t.CExtern | str +printable: t.CExtern | str \ No newline at end of file diff --git a/Test/EqTest/temp/_phase1_manifest.json b/Test/EqTest/temp/_phase1_manifest.json index 0a06c09..accb846 100644 --- a/Test/EqTest/temp/_phase1_manifest.json +++ b/Test/EqTest/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\EqTest\\App\\main.py": {"sha1": "78943d0dbc89a29a", "mtime": 1782354684.7481763, "size": 2169}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "ab6e54ba9a669f76", "mtime": 1783933178.7264287, "size": 9922}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\EqTest\\App\\main.py": {"sha1": "78943d0dbc89a29a", "mtime": 1782354684.7481763, "size": 2169}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "9474791561654346", "mtime": 1784387475.6951904, "size": 10395}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file diff --git a/Test/EqTest/temp/_sha1_map.txt b/Test/EqTest/temp/_sha1_map.txt index 7245b3a..e2218db 100644 --- a/Test/EqTest/temp/_sha1_map.txt +++ b/Test/EqTest/temp/_sha1_map.txt @@ -1,8 +1,8 @@ +14d33679f7fadf1f:includes/testcheck.py 6f62fe05c5ea1ceb:includes/stdio.py 78943d0dbc89a29a:main.py 7e529fe7a078cfef:includes/w32\win32base.py 90c53dd6db8d41cf:includes/stdlib.py -ab6e54ba9a669f76:includes/string.py +9474791561654346:includes/string.py bbdf3bbd4c3bc28c:includes/w32\win32console.py -dd3002730623424b:includes/testcheck.py f5522571bcce7bcb:includes/stdint.py diff --git a/Test/EqTest/temp/ab6e54ba9a669f76.pyi b/Test/EqTest/temp/ab6e54ba9a669f76.pyi deleted file mode 100644 index 4fc3440..0000000 --- a/Test/EqTest/temp/ab6e54ba9a669f76.pyi +++ /dev/null @@ -1,48 +0,0 @@ -""" -Auto-generated Python stub file from string.py -Module: string -""" - - -from stdint import * -import t, c - -def strcpy(dest: str, src: str) -> str: pass - -def strcat(dest: str, src: str) -> str: pass - -def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass - -def strlen(src: str) -> t.CSizeT | t.CExport: pass - -def strcmp(str1: str, str2: str) -> t.CInt: pass - -def samestr(str1: str, str2: str) -> bool: pass - -def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass - -def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass - -def strchr(s: str, cr: t.CInt) -> str: pass - -def strrchr(s: str, cr: t.CInt) -> str: pass - -def strstr(s: str, needle: str) -> str: pass - -def strspn(s: str, skip: str) -> int: pass - -def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def atoi(src: str) -> t.CInt: pass - -def atoll(src: str) -> t.CInt64T: pass - -def atof(src: str) -> t.CDouble: pass - -def split(s: str, delim: str, result: t.CArray[str]) -> int: pass diff --git a/Test/FakeDuckTest/output/0035c95a18d4f8e8.deps.json b/Test/FakeDuckTest/output/0035c95a18d4f8e8.deps.json new file mode 100644 index 0000000..f5392b8 --- /dev/null +++ b/Test/FakeDuckTest/output/0035c95a18d4f8e8.deps.json @@ -0,0 +1 @@ +{"w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "testcheck": "14d33679f7fadf1f", "atom": "271ea3decb810db2", "main": "48352329f97d0858", "_withcontent": "5b2e220c5bae60c9", "stdio": "6f62fe05c5ea1ceb", "_fakeduck": "79b337e5ea8951e2", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperio": "c9f4be41ca1cc2b4", "_list": "f2ecbf8ced20575c", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5"} \ No newline at end of file diff --git a/Test/FakeDuckTest/output/067c78e9f121dce3.deps.json b/Test/FakeDuckTest/output/067c78e9f121dce3.deps.json new file mode 100644 index 0000000..f5392b8 --- /dev/null +++ b/Test/FakeDuckTest/output/067c78e9f121dce3.deps.json @@ -0,0 +1 @@ +{"w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "testcheck": "14d33679f7fadf1f", "atom": "271ea3decb810db2", "main": "48352329f97d0858", "_withcontent": "5b2e220c5bae60c9", "stdio": "6f62fe05c5ea1ceb", "_fakeduck": "79b337e5ea8951e2", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperio": "c9f4be41ca1cc2b4", "_list": "f2ecbf8ced20575c", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5"} \ No newline at end of file diff --git a/Test/FakeDuckTest/output/06f53cc594b4ac6c.deps.json b/Test/FakeDuckTest/output/06f53cc594b4ac6c.deps.json new file mode 100644 index 0000000..f5392b8 --- /dev/null +++ b/Test/FakeDuckTest/output/06f53cc594b4ac6c.deps.json @@ -0,0 +1 @@ +{"w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "testcheck": "14d33679f7fadf1f", "atom": "271ea3decb810db2", "main": "48352329f97d0858", "_withcontent": "5b2e220c5bae60c9", "stdio": "6f62fe05c5ea1ceb", "_fakeduck": "79b337e5ea8951e2", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperio": "c9f4be41ca1cc2b4", "_list": "f2ecbf8ced20575c", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5"} \ No newline at end of file diff --git a/Test/FakeDuckTest/output/14d33679f7fadf1f.deps.json b/Test/FakeDuckTest/output/14d33679f7fadf1f.deps.json new file mode 100644 index 0000000..f5392b8 --- /dev/null +++ b/Test/FakeDuckTest/output/14d33679f7fadf1f.deps.json @@ -0,0 +1 @@ +{"w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "testcheck": "14d33679f7fadf1f", "atom": "271ea3decb810db2", "main": "48352329f97d0858", "_withcontent": "5b2e220c5bae60c9", "stdio": "6f62fe05c5ea1ceb", "_fakeduck": "79b337e5ea8951e2", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperio": "c9f4be41ca1cc2b4", "_list": "f2ecbf8ced20575c", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5"} \ No newline at end of file diff --git a/Test/FakeDuckTest/output/271ea3decb810db2.deps.json b/Test/FakeDuckTest/output/271ea3decb810db2.deps.json new file mode 100644 index 0000000..f5392b8 --- /dev/null +++ b/Test/FakeDuckTest/output/271ea3decb810db2.deps.json @@ -0,0 +1 @@ +{"w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "testcheck": "14d33679f7fadf1f", "atom": "271ea3decb810db2", "main": "48352329f97d0858", "_withcontent": "5b2e220c5bae60c9", "stdio": "6f62fe05c5ea1ceb", "_fakeduck": "79b337e5ea8951e2", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperio": "c9f4be41ca1cc2b4", "_list": "f2ecbf8ced20575c", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5"} \ No newline at end of file diff --git a/Test/FakeDuckTest/output/48352329f97d0858.deps.json b/Test/FakeDuckTest/output/48352329f97d0858.deps.json index 11eebcc..94d3978 100644 --- a/Test/FakeDuckTest/output/48352329f97d0858.deps.json +++ b/Test/FakeDuckTest/output/48352329f97d0858.deps.json @@ -1 +1 @@ -{"w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "atom": "271ea3decb810db2", "_withcontent": "5b2e220c5bae60c9", "stdio": "6f62fe05c5ea1ceb", "_fakeduck": "79b337e5ea8951e2", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperio": "c9f4be41ca1cc2b4", "testcheck": "dd3002730623424b", "memhub": "ee084e9fc6ee413a", "_list": "f2ecbf8ced20575c", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "testcheck": "14d33679f7fadf1f", "atom": "271ea3decb810db2", "_withcontent": "5b2e220c5bae60c9", "stdio": "6f62fe05c5ea1ceb", "_fakeduck": "79b337e5ea8951e2", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperio": "c9f4be41ca1cc2b4", "_list": "f2ecbf8ced20575c", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/FakeDuckTest/output/5b2e220c5bae60c9.deps.json b/Test/FakeDuckTest/output/5b2e220c5bae60c9.deps.json new file mode 100644 index 0000000..f5392b8 --- /dev/null +++ b/Test/FakeDuckTest/output/5b2e220c5bae60c9.deps.json @@ -0,0 +1 @@ +{"w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "testcheck": "14d33679f7fadf1f", "atom": "271ea3decb810db2", "main": "48352329f97d0858", "_withcontent": "5b2e220c5bae60c9", "stdio": "6f62fe05c5ea1ceb", "_fakeduck": "79b337e5ea8951e2", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperio": "c9f4be41ca1cc2b4", "_list": "f2ecbf8ced20575c", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5"} \ No newline at end of file diff --git a/Test/FakeDuckTest/output/6446627d4f07a1b5.deps.json b/Test/FakeDuckTest/output/6446627d4f07a1b5.deps.json new file mode 100644 index 0000000..f5392b8 --- /dev/null +++ b/Test/FakeDuckTest/output/6446627d4f07a1b5.deps.json @@ -0,0 +1 @@ +{"w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "testcheck": "14d33679f7fadf1f", "atom": "271ea3decb810db2", "main": "48352329f97d0858", "_withcontent": "5b2e220c5bae60c9", "stdio": "6f62fe05c5ea1ceb", "_fakeduck": "79b337e5ea8951e2", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperio": "c9f4be41ca1cc2b4", "_list": "f2ecbf8ced20575c", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5"} \ No newline at end of file diff --git a/Test/FakeDuckTest/output/72e2d5ccb7cedcf1.deps.json b/Test/FakeDuckTest/output/72e2d5ccb7cedcf1.deps.json new file mode 100644 index 0000000..f5392b8 --- /dev/null +++ b/Test/FakeDuckTest/output/72e2d5ccb7cedcf1.deps.json @@ -0,0 +1 @@ +{"w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "testcheck": "14d33679f7fadf1f", "atom": "271ea3decb810db2", "main": "48352329f97d0858", "_withcontent": "5b2e220c5bae60c9", "stdio": "6f62fe05c5ea1ceb", "_fakeduck": "79b337e5ea8951e2", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperio": "c9f4be41ca1cc2b4", "_list": "f2ecbf8ced20575c", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5"} \ No newline at end of file diff --git a/Test/FakeDuckTest/output/79b337e5ea8951e2.deps.json b/Test/FakeDuckTest/output/79b337e5ea8951e2.deps.json new file mode 100644 index 0000000..f5392b8 --- /dev/null +++ b/Test/FakeDuckTest/output/79b337e5ea8951e2.deps.json @@ -0,0 +1 @@ +{"w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "testcheck": "14d33679f7fadf1f", "atom": "271ea3decb810db2", "main": "48352329f97d0858", "_withcontent": "5b2e220c5bae60c9", "stdio": "6f62fe05c5ea1ceb", "_fakeduck": "79b337e5ea8951e2", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperio": "c9f4be41ca1cc2b4", "_list": "f2ecbf8ced20575c", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5"} \ No newline at end of file diff --git a/Test/FakeDuckTest/output/7e529fe7a078cfef.deps.json b/Test/FakeDuckTest/output/7e529fe7a078cfef.deps.json new file mode 100644 index 0000000..f5392b8 --- /dev/null +++ b/Test/FakeDuckTest/output/7e529fe7a078cfef.deps.json @@ -0,0 +1 @@ +{"w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "testcheck": "14d33679f7fadf1f", "atom": "271ea3decb810db2", "main": "48352329f97d0858", "_withcontent": "5b2e220c5bae60c9", "stdio": "6f62fe05c5ea1ceb", "_fakeduck": "79b337e5ea8951e2", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperio": "c9f4be41ca1cc2b4", "_list": "f2ecbf8ced20575c", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5"} \ No newline at end of file diff --git a/Test/FakeDuckTest/output/9474791561654346.deps.json b/Test/FakeDuckTest/output/9474791561654346.deps.json new file mode 100644 index 0000000..f5392b8 --- /dev/null +++ b/Test/FakeDuckTest/output/9474791561654346.deps.json @@ -0,0 +1 @@ +{"w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "testcheck": "14d33679f7fadf1f", "atom": "271ea3decb810db2", "main": "48352329f97d0858", "_withcontent": "5b2e220c5bae60c9", "stdio": "6f62fe05c5ea1ceb", "_fakeduck": "79b337e5ea8951e2", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperio": "c9f4be41ca1cc2b4", "_list": "f2ecbf8ced20575c", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5"} \ No newline at end of file diff --git a/Test/FakeDuckTest/output/_shared_sym_includes.pickle b/Test/FakeDuckTest/output/_shared_sym_includes.pickle new file mode 100644 index 0000000..9e822ec Binary files /dev/null and b/Test/FakeDuckTest/output/_shared_sym_includes.pickle differ diff --git a/Test/FakeDuckTest/output/bbdf3bbd4c3bc28c.deps.json b/Test/FakeDuckTest/output/bbdf3bbd4c3bc28c.deps.json new file mode 100644 index 0000000..f5392b8 --- /dev/null +++ b/Test/FakeDuckTest/output/bbdf3bbd4c3bc28c.deps.json @@ -0,0 +1 @@ +{"w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "testcheck": "14d33679f7fadf1f", "atom": "271ea3decb810db2", "main": "48352329f97d0858", "_withcontent": "5b2e220c5bae60c9", "stdio": "6f62fe05c5ea1ceb", "_fakeduck": "79b337e5ea8951e2", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperio": "c9f4be41ca1cc2b4", "_list": "f2ecbf8ced20575c", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5"} \ No newline at end of file diff --git a/Test/FakeDuckTest/output/c9f4be41ca1cc2b4.deps.json b/Test/FakeDuckTest/output/c9f4be41ca1cc2b4.deps.json new file mode 100644 index 0000000..f5392b8 --- /dev/null +++ b/Test/FakeDuckTest/output/c9f4be41ca1cc2b4.deps.json @@ -0,0 +1 @@ +{"w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "testcheck": "14d33679f7fadf1f", "atom": "271ea3decb810db2", "main": "48352329f97d0858", "_withcontent": "5b2e220c5bae60c9", "stdio": "6f62fe05c5ea1ceb", "_fakeduck": "79b337e5ea8951e2", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperio": "c9f4be41ca1cc2b4", "_list": "f2ecbf8ced20575c", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5"} \ No newline at end of file diff --git a/Test/FakeDuckTest/output/f2ecbf8ced20575c.deps.json b/Test/FakeDuckTest/output/f2ecbf8ced20575c.deps.json new file mode 100644 index 0000000..f5392b8 --- /dev/null +++ b/Test/FakeDuckTest/output/f2ecbf8ced20575c.deps.json @@ -0,0 +1 @@ +{"w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "testcheck": "14d33679f7fadf1f", "atom": "271ea3decb810db2", "main": "48352329f97d0858", "_withcontent": "5b2e220c5bae60c9", "stdio": "6f62fe05c5ea1ceb", "_fakeduck": "79b337e5ea8951e2", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperio": "c9f4be41ca1cc2b4", "_list": "f2ecbf8ced20575c", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5"} \ No newline at end of file diff --git a/Test/FakeDuckTest/output/f3560b99de458aec.deps.json b/Test/FakeDuckTest/output/f3560b99de458aec.deps.json new file mode 100644 index 0000000..f5392b8 --- /dev/null +++ b/Test/FakeDuckTest/output/f3560b99de458aec.deps.json @@ -0,0 +1 @@ +{"w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "testcheck": "14d33679f7fadf1f", "atom": "271ea3decb810db2", "main": "48352329f97d0858", "_withcontent": "5b2e220c5bae60c9", "stdio": "6f62fe05c5ea1ceb", "_fakeduck": "79b337e5ea8951e2", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperio": "c9f4be41ca1cc2b4", "_list": "f2ecbf8ced20575c", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5"} \ No newline at end of file diff --git a/Test/FakeDuckTest/output/f6b51804a0ba8ff0.deps.json b/Test/FakeDuckTest/output/f6b51804a0ba8ff0.deps.json new file mode 100644 index 0000000..f5392b8 --- /dev/null +++ b/Test/FakeDuckTest/output/f6b51804a0ba8ff0.deps.json @@ -0,0 +1 @@ +{"w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "testcheck": "14d33679f7fadf1f", "atom": "271ea3decb810db2", "main": "48352329f97d0858", "_withcontent": "5b2e220c5bae60c9", "stdio": "6f62fe05c5ea1ceb", "_fakeduck": "79b337e5ea8951e2", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperio": "c9f4be41ca1cc2b4", "_list": "f2ecbf8ced20575c", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5"} \ No newline at end of file diff --git a/Test/FakeDuckTest/temp/dd3002730623424b.pyi b/Test/FakeDuckTest/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/FakeDuckTest/temp/dd3002730623424b.pyi rename to Test/FakeDuckTest/temp/14d33679f7fadf1f.pyi diff --git a/Test/FakeDuckTest/temp/9474791561654346.pyi b/Test/FakeDuckTest/temp/9474791561654346.pyi new file mode 100644 index 0000000..1f82b1e --- /dev/null +++ b/Test/FakeDuckTest/temp/9474791561654346.pyi @@ -0,0 +1,59 @@ +""" +Auto-generated Python stub file from string.py +Module: string +""" + + +from stdint import * +import t, c + +def strcpy(dest: str, src: str) -> str: pass + +def strcat(dest: str, src: str) -> str: pass + +def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass + +def strlen(src: str) -> t.CSizeT | t.CExport: pass + +def strcmp(str1: str, str2: str) -> t.CInt: pass + +def samestr(str1: str, str2: str) -> bool: pass + +def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass + +def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass + +def strchr(s: str, cr: t.CInt) -> str: pass + +def strrchr(s: str, cr: t.CInt) -> str: pass + +def strstr(s: str, needle: str) -> str: pass + +def strspn(s: str, skip: str) -> int: pass + +def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def atoi(src: str) -> t.CInt: pass + +def atoll(src: str) -> t.CInt64T: pass + +def atof(src: str) -> t.CDouble: pass + +def split(s: str, delim: str, result: t.CArray[str]) -> int: pass + + +ascii_lowercase: t.CExtern | str +ascii_uppercase: t.CExtern | str +ascii_letters: t.CExtern | str +digits: t.CExtern | str +hexdigits: t.CExtern | str +octdigits: t.CExtern | str +punctuation: t.CExtern | str +whitespace: t.CExtern | str +printable: t.CExtern | str \ No newline at end of file diff --git a/Test/FakeDuckTest/temp/_phase1_manifest.json b/Test/FakeDuckTest/temp/_phase1_manifest.json index 6157aa9..4c7becd 100644 --- a/Test/FakeDuckTest/temp/_phase1_manifest.json +++ b/Test/FakeDuckTest/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\FakeDuckTest\\App\\main.py": {"sha1": "48352329f97d0858", "mtime": 1782827899.6785, "size": 12227}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\_fakeduck.py": {"sha1": "79b337e5ea8951e2", "mtime": 1782826620.7129657, "size": 9717}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\_list.py": {"sha1": "f2ecbf8ced20575c", "mtime": 1784203829.5212443, "size": 3277}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\_withcontent.py": {"sha1": "5b2e220c5bae60c9", "mtime": 1782475015.06193, "size": 2039}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\atom.py": {"sha1": "271ea3decb810db2", "mtime": 1782226548.693161, "size": 1290}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\memhub.py": {"sha1": "ee084e9fc6ee413a", "mtime": 1784214242.4485993, "size": 17765}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "ab6e54ba9a669f76", "mtime": 1783933178.7264287, "size": 9922}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32process.py": {"sha1": "067c78e9f121dce3", "mtime": 1781200703.5409546, "size": 4802}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\FakeDuckTest\\App\\main.py": {"sha1": "48352329f97d0858", "mtime": 1782827899.6785, "size": 12227}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\_fakeduck.py": {"sha1": "79b337e5ea8951e2", "mtime": 1782826620.7129657, "size": 9717}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\_list.py": {"sha1": "f2ecbf8ced20575c", "mtime": 1784203829.5212443, "size": 3277}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\_withcontent.py": {"sha1": "5b2e220c5bae60c9", "mtime": 1782475015.06193, "size": 2039}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\atom.py": {"sha1": "271ea3decb810db2", "mtime": 1782226548.693161, "size": 1290}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\memhub.py": {"sha1": "f3560b99de458aec", "mtime": 1784375410.1873891, "size": 19458}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "9474791561654346", "mtime": 1784387475.6951904, "size": 10395}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32process.py": {"sha1": "067c78e9f121dce3", "mtime": 1781200703.5409546, "size": 4802}} \ No newline at end of file diff --git a/Test/FakeDuckTest/temp/_sha1_map.txt b/Test/FakeDuckTest/temp/_sha1_map.txt index c1be7c3..84afdad 100644 --- a/Test/FakeDuckTest/temp/_sha1_map.txt +++ b/Test/FakeDuckTest/temp/_sha1_map.txt @@ -1,4 +1,5 @@ 067c78e9f121dce3:includes/w32\win32process.py +14d33679f7fadf1f:includes/testcheck.py 271ea3decb810db2:includes/atom.py 48352329f97d0858:main.py 5b2e220c5bae60c9:includes/_withcontent.py @@ -6,10 +7,9 @@ 79b337e5ea8951e2:includes/_fakeduck.py 7e529fe7a078cfef:includes/w32\win32base.py 90c53dd6db8d41cf:includes/stdlib.py -ab6e54ba9a669f76:includes/string.py +9474791561654346:includes/string.py bbdf3bbd4c3bc28c:includes/w32\win32console.py c9f4be41ca1cc2b4:includes/viperio.py -dd3002730623424b:includes/testcheck.py -ee084e9fc6ee413a:includes/memhub.py f2ecbf8ced20575c:includes/_list.py +f3560b99de458aec:includes/memhub.py f5522571bcce7bcb:includes/stdint.py diff --git a/Test/FakeDuckTest/temp/ab6e54ba9a669f76.pyi b/Test/FakeDuckTest/temp/ab6e54ba9a669f76.pyi deleted file mode 100644 index 4fc3440..0000000 --- a/Test/FakeDuckTest/temp/ab6e54ba9a669f76.pyi +++ /dev/null @@ -1,48 +0,0 @@ -""" -Auto-generated Python stub file from string.py -Module: string -""" - - -from stdint import * -import t, c - -def strcpy(dest: str, src: str) -> str: pass - -def strcat(dest: str, src: str) -> str: pass - -def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass - -def strlen(src: str) -> t.CSizeT | t.CExport: pass - -def strcmp(str1: str, str2: str) -> t.CInt: pass - -def samestr(str1: str, str2: str) -> bool: pass - -def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass - -def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass - -def strchr(s: str, cr: t.CInt) -> str: pass - -def strrchr(s: str, cr: t.CInt) -> str: pass - -def strstr(s: str, needle: str) -> str: pass - -def strspn(s: str, skip: str) -> int: pass - -def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def atoi(src: str) -> t.CInt: pass - -def atoll(src: str) -> t.CInt64T: pass - -def atof(src: str) -> t.CDouble: pass - -def split(s: str, delim: str, result: t.CArray[str]) -> int: pass diff --git a/Test/FakeDuckTest/temp/ee084e9fc6ee413a.pyi b/Test/FakeDuckTest/temp/ee084e9fc6ee413a.pyi deleted file mode 100644 index 45551ef..0000000 --- a/Test/FakeDuckTest/temp/ee084e9fc6ee413a.pyi +++ /dev/null @@ -1,81 +0,0 @@ -""" -Auto-generated Python stub file from memhub.py -Module: memhub -""" - - -import t, c -from stdint import * -import string -import atom -import viperio - -MEMHUB_ALIGN: t.CDefine = 8 -MEMSLAB_MIN_BLOCK: t.CDefine = 16 -MEMSLAB_BITMAP_BYTES: t.CDefine = 256 -MEMBUDDY_MIN_BLOCK: t.CDefine = 32 -MEMBUDDY_MAX_ORDERS: t.CDefine = 32 -MEMBUDDY_HEADER_SIZE: t.CDefine = 8 - -def _align_up(val: t.CSizeT, align: t.CSizeT) -> t.CSizeT: pass - -def _largest_pow2_le(val: t.CSizeT) -> t.CSizeT: pass - -def _block_size_at_order(order: t.CInt) -> t.CSizeT: pass - - -@t.CVTable -class MemManager: - __provides__: list[str] = ['__memmgr__'] - base: t.CVoid | t.CPtr - size: t.CSizeT - def __init__(self: MemManager, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemManager, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemManager, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemManager) -> t.CInt: pass - def calloc(self: MemManager, count: t.CSizeT, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def realloc(self: MemManager, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def __enter__(self: MemManager) -> 'MemManager' | t.CPtr: pass - def __exit__(self: MemManager) -> t.CInt: pass - def alloc_buf(self: MemManager, capacity: t.CSizeT) -> viperio.Buf | t.CPtr: pass -class MemPool(MemManager): - offset: t.CSizeT - high_water: t.CSizeT - def __init__(self: MemPool, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemPool, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemPool, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemPool) -> t.CInt: pass -class MemSlab(MemManager): - block_size: t.CSizeT - block_count: t.CSizeT - used_count: t.CSizeT - free_list: t.CVoid | t.CPtr - alloc_map: t.CUInt8T | t.CPtr - alloc_map_size: t.CSizeT - usable: t.CVoid | t.CPtr - usable_size: t.CSizeT - def __init__(self: MemSlab, base: t.CVoid | t.CPtr, size: t.CSizeT, block_size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemSlab, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemSlab, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemSlab) -> t.CInt: pass -class MemBuddy(MemManager): - max_order: t.CInt - free_lists: t.CUInt64T | t.CPtr - lock_val: t.CVolatile | t.CInt - usable: t.CVoid | t.CPtr - usable_size: t.CSizeT - def __init__(self: MemBuddy, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def _fl_push(self: MemBuddy, order: t.CInt, block: t.CVoid | t.CPtr) -> t.CInt: pass - def _fl_pop(self: MemBuddy, order: t.CInt) -> t.CVoid | t.CPtr: pass - def _fl_find_and_remove(self: MemBuddy, order: t.CInt, target: t.CVoid | t.CPtr) -> t.CInt: pass - def _buddy_of(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CVoid | t.CPtr: pass - def _order_for_size(self: MemBuddy, size: t.CSizeT) -> t.CInt: pass - def _split_to_order(self: MemBuddy, to_order: t.CInt) -> t.CVoid | t.CPtr: pass - def _coalesce(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CInt: pass - def _is_valid_ptr(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def _lock(self: MemBuddy) -> t.CInt: pass - def _unlock(self: MemBuddy) -> t.CInt: pass - def alloc(self: MemBuddy, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemBuddy) -> t.CInt: pass - def realloc(self: MemBuddy, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass \ No newline at end of file diff --git a/Test/FakeDuckTest/temp/f3560b99de458aec.pyi b/Test/FakeDuckTest/temp/f3560b99de458aec.pyi new file mode 100644 index 0000000..84f0bbf --- /dev/null +++ b/Test/FakeDuckTest/temp/f3560b99de458aec.pyi @@ -0,0 +1,86 @@ +""" +Auto-generated Python stub file from memhub.py +Module: memhub +""" + + +import t, c +from stdint import * +import string +import atom +import viperio + +MEMHUB_ALIGN: t.CDefine = 8 +MEMSLAB_MIN_BLOCK: t.CDefine = 16 +MEMSLAB_BITMAP_BYTES: t.CDefine = 256 +MEMBUDDY_MIN_BLOCK: t.CDefine = 32 +MEMBUDDY_MAX_ORDERS: t.CDefine = 32 +MEMBUDDY_HEADER_SIZE: t.CDefine = 8 + +def _align_up(val: t.CSizeT, align: t.CSizeT) -> t.CSizeT: pass + +def _largest_pow2_le(val: t.CSizeT) -> t.CSizeT: pass + +def _block_size_at_order(order: t.CInt) -> t.CSizeT: pass + + +@t.CVTable +class MemManager: + __provides__: list[str] = ['__memmgr__'] + base: t.CVoid | t.CPtr + size: t.CSizeT + def __init__(self: MemManager, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemManager, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemManager, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemManager) -> t.CInt: pass + def calloc(self: MemManager, count: t.CSizeT, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def realloc(self: MemManager, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def __enter__(self: MemManager) -> 'MemManager' | t.CPtr: pass + def __exit__(self: MemManager) -> t.CInt: pass + def alloc_buf(self: MemManager, capacity: t.CSizeT) -> viperio.Buf | t.CPtr: pass +class MemPool(MemManager): + offset: t.CSizeT + high_water: t.CSizeT + def __init__(self: MemPool, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemPool, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemPool, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemPool) -> t.CInt: pass +class MemSlab(MemManager): + block_size: t.CSizeT + block_count: t.CSizeT + used_count: t.CSizeT + free_list: t.CVoid | t.CPtr + alloc_map: t.CUInt8T | t.CPtr + alloc_map_size: t.CSizeT + usable: t.CVoid | t.CPtr + usable_size: t.CSizeT + def __init__(self: MemSlab, base: t.CVoid | t.CPtr, size: t.CSizeT, block_size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemSlab, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemSlab, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemSlab) -> t.CInt: pass +class MemBuddy(MemManager): + max_order: t.CInt + free_lists: t.CUInt64T | t.CPtr + lock_val: t.CVolatile | t.CInt + usable: t.CVoid | t.CPtr + usable_size: t.CSizeT + def __init__(self: MemBuddy, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def _fl_push(self: MemBuddy, order: t.CInt, block: t.CVoid | t.CPtr) -> t.CInt: pass + def _fl_pop(self: MemBuddy, order: t.CInt) -> t.CVoid | t.CPtr: pass + def _fl_find_and_remove(self: MemBuddy, order: t.CInt, target: t.CVoid | t.CPtr) -> t.CInt: pass + def _buddy_of(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CVoid | t.CPtr: pass + def _order_for_size(self: MemBuddy, size: t.CSizeT) -> t.CInt: pass + def _split_to_order(self: MemBuddy, to_order: t.CInt) -> t.CVoid | t.CPtr: pass + def _coalesce(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CInt: pass + def _is_valid_ptr(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def _lock(self: MemBuddy) -> t.CInt: pass + def _unlock(self: MemBuddy) -> t.CInt: pass + def alloc(self: MemBuddy, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemBuddy) -> t.CInt: pass + def realloc(self: MemBuddy, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + @property + def mem_size(self: MemBuddy) -> t.CSizeT: pass + def stats(self: MemBuddy) -> t.CSizeT: pass + def free_count(self: MemBuddy) -> t.CSizeT: pass + def self_check(self: MemBuddy) -> t.CInt: pass \ No newline at end of file diff --git a/Test/ForAndLoopTest/output/6deb1a24b47f47fc.deps.json b/Test/ForAndLoopTest/output/6deb1a24b47f47fc.deps.json index 4e6ab8b..e9f75f1 100644 --- a/Test/ForAndLoopTest/output/6deb1a24b47f47fc.deps.json +++ b/Test/ForAndLoopTest/output/6deb1a24b47f47fc.deps.json @@ -1 +1 @@ -{"atom": "271ea3decb810db2", "stdio": "6f62fe05c5ea1ceb", "_fakeduck": "79b337e5ea8951e2", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperio": "c9f4be41ca1cc2b4", "testcheck": "dd3002730623424b", "memhub": "ee084e9fc6ee413a", "_list": "f2ecbf8ced20575c", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"testcheck": "14d33679f7fadf1f", "atom": "271ea3decb810db2", "stdio": "6f62fe05c5ea1ceb", "_fakeduck": "79b337e5ea8951e2", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperio": "c9f4be41ca1cc2b4", "_list": "f2ecbf8ced20575c", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/ForAndLoopTest/temp/dd3002730623424b.pyi b/Test/ForAndLoopTest/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/ForAndLoopTest/temp/dd3002730623424b.pyi rename to Test/ForAndLoopTest/temp/14d33679f7fadf1f.pyi diff --git a/Test/ForAndLoopTest/temp/9474791561654346.pyi b/Test/ForAndLoopTest/temp/9474791561654346.pyi new file mode 100644 index 0000000..1f82b1e --- /dev/null +++ b/Test/ForAndLoopTest/temp/9474791561654346.pyi @@ -0,0 +1,59 @@ +""" +Auto-generated Python stub file from string.py +Module: string +""" + + +from stdint import * +import t, c + +def strcpy(dest: str, src: str) -> str: pass + +def strcat(dest: str, src: str) -> str: pass + +def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass + +def strlen(src: str) -> t.CSizeT | t.CExport: pass + +def strcmp(str1: str, str2: str) -> t.CInt: pass + +def samestr(str1: str, str2: str) -> bool: pass + +def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass + +def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass + +def strchr(s: str, cr: t.CInt) -> str: pass + +def strrchr(s: str, cr: t.CInt) -> str: pass + +def strstr(s: str, needle: str) -> str: pass + +def strspn(s: str, skip: str) -> int: pass + +def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def atoi(src: str) -> t.CInt: pass + +def atoll(src: str) -> t.CInt64T: pass + +def atof(src: str) -> t.CDouble: pass + +def split(s: str, delim: str, result: t.CArray[str]) -> int: pass + + +ascii_lowercase: t.CExtern | str +ascii_uppercase: t.CExtern | str +ascii_letters: t.CExtern | str +digits: t.CExtern | str +hexdigits: t.CExtern | str +octdigits: t.CExtern | str +punctuation: t.CExtern | str +whitespace: t.CExtern | str +printable: t.CExtern | str \ No newline at end of file diff --git a/Test/ForAndLoopTest/temp/_phase1_manifest.json b/Test/ForAndLoopTest/temp/_phase1_manifest.json index 1b29052..79bf4c2 100644 --- a/Test/ForAndLoopTest/temp/_phase1_manifest.json +++ b/Test/ForAndLoopTest/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\ForAndLoopTest\\App\\main.py": {"sha1": "6deb1a24b47f47fc", "mtime": 1782827984.6760156, "size": 4951}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\_fakeduck.py": {"sha1": "79b337e5ea8951e2", "mtime": 1782826620.7129657, "size": 9717}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\_list.py": {"sha1": "f2ecbf8ced20575c", "mtime": 1784203829.5212443, "size": 3277}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\atom.py": {"sha1": "271ea3decb810db2", "mtime": 1782226548.693161, "size": 1290}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\memhub.py": {"sha1": "ee084e9fc6ee413a", "mtime": 1784214242.4485993, "size": 17765}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "ab6e54ba9a669f76", "mtime": 1783933178.7264287, "size": 9922}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\ForAndLoopTest\\App\\main.py": {"sha1": "6deb1a24b47f47fc", "mtime": 1782827984.6760156, "size": 4951}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\_fakeduck.py": {"sha1": "79b337e5ea8951e2", "mtime": 1782826620.7129657, "size": 9717}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\_list.py": {"sha1": "f2ecbf8ced20575c", "mtime": 1784203829.5212443, "size": 3277}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\atom.py": {"sha1": "271ea3decb810db2", "mtime": 1782226548.693161, "size": 1290}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\memhub.py": {"sha1": "f3560b99de458aec", "mtime": 1784375410.1873891, "size": 19458}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "9474791561654346", "mtime": 1784387475.6951904, "size": 10395}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file diff --git a/Test/ForAndLoopTest/temp/_sha1_map.txt b/Test/ForAndLoopTest/temp/_sha1_map.txt index dedebc9..27b601e 100644 --- a/Test/ForAndLoopTest/temp/_sha1_map.txt +++ b/Test/ForAndLoopTest/temp/_sha1_map.txt @@ -1,13 +1,13 @@ +14d33679f7fadf1f:includes/testcheck.py 271ea3decb810db2:includes/atom.py 6deb1a24b47f47fc:main.py 6f62fe05c5ea1ceb:includes/stdio.py 79b337e5ea8951e2:includes/_fakeduck.py 7e529fe7a078cfef:includes/w32\win32base.py 90c53dd6db8d41cf:includes/stdlib.py -ab6e54ba9a669f76:includes/string.py +9474791561654346:includes/string.py bbdf3bbd4c3bc28c:includes/w32\win32console.py c9f4be41ca1cc2b4:includes/viperio.py -dd3002730623424b:includes/testcheck.py -ee084e9fc6ee413a:includes/memhub.py f2ecbf8ced20575c:includes/_list.py +f3560b99de458aec:includes/memhub.py f5522571bcce7bcb:includes/stdint.py diff --git a/Test/ForAndLoopTest/temp/ab6e54ba9a669f76.pyi b/Test/ForAndLoopTest/temp/ab6e54ba9a669f76.pyi deleted file mode 100644 index 4fc3440..0000000 --- a/Test/ForAndLoopTest/temp/ab6e54ba9a669f76.pyi +++ /dev/null @@ -1,48 +0,0 @@ -""" -Auto-generated Python stub file from string.py -Module: string -""" - - -from stdint import * -import t, c - -def strcpy(dest: str, src: str) -> str: pass - -def strcat(dest: str, src: str) -> str: pass - -def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass - -def strlen(src: str) -> t.CSizeT | t.CExport: pass - -def strcmp(str1: str, str2: str) -> t.CInt: pass - -def samestr(str1: str, str2: str) -> bool: pass - -def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass - -def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass - -def strchr(s: str, cr: t.CInt) -> str: pass - -def strrchr(s: str, cr: t.CInt) -> str: pass - -def strstr(s: str, needle: str) -> str: pass - -def strspn(s: str, skip: str) -> int: pass - -def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def atoi(src: str) -> t.CInt: pass - -def atoll(src: str) -> t.CInt64T: pass - -def atof(src: str) -> t.CDouble: pass - -def split(s: str, delim: str, result: t.CArray[str]) -> int: pass diff --git a/Test/ForAndLoopTest/temp/ee084e9fc6ee413a.pyi b/Test/ForAndLoopTest/temp/ee084e9fc6ee413a.pyi deleted file mode 100644 index 45551ef..0000000 --- a/Test/ForAndLoopTest/temp/ee084e9fc6ee413a.pyi +++ /dev/null @@ -1,81 +0,0 @@ -""" -Auto-generated Python stub file from memhub.py -Module: memhub -""" - - -import t, c -from stdint import * -import string -import atom -import viperio - -MEMHUB_ALIGN: t.CDefine = 8 -MEMSLAB_MIN_BLOCK: t.CDefine = 16 -MEMSLAB_BITMAP_BYTES: t.CDefine = 256 -MEMBUDDY_MIN_BLOCK: t.CDefine = 32 -MEMBUDDY_MAX_ORDERS: t.CDefine = 32 -MEMBUDDY_HEADER_SIZE: t.CDefine = 8 - -def _align_up(val: t.CSizeT, align: t.CSizeT) -> t.CSizeT: pass - -def _largest_pow2_le(val: t.CSizeT) -> t.CSizeT: pass - -def _block_size_at_order(order: t.CInt) -> t.CSizeT: pass - - -@t.CVTable -class MemManager: - __provides__: list[str] = ['__memmgr__'] - base: t.CVoid | t.CPtr - size: t.CSizeT - def __init__(self: MemManager, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemManager, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemManager, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemManager) -> t.CInt: pass - def calloc(self: MemManager, count: t.CSizeT, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def realloc(self: MemManager, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def __enter__(self: MemManager) -> 'MemManager' | t.CPtr: pass - def __exit__(self: MemManager) -> t.CInt: pass - def alloc_buf(self: MemManager, capacity: t.CSizeT) -> viperio.Buf | t.CPtr: pass -class MemPool(MemManager): - offset: t.CSizeT - high_water: t.CSizeT - def __init__(self: MemPool, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemPool, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemPool, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemPool) -> t.CInt: pass -class MemSlab(MemManager): - block_size: t.CSizeT - block_count: t.CSizeT - used_count: t.CSizeT - free_list: t.CVoid | t.CPtr - alloc_map: t.CUInt8T | t.CPtr - alloc_map_size: t.CSizeT - usable: t.CVoid | t.CPtr - usable_size: t.CSizeT - def __init__(self: MemSlab, base: t.CVoid | t.CPtr, size: t.CSizeT, block_size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemSlab, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemSlab, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemSlab) -> t.CInt: pass -class MemBuddy(MemManager): - max_order: t.CInt - free_lists: t.CUInt64T | t.CPtr - lock_val: t.CVolatile | t.CInt - usable: t.CVoid | t.CPtr - usable_size: t.CSizeT - def __init__(self: MemBuddy, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def _fl_push(self: MemBuddy, order: t.CInt, block: t.CVoid | t.CPtr) -> t.CInt: pass - def _fl_pop(self: MemBuddy, order: t.CInt) -> t.CVoid | t.CPtr: pass - def _fl_find_and_remove(self: MemBuddy, order: t.CInt, target: t.CVoid | t.CPtr) -> t.CInt: pass - def _buddy_of(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CVoid | t.CPtr: pass - def _order_for_size(self: MemBuddy, size: t.CSizeT) -> t.CInt: pass - def _split_to_order(self: MemBuddy, to_order: t.CInt) -> t.CVoid | t.CPtr: pass - def _coalesce(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CInt: pass - def _is_valid_ptr(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def _lock(self: MemBuddy) -> t.CInt: pass - def _unlock(self: MemBuddy) -> t.CInt: pass - def alloc(self: MemBuddy, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemBuddy) -> t.CInt: pass - def realloc(self: MemBuddy, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass \ No newline at end of file diff --git a/Test/ForAndLoopTest/temp/f3560b99de458aec.pyi b/Test/ForAndLoopTest/temp/f3560b99de458aec.pyi new file mode 100644 index 0000000..84f0bbf --- /dev/null +++ b/Test/ForAndLoopTest/temp/f3560b99de458aec.pyi @@ -0,0 +1,86 @@ +""" +Auto-generated Python stub file from memhub.py +Module: memhub +""" + + +import t, c +from stdint import * +import string +import atom +import viperio + +MEMHUB_ALIGN: t.CDefine = 8 +MEMSLAB_MIN_BLOCK: t.CDefine = 16 +MEMSLAB_BITMAP_BYTES: t.CDefine = 256 +MEMBUDDY_MIN_BLOCK: t.CDefine = 32 +MEMBUDDY_MAX_ORDERS: t.CDefine = 32 +MEMBUDDY_HEADER_SIZE: t.CDefine = 8 + +def _align_up(val: t.CSizeT, align: t.CSizeT) -> t.CSizeT: pass + +def _largest_pow2_le(val: t.CSizeT) -> t.CSizeT: pass + +def _block_size_at_order(order: t.CInt) -> t.CSizeT: pass + + +@t.CVTable +class MemManager: + __provides__: list[str] = ['__memmgr__'] + base: t.CVoid | t.CPtr + size: t.CSizeT + def __init__(self: MemManager, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemManager, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemManager, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemManager) -> t.CInt: pass + def calloc(self: MemManager, count: t.CSizeT, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def realloc(self: MemManager, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def __enter__(self: MemManager) -> 'MemManager' | t.CPtr: pass + def __exit__(self: MemManager) -> t.CInt: pass + def alloc_buf(self: MemManager, capacity: t.CSizeT) -> viperio.Buf | t.CPtr: pass +class MemPool(MemManager): + offset: t.CSizeT + high_water: t.CSizeT + def __init__(self: MemPool, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemPool, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemPool, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemPool) -> t.CInt: pass +class MemSlab(MemManager): + block_size: t.CSizeT + block_count: t.CSizeT + used_count: t.CSizeT + free_list: t.CVoid | t.CPtr + alloc_map: t.CUInt8T | t.CPtr + alloc_map_size: t.CSizeT + usable: t.CVoid | t.CPtr + usable_size: t.CSizeT + def __init__(self: MemSlab, base: t.CVoid | t.CPtr, size: t.CSizeT, block_size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemSlab, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemSlab, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemSlab) -> t.CInt: pass +class MemBuddy(MemManager): + max_order: t.CInt + free_lists: t.CUInt64T | t.CPtr + lock_val: t.CVolatile | t.CInt + usable: t.CVoid | t.CPtr + usable_size: t.CSizeT + def __init__(self: MemBuddy, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def _fl_push(self: MemBuddy, order: t.CInt, block: t.CVoid | t.CPtr) -> t.CInt: pass + def _fl_pop(self: MemBuddy, order: t.CInt) -> t.CVoid | t.CPtr: pass + def _fl_find_and_remove(self: MemBuddy, order: t.CInt, target: t.CVoid | t.CPtr) -> t.CInt: pass + def _buddy_of(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CVoid | t.CPtr: pass + def _order_for_size(self: MemBuddy, size: t.CSizeT) -> t.CInt: pass + def _split_to_order(self: MemBuddy, to_order: t.CInt) -> t.CVoid | t.CPtr: pass + def _coalesce(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CInt: pass + def _is_valid_ptr(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def _lock(self: MemBuddy) -> t.CInt: pass + def _unlock(self: MemBuddy) -> t.CInt: pass + def alloc(self: MemBuddy, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemBuddy) -> t.CInt: pass + def realloc(self: MemBuddy, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + @property + def mem_size(self: MemBuddy) -> t.CSizeT: pass + def stats(self: MemBuddy) -> t.CSizeT: pass + def free_count(self: MemBuddy) -> t.CSizeT: pass + def self_check(self: MemBuddy) -> t.CInt: pass \ No newline at end of file diff --git a/Test/FormatStringTest/output/cdff0d7b58fc935b.deps.json b/Test/FormatStringTest/output/cdff0d7b58fc935b.deps.json index 7701fda..4ad59df 100644 --- a/Test/FormatStringTest/output/cdff0d7b58fc935b.deps.json +++ b/Test/FormatStringTest/output/cdff0d7b58fc935b.deps.json @@ -1 +1 @@ -{"ctraits": "42ced27d9e76aef5", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "testcheck": "dd3002730623424b", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"testcheck": "14d33679f7fadf1f", "ctraits": "42ced27d9e76aef5", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/FormatStringTest/temp/dd3002730623424b.pyi b/Test/FormatStringTest/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/FormatStringTest/temp/dd3002730623424b.pyi rename to Test/FormatStringTest/temp/14d33679f7fadf1f.pyi diff --git a/Test/FormatStringTest/temp/_phase1_manifest.json b/Test/FormatStringTest/temp/_phase1_manifest.json index 2b5f3ae..923c478 100644 --- a/Test/FormatStringTest/temp/_phase1_manifest.json +++ b/Test/FormatStringTest/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\FormatStringTest\\App\\main.py": {"sha1": "cdff0d7b58fc935b", "mtime": 1782266179.3674748, "size": 1498}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\ctraits.pyi": {"sha1": "42ced27d9e76aef5", "mtime": 1782216490.489452, "size": 572}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\FormatStringTest\\App\\main.py": {"sha1": "cdff0d7b58fc935b", "mtime": 1782266179.3674748, "size": 1498}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\ctraits.pyi": {"sha1": "42ced27d9e76aef5", "mtime": 1782216490.489452, "size": 572}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file diff --git a/Test/FormatStringTest/temp/_sha1_map.txt b/Test/FormatStringTest/temp/_sha1_map.txt index 3fb222c..e2df7c4 100644 --- a/Test/FormatStringTest/temp/_sha1_map.txt +++ b/Test/FormatStringTest/temp/_sha1_map.txt @@ -1,7 +1,7 @@ +14d33679f7fadf1f:includes/testcheck.py 42ced27d9e76aef5:includes/ctraits.pyi 6f62fe05c5ea1ceb:includes/stdio.py 7e529fe7a078cfef:includes/w32\win32base.py bbdf3bbd4c3bc28c:includes/w32\win32console.py cdff0d7b58fc935b:main.py -dd3002730623424b:includes/testcheck.py f5522571bcce7bcb:includes/stdint.py diff --git a/Test/FuncTest/output/067f811511854c88.deps.json b/Test/FuncTest/output/067f811511854c88.deps.json index 92c368b..a37be66 100644 --- a/Test/FuncTest/output/067f811511854c88.deps.json +++ b/Test/FuncTest/output/067f811511854c88.deps.json @@ -1 +1 @@ -{"stdio": "6f62fe05c5ea1ceb", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "testcheck": "dd3002730623424b", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"testcheck": "14d33679f7fadf1f", "stdio": "6f62fe05c5ea1ceb", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/FuncTest/temp/dd3002730623424b.pyi b/Test/FuncTest/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/FuncTest/temp/dd3002730623424b.pyi rename to Test/FuncTest/temp/14d33679f7fadf1f.pyi diff --git a/Test/FuncTest/temp/_phase1_manifest.json b/Test/FuncTest/temp/_phase1_manifest.json index e7b1669..a5c192b 100644 --- a/Test/FuncTest/temp/_phase1_manifest.json +++ b/Test/FuncTest/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\FuncTest\\App\\main.py": {"sha1": "067f811511854c88", "mtime": 1784309886.7278845, "size": 3098}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32memory.py": {"sha1": "72e2d5ccb7cedcf1", "mtime": 1781200703.5389092, "size": 3142}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\FuncTest\\App\\main.py": {"sha1": "067f811511854c88", "mtime": 1784309886.7278845, "size": 3098}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32memory.py": {"sha1": "72e2d5ccb7cedcf1", "mtime": 1781200703.5389092, "size": 3142}} \ No newline at end of file diff --git a/Test/FuncTest/temp/_sha1_map.txt b/Test/FuncTest/temp/_sha1_map.txt index 35cdb6f..92bd903 100644 --- a/Test/FuncTest/temp/_sha1_map.txt +++ b/Test/FuncTest/temp/_sha1_map.txt @@ -1,7 +1,7 @@ 067f811511854c88:main.py +14d33679f7fadf1f:includes/testcheck.py 6f62fe05c5ea1ceb:includes/stdio.py 72e2d5ccb7cedcf1:includes/w32\win32memory.py 7e529fe7a078cfef:includes/w32\win32base.py bbdf3bbd4c3bc28c:includes/w32\win32console.py -dd3002730623424b:includes/testcheck.py f5522571bcce7bcb:includes/stdint.py diff --git a/Test/GenericTest/output/16e1f65b154831e8.deps.json b/Test/GenericTest/output/16e1f65b154831e8.deps.json index f02d7ee..2a27f59 100644 --- a/Test/GenericTest/output/16e1f65b154831e8.deps.json +++ b/Test/GenericTest/output/16e1f65b154831e8.deps.json @@ -1 +1 @@ -{"stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "testcheck": "dd3002730623424b", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"testcheck": "14d33679f7fadf1f", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/GenericTest/temp/dd3002730623424b.pyi b/Test/GenericTest/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/GenericTest/temp/dd3002730623424b.pyi rename to Test/GenericTest/temp/14d33679f7fadf1f.pyi diff --git a/Test/GenericTest/temp/_phase1_manifest.json b/Test/GenericTest/temp/_phase1_manifest.json index 63ba4f7..216e39a 100644 --- a/Test/GenericTest/temp/_phase1_manifest.json +++ b/Test/GenericTest/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\GenericTest\\App\\main.py": {"sha1": "16e1f65b154831e8", "mtime": 1782266275.0221426, "size": 5369}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\GenericTest\\App\\main.py": {"sha1": "16e1f65b154831e8", "mtime": 1782266275.0221426, "size": 5369}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file diff --git a/Test/GenericTest/temp/_sha1_map.txt b/Test/GenericTest/temp/_sha1_map.txt index 3449281..9160313 100644 --- a/Test/GenericTest/temp/_sha1_map.txt +++ b/Test/GenericTest/temp/_sha1_map.txt @@ -1,6 +1,6 @@ +14d33679f7fadf1f:includes/testcheck.py 16e1f65b154831e8:main.py 6f62fe05c5ea1ceb:includes/stdio.py 7e529fe7a078cfef:includes/w32\win32base.py bbdf3bbd4c3bc28c:includes/w32\win32console.py -dd3002730623424b:includes/testcheck.py f5522571bcce7bcb:includes/stdint.py diff --git a/Test/GenericTest2/output/bdfc8bd243b7e5b7.deps.json b/Test/GenericTest2/output/bdfc8bd243b7e5b7.deps.json index f02d7ee..2a27f59 100644 --- a/Test/GenericTest2/output/bdfc8bd243b7e5b7.deps.json +++ b/Test/GenericTest2/output/bdfc8bd243b7e5b7.deps.json @@ -1 +1 @@ -{"stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "testcheck": "dd3002730623424b", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"testcheck": "14d33679f7fadf1f", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/GenericTest2/temp/dd3002730623424b.pyi b/Test/GenericTest2/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/GenericTest2/temp/dd3002730623424b.pyi rename to Test/GenericTest2/temp/14d33679f7fadf1f.pyi diff --git a/Test/GenericTest2/temp/_phase1_manifest.json b/Test/GenericTest2/temp/_phase1_manifest.json index afb8eaf..b6046b7 100644 --- a/Test/GenericTest2/temp/_phase1_manifest.json +++ b/Test/GenericTest2/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\GenericTest2\\App\\main.py": {"sha1": "bdfc8bd243b7e5b7", "mtime": 1782479447.3739374, "size": 8453}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\GenericTest2\\App\\main.py": {"sha1": "bdfc8bd243b7e5b7", "mtime": 1782479447.3739374, "size": 8453}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file diff --git a/Test/GenericTest2/temp/_sha1_map.txt b/Test/GenericTest2/temp/_sha1_map.txt index 479fc36..a83ff75 100644 --- a/Test/GenericTest2/temp/_sha1_map.txt +++ b/Test/GenericTest2/temp/_sha1_map.txt @@ -1,6 +1,6 @@ +14d33679f7fadf1f:includes/testcheck.py 6f62fe05c5ea1ceb:includes/stdio.py 7e529fe7a078cfef:includes/w32\win32base.py bbdf3bbd4c3bc28c:includes/w32\win32console.py bdfc8bd243b7e5b7:main.py -dd3002730623424b:includes/testcheck.py f5522571bcce7bcb:includes/stdint.py diff --git a/Test/HashTableTest/output/02d833b3cf571c5b.deps.json b/Test/HashTableTest/output/02d833b3cf571c5b.deps.json index f1d4415..155b9bf 100644 --- a/Test/HashTableTest/output/02d833b3cf571c5b.deps.json +++ b/Test/HashTableTest/output/02d833b3cf571c5b.deps.json @@ -1 +1 @@ -{"atom": "271ea3decb810db2", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "ab6e54ba9a669f76", "hashtable": "b8c66c8ff44eb874", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperio": "c9f4be41ca1cc2b4", "testcheck": "dd3002730623424b", "memhub": "ee084e9fc6ee413a", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"testcheck": "14d33679f7fadf1f", "atom": "271ea3decb810db2", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "hashtable": "b8c66c8ff44eb874", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperio": "c9f4be41ca1cc2b4", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/HashTableTest/temp/dd3002730623424b.pyi b/Test/HashTableTest/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/HashTableTest/temp/dd3002730623424b.pyi rename to Test/HashTableTest/temp/14d33679f7fadf1f.pyi diff --git a/Test/HashTableTest/temp/9474791561654346.pyi b/Test/HashTableTest/temp/9474791561654346.pyi new file mode 100644 index 0000000..1f82b1e --- /dev/null +++ b/Test/HashTableTest/temp/9474791561654346.pyi @@ -0,0 +1,59 @@ +""" +Auto-generated Python stub file from string.py +Module: string +""" + + +from stdint import * +import t, c + +def strcpy(dest: str, src: str) -> str: pass + +def strcat(dest: str, src: str) -> str: pass + +def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass + +def strlen(src: str) -> t.CSizeT | t.CExport: pass + +def strcmp(str1: str, str2: str) -> t.CInt: pass + +def samestr(str1: str, str2: str) -> bool: pass + +def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass + +def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass + +def strchr(s: str, cr: t.CInt) -> str: pass + +def strrchr(s: str, cr: t.CInt) -> str: pass + +def strstr(s: str, needle: str) -> str: pass + +def strspn(s: str, skip: str) -> int: pass + +def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def atoi(src: str) -> t.CInt: pass + +def atoll(src: str) -> t.CInt64T: pass + +def atof(src: str) -> t.CDouble: pass + +def split(s: str, delim: str, result: t.CArray[str]) -> int: pass + + +ascii_lowercase: t.CExtern | str +ascii_uppercase: t.CExtern | str +ascii_letters: t.CExtern | str +digits: t.CExtern | str +hexdigits: t.CExtern | str +octdigits: t.CExtern | str +punctuation: t.CExtern | str +whitespace: t.CExtern | str +printable: t.CExtern | str \ No newline at end of file diff --git a/Test/HashTableTest/temp/_phase1_manifest.json b/Test/HashTableTest/temp/_phase1_manifest.json index 4c20a5f..f926441 100644 --- a/Test/HashTableTest/temp/_phase1_manifest.json +++ b/Test/HashTableTest/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\HashTableTest\\App\\main.py": {"sha1": "02d833b3cf571c5b", "mtime": 1782828002.1143503, "size": 7795}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\atom.py": {"sha1": "271ea3decb810db2", "mtime": 1782226548.693161, "size": 1290}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\hashtable.py": {"sha1": "b8c66c8ff44eb874", "mtime": 1782826619.490043, "size": 9385}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\memhub.py": {"sha1": "ee084e9fc6ee413a", "mtime": 1784214242.4485993, "size": 17765}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "ab6e54ba9a669f76", "mtime": 1783933178.7264287, "size": 9922}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\HashTableTest\\App\\main.py": {"sha1": "02d833b3cf571c5b", "mtime": 1782828002.1143503, "size": 7795}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\atom.py": {"sha1": "271ea3decb810db2", "mtime": 1782226548.693161, "size": 1290}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\hashtable.py": {"sha1": "b8c66c8ff44eb874", "mtime": 1782826619.490043, "size": 9385}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\memhub.py": {"sha1": "f3560b99de458aec", "mtime": 1784375410.1873891, "size": 19458}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "9474791561654346", "mtime": 1784387475.6951904, "size": 10395}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file diff --git a/Test/HashTableTest/temp/_sha1_map.txt b/Test/HashTableTest/temp/_sha1_map.txt index cde28e2..8f88461 100644 --- a/Test/HashTableTest/temp/_sha1_map.txt +++ b/Test/HashTableTest/temp/_sha1_map.txt @@ -1,12 +1,12 @@ 02d833b3cf571c5b:main.py +14d33679f7fadf1f:includes/testcheck.py 271ea3decb810db2:includes/atom.py 6f62fe05c5ea1ceb:includes/stdio.py 7e529fe7a078cfef:includes/w32\win32base.py 90c53dd6db8d41cf:includes/stdlib.py -ab6e54ba9a669f76:includes/string.py +9474791561654346:includes/string.py b8c66c8ff44eb874:includes/hashtable.py bbdf3bbd4c3bc28c:includes/w32\win32console.py c9f4be41ca1cc2b4:includes/viperio.py -dd3002730623424b:includes/testcheck.py -ee084e9fc6ee413a:includes/memhub.py +f3560b99de458aec:includes/memhub.py f5522571bcce7bcb:includes/stdint.py diff --git a/Test/HashTableTest/temp/ab6e54ba9a669f76.pyi b/Test/HashTableTest/temp/ab6e54ba9a669f76.pyi deleted file mode 100644 index 4fc3440..0000000 --- a/Test/HashTableTest/temp/ab6e54ba9a669f76.pyi +++ /dev/null @@ -1,48 +0,0 @@ -""" -Auto-generated Python stub file from string.py -Module: string -""" - - -from stdint import * -import t, c - -def strcpy(dest: str, src: str) -> str: pass - -def strcat(dest: str, src: str) -> str: pass - -def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass - -def strlen(src: str) -> t.CSizeT | t.CExport: pass - -def strcmp(str1: str, str2: str) -> t.CInt: pass - -def samestr(str1: str, str2: str) -> bool: pass - -def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass - -def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass - -def strchr(s: str, cr: t.CInt) -> str: pass - -def strrchr(s: str, cr: t.CInt) -> str: pass - -def strstr(s: str, needle: str) -> str: pass - -def strspn(s: str, skip: str) -> int: pass - -def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def atoi(src: str) -> t.CInt: pass - -def atoll(src: str) -> t.CInt64T: pass - -def atof(src: str) -> t.CDouble: pass - -def split(s: str, delim: str, result: t.CArray[str]) -> int: pass diff --git a/Test/HashTableTest/temp/ee084e9fc6ee413a.pyi b/Test/HashTableTest/temp/ee084e9fc6ee413a.pyi deleted file mode 100644 index 45551ef..0000000 --- a/Test/HashTableTest/temp/ee084e9fc6ee413a.pyi +++ /dev/null @@ -1,81 +0,0 @@ -""" -Auto-generated Python stub file from memhub.py -Module: memhub -""" - - -import t, c -from stdint import * -import string -import atom -import viperio - -MEMHUB_ALIGN: t.CDefine = 8 -MEMSLAB_MIN_BLOCK: t.CDefine = 16 -MEMSLAB_BITMAP_BYTES: t.CDefine = 256 -MEMBUDDY_MIN_BLOCK: t.CDefine = 32 -MEMBUDDY_MAX_ORDERS: t.CDefine = 32 -MEMBUDDY_HEADER_SIZE: t.CDefine = 8 - -def _align_up(val: t.CSizeT, align: t.CSizeT) -> t.CSizeT: pass - -def _largest_pow2_le(val: t.CSizeT) -> t.CSizeT: pass - -def _block_size_at_order(order: t.CInt) -> t.CSizeT: pass - - -@t.CVTable -class MemManager: - __provides__: list[str] = ['__memmgr__'] - base: t.CVoid | t.CPtr - size: t.CSizeT - def __init__(self: MemManager, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemManager, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemManager, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemManager) -> t.CInt: pass - def calloc(self: MemManager, count: t.CSizeT, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def realloc(self: MemManager, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def __enter__(self: MemManager) -> 'MemManager' | t.CPtr: pass - def __exit__(self: MemManager) -> t.CInt: pass - def alloc_buf(self: MemManager, capacity: t.CSizeT) -> viperio.Buf | t.CPtr: pass -class MemPool(MemManager): - offset: t.CSizeT - high_water: t.CSizeT - def __init__(self: MemPool, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemPool, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemPool, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemPool) -> t.CInt: pass -class MemSlab(MemManager): - block_size: t.CSizeT - block_count: t.CSizeT - used_count: t.CSizeT - free_list: t.CVoid | t.CPtr - alloc_map: t.CUInt8T | t.CPtr - alloc_map_size: t.CSizeT - usable: t.CVoid | t.CPtr - usable_size: t.CSizeT - def __init__(self: MemSlab, base: t.CVoid | t.CPtr, size: t.CSizeT, block_size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemSlab, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemSlab, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemSlab) -> t.CInt: pass -class MemBuddy(MemManager): - max_order: t.CInt - free_lists: t.CUInt64T | t.CPtr - lock_val: t.CVolatile | t.CInt - usable: t.CVoid | t.CPtr - usable_size: t.CSizeT - def __init__(self: MemBuddy, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def _fl_push(self: MemBuddy, order: t.CInt, block: t.CVoid | t.CPtr) -> t.CInt: pass - def _fl_pop(self: MemBuddy, order: t.CInt) -> t.CVoid | t.CPtr: pass - def _fl_find_and_remove(self: MemBuddy, order: t.CInt, target: t.CVoid | t.CPtr) -> t.CInt: pass - def _buddy_of(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CVoid | t.CPtr: pass - def _order_for_size(self: MemBuddy, size: t.CSizeT) -> t.CInt: pass - def _split_to_order(self: MemBuddy, to_order: t.CInt) -> t.CVoid | t.CPtr: pass - def _coalesce(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CInt: pass - def _is_valid_ptr(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def _lock(self: MemBuddy) -> t.CInt: pass - def _unlock(self: MemBuddy) -> t.CInt: pass - def alloc(self: MemBuddy, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemBuddy) -> t.CInt: pass - def realloc(self: MemBuddy, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass \ No newline at end of file diff --git a/Test/HashTableTest/temp/f3560b99de458aec.pyi b/Test/HashTableTest/temp/f3560b99de458aec.pyi new file mode 100644 index 0000000..84f0bbf --- /dev/null +++ b/Test/HashTableTest/temp/f3560b99de458aec.pyi @@ -0,0 +1,86 @@ +""" +Auto-generated Python stub file from memhub.py +Module: memhub +""" + + +import t, c +from stdint import * +import string +import atom +import viperio + +MEMHUB_ALIGN: t.CDefine = 8 +MEMSLAB_MIN_BLOCK: t.CDefine = 16 +MEMSLAB_BITMAP_BYTES: t.CDefine = 256 +MEMBUDDY_MIN_BLOCK: t.CDefine = 32 +MEMBUDDY_MAX_ORDERS: t.CDefine = 32 +MEMBUDDY_HEADER_SIZE: t.CDefine = 8 + +def _align_up(val: t.CSizeT, align: t.CSizeT) -> t.CSizeT: pass + +def _largest_pow2_le(val: t.CSizeT) -> t.CSizeT: pass + +def _block_size_at_order(order: t.CInt) -> t.CSizeT: pass + + +@t.CVTable +class MemManager: + __provides__: list[str] = ['__memmgr__'] + base: t.CVoid | t.CPtr + size: t.CSizeT + def __init__(self: MemManager, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemManager, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemManager, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemManager) -> t.CInt: pass + def calloc(self: MemManager, count: t.CSizeT, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def realloc(self: MemManager, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def __enter__(self: MemManager) -> 'MemManager' | t.CPtr: pass + def __exit__(self: MemManager) -> t.CInt: pass + def alloc_buf(self: MemManager, capacity: t.CSizeT) -> viperio.Buf | t.CPtr: pass +class MemPool(MemManager): + offset: t.CSizeT + high_water: t.CSizeT + def __init__(self: MemPool, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemPool, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemPool, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemPool) -> t.CInt: pass +class MemSlab(MemManager): + block_size: t.CSizeT + block_count: t.CSizeT + used_count: t.CSizeT + free_list: t.CVoid | t.CPtr + alloc_map: t.CUInt8T | t.CPtr + alloc_map_size: t.CSizeT + usable: t.CVoid | t.CPtr + usable_size: t.CSizeT + def __init__(self: MemSlab, base: t.CVoid | t.CPtr, size: t.CSizeT, block_size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemSlab, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemSlab, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemSlab) -> t.CInt: pass +class MemBuddy(MemManager): + max_order: t.CInt + free_lists: t.CUInt64T | t.CPtr + lock_val: t.CVolatile | t.CInt + usable: t.CVoid | t.CPtr + usable_size: t.CSizeT + def __init__(self: MemBuddy, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def _fl_push(self: MemBuddy, order: t.CInt, block: t.CVoid | t.CPtr) -> t.CInt: pass + def _fl_pop(self: MemBuddy, order: t.CInt) -> t.CVoid | t.CPtr: pass + def _fl_find_and_remove(self: MemBuddy, order: t.CInt, target: t.CVoid | t.CPtr) -> t.CInt: pass + def _buddy_of(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CVoid | t.CPtr: pass + def _order_for_size(self: MemBuddy, size: t.CSizeT) -> t.CInt: pass + def _split_to_order(self: MemBuddy, to_order: t.CInt) -> t.CVoid | t.CPtr: pass + def _coalesce(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CInt: pass + def _is_valid_ptr(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def _lock(self: MemBuddy) -> t.CInt: pass + def _unlock(self: MemBuddy) -> t.CInt: pass + def alloc(self: MemBuddy, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemBuddy) -> t.CInt: pass + def realloc(self: MemBuddy, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + @property + def mem_size(self: MemBuddy) -> t.CSizeT: pass + def stats(self: MemBuddy) -> t.CSizeT: pass + def free_count(self: MemBuddy) -> t.CSizeT: pass + def self_check(self: MemBuddy) -> t.CInt: pass \ No newline at end of file diff --git a/Test/IterTest/output/6b8853854d6ef556.deps.json b/Test/IterTest/output/6b8853854d6ef556.deps.json index 9da11e2..48c6c93 100644 --- a/Test/IterTest/output/6b8853854d6ef556.deps.json +++ b/Test/IterTest/output/6b8853854d6ef556.deps.json @@ -1 +1 @@ -{"stdio": "6f62fe05c5ea1ceb", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "testcheck": "dd3002730623424b", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"testcheck": "14d33679f7fadf1f", "stdio": "6f62fe05c5ea1ceb", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/IterTest/temp/dd3002730623424b.pyi b/Test/IterTest/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/IterTest/temp/dd3002730623424b.pyi rename to Test/IterTest/temp/14d33679f7fadf1f.pyi diff --git a/Test/IterTest/temp/9474791561654346.pyi b/Test/IterTest/temp/9474791561654346.pyi new file mode 100644 index 0000000..1f82b1e --- /dev/null +++ b/Test/IterTest/temp/9474791561654346.pyi @@ -0,0 +1,59 @@ +""" +Auto-generated Python stub file from string.py +Module: string +""" + + +from stdint import * +import t, c + +def strcpy(dest: str, src: str) -> str: pass + +def strcat(dest: str, src: str) -> str: pass + +def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass + +def strlen(src: str) -> t.CSizeT | t.CExport: pass + +def strcmp(str1: str, str2: str) -> t.CInt: pass + +def samestr(str1: str, str2: str) -> bool: pass + +def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass + +def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass + +def strchr(s: str, cr: t.CInt) -> str: pass + +def strrchr(s: str, cr: t.CInt) -> str: pass + +def strstr(s: str, needle: str) -> str: pass + +def strspn(s: str, skip: str) -> int: pass + +def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def atoi(src: str) -> t.CInt: pass + +def atoll(src: str) -> t.CInt64T: pass + +def atof(src: str) -> t.CDouble: pass + +def split(s: str, delim: str, result: t.CArray[str]) -> int: pass + + +ascii_lowercase: t.CExtern | str +ascii_uppercase: t.CExtern | str +ascii_letters: t.CExtern | str +digits: t.CExtern | str +hexdigits: t.CExtern | str +octdigits: t.CExtern | str +punctuation: t.CExtern | str +whitespace: t.CExtern | str +printable: t.CExtern | str \ No newline at end of file diff --git a/Test/IterTest/temp/_phase1_manifest.json b/Test/IterTest/temp/_phase1_manifest.json index 7dc1091..4510ecc 100644 --- a/Test/IterTest/temp/_phase1_manifest.json +++ b/Test/IterTest/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\IterTest\\App\\main.py": {"sha1": "6b8853854d6ef556", "mtime": 1782474645.4172094, "size": 1600}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "ab6e54ba9a669f76", "mtime": 1783933178.7264287, "size": 9922}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32memory.py": {"sha1": "72e2d5ccb7cedcf1", "mtime": 1781200703.5389092, "size": 3142}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\IterTest\\App\\main.py": {"sha1": "6b8853854d6ef556", "mtime": 1782474645.4172094, "size": 1600}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "9474791561654346", "mtime": 1784387475.6951904, "size": 10395}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32memory.py": {"sha1": "72e2d5ccb7cedcf1", "mtime": 1781200703.5389092, "size": 3142}} \ No newline at end of file diff --git a/Test/IterTest/temp/_sha1_map.txt b/Test/IterTest/temp/_sha1_map.txt index 53a3934..ff122d0 100644 --- a/Test/IterTest/temp/_sha1_map.txt +++ b/Test/IterTest/temp/_sha1_map.txt @@ -1,8 +1,8 @@ +14d33679f7fadf1f:includes/testcheck.py 6b8853854d6ef556:main.py 6f62fe05c5ea1ceb:includes/stdio.py 72e2d5ccb7cedcf1:includes/w32\win32memory.py 7e529fe7a078cfef:includes/w32\win32base.py -ab6e54ba9a669f76:includes/string.py +9474791561654346:includes/string.py bbdf3bbd4c3bc28c:includes/w32\win32console.py -dd3002730623424b:includes/testcheck.py f5522571bcce7bcb:includes/stdint.py diff --git a/Test/IterTest/temp/ab6e54ba9a669f76.pyi b/Test/IterTest/temp/ab6e54ba9a669f76.pyi deleted file mode 100644 index 4fc3440..0000000 --- a/Test/IterTest/temp/ab6e54ba9a669f76.pyi +++ /dev/null @@ -1,48 +0,0 @@ -""" -Auto-generated Python stub file from string.py -Module: string -""" - - -from stdint import * -import t, c - -def strcpy(dest: str, src: str) -> str: pass - -def strcat(dest: str, src: str) -> str: pass - -def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass - -def strlen(src: str) -> t.CSizeT | t.CExport: pass - -def strcmp(str1: str, str2: str) -> t.CInt: pass - -def samestr(str1: str, str2: str) -> bool: pass - -def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass - -def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass - -def strchr(s: str, cr: t.CInt) -> str: pass - -def strrchr(s: str, cr: t.CInt) -> str: pass - -def strstr(s: str, needle: str) -> str: pass - -def strspn(s: str, skip: str) -> int: pass - -def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def atoi(src: str) -> t.CInt: pass - -def atoll(src: str) -> t.CInt64T: pass - -def atof(src: str) -> t.CDouble: pass - -def split(s: str, delim: str, result: t.CArray[str]) -> int: pass diff --git a/Test/JsonTest/output/8a97754e9e3c2b9a.deps.json b/Test/JsonTest/output/8a97754e9e3c2b9a.deps.json index 76cbe79..4a3aa43 100644 --- a/Test/JsonTest/output/8a97754e9e3c2b9a.deps.json +++ b/Test/JsonTest/output/8a97754e9e3c2b9a.deps.json @@ -1 +1 @@ -{"json.__writer": "20cd49775c100a38", "__writer": "20cd49775c100a38", "json.__parser": "240a9a4157959a9f", "__parser": "240a9a4157959a9f", "atom": "271ea3decb810db2", "json.__init__": "57288496f7c2d1ad", "__init__": "57288496f7c2d1ad", "json": "57288496f7c2d1ad", "stdio": "6f62fe05c5ea1ceb", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperio": "c9f4be41ca1cc2b4", "testcheck": "dd3002730623424b", "memhub": "ee084e9fc6ee413a", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"testcheck": "14d33679f7fadf1f", "json.__writer": "20cd49775c100a38", "__writer": "20cd49775c100a38", "json.__parser": "240a9a4157959a9f", "__parser": "240a9a4157959a9f", "atom": "271ea3decb810db2", "json.__init__": "57288496f7c2d1ad", "__init__": "57288496f7c2d1ad", "json": "57288496f7c2d1ad", "stdio": "6f62fe05c5ea1ceb", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperio": "c9f4be41ca1cc2b4", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/JsonTest/temp/dd3002730623424b.pyi b/Test/JsonTest/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/JsonTest/temp/dd3002730623424b.pyi rename to Test/JsonTest/temp/14d33679f7fadf1f.pyi diff --git a/Test/JsonTest/temp/9474791561654346.pyi b/Test/JsonTest/temp/9474791561654346.pyi new file mode 100644 index 0000000..1f82b1e --- /dev/null +++ b/Test/JsonTest/temp/9474791561654346.pyi @@ -0,0 +1,59 @@ +""" +Auto-generated Python stub file from string.py +Module: string +""" + + +from stdint import * +import t, c + +def strcpy(dest: str, src: str) -> str: pass + +def strcat(dest: str, src: str) -> str: pass + +def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass + +def strlen(src: str) -> t.CSizeT | t.CExport: pass + +def strcmp(str1: str, str2: str) -> t.CInt: pass + +def samestr(str1: str, str2: str) -> bool: pass + +def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass + +def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass + +def strchr(s: str, cr: t.CInt) -> str: pass + +def strrchr(s: str, cr: t.CInt) -> str: pass + +def strstr(s: str, needle: str) -> str: pass + +def strspn(s: str, skip: str) -> int: pass + +def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def atoi(src: str) -> t.CInt: pass + +def atoll(src: str) -> t.CInt64T: pass + +def atof(src: str) -> t.CDouble: pass + +def split(s: str, delim: str, result: t.CArray[str]) -> int: pass + + +ascii_lowercase: t.CExtern | str +ascii_uppercase: t.CExtern | str +ascii_letters: t.CExtern | str +digits: t.CExtern | str +hexdigits: t.CExtern | str +octdigits: t.CExtern | str +punctuation: t.CExtern | str +whitespace: t.CExtern | str +printable: t.CExtern | str \ No newline at end of file diff --git a/Test/JsonTest/temp/_phase1_manifest.json b/Test/JsonTest/temp/_phase1_manifest.json index 97bdd03..0da9c12 100644 --- a/Test/JsonTest/temp/_phase1_manifest.json +++ b/Test/JsonTest/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\JsonTest\\App\\main.py": {"sha1": "8a97754e9e3c2b9a", "mtime": 1782828053.1672907, "size": 14025}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\atom.py": {"sha1": "271ea3decb810db2", "mtime": 1782226548.693161, "size": 1290}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\json\\__init__.py": {"sha1": "57288496f7c2d1ad", "mtime": 1783239811.8873823, "size": 7653}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\json\\__parser.py": {"sha1": "240a9a4157959a9f", "mtime": 1782826918.100951, "size": 7517}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\json\\__writer.py": {"sha1": "20cd49775c100a38", "mtime": 1782826901.8906734, "size": 3784}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\memhub.py": {"sha1": "ee084e9fc6ee413a", "mtime": 1784214242.4485993, "size": 17765}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "ab6e54ba9a669f76", "mtime": 1783933178.7264287, "size": 9922}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32memory.py": {"sha1": "72e2d5ccb7cedcf1", "mtime": 1781200703.5389092, "size": 3142}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\JsonTest\\App\\main.py": {"sha1": "8a97754e9e3c2b9a", "mtime": 1782828053.1672907, "size": 14025}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\atom.py": {"sha1": "271ea3decb810db2", "mtime": 1782226548.693161, "size": 1290}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\json\\__init__.py": {"sha1": "57288496f7c2d1ad", "mtime": 1783239811.8873823, "size": 7653}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\json\\__parser.py": {"sha1": "240a9a4157959a9f", "mtime": 1782826918.100951, "size": 7517}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\json\\__writer.py": {"sha1": "20cd49775c100a38", "mtime": 1782826901.8906734, "size": 3784}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\memhub.py": {"sha1": "f3560b99de458aec", "mtime": 1784375410.1873891, "size": 19458}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "9474791561654346", "mtime": 1784387475.6951904, "size": 10395}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32memory.py": {"sha1": "72e2d5ccb7cedcf1", "mtime": 1781200703.5389092, "size": 3142}} \ No newline at end of file diff --git a/Test/JsonTest/temp/_sha1_map.txt b/Test/JsonTest/temp/_sha1_map.txt index 9621830..d5cd47c 100644 --- a/Test/JsonTest/temp/_sha1_map.txt +++ b/Test/JsonTest/temp/_sha1_map.txt @@ -1,3 +1,4 @@ +14d33679f7fadf1f:includes/testcheck.py 20cd49775c100a38:includes/json\__writer.py 240a9a4157959a9f:includes/json\__parser.py 271ea3decb810db2:includes/atom.py @@ -6,9 +7,8 @@ 72e2d5ccb7cedcf1:includes/w32\win32memory.py 7e529fe7a078cfef:includes/w32\win32base.py 8a97754e9e3c2b9a:main.py -ab6e54ba9a669f76:includes/string.py +9474791561654346:includes/string.py bbdf3bbd4c3bc28c:includes/w32\win32console.py c9f4be41ca1cc2b4:includes/viperio.py -dd3002730623424b:includes/testcheck.py -ee084e9fc6ee413a:includes/memhub.py +f3560b99de458aec:includes/memhub.py f5522571bcce7bcb:includes/stdint.py diff --git a/Test/JsonTest/temp/ab6e54ba9a669f76.pyi b/Test/JsonTest/temp/ab6e54ba9a669f76.pyi deleted file mode 100644 index 4fc3440..0000000 --- a/Test/JsonTest/temp/ab6e54ba9a669f76.pyi +++ /dev/null @@ -1,48 +0,0 @@ -""" -Auto-generated Python stub file from string.py -Module: string -""" - - -from stdint import * -import t, c - -def strcpy(dest: str, src: str) -> str: pass - -def strcat(dest: str, src: str) -> str: pass - -def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass - -def strlen(src: str) -> t.CSizeT | t.CExport: pass - -def strcmp(str1: str, str2: str) -> t.CInt: pass - -def samestr(str1: str, str2: str) -> bool: pass - -def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass - -def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass - -def strchr(s: str, cr: t.CInt) -> str: pass - -def strrchr(s: str, cr: t.CInt) -> str: pass - -def strstr(s: str, needle: str) -> str: pass - -def strspn(s: str, skip: str) -> int: pass - -def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def atoi(src: str) -> t.CInt: pass - -def atoll(src: str) -> t.CInt64T: pass - -def atof(src: str) -> t.CDouble: pass - -def split(s: str, delim: str, result: t.CArray[str]) -> int: pass diff --git a/Test/JsonTest/temp/ee084e9fc6ee413a.pyi b/Test/JsonTest/temp/ee084e9fc6ee413a.pyi deleted file mode 100644 index 45551ef..0000000 --- a/Test/JsonTest/temp/ee084e9fc6ee413a.pyi +++ /dev/null @@ -1,81 +0,0 @@ -""" -Auto-generated Python stub file from memhub.py -Module: memhub -""" - - -import t, c -from stdint import * -import string -import atom -import viperio - -MEMHUB_ALIGN: t.CDefine = 8 -MEMSLAB_MIN_BLOCK: t.CDefine = 16 -MEMSLAB_BITMAP_BYTES: t.CDefine = 256 -MEMBUDDY_MIN_BLOCK: t.CDefine = 32 -MEMBUDDY_MAX_ORDERS: t.CDefine = 32 -MEMBUDDY_HEADER_SIZE: t.CDefine = 8 - -def _align_up(val: t.CSizeT, align: t.CSizeT) -> t.CSizeT: pass - -def _largest_pow2_le(val: t.CSizeT) -> t.CSizeT: pass - -def _block_size_at_order(order: t.CInt) -> t.CSizeT: pass - - -@t.CVTable -class MemManager: - __provides__: list[str] = ['__memmgr__'] - base: t.CVoid | t.CPtr - size: t.CSizeT - def __init__(self: MemManager, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemManager, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemManager, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemManager) -> t.CInt: pass - def calloc(self: MemManager, count: t.CSizeT, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def realloc(self: MemManager, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def __enter__(self: MemManager) -> 'MemManager' | t.CPtr: pass - def __exit__(self: MemManager) -> t.CInt: pass - def alloc_buf(self: MemManager, capacity: t.CSizeT) -> viperio.Buf | t.CPtr: pass -class MemPool(MemManager): - offset: t.CSizeT - high_water: t.CSizeT - def __init__(self: MemPool, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemPool, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemPool, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemPool) -> t.CInt: pass -class MemSlab(MemManager): - block_size: t.CSizeT - block_count: t.CSizeT - used_count: t.CSizeT - free_list: t.CVoid | t.CPtr - alloc_map: t.CUInt8T | t.CPtr - alloc_map_size: t.CSizeT - usable: t.CVoid | t.CPtr - usable_size: t.CSizeT - def __init__(self: MemSlab, base: t.CVoid | t.CPtr, size: t.CSizeT, block_size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemSlab, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemSlab, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemSlab) -> t.CInt: pass -class MemBuddy(MemManager): - max_order: t.CInt - free_lists: t.CUInt64T | t.CPtr - lock_val: t.CVolatile | t.CInt - usable: t.CVoid | t.CPtr - usable_size: t.CSizeT - def __init__(self: MemBuddy, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def _fl_push(self: MemBuddy, order: t.CInt, block: t.CVoid | t.CPtr) -> t.CInt: pass - def _fl_pop(self: MemBuddy, order: t.CInt) -> t.CVoid | t.CPtr: pass - def _fl_find_and_remove(self: MemBuddy, order: t.CInt, target: t.CVoid | t.CPtr) -> t.CInt: pass - def _buddy_of(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CVoid | t.CPtr: pass - def _order_for_size(self: MemBuddy, size: t.CSizeT) -> t.CInt: pass - def _split_to_order(self: MemBuddy, to_order: t.CInt) -> t.CVoid | t.CPtr: pass - def _coalesce(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CInt: pass - def _is_valid_ptr(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def _lock(self: MemBuddy) -> t.CInt: pass - def _unlock(self: MemBuddy) -> t.CInt: pass - def alloc(self: MemBuddy, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemBuddy) -> t.CInt: pass - def realloc(self: MemBuddy, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass \ No newline at end of file diff --git a/Test/JsonTest/temp/f3560b99de458aec.pyi b/Test/JsonTest/temp/f3560b99de458aec.pyi new file mode 100644 index 0000000..84f0bbf --- /dev/null +++ b/Test/JsonTest/temp/f3560b99de458aec.pyi @@ -0,0 +1,86 @@ +""" +Auto-generated Python stub file from memhub.py +Module: memhub +""" + + +import t, c +from stdint import * +import string +import atom +import viperio + +MEMHUB_ALIGN: t.CDefine = 8 +MEMSLAB_MIN_BLOCK: t.CDefine = 16 +MEMSLAB_BITMAP_BYTES: t.CDefine = 256 +MEMBUDDY_MIN_BLOCK: t.CDefine = 32 +MEMBUDDY_MAX_ORDERS: t.CDefine = 32 +MEMBUDDY_HEADER_SIZE: t.CDefine = 8 + +def _align_up(val: t.CSizeT, align: t.CSizeT) -> t.CSizeT: pass + +def _largest_pow2_le(val: t.CSizeT) -> t.CSizeT: pass + +def _block_size_at_order(order: t.CInt) -> t.CSizeT: pass + + +@t.CVTable +class MemManager: + __provides__: list[str] = ['__memmgr__'] + base: t.CVoid | t.CPtr + size: t.CSizeT + def __init__(self: MemManager, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemManager, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemManager, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemManager) -> t.CInt: pass + def calloc(self: MemManager, count: t.CSizeT, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def realloc(self: MemManager, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def __enter__(self: MemManager) -> 'MemManager' | t.CPtr: pass + def __exit__(self: MemManager) -> t.CInt: pass + def alloc_buf(self: MemManager, capacity: t.CSizeT) -> viperio.Buf | t.CPtr: pass +class MemPool(MemManager): + offset: t.CSizeT + high_water: t.CSizeT + def __init__(self: MemPool, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemPool, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemPool, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemPool) -> t.CInt: pass +class MemSlab(MemManager): + block_size: t.CSizeT + block_count: t.CSizeT + used_count: t.CSizeT + free_list: t.CVoid | t.CPtr + alloc_map: t.CUInt8T | t.CPtr + alloc_map_size: t.CSizeT + usable: t.CVoid | t.CPtr + usable_size: t.CSizeT + def __init__(self: MemSlab, base: t.CVoid | t.CPtr, size: t.CSizeT, block_size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemSlab, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemSlab, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemSlab) -> t.CInt: pass +class MemBuddy(MemManager): + max_order: t.CInt + free_lists: t.CUInt64T | t.CPtr + lock_val: t.CVolatile | t.CInt + usable: t.CVoid | t.CPtr + usable_size: t.CSizeT + def __init__(self: MemBuddy, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def _fl_push(self: MemBuddy, order: t.CInt, block: t.CVoid | t.CPtr) -> t.CInt: pass + def _fl_pop(self: MemBuddy, order: t.CInt) -> t.CVoid | t.CPtr: pass + def _fl_find_and_remove(self: MemBuddy, order: t.CInt, target: t.CVoid | t.CPtr) -> t.CInt: pass + def _buddy_of(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CVoid | t.CPtr: pass + def _order_for_size(self: MemBuddy, size: t.CSizeT) -> t.CInt: pass + def _split_to_order(self: MemBuddy, to_order: t.CInt) -> t.CVoid | t.CPtr: pass + def _coalesce(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CInt: pass + def _is_valid_ptr(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def _lock(self: MemBuddy) -> t.CInt: pass + def _unlock(self: MemBuddy) -> t.CInt: pass + def alloc(self: MemBuddy, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemBuddy) -> t.CInt: pass + def realloc(self: MemBuddy, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + @property + def mem_size(self: MemBuddy) -> t.CSizeT: pass + def stats(self: MemBuddy) -> t.CSizeT: pass + def free_count(self: MemBuddy) -> t.CSizeT: pass + def self_check(self: MemBuddy) -> t.CInt: pass \ No newline at end of file diff --git a/Test/LLvmLiteTest/App/main.py b/Test/LLvmLiteTest/App/main.py index 274172a..9395df2 100644 --- a/Test/LLvmLiteTest/App/main.py +++ b/Test/LLvmLiteTest/App/main.py @@ -97,36 +97,50 @@ def test_build_add(pool: memhub.MemPool | t.CPtr): core: llvmlite.LLVMTypeCore | t.CPtr = llvmlite.LLVMTypeCore(pool) mcore: llvmlite.LLVMModuleCore | t.CPtr = llvmlite.LLVMModuleCore(pool) ty_i32: llvmlite.LLVMType | t.CPtr = core.Int32() + testcheck.info("DBG: step1 core/ty_i32 ok") # 创建模块 + 函数 mod: llvmlite.Module | t.CPtr = mcore.NewModule("test_add") + testcheck.info("DBG: step2 NewModule ok") func: llvmlite.Function | t.CPtr = mcore.CreateFunction(mod, "add", ty_i32) + testcheck.info("DBG: step3 CreateFunction ok") # 添加参数 mcore.AddParam(func, ty_i32, "%a") + testcheck.info("DBG: step4 AddParam a ok") mcore.AddParam(func, ty_i32, "%b") + testcheck.info("DBG: step5 AddParam b ok") # 创建 entry 块 entry: llvmlite.BasicBlock | t.CPtr = mcore.CreateBlock(func, "entry") + testcheck.info("DBG: step6 CreateBlock ok") # 创建 builder builder: llvmlite.IRBuilder | t.CPtr = mcore.NewBuilder(func) + testcheck.info("DBG: step7 NewBuilder ok") llvmlite.position_at_end(builder, entry) + testcheck.info("DBG: step8 position_at_end ok") # 为参数创建 Value 包装 v_a: llvmlite.Value | t.CPtr = mcore.SSAValue(ty_i32, "%a") + testcheck.info("DBG: step9 SSAValue a ok") v_b: llvmlite.Value | t.CPtr = mcore.SSAValue(ty_i32, "%b") + testcheck.info("DBG: step10 SSAValue b ok") # %0 = add i32 %a, %b v_c: llvmlite.Value | t.CPtr = llvmlite.build_add(builder, v_a, v_b) + testcheck.info("DBG: step11 build_add ok") # ret i32 %0 llvmlite.build_ret(builder, v_c) + testcheck.info("DBG: step12 build_ret ok") # 打印函数 buf: t.CChar | t.CPtr = pool.alloc(4096) + testcheck.info("DBG: step13 pool.alloc buf ok") buf[0] = 0 mcore.PrintFunction(buf, 4096, func) + testcheck.info("DBG: step14 PrintFunction ok") testcheck.info(buf) # 验证关键内容 diff --git a/Test/LLvmLiteTest/output/3e914ffe8cc3c120.deps.json b/Test/LLvmLiteTest/output/3e914ffe8cc3c120.deps.json deleted file mode 100644 index 643b5b9..0000000 --- a/Test/LLvmLiteTest/output/3e914ffe8cc3c120.deps.json +++ /dev/null @@ -1 +0,0 @@ -{"llvmlite.__values": "05c11f22675c60cb", "__values": "05c11f22675c60cb", "llvmlite.__module": "21a7fcfc665f75ef", "__module": "21a7fcfc665f75ef", "atom": "271ea3decb810db2", "linkedlist": "2d39c6c7d3557b3e", "llvmlite.__types": "455ff4e74c3dbfb0", "__types": "455ff4e74c3dbfb0", "llvmlite.__builder": "46ea362b72c10a9e", "__builder": "46ea362b72c10a9e", "stdio": "6f62fe05c5ea1ceb", "stdarg": "71e0a3ffcb3ebfad", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "llvmlite.__init__": "95394ca8da0f655a", "__init__": "95394ca8da0f655a", "llvmlite": "95394ca8da0f655a", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperlib": "c3b259b4059f8668", "viperio": "c9f4be41ca1cc2b4", "llvmlite.__verify": "d4117f5e00a6c3b5", "__verify": "d4117f5e00a6c3b5", "testcheck": "dd3002730623424b", "llvmlite.__function": "e0b84369e50c937c", "__function": "e0b84369e50c937c", "memhub": "ee084e9fc6ee413a", "stdint": "f5522571bcce7bcb", "main.__types": "455ff4e74c3dbfb0", "main.__function": "e0b84369e50c937c", "main.__values": "05c11f22675c60cb", "main.__module": "21a7fcfc665f75ef"} \ No newline at end of file diff --git a/Test/LLvmLiteTest/output/5b8cf12a5862b640.deps.json b/Test/LLvmLiteTest/output/5b8cf12a5862b640.deps.json new file mode 100644 index 0000000..6ad4f68 --- /dev/null +++ b/Test/LLvmLiteTest/output/5b8cf12a5862b640.deps.json @@ -0,0 +1 @@ +{"testcheck": "14d33679f7fadf1f", "llvmlite.__types": "15f1ded02f3aa5bc", "__types": "15f1ded02f3aa5bc", "llvmlite.__module": "21a7fcfc665f75ef", "__module": "21a7fcfc665f75ef", "atom": "271ea3decb810db2", "linkedlist": "2d39c6c7d3557b3e", "llvmlite.__function": "4dad2ba72ed7ba09", "__function": "4dad2ba72ed7ba09", "llvmlite.__verify": "6b3bc463fd044545", "__verify": "6b3bc463fd044545", "stdio": "6f62fe05c5ea1ceb", "stdarg": "71e0a3ffcb3ebfad", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "llvmlite.__builder": "946e087da91aaada", "__builder": "946e087da91aaada", "string": "9474791561654346", "llvmlite.__init__": "95394ca8da0f655a", "__init__": "95394ca8da0f655a", "llvmlite": "95394ca8da0f655a", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperlib": "c3b259b4059f8668", "viperio": "c9f4be41ca1cc2b4", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb", "llvmlite.__values": "f9e36e2cd6fa659f", "__values": "f9e36e2cd6fa659f"} \ No newline at end of file diff --git a/Test/LLvmLiteTest/temp/dd3002730623424b.pyi b/Test/LLvmLiteTest/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/LLvmLiteTest/temp/dd3002730623424b.pyi rename to Test/LLvmLiteTest/temp/14d33679f7fadf1f.pyi diff --git a/.transpyc_cache/455ff4e74c3dbfb0.pyi b/Test/LLvmLiteTest/temp/15f1ded02f3aa5bc.pyi similarity index 99% rename from .transpyc_cache/455ff4e74c3dbfb0.pyi rename to Test/LLvmLiteTest/temp/15f1ded02f3aa5bc.pyi index 984146e..5ab4cec 100644 --- a/.transpyc_cache/455ff4e74c3dbfb0.pyi +++ b/Test/LLvmLiteTest/temp/15f1ded02f3aa5bc.pyi @@ -11,6 +11,7 @@ import string import memhub from linkedlist import GSListNode +@t.NoVTable class ParamNode(GSListNode[ParamNode]): Ty: t.CVoid | t.CPtr class LLVMType(t.REnum): diff --git a/Test/LLvmLiteTest/temp/3e914ffe8cc3c120.doc.json b/Test/LLvmLiteTest/temp/3e914ffe8cc3c120.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/Test/LLvmLiteTest/temp/3e914ffe8cc3c120.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/Test/LLvmLiteTest/temp/3e914ffe8cc3c120.pyi b/Test/LLvmLiteTest/temp/3e914ffe8cc3c120.pyi deleted file mode 100644 index c9678f0..0000000 --- a/Test/LLvmLiteTest/temp/3e914ffe8cc3c120.pyi +++ /dev/null @@ -1,72 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - - -import t, c -from stdint import * -import stdio -import string -import stdlib -import memhub -import testcheck -import llvmlite - -POOL_SIZE: t.CDefine = 524288 # 512KB - -def test_type_print(pool: memhub.MemPool | t.CPtr) -> t.CInt: pass - -def test_value_print(pool: memhub.MemPool | t.CPtr) -> t.CInt: pass - -def test_build_add(pool: memhub.MemPool | t.CPtr) -> t.CInt: pass - -def test_build_if_else(pool: memhub.MemPool | t.CPtr) -> t.CInt: pass - -def test_module_print(pool: memhub.MemPool | t.CPtr) -> t.CInt: pass - -def test_array_type(pool: memhub.MemPool | t.CPtr) -> t.CInt: pass - -def test_struct_type(pool: memhub.MemPool | t.CPtr) -> t.CInt: pass - -def test_func_type(pool: memhub.MemPool | t.CPtr) -> t.CInt: pass - -def test_declare(pool: memhub.MemPool | t.CPtr) -> t.CInt: pass - -def test_float_types(pool: memhub.MemPool | t.CPtr) -> t.CInt: pass - -def test_float_binops(pool: memhub.MemPool | t.CPtr) -> t.CInt: pass - -def test_bitwise_ops(pool: memhub.MemPool | t.CPtr) -> t.CInt: pass - -def test_fcmp(pool: memhub.MemPool | t.CPtr) -> t.CInt: pass - -def test_casts(pool: memhub.MemPool | t.CPtr) -> t.CInt: pass - -def test_fp_conversions(pool: memhub.MemPool | t.CPtr) -> t.CInt: pass - -def test_phi(pool: memhub.MemPool | t.CPtr) -> t.CInt: pass - -def test_switch(pool: memhub.MemPool | t.CPtr) -> t.CInt: pass - -def test_select(pool: memhub.MemPool | t.CPtr) -> t.CInt: pass - -def test_globals(pool: memhub.MemPool | t.CPtr) -> t.CInt: pass - -def test_attributes(pool: memhub.MemPool | t.CPtr) -> t.CInt: pass - -def test_atomic(pool: memhub.MemPool | t.CPtr) -> t.CInt: pass - -def test_inline_asm_unreachable(pool: memhub.MemPool | t.CPtr) -> t.CInt: pass - -def test_verify_valid(pool: memhub.MemPool | t.CPtr) -> t.CInt: pass - -def test_verify_no_terminator(pool: memhub.MemPool | t.CPtr) -> t.CInt: pass - -def test_verify_duplicate_def(pool: memhub.MemPool | t.CPtr) -> t.CInt: pass - -def test_verify_undef_use(pool: memhub.MemPool | t.CPtr) -> t.CInt: pass - -def test_verify_module(pool: memhub.MemPool | t.CPtr) -> t.CInt: pass - -def main() -> int: pass diff --git a/Test/LLvmLiteTest/temp/455ff4e74c3dbfb0.pyi b/Test/LLvmLiteTest/temp/455ff4e74c3dbfb0.pyi deleted file mode 100644 index 984146e..0000000 --- a/Test/LLvmLiteTest/temp/455ff4e74c3dbfb0.pyi +++ /dev/null @@ -1,120 +0,0 @@ -""" -Auto-generated Python stub file from llvmlite.__types.py -Module: llvmlite.__types -""" - - -import t, c -from stdint import * -import viperlib -import string -import memhub -from linkedlist import GSListNode - -class ParamNode(GSListNode[ParamNode]): - Ty: t.CVoid | t.CPtr -class LLVMType(t.REnum): - class Int: - Bits: t.CInt - class Ptr: - Pointee: LLVMType | t.CPtr - class Func: - Ret: LLVMType | t.CPtr - Params: ParamNode | t.CPtr - PCount: t.CInt - class Array: - ElemTy: LLVMType | t.CPtr - Count: t.CInt - class Struct: - Fields: ParamNode | t.CPtr - FCount: t.CInt - Name: t.CChar | t.CPtr - class Float: - Bits: t.CInt - class Void: - pass - class Label: - pass - class Metadata: - pass - -def _new_type(pool: memhub.MemBuddy | t.CPtr) -> LLVMType | t.CPtr: pass - -def Int1(pool: memhub.MemBuddy | t.CPtr) -> LLVMType | t.CPtr: pass - -def Int8(pool: memhub.MemBuddy | t.CPtr) -> LLVMType | t.CPtr: pass - -def Int16(pool: memhub.MemBuddy | t.CPtr) -> LLVMType | t.CPtr: pass - -def Int32(pool: memhub.MemBuddy | t.CPtr) -> LLVMType | t.CPtr: pass - -def Int64(pool: memhub.MemBuddy | t.CPtr) -> LLVMType | t.CPtr: pass - -def Ptr(pool: memhub.MemBuddy | t.CPtr, pointee: LLVMType | t.CPtr) -> LLVMType | t.CPtr: pass - -def Func(pool: memhub.MemBuddy | t.CPtr, ret: LLVMType | t.CPtr, params: ParamNode | t.CPtr, count: t.CInt) -> LLVMType | t.CPtr: pass - -def Void(pool: memhub.MemBuddy | t.CPtr) -> LLVMType | t.CPtr: pass - -def Array(pool: memhub.MemBuddy | t.CPtr, elem_ty: LLVMType | t.CPtr, count: t.CInt) -> LLVMType | t.CPtr: pass - -def Struct(pool: memhub.MemBuddy | t.CPtr, fields: ParamNode | t.CPtr, fcount: t.CInt, name: t.CChar | t.CPtr) -> LLVMType | t.CPtr: pass - -def Half(pool: memhub.MemBuddy | t.CPtr) -> LLVMType | t.CPtr: pass - -def Float(pool: memhub.MemBuddy | t.CPtr) -> LLVMType | t.CPtr: pass - -def Double(pool: memhub.MemBuddy | t.CPtr) -> LLVMType | t.CPtr: pass - -def FP128(pool: memhub.MemBuddy | t.CPtr) -> LLVMType | t.CPtr: pass - -def Label(pool: memhub.MemBuddy | t.CPtr) -> LLVMType | t.CPtr: pass - - -PNODE_SIZE: t.CDefine = 16 - -def new_param_node(pool: memhub.MemBuddy | t.CPtr, ty: LLVMType | t.CPtr) -> ParamNode | t.CPtr: pass - -def param_list_append(head: ParamNode | t.CPtr, tail: ParamNode | t.CPtr, node: ParamNode | t.CPtr) -> ParamNode | t.CPtr: pass - -def paramnode_get_ty(node: ParamNode | t.CPtr) -> LLVMType | t.CPtr: pass - -def paramnode_get_next(node: ParamNode | t.CPtr) -> ParamNode | t.CPtr: pass - -def paramnode_set_ty(node: ParamNode | t.CPtr, ty: LLVMType | t.CPtr) -> t.CInt: pass - -def paramnode_set_next(node: ParamNode | t.CPtr, nxt: ParamNode | t.CPtr) -> t.CInt: pass - - -@t.NoVTable -class LLVMTypeCore: - Pool: memhub.MemBuddy | t.CPtr - def __init__(self: LLVMTypeCore, pool: memhub.MemBuddy | t.CPtr) -> t.CInt: pass - def Int1(self: LLVMTypeCore) -> LLVMType | t.CPtr: pass - def Int8(self: LLVMTypeCore) -> LLVMType | t.CPtr: pass - def Int16(self: LLVMTypeCore) -> LLVMType | t.CPtr: pass - def Int32(self: LLVMTypeCore) -> LLVMType | t.CPtr: pass - def Int64(self: LLVMTypeCore) -> LLVMType | t.CPtr: pass - def Ptr(self: LLVMTypeCore, pointee: LLVMType | t.CPtr) -> LLVMType | t.CPtr: pass - def Func(self: LLVMTypeCore, ret: LLVMType | t.CPtr, params: ParamNode | t.CPtr, count: t.CInt) -> LLVMType | t.CPtr: pass - def Array(self: LLVMTypeCore, elem_ty: LLVMType | t.CPtr, count: t.CInt) -> LLVMType | t.CPtr: pass - def Struct(self: LLVMTypeCore, fields: ParamNode | t.CPtr, fcount: t.CInt, name: t.CChar | t.CPtr) -> LLVMType | t.CPtr: pass - def Void(self: LLVMTypeCore) -> LLVMType | t.CPtr: pass - def Half(self: LLVMTypeCore) -> LLVMType | t.CPtr: pass - def Float(self: LLVMTypeCore) -> LLVMType | t.CPtr: pass - def Double(self: LLVMTypeCore) -> LLVMType | t.CPtr: pass - def FP128(self: LLVMTypeCore) -> LLVMType | t.CPtr: pass - def Label(self: LLVMTypeCore) -> LLVMType | t.CPtr: pass - def NewParamNode(self: LLVMTypeCore, ty: LLVMType | t.CPtr) -> ParamNode | t.CPtr: pass - def ParamListAppend(self: LLVMTypeCore, head: ParamNode | t.CPtr, tail: ParamNode | t.CPtr, node: ParamNode | t.CPtr) -> ParamNode | t.CPtr: pass - def PrintType(self: LLVMTypeCore, buf: t.CChar | t.CPtr, size: t.CSizeT, ty: LLVMType | t.CPtr) -> t.CInt: pass - -def TypePrint(buf: t.CChar | t.CPtr, size: t.CSizeT, ty: LLVMType | t.CPtr, pool: memhub.MemBuddy | t.CPtr) -> t.CInt: pass - -def _strappend(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _print_struct_body(buf: t.CChar | t.CPtr, size: t.CSizeT, fields: ParamNode | t.CPtr, pool: memhub.MemBuddy | t.CPtr) -> t.CInt: pass - -def PrintStructDefinition(buf: t.CChar | t.CPtr, size: t.CSizeT, ty: LLVMType | t.CPtr, pool: memhub.MemBuddy | t.CPtr) -> t.CInt: pass - -def get_struct_name(ty: LLVMType | t.CPtr) -> t.CChar | t.CPtr: pass diff --git a/Test/LLvmLiteTest/temp/46ea362b72c10a9e.pyi b/Test/LLvmLiteTest/temp/46ea362b72c10a9e.pyi deleted file mode 100644 index fbd9c3b..0000000 --- a/Test/LLvmLiteTest/temp/46ea362b72c10a9e.pyi +++ /dev/null @@ -1,219 +0,0 @@ -""" -Auto-generated Python stub file from llvmlite.__builder.py -Module: llvmlite.__builder -""" - - -import t, c -from stdint import * -import string -import viperlib -import memhub -from linkedlist import GSListNode, GSList -from .__types import LLVMType, TypePrint -from .__values import Value, new_value, SSAValue -from .__function import Function, BasicBlock, block_append_text, function_move_block_to_end, _ll_name_needs_quote - -class IRBuilder: - Pool: memhub.MemBuddy | t.CPtr - Func: Function | t.CPtr - CurBlock: BasicBlock | t.CPtr - Counter: t.CInt - -BUILDER_SIZE: t.CDefine = 32 - -def new_builder(pool: memhub.MemBuddy | t.CPtr, func: Function | t.CPtr) -> IRBuilder | t.CPtr: pass - -def position_at_end(builder: IRBuilder | t.CPtr, block: BasicBlock | t.CPtr) -> t.CInt: pass - -def _alloc_ssa_name(builder: IRBuilder | t.CPtr) -> t.CChar | t.CPtr: pass - -def _type_str(builder: IRBuilder | t.CPtr, ty: LLVMType | t.CPtr) -> t.CChar | t.CPtr: pass - -def _emit(builder: IRBuilder | t.CPtr, text: t.CChar | t.CPtr) -> t.CInt: pass - -def _mark_terminated(builder: IRBuilder | t.CPtr) -> t.CInt: pass - -def builder_cur_block_is_terminated(builder: IRBuilder | t.CPtr) -> t.CInt: pass - -def build_alloca(builder: IRBuilder | t.CPtr, ty: LLVMType | t.CPtr) -> Value | t.CPtr: pass - -def build_load(builder: IRBuilder | t.CPtr, ty: LLVMType | t.CPtr, ptr: Value | t.CPtr) -> Value | t.CPtr: pass - -def build_store(builder: IRBuilder | t.CPtr, val: Value | t.CPtr, ptr: Value | t.CPtr) -> t.CInt: pass - -def build_add(builder: IRBuilder | t.CPtr, lhs: Value | t.CPtr, rhs: Value | t.CPtr) -> Value | t.CPtr: pass - -def build_sub(builder: IRBuilder | t.CPtr, lhs: Value | t.CPtr, rhs: Value | t.CPtr) -> Value | t.CPtr: pass - -def build_mul(builder: IRBuilder | t.CPtr, lhs: Value | t.CPtr, rhs: Value | t.CPtr) -> Value | t.CPtr: pass - -def build_sdiv(builder: IRBuilder | t.CPtr, lhs: Value | t.CPtr, rhs: Value | t.CPtr) -> Value | t.CPtr: pass - -def build_udiv(builder: IRBuilder | t.CPtr, lhs: Value | t.CPtr, rhs: Value | t.CPtr) -> Value | t.CPtr: pass - -def build_srem(builder: IRBuilder | t.CPtr, lhs: Value | t.CPtr, rhs: Value | t.CPtr) -> Value | t.CPtr: pass - -def build_urem(builder: IRBuilder | t.CPtr, lhs: Value | t.CPtr, rhs: Value | t.CPtr) -> Value | t.CPtr: pass - -def build_and(builder: IRBuilder | t.CPtr, lhs: Value | t.CPtr, rhs: Value | t.CPtr) -> Value | t.CPtr: pass - -def build_or(builder: IRBuilder | t.CPtr, lhs: Value | t.CPtr, rhs: Value | t.CPtr) -> Value | t.CPtr: pass - -def build_xor(builder: IRBuilder | t.CPtr, lhs: Value | t.CPtr, rhs: Value | t.CPtr) -> Value | t.CPtr: pass - -def build_shl(builder: IRBuilder | t.CPtr, lhs: Value | t.CPtr, rhs: Value | t.CPtr) -> Value | t.CPtr: pass - -def build_lshr(builder: IRBuilder | t.CPtr, lhs: Value | t.CPtr, rhs: Value | t.CPtr) -> Value | t.CPtr: pass - -def build_ashr(builder: IRBuilder | t.CPtr, lhs: Value | t.CPtr, rhs: Value | t.CPtr) -> Value | t.CPtr: pass - -def build_fadd(builder: IRBuilder | t.CPtr, lhs: Value | t.CPtr, rhs: Value | t.CPtr) -> Value | t.CPtr: pass - -def build_fsub(builder: IRBuilder | t.CPtr, lhs: Value | t.CPtr, rhs: Value | t.CPtr) -> Value | t.CPtr: pass - -def build_fmul(builder: IRBuilder | t.CPtr, lhs: Value | t.CPtr, rhs: Value | t.CPtr) -> Value | t.CPtr: pass - -def build_fdiv(builder: IRBuilder | t.CPtr, lhs: Value | t.CPtr, rhs: Value | t.CPtr) -> Value | t.CPtr: pass - -def build_frem(builder: IRBuilder | t.CPtr, lhs: Value | t.CPtr, rhs: Value | t.CPtr) -> Value | t.CPtr: pass - -def build_fneg(builder: IRBuilder | t.CPtr, val: Value | t.CPtr) -> Value | t.CPtr: pass - -def _build_binop(builder: IRBuilder | t.CPtr, op: t.CChar | t.CPtr, lhs: Value | t.CPtr, rhs: Value | t.CPtr) -> Value | t.CPtr: pass - - -ICMP_EQ: t.CDefine = 0 -ICMP_NE: t.CDefine = 1 -ICMP_SGT: t.CDefine = 2 -ICMP_SGE: t.CDefine = 3 -ICMP_SLT: t.CDefine = 4 -ICMP_SLE: t.CDefine = 5 -ICMP_UGT: t.CDefine = 6 -ICMP_UGE: t.CDefine = 7 -ICMP_ULT: t.CDefine = 8 -ICMP_ULE: t.CDefine = 9 -FCMP_FALSE: t.CDefine = 0 -FCMP_OEQ: t.CDefine = 1 -FCMP_OGT: t.CDefine = 2 -FCMP_OGE: t.CDefine = 3 -FCMP_OLT: t.CDefine = 4 -FCMP_OLE: t.CDefine = 5 -FCMP_ONE: t.CDefine = 6 -FCMP_ORD: t.CDefine = 7 -FCMP_UNO: t.CDefine = 8 -FCMP_UEQ: t.CDefine = 9 -FCMP_UGT: t.CDefine = 10 -FCMP_UGE: t.CDefine = 11 -FCMP_ULT: t.CDefine = 12 -FCMP_ULE: t.CDefine = 13 -FCMP_UNE: t.CDefine = 14 -FCMP_TRUE: t.CDefine = 15 - -def _icmp_pred_str(pred: t.CInt) -> t.CChar | t.CPtr: pass - -def _fcmp_pred_str(pred: t.CInt) -> t.CChar | t.CPtr: pass - -def build_icmp(builder: IRBuilder | t.CPtr, pred: t.CInt, lhs: Value | t.CPtr, rhs: Value | t.CPtr) -> Value | t.CPtr: pass - -def build_fcmp(builder: IRBuilder | t.CPtr, pred: t.CInt, lhs: Value | t.CPtr, rhs: Value | t.CPtr) -> Value | t.CPtr: pass - -def build_br(builder: IRBuilder | t.CPtr, target: BasicBlock | t.CPtr) -> t.CInt: pass - -def build_cond_br(builder: IRBuilder | t.CPtr, cond: Value | t.CPtr, then_blk: BasicBlock | t.CPtr, else_blk: BasicBlock | t.CPtr) -> t.CInt: pass - -def build_ret(builder: IRBuilder | t.CPtr, val: Value | t.CPtr) -> t.CInt: pass - -def build_ret_void(builder: IRBuilder | t.CPtr) -> t.CInt: pass - -def build_call(builder: IRBuilder | t.CPtr, callee: t.CChar | t.CPtr, args: Value | t.CPtr, arg_count: t.CInt, ret_ty: LLVMType | t.CPtr, is_variadic: t.CInt) -> Value | t.CPtr: pass - -def build_call_indirect(builder: IRBuilder | t.CPtr, callee_val: Value | t.CPtr, args: Value | t.CPtr, arg_count: t.CInt, ret_ty: LLVMType | t.CPtr) -> Value | t.CPtr: pass - -def build_bitcast(builder: IRBuilder | t.CPtr, val: Value | t.CPtr, to_ty: LLVMType | t.CPtr) -> Value | t.CPtr: pass - -def build_sext(builder: IRBuilder | t.CPtr, val: Value | t.CPtr, to_ty: LLVMType | t.CPtr) -> Value | t.CPtr: pass - -def build_trunc(builder: IRBuilder | t.CPtr, val: Value | t.CPtr, to_ty: LLVMType | t.CPtr) -> Value | t.CPtr: pass - -def build_zext(builder: IRBuilder | t.CPtr, val: Value | t.CPtr, to_ty: LLVMType | t.CPtr) -> Value | t.CPtr: pass - -def build_ptrtoint(builder: IRBuilder | t.CPtr, val: Value | t.CPtr, to_ty: LLVMType | t.CPtr) -> Value | t.CPtr: pass - -def build_inttoptr(builder: IRBuilder | t.CPtr, val: Value | t.CPtr, to_ty: LLVMType | t.CPtr) -> Value | t.CPtr: pass - -def build_fpext(builder: IRBuilder | t.CPtr, val: Value | t.CPtr, to_ty: LLVMType | t.CPtr) -> Value | t.CPtr: pass - -def build_fptrunc(builder: IRBuilder | t.CPtr, val: Value | t.CPtr, to_ty: LLVMType | t.CPtr) -> Value | t.CPtr: pass - -def build_fp2si(builder: IRBuilder | t.CPtr, val: Value | t.CPtr, to_ty: LLVMType | t.CPtr) -> Value | t.CPtr: pass - -def build_si2fp(builder: IRBuilder | t.CPtr, val: Value | t.CPtr, to_ty: LLVMType | t.CPtr) -> Value | t.CPtr: pass - -def build_fp2ui(builder: IRBuilder | t.CPtr, val: Value | t.CPtr, to_ty: LLVMType | t.CPtr) -> Value | t.CPtr: pass - -def build_ui2fp(builder: IRBuilder | t.CPtr, val: Value | t.CPtr, to_ty: LLVMType | t.CPtr) -> Value | t.CPtr: pass - -def build_gep(builder: IRBuilder | t.CPtr, elem_ty: LLVMType | t.CPtr, ptr: Value | t.CPtr, idx: Value | t.CPtr) -> Value | t.CPtr: pass - -def build_gep_array(builder: IRBuilder | t.CPtr, array_ty: LLVMType | t.CPtr, elem_ty: LLVMType | t.CPtr, ptr: Value | t.CPtr, idx: Value | t.CPtr) -> Value | t.CPtr: pass - -def build_gep_struct(builder: IRBuilder | t.CPtr, struct_ty: LLVMType | t.CPtr, field_ty: LLVMType | t.CPtr, ptr: Value | t.CPtr, field_idx: t.CInt) -> Value | t.CPtr: pass - - -class PhiIncoming(GSListNode[PhiIncoming]): - Val: Value | t.CPtr - Block: BasicBlock | t.CPtr - -PHIINC_SIZE: t.CDefine = 24 - -def new_phi_incoming(pool: memhub.MemBuddy | t.CPtr, val: Value | t.CPtr, block: BasicBlock | t.CPtr) -> PhiIncoming | t.CPtr: pass - -def build_phi(builder: IRBuilder | t.CPtr, ty: LLVMType | t.CPtr, incoming_head: PhiIncoming | t.CPtr, count: t.CInt) -> Value | t.CPtr: pass - - -class SwitchCase(GSListNode[SwitchCase]): - CaseVal: Value | t.CPtr - Block: BasicBlock | t.CPtr - -SWCASE_SIZE: t.CDefine = 24 - -def new_switch_case(pool: memhub.MemBuddy | t.CPtr, case_val: Value | t.CPtr, block: BasicBlock | t.CPtr) -> SwitchCase | t.CPtr: pass - -def build_switch(builder: IRBuilder | t.CPtr, val: Value | t.CPtr, default_blk: BasicBlock | t.CPtr, cases_head: SwitchCase | t.CPtr, case_count: t.CInt) -> t.CInt: pass - -def build_select(builder: IRBuilder | t.CPtr, cond: Value | t.CPtr, true_val: Value | t.CPtr, false_val: Value | t.CPtr) -> Value | t.CPtr: pass - -def build_unreachable(builder: IRBuilder | t.CPtr) -> t.CInt: pass - - -ATOMIC_XCHG: t.CDefine = 0 -ATOMIC_ADD: t.CDefine = 1 -ATOMIC_SUB: t.CDefine = 2 -ATOMIC_AND: t.CDefine = 3 -ATOMIC_NAND: t.CDefine = 4 -ATOMIC_OR: t.CDefine = 5 -ATOMIC_XOR: t.CDefine = 6 -ATOMIC_MAX: t.CDefine = 7 -ATOMIC_MIN: t.CDefine = 8 -ATOMIC_UMAX: t.CDefine = 9 -ATOMIC_UMIN: t.CDefine = 10 -ATOMIC_ORDER_NOTATOMIC: t.CDefine = 0 -ATOMIC_ORDER_UNORDERED: t.CDefine = 1 -ATOMIC_ORDER_MONOTONIC: t.CDefine = 2 -ATOMIC_ORDER_ACQUIRE: t.CDefine = 3 -ATOMIC_ORDER_RELEASE: t.CDefine = 4 -ATOMIC_ORDER_ACQ_REL: t.CDefine = 5 -ATOMIC_ORDER_SEQ_CST: t.CDefine = 6 - -def _atomic_op_str(op: t.CInt) -> t.CChar | t.CPtr: pass - -def _atomic_order_str(ord: t.CInt) -> t.CChar | t.CPtr: pass - -def build_atomicrmw(builder: IRBuilder | t.CPtr, op: t.CInt, ptr: Value | t.CPtr, val: Value | t.CPtr, order: t.CInt) -> Value | t.CPtr: pass - -def build_cmpxchg(builder: IRBuilder | t.CPtr, ptr: Value | t.CPtr, cmp_val: Value | t.CPtr, new_val: Value | t.CPtr, succ_order: t.CInt, fail_order: t.CInt) -> Value | t.CPtr: pass - -def build_inline_asm(builder: IRBuilder | t.CPtr, ret_ty: LLVMType | t.CPtr, asm_text: t.CChar | t.CPtr, constraints: t.CChar | t.CPtr, has_side_effects: t.CInt) -> Value | t.CPtr: pass - -def _append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass diff --git a/Test/LLvmLiteTest/temp/e0b84369e50c937c.pyi b/Test/LLvmLiteTest/temp/4dad2ba72ed7ba09.pyi similarity index 98% rename from Test/LLvmLiteTest/temp/e0b84369e50c937c.pyi rename to Test/LLvmLiteTest/temp/4dad2ba72ed7ba09.pyi index c10ea89..bc85812 100644 --- a/Test/LLvmLiteTest/temp/e0b84369e50c937c.pyi +++ b/Test/LLvmLiteTest/temp/4dad2ba72ed7ba09.pyi @@ -13,17 +13,21 @@ import stdio from linkedlist import GSListNode, GSList from .__types import LLVMType, ParamNode, TypePrint +@t.NoVTable class Line(GSListNode[Line]): Buf: t.CChar | t.CPtr Len: t.CSizeT +@t.NoVTable class BasicBlock(GSListNode[BasicBlock]): Name: t.CChar | t.CPtr Lines: GSList[Line] | t.CPtr IsTerminated: t.CInt +@t.NoVTable class Param(GSListNode[Param]): Ty: LLVMType | t.CPtr Name: t.CChar | t.CPtr Attrs: t.CChar | t.CPtr +@t.NoVTable class Function(GSListNode[Function]): Name: t.CChar | t.CPtr RetTy: LLVMType | t.CPtr diff --git a/.transpyc_cache/02d833b3cf571c5b.doc.json b/Test/LLvmLiteTest/temp/5b8cf12a5862b640.doc.json similarity index 100% rename from .transpyc_cache/02d833b3cf571c5b.doc.json rename to Test/LLvmLiteTest/temp/5b8cf12a5862b640.doc.json diff --git a/.transpyc_cache/3e914ffe8cc3c120.pyi b/Test/LLvmLiteTest/temp/5b8cf12a5862b640.pyi similarity index 100% rename from .transpyc_cache/3e914ffe8cc3c120.pyi rename to Test/LLvmLiteTest/temp/5b8cf12a5862b640.pyi diff --git a/.transpyc_cache/d4117f5e00a6c3b5.pyi b/Test/LLvmLiteTest/temp/6b3bc463fd044545.pyi similarity index 99% rename from .transpyc_cache/d4117f5e00a6c3b5.pyi rename to Test/LLvmLiteTest/temp/6b3bc463fd044545.pyi index ee44bdb..ad181de 100644 --- a/.transpyc_cache/d4117f5e00a6c3b5.pyi +++ b/Test/LLvmLiteTest/temp/6b3bc463fd044545.pyi @@ -19,6 +19,7 @@ VERIFY_ERR_DUPLICATE_DEF: t.CDefine = 2 VERIFY_ERR_UNDEFINED_USE: t.CDefine = 3 VERIFY_ERR_PHI_NOT_FIRST: t.CDefine = 4 +@t.NoVTable class NameEntry(GSListNode[NameEntry]): Name: t.CChar | t.CPtr class VerifyResult: diff --git a/.transpyc_cache/46ea362b72c10a9e.pyi b/Test/LLvmLiteTest/temp/946e087da91aaada.pyi similarity index 99% rename from .transpyc_cache/46ea362b72c10a9e.pyi rename to Test/LLvmLiteTest/temp/946e087da91aaada.pyi index fbd9c3b..b1d244e 100644 --- a/.transpyc_cache/46ea362b72c10a9e.pyi +++ b/Test/LLvmLiteTest/temp/946e087da91aaada.pyi @@ -14,6 +14,7 @@ from .__types import LLVMType, TypePrint from .__values import Value, new_value, SSAValue from .__function import Function, BasicBlock, block_append_text, function_move_block_to_end, _ll_name_needs_quote +@t.NoVTable class IRBuilder: Pool: memhub.MemBuddy | t.CPtr Func: Function | t.CPtr @@ -161,6 +162,7 @@ def build_gep_array(builder: IRBuilder | t.CPtr, array_ty: LLVMType | t.CPtr, el def build_gep_struct(builder: IRBuilder | t.CPtr, struct_ty: LLVMType | t.CPtr, field_ty: LLVMType | t.CPtr, ptr: Value | t.CPtr, field_idx: t.CInt) -> Value | t.CPtr: pass +@t.NoVTable class PhiIncoming(GSListNode[PhiIncoming]): Val: Value | t.CPtr Block: BasicBlock | t.CPtr @@ -172,6 +174,7 @@ def new_phi_incoming(pool: memhub.MemBuddy | t.CPtr, val: Value | t.CPtr, block: def build_phi(builder: IRBuilder | t.CPtr, ty: LLVMType | t.CPtr, incoming_head: PhiIncoming | t.CPtr, count: t.CInt) -> Value | t.CPtr: pass +@t.NoVTable class SwitchCase(GSListNode[SwitchCase]): CaseVal: Value | t.CPtr Block: BasicBlock | t.CPtr diff --git a/Test/LLvmLiteTest/temp/9474791561654346.pyi b/Test/LLvmLiteTest/temp/9474791561654346.pyi new file mode 100644 index 0000000..1f82b1e --- /dev/null +++ b/Test/LLvmLiteTest/temp/9474791561654346.pyi @@ -0,0 +1,59 @@ +""" +Auto-generated Python stub file from string.py +Module: string +""" + + +from stdint import * +import t, c + +def strcpy(dest: str, src: str) -> str: pass + +def strcat(dest: str, src: str) -> str: pass + +def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass + +def strlen(src: str) -> t.CSizeT | t.CExport: pass + +def strcmp(str1: str, str2: str) -> t.CInt: pass + +def samestr(str1: str, str2: str) -> bool: pass + +def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass + +def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass + +def strchr(s: str, cr: t.CInt) -> str: pass + +def strrchr(s: str, cr: t.CInt) -> str: pass + +def strstr(s: str, needle: str) -> str: pass + +def strspn(s: str, skip: str) -> int: pass + +def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def atoi(src: str) -> t.CInt: pass + +def atoll(src: str) -> t.CInt64T: pass + +def atof(src: str) -> t.CDouble: pass + +def split(s: str, delim: str, result: t.CArray[str]) -> int: pass + + +ascii_lowercase: t.CExtern | str +ascii_uppercase: t.CExtern | str +ascii_letters: t.CExtern | str +digits: t.CExtern | str +hexdigits: t.CExtern | str +octdigits: t.CExtern | str +punctuation: t.CExtern | str +whitespace: t.CExtern | str +printable: t.CExtern | str \ No newline at end of file diff --git a/Test/LLvmLiteTest/temp/_phase1_manifest.json b/Test/LLvmLiteTest/temp/_phase1_manifest.json index 8bc1cfd..925ee33 100644 --- a/Test/LLvmLiteTest/temp/_phase1_manifest.json +++ b/Test/LLvmLiteTest/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\LLvmLiteTest\\App\\main.py": {"sha1": "3e914ffe8cc3c120", "mtime": 1783096320.3660233, "size": 50177}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\atom.py": {"sha1": "271ea3decb810db2", "mtime": 1782226548.693161, "size": 1290}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\linkedlist.py": {"sha1": "2d39c6c7d3557b3e", "mtime": 1782895405.2191627, "size": 16032}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\llvmlite\\__init__.py": {"sha1": "95394ca8da0f655a", "mtime": 1784089002.4168732, "size": 16338}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\llvmlite\\__builder.py": {"sha1": "46ea362b72c10a9e", "mtime": 1783657006.512418, "size": 48509}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\llvmlite\\__function.py": {"sha1": "e0b84369e50c937c", "mtime": 1784275582.4008405, "size": 16232}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\llvmlite\\__module.py": {"sha1": "21a7fcfc665f75ef", "mtime": 1784216086.0677392, "size": 20058}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\llvmlite\\__types.py": {"sha1": "455ff4e74c3dbfb0", "mtime": 1784088625.3087547, "size": 17902}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\llvmlite\\__values.py": {"sha1": "05c11f22675c60cb", "mtime": 1783584462.175312, "size": 6645}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\llvmlite\\__verify.py": {"sha1": "d4117f5e00a6c3b5", "mtime": 1783250231.8851368, "size": 14657}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\memhub.py": {"sha1": "ee084e9fc6ee413a", "mtime": 1784214242.4485993, "size": 17765}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdarg.py": {"sha1": "71e0a3ffcb3ebfad", "mtime": 1781258888.113146, "size": 277}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "ab6e54ba9a669f76", "mtime": 1783933178.7264287, "size": 9922}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperlib.py": {"sha1": "c3b259b4059f8668", "mtime": 1782821991.979496, "size": 56772}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\LLvmLiteTest\\App\\main.py": {"sha1": "5b8cf12a5862b640", "mtime": 1784384536.040362, "size": 50855}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\atom.py": {"sha1": "271ea3decb810db2", "mtime": 1782226548.693161, "size": 1290}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\linkedlist.py": {"sha1": "2d39c6c7d3557b3e", "mtime": 1782895405.2191627, "size": 16032}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\llvmlite\\__init__.py": {"sha1": "95394ca8da0f655a", "mtime": 1784089002.4168732, "size": 16338}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\llvmlite\\__builder.py": {"sha1": "946e087da91aaada", "mtime": 1784387312.9523027, "size": 48840}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\llvmlite\\__function.py": {"sha1": "4dad2ba72ed7ba09", "mtime": 1784387250.682758, "size": 16888}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\llvmlite\\__module.py": {"sha1": "21a7fcfc665f75ef", "mtime": 1784216086.0677392, "size": 20058}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\llvmlite\\__types.py": {"sha1": "15f1ded02f3aa5bc", "mtime": 1784387290.644663, "size": 17996}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\llvmlite\\__values.py": {"sha1": "f9e36e2cd6fa659f", "mtime": 1784387299.9652681, "size": 6739}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\llvmlite\\__verify.py": {"sha1": "6b3bc463fd044545", "mtime": 1784387320.0367622, "size": 14751}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\memhub.py": {"sha1": "f3560b99de458aec", "mtime": 1784375410.1873891, "size": 19458}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdarg.py": {"sha1": "71e0a3ffcb3ebfad", "mtime": 1781258888.113146, "size": 277}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "9474791561654346", "mtime": 1784387475.6951904, "size": 10395}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperlib.py": {"sha1": "c3b259b4059f8668", "mtime": 1782821991.979496, "size": 56772}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file diff --git a/Test/LLvmLiteTest/temp/_sha1_map.txt b/Test/LLvmLiteTest/temp/_sha1_map.txt index d07734f..1ad7f39 100644 --- a/Test/LLvmLiteTest/temp/_sha1_map.txt +++ b/Test/LLvmLiteTest/temp/_sha1_map.txt @@ -1,21 +1,21 @@ -05c11f22675c60cb:includes/llvmlite\__values.py +14d33679f7fadf1f:includes/testcheck.py +15f1ded02f3aa5bc:includes/llvmlite\__types.py 21a7fcfc665f75ef:includes/llvmlite\__module.py 271ea3decb810db2:includes/atom.py 2d39c6c7d3557b3e:includes/linkedlist.py -3e914ffe8cc3c120:main.py -455ff4e74c3dbfb0:includes/llvmlite\__types.py -46ea362b72c10a9e:includes/llvmlite\__builder.py +4dad2ba72ed7ba09:includes/llvmlite\__function.py +5b8cf12a5862b640:main.py +6b3bc463fd044545:includes/llvmlite\__verify.py 6f62fe05c5ea1ceb:includes/stdio.py 71e0a3ffcb3ebfad:includes/stdarg.py 7e529fe7a078cfef:includes/w32\win32base.py 90c53dd6db8d41cf:includes/stdlib.py +946e087da91aaada:includes/llvmlite\__builder.py +9474791561654346:includes/string.py 95394ca8da0f655a:includes/llvmlite\__init__.py -ab6e54ba9a669f76:includes/string.py bbdf3bbd4c3bc28c:includes/w32\win32console.py c3b259b4059f8668:includes/viperlib.py c9f4be41ca1cc2b4:includes/viperio.py -d4117f5e00a6c3b5:includes/llvmlite\__verify.py -dd3002730623424b:includes/testcheck.py -e0b84369e50c937c:includes/llvmlite\__function.py -ee084e9fc6ee413a:includes/memhub.py +f3560b99de458aec:includes/memhub.py f5522571bcce7bcb:includes/stdint.py +f9e36e2cd6fa659f:includes/llvmlite\__values.py diff --git a/Test/LLvmLiteTest/temp/ab6e54ba9a669f76.pyi b/Test/LLvmLiteTest/temp/ab6e54ba9a669f76.pyi deleted file mode 100644 index 4fc3440..0000000 --- a/Test/LLvmLiteTest/temp/ab6e54ba9a669f76.pyi +++ /dev/null @@ -1,48 +0,0 @@ -""" -Auto-generated Python stub file from string.py -Module: string -""" - - -from stdint import * -import t, c - -def strcpy(dest: str, src: str) -> str: pass - -def strcat(dest: str, src: str) -> str: pass - -def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass - -def strlen(src: str) -> t.CSizeT | t.CExport: pass - -def strcmp(str1: str, str2: str) -> t.CInt: pass - -def samestr(str1: str, str2: str) -> bool: pass - -def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass - -def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass - -def strchr(s: str, cr: t.CInt) -> str: pass - -def strrchr(s: str, cr: t.CInt) -> str: pass - -def strstr(s: str, needle: str) -> str: pass - -def strspn(s: str, skip: str) -> int: pass - -def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def atoi(src: str) -> t.CInt: pass - -def atoll(src: str) -> t.CInt64T: pass - -def atof(src: str) -> t.CDouble: pass - -def split(s: str, delim: str, result: t.CArray[str]) -> int: pass diff --git a/Test/LLvmLiteTest/temp/d4117f5e00a6c3b5.pyi b/Test/LLvmLiteTest/temp/d4117f5e00a6c3b5.pyi deleted file mode 100644 index ee44bdb..0000000 --- a/Test/LLvmLiteTest/temp/d4117f5e00a6c3b5.pyi +++ /dev/null @@ -1,62 +0,0 @@ -""" -Auto-generated Python stub file from llvmlite.__verify.py -Module: llvmlite.__verify -""" - - -import t, c -from stdint import * -import string -import viperlib -import memhub -from linkedlist import GSListNode, GSList -from .__function import Function, BasicBlock, Line, Param -from .__module import LLVMModule - -VERIFY_OK: t.CDefine = 0 -VERIFY_ERR_NO_TERMINATOR: t.CDefine = 1 -VERIFY_ERR_DUPLICATE_DEF: t.CDefine = 2 -VERIFY_ERR_UNDEFINED_USE: t.CDefine = 3 -VERIFY_ERR_PHI_NOT_FIRST: t.CDefine = 4 - -class NameEntry(GSListNode[NameEntry]): - Name: t.CChar | t.CPtr -class VerifyResult: - ErrorCount: t.CInt - WarningCount: t.CInt - ErrorCode: t.CInt - ErrorBuf: t.CChar | t.CPtr - ErrorBufSize: t.CSizeT - -def _new_verify_result(pool: memhub.MemBuddy | t.CPtr, buf_size: t.CSizeT) -> VerifyResult | t.CPtr: pass - -def _report_error(result: VerifyResult | t.CPtr, code: t.CInt, msg: t.CChar | t.CPtr) -> t.CInt: pass - -def _append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass - -def _new_name_table(pool: memhub.MemBuddy | t.CPtr) -> GSList[NameEntry] | t.CPtr: pass - - -NENTRY_SIZE: t.CDefine = 16 - -def _name_table_add(table: GSList[NameEntry] | t.CPtr, pool: memhub.MemBuddy | t.CPtr, name: t.CChar | t.CPtr) -> t.CInt: pass - -def _name_table_contains(table: GSList[NameEntry] | t.CPtr, name: t.CChar | t.CPtr) -> t.CInt: pass - -def _is_char_name(ch: t.CChar) -> t.CInt: pass - -def _extract_def_name(pool: memhub.MemBuddy | t.CPtr, text: t.CChar | t.CPtr) -> t.CChar | t.CPtr: pass - -def _is_terminator(text: t.CChar | t.CPtr) -> t.CInt: pass - -def _is_phi(text: t.CChar | t.CPtr) -> t.CInt: pass - -def _check_uses_in_line(table: GSList[NameEntry] | t.CPtr, text: t.CChar | t.CPtr, def_name: t.CChar | t.CPtr) -> t.CInt: pass - -def _name_matches_at(text: t.CChar | t.CPtr, start: t.CInt, length: t.CInt, table: GSList[NameEntry] | t.CPtr) -> t.CInt: pass - -def _str_matches_at(text: t.CChar | t.CPtr, start: t.CInt, length: t.CInt, target: t.CChar | t.CPtr) -> t.CInt: pass - -def verify_function(pool: memhub.MemBuddy | t.CPtr, func: Function | t.CPtr, result: VerifyResult | t.CPtr) -> t.CInt: pass - -def verify_module(pool: memhub.MemBuddy | t.CPtr, mod: LLVMModule | t.CPtr, result: VerifyResult | t.CPtr) -> t.CInt: pass diff --git a/Test/LLvmLiteTest/temp/ee084e9fc6ee413a.pyi b/Test/LLvmLiteTest/temp/ee084e9fc6ee413a.pyi deleted file mode 100644 index 45551ef..0000000 --- a/Test/LLvmLiteTest/temp/ee084e9fc6ee413a.pyi +++ /dev/null @@ -1,81 +0,0 @@ -""" -Auto-generated Python stub file from memhub.py -Module: memhub -""" - - -import t, c -from stdint import * -import string -import atom -import viperio - -MEMHUB_ALIGN: t.CDefine = 8 -MEMSLAB_MIN_BLOCK: t.CDefine = 16 -MEMSLAB_BITMAP_BYTES: t.CDefine = 256 -MEMBUDDY_MIN_BLOCK: t.CDefine = 32 -MEMBUDDY_MAX_ORDERS: t.CDefine = 32 -MEMBUDDY_HEADER_SIZE: t.CDefine = 8 - -def _align_up(val: t.CSizeT, align: t.CSizeT) -> t.CSizeT: pass - -def _largest_pow2_le(val: t.CSizeT) -> t.CSizeT: pass - -def _block_size_at_order(order: t.CInt) -> t.CSizeT: pass - - -@t.CVTable -class MemManager: - __provides__: list[str] = ['__memmgr__'] - base: t.CVoid | t.CPtr - size: t.CSizeT - def __init__(self: MemManager, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemManager, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemManager, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemManager) -> t.CInt: pass - def calloc(self: MemManager, count: t.CSizeT, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def realloc(self: MemManager, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def __enter__(self: MemManager) -> 'MemManager' | t.CPtr: pass - def __exit__(self: MemManager) -> t.CInt: pass - def alloc_buf(self: MemManager, capacity: t.CSizeT) -> viperio.Buf | t.CPtr: pass -class MemPool(MemManager): - offset: t.CSizeT - high_water: t.CSizeT - def __init__(self: MemPool, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemPool, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemPool, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemPool) -> t.CInt: pass -class MemSlab(MemManager): - block_size: t.CSizeT - block_count: t.CSizeT - used_count: t.CSizeT - free_list: t.CVoid | t.CPtr - alloc_map: t.CUInt8T | t.CPtr - alloc_map_size: t.CSizeT - usable: t.CVoid | t.CPtr - usable_size: t.CSizeT - def __init__(self: MemSlab, base: t.CVoid | t.CPtr, size: t.CSizeT, block_size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemSlab, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemSlab, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemSlab) -> t.CInt: pass -class MemBuddy(MemManager): - max_order: t.CInt - free_lists: t.CUInt64T | t.CPtr - lock_val: t.CVolatile | t.CInt - usable: t.CVoid | t.CPtr - usable_size: t.CSizeT - def __init__(self: MemBuddy, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def _fl_push(self: MemBuddy, order: t.CInt, block: t.CVoid | t.CPtr) -> t.CInt: pass - def _fl_pop(self: MemBuddy, order: t.CInt) -> t.CVoid | t.CPtr: pass - def _fl_find_and_remove(self: MemBuddy, order: t.CInt, target: t.CVoid | t.CPtr) -> t.CInt: pass - def _buddy_of(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CVoid | t.CPtr: pass - def _order_for_size(self: MemBuddy, size: t.CSizeT) -> t.CInt: pass - def _split_to_order(self: MemBuddy, to_order: t.CInt) -> t.CVoid | t.CPtr: pass - def _coalesce(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CInt: pass - def _is_valid_ptr(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def _lock(self: MemBuddy) -> t.CInt: pass - def _unlock(self: MemBuddy) -> t.CInt: pass - def alloc(self: MemBuddy, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemBuddy) -> t.CInt: pass - def realloc(self: MemBuddy, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass \ No newline at end of file diff --git a/Test/LLvmLiteTest/temp/f3560b99de458aec.pyi b/Test/LLvmLiteTest/temp/f3560b99de458aec.pyi new file mode 100644 index 0000000..84f0bbf --- /dev/null +++ b/Test/LLvmLiteTest/temp/f3560b99de458aec.pyi @@ -0,0 +1,86 @@ +""" +Auto-generated Python stub file from memhub.py +Module: memhub +""" + + +import t, c +from stdint import * +import string +import atom +import viperio + +MEMHUB_ALIGN: t.CDefine = 8 +MEMSLAB_MIN_BLOCK: t.CDefine = 16 +MEMSLAB_BITMAP_BYTES: t.CDefine = 256 +MEMBUDDY_MIN_BLOCK: t.CDefine = 32 +MEMBUDDY_MAX_ORDERS: t.CDefine = 32 +MEMBUDDY_HEADER_SIZE: t.CDefine = 8 + +def _align_up(val: t.CSizeT, align: t.CSizeT) -> t.CSizeT: pass + +def _largest_pow2_le(val: t.CSizeT) -> t.CSizeT: pass + +def _block_size_at_order(order: t.CInt) -> t.CSizeT: pass + + +@t.CVTable +class MemManager: + __provides__: list[str] = ['__memmgr__'] + base: t.CVoid | t.CPtr + size: t.CSizeT + def __init__(self: MemManager, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemManager, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemManager, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemManager) -> t.CInt: pass + def calloc(self: MemManager, count: t.CSizeT, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def realloc(self: MemManager, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def __enter__(self: MemManager) -> 'MemManager' | t.CPtr: pass + def __exit__(self: MemManager) -> t.CInt: pass + def alloc_buf(self: MemManager, capacity: t.CSizeT) -> viperio.Buf | t.CPtr: pass +class MemPool(MemManager): + offset: t.CSizeT + high_water: t.CSizeT + def __init__(self: MemPool, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemPool, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemPool, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemPool) -> t.CInt: pass +class MemSlab(MemManager): + block_size: t.CSizeT + block_count: t.CSizeT + used_count: t.CSizeT + free_list: t.CVoid | t.CPtr + alloc_map: t.CUInt8T | t.CPtr + alloc_map_size: t.CSizeT + usable: t.CVoid | t.CPtr + usable_size: t.CSizeT + def __init__(self: MemSlab, base: t.CVoid | t.CPtr, size: t.CSizeT, block_size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemSlab, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemSlab, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemSlab) -> t.CInt: pass +class MemBuddy(MemManager): + max_order: t.CInt + free_lists: t.CUInt64T | t.CPtr + lock_val: t.CVolatile | t.CInt + usable: t.CVoid | t.CPtr + usable_size: t.CSizeT + def __init__(self: MemBuddy, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def _fl_push(self: MemBuddy, order: t.CInt, block: t.CVoid | t.CPtr) -> t.CInt: pass + def _fl_pop(self: MemBuddy, order: t.CInt) -> t.CVoid | t.CPtr: pass + def _fl_find_and_remove(self: MemBuddy, order: t.CInt, target: t.CVoid | t.CPtr) -> t.CInt: pass + def _buddy_of(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CVoid | t.CPtr: pass + def _order_for_size(self: MemBuddy, size: t.CSizeT) -> t.CInt: pass + def _split_to_order(self: MemBuddy, to_order: t.CInt) -> t.CVoid | t.CPtr: pass + def _coalesce(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CInt: pass + def _is_valid_ptr(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def _lock(self: MemBuddy) -> t.CInt: pass + def _unlock(self: MemBuddy) -> t.CInt: pass + def alloc(self: MemBuddy, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemBuddy) -> t.CInt: pass + def realloc(self: MemBuddy, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + @property + def mem_size(self: MemBuddy) -> t.CSizeT: pass + def stats(self: MemBuddy) -> t.CSizeT: pass + def free_count(self: MemBuddy) -> t.CSizeT: pass + def self_check(self: MemBuddy) -> t.CInt: pass \ No newline at end of file diff --git a/Test/LLvmLiteTest/temp/05c11f22675c60cb.pyi b/Test/LLvmLiteTest/temp/f9e36e2cd6fa659f.pyi similarity index 99% rename from Test/LLvmLiteTest/temp/05c11f22675c60cb.pyi rename to Test/LLvmLiteTest/temp/f9e36e2cd6fa659f.pyi index 3520489..f159bb6 100644 --- a/Test/LLvmLiteTest/temp/05c11f22675c60cb.pyi +++ b/Test/LLvmLiteTest/temp/f9e36e2cd6fa659f.pyi @@ -12,6 +12,7 @@ import memhub from linkedlist import GSListNode from .__types import LLVMType, TypePrint +@t.NoVTable class Value(GSListNode[Value]): Ty: LLVMType | t.CPtr Name: t.CChar | t.CPtr diff --git a/Test/ListTest/output/1ff2c5eb32359e40.deps.json b/Test/ListTest/output/1ff2c5eb32359e40.deps.json index 82601c2..38ec49b 100644 --- a/Test/ListTest/output/1ff2c5eb32359e40.deps.json +++ b/Test/ListTest/output/1ff2c5eb32359e40.deps.json @@ -1 +1 @@ -{"atom": "271ea3decb810db2", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperio": "c9f4be41ca1cc2b4", "testcheck": "dd3002730623424b", "memhub": "ee084e9fc6ee413a", "_list": "f2ecbf8ced20575c", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"testcheck": "14d33679f7fadf1f", "atom": "271ea3decb810db2", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperio": "c9f4be41ca1cc2b4", "_list": "f2ecbf8ced20575c", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/ListTest/temp/dd3002730623424b.pyi b/Test/ListTest/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/ListTest/temp/dd3002730623424b.pyi rename to Test/ListTest/temp/14d33679f7fadf1f.pyi diff --git a/Test/ListTest/temp/9474791561654346.pyi b/Test/ListTest/temp/9474791561654346.pyi new file mode 100644 index 0000000..1f82b1e --- /dev/null +++ b/Test/ListTest/temp/9474791561654346.pyi @@ -0,0 +1,59 @@ +""" +Auto-generated Python stub file from string.py +Module: string +""" + + +from stdint import * +import t, c + +def strcpy(dest: str, src: str) -> str: pass + +def strcat(dest: str, src: str) -> str: pass + +def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass + +def strlen(src: str) -> t.CSizeT | t.CExport: pass + +def strcmp(str1: str, str2: str) -> t.CInt: pass + +def samestr(str1: str, str2: str) -> bool: pass + +def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass + +def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass + +def strchr(s: str, cr: t.CInt) -> str: pass + +def strrchr(s: str, cr: t.CInt) -> str: pass + +def strstr(s: str, needle: str) -> str: pass + +def strspn(s: str, skip: str) -> int: pass + +def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def atoi(src: str) -> t.CInt: pass + +def atoll(src: str) -> t.CInt64T: pass + +def atof(src: str) -> t.CDouble: pass + +def split(s: str, delim: str, result: t.CArray[str]) -> int: pass + + +ascii_lowercase: t.CExtern | str +ascii_uppercase: t.CExtern | str +ascii_letters: t.CExtern | str +digits: t.CExtern | str +hexdigits: t.CExtern | str +octdigits: t.CExtern | str +punctuation: t.CExtern | str +whitespace: t.CExtern | str +printable: t.CExtern | str \ No newline at end of file diff --git a/Test/ListTest/temp/_phase1_manifest.json b/Test/ListTest/temp/_phase1_manifest.json index 6ebd48c..55a6f17 100644 --- a/Test/ListTest/temp/_phase1_manifest.json +++ b/Test/ListTest/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\ListTest\\App\\main.py": {"sha1": "1ff2c5eb32359e40", "mtime": 1782828109.658356, "size": 2856}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\_list.py": {"sha1": "f2ecbf8ced20575c", "mtime": 1784203829.5212443, "size": 3277}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\atom.py": {"sha1": "271ea3decb810db2", "mtime": 1782226548.693161, "size": 1290}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\memhub.py": {"sha1": "ee084e9fc6ee413a", "mtime": 1784214242.4485993, "size": 17765}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "ab6e54ba9a669f76", "mtime": 1783933178.7264287, "size": 9922}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\ListTest\\App\\main.py": {"sha1": "1ff2c5eb32359e40", "mtime": 1782828109.658356, "size": 2856}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\_list.py": {"sha1": "f2ecbf8ced20575c", "mtime": 1784203829.5212443, "size": 3277}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\atom.py": {"sha1": "271ea3decb810db2", "mtime": 1782226548.693161, "size": 1290}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\memhub.py": {"sha1": "f3560b99de458aec", "mtime": 1784375410.1873891, "size": 19458}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "9474791561654346", "mtime": 1784387475.6951904, "size": 10395}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file diff --git a/Test/ListTest/temp/_sha1_map.txt b/Test/ListTest/temp/_sha1_map.txt index 76e8bdb..1a6c65c 100644 --- a/Test/ListTest/temp/_sha1_map.txt +++ b/Test/ListTest/temp/_sha1_map.txt @@ -1,12 +1,12 @@ +14d33679f7fadf1f:includes/testcheck.py 1ff2c5eb32359e40:main.py 271ea3decb810db2:includes/atom.py 6f62fe05c5ea1ceb:includes/stdio.py 7e529fe7a078cfef:includes/w32\win32base.py 90c53dd6db8d41cf:includes/stdlib.py -ab6e54ba9a669f76:includes/string.py +9474791561654346:includes/string.py bbdf3bbd4c3bc28c:includes/w32\win32console.py c9f4be41ca1cc2b4:includes/viperio.py -dd3002730623424b:includes/testcheck.py -ee084e9fc6ee413a:includes/memhub.py f2ecbf8ced20575c:includes/_list.py +f3560b99de458aec:includes/memhub.py f5522571bcce7bcb:includes/stdint.py diff --git a/Test/ListTest/temp/ab6e54ba9a669f76.pyi b/Test/ListTest/temp/ab6e54ba9a669f76.pyi deleted file mode 100644 index 4fc3440..0000000 --- a/Test/ListTest/temp/ab6e54ba9a669f76.pyi +++ /dev/null @@ -1,48 +0,0 @@ -""" -Auto-generated Python stub file from string.py -Module: string -""" - - -from stdint import * -import t, c - -def strcpy(dest: str, src: str) -> str: pass - -def strcat(dest: str, src: str) -> str: pass - -def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass - -def strlen(src: str) -> t.CSizeT | t.CExport: pass - -def strcmp(str1: str, str2: str) -> t.CInt: pass - -def samestr(str1: str, str2: str) -> bool: pass - -def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass - -def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass - -def strchr(s: str, cr: t.CInt) -> str: pass - -def strrchr(s: str, cr: t.CInt) -> str: pass - -def strstr(s: str, needle: str) -> str: pass - -def strspn(s: str, skip: str) -> int: pass - -def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def atoi(src: str) -> t.CInt: pass - -def atoll(src: str) -> t.CInt64T: pass - -def atof(src: str) -> t.CDouble: pass - -def split(s: str, delim: str, result: t.CArray[str]) -> int: pass diff --git a/Test/ListTest/temp/ee084e9fc6ee413a.pyi b/Test/ListTest/temp/ee084e9fc6ee413a.pyi deleted file mode 100644 index 45551ef..0000000 --- a/Test/ListTest/temp/ee084e9fc6ee413a.pyi +++ /dev/null @@ -1,81 +0,0 @@ -""" -Auto-generated Python stub file from memhub.py -Module: memhub -""" - - -import t, c -from stdint import * -import string -import atom -import viperio - -MEMHUB_ALIGN: t.CDefine = 8 -MEMSLAB_MIN_BLOCK: t.CDefine = 16 -MEMSLAB_BITMAP_BYTES: t.CDefine = 256 -MEMBUDDY_MIN_BLOCK: t.CDefine = 32 -MEMBUDDY_MAX_ORDERS: t.CDefine = 32 -MEMBUDDY_HEADER_SIZE: t.CDefine = 8 - -def _align_up(val: t.CSizeT, align: t.CSizeT) -> t.CSizeT: pass - -def _largest_pow2_le(val: t.CSizeT) -> t.CSizeT: pass - -def _block_size_at_order(order: t.CInt) -> t.CSizeT: pass - - -@t.CVTable -class MemManager: - __provides__: list[str] = ['__memmgr__'] - base: t.CVoid | t.CPtr - size: t.CSizeT - def __init__(self: MemManager, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemManager, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemManager, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemManager) -> t.CInt: pass - def calloc(self: MemManager, count: t.CSizeT, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def realloc(self: MemManager, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def __enter__(self: MemManager) -> 'MemManager' | t.CPtr: pass - def __exit__(self: MemManager) -> t.CInt: pass - def alloc_buf(self: MemManager, capacity: t.CSizeT) -> viperio.Buf | t.CPtr: pass -class MemPool(MemManager): - offset: t.CSizeT - high_water: t.CSizeT - def __init__(self: MemPool, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemPool, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemPool, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemPool) -> t.CInt: pass -class MemSlab(MemManager): - block_size: t.CSizeT - block_count: t.CSizeT - used_count: t.CSizeT - free_list: t.CVoid | t.CPtr - alloc_map: t.CUInt8T | t.CPtr - alloc_map_size: t.CSizeT - usable: t.CVoid | t.CPtr - usable_size: t.CSizeT - def __init__(self: MemSlab, base: t.CVoid | t.CPtr, size: t.CSizeT, block_size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemSlab, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemSlab, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemSlab) -> t.CInt: pass -class MemBuddy(MemManager): - max_order: t.CInt - free_lists: t.CUInt64T | t.CPtr - lock_val: t.CVolatile | t.CInt - usable: t.CVoid | t.CPtr - usable_size: t.CSizeT - def __init__(self: MemBuddy, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def _fl_push(self: MemBuddy, order: t.CInt, block: t.CVoid | t.CPtr) -> t.CInt: pass - def _fl_pop(self: MemBuddy, order: t.CInt) -> t.CVoid | t.CPtr: pass - def _fl_find_and_remove(self: MemBuddy, order: t.CInt, target: t.CVoid | t.CPtr) -> t.CInt: pass - def _buddy_of(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CVoid | t.CPtr: pass - def _order_for_size(self: MemBuddy, size: t.CSizeT) -> t.CInt: pass - def _split_to_order(self: MemBuddy, to_order: t.CInt) -> t.CVoid | t.CPtr: pass - def _coalesce(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CInt: pass - def _is_valid_ptr(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def _lock(self: MemBuddy) -> t.CInt: pass - def _unlock(self: MemBuddy) -> t.CInt: pass - def alloc(self: MemBuddy, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemBuddy) -> t.CInt: pass - def realloc(self: MemBuddy, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass \ No newline at end of file diff --git a/Test/ListTest/temp/f3560b99de458aec.pyi b/Test/ListTest/temp/f3560b99de458aec.pyi new file mode 100644 index 0000000..84f0bbf --- /dev/null +++ b/Test/ListTest/temp/f3560b99de458aec.pyi @@ -0,0 +1,86 @@ +""" +Auto-generated Python stub file from memhub.py +Module: memhub +""" + + +import t, c +from stdint import * +import string +import atom +import viperio + +MEMHUB_ALIGN: t.CDefine = 8 +MEMSLAB_MIN_BLOCK: t.CDefine = 16 +MEMSLAB_BITMAP_BYTES: t.CDefine = 256 +MEMBUDDY_MIN_BLOCK: t.CDefine = 32 +MEMBUDDY_MAX_ORDERS: t.CDefine = 32 +MEMBUDDY_HEADER_SIZE: t.CDefine = 8 + +def _align_up(val: t.CSizeT, align: t.CSizeT) -> t.CSizeT: pass + +def _largest_pow2_le(val: t.CSizeT) -> t.CSizeT: pass + +def _block_size_at_order(order: t.CInt) -> t.CSizeT: pass + + +@t.CVTable +class MemManager: + __provides__: list[str] = ['__memmgr__'] + base: t.CVoid | t.CPtr + size: t.CSizeT + def __init__(self: MemManager, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemManager, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemManager, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemManager) -> t.CInt: pass + def calloc(self: MemManager, count: t.CSizeT, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def realloc(self: MemManager, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def __enter__(self: MemManager) -> 'MemManager' | t.CPtr: pass + def __exit__(self: MemManager) -> t.CInt: pass + def alloc_buf(self: MemManager, capacity: t.CSizeT) -> viperio.Buf | t.CPtr: pass +class MemPool(MemManager): + offset: t.CSizeT + high_water: t.CSizeT + def __init__(self: MemPool, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemPool, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemPool, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemPool) -> t.CInt: pass +class MemSlab(MemManager): + block_size: t.CSizeT + block_count: t.CSizeT + used_count: t.CSizeT + free_list: t.CVoid | t.CPtr + alloc_map: t.CUInt8T | t.CPtr + alloc_map_size: t.CSizeT + usable: t.CVoid | t.CPtr + usable_size: t.CSizeT + def __init__(self: MemSlab, base: t.CVoid | t.CPtr, size: t.CSizeT, block_size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemSlab, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemSlab, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemSlab) -> t.CInt: pass +class MemBuddy(MemManager): + max_order: t.CInt + free_lists: t.CUInt64T | t.CPtr + lock_val: t.CVolatile | t.CInt + usable: t.CVoid | t.CPtr + usable_size: t.CSizeT + def __init__(self: MemBuddy, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def _fl_push(self: MemBuddy, order: t.CInt, block: t.CVoid | t.CPtr) -> t.CInt: pass + def _fl_pop(self: MemBuddy, order: t.CInt) -> t.CVoid | t.CPtr: pass + def _fl_find_and_remove(self: MemBuddy, order: t.CInt, target: t.CVoid | t.CPtr) -> t.CInt: pass + def _buddy_of(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CVoid | t.CPtr: pass + def _order_for_size(self: MemBuddy, size: t.CSizeT) -> t.CInt: pass + def _split_to_order(self: MemBuddy, to_order: t.CInt) -> t.CVoid | t.CPtr: pass + def _coalesce(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CInt: pass + def _is_valid_ptr(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def _lock(self: MemBuddy) -> t.CInt: pass + def _unlock(self: MemBuddy) -> t.CInt: pass + def alloc(self: MemBuddy, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemBuddy) -> t.CInt: pass + def realloc(self: MemBuddy, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + @property + def mem_size(self: MemBuddy) -> t.CSizeT: pass + def stats(self: MemBuddy) -> t.CSizeT: pass + def free_count(self: MemBuddy) -> t.CSizeT: pass + def self_check(self: MemBuddy) -> t.CInt: pass \ No newline at end of file diff --git a/Test/LoopTest/output/86e203c56ae4de20.deps.json b/Test/LoopTest/output/86e203c56ae4de20.deps.json index f02d7ee..2a27f59 100644 --- a/Test/LoopTest/output/86e203c56ae4de20.deps.json +++ b/Test/LoopTest/output/86e203c56ae4de20.deps.json @@ -1 +1 @@ -{"stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "testcheck": "dd3002730623424b", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"testcheck": "14d33679f7fadf1f", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/LoopTest/temp/dd3002730623424b.pyi b/Test/LoopTest/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/LoopTest/temp/dd3002730623424b.pyi rename to Test/LoopTest/temp/14d33679f7fadf1f.pyi diff --git a/Test/LoopTest/temp/_phase1_manifest.json b/Test/LoopTest/temp/_phase1_manifest.json index da502a7..058e1f6 100644 --- a/Test/LoopTest/temp/_phase1_manifest.json +++ b/Test/LoopTest/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\LoopTest\\App\\main.py": {"sha1": "86e203c56ae4de20", "mtime": 1782109374.0530808, "size": 2366}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\LoopTest\\App\\main.py": {"sha1": "86e203c56ae4de20", "mtime": 1782109374.0530808, "size": 2366}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file diff --git a/Test/LoopTest/temp/_sha1_map.txt b/Test/LoopTest/temp/_sha1_map.txt index 12dd32b..011ebb0 100644 --- a/Test/LoopTest/temp/_sha1_map.txt +++ b/Test/LoopTest/temp/_sha1_map.txt @@ -1,6 +1,6 @@ +14d33679f7fadf1f:includes/testcheck.py 6f62fe05c5ea1ceb:includes/stdio.py 7e529fe7a078cfef:includes/w32\win32base.py 86e203c56ae4de20:main.py bbdf3bbd4c3bc28c:includes/w32\win32console.py -dd3002730623424b:includes/testcheck.py f5522571bcce7bcb:includes/stdint.py diff --git a/Test/MemhubTest/App/main.py b/Test/MemhubTest/App/main.py index 392f3f8..98f1704 100644 --- a/Test/MemhubTest/App/main.py +++ b/Test/MemhubTest/App/main.py @@ -73,7 +73,7 @@ def main() -> int: b3: t.CVoid | t.CPtr = buddy.alloc(100) testcheck.check(b3 is not None, "MemBuddy alloc after free", "FAIL") # realloc 增长 - b4: t.CVoid | t.CPtr = buddy.realloc(b2, 0, 400) + b4: t.CVoid | t.CPtr = buddy.realloc(b2, 400) testcheck.check(b4 is not None, "MemBuddy realloc 200->400", "FAIL") # ========== 多态分派 (核心测试) ========== diff --git a/Test/MemhubTest/output/3ff210e50f345c7c.deps.json b/Test/MemhubTest/output/3ff210e50f345c7c.deps.json new file mode 100644 index 0000000..2cd406c --- /dev/null +++ b/Test/MemhubTest/output/3ff210e50f345c7c.deps.json @@ -0,0 +1 @@ +{"testcheck": "14d33679f7fadf1f", "atom": "271ea3decb810db2", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperio": "c9f4be41ca1cc2b4", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/MemhubTest/output/4ebd3745aa9cf570.deps.json b/Test/MemhubTest/output/4ebd3745aa9cf570.deps.json deleted file mode 100644 index feddefe..0000000 --- a/Test/MemhubTest/output/4ebd3745aa9cf570.deps.json +++ /dev/null @@ -1 +0,0 @@ -{"atom": "271ea3decb810db2", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperio": "c9f4be41ca1cc2b4", "testcheck": "dd3002730623424b", "memhub": "ee084e9fc6ee413a", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/MemhubTest/temp/dd3002730623424b.pyi b/Test/MemhubTest/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/MemhubTest/temp/dd3002730623424b.pyi rename to Test/MemhubTest/temp/14d33679f7fadf1f.pyi diff --git a/.transpyc_cache/03b24bc1d9327958.doc.json b/Test/MemhubTest/temp/3ff210e50f345c7c.doc.json similarity index 100% rename from .transpyc_cache/03b24bc1d9327958.doc.json rename to Test/MemhubTest/temp/3ff210e50f345c7c.doc.json diff --git a/.transpyc_cache/4ebd3745aa9cf570.pyi b/Test/MemhubTest/temp/3ff210e50f345c7c.pyi similarity index 100% rename from .transpyc_cache/4ebd3745aa9cf570.pyi rename to Test/MemhubTest/temp/3ff210e50f345c7c.pyi diff --git a/Test/MemhubTest/temp/4ebd3745aa9cf570.doc.json b/Test/MemhubTest/temp/4ebd3745aa9cf570.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/Test/MemhubTest/temp/4ebd3745aa9cf570.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/Test/MemhubTest/temp/4ebd3745aa9cf570.pyi b/Test/MemhubTest/temp/4ebd3745aa9cf570.pyi deleted file mode 100644 index e6450ad..0000000 --- a/Test/MemhubTest/temp/4ebd3745aa9cf570.pyi +++ /dev/null @@ -1,19 +0,0 @@ -""" -Auto-generated Python stub file from main.py -Module: main -""" - - -from stdint import * -import t, c -import stdio -import stdlib -import testcheck -import memhub - -def test_polymorphic(mgr: memhub.MemManager | t.CPtr, size: t.CSizeT) -> t.CInt: pass - -def test_calloc_polymorphic(mgr: memhub.MemManager | t.CPtr) -> t.CInt: pass - -@t.CExport -def main() -> int: pass diff --git a/Test/MemhubTest/temp/9474791561654346.pyi b/Test/MemhubTest/temp/9474791561654346.pyi new file mode 100644 index 0000000..1f82b1e --- /dev/null +++ b/Test/MemhubTest/temp/9474791561654346.pyi @@ -0,0 +1,59 @@ +""" +Auto-generated Python stub file from string.py +Module: string +""" + + +from stdint import * +import t, c + +def strcpy(dest: str, src: str) -> str: pass + +def strcat(dest: str, src: str) -> str: pass + +def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass + +def strlen(src: str) -> t.CSizeT | t.CExport: pass + +def strcmp(str1: str, str2: str) -> t.CInt: pass + +def samestr(str1: str, str2: str) -> bool: pass + +def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass + +def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass + +def strchr(s: str, cr: t.CInt) -> str: pass + +def strrchr(s: str, cr: t.CInt) -> str: pass + +def strstr(s: str, needle: str) -> str: pass + +def strspn(s: str, skip: str) -> int: pass + +def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def atoi(src: str) -> t.CInt: pass + +def atoll(src: str) -> t.CInt64T: pass + +def atof(src: str) -> t.CDouble: pass + +def split(s: str, delim: str, result: t.CArray[str]) -> int: pass + + +ascii_lowercase: t.CExtern | str +ascii_uppercase: t.CExtern | str +ascii_letters: t.CExtern | str +digits: t.CExtern | str +hexdigits: t.CExtern | str +octdigits: t.CExtern | str +punctuation: t.CExtern | str +whitespace: t.CExtern | str +printable: t.CExtern | str \ No newline at end of file diff --git a/Test/MemhubTest/temp/_phase1_manifest.json b/Test/MemhubTest/temp/_phase1_manifest.json index 980d3ac..368d034 100644 --- a/Test/MemhubTest/temp/_phase1_manifest.json +++ b/Test/MemhubTest/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\MemhubTest\\App\\main.py": {"sha1": "4ebd3745aa9cf570", "mtime": 1782824910.9155376, "size": 3926}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\atom.py": {"sha1": "271ea3decb810db2", "mtime": 1782226548.693161, "size": 1290}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\memhub.py": {"sha1": "ee084e9fc6ee413a", "mtime": 1784214242.4485993, "size": 17765}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "ab6e54ba9a669f76", "mtime": 1783933178.7264287, "size": 9922}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\MemhubTest\\App\\main.py": {"sha1": "3ff210e50f345c7c", "mtime": 1784375438.1600194, "size": 3923}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\atom.py": {"sha1": "271ea3decb810db2", "mtime": 1782226548.693161, "size": 1290}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\memhub.py": {"sha1": "f3560b99de458aec", "mtime": 1784375410.1873891, "size": 19458}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "9474791561654346", "mtime": 1784387475.6951904, "size": 10395}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file diff --git a/Test/MemhubTest/temp/_sha1_map.txt b/Test/MemhubTest/temp/_sha1_map.txt index adcf586..df41167 100644 --- a/Test/MemhubTest/temp/_sha1_map.txt +++ b/Test/MemhubTest/temp/_sha1_map.txt @@ -1,11 +1,11 @@ +14d33679f7fadf1f:includes/testcheck.py 271ea3decb810db2:includes/atom.py -4ebd3745aa9cf570:main.py +3ff210e50f345c7c:main.py 6f62fe05c5ea1ceb:includes/stdio.py 7e529fe7a078cfef:includes/w32\win32base.py 90c53dd6db8d41cf:includes/stdlib.py -ab6e54ba9a669f76:includes/string.py +9474791561654346:includes/string.py bbdf3bbd4c3bc28c:includes/w32\win32console.py c9f4be41ca1cc2b4:includes/viperio.py -dd3002730623424b:includes/testcheck.py -ee084e9fc6ee413a:includes/memhub.py +f3560b99de458aec:includes/memhub.py f5522571bcce7bcb:includes/stdint.py diff --git a/Test/MemhubTest/temp/ab6e54ba9a669f76.pyi b/Test/MemhubTest/temp/ab6e54ba9a669f76.pyi deleted file mode 100644 index 4fc3440..0000000 --- a/Test/MemhubTest/temp/ab6e54ba9a669f76.pyi +++ /dev/null @@ -1,48 +0,0 @@ -""" -Auto-generated Python stub file from string.py -Module: string -""" - - -from stdint import * -import t, c - -def strcpy(dest: str, src: str) -> str: pass - -def strcat(dest: str, src: str) -> str: pass - -def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass - -def strlen(src: str) -> t.CSizeT | t.CExport: pass - -def strcmp(str1: str, str2: str) -> t.CInt: pass - -def samestr(str1: str, str2: str) -> bool: pass - -def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass - -def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass - -def strchr(s: str, cr: t.CInt) -> str: pass - -def strrchr(s: str, cr: t.CInt) -> str: pass - -def strstr(s: str, needle: str) -> str: pass - -def strspn(s: str, skip: str) -> int: pass - -def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def atoi(src: str) -> t.CInt: pass - -def atoll(src: str) -> t.CInt64T: pass - -def atof(src: str) -> t.CDouble: pass - -def split(s: str, delim: str, result: t.CArray[str]) -> int: pass diff --git a/Test/MemhubTest/temp/ee084e9fc6ee413a.pyi b/Test/MemhubTest/temp/ee084e9fc6ee413a.pyi deleted file mode 100644 index 45551ef..0000000 --- a/Test/MemhubTest/temp/ee084e9fc6ee413a.pyi +++ /dev/null @@ -1,81 +0,0 @@ -""" -Auto-generated Python stub file from memhub.py -Module: memhub -""" - - -import t, c -from stdint import * -import string -import atom -import viperio - -MEMHUB_ALIGN: t.CDefine = 8 -MEMSLAB_MIN_BLOCK: t.CDefine = 16 -MEMSLAB_BITMAP_BYTES: t.CDefine = 256 -MEMBUDDY_MIN_BLOCK: t.CDefine = 32 -MEMBUDDY_MAX_ORDERS: t.CDefine = 32 -MEMBUDDY_HEADER_SIZE: t.CDefine = 8 - -def _align_up(val: t.CSizeT, align: t.CSizeT) -> t.CSizeT: pass - -def _largest_pow2_le(val: t.CSizeT) -> t.CSizeT: pass - -def _block_size_at_order(order: t.CInt) -> t.CSizeT: pass - - -@t.CVTable -class MemManager: - __provides__: list[str] = ['__memmgr__'] - base: t.CVoid | t.CPtr - size: t.CSizeT - def __init__(self: MemManager, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemManager, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemManager, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemManager) -> t.CInt: pass - def calloc(self: MemManager, count: t.CSizeT, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def realloc(self: MemManager, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def __enter__(self: MemManager) -> 'MemManager' | t.CPtr: pass - def __exit__(self: MemManager) -> t.CInt: pass - def alloc_buf(self: MemManager, capacity: t.CSizeT) -> viperio.Buf | t.CPtr: pass -class MemPool(MemManager): - offset: t.CSizeT - high_water: t.CSizeT - def __init__(self: MemPool, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemPool, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemPool, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemPool) -> t.CInt: pass -class MemSlab(MemManager): - block_size: t.CSizeT - block_count: t.CSizeT - used_count: t.CSizeT - free_list: t.CVoid | t.CPtr - alloc_map: t.CUInt8T | t.CPtr - alloc_map_size: t.CSizeT - usable: t.CVoid | t.CPtr - usable_size: t.CSizeT - def __init__(self: MemSlab, base: t.CVoid | t.CPtr, size: t.CSizeT, block_size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemSlab, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemSlab, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemSlab) -> t.CInt: pass -class MemBuddy(MemManager): - max_order: t.CInt - free_lists: t.CUInt64T | t.CPtr - lock_val: t.CVolatile | t.CInt - usable: t.CVoid | t.CPtr - usable_size: t.CSizeT - def __init__(self: MemBuddy, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def _fl_push(self: MemBuddy, order: t.CInt, block: t.CVoid | t.CPtr) -> t.CInt: pass - def _fl_pop(self: MemBuddy, order: t.CInt) -> t.CVoid | t.CPtr: pass - def _fl_find_and_remove(self: MemBuddy, order: t.CInt, target: t.CVoid | t.CPtr) -> t.CInt: pass - def _buddy_of(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CVoid | t.CPtr: pass - def _order_for_size(self: MemBuddy, size: t.CSizeT) -> t.CInt: pass - def _split_to_order(self: MemBuddy, to_order: t.CInt) -> t.CVoid | t.CPtr: pass - def _coalesce(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CInt: pass - def _is_valid_ptr(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def _lock(self: MemBuddy) -> t.CInt: pass - def _unlock(self: MemBuddy) -> t.CInt: pass - def alloc(self: MemBuddy, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemBuddy) -> t.CInt: pass - def realloc(self: MemBuddy, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass \ No newline at end of file diff --git a/Test/MemhubTest/temp/f3560b99de458aec.pyi b/Test/MemhubTest/temp/f3560b99de458aec.pyi new file mode 100644 index 0000000..84f0bbf --- /dev/null +++ b/Test/MemhubTest/temp/f3560b99de458aec.pyi @@ -0,0 +1,86 @@ +""" +Auto-generated Python stub file from memhub.py +Module: memhub +""" + + +import t, c +from stdint import * +import string +import atom +import viperio + +MEMHUB_ALIGN: t.CDefine = 8 +MEMSLAB_MIN_BLOCK: t.CDefine = 16 +MEMSLAB_BITMAP_BYTES: t.CDefine = 256 +MEMBUDDY_MIN_BLOCK: t.CDefine = 32 +MEMBUDDY_MAX_ORDERS: t.CDefine = 32 +MEMBUDDY_HEADER_SIZE: t.CDefine = 8 + +def _align_up(val: t.CSizeT, align: t.CSizeT) -> t.CSizeT: pass + +def _largest_pow2_le(val: t.CSizeT) -> t.CSizeT: pass + +def _block_size_at_order(order: t.CInt) -> t.CSizeT: pass + + +@t.CVTable +class MemManager: + __provides__: list[str] = ['__memmgr__'] + base: t.CVoid | t.CPtr + size: t.CSizeT + def __init__(self: MemManager, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemManager, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemManager, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemManager) -> t.CInt: pass + def calloc(self: MemManager, count: t.CSizeT, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def realloc(self: MemManager, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def __enter__(self: MemManager) -> 'MemManager' | t.CPtr: pass + def __exit__(self: MemManager) -> t.CInt: pass + def alloc_buf(self: MemManager, capacity: t.CSizeT) -> viperio.Buf | t.CPtr: pass +class MemPool(MemManager): + offset: t.CSizeT + high_water: t.CSizeT + def __init__(self: MemPool, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemPool, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemPool, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemPool) -> t.CInt: pass +class MemSlab(MemManager): + block_size: t.CSizeT + block_count: t.CSizeT + used_count: t.CSizeT + free_list: t.CVoid | t.CPtr + alloc_map: t.CUInt8T | t.CPtr + alloc_map_size: t.CSizeT + usable: t.CVoid | t.CPtr + usable_size: t.CSizeT + def __init__(self: MemSlab, base: t.CVoid | t.CPtr, size: t.CSizeT, block_size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemSlab, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemSlab, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemSlab) -> t.CInt: pass +class MemBuddy(MemManager): + max_order: t.CInt + free_lists: t.CUInt64T | t.CPtr + lock_val: t.CVolatile | t.CInt + usable: t.CVoid | t.CPtr + usable_size: t.CSizeT + def __init__(self: MemBuddy, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def _fl_push(self: MemBuddy, order: t.CInt, block: t.CVoid | t.CPtr) -> t.CInt: pass + def _fl_pop(self: MemBuddy, order: t.CInt) -> t.CVoid | t.CPtr: pass + def _fl_find_and_remove(self: MemBuddy, order: t.CInt, target: t.CVoid | t.CPtr) -> t.CInt: pass + def _buddy_of(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CVoid | t.CPtr: pass + def _order_for_size(self: MemBuddy, size: t.CSizeT) -> t.CInt: pass + def _split_to_order(self: MemBuddy, to_order: t.CInt) -> t.CVoid | t.CPtr: pass + def _coalesce(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CInt: pass + def _is_valid_ptr(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def _lock(self: MemBuddy) -> t.CInt: pass + def _unlock(self: MemBuddy) -> t.CInt: pass + def alloc(self: MemBuddy, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemBuddy) -> t.CInt: pass + def realloc(self: MemBuddy, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + @property + def mem_size(self: MemBuddy) -> t.CSizeT: pass + def stats(self: MemBuddy) -> t.CSizeT: pass + def free_count(self: MemBuddy) -> t.CSizeT: pass + def self_check(self: MemBuddy) -> t.CInt: pass \ No newline at end of file diff --git a/Test/NewAstTest/output/4175f14c5fbef360.deps.json b/Test/NewAstTest/output/4175f14c5fbef360.deps.json index 56af556..6a4cde6 100644 --- a/Test/NewAstTest/output/4175f14c5fbef360.deps.json +++ b/Test/NewAstTest/output/4175f14c5fbef360.deps.json @@ -1 +1 @@ -{"ast.lexer": "0c212981c180e7fb", "lexer": "0c212981c180e7fb", "atom": "271ea3decb810db2", "ast.__init__": "34548789d646f432", "__init__": "34548789d646f432", "ast": "34548789d646f432", "ast.astaux": "4337fb260448bbe2", "astaux": "4337fb260448bbe2", "ast.exprs": "47767b5026a8ee15", "exprs": "47767b5026a8ee15", "ast.match": "4dd6b3f1427d1cc5", "match": "4dd6b3f1427d1cc5", "ast.base": "5dab8cb390496d22", "base": "5dab8cb390496d22", "ast.stmts": "657e182b27c2a022", "stmts": "657e182b27c2a022", "stdio": "6f62fe05c5ea1ceb", "stdarg": "71e0a3ffcb3ebfad", "stdlib": "90c53dd6db8d41cf", "string": "ab6e54ba9a669f76", "ast.tokens": "b547ac4f380bddb6", "tokens": "b547ac4f380bddb6", "viperlib": "c3b259b4059f8668", "viperio": "c9f4be41ca1cc2b4", "memhub": "ee084e9fc6ee413a", "ast.parser": "ee52c08239684346", "parser": "ee52c08239684346", "_list": "f2ecbf8ced20575c", "stdint": "f5522571bcce7bcb", "main.tokens": "b547ac4f380bddb6", "main.base": "5dab8cb390496d22", "main.exprs": "47767b5026a8ee15", "main.stmts": "657e182b27c2a022", "main.astaux": "4337fb260448bbe2", "main.match": "4dd6b3f1427d1cc5", "main.lexer": "0c212981c180e7fb"} \ No newline at end of file +{"ast.lexer": "0c212981c180e7fb", "lexer": "0c212981c180e7fb", "atom": "271ea3decb810db2", "ast.__init__": "34548789d646f432", "__init__": "34548789d646f432", "ast": "34548789d646f432", "ast.astaux": "4337fb260448bbe2", "astaux": "4337fb260448bbe2", "ast.exprs": "47767b5026a8ee15", "exprs": "47767b5026a8ee15", "ast.match": "4dd6b3f1427d1cc5", "match": "4dd6b3f1427d1cc5", "ast.base": "5dab8cb390496d22", "base": "5dab8cb390496d22", "ast.stmts": "657e182b27c2a022", "stmts": "657e182b27c2a022", "stdio": "6f62fe05c5ea1ceb", "stdarg": "71e0a3ffcb3ebfad", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "ast.tokens": "b547ac4f380bddb6", "tokens": "b547ac4f380bddb6", "viperlib": "c3b259b4059f8668", "viperio": "c9f4be41ca1cc2b4", "ast.parser": "ee52c08239684346", "parser": "ee52c08239684346", "_list": "f2ecbf8ced20575c", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/NewAstTest/temp/9474791561654346.pyi b/Test/NewAstTest/temp/9474791561654346.pyi new file mode 100644 index 0000000..1f82b1e --- /dev/null +++ b/Test/NewAstTest/temp/9474791561654346.pyi @@ -0,0 +1,59 @@ +""" +Auto-generated Python stub file from string.py +Module: string +""" + + +from stdint import * +import t, c + +def strcpy(dest: str, src: str) -> str: pass + +def strcat(dest: str, src: str) -> str: pass + +def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass + +def strlen(src: str) -> t.CSizeT | t.CExport: pass + +def strcmp(str1: str, str2: str) -> t.CInt: pass + +def samestr(str1: str, str2: str) -> bool: pass + +def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass + +def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass + +def strchr(s: str, cr: t.CInt) -> str: pass + +def strrchr(s: str, cr: t.CInt) -> str: pass + +def strstr(s: str, needle: str) -> str: pass + +def strspn(s: str, skip: str) -> int: pass + +def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def atoi(src: str) -> t.CInt: pass + +def atoll(src: str) -> t.CInt64T: pass + +def atof(src: str) -> t.CDouble: pass + +def split(s: str, delim: str, result: t.CArray[str]) -> int: pass + + +ascii_lowercase: t.CExtern | str +ascii_uppercase: t.CExtern | str +ascii_letters: t.CExtern | str +digits: t.CExtern | str +hexdigits: t.CExtern | str +octdigits: t.CExtern | str +punctuation: t.CExtern | str +whitespace: t.CExtern | str +printable: t.CExtern | str \ No newline at end of file diff --git a/Test/NewAstTest/temp/_phase1_manifest.json b/Test/NewAstTest/temp/_phase1_manifest.json index 3206144..71eb110 100644 --- a/Test/NewAstTest/temp/_phase1_manifest.json +++ b/Test/NewAstTest/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\NewAstTest\\App\\main.py": {"sha1": "4175f14c5fbef360", "mtime": 1783001020.789755, "size": 63423}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\_list.py": {"sha1": "f2ecbf8ced20575c", "mtime": 1784203829.5212443, "size": 3277}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\ast\\__init__.py": {"sha1": "34548789d646f432", "mtime": 1784102404.6307266, "size": 3409}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\ast\\astaux.py": {"sha1": "4337fb260448bbe2", "mtime": 1784006094.7981195, "size": 11489}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\ast\\base.py": {"sha1": "5dab8cb390496d22", "mtime": 1784197698.3282094, "size": 14966}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\ast\\exprs.py": {"sha1": "47767b5026a8ee15", "mtime": 1783239758.809719, "size": 40615}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\ast\\lexer.py": {"sha1": "0c212981c180e7fb", "mtime": 1783400609.908198, "size": 23535}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\ast\\match.py": {"sha1": "4dd6b3f1427d1cc5", "mtime": 1782961799.8492737, "size": 12309}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\ast\\parser.py": {"sha1": "ee52c08239684346", "mtime": 1784102405.1933146, "size": 85445}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\ast\\stmts.py": {"sha1": "657e182b27c2a022", "mtime": 1783929993.759902, "size": 37926}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\ast\\tokens.py": {"sha1": "b547ac4f380bddb6", "mtime": 1783165480.469121, "size": 13722}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\atom.py": {"sha1": "271ea3decb810db2", "mtime": 1782226548.693161, "size": 1290}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\memhub.py": {"sha1": "ee084e9fc6ee413a", "mtime": 1784214242.4485993, "size": 17765}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdarg.py": {"sha1": "71e0a3ffcb3ebfad", "mtime": 1781258888.113146, "size": 277}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "ab6e54ba9a669f76", "mtime": 1783933178.7264287, "size": 9922}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperlib.py": {"sha1": "c3b259b4059f8668", "mtime": 1782821991.979496, "size": 56772}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\NewAstTest\\App\\main.py": {"sha1": "4175f14c5fbef360", "mtime": 1783001020.789755, "size": 63423}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\_list.py": {"sha1": "f2ecbf8ced20575c", "mtime": 1784203829.5212443, "size": 3277}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\ast\\__init__.py": {"sha1": "34548789d646f432", "mtime": 1784102404.6307266, "size": 3409}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\ast\\astaux.py": {"sha1": "4337fb260448bbe2", "mtime": 1784006094.7981195, "size": 11489}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\ast\\base.py": {"sha1": "5dab8cb390496d22", "mtime": 1784197698.3282094, "size": 14966}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\ast\\exprs.py": {"sha1": "47767b5026a8ee15", "mtime": 1783239758.809719, "size": 40615}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\ast\\lexer.py": {"sha1": "0c212981c180e7fb", "mtime": 1783400609.908198, "size": 23535}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\ast\\match.py": {"sha1": "4dd6b3f1427d1cc5", "mtime": 1782961799.8492737, "size": 12309}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\ast\\parser.py": {"sha1": "ee52c08239684346", "mtime": 1784102405.1933146, "size": 85445}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\ast\\stmts.py": {"sha1": "657e182b27c2a022", "mtime": 1783929993.759902, "size": 37926}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\ast\\tokens.py": {"sha1": "b547ac4f380bddb6", "mtime": 1783165480.469121, "size": 13722}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\atom.py": {"sha1": "271ea3decb810db2", "mtime": 1782226548.693161, "size": 1290}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\memhub.py": {"sha1": "f3560b99de458aec", "mtime": 1784375410.1873891, "size": 19458}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdarg.py": {"sha1": "71e0a3ffcb3ebfad", "mtime": 1781258888.113146, "size": 277}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "9474791561654346", "mtime": 1784387475.6951904, "size": 10395}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperlib.py": {"sha1": "c3b259b4059f8668", "mtime": 1782821991.979496, "size": 56772}} \ No newline at end of file diff --git a/Test/NewAstTest/temp/_sha1_map.txt b/Test/NewAstTest/temp/_sha1_map.txt index ac2e3b4..fe04566 100644 --- a/Test/NewAstTest/temp/_sha1_map.txt +++ b/Test/NewAstTest/temp/_sha1_map.txt @@ -10,11 +10,11 @@ 6f62fe05c5ea1ceb:includes/stdio.py 71e0a3ffcb3ebfad:includes/stdarg.py 90c53dd6db8d41cf:includes/stdlib.py -ab6e54ba9a669f76:includes/string.py +9474791561654346:includes/string.py b547ac4f380bddb6:includes/ast\tokens.py c3b259b4059f8668:includes/viperlib.py c9f4be41ca1cc2b4:includes/viperio.py -ee084e9fc6ee413a:includes/memhub.py ee52c08239684346:includes/ast\parser.py f2ecbf8ced20575c:includes/_list.py +f3560b99de458aec:includes/memhub.py f5522571bcce7bcb:includes/stdint.py diff --git a/Test/NewAstTest/temp/ab6e54ba9a669f76.pyi b/Test/NewAstTest/temp/ab6e54ba9a669f76.pyi deleted file mode 100644 index 4fc3440..0000000 --- a/Test/NewAstTest/temp/ab6e54ba9a669f76.pyi +++ /dev/null @@ -1,48 +0,0 @@ -""" -Auto-generated Python stub file from string.py -Module: string -""" - - -from stdint import * -import t, c - -def strcpy(dest: str, src: str) -> str: pass - -def strcat(dest: str, src: str) -> str: pass - -def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass - -def strlen(src: str) -> t.CSizeT | t.CExport: pass - -def strcmp(str1: str, str2: str) -> t.CInt: pass - -def samestr(str1: str, str2: str) -> bool: pass - -def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass - -def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass - -def strchr(s: str, cr: t.CInt) -> str: pass - -def strrchr(s: str, cr: t.CInt) -> str: pass - -def strstr(s: str, needle: str) -> str: pass - -def strspn(s: str, skip: str) -> int: pass - -def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def atoi(src: str) -> t.CInt: pass - -def atoll(src: str) -> t.CInt64T: pass - -def atof(src: str) -> t.CDouble: pass - -def split(s: str, delim: str, result: t.CArray[str]) -> int: pass diff --git a/Test/NewAstTest/temp/ee084e9fc6ee413a.pyi b/Test/NewAstTest/temp/ee084e9fc6ee413a.pyi deleted file mode 100644 index 45551ef..0000000 --- a/Test/NewAstTest/temp/ee084e9fc6ee413a.pyi +++ /dev/null @@ -1,81 +0,0 @@ -""" -Auto-generated Python stub file from memhub.py -Module: memhub -""" - - -import t, c -from stdint import * -import string -import atom -import viperio - -MEMHUB_ALIGN: t.CDefine = 8 -MEMSLAB_MIN_BLOCK: t.CDefine = 16 -MEMSLAB_BITMAP_BYTES: t.CDefine = 256 -MEMBUDDY_MIN_BLOCK: t.CDefine = 32 -MEMBUDDY_MAX_ORDERS: t.CDefine = 32 -MEMBUDDY_HEADER_SIZE: t.CDefine = 8 - -def _align_up(val: t.CSizeT, align: t.CSizeT) -> t.CSizeT: pass - -def _largest_pow2_le(val: t.CSizeT) -> t.CSizeT: pass - -def _block_size_at_order(order: t.CInt) -> t.CSizeT: pass - - -@t.CVTable -class MemManager: - __provides__: list[str] = ['__memmgr__'] - base: t.CVoid | t.CPtr - size: t.CSizeT - def __init__(self: MemManager, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemManager, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemManager, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemManager) -> t.CInt: pass - def calloc(self: MemManager, count: t.CSizeT, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def realloc(self: MemManager, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def __enter__(self: MemManager) -> 'MemManager' | t.CPtr: pass - def __exit__(self: MemManager) -> t.CInt: pass - def alloc_buf(self: MemManager, capacity: t.CSizeT) -> viperio.Buf | t.CPtr: pass -class MemPool(MemManager): - offset: t.CSizeT - high_water: t.CSizeT - def __init__(self: MemPool, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemPool, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemPool, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemPool) -> t.CInt: pass -class MemSlab(MemManager): - block_size: t.CSizeT - block_count: t.CSizeT - used_count: t.CSizeT - free_list: t.CVoid | t.CPtr - alloc_map: t.CUInt8T | t.CPtr - alloc_map_size: t.CSizeT - usable: t.CVoid | t.CPtr - usable_size: t.CSizeT - def __init__(self: MemSlab, base: t.CVoid | t.CPtr, size: t.CSizeT, block_size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemSlab, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemSlab, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemSlab) -> t.CInt: pass -class MemBuddy(MemManager): - max_order: t.CInt - free_lists: t.CUInt64T | t.CPtr - lock_val: t.CVolatile | t.CInt - usable: t.CVoid | t.CPtr - usable_size: t.CSizeT - def __init__(self: MemBuddy, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def _fl_push(self: MemBuddy, order: t.CInt, block: t.CVoid | t.CPtr) -> t.CInt: pass - def _fl_pop(self: MemBuddy, order: t.CInt) -> t.CVoid | t.CPtr: pass - def _fl_find_and_remove(self: MemBuddy, order: t.CInt, target: t.CVoid | t.CPtr) -> t.CInt: pass - def _buddy_of(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CVoid | t.CPtr: pass - def _order_for_size(self: MemBuddy, size: t.CSizeT) -> t.CInt: pass - def _split_to_order(self: MemBuddy, to_order: t.CInt) -> t.CVoid | t.CPtr: pass - def _coalesce(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CInt: pass - def _is_valid_ptr(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def _lock(self: MemBuddy) -> t.CInt: pass - def _unlock(self: MemBuddy) -> t.CInt: pass - def alloc(self: MemBuddy, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemBuddy) -> t.CInt: pass - def realloc(self: MemBuddy, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass \ No newline at end of file diff --git a/Test/NewAstTest/temp/f3560b99de458aec.pyi b/Test/NewAstTest/temp/f3560b99de458aec.pyi new file mode 100644 index 0000000..84f0bbf --- /dev/null +++ b/Test/NewAstTest/temp/f3560b99de458aec.pyi @@ -0,0 +1,86 @@ +""" +Auto-generated Python stub file from memhub.py +Module: memhub +""" + + +import t, c +from stdint import * +import string +import atom +import viperio + +MEMHUB_ALIGN: t.CDefine = 8 +MEMSLAB_MIN_BLOCK: t.CDefine = 16 +MEMSLAB_BITMAP_BYTES: t.CDefine = 256 +MEMBUDDY_MIN_BLOCK: t.CDefine = 32 +MEMBUDDY_MAX_ORDERS: t.CDefine = 32 +MEMBUDDY_HEADER_SIZE: t.CDefine = 8 + +def _align_up(val: t.CSizeT, align: t.CSizeT) -> t.CSizeT: pass + +def _largest_pow2_le(val: t.CSizeT) -> t.CSizeT: pass + +def _block_size_at_order(order: t.CInt) -> t.CSizeT: pass + + +@t.CVTable +class MemManager: + __provides__: list[str] = ['__memmgr__'] + base: t.CVoid | t.CPtr + size: t.CSizeT + def __init__(self: MemManager, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemManager, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemManager, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemManager) -> t.CInt: pass + def calloc(self: MemManager, count: t.CSizeT, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def realloc(self: MemManager, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def __enter__(self: MemManager) -> 'MemManager' | t.CPtr: pass + def __exit__(self: MemManager) -> t.CInt: pass + def alloc_buf(self: MemManager, capacity: t.CSizeT) -> viperio.Buf | t.CPtr: pass +class MemPool(MemManager): + offset: t.CSizeT + high_water: t.CSizeT + def __init__(self: MemPool, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemPool, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemPool, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemPool) -> t.CInt: pass +class MemSlab(MemManager): + block_size: t.CSizeT + block_count: t.CSizeT + used_count: t.CSizeT + free_list: t.CVoid | t.CPtr + alloc_map: t.CUInt8T | t.CPtr + alloc_map_size: t.CSizeT + usable: t.CVoid | t.CPtr + usable_size: t.CSizeT + def __init__(self: MemSlab, base: t.CVoid | t.CPtr, size: t.CSizeT, block_size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemSlab, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemSlab, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemSlab) -> t.CInt: pass +class MemBuddy(MemManager): + max_order: t.CInt + free_lists: t.CUInt64T | t.CPtr + lock_val: t.CVolatile | t.CInt + usable: t.CVoid | t.CPtr + usable_size: t.CSizeT + def __init__(self: MemBuddy, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def _fl_push(self: MemBuddy, order: t.CInt, block: t.CVoid | t.CPtr) -> t.CInt: pass + def _fl_pop(self: MemBuddy, order: t.CInt) -> t.CVoid | t.CPtr: pass + def _fl_find_and_remove(self: MemBuddy, order: t.CInt, target: t.CVoid | t.CPtr) -> t.CInt: pass + def _buddy_of(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CVoid | t.CPtr: pass + def _order_for_size(self: MemBuddy, size: t.CSizeT) -> t.CInt: pass + def _split_to_order(self: MemBuddy, to_order: t.CInt) -> t.CVoid | t.CPtr: pass + def _coalesce(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CInt: pass + def _is_valid_ptr(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def _lock(self: MemBuddy) -> t.CInt: pass + def _unlock(self: MemBuddy) -> t.CInt: pass + def alloc(self: MemBuddy, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemBuddy) -> t.CInt: pass + def realloc(self: MemBuddy, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + @property + def mem_size(self: MemBuddy) -> t.CSizeT: pass + def stats(self: MemBuddy) -> t.CSizeT: pass + def free_count(self: MemBuddy) -> t.CSizeT: pass + def self_check(self: MemBuddy) -> t.CInt: pass \ No newline at end of file diff --git a/Test/NoVTableTest/output/22650858c377c847.deps.json b/Test/NoVTableTest/output/22650858c377c847.deps.json index d5f6f05..6f6a6c7 100644 --- a/Test/NoVTableTest/output/22650858c377c847.deps.json +++ b/Test/NoVTableTest/output/22650858c377c847.deps.json @@ -1 +1 @@ -{"linkedlist": "2d39c6c7d3557b3e", "stdio": "6f62fe05c5ea1ceb", "stdarg": "71e0a3ffcb3ebfad", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperlib": "c3b259b4059f8668", "viperio": "c9f4be41ca1cc2b4", "testcheck": "dd3002730623424b", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"testcheck": "14d33679f7fadf1f", "linkedlist": "2d39c6c7d3557b3e", "stdio": "6f62fe05c5ea1ceb", "stdarg": "71e0a3ffcb3ebfad", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperlib": "c3b259b4059f8668", "viperio": "c9f4be41ca1cc2b4", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/NoVTableTest/temp/dd3002730623424b.pyi b/Test/NoVTableTest/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/NoVTableTest/temp/dd3002730623424b.pyi rename to Test/NoVTableTest/temp/14d33679f7fadf1f.pyi diff --git a/Test/NoVTableTest/temp/9474791561654346.pyi b/Test/NoVTableTest/temp/9474791561654346.pyi new file mode 100644 index 0000000..1f82b1e --- /dev/null +++ b/Test/NoVTableTest/temp/9474791561654346.pyi @@ -0,0 +1,59 @@ +""" +Auto-generated Python stub file from string.py +Module: string +""" + + +from stdint import * +import t, c + +def strcpy(dest: str, src: str) -> str: pass + +def strcat(dest: str, src: str) -> str: pass + +def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass + +def strlen(src: str) -> t.CSizeT | t.CExport: pass + +def strcmp(str1: str, str2: str) -> t.CInt: pass + +def samestr(str1: str, str2: str) -> bool: pass + +def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass + +def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass + +def strchr(s: str, cr: t.CInt) -> str: pass + +def strrchr(s: str, cr: t.CInt) -> str: pass + +def strstr(s: str, needle: str) -> str: pass + +def strspn(s: str, skip: str) -> int: pass + +def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def atoi(src: str) -> t.CInt: pass + +def atoll(src: str) -> t.CInt64T: pass + +def atof(src: str) -> t.CDouble: pass + +def split(s: str, delim: str, result: t.CArray[str]) -> int: pass + + +ascii_lowercase: t.CExtern | str +ascii_uppercase: t.CExtern | str +ascii_letters: t.CExtern | str +digits: t.CExtern | str +hexdigits: t.CExtern | str +octdigits: t.CExtern | str +punctuation: t.CExtern | str +whitespace: t.CExtern | str +printable: t.CExtern | str \ No newline at end of file diff --git a/Test/NoVTableTest/temp/_phase1_manifest.json b/Test/NoVTableTest/temp/_phase1_manifest.json index 789603f..6aa7d66 100644 --- a/Test/NoVTableTest/temp/_phase1_manifest.json +++ b/Test/NoVTableTest/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\NoVTableTest\\App\\main.py": {"sha1": "22650858c377c847", "mtime": 1782800242.9985914, "size": 17052}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\linkedlist.py": {"sha1": "2d39c6c7d3557b3e", "mtime": 1782895405.2191627, "size": 16032}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdarg.py": {"sha1": "71e0a3ffcb3ebfad", "mtime": 1781258888.113146, "size": 277}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "ab6e54ba9a669f76", "mtime": 1783933178.7264287, "size": 9922}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperlib.py": {"sha1": "c3b259b4059f8668", "mtime": 1782821991.979496, "size": 56772}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\NoVTableTest\\App\\main.py": {"sha1": "22650858c377c847", "mtime": 1782800242.9985914, "size": 17052}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\linkedlist.py": {"sha1": "2d39c6c7d3557b3e", "mtime": 1782895405.2191627, "size": 16032}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdarg.py": {"sha1": "71e0a3ffcb3ebfad", "mtime": 1781258888.113146, "size": 277}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "9474791561654346", "mtime": 1784387475.6951904, "size": 10395}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperlib.py": {"sha1": "c3b259b4059f8668", "mtime": 1782821991.979496, "size": 56772}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file diff --git a/Test/NoVTableTest/temp/_sha1_map.txt b/Test/NoVTableTest/temp/_sha1_map.txt index 45e0214..26ecc7b 100644 --- a/Test/NoVTableTest/temp/_sha1_map.txt +++ b/Test/NoVTableTest/temp/_sha1_map.txt @@ -1,12 +1,12 @@ +14d33679f7fadf1f:includes/testcheck.py 22650858c377c847:main.py 2d39c6c7d3557b3e:includes/linkedlist.py 6f62fe05c5ea1ceb:includes/stdio.py 71e0a3ffcb3ebfad:includes/stdarg.py 7e529fe7a078cfef:includes/w32\win32base.py 90c53dd6db8d41cf:includes/stdlib.py -ab6e54ba9a669f76:includes/string.py +9474791561654346:includes/string.py bbdf3bbd4c3bc28c:includes/w32\win32console.py c3b259b4059f8668:includes/viperlib.py c9f4be41ca1cc2b4:includes/viperio.py -dd3002730623424b:includes/testcheck.py f5522571bcce7bcb:includes/stdint.py diff --git a/Test/NoVTableTest/temp/ab6e54ba9a669f76.pyi b/Test/NoVTableTest/temp/ab6e54ba9a669f76.pyi deleted file mode 100644 index 4fc3440..0000000 --- a/Test/NoVTableTest/temp/ab6e54ba9a669f76.pyi +++ /dev/null @@ -1,48 +0,0 @@ -""" -Auto-generated Python stub file from string.py -Module: string -""" - - -from stdint import * -import t, c - -def strcpy(dest: str, src: str) -> str: pass - -def strcat(dest: str, src: str) -> str: pass - -def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass - -def strlen(src: str) -> t.CSizeT | t.CExport: pass - -def strcmp(str1: str, str2: str) -> t.CInt: pass - -def samestr(str1: str, str2: str) -> bool: pass - -def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass - -def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass - -def strchr(s: str, cr: t.CInt) -> str: pass - -def strrchr(s: str, cr: t.CInt) -> str: pass - -def strstr(s: str, needle: str) -> str: pass - -def strspn(s: str, skip: str) -> int: pass - -def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def atoi(src: str) -> t.CInt: pass - -def atoll(src: str) -> t.CInt64T: pass - -def atof(src: str) -> t.CDouble: pass - -def split(s: str, delim: str, result: t.CArray[str]) -> int: pass diff --git a/Test/PointerTest/output/b436212dcff1be29.deps.json b/Test/PointerTest/output/b436212dcff1be29.deps.json index 9da11e2..48c6c93 100644 --- a/Test/PointerTest/output/b436212dcff1be29.deps.json +++ b/Test/PointerTest/output/b436212dcff1be29.deps.json @@ -1 +1 @@ -{"stdio": "6f62fe05c5ea1ceb", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "testcheck": "dd3002730623424b", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"testcheck": "14d33679f7fadf1f", "stdio": "6f62fe05c5ea1ceb", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/PointerTest/temp/dd3002730623424b.pyi b/Test/PointerTest/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/PointerTest/temp/dd3002730623424b.pyi rename to Test/PointerTest/temp/14d33679f7fadf1f.pyi diff --git a/Test/PointerTest/temp/9474791561654346.pyi b/Test/PointerTest/temp/9474791561654346.pyi new file mode 100644 index 0000000..1f82b1e --- /dev/null +++ b/Test/PointerTest/temp/9474791561654346.pyi @@ -0,0 +1,59 @@ +""" +Auto-generated Python stub file from string.py +Module: string +""" + + +from stdint import * +import t, c + +def strcpy(dest: str, src: str) -> str: pass + +def strcat(dest: str, src: str) -> str: pass + +def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass + +def strlen(src: str) -> t.CSizeT | t.CExport: pass + +def strcmp(str1: str, str2: str) -> t.CInt: pass + +def samestr(str1: str, str2: str) -> bool: pass + +def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass + +def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass + +def strchr(s: str, cr: t.CInt) -> str: pass + +def strrchr(s: str, cr: t.CInt) -> str: pass + +def strstr(s: str, needle: str) -> str: pass + +def strspn(s: str, skip: str) -> int: pass + +def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def atoi(src: str) -> t.CInt: pass + +def atoll(src: str) -> t.CInt64T: pass + +def atof(src: str) -> t.CDouble: pass + +def split(s: str, delim: str, result: t.CArray[str]) -> int: pass + + +ascii_lowercase: t.CExtern | str +ascii_uppercase: t.CExtern | str +ascii_letters: t.CExtern | str +digits: t.CExtern | str +hexdigits: t.CExtern | str +octdigits: t.CExtern | str +punctuation: t.CExtern | str +whitespace: t.CExtern | str +printable: t.CExtern | str \ No newline at end of file diff --git a/Test/PointerTest/temp/_phase1_manifest.json b/Test/PointerTest/temp/_phase1_manifest.json index e761766..938dfdd 100644 --- a/Test/PointerTest/temp/_phase1_manifest.json +++ b/Test/PointerTest/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\PointerTest\\App\\main.py": {"sha1": "b436212dcff1be29", "mtime": 1782266285.034029, "size": 9274}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "ab6e54ba9a669f76", "mtime": 1783933178.7264287, "size": 9922}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32memory.py": {"sha1": "72e2d5ccb7cedcf1", "mtime": 1781200703.5389092, "size": 3142}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\PointerTest\\App\\main.py": {"sha1": "b436212dcff1be29", "mtime": 1782266285.034029, "size": 9274}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "9474791561654346", "mtime": 1784387475.6951904, "size": 10395}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32memory.py": {"sha1": "72e2d5ccb7cedcf1", "mtime": 1781200703.5389092, "size": 3142}} \ No newline at end of file diff --git a/Test/PointerTest/temp/_sha1_map.txt b/Test/PointerTest/temp/_sha1_map.txt index c92e7b2..c6c1678 100644 --- a/Test/PointerTest/temp/_sha1_map.txt +++ b/Test/PointerTest/temp/_sha1_map.txt @@ -1,8 +1,8 @@ +14d33679f7fadf1f:includes/testcheck.py 6f62fe05c5ea1ceb:includes/stdio.py 72e2d5ccb7cedcf1:includes/w32\win32memory.py 7e529fe7a078cfef:includes/w32\win32base.py -ab6e54ba9a669f76:includes/string.py +9474791561654346:includes/string.py b436212dcff1be29:main.py bbdf3bbd4c3bc28c:includes/w32\win32console.py -dd3002730623424b:includes/testcheck.py f5522571bcce7bcb:includes/stdint.py diff --git a/Test/PointerTest/temp/ab6e54ba9a669f76.pyi b/Test/PointerTest/temp/ab6e54ba9a669f76.pyi deleted file mode 100644 index 4fc3440..0000000 --- a/Test/PointerTest/temp/ab6e54ba9a669f76.pyi +++ /dev/null @@ -1,48 +0,0 @@ -""" -Auto-generated Python stub file from string.py -Module: string -""" - - -from stdint import * -import t, c - -def strcpy(dest: str, src: str) -> str: pass - -def strcat(dest: str, src: str) -> str: pass - -def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass - -def strlen(src: str) -> t.CSizeT | t.CExport: pass - -def strcmp(str1: str, str2: str) -> t.CInt: pass - -def samestr(str1: str, str2: str) -> bool: pass - -def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass - -def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass - -def strchr(s: str, cr: t.CInt) -> str: pass - -def strrchr(s: str, cr: t.CInt) -> str: pass - -def strstr(s: str, needle: str) -> str: pass - -def strspn(s: str, skip: str) -> int: pass - -def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def atoi(src: str) -> t.CInt: pass - -def atoll(src: str) -> t.CInt64T: pass - -def atof(src: str) -> t.CDouble: pass - -def split(s: str, delim: str, result: t.CArray[str]) -> int: pass diff --git a/Test/ShortCircuitTest/output/a711c9c66fd7c6ca.deps.json b/Test/ShortCircuitTest/output/a711c9c66fd7c6ca.deps.json index 262dabd..a86f7c5 100644 --- a/Test/ShortCircuitTest/output/a711c9c66fd7c6ca.deps.json +++ b/Test/ShortCircuitTest/output/a711c9c66fd7c6ca.deps.json @@ -1 +1 @@ -{"stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "testcheck": "dd3002730623424b", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"testcheck": "14d33679f7fadf1f", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/ShortCircuitTest/temp/dd3002730623424b.pyi b/Test/ShortCircuitTest/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/ShortCircuitTest/temp/dd3002730623424b.pyi rename to Test/ShortCircuitTest/temp/14d33679f7fadf1f.pyi diff --git a/Test/ShortCircuitTest/temp/9474791561654346.pyi b/Test/ShortCircuitTest/temp/9474791561654346.pyi new file mode 100644 index 0000000..1f82b1e --- /dev/null +++ b/Test/ShortCircuitTest/temp/9474791561654346.pyi @@ -0,0 +1,59 @@ +""" +Auto-generated Python stub file from string.py +Module: string +""" + + +from stdint import * +import t, c + +def strcpy(dest: str, src: str) -> str: pass + +def strcat(dest: str, src: str) -> str: pass + +def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass + +def strlen(src: str) -> t.CSizeT | t.CExport: pass + +def strcmp(str1: str, str2: str) -> t.CInt: pass + +def samestr(str1: str, str2: str) -> bool: pass + +def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass + +def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass + +def strchr(s: str, cr: t.CInt) -> str: pass + +def strrchr(s: str, cr: t.CInt) -> str: pass + +def strstr(s: str, needle: str) -> str: pass + +def strspn(s: str, skip: str) -> int: pass + +def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def atoi(src: str) -> t.CInt: pass + +def atoll(src: str) -> t.CInt64T: pass + +def atof(src: str) -> t.CDouble: pass + +def split(s: str, delim: str, result: t.CArray[str]) -> int: pass + + +ascii_lowercase: t.CExtern | str +ascii_uppercase: t.CExtern | str +ascii_letters: t.CExtern | str +digits: t.CExtern | str +hexdigits: t.CExtern | str +octdigits: t.CExtern | str +punctuation: t.CExtern | str +whitespace: t.CExtern | str +printable: t.CExtern | str \ No newline at end of file diff --git a/Test/ShortCircuitTest/temp/_phase1_manifest.json b/Test/ShortCircuitTest/temp/_phase1_manifest.json index 26e54b5..e96bd9b 100644 --- a/Test/ShortCircuitTest/temp/_phase1_manifest.json +++ b/Test/ShortCircuitTest/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\ShortCircuitTest\\App\\main.py": {"sha1": "a711c9c66fd7c6ca", "mtime": 1782355546.5909688, "size": 4497}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "ab6e54ba9a669f76", "mtime": 1783933178.7264287, "size": 9922}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\ShortCircuitTest\\App\\main.py": {"sha1": "a711c9c66fd7c6ca", "mtime": 1782355546.5909688, "size": 4497}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "9474791561654346", "mtime": 1784387475.6951904, "size": 10395}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file diff --git a/Test/ShortCircuitTest/temp/_sha1_map.txt b/Test/ShortCircuitTest/temp/_sha1_map.txt index 47c7fc4..bc2ddd2 100644 --- a/Test/ShortCircuitTest/temp/_sha1_map.txt +++ b/Test/ShortCircuitTest/temp/_sha1_map.txt @@ -1,8 +1,8 @@ +14d33679f7fadf1f:includes/testcheck.py 6f62fe05c5ea1ceb:includes/stdio.py 7e529fe7a078cfef:includes/w32\win32base.py 90c53dd6db8d41cf:includes/stdlib.py +9474791561654346:includes/string.py a711c9c66fd7c6ca:main.py -ab6e54ba9a669f76:includes/string.py bbdf3bbd4c3bc28c:includes/w32\win32console.py -dd3002730623424b:includes/testcheck.py f5522571bcce7bcb:includes/stdint.py diff --git a/Test/ShortCircuitTest/temp/ab6e54ba9a669f76.pyi b/Test/ShortCircuitTest/temp/ab6e54ba9a669f76.pyi deleted file mode 100644 index 4fc3440..0000000 --- a/Test/ShortCircuitTest/temp/ab6e54ba9a669f76.pyi +++ /dev/null @@ -1,48 +0,0 @@ -""" -Auto-generated Python stub file from string.py -Module: string -""" - - -from stdint import * -import t, c - -def strcpy(dest: str, src: str) -> str: pass - -def strcat(dest: str, src: str) -> str: pass - -def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass - -def strlen(src: str) -> t.CSizeT | t.CExport: pass - -def strcmp(str1: str, str2: str) -> t.CInt: pass - -def samestr(str1: str, str2: str) -> bool: pass - -def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass - -def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass - -def strchr(s: str, cr: t.CInt) -> str: pass - -def strrchr(s: str, cr: t.CInt) -> str: pass - -def strstr(s: str, needle: str) -> str: pass - -def strspn(s: str, skip: str) -> int: pass - -def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def atoi(src: str) -> t.CInt: pass - -def atoll(src: str) -> t.CInt64T: pass - -def atof(src: str) -> t.CDouble: pass - -def split(s: str, delim: str, result: t.CArray[str]) -> int: pass diff --git a/Test/SimdTest/output/2fcb6780db4d937f.deps.json b/Test/SimdTest/output/2fcb6780db4d937f.deps.json index 9ec0f91..1252f68 100644 --- a/Test/SimdTest/output/2fcb6780db4d937f.deps.json +++ b/Test/SimdTest/output/2fcb6780db4d937f.deps.json @@ -1 +1 @@ -{"atom": "271ea3decb810db2", "vipermath": "3f7c5e78d8652535", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "vipersimd": "c24f25b14b4bbd0a", "numpy.__init__": "c3a6aed1f1fb8b1e", "__init__": "c3a6aed1f1fb8b1e", "numpy": "c3a6aed1f1fb8b1e", "viperio": "c9f4be41ca1cc2b4", "testcheck": "dd3002730623424b", "memhub": "ee084e9fc6ee413a", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"testcheck": "14d33679f7fadf1f", "atom": "271ea3decb810db2", "vipermath": "3f7c5e78d8652535", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "vipersimd": "c24f25b14b4bbd0a", "numpy.__init__": "c3a6aed1f1fb8b1e", "__init__": "c3a6aed1f1fb8b1e", "numpy": "c3a6aed1f1fb8b1e", "viperio": "c9f4be41ca1cc2b4", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/SimdTest/temp/dd3002730623424b.pyi b/Test/SimdTest/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/SimdTest/temp/dd3002730623424b.pyi rename to Test/SimdTest/temp/14d33679f7fadf1f.pyi diff --git a/Test/SimdTest/temp/9474791561654346.pyi b/Test/SimdTest/temp/9474791561654346.pyi new file mode 100644 index 0000000..1f82b1e --- /dev/null +++ b/Test/SimdTest/temp/9474791561654346.pyi @@ -0,0 +1,59 @@ +""" +Auto-generated Python stub file from string.py +Module: string +""" + + +from stdint import * +import t, c + +def strcpy(dest: str, src: str) -> str: pass + +def strcat(dest: str, src: str) -> str: pass + +def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass + +def strlen(src: str) -> t.CSizeT | t.CExport: pass + +def strcmp(str1: str, str2: str) -> t.CInt: pass + +def samestr(str1: str, str2: str) -> bool: pass + +def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass + +def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass + +def strchr(s: str, cr: t.CInt) -> str: pass + +def strrchr(s: str, cr: t.CInt) -> str: pass + +def strstr(s: str, needle: str) -> str: pass + +def strspn(s: str, skip: str) -> int: pass + +def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def atoi(src: str) -> t.CInt: pass + +def atoll(src: str) -> t.CInt64T: pass + +def atof(src: str) -> t.CDouble: pass + +def split(s: str, delim: str, result: t.CArray[str]) -> int: pass + + +ascii_lowercase: t.CExtern | str +ascii_uppercase: t.CExtern | str +ascii_letters: t.CExtern | str +digits: t.CExtern | str +hexdigits: t.CExtern | str +octdigits: t.CExtern | str +punctuation: t.CExtern | str +whitespace: t.CExtern | str +printable: t.CExtern | str \ No newline at end of file diff --git a/Test/SimdTest/temp/_phase1_manifest.json b/Test/SimdTest/temp/_phase1_manifest.json index 9367a98..689a63c 100644 --- a/Test/SimdTest/temp/_phase1_manifest.json +++ b/Test/SimdTest/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\SimdTest\\App\\main.py": {"sha1": "2fcb6780db4d937f", "mtime": 1782828206.5357063, "size": 17078}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\atom.py": {"sha1": "271ea3decb810db2", "mtime": 1782226548.693161, "size": 1290}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\memhub.py": {"sha1": "ee084e9fc6ee413a", "mtime": 1784214242.4485993, "size": 17765}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\numpy\\__init__.py": {"sha1": "c3a6aed1f1fb8b1e", "mtime": 1782949786.0890937, "size": 39111}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "ab6e54ba9a669f76", "mtime": 1783933178.7264287, "size": 9922}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\vipermath.py": {"sha1": "3f7c5e78d8652535", "mtime": 1781532528.2518907, "size": 15412}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\vipersimd.py": {"sha1": "c24f25b14b4bbd0a", "mtime": 1782891155.5031893, "size": 15522}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\SimdTest\\App\\main.py": {"sha1": "2fcb6780db4d937f", "mtime": 1782828206.5357063, "size": 17078}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\atom.py": {"sha1": "271ea3decb810db2", "mtime": 1782226548.693161, "size": 1290}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\memhub.py": {"sha1": "f3560b99de458aec", "mtime": 1784375410.1873891, "size": 19458}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\numpy\\__init__.py": {"sha1": "c3a6aed1f1fb8b1e", "mtime": 1782949786.0890937, "size": 39111}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "9474791561654346", "mtime": 1784387475.6951904, "size": 10395}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\vipermath.py": {"sha1": "3f7c5e78d8652535", "mtime": 1781532528.2518907, "size": 15412}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\vipersimd.py": {"sha1": "c24f25b14b4bbd0a", "mtime": 1782891155.5031893, "size": 15522}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file diff --git a/Test/SimdTest/temp/_sha1_map.txt b/Test/SimdTest/temp/_sha1_map.txt index 5bd402c..ce9b71d 100644 --- a/Test/SimdTest/temp/_sha1_map.txt +++ b/Test/SimdTest/temp/_sha1_map.txt @@ -1,14 +1,14 @@ +14d33679f7fadf1f:includes/testcheck.py 271ea3decb810db2:includes/atom.py 2fcb6780db4d937f:main.py 3f7c5e78d8652535:includes/vipermath.py 6f62fe05c5ea1ceb:includes/stdio.py 7e529fe7a078cfef:includes/w32\win32base.py 90c53dd6db8d41cf:includes/stdlib.py -ab6e54ba9a669f76:includes/string.py +9474791561654346:includes/string.py bbdf3bbd4c3bc28c:includes/w32\win32console.py c24f25b14b4bbd0a:includes/vipersimd.py c3a6aed1f1fb8b1e:includes/numpy\__init__.py c9f4be41ca1cc2b4:includes/viperio.py -dd3002730623424b:includes/testcheck.py -ee084e9fc6ee413a:includes/memhub.py +f3560b99de458aec:includes/memhub.py f5522571bcce7bcb:includes/stdint.py diff --git a/Test/SimdTest/temp/ab6e54ba9a669f76.pyi b/Test/SimdTest/temp/ab6e54ba9a669f76.pyi deleted file mode 100644 index 4fc3440..0000000 --- a/Test/SimdTest/temp/ab6e54ba9a669f76.pyi +++ /dev/null @@ -1,48 +0,0 @@ -""" -Auto-generated Python stub file from string.py -Module: string -""" - - -from stdint import * -import t, c - -def strcpy(dest: str, src: str) -> str: pass - -def strcat(dest: str, src: str) -> str: pass - -def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass - -def strlen(src: str) -> t.CSizeT | t.CExport: pass - -def strcmp(str1: str, str2: str) -> t.CInt: pass - -def samestr(str1: str, str2: str) -> bool: pass - -def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass - -def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass - -def strchr(s: str, cr: t.CInt) -> str: pass - -def strrchr(s: str, cr: t.CInt) -> str: pass - -def strstr(s: str, needle: str) -> str: pass - -def strspn(s: str, skip: str) -> int: pass - -def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def atoi(src: str) -> t.CInt: pass - -def atoll(src: str) -> t.CInt64T: pass - -def atof(src: str) -> t.CDouble: pass - -def split(s: str, delim: str, result: t.CArray[str]) -> int: pass diff --git a/Test/SimdTest/temp/ee084e9fc6ee413a.pyi b/Test/SimdTest/temp/ee084e9fc6ee413a.pyi deleted file mode 100644 index 45551ef..0000000 --- a/Test/SimdTest/temp/ee084e9fc6ee413a.pyi +++ /dev/null @@ -1,81 +0,0 @@ -""" -Auto-generated Python stub file from memhub.py -Module: memhub -""" - - -import t, c -from stdint import * -import string -import atom -import viperio - -MEMHUB_ALIGN: t.CDefine = 8 -MEMSLAB_MIN_BLOCK: t.CDefine = 16 -MEMSLAB_BITMAP_BYTES: t.CDefine = 256 -MEMBUDDY_MIN_BLOCK: t.CDefine = 32 -MEMBUDDY_MAX_ORDERS: t.CDefine = 32 -MEMBUDDY_HEADER_SIZE: t.CDefine = 8 - -def _align_up(val: t.CSizeT, align: t.CSizeT) -> t.CSizeT: pass - -def _largest_pow2_le(val: t.CSizeT) -> t.CSizeT: pass - -def _block_size_at_order(order: t.CInt) -> t.CSizeT: pass - - -@t.CVTable -class MemManager: - __provides__: list[str] = ['__memmgr__'] - base: t.CVoid | t.CPtr - size: t.CSizeT - def __init__(self: MemManager, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemManager, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemManager, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemManager) -> t.CInt: pass - def calloc(self: MemManager, count: t.CSizeT, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def realloc(self: MemManager, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def __enter__(self: MemManager) -> 'MemManager' | t.CPtr: pass - def __exit__(self: MemManager) -> t.CInt: pass - def alloc_buf(self: MemManager, capacity: t.CSizeT) -> viperio.Buf | t.CPtr: pass -class MemPool(MemManager): - offset: t.CSizeT - high_water: t.CSizeT - def __init__(self: MemPool, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemPool, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemPool, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemPool) -> t.CInt: pass -class MemSlab(MemManager): - block_size: t.CSizeT - block_count: t.CSizeT - used_count: t.CSizeT - free_list: t.CVoid | t.CPtr - alloc_map: t.CUInt8T | t.CPtr - alloc_map_size: t.CSizeT - usable: t.CVoid | t.CPtr - usable_size: t.CSizeT - def __init__(self: MemSlab, base: t.CVoid | t.CPtr, size: t.CSizeT, block_size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemSlab, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemSlab, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemSlab) -> t.CInt: pass -class MemBuddy(MemManager): - max_order: t.CInt - free_lists: t.CUInt64T | t.CPtr - lock_val: t.CVolatile | t.CInt - usable: t.CVoid | t.CPtr - usable_size: t.CSizeT - def __init__(self: MemBuddy, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def _fl_push(self: MemBuddy, order: t.CInt, block: t.CVoid | t.CPtr) -> t.CInt: pass - def _fl_pop(self: MemBuddy, order: t.CInt) -> t.CVoid | t.CPtr: pass - def _fl_find_and_remove(self: MemBuddy, order: t.CInt, target: t.CVoid | t.CPtr) -> t.CInt: pass - def _buddy_of(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CVoid | t.CPtr: pass - def _order_for_size(self: MemBuddy, size: t.CSizeT) -> t.CInt: pass - def _split_to_order(self: MemBuddy, to_order: t.CInt) -> t.CVoid | t.CPtr: pass - def _coalesce(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CInt: pass - def _is_valid_ptr(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def _lock(self: MemBuddy) -> t.CInt: pass - def _unlock(self: MemBuddy) -> t.CInt: pass - def alloc(self: MemBuddy, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemBuddy) -> t.CInt: pass - def realloc(self: MemBuddy, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass \ No newline at end of file diff --git a/Test/SimdTest/temp/f3560b99de458aec.pyi b/Test/SimdTest/temp/f3560b99de458aec.pyi new file mode 100644 index 0000000..84f0bbf --- /dev/null +++ b/Test/SimdTest/temp/f3560b99de458aec.pyi @@ -0,0 +1,86 @@ +""" +Auto-generated Python stub file from memhub.py +Module: memhub +""" + + +import t, c +from stdint import * +import string +import atom +import viperio + +MEMHUB_ALIGN: t.CDefine = 8 +MEMSLAB_MIN_BLOCK: t.CDefine = 16 +MEMSLAB_BITMAP_BYTES: t.CDefine = 256 +MEMBUDDY_MIN_BLOCK: t.CDefine = 32 +MEMBUDDY_MAX_ORDERS: t.CDefine = 32 +MEMBUDDY_HEADER_SIZE: t.CDefine = 8 + +def _align_up(val: t.CSizeT, align: t.CSizeT) -> t.CSizeT: pass + +def _largest_pow2_le(val: t.CSizeT) -> t.CSizeT: pass + +def _block_size_at_order(order: t.CInt) -> t.CSizeT: pass + + +@t.CVTable +class MemManager: + __provides__: list[str] = ['__memmgr__'] + base: t.CVoid | t.CPtr + size: t.CSizeT + def __init__(self: MemManager, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemManager, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemManager, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemManager) -> t.CInt: pass + def calloc(self: MemManager, count: t.CSizeT, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def realloc(self: MemManager, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def __enter__(self: MemManager) -> 'MemManager' | t.CPtr: pass + def __exit__(self: MemManager) -> t.CInt: pass + def alloc_buf(self: MemManager, capacity: t.CSizeT) -> viperio.Buf | t.CPtr: pass +class MemPool(MemManager): + offset: t.CSizeT + high_water: t.CSizeT + def __init__(self: MemPool, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemPool, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemPool, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemPool) -> t.CInt: pass +class MemSlab(MemManager): + block_size: t.CSizeT + block_count: t.CSizeT + used_count: t.CSizeT + free_list: t.CVoid | t.CPtr + alloc_map: t.CUInt8T | t.CPtr + alloc_map_size: t.CSizeT + usable: t.CVoid | t.CPtr + usable_size: t.CSizeT + def __init__(self: MemSlab, base: t.CVoid | t.CPtr, size: t.CSizeT, block_size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemSlab, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemSlab, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemSlab) -> t.CInt: pass +class MemBuddy(MemManager): + max_order: t.CInt + free_lists: t.CUInt64T | t.CPtr + lock_val: t.CVolatile | t.CInt + usable: t.CVoid | t.CPtr + usable_size: t.CSizeT + def __init__(self: MemBuddy, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def _fl_push(self: MemBuddy, order: t.CInt, block: t.CVoid | t.CPtr) -> t.CInt: pass + def _fl_pop(self: MemBuddy, order: t.CInt) -> t.CVoid | t.CPtr: pass + def _fl_find_and_remove(self: MemBuddy, order: t.CInt, target: t.CVoid | t.CPtr) -> t.CInt: pass + def _buddy_of(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CVoid | t.CPtr: pass + def _order_for_size(self: MemBuddy, size: t.CSizeT) -> t.CInt: pass + def _split_to_order(self: MemBuddy, to_order: t.CInt) -> t.CVoid | t.CPtr: pass + def _coalesce(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CInt: pass + def _is_valid_ptr(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def _lock(self: MemBuddy) -> t.CInt: pass + def _unlock(self: MemBuddy) -> t.CInt: pass + def alloc(self: MemBuddy, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemBuddy) -> t.CInt: pass + def realloc(self: MemBuddy, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + @property + def mem_size(self: MemBuddy) -> t.CSizeT: pass + def stats(self: MemBuddy) -> t.CSizeT: pass + def free_count(self: MemBuddy) -> t.CSizeT: pass + def self_check(self: MemBuddy) -> t.CInt: pass \ No newline at end of file diff --git a/Test/SprintfTest/output/f492cb40d913400b.deps.json b/Test/SprintfTest/output/f492cb40d913400b.deps.json index 2a993fa..f9bd8c9 100644 --- a/Test/SprintfTest/output/f492cb40d913400b.deps.json +++ b/Test/SprintfTest/output/f492cb40d913400b.deps.json @@ -1 +1 @@ -{"stdio": "6f62fe05c5ea1ceb", "stdarg": "71e0a3ffcb3ebfad", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperlib": "c3b259b4059f8668", "viperio": "c9f4be41ca1cc2b4", "testcheck": "dd3002730623424b", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"testcheck": "14d33679f7fadf1f", "stdio": "6f62fe05c5ea1ceb", "stdarg": "71e0a3ffcb3ebfad", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperlib": "c3b259b4059f8668", "viperio": "c9f4be41ca1cc2b4", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/SprintfTest/temp/dd3002730623424b.pyi b/Test/SprintfTest/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/SprintfTest/temp/dd3002730623424b.pyi rename to Test/SprintfTest/temp/14d33679f7fadf1f.pyi diff --git a/Test/SprintfTest/temp/_phase1_manifest.json b/Test/SprintfTest/temp/_phase1_manifest.json index f7bb7c9..02925cc 100644 --- a/Test/SprintfTest/temp/_phase1_manifest.json +++ b/Test/SprintfTest/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\SprintfTest\\App\\main.py": {"sha1": "f492cb40d913400b", "mtime": 1782821953.0346377, "size": 4235}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdarg.py": {"sha1": "71e0a3ffcb3ebfad", "mtime": 1781258888.113146, "size": 277}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperlib.py": {"sha1": "c3b259b4059f8668", "mtime": 1782821991.979496, "size": 56772}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\SprintfTest\\App\\main.py": {"sha1": "f492cb40d913400b", "mtime": 1782821953.0346377, "size": 4235}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdarg.py": {"sha1": "71e0a3ffcb3ebfad", "mtime": 1781258888.113146, "size": 277}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperlib.py": {"sha1": "c3b259b4059f8668", "mtime": 1782821991.979496, "size": 56772}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file diff --git a/Test/SprintfTest/temp/_sha1_map.txt b/Test/SprintfTest/temp/_sha1_map.txt index 6e81a3d..3921ea1 100644 --- a/Test/SprintfTest/temp/_sha1_map.txt +++ b/Test/SprintfTest/temp/_sha1_map.txt @@ -1,3 +1,4 @@ +14d33679f7fadf1f:includes/testcheck.py 6f62fe05c5ea1ceb:includes/stdio.py 71e0a3ffcb3ebfad:includes/stdarg.py 7e529fe7a078cfef:includes/w32\win32base.py @@ -5,6 +6,5 @@ bbdf3bbd4c3bc28c:includes/w32\win32console.py c3b259b4059f8668:includes/viperlib.py c9f4be41ca1cc2b4:includes/viperio.py -dd3002730623424b:includes/testcheck.py f492cb40d913400b:main.py f5522571bcce7bcb:includes/stdint.py diff --git a/Test/StringIterTest/output/924ed8cd4ea5c4c2.deps.json b/Test/StringIterTest/output/924ed8cd4ea5c4c2.deps.json index eafa78c..702be07 100644 --- a/Test/StringIterTest/output/924ed8cd4ea5c4c2.deps.json +++ b/Test/StringIterTest/output/924ed8cd4ea5c4c2.deps.json @@ -1 +1 @@ -{"atom": "271ea3decb810db2", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperio": "c9f4be41ca1cc2b4", "testcheck": "dd3002730623424b", "memhub": "ee084e9fc6ee413a", "_list": "f2ecbf8ced20575c", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"testcheck": "14d33679f7fadf1f", "atom": "271ea3decb810db2", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperio": "c9f4be41ca1cc2b4", "_list": "f2ecbf8ced20575c", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/StringIterTest/temp/dd3002730623424b.pyi b/Test/StringIterTest/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/StringIterTest/temp/dd3002730623424b.pyi rename to Test/StringIterTest/temp/14d33679f7fadf1f.pyi diff --git a/Test/StringIterTest/temp/9474791561654346.pyi b/Test/StringIterTest/temp/9474791561654346.pyi new file mode 100644 index 0000000..1f82b1e --- /dev/null +++ b/Test/StringIterTest/temp/9474791561654346.pyi @@ -0,0 +1,59 @@ +""" +Auto-generated Python stub file from string.py +Module: string +""" + + +from stdint import * +import t, c + +def strcpy(dest: str, src: str) -> str: pass + +def strcat(dest: str, src: str) -> str: pass + +def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass + +def strlen(src: str) -> t.CSizeT | t.CExport: pass + +def strcmp(str1: str, str2: str) -> t.CInt: pass + +def samestr(str1: str, str2: str) -> bool: pass + +def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass + +def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass + +def strchr(s: str, cr: t.CInt) -> str: pass + +def strrchr(s: str, cr: t.CInt) -> str: pass + +def strstr(s: str, needle: str) -> str: pass + +def strspn(s: str, skip: str) -> int: pass + +def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def atoi(src: str) -> t.CInt: pass + +def atoll(src: str) -> t.CInt64T: pass + +def atof(src: str) -> t.CDouble: pass + +def split(s: str, delim: str, result: t.CArray[str]) -> int: pass + + +ascii_lowercase: t.CExtern | str +ascii_uppercase: t.CExtern | str +ascii_letters: t.CExtern | str +digits: t.CExtern | str +hexdigits: t.CExtern | str +octdigits: t.CExtern | str +punctuation: t.CExtern | str +whitespace: t.CExtern | str +printable: t.CExtern | str \ No newline at end of file diff --git a/Test/StringIterTest/temp/_phase1_manifest.json b/Test/StringIterTest/temp/_phase1_manifest.json index 3764bfc..8f59dbb 100644 --- a/Test/StringIterTest/temp/_phase1_manifest.json +++ b/Test/StringIterTest/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\StringIterTest\\App\\main.py": {"sha1": "924ed8cd4ea5c4c2", "mtime": 1782271507.3310895, "size": 6472}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\_list.py": {"sha1": "f2ecbf8ced20575c", "mtime": 1784203829.5212443, "size": 3277}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\atom.py": {"sha1": "271ea3decb810db2", "mtime": 1782226548.693161, "size": 1290}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\memhub.py": {"sha1": "ee084e9fc6ee413a", "mtime": 1784214242.4485993, "size": 17765}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "ab6e54ba9a669f76", "mtime": 1783933178.7264287, "size": 9922}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\StringIterTest\\App\\main.py": {"sha1": "924ed8cd4ea5c4c2", "mtime": 1782271507.3310895, "size": 6472}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\_list.py": {"sha1": "f2ecbf8ced20575c", "mtime": 1784203829.5212443, "size": 3277}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\atom.py": {"sha1": "271ea3decb810db2", "mtime": 1782226548.693161, "size": 1290}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\memhub.py": {"sha1": "f3560b99de458aec", "mtime": 1784375410.1873891, "size": 19458}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "9474791561654346", "mtime": 1784387475.6951904, "size": 10395}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file diff --git a/Test/StringIterTest/temp/_sha1_map.txt b/Test/StringIterTest/temp/_sha1_map.txt index e03ebeb..169af2b 100644 --- a/Test/StringIterTest/temp/_sha1_map.txt +++ b/Test/StringIterTest/temp/_sha1_map.txt @@ -1,11 +1,11 @@ +14d33679f7fadf1f:includes/testcheck.py 271ea3decb810db2:includes/atom.py 6f62fe05c5ea1ceb:includes/stdio.py 7e529fe7a078cfef:includes/w32\win32base.py 924ed8cd4ea5c4c2:main.py -ab6e54ba9a669f76:includes/string.py +9474791561654346:includes/string.py bbdf3bbd4c3bc28c:includes/w32\win32console.py c9f4be41ca1cc2b4:includes/viperio.py -dd3002730623424b:includes/testcheck.py -ee084e9fc6ee413a:includes/memhub.py f2ecbf8ced20575c:includes/_list.py +f3560b99de458aec:includes/memhub.py f5522571bcce7bcb:includes/stdint.py diff --git a/Test/StringIterTest/temp/ab6e54ba9a669f76.pyi b/Test/StringIterTest/temp/ab6e54ba9a669f76.pyi deleted file mode 100644 index 4fc3440..0000000 --- a/Test/StringIterTest/temp/ab6e54ba9a669f76.pyi +++ /dev/null @@ -1,48 +0,0 @@ -""" -Auto-generated Python stub file from string.py -Module: string -""" - - -from stdint import * -import t, c - -def strcpy(dest: str, src: str) -> str: pass - -def strcat(dest: str, src: str) -> str: pass - -def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass - -def strlen(src: str) -> t.CSizeT | t.CExport: pass - -def strcmp(str1: str, str2: str) -> t.CInt: pass - -def samestr(str1: str, str2: str) -> bool: pass - -def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass - -def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass - -def strchr(s: str, cr: t.CInt) -> str: pass - -def strrchr(s: str, cr: t.CInt) -> str: pass - -def strstr(s: str, needle: str) -> str: pass - -def strspn(s: str, skip: str) -> int: pass - -def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def atoi(src: str) -> t.CInt: pass - -def atoll(src: str) -> t.CInt64T: pass - -def atof(src: str) -> t.CDouble: pass - -def split(s: str, delim: str, result: t.CArray[str]) -> int: pass diff --git a/Test/StringIterTest/temp/ee084e9fc6ee413a.pyi b/Test/StringIterTest/temp/ee084e9fc6ee413a.pyi deleted file mode 100644 index 45551ef..0000000 --- a/Test/StringIterTest/temp/ee084e9fc6ee413a.pyi +++ /dev/null @@ -1,81 +0,0 @@ -""" -Auto-generated Python stub file from memhub.py -Module: memhub -""" - - -import t, c -from stdint import * -import string -import atom -import viperio - -MEMHUB_ALIGN: t.CDefine = 8 -MEMSLAB_MIN_BLOCK: t.CDefine = 16 -MEMSLAB_BITMAP_BYTES: t.CDefine = 256 -MEMBUDDY_MIN_BLOCK: t.CDefine = 32 -MEMBUDDY_MAX_ORDERS: t.CDefine = 32 -MEMBUDDY_HEADER_SIZE: t.CDefine = 8 - -def _align_up(val: t.CSizeT, align: t.CSizeT) -> t.CSizeT: pass - -def _largest_pow2_le(val: t.CSizeT) -> t.CSizeT: pass - -def _block_size_at_order(order: t.CInt) -> t.CSizeT: pass - - -@t.CVTable -class MemManager: - __provides__: list[str] = ['__memmgr__'] - base: t.CVoid | t.CPtr - size: t.CSizeT - def __init__(self: MemManager, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemManager, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemManager, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemManager) -> t.CInt: pass - def calloc(self: MemManager, count: t.CSizeT, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def realloc(self: MemManager, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def __enter__(self: MemManager) -> 'MemManager' | t.CPtr: pass - def __exit__(self: MemManager) -> t.CInt: pass - def alloc_buf(self: MemManager, capacity: t.CSizeT) -> viperio.Buf | t.CPtr: pass -class MemPool(MemManager): - offset: t.CSizeT - high_water: t.CSizeT - def __init__(self: MemPool, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemPool, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemPool, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemPool) -> t.CInt: pass -class MemSlab(MemManager): - block_size: t.CSizeT - block_count: t.CSizeT - used_count: t.CSizeT - free_list: t.CVoid | t.CPtr - alloc_map: t.CUInt8T | t.CPtr - alloc_map_size: t.CSizeT - usable: t.CVoid | t.CPtr - usable_size: t.CSizeT - def __init__(self: MemSlab, base: t.CVoid | t.CPtr, size: t.CSizeT, block_size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemSlab, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemSlab, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemSlab) -> t.CInt: pass -class MemBuddy(MemManager): - max_order: t.CInt - free_lists: t.CUInt64T | t.CPtr - lock_val: t.CVolatile | t.CInt - usable: t.CVoid | t.CPtr - usable_size: t.CSizeT - def __init__(self: MemBuddy, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def _fl_push(self: MemBuddy, order: t.CInt, block: t.CVoid | t.CPtr) -> t.CInt: pass - def _fl_pop(self: MemBuddy, order: t.CInt) -> t.CVoid | t.CPtr: pass - def _fl_find_and_remove(self: MemBuddy, order: t.CInt, target: t.CVoid | t.CPtr) -> t.CInt: pass - def _buddy_of(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CVoid | t.CPtr: pass - def _order_for_size(self: MemBuddy, size: t.CSizeT) -> t.CInt: pass - def _split_to_order(self: MemBuddy, to_order: t.CInt) -> t.CVoid | t.CPtr: pass - def _coalesce(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CInt: pass - def _is_valid_ptr(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def _lock(self: MemBuddy) -> t.CInt: pass - def _unlock(self: MemBuddy) -> t.CInt: pass - def alloc(self: MemBuddy, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemBuddy) -> t.CInt: pass - def realloc(self: MemBuddy, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass \ No newline at end of file diff --git a/Test/StringIterTest/temp/f3560b99de458aec.pyi b/Test/StringIterTest/temp/f3560b99de458aec.pyi new file mode 100644 index 0000000..84f0bbf --- /dev/null +++ b/Test/StringIterTest/temp/f3560b99de458aec.pyi @@ -0,0 +1,86 @@ +""" +Auto-generated Python stub file from memhub.py +Module: memhub +""" + + +import t, c +from stdint import * +import string +import atom +import viperio + +MEMHUB_ALIGN: t.CDefine = 8 +MEMSLAB_MIN_BLOCK: t.CDefine = 16 +MEMSLAB_BITMAP_BYTES: t.CDefine = 256 +MEMBUDDY_MIN_BLOCK: t.CDefine = 32 +MEMBUDDY_MAX_ORDERS: t.CDefine = 32 +MEMBUDDY_HEADER_SIZE: t.CDefine = 8 + +def _align_up(val: t.CSizeT, align: t.CSizeT) -> t.CSizeT: pass + +def _largest_pow2_le(val: t.CSizeT) -> t.CSizeT: pass + +def _block_size_at_order(order: t.CInt) -> t.CSizeT: pass + + +@t.CVTable +class MemManager: + __provides__: list[str] = ['__memmgr__'] + base: t.CVoid | t.CPtr + size: t.CSizeT + def __init__(self: MemManager, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemManager, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemManager, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemManager) -> t.CInt: pass + def calloc(self: MemManager, count: t.CSizeT, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def realloc(self: MemManager, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def __enter__(self: MemManager) -> 'MemManager' | t.CPtr: pass + def __exit__(self: MemManager) -> t.CInt: pass + def alloc_buf(self: MemManager, capacity: t.CSizeT) -> viperio.Buf | t.CPtr: pass +class MemPool(MemManager): + offset: t.CSizeT + high_water: t.CSizeT + def __init__(self: MemPool, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemPool, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemPool, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemPool) -> t.CInt: pass +class MemSlab(MemManager): + block_size: t.CSizeT + block_count: t.CSizeT + used_count: t.CSizeT + free_list: t.CVoid | t.CPtr + alloc_map: t.CUInt8T | t.CPtr + alloc_map_size: t.CSizeT + usable: t.CVoid | t.CPtr + usable_size: t.CSizeT + def __init__(self: MemSlab, base: t.CVoid | t.CPtr, size: t.CSizeT, block_size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemSlab, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemSlab, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemSlab) -> t.CInt: pass +class MemBuddy(MemManager): + max_order: t.CInt + free_lists: t.CUInt64T | t.CPtr + lock_val: t.CVolatile | t.CInt + usable: t.CVoid | t.CPtr + usable_size: t.CSizeT + def __init__(self: MemBuddy, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def _fl_push(self: MemBuddy, order: t.CInt, block: t.CVoid | t.CPtr) -> t.CInt: pass + def _fl_pop(self: MemBuddy, order: t.CInt) -> t.CVoid | t.CPtr: pass + def _fl_find_and_remove(self: MemBuddy, order: t.CInt, target: t.CVoid | t.CPtr) -> t.CInt: pass + def _buddy_of(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CVoid | t.CPtr: pass + def _order_for_size(self: MemBuddy, size: t.CSizeT) -> t.CInt: pass + def _split_to_order(self: MemBuddy, to_order: t.CInt) -> t.CVoid | t.CPtr: pass + def _coalesce(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CInt: pass + def _is_valid_ptr(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def _lock(self: MemBuddy) -> t.CInt: pass + def _unlock(self: MemBuddy) -> t.CInt: pass + def alloc(self: MemBuddy, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemBuddy) -> t.CInt: pass + def realloc(self: MemBuddy, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + @property + def mem_size(self: MemBuddy) -> t.CSizeT: pass + def stats(self: MemBuddy) -> t.CSizeT: pass + def free_count(self: MemBuddy) -> t.CSizeT: pass + def self_check(self: MemBuddy) -> t.CInt: pass \ No newline at end of file diff --git a/Test/StringTest/output/39178dc5ba692b92.deps.json b/Test/StringTest/output/39178dc5ba692b92.deps.json index 9da11e2..48c6c93 100644 --- a/Test/StringTest/output/39178dc5ba692b92.deps.json +++ b/Test/StringTest/output/39178dc5ba692b92.deps.json @@ -1 +1 @@ -{"stdio": "6f62fe05c5ea1ceb", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "testcheck": "dd3002730623424b", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"testcheck": "14d33679f7fadf1f", "stdio": "6f62fe05c5ea1ceb", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/StringTest/temp/dd3002730623424b.pyi b/Test/StringTest/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/StringTest/temp/dd3002730623424b.pyi rename to Test/StringTest/temp/14d33679f7fadf1f.pyi diff --git a/Test/StringTest/temp/9474791561654346.pyi b/Test/StringTest/temp/9474791561654346.pyi new file mode 100644 index 0000000..1f82b1e --- /dev/null +++ b/Test/StringTest/temp/9474791561654346.pyi @@ -0,0 +1,59 @@ +""" +Auto-generated Python stub file from string.py +Module: string +""" + + +from stdint import * +import t, c + +def strcpy(dest: str, src: str) -> str: pass + +def strcat(dest: str, src: str) -> str: pass + +def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass + +def strlen(src: str) -> t.CSizeT | t.CExport: pass + +def strcmp(str1: str, str2: str) -> t.CInt: pass + +def samestr(str1: str, str2: str) -> bool: pass + +def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass + +def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass + +def strchr(s: str, cr: t.CInt) -> str: pass + +def strrchr(s: str, cr: t.CInt) -> str: pass + +def strstr(s: str, needle: str) -> str: pass + +def strspn(s: str, skip: str) -> int: pass + +def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def atoi(src: str) -> t.CInt: pass + +def atoll(src: str) -> t.CInt64T: pass + +def atof(src: str) -> t.CDouble: pass + +def split(s: str, delim: str, result: t.CArray[str]) -> int: pass + + +ascii_lowercase: t.CExtern | str +ascii_uppercase: t.CExtern | str +ascii_letters: t.CExtern | str +digits: t.CExtern | str +hexdigits: t.CExtern | str +octdigits: t.CExtern | str +punctuation: t.CExtern | str +whitespace: t.CExtern | str +printable: t.CExtern | str \ No newline at end of file diff --git a/Test/StringTest/temp/_phase1_manifest.json b/Test/StringTest/temp/_phase1_manifest.json index e223450..ce69661 100644 --- a/Test/StringTest/temp/_phase1_manifest.json +++ b/Test/StringTest/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\StringTest\\App\\main.py": {"sha1": "39178dc5ba692b92", "mtime": 1782271507.3310895, "size": 3265}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "ab6e54ba9a669f76", "mtime": 1783933178.7264287, "size": 9922}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32memory.py": {"sha1": "72e2d5ccb7cedcf1", "mtime": 1781200703.5389092, "size": 3142}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\StringTest\\App\\main.py": {"sha1": "39178dc5ba692b92", "mtime": 1782271507.3310895, "size": 3265}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "9474791561654346", "mtime": 1784387475.6951904, "size": 10395}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32memory.py": {"sha1": "72e2d5ccb7cedcf1", "mtime": 1781200703.5389092, "size": 3142}} \ No newline at end of file diff --git a/Test/StringTest/temp/_sha1_map.txt b/Test/StringTest/temp/_sha1_map.txt index 90054fd..5bfefa3 100644 --- a/Test/StringTest/temp/_sha1_map.txt +++ b/Test/StringTest/temp/_sha1_map.txt @@ -1,8 +1,8 @@ +14d33679f7fadf1f:includes/testcheck.py 39178dc5ba692b92:main.py 6f62fe05c5ea1ceb:includes/stdio.py 72e2d5ccb7cedcf1:includes/w32\win32memory.py 7e529fe7a078cfef:includes/w32\win32base.py -ab6e54ba9a669f76:includes/string.py +9474791561654346:includes/string.py bbdf3bbd4c3bc28c:includes/w32\win32console.py -dd3002730623424b:includes/testcheck.py f5522571bcce7bcb:includes/stdint.py diff --git a/Test/StringTest/temp/ab6e54ba9a669f76.pyi b/Test/StringTest/temp/ab6e54ba9a669f76.pyi deleted file mode 100644 index 4fc3440..0000000 --- a/Test/StringTest/temp/ab6e54ba9a669f76.pyi +++ /dev/null @@ -1,48 +0,0 @@ -""" -Auto-generated Python stub file from string.py -Module: string -""" - - -from stdint import * -import t, c - -def strcpy(dest: str, src: str) -> str: pass - -def strcat(dest: str, src: str) -> str: pass - -def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass - -def strlen(src: str) -> t.CSizeT | t.CExport: pass - -def strcmp(str1: str, str2: str) -> t.CInt: pass - -def samestr(str1: str, str2: str) -> bool: pass - -def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass - -def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass - -def strchr(s: str, cr: t.CInt) -> str: pass - -def strrchr(s: str, cr: t.CInt) -> str: pass - -def strstr(s: str, needle: str) -> str: pass - -def strspn(s: str, skip: str) -> int: pass - -def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def atoi(src: str) -> t.CInt: pass - -def atoll(src: str) -> t.CInt64T: pass - -def atof(src: str) -> t.CDouble: pass - -def split(s: str, delim: str, result: t.CArray[str]) -> int: pass diff --git a/Test/StructTest/output/24e26a8de1173993.deps.json b/Test/StructTest/output/24e26a8de1173993.deps.json index 9da11e2..48c6c93 100644 --- a/Test/StructTest/output/24e26a8de1173993.deps.json +++ b/Test/StructTest/output/24e26a8de1173993.deps.json @@ -1 +1 @@ -{"stdio": "6f62fe05c5ea1ceb", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "testcheck": "dd3002730623424b", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"testcheck": "14d33679f7fadf1f", "stdio": "6f62fe05c5ea1ceb", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/StructTest/temp/dd3002730623424b.pyi b/Test/StructTest/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/StructTest/temp/dd3002730623424b.pyi rename to Test/StructTest/temp/14d33679f7fadf1f.pyi diff --git a/Test/StructTest/temp/9474791561654346.pyi b/Test/StructTest/temp/9474791561654346.pyi new file mode 100644 index 0000000..1f82b1e --- /dev/null +++ b/Test/StructTest/temp/9474791561654346.pyi @@ -0,0 +1,59 @@ +""" +Auto-generated Python stub file from string.py +Module: string +""" + + +from stdint import * +import t, c + +def strcpy(dest: str, src: str) -> str: pass + +def strcat(dest: str, src: str) -> str: pass + +def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass + +def strlen(src: str) -> t.CSizeT | t.CExport: pass + +def strcmp(str1: str, str2: str) -> t.CInt: pass + +def samestr(str1: str, str2: str) -> bool: pass + +def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass + +def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass + +def strchr(s: str, cr: t.CInt) -> str: pass + +def strrchr(s: str, cr: t.CInt) -> str: pass + +def strstr(s: str, needle: str) -> str: pass + +def strspn(s: str, skip: str) -> int: pass + +def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def atoi(src: str) -> t.CInt: pass + +def atoll(src: str) -> t.CInt64T: pass + +def atof(src: str) -> t.CDouble: pass + +def split(s: str, delim: str, result: t.CArray[str]) -> int: pass + + +ascii_lowercase: t.CExtern | str +ascii_uppercase: t.CExtern | str +ascii_letters: t.CExtern | str +digits: t.CExtern | str +hexdigits: t.CExtern | str +octdigits: t.CExtern | str +punctuation: t.CExtern | str +whitespace: t.CExtern | str +printable: t.CExtern | str \ No newline at end of file diff --git a/Test/StructTest/temp/_phase1_manifest.json b/Test/StructTest/temp/_phase1_manifest.json index 9b92f7a..8ce559e 100644 --- a/Test/StructTest/temp/_phase1_manifest.json +++ b/Test/StructTest/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\StructTest\\App\\main.py": {"sha1": "24e26a8de1173993", "mtime": 1782271507.3310895, "size": 2500}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "ab6e54ba9a669f76", "mtime": 1783933178.7264287, "size": 9922}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32memory.py": {"sha1": "72e2d5ccb7cedcf1", "mtime": 1781200703.5389092, "size": 3142}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\StructTest\\App\\main.py": {"sha1": "24e26a8de1173993", "mtime": 1782271507.3310895, "size": 2500}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "9474791561654346", "mtime": 1784387475.6951904, "size": 10395}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32memory.py": {"sha1": "72e2d5ccb7cedcf1", "mtime": 1781200703.5389092, "size": 3142}} \ No newline at end of file diff --git a/Test/StructTest/temp/_sha1_map.txt b/Test/StructTest/temp/_sha1_map.txt index fdfce98..6e50d22 100644 --- a/Test/StructTest/temp/_sha1_map.txt +++ b/Test/StructTest/temp/_sha1_map.txt @@ -1,8 +1,8 @@ +14d33679f7fadf1f:includes/testcheck.py 24e26a8de1173993:main.py 6f62fe05c5ea1ceb:includes/stdio.py 72e2d5ccb7cedcf1:includes/w32\win32memory.py 7e529fe7a078cfef:includes/w32\win32base.py -ab6e54ba9a669f76:includes/string.py +9474791561654346:includes/string.py bbdf3bbd4c3bc28c:includes/w32\win32console.py -dd3002730623424b:includes/testcheck.py f5522571bcce7bcb:includes/stdint.py diff --git a/Test/StructTest/temp/ab6e54ba9a669f76.pyi b/Test/StructTest/temp/ab6e54ba9a669f76.pyi deleted file mode 100644 index 4fc3440..0000000 --- a/Test/StructTest/temp/ab6e54ba9a669f76.pyi +++ /dev/null @@ -1,48 +0,0 @@ -""" -Auto-generated Python stub file from string.py -Module: string -""" - - -from stdint import * -import t, c - -def strcpy(dest: str, src: str) -> str: pass - -def strcat(dest: str, src: str) -> str: pass - -def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass - -def strlen(src: str) -> t.CSizeT | t.CExport: pass - -def strcmp(str1: str, str2: str) -> t.CInt: pass - -def samestr(str1: str, str2: str) -> bool: pass - -def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass - -def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass - -def strchr(s: str, cr: t.CInt) -> str: pass - -def strrchr(s: str, cr: t.CInt) -> str: pass - -def strstr(s: str, needle: str) -> str: pass - -def strspn(s: str, skip: str) -> int: pass - -def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def atoi(src: str) -> t.CInt: pass - -def atoll(src: str) -> t.CInt64T: pass - -def atof(src: str) -> t.CDouble: pass - -def split(s: str, delim: str, result: t.CArray[str]) -> int: pass diff --git a/Test/SysLibTest/output/59e00d50660b941e.deps.json b/Test/SysLibTest/output/59e00d50660b941e.deps.json index 7a3a27b..b7dea4b 100644 --- a/Test/SysLibTest/output/59e00d50660b941e.deps.json +++ b/Test/SysLibTest/output/59e00d50660b941e.deps.json @@ -1 +1 @@ -{"w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "os.path": "13110effbb0bb06c", "path": "13110effbb0bb06c", "atom": "271ea3decb810db2", "subprocess": "2da636c61863c815", "posix": "6503c97dde0c79c4", "stdio": "6f62fe05c5ea1ceb", "stdarg": "71e0a3ffcb3ebfad", "os.__init__": "76dd6c275aa72b3b", "__init__": "76dd6c275aa72b3b", "os": "76dd6c275aa72b3b", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "platmacro": "93c1d18e35d188d6", "syslibtest_impl": "a03139660029514f", "os._win32": "a68b70f233541a7f", "_win32": "a68b70f233541a7f", "string": "ab6e54ba9a669f76", "shutil": "abbcbd92436cc16a", "sys": "b5a965302cded36b", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperlib": "c3b259b4059f8668", "main": "c70684ccfe48a5a9", "viperio": "c9f4be41ca1cc2b4", "os._posix": "d152115b49e50218", "_posix": "d152115b49e50218", "testcheck": "dd3002730623424b", "memhub": "ee084e9fc6ee413a", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0"} \ No newline at end of file +{"w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "os.path": "13110effbb0bb06c", "path": "13110effbb0bb06c", "testcheck": "14d33679f7fadf1f", "atom": "271ea3decb810db2", "subprocess": "2da636c61863c815", "posix": "6503c97dde0c79c4", "stdio": "6f62fe05c5ea1ceb", "stdarg": "71e0a3ffcb3ebfad", "os.__init__": "76dd6c275aa72b3b", "__init__": "76dd6c275aa72b3b", "os": "76dd6c275aa72b3b", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "platmacro": "93c1d18e35d188d6", "string": "9474791561654346", "syslibtest_impl": "a03139660029514f", "os._win32": "a68b70f233541a7f", "_win32": "a68b70f233541a7f", "shutil": "abbcbd92436cc16a", "sys": "b5a965302cded36b", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperlib": "c3b259b4059f8668", "main": "c70684ccfe48a5a9", "viperio": "c9f4be41ca1cc2b4", "os._posix": "d152115b49e50218", "_posix": "d152115b49e50218", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0"} \ No newline at end of file diff --git a/Test/SysLibTest/output/a03139660029514f.deps.json b/Test/SysLibTest/output/a03139660029514f.deps.json index d1a0bbe..a1db010 100644 --- a/Test/SysLibTest/output/a03139660029514f.deps.json +++ b/Test/SysLibTest/output/a03139660029514f.deps.json @@ -1 +1 @@ -{"w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "os.path": "13110effbb0bb06c", "path": "13110effbb0bb06c", "atom": "271ea3decb810db2", "subprocess": "2da636c61863c815", "os_backend": "59e00d50660b941e", "posix": "6503c97dde0c79c4", "stdio": "6f62fe05c5ea1ceb", "stdarg": "71e0a3ffcb3ebfad", "os.__init__": "76dd6c275aa72b3b", "__init__": "76dd6c275aa72b3b", "os": "76dd6c275aa72b3b", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "platmacro": "93c1d18e35d188d6", "os._win32": "a68b70f233541a7f", "_win32": "a68b70f233541a7f", "string": "ab6e54ba9a669f76", "shutil": "abbcbd92436cc16a", "sys": "b5a965302cded36b", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperlib": "c3b259b4059f8668", "main": "c70684ccfe48a5a9", "viperio": "c9f4be41ca1cc2b4", "os._posix": "d152115b49e50218", "_posix": "d152115b49e50218", "testcheck": "dd3002730623424b", "memhub": "ee084e9fc6ee413a", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0"} \ No newline at end of file +{"w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "os.path": "13110effbb0bb06c", "path": "13110effbb0bb06c", "testcheck": "14d33679f7fadf1f", "atom": "271ea3decb810db2", "subprocess": "2da636c61863c815", "os_backend": "59e00d50660b941e", "posix": "6503c97dde0c79c4", "stdio": "6f62fe05c5ea1ceb", "stdarg": "71e0a3ffcb3ebfad", "os.__init__": "76dd6c275aa72b3b", "__init__": "76dd6c275aa72b3b", "os": "76dd6c275aa72b3b", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "platmacro": "93c1d18e35d188d6", "string": "9474791561654346", "os._win32": "a68b70f233541a7f", "_win32": "a68b70f233541a7f", "shutil": "abbcbd92436cc16a", "sys": "b5a965302cded36b", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperlib": "c3b259b4059f8668", "main": "c70684ccfe48a5a9", "viperio": "c9f4be41ca1cc2b4", "os._posix": "d152115b49e50218", "_posix": "d152115b49e50218", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0"} \ No newline at end of file diff --git a/Test/SysLibTest/output/c70684ccfe48a5a9.deps.json b/Test/SysLibTest/output/c70684ccfe48a5a9.deps.json index 932a326..eb0545d 100644 --- a/Test/SysLibTest/output/c70684ccfe48a5a9.deps.json +++ b/Test/SysLibTest/output/c70684ccfe48a5a9.deps.json @@ -1 +1 @@ -{"w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "os.path": "13110effbb0bb06c", "path": "13110effbb0bb06c", "atom": "271ea3decb810db2", "subprocess": "2da636c61863c815", "os_backend": "59e00d50660b941e", "posix": "6503c97dde0c79c4", "stdio": "6f62fe05c5ea1ceb", "stdarg": "71e0a3ffcb3ebfad", "os.__init__": "76dd6c275aa72b3b", "__init__": "76dd6c275aa72b3b", "os": "76dd6c275aa72b3b", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "platmacro": "93c1d18e35d188d6", "syslibtest_impl": "a03139660029514f", "os._win32": "a68b70f233541a7f", "_win32": "a68b70f233541a7f", "string": "ab6e54ba9a669f76", "shutil": "abbcbd92436cc16a", "sys": "b5a965302cded36b", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperlib": "c3b259b4059f8668", "viperio": "c9f4be41ca1cc2b4", "os._posix": "d152115b49e50218", "_posix": "d152115b49e50218", "testcheck": "dd3002730623424b", "memhub": "ee084e9fc6ee413a", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0"} \ No newline at end of file +{"w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "os.path": "13110effbb0bb06c", "path": "13110effbb0bb06c", "testcheck": "14d33679f7fadf1f", "atom": "271ea3decb810db2", "subprocess": "2da636c61863c815", "os_backend": "59e00d50660b941e", "posix": "6503c97dde0c79c4", "stdio": "6f62fe05c5ea1ceb", "stdarg": "71e0a3ffcb3ebfad", "os.__init__": "76dd6c275aa72b3b", "__init__": "76dd6c275aa72b3b", "os": "76dd6c275aa72b3b", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "platmacro": "93c1d18e35d188d6", "string": "9474791561654346", "syslibtest_impl": "a03139660029514f", "os._win32": "a68b70f233541a7f", "_win32": "a68b70f233541a7f", "shutil": "abbcbd92436cc16a", "sys": "b5a965302cded36b", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperlib": "c3b259b4059f8668", "viperio": "c9f4be41ca1cc2b4", "os._posix": "d152115b49e50218", "_posix": "d152115b49e50218", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0"} \ No newline at end of file diff --git a/Test/SysLibTest/temp/dd3002730623424b.pyi b/Test/SysLibTest/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/SysLibTest/temp/dd3002730623424b.pyi rename to Test/SysLibTest/temp/14d33679f7fadf1f.pyi diff --git a/Test/SysLibTest/temp/9474791561654346.pyi b/Test/SysLibTest/temp/9474791561654346.pyi new file mode 100644 index 0000000..1f82b1e --- /dev/null +++ b/Test/SysLibTest/temp/9474791561654346.pyi @@ -0,0 +1,59 @@ +""" +Auto-generated Python stub file from string.py +Module: string +""" + + +from stdint import * +import t, c + +def strcpy(dest: str, src: str) -> str: pass + +def strcat(dest: str, src: str) -> str: pass + +def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass + +def strlen(src: str) -> t.CSizeT | t.CExport: pass + +def strcmp(str1: str, str2: str) -> t.CInt: pass + +def samestr(str1: str, str2: str) -> bool: pass + +def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass + +def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass + +def strchr(s: str, cr: t.CInt) -> str: pass + +def strrchr(s: str, cr: t.CInt) -> str: pass + +def strstr(s: str, needle: str) -> str: pass + +def strspn(s: str, skip: str) -> int: pass + +def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def atoi(src: str) -> t.CInt: pass + +def atoll(src: str) -> t.CInt64T: pass + +def atof(src: str) -> t.CDouble: pass + +def split(s: str, delim: str, result: t.CArray[str]) -> int: pass + + +ascii_lowercase: t.CExtern | str +ascii_uppercase: t.CExtern | str +ascii_letters: t.CExtern | str +digits: t.CExtern | str +hexdigits: t.CExtern | str +octdigits: t.CExtern | str +punctuation: t.CExtern | str +whitespace: t.CExtern | str +printable: t.CExtern | str \ No newline at end of file diff --git a/Test/SysLibTest/temp/_phase1_manifest.json b/Test/SysLibTest/temp/_phase1_manifest.json index 288b982..29810e7 100644 --- a/Test/SysLibTest/temp/_phase1_manifest.json +++ b/Test/SysLibTest/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\SysLibTest\\App\\main.py": {"sha1": "c70684ccfe48a5a9", "mtime": 1782828223.3150382, "size": 918}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\SysLibTest\\App\\os_backend.py": {"sha1": "59e00d50660b941e", "mtime": 1782491896.4070306, "size": 1323}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\SysLibTest\\App\\syslibtest_impl.py": {"sha1": "a03139660029514f", "mtime": 1782828233.2147534, "size": 12395}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\atom.py": {"sha1": "271ea3decb810db2", "mtime": 1782226548.693161, "size": 1290}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\memhub.py": {"sha1": "ee084e9fc6ee413a", "mtime": 1784214242.4485993, "size": 17765}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\os\\__init__.py": {"sha1": "76dd6c275aa72b3b", "mtime": 1782826646.8940291, "size": 4395}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\os\\_posix.py": {"sha1": "d152115b49e50218", "mtime": 1782826648.538678, "size": 5665}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\os\\_win32.py": {"sha1": "a68b70f233541a7f", "mtime": 1782826646.872196, "size": 7601}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\os\\path.py": {"sha1": "13110effbb0bb06c", "mtime": 1782826648.9189062, "size": 9499}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\platmacro.py": {"sha1": "93c1d18e35d188d6", "mtime": 1781237231.03366, "size": 1422}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\posix.py": {"sha1": "6503c97dde0c79c4", "mtime": 1783064077.6376991, "size": 10386}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\shutil.py": {"sha1": "abbcbd92436cc16a", "mtime": 1782826619.0231705, "size": 9131}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdarg.py": {"sha1": "71e0a3ffcb3ebfad", "mtime": 1781258888.113146, "size": 277}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "ab6e54ba9a669f76", "mtime": 1783933178.7264287, "size": 9922}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\subprocess.py": {"sha1": "2da636c61863c815", "mtime": 1783847277.4569364, "size": 7627}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\sys.py": {"sha1": "b5a965302cded36b", "mtime": 1783569641.07535, "size": 5509}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperlib.py": {"sha1": "c3b259b4059f8668", "mtime": 1782821991.979496, "size": 56772}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\fileio.py": {"sha1": "0035c95a18d4f8e8", "mtime": 1783747022.686592, "size": 14147}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32file.py": {"sha1": "f6b51804a0ba8ff0", "mtime": 1782531158.744144, "size": 8424}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32process.py": {"sha1": "067c78e9f121dce3", "mtime": 1781200703.5409546, "size": 4802}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32sync.py": {"sha1": "06f53cc594b4ac6c", "mtime": 1782297500.2581685, "size": 4726}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\SysLibTest\\App\\main.py": {"sha1": "c70684ccfe48a5a9", "mtime": 1782828223.3150382, "size": 918}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\SysLibTest\\App\\os_backend.py": {"sha1": "59e00d50660b941e", "mtime": 1782491896.4070306, "size": 1323}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\SysLibTest\\App\\syslibtest_impl.py": {"sha1": "a03139660029514f", "mtime": 1782828233.2147534, "size": 12395}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\atom.py": {"sha1": "271ea3decb810db2", "mtime": 1782226548.693161, "size": 1290}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\memhub.py": {"sha1": "f3560b99de458aec", "mtime": 1784375410.1873891, "size": 19458}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\os\\__init__.py": {"sha1": "76dd6c275aa72b3b", "mtime": 1782826646.8940291, "size": 4395}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\os\\_posix.py": {"sha1": "d152115b49e50218", "mtime": 1782826648.538678, "size": 5665}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\os\\_win32.py": {"sha1": "a68b70f233541a7f", "mtime": 1782826646.872196, "size": 7601}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\os\\path.py": {"sha1": "13110effbb0bb06c", "mtime": 1782826648.9189062, "size": 9499}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\platmacro.py": {"sha1": "93c1d18e35d188d6", "mtime": 1781237231.03366, "size": 1422}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\posix.py": {"sha1": "6503c97dde0c79c4", "mtime": 1783064077.6376991, "size": 10386}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\shutil.py": {"sha1": "abbcbd92436cc16a", "mtime": 1782826619.0231705, "size": 9131}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdarg.py": {"sha1": "71e0a3ffcb3ebfad", "mtime": 1781258888.113146, "size": 277}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "9474791561654346", "mtime": 1784387475.6951904, "size": 10395}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\subprocess.py": {"sha1": "2da636c61863c815", "mtime": 1783847277.4569364, "size": 7627}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\sys.py": {"sha1": "b5a965302cded36b", "mtime": 1783569641.07535, "size": 5509}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperlib.py": {"sha1": "c3b259b4059f8668", "mtime": 1782821991.979496, "size": 56772}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\fileio.py": {"sha1": "0035c95a18d4f8e8", "mtime": 1783747022.686592, "size": 14147}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32file.py": {"sha1": "f6b51804a0ba8ff0", "mtime": 1782531158.744144, "size": 8424}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32process.py": {"sha1": "067c78e9f121dce3", "mtime": 1781200703.5409546, "size": 4802}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32sync.py": {"sha1": "06f53cc594b4ac6c", "mtime": 1782297500.2581685, "size": 4726}} \ No newline at end of file diff --git a/Test/SysLibTest/temp/_sha1_map.txt b/Test/SysLibTest/temp/_sha1_map.txt index a6b98c8..8041cef 100644 --- a/Test/SysLibTest/temp/_sha1_map.txt +++ b/Test/SysLibTest/temp/_sha1_map.txt @@ -2,6 +2,7 @@ 067c78e9f121dce3:includes/w32\win32process.py 06f53cc594b4ac6c:includes/w32\win32sync.py 13110effbb0bb06c:includes/os\path.py +14d33679f7fadf1f:includes/testcheck.py 271ea3decb810db2:includes/atom.py 2da636c61863c815:includes/subprocess.py 59e00d50660b941e:os_backend.py @@ -12,9 +13,9 @@ 7e529fe7a078cfef:includes/w32\win32base.py 90c53dd6db8d41cf:includes/stdlib.py 93c1d18e35d188d6:includes/platmacro.py +9474791561654346:includes/string.py a03139660029514f:syslibtest_impl.py a68b70f233541a7f:includes/os\_win32.py -ab6e54ba9a669f76:includes/string.py abbcbd92436cc16a:includes/shutil.py b5a965302cded36b:includes/sys.py bbdf3bbd4c3bc28c:includes/w32\win32console.py @@ -22,7 +23,6 @@ c3b259b4059f8668:includes/viperlib.py c70684ccfe48a5a9:main.py c9f4be41ca1cc2b4:includes/viperio.py d152115b49e50218:includes/os\_posix.py -dd3002730623424b:includes/testcheck.py -ee084e9fc6ee413a:includes/memhub.py +f3560b99de458aec:includes/memhub.py f5522571bcce7bcb:includes/stdint.py f6b51804a0ba8ff0:includes/w32\win32file.py diff --git a/Test/SysLibTest/temp/_shared_sym.json b/Test/SysLibTest/temp/_shared_sym.json index ec0e507..6350724 100644 Binary files a/Test/SysLibTest/temp/_shared_sym.json and b/Test/SysLibTest/temp/_shared_sym.json differ diff --git a/Test/SysLibTest/temp/ab6e54ba9a669f76.pyi b/Test/SysLibTest/temp/ab6e54ba9a669f76.pyi deleted file mode 100644 index 4fc3440..0000000 --- a/Test/SysLibTest/temp/ab6e54ba9a669f76.pyi +++ /dev/null @@ -1,48 +0,0 @@ -""" -Auto-generated Python stub file from string.py -Module: string -""" - - -from stdint import * -import t, c - -def strcpy(dest: str, src: str) -> str: pass - -def strcat(dest: str, src: str) -> str: pass - -def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass - -def strlen(src: str) -> t.CSizeT | t.CExport: pass - -def strcmp(str1: str, str2: str) -> t.CInt: pass - -def samestr(str1: str, str2: str) -> bool: pass - -def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass - -def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass - -def strchr(s: str, cr: t.CInt) -> str: pass - -def strrchr(s: str, cr: t.CInt) -> str: pass - -def strstr(s: str, needle: str) -> str: pass - -def strspn(s: str, skip: str) -> int: pass - -def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def atoi(src: str) -> t.CInt: pass - -def atoll(src: str) -> t.CInt64T: pass - -def atof(src: str) -> t.CDouble: pass - -def split(s: str, delim: str, result: t.CArray[str]) -> int: pass diff --git a/Test/SysLibTest/temp/ee084e9fc6ee413a.pyi b/Test/SysLibTest/temp/ee084e9fc6ee413a.pyi deleted file mode 100644 index 45551ef..0000000 --- a/Test/SysLibTest/temp/ee084e9fc6ee413a.pyi +++ /dev/null @@ -1,81 +0,0 @@ -""" -Auto-generated Python stub file from memhub.py -Module: memhub -""" - - -import t, c -from stdint import * -import string -import atom -import viperio - -MEMHUB_ALIGN: t.CDefine = 8 -MEMSLAB_MIN_BLOCK: t.CDefine = 16 -MEMSLAB_BITMAP_BYTES: t.CDefine = 256 -MEMBUDDY_MIN_BLOCK: t.CDefine = 32 -MEMBUDDY_MAX_ORDERS: t.CDefine = 32 -MEMBUDDY_HEADER_SIZE: t.CDefine = 8 - -def _align_up(val: t.CSizeT, align: t.CSizeT) -> t.CSizeT: pass - -def _largest_pow2_le(val: t.CSizeT) -> t.CSizeT: pass - -def _block_size_at_order(order: t.CInt) -> t.CSizeT: pass - - -@t.CVTable -class MemManager: - __provides__: list[str] = ['__memmgr__'] - base: t.CVoid | t.CPtr - size: t.CSizeT - def __init__(self: MemManager, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemManager, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemManager, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemManager) -> t.CInt: pass - def calloc(self: MemManager, count: t.CSizeT, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def realloc(self: MemManager, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def __enter__(self: MemManager) -> 'MemManager' | t.CPtr: pass - def __exit__(self: MemManager) -> t.CInt: pass - def alloc_buf(self: MemManager, capacity: t.CSizeT) -> viperio.Buf | t.CPtr: pass -class MemPool(MemManager): - offset: t.CSizeT - high_water: t.CSizeT - def __init__(self: MemPool, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemPool, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemPool, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemPool) -> t.CInt: pass -class MemSlab(MemManager): - block_size: t.CSizeT - block_count: t.CSizeT - used_count: t.CSizeT - free_list: t.CVoid | t.CPtr - alloc_map: t.CUInt8T | t.CPtr - alloc_map_size: t.CSizeT - usable: t.CVoid | t.CPtr - usable_size: t.CSizeT - def __init__(self: MemSlab, base: t.CVoid | t.CPtr, size: t.CSizeT, block_size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemSlab, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemSlab, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemSlab) -> t.CInt: pass -class MemBuddy(MemManager): - max_order: t.CInt - free_lists: t.CUInt64T | t.CPtr - lock_val: t.CVolatile | t.CInt - usable: t.CVoid | t.CPtr - usable_size: t.CSizeT - def __init__(self: MemBuddy, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def _fl_push(self: MemBuddy, order: t.CInt, block: t.CVoid | t.CPtr) -> t.CInt: pass - def _fl_pop(self: MemBuddy, order: t.CInt) -> t.CVoid | t.CPtr: pass - def _fl_find_and_remove(self: MemBuddy, order: t.CInt, target: t.CVoid | t.CPtr) -> t.CInt: pass - def _buddy_of(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CVoid | t.CPtr: pass - def _order_for_size(self: MemBuddy, size: t.CSizeT) -> t.CInt: pass - def _split_to_order(self: MemBuddy, to_order: t.CInt) -> t.CVoid | t.CPtr: pass - def _coalesce(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CInt: pass - def _is_valid_ptr(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def _lock(self: MemBuddy) -> t.CInt: pass - def _unlock(self: MemBuddy) -> t.CInt: pass - def alloc(self: MemBuddy, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemBuddy) -> t.CInt: pass - def realloc(self: MemBuddy, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass \ No newline at end of file diff --git a/Test/SysLibTest/temp/f3560b99de458aec.pyi b/Test/SysLibTest/temp/f3560b99de458aec.pyi new file mode 100644 index 0000000..84f0bbf --- /dev/null +++ b/Test/SysLibTest/temp/f3560b99de458aec.pyi @@ -0,0 +1,86 @@ +""" +Auto-generated Python stub file from memhub.py +Module: memhub +""" + + +import t, c +from stdint import * +import string +import atom +import viperio + +MEMHUB_ALIGN: t.CDefine = 8 +MEMSLAB_MIN_BLOCK: t.CDefine = 16 +MEMSLAB_BITMAP_BYTES: t.CDefine = 256 +MEMBUDDY_MIN_BLOCK: t.CDefine = 32 +MEMBUDDY_MAX_ORDERS: t.CDefine = 32 +MEMBUDDY_HEADER_SIZE: t.CDefine = 8 + +def _align_up(val: t.CSizeT, align: t.CSizeT) -> t.CSizeT: pass + +def _largest_pow2_le(val: t.CSizeT) -> t.CSizeT: pass + +def _block_size_at_order(order: t.CInt) -> t.CSizeT: pass + + +@t.CVTable +class MemManager: + __provides__: list[str] = ['__memmgr__'] + base: t.CVoid | t.CPtr + size: t.CSizeT + def __init__(self: MemManager, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemManager, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemManager, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemManager) -> t.CInt: pass + def calloc(self: MemManager, count: t.CSizeT, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def realloc(self: MemManager, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def __enter__(self: MemManager) -> 'MemManager' | t.CPtr: pass + def __exit__(self: MemManager) -> t.CInt: pass + def alloc_buf(self: MemManager, capacity: t.CSizeT) -> viperio.Buf | t.CPtr: pass +class MemPool(MemManager): + offset: t.CSizeT + high_water: t.CSizeT + def __init__(self: MemPool, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemPool, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemPool, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemPool) -> t.CInt: pass +class MemSlab(MemManager): + block_size: t.CSizeT + block_count: t.CSizeT + used_count: t.CSizeT + free_list: t.CVoid | t.CPtr + alloc_map: t.CUInt8T | t.CPtr + alloc_map_size: t.CSizeT + usable: t.CVoid | t.CPtr + usable_size: t.CSizeT + def __init__(self: MemSlab, base: t.CVoid | t.CPtr, size: t.CSizeT, block_size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemSlab, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemSlab, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemSlab) -> t.CInt: pass +class MemBuddy(MemManager): + max_order: t.CInt + free_lists: t.CUInt64T | t.CPtr + lock_val: t.CVolatile | t.CInt + usable: t.CVoid | t.CPtr + usable_size: t.CSizeT + def __init__(self: MemBuddy, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def _fl_push(self: MemBuddy, order: t.CInt, block: t.CVoid | t.CPtr) -> t.CInt: pass + def _fl_pop(self: MemBuddy, order: t.CInt) -> t.CVoid | t.CPtr: pass + def _fl_find_and_remove(self: MemBuddy, order: t.CInt, target: t.CVoid | t.CPtr) -> t.CInt: pass + def _buddy_of(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CVoid | t.CPtr: pass + def _order_for_size(self: MemBuddy, size: t.CSizeT) -> t.CInt: pass + def _split_to_order(self: MemBuddy, to_order: t.CInt) -> t.CVoid | t.CPtr: pass + def _coalesce(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CInt: pass + def _is_valid_ptr(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def _lock(self: MemBuddy) -> t.CInt: pass + def _unlock(self: MemBuddy) -> t.CInt: pass + def alloc(self: MemBuddy, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemBuddy) -> t.CInt: pass + def realloc(self: MemBuddy, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + @property + def mem_size(self: MemBuddy) -> t.CSizeT: pass + def stats(self: MemBuddy) -> t.CSizeT: pass + def free_count(self: MemBuddy) -> t.CSizeT: pass + def self_check(self: MemBuddy) -> t.CInt: pass \ No newline at end of file diff --git a/Test/TestFBProject/output/4fb8940ff5ab1022.deps.json b/Test/TestFBProject/output/4fb8940ff5ab1022.deps.json index f02d7ee..2a27f59 100644 --- a/Test/TestFBProject/output/4fb8940ff5ab1022.deps.json +++ b/Test/TestFBProject/output/4fb8940ff5ab1022.deps.json @@ -1 +1 @@ -{"stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "testcheck": "dd3002730623424b", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"testcheck": "14d33679f7fadf1f", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/TestFBProject/temp/dd3002730623424b.pyi b/Test/TestFBProject/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/TestFBProject/temp/dd3002730623424b.pyi rename to Test/TestFBProject/temp/14d33679f7fadf1f.pyi diff --git a/Test/TestFBProject/temp/_phase1_manifest.json b/Test/TestFBProject/temp/_phase1_manifest.json index 23941b1..b20d9f9 100644 --- a/Test/TestFBProject/temp/_phase1_manifest.json +++ b/Test/TestFBProject/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\TestFBProject\\App\\main.py": {"sha1": "4fb8940ff5ab1022", "mtime": 1782110087.2169445, "size": 5059}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\TestFBProject\\App\\main.py": {"sha1": "4fb8940ff5ab1022", "mtime": 1782110087.2169445, "size": 5059}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file diff --git a/Test/TestFBProject/temp/_sha1_map.txt b/Test/TestFBProject/temp/_sha1_map.txt index e397858..a0a3fae 100644 --- a/Test/TestFBProject/temp/_sha1_map.txt +++ b/Test/TestFBProject/temp/_sha1_map.txt @@ -1,6 +1,6 @@ +14d33679f7fadf1f:includes/testcheck.py 4fb8940ff5ab1022:main.py 6f62fe05c5ea1ceb:includes/stdio.py 7e529fe7a078cfef:includes/w32\win32base.py bbdf3bbd4c3bc28c:includes/w32\win32console.py -dd3002730623424b:includes/testcheck.py f5522571bcce7bcb:includes/stdint.py diff --git a/Test/TestProject/output/3cd87018ba1e76bc.deps.json b/Test/TestProject/output/3cd87018ba1e76bc.deps.json index 123a27c..161ab81 100644 --- a/Test/TestProject/output/3cd87018ba1e76bc.deps.json +++ b/Test/TestProject/output/3cd87018ba1e76bc.deps.json @@ -1 +1 @@ -{"atom": "271ea3decb810db2", "vipermath": "3f7c5e78d8652535", "main": "49cae05490a513cb", "stdio": "6f62fe05c5ea1ceb", "zc.test": "75583f20a922ab2e", "test": "75583f20a922ab2e", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "config": "cfc83b830141b00e", "stdlib": "90c53dd6db8d41cf", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "numpy.__init__": "c3a6aed1f1fb8b1e", "__init__": "c3a6aed1f1fb8b1e", "numpy": "c3a6aed1f1fb8b1e", "viperio": "c9f4be41ca1cc2b4", "zc.config": "cfc83b830141b00e", "testcheck": "dd3002730623424b", "zc.class_test": "e5fb16127bce8f68", "class_test": "e5fb16127bce8f68", "memhub": "ee084e9fc6ee413a", "stdint": "f5522571bcce7bcb", "zc.logic_test": "faec3233d98371da", "logic_test": "faec3233d98371da"} \ No newline at end of file +{"testcheck": "14d33679f7fadf1f", "atom": "271ea3decb810db2", "vipermath": "3f7c5e78d8652535", "main": "49cae05490a513cb", "stdio": "6f62fe05c5ea1ceb", "zc.test": "75583f20a922ab2e", "test": "75583f20a922ab2e", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "config": "cfc83b830141b00e", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "numpy.__init__": "c3a6aed1f1fb8b1e", "__init__": "c3a6aed1f1fb8b1e", "numpy": "c3a6aed1f1fb8b1e", "viperio": "c9f4be41ca1cc2b4", "zc.config": "cfc83b830141b00e", "zc.class_test": "e5fb16127bce8f68", "class_test": "e5fb16127bce8f68", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb", "zc.logic_test": "faec3233d98371da", "logic_test": "faec3233d98371da"} \ No newline at end of file diff --git a/Test/TestProject/output/49cae05490a513cb.deps.json b/Test/TestProject/output/49cae05490a513cb.deps.json index c4c0f68..5334f7f 100644 --- a/Test/TestProject/output/49cae05490a513cb.deps.json +++ b/Test/TestProject/output/49cae05490a513cb.deps.json @@ -1 +1 @@ -{"atom": "271ea3decb810db2", "test_numpy": "3cd87018ba1e76bc", "vipermath": "3f7c5e78d8652535", "stdio": "6f62fe05c5ea1ceb", "zc.test": "75583f20a922ab2e", "test": "75583f20a922ab2e", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "config": "cfc83b830141b00e", "stdlib": "90c53dd6db8d41cf", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "numpy.__init__": "c3a6aed1f1fb8b1e", "__init__": "c3a6aed1f1fb8b1e", "numpy": "c3a6aed1f1fb8b1e", "viperio": "c9f4be41ca1cc2b4", "zc.config": "cfc83b830141b00e", "testcheck": "dd3002730623424b", "zc.class_test": "e5fb16127bce8f68", "class_test": "e5fb16127bce8f68", "memhub": "ee084e9fc6ee413a", "stdint": "f5522571bcce7bcb", "zc.logic_test": "faec3233d98371da", "logic_test": "faec3233d98371da"} \ No newline at end of file +{"testcheck": "14d33679f7fadf1f", "atom": "271ea3decb810db2", "test_numpy": "3cd87018ba1e76bc", "vipermath": "3f7c5e78d8652535", "stdio": "6f62fe05c5ea1ceb", "zc.test": "75583f20a922ab2e", "test": "75583f20a922ab2e", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "config": "cfc83b830141b00e", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "numpy.__init__": "c3a6aed1f1fb8b1e", "__init__": "c3a6aed1f1fb8b1e", "numpy": "c3a6aed1f1fb8b1e", "viperio": "c9f4be41ca1cc2b4", "zc.config": "cfc83b830141b00e", "zc.class_test": "e5fb16127bce8f68", "class_test": "e5fb16127bce8f68", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb", "zc.logic_test": "faec3233d98371da", "logic_test": "faec3233d98371da"} \ No newline at end of file diff --git a/Test/TestProject/output/75583f20a922ab2e.deps.json b/Test/TestProject/output/75583f20a922ab2e.deps.json index d749fae..30e0773 100644 --- a/Test/TestProject/output/75583f20a922ab2e.deps.json +++ b/Test/TestProject/output/75583f20a922ab2e.deps.json @@ -1 +1 @@ -{"atom": "271ea3decb810db2", "test_numpy": "3cd87018ba1e76bc", "vipermath": "3f7c5e78d8652535", "main": "49cae05490a513cb", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "config": "cfc83b830141b00e", "stdlib": "90c53dd6db8d41cf", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "numpy.__init__": "c3a6aed1f1fb8b1e", "__init__": "c3a6aed1f1fb8b1e", "numpy": "c3a6aed1f1fb8b1e", "viperio": "c9f4be41ca1cc2b4", "zc.config": "cfc83b830141b00e", "testcheck": "dd3002730623424b", "zc.class_test": "e5fb16127bce8f68", "class_test": "e5fb16127bce8f68", "memhub": "ee084e9fc6ee413a", "stdint": "f5522571bcce7bcb", "zc.logic_test": "faec3233d98371da", "logic_test": "faec3233d98371da"} \ No newline at end of file +{"testcheck": "14d33679f7fadf1f", "atom": "271ea3decb810db2", "test_numpy": "3cd87018ba1e76bc", "vipermath": "3f7c5e78d8652535", "main": "49cae05490a513cb", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "config": "cfc83b830141b00e", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "numpy.__init__": "c3a6aed1f1fb8b1e", "__init__": "c3a6aed1f1fb8b1e", "numpy": "c3a6aed1f1fb8b1e", "viperio": "c9f4be41ca1cc2b4", "zc.config": "cfc83b830141b00e", "zc.class_test": "e5fb16127bce8f68", "class_test": "e5fb16127bce8f68", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb", "zc.logic_test": "faec3233d98371da", "logic_test": "faec3233d98371da"} \ No newline at end of file diff --git a/Test/TestProject/output/8e0d8fdba991b3b4.deps.json b/Test/TestProject/output/8e0d8fdba991b3b4.deps.json index e76c1ac..92edd09 100644 --- a/Test/TestProject/output/8e0d8fdba991b3b4.deps.json +++ b/Test/TestProject/output/8e0d8fdba991b3b4.deps.json @@ -1 +1 @@ -{"atom": "271ea3decb810db2", "test_numpy": "3cd87018ba1e76bc", "vipermath": "3f7c5e78d8652535", "main": "49cae05490a513cb", "stdio": "6f62fe05c5ea1ceb", "zc.test": "75583f20a922ab2e", "test": "75583f20a922ab2e", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "numpy.__init__": "c3a6aed1f1fb8b1e", "__init__": "c3a6aed1f1fb8b1e", "numpy": "c3a6aed1f1fb8b1e", "viperio": "c9f4be41ca1cc2b4", "zc.config": "cfc83b830141b00e", "config": "cfc83b830141b00e", "testcheck": "dd3002730623424b", "zc.class_test": "e5fb16127bce8f68", "class_test": "e5fb16127bce8f68", "memhub": "ee084e9fc6ee413a", "stdint": "f5522571bcce7bcb", "zc.logic_test": "faec3233d98371da", "logic_test": "faec3233d98371da"} \ No newline at end of file +{"testcheck": "14d33679f7fadf1f", "atom": "271ea3decb810db2", "test_numpy": "3cd87018ba1e76bc", "vipermath": "3f7c5e78d8652535", "main": "49cae05490a513cb", "stdio": "6f62fe05c5ea1ceb", "zc.test": "75583f20a922ab2e", "test": "75583f20a922ab2e", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "numpy.__init__": "c3a6aed1f1fb8b1e", "__init__": "c3a6aed1f1fb8b1e", "numpy": "c3a6aed1f1fb8b1e", "viperio": "c9f4be41ca1cc2b4", "zc.config": "cfc83b830141b00e", "config": "cfc83b830141b00e", "zc.class_test": "e5fb16127bce8f68", "class_test": "e5fb16127bce8f68", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb", "zc.logic_test": "faec3233d98371da", "logic_test": "faec3233d98371da"} \ No newline at end of file diff --git a/Test/TestProject/output/cfc83b830141b00e.deps.json b/Test/TestProject/output/cfc83b830141b00e.deps.json index 0705eab..b16cd38 100644 --- a/Test/TestProject/output/cfc83b830141b00e.deps.json +++ b/Test/TestProject/output/cfc83b830141b00e.deps.json @@ -1 +1 @@ -{"atom": "271ea3decb810db2", "test_numpy": "3cd87018ba1e76bc", "vipermath": "3f7c5e78d8652535", "main": "49cae05490a513cb", "stdio": "6f62fe05c5ea1ceb", "zc.test": "75583f20a922ab2e", "test": "75583f20a922ab2e", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "config": "8e0d8fdba991b3b4", "stdlib": "90c53dd6db8d41cf", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "numpy.__init__": "c3a6aed1f1fb8b1e", "__init__": "c3a6aed1f1fb8b1e", "numpy": "c3a6aed1f1fb8b1e", "viperio": "c9f4be41ca1cc2b4", "testcheck": "dd3002730623424b", "zc.class_test": "e5fb16127bce8f68", "class_test": "e5fb16127bce8f68", "memhub": "ee084e9fc6ee413a", "stdint": "f5522571bcce7bcb", "zc.logic_test": "faec3233d98371da", "logic_test": "faec3233d98371da"} \ No newline at end of file +{"testcheck": "14d33679f7fadf1f", "atom": "271ea3decb810db2", "test_numpy": "3cd87018ba1e76bc", "vipermath": "3f7c5e78d8652535", "main": "49cae05490a513cb", "stdio": "6f62fe05c5ea1ceb", "zc.test": "75583f20a922ab2e", "test": "75583f20a922ab2e", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "config": "8e0d8fdba991b3b4", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "numpy.__init__": "c3a6aed1f1fb8b1e", "__init__": "c3a6aed1f1fb8b1e", "numpy": "c3a6aed1f1fb8b1e", "viperio": "c9f4be41ca1cc2b4", "zc.class_test": "e5fb16127bce8f68", "class_test": "e5fb16127bce8f68", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb", "zc.logic_test": "faec3233d98371da", "logic_test": "faec3233d98371da"} \ No newline at end of file diff --git a/Test/TestProject/output/e5fb16127bce8f68.deps.json b/Test/TestProject/output/e5fb16127bce8f68.deps.json index 452f0c0..f3ce520 100644 --- a/Test/TestProject/output/e5fb16127bce8f68.deps.json +++ b/Test/TestProject/output/e5fb16127bce8f68.deps.json @@ -1 +1 @@ -{"atom": "271ea3decb810db2", "test_numpy": "3cd87018ba1e76bc", "vipermath": "3f7c5e78d8652535", "main": "49cae05490a513cb", "stdio": "6f62fe05c5ea1ceb", "zc.test": "75583f20a922ab2e", "test": "75583f20a922ab2e", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "config": "cfc83b830141b00e", "stdlib": "90c53dd6db8d41cf", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "numpy.__init__": "c3a6aed1f1fb8b1e", "__init__": "c3a6aed1f1fb8b1e", "numpy": "c3a6aed1f1fb8b1e", "viperio": "c9f4be41ca1cc2b4", "zc.config": "cfc83b830141b00e", "testcheck": "dd3002730623424b", "memhub": "ee084e9fc6ee413a", "stdint": "f5522571bcce7bcb", "zc.logic_test": "faec3233d98371da", "logic_test": "faec3233d98371da"} \ No newline at end of file +{"testcheck": "14d33679f7fadf1f", "atom": "271ea3decb810db2", "test_numpy": "3cd87018ba1e76bc", "vipermath": "3f7c5e78d8652535", "main": "49cae05490a513cb", "stdio": "6f62fe05c5ea1ceb", "zc.test": "75583f20a922ab2e", "test": "75583f20a922ab2e", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "config": "cfc83b830141b00e", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "numpy.__init__": "c3a6aed1f1fb8b1e", "__init__": "c3a6aed1f1fb8b1e", "numpy": "c3a6aed1f1fb8b1e", "viperio": "c9f4be41ca1cc2b4", "zc.config": "cfc83b830141b00e", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb", "zc.logic_test": "faec3233d98371da", "logic_test": "faec3233d98371da"} \ No newline at end of file diff --git a/Test/TestProject/output/faec3233d98371da.deps.json b/Test/TestProject/output/faec3233d98371da.deps.json index 1ac0a97..cd29946 100644 --- a/Test/TestProject/output/faec3233d98371da.deps.json +++ b/Test/TestProject/output/faec3233d98371da.deps.json @@ -1 +1 @@ -{"atom": "271ea3decb810db2", "test_numpy": "3cd87018ba1e76bc", "vipermath": "3f7c5e78d8652535", "main": "49cae05490a513cb", "stdio": "6f62fe05c5ea1ceb", "zc.test": "75583f20a922ab2e", "test": "75583f20a922ab2e", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "config": "cfc83b830141b00e", "stdlib": "90c53dd6db8d41cf", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "numpy.__init__": "c3a6aed1f1fb8b1e", "__init__": "c3a6aed1f1fb8b1e", "numpy": "c3a6aed1f1fb8b1e", "viperio": "c9f4be41ca1cc2b4", "zc.config": "cfc83b830141b00e", "testcheck": "dd3002730623424b", "zc.class_test": "e5fb16127bce8f68", "class_test": "e5fb16127bce8f68", "memhub": "ee084e9fc6ee413a", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"testcheck": "14d33679f7fadf1f", "atom": "271ea3decb810db2", "test_numpy": "3cd87018ba1e76bc", "vipermath": "3f7c5e78d8652535", "main": "49cae05490a513cb", "stdio": "6f62fe05c5ea1ceb", "zc.test": "75583f20a922ab2e", "test": "75583f20a922ab2e", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "config": "cfc83b830141b00e", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "numpy.__init__": "c3a6aed1f1fb8b1e", "__init__": "c3a6aed1f1fb8b1e", "numpy": "c3a6aed1f1fb8b1e", "viperio": "c9f4be41ca1cc2b4", "zc.config": "cfc83b830141b00e", "zc.class_test": "e5fb16127bce8f68", "class_test": "e5fb16127bce8f68", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/TestProject/temp/dd3002730623424b.pyi b/Test/TestProject/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/TestProject/temp/dd3002730623424b.pyi rename to Test/TestProject/temp/14d33679f7fadf1f.pyi diff --git a/Test/TestProject/temp/9474791561654346.pyi b/Test/TestProject/temp/9474791561654346.pyi new file mode 100644 index 0000000..1f82b1e --- /dev/null +++ b/Test/TestProject/temp/9474791561654346.pyi @@ -0,0 +1,59 @@ +""" +Auto-generated Python stub file from string.py +Module: string +""" + + +from stdint import * +import t, c + +def strcpy(dest: str, src: str) -> str: pass + +def strcat(dest: str, src: str) -> str: pass + +def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass + +def strlen(src: str) -> t.CSizeT | t.CExport: pass + +def strcmp(str1: str, str2: str) -> t.CInt: pass + +def samestr(str1: str, str2: str) -> bool: pass + +def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass + +def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass + +def strchr(s: str, cr: t.CInt) -> str: pass + +def strrchr(s: str, cr: t.CInt) -> str: pass + +def strstr(s: str, needle: str) -> str: pass + +def strspn(s: str, skip: str) -> int: pass + +def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def atoi(src: str) -> t.CInt: pass + +def atoll(src: str) -> t.CInt64T: pass + +def atof(src: str) -> t.CDouble: pass + +def split(s: str, delim: str, result: t.CArray[str]) -> int: pass + + +ascii_lowercase: t.CExtern | str +ascii_uppercase: t.CExtern | str +ascii_letters: t.CExtern | str +digits: t.CExtern | str +hexdigits: t.CExtern | str +octdigits: t.CExtern | str +punctuation: t.CExtern | str +whitespace: t.CExtern | str +printable: t.CExtern | str \ No newline at end of file diff --git a/Test/TestProject/temp/_phase1_manifest.json b/Test/TestProject/temp/_phase1_manifest.json index 77e537d..388d716 100644 --- a/Test/TestProject/temp/_phase1_manifest.json +++ b/Test/TestProject/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\TestProject\\App\\config.py": {"sha1": "8e0d8fdba991b3b4", "mtime": 1781111175.0269876, "size": 445}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\TestProject\\App\\main.py": {"sha1": "49cae05490a513cb", "mtime": 1782949786.0815294, "size": 8223}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\TestProject\\App\\test_numpy.py": {"sha1": "3cd87018ba1e76bc", "mtime": 1782828269.700148, "size": 40140}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\TestProject\\App\\zc\\class_test.py": {"sha1": "e5fb16127bce8f68", "mtime": 1782266207.4312654, "size": 6472}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\TestProject\\App\\zc\\config.py": {"sha1": "cfc83b830141b00e", "mtime": 1778402243.1661563, "size": 531}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\TestProject\\App\\zc\\logic_test.py": {"sha1": "faec3233d98371da", "mtime": 1778402365.7843194, "size": 8848}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\TestProject\\App\\zc\\test.py": {"sha1": "75583f20a922ab2e", "mtime": 1778401973.4865518, "size": 8976}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\atom.py": {"sha1": "271ea3decb810db2", "mtime": 1782226548.693161, "size": 1290}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\memhub.py": {"sha1": "ee084e9fc6ee413a", "mtime": 1784214242.4485993, "size": 17765}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\numpy\\__init__.py": {"sha1": "c3a6aed1f1fb8b1e", "mtime": 1782949786.0890937, "size": 39111}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "ab6e54ba9a669f76", "mtime": 1783933178.7264287, "size": 9922}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\vipermath.py": {"sha1": "3f7c5e78d8652535", "mtime": 1781532528.2518907, "size": 15412}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\TestProject\\App\\config.py": {"sha1": "8e0d8fdba991b3b4", "mtime": 1781111175.0269876, "size": 445}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\TestProject\\App\\main.py": {"sha1": "49cae05490a513cb", "mtime": 1782949786.0815294, "size": 8223}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\TestProject\\App\\test_numpy.py": {"sha1": "3cd87018ba1e76bc", "mtime": 1782828269.700148, "size": 40140}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\TestProject\\App\\zc\\class_test.py": {"sha1": "e5fb16127bce8f68", "mtime": 1782266207.4312654, "size": 6472}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\TestProject\\App\\zc\\config.py": {"sha1": "cfc83b830141b00e", "mtime": 1778402243.1661563, "size": 531}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\TestProject\\App\\zc\\logic_test.py": {"sha1": "faec3233d98371da", "mtime": 1778402365.7843194, "size": 8848}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\TestProject\\App\\zc\\test.py": {"sha1": "75583f20a922ab2e", "mtime": 1778401973.4865518, "size": 8976}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\atom.py": {"sha1": "271ea3decb810db2", "mtime": 1782226548.693161, "size": 1290}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\memhub.py": {"sha1": "f3560b99de458aec", "mtime": 1784375410.1873891, "size": 19458}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\numpy\\__init__.py": {"sha1": "c3a6aed1f1fb8b1e", "mtime": 1782949786.0890937, "size": 39111}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "9474791561654346", "mtime": 1784387475.6951904, "size": 10395}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\vipermath.py": {"sha1": "3f7c5e78d8652535", "mtime": 1781532528.2518907, "size": 15412}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file diff --git a/Test/TestProject/temp/_sha1_map.txt b/Test/TestProject/temp/_sha1_map.txt index 334c60d..3d03e0e 100644 --- a/Test/TestProject/temp/_sha1_map.txt +++ b/Test/TestProject/temp/_sha1_map.txt @@ -1,3 +1,4 @@ +14d33679f7fadf1f:includes/testcheck.py 271ea3decb810db2:includes/atom.py 3cd87018ba1e76bc:test_numpy.py 3f7c5e78d8652535:includes/vipermath.py @@ -7,13 +8,12 @@ 7e529fe7a078cfef:includes/w32\win32base.py 8e0d8fdba991b3b4:config.py 90c53dd6db8d41cf:includes/stdlib.py -ab6e54ba9a669f76:includes/string.py +9474791561654346:includes/string.py bbdf3bbd4c3bc28c:includes/w32\win32console.py c3a6aed1f1fb8b1e:includes/numpy\__init__.py c9f4be41ca1cc2b4:includes/viperio.py cfc83b830141b00e:zc\config.py -dd3002730623424b:includes/testcheck.py e5fb16127bce8f68:zc\class_test.py -ee084e9fc6ee413a:includes/memhub.py +f3560b99de458aec:includes/memhub.py f5522571bcce7bcb:includes/stdint.py faec3233d98371da:zc\logic_test.py diff --git a/Test/TestProject/temp/_shared_sym.json b/Test/TestProject/temp/_shared_sym.json index d2c1348..8217c2e 100644 Binary files a/Test/TestProject/temp/_shared_sym.json and b/Test/TestProject/temp/_shared_sym.json differ diff --git a/Test/TestProject/temp/ab6e54ba9a669f76.pyi b/Test/TestProject/temp/ab6e54ba9a669f76.pyi deleted file mode 100644 index 4fc3440..0000000 --- a/Test/TestProject/temp/ab6e54ba9a669f76.pyi +++ /dev/null @@ -1,48 +0,0 @@ -""" -Auto-generated Python stub file from string.py -Module: string -""" - - -from stdint import * -import t, c - -def strcpy(dest: str, src: str) -> str: pass - -def strcat(dest: str, src: str) -> str: pass - -def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass - -def strlen(src: str) -> t.CSizeT | t.CExport: pass - -def strcmp(str1: str, str2: str) -> t.CInt: pass - -def samestr(str1: str, str2: str) -> bool: pass - -def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass - -def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass - -def strchr(s: str, cr: t.CInt) -> str: pass - -def strrchr(s: str, cr: t.CInt) -> str: pass - -def strstr(s: str, needle: str) -> str: pass - -def strspn(s: str, skip: str) -> int: pass - -def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def atoi(src: str) -> t.CInt: pass - -def atoll(src: str) -> t.CInt64T: pass - -def atof(src: str) -> t.CDouble: pass - -def split(s: str, delim: str, result: t.CArray[str]) -> int: pass diff --git a/Test/TestProject/temp/ee084e9fc6ee413a.pyi b/Test/TestProject/temp/ee084e9fc6ee413a.pyi deleted file mode 100644 index 45551ef..0000000 --- a/Test/TestProject/temp/ee084e9fc6ee413a.pyi +++ /dev/null @@ -1,81 +0,0 @@ -""" -Auto-generated Python stub file from memhub.py -Module: memhub -""" - - -import t, c -from stdint import * -import string -import atom -import viperio - -MEMHUB_ALIGN: t.CDefine = 8 -MEMSLAB_MIN_BLOCK: t.CDefine = 16 -MEMSLAB_BITMAP_BYTES: t.CDefine = 256 -MEMBUDDY_MIN_BLOCK: t.CDefine = 32 -MEMBUDDY_MAX_ORDERS: t.CDefine = 32 -MEMBUDDY_HEADER_SIZE: t.CDefine = 8 - -def _align_up(val: t.CSizeT, align: t.CSizeT) -> t.CSizeT: pass - -def _largest_pow2_le(val: t.CSizeT) -> t.CSizeT: pass - -def _block_size_at_order(order: t.CInt) -> t.CSizeT: pass - - -@t.CVTable -class MemManager: - __provides__: list[str] = ['__memmgr__'] - base: t.CVoid | t.CPtr - size: t.CSizeT - def __init__(self: MemManager, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemManager, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemManager, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemManager) -> t.CInt: pass - def calloc(self: MemManager, count: t.CSizeT, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def realloc(self: MemManager, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def __enter__(self: MemManager) -> 'MemManager' | t.CPtr: pass - def __exit__(self: MemManager) -> t.CInt: pass - def alloc_buf(self: MemManager, capacity: t.CSizeT) -> viperio.Buf | t.CPtr: pass -class MemPool(MemManager): - offset: t.CSizeT - high_water: t.CSizeT - def __init__(self: MemPool, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemPool, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemPool, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemPool) -> t.CInt: pass -class MemSlab(MemManager): - block_size: t.CSizeT - block_count: t.CSizeT - used_count: t.CSizeT - free_list: t.CVoid | t.CPtr - alloc_map: t.CUInt8T | t.CPtr - alloc_map_size: t.CSizeT - usable: t.CVoid | t.CPtr - usable_size: t.CSizeT - def __init__(self: MemSlab, base: t.CVoid | t.CPtr, size: t.CSizeT, block_size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemSlab, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemSlab, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemSlab) -> t.CInt: pass -class MemBuddy(MemManager): - max_order: t.CInt - free_lists: t.CUInt64T | t.CPtr - lock_val: t.CVolatile | t.CInt - usable: t.CVoid | t.CPtr - usable_size: t.CSizeT - def __init__(self: MemBuddy, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def _fl_push(self: MemBuddy, order: t.CInt, block: t.CVoid | t.CPtr) -> t.CInt: pass - def _fl_pop(self: MemBuddy, order: t.CInt) -> t.CVoid | t.CPtr: pass - def _fl_find_and_remove(self: MemBuddy, order: t.CInt, target: t.CVoid | t.CPtr) -> t.CInt: pass - def _buddy_of(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CVoid | t.CPtr: pass - def _order_for_size(self: MemBuddy, size: t.CSizeT) -> t.CInt: pass - def _split_to_order(self: MemBuddy, to_order: t.CInt) -> t.CVoid | t.CPtr: pass - def _coalesce(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CInt: pass - def _is_valid_ptr(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def _lock(self: MemBuddy) -> t.CInt: pass - def _unlock(self: MemBuddy) -> t.CInt: pass - def alloc(self: MemBuddy, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemBuddy) -> t.CInt: pass - def realloc(self: MemBuddy, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass \ No newline at end of file diff --git a/Test/TestProject/temp/f3560b99de458aec.pyi b/Test/TestProject/temp/f3560b99de458aec.pyi new file mode 100644 index 0000000..84f0bbf --- /dev/null +++ b/Test/TestProject/temp/f3560b99de458aec.pyi @@ -0,0 +1,86 @@ +""" +Auto-generated Python stub file from memhub.py +Module: memhub +""" + + +import t, c +from stdint import * +import string +import atom +import viperio + +MEMHUB_ALIGN: t.CDefine = 8 +MEMSLAB_MIN_BLOCK: t.CDefine = 16 +MEMSLAB_BITMAP_BYTES: t.CDefine = 256 +MEMBUDDY_MIN_BLOCK: t.CDefine = 32 +MEMBUDDY_MAX_ORDERS: t.CDefine = 32 +MEMBUDDY_HEADER_SIZE: t.CDefine = 8 + +def _align_up(val: t.CSizeT, align: t.CSizeT) -> t.CSizeT: pass + +def _largest_pow2_le(val: t.CSizeT) -> t.CSizeT: pass + +def _block_size_at_order(order: t.CInt) -> t.CSizeT: pass + + +@t.CVTable +class MemManager: + __provides__: list[str] = ['__memmgr__'] + base: t.CVoid | t.CPtr + size: t.CSizeT + def __init__(self: MemManager, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemManager, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemManager, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemManager) -> t.CInt: pass + def calloc(self: MemManager, count: t.CSizeT, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def realloc(self: MemManager, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def __enter__(self: MemManager) -> 'MemManager' | t.CPtr: pass + def __exit__(self: MemManager) -> t.CInt: pass + def alloc_buf(self: MemManager, capacity: t.CSizeT) -> viperio.Buf | t.CPtr: pass +class MemPool(MemManager): + offset: t.CSizeT + high_water: t.CSizeT + def __init__(self: MemPool, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemPool, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemPool, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemPool) -> t.CInt: pass +class MemSlab(MemManager): + block_size: t.CSizeT + block_count: t.CSizeT + used_count: t.CSizeT + free_list: t.CVoid | t.CPtr + alloc_map: t.CUInt8T | t.CPtr + alloc_map_size: t.CSizeT + usable: t.CVoid | t.CPtr + usable_size: t.CSizeT + def __init__(self: MemSlab, base: t.CVoid | t.CPtr, size: t.CSizeT, block_size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemSlab, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemSlab, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemSlab) -> t.CInt: pass +class MemBuddy(MemManager): + max_order: t.CInt + free_lists: t.CUInt64T | t.CPtr + lock_val: t.CVolatile | t.CInt + usable: t.CVoid | t.CPtr + usable_size: t.CSizeT + def __init__(self: MemBuddy, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def _fl_push(self: MemBuddy, order: t.CInt, block: t.CVoid | t.CPtr) -> t.CInt: pass + def _fl_pop(self: MemBuddy, order: t.CInt) -> t.CVoid | t.CPtr: pass + def _fl_find_and_remove(self: MemBuddy, order: t.CInt, target: t.CVoid | t.CPtr) -> t.CInt: pass + def _buddy_of(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CVoid | t.CPtr: pass + def _order_for_size(self: MemBuddy, size: t.CSizeT) -> t.CInt: pass + def _split_to_order(self: MemBuddy, to_order: t.CInt) -> t.CVoid | t.CPtr: pass + def _coalesce(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CInt: pass + def _is_valid_ptr(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def _lock(self: MemBuddy) -> t.CInt: pass + def _unlock(self: MemBuddy) -> t.CInt: pass + def alloc(self: MemBuddy, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemBuddy) -> t.CInt: pass + def realloc(self: MemBuddy, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + @property + def mem_size(self: MemBuddy) -> t.CSizeT: pass + def stats(self: MemBuddy) -> t.CSizeT: pass + def free_count(self: MemBuddy) -> t.CSizeT: pass + def self_check(self: MemBuddy) -> t.CInt: pass \ No newline at end of file diff --git a/Test/TestProject2/output/0df65b8ed15664b0.deps.json b/Test/TestProject2/output/0df65b8ed15664b0.deps.json deleted file mode 100644 index 0c6f101..0000000 --- a/Test/TestProject2/output/0df65b8ed15664b0.deps.json +++ /dev/null @@ -1 +0,0 @@ -{"hashlib.__sha1": "0df65b8ed15664b0", "__sha1": "0df65b8ed15664b0", "hashlib.__md5": "19f8024d10c828e8", "__md5": "19f8024d10c828e8", "zlib.pyzlib": "1c46d554b3a3f9f3", "pyzlib": "1c46d554b3a3f9f3", "zlib.zdef": "213348433fb01cc6", "zdef": "213348433fb01cc6", "binascii": "257e074b935c33b4", "atom": "271ea3decb810db2", "zlib.zinflate": "451745df21e598af", "zinflate": "451745df21e598af", "main": "541a1ed9b8be53c8", "stdio": "6f62fe05c5ea1ceb", "hashlib.__sha512": "6ff26590374ae6fc", "__sha512": "6ff26590374ae6fc", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "zlib.zchecksum": "8ebed83a7817fa0c", "zchecksum": "8ebed83a7817fa0c", "zlib.zdeflate": "90921d009fdd674c", "zdeflate": "90921d009fdd674c", "stdlib": "90c53dd6db8d41cf", "hashlib.__init__": "96837bcc64032444", "__init__": "d63d2c2a2bd9bd2a", "hashlib": "96837bcc64032444", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "hashlib.__sha256": "c9d54a4158f7f5a8", "__sha256": "c9d54a4158f7f5a8", "viperio": "c9f4be41ca1cc2b4", "zc.config": "cfc83b830141b00e", "config": "cfc83b830141b00e", "zlib.zhuff": "d541ade6afb689a5", "zhuff": "d541ade6afb689a5", "testcheck": "dd3002730623424b", "memhub": "ee084e9fc6ee413a", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5", "zlib.__init__": "d63d2c2a2bd9bd2a", "zlib": "d63d2c2a2bd9bd2a"} \ No newline at end of file diff --git a/Test/TestProject2/output/19f8024d10c828e8.deps.json b/Test/TestProject2/output/19f8024d10c828e8.deps.json deleted file mode 100644 index 0c6f101..0000000 --- a/Test/TestProject2/output/19f8024d10c828e8.deps.json +++ /dev/null @@ -1 +0,0 @@ -{"hashlib.__sha1": "0df65b8ed15664b0", "__sha1": "0df65b8ed15664b0", "hashlib.__md5": "19f8024d10c828e8", "__md5": "19f8024d10c828e8", "zlib.pyzlib": "1c46d554b3a3f9f3", "pyzlib": "1c46d554b3a3f9f3", "zlib.zdef": "213348433fb01cc6", "zdef": "213348433fb01cc6", "binascii": "257e074b935c33b4", "atom": "271ea3decb810db2", "zlib.zinflate": "451745df21e598af", "zinflate": "451745df21e598af", "main": "541a1ed9b8be53c8", "stdio": "6f62fe05c5ea1ceb", "hashlib.__sha512": "6ff26590374ae6fc", "__sha512": "6ff26590374ae6fc", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "zlib.zchecksum": "8ebed83a7817fa0c", "zchecksum": "8ebed83a7817fa0c", "zlib.zdeflate": "90921d009fdd674c", "zdeflate": "90921d009fdd674c", "stdlib": "90c53dd6db8d41cf", "hashlib.__init__": "96837bcc64032444", "__init__": "d63d2c2a2bd9bd2a", "hashlib": "96837bcc64032444", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "hashlib.__sha256": "c9d54a4158f7f5a8", "__sha256": "c9d54a4158f7f5a8", "viperio": "c9f4be41ca1cc2b4", "zc.config": "cfc83b830141b00e", "config": "cfc83b830141b00e", "zlib.zhuff": "d541ade6afb689a5", "zhuff": "d541ade6afb689a5", "testcheck": "dd3002730623424b", "memhub": "ee084e9fc6ee413a", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5", "zlib.__init__": "d63d2c2a2bd9bd2a", "zlib": "d63d2c2a2bd9bd2a"} \ No newline at end of file diff --git a/Test/TestProject2/output/213348433fb01cc6.deps.json b/Test/TestProject2/output/213348433fb01cc6.deps.json deleted file mode 100644 index 0c6f101..0000000 --- a/Test/TestProject2/output/213348433fb01cc6.deps.json +++ /dev/null @@ -1 +0,0 @@ -{"hashlib.__sha1": "0df65b8ed15664b0", "__sha1": "0df65b8ed15664b0", "hashlib.__md5": "19f8024d10c828e8", "__md5": "19f8024d10c828e8", "zlib.pyzlib": "1c46d554b3a3f9f3", "pyzlib": "1c46d554b3a3f9f3", "zlib.zdef": "213348433fb01cc6", "zdef": "213348433fb01cc6", "binascii": "257e074b935c33b4", "atom": "271ea3decb810db2", "zlib.zinflate": "451745df21e598af", "zinflate": "451745df21e598af", "main": "541a1ed9b8be53c8", "stdio": "6f62fe05c5ea1ceb", "hashlib.__sha512": "6ff26590374ae6fc", "__sha512": "6ff26590374ae6fc", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "zlib.zchecksum": "8ebed83a7817fa0c", "zchecksum": "8ebed83a7817fa0c", "zlib.zdeflate": "90921d009fdd674c", "zdeflate": "90921d009fdd674c", "stdlib": "90c53dd6db8d41cf", "hashlib.__init__": "96837bcc64032444", "__init__": "d63d2c2a2bd9bd2a", "hashlib": "96837bcc64032444", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "hashlib.__sha256": "c9d54a4158f7f5a8", "__sha256": "c9d54a4158f7f5a8", "viperio": "c9f4be41ca1cc2b4", "zc.config": "cfc83b830141b00e", "config": "cfc83b830141b00e", "zlib.zhuff": "d541ade6afb689a5", "zhuff": "d541ade6afb689a5", "testcheck": "dd3002730623424b", "memhub": "ee084e9fc6ee413a", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5", "zlib.__init__": "d63d2c2a2bd9bd2a", "zlib": "d63d2c2a2bd9bd2a"} \ No newline at end of file diff --git a/Test/TestProject2/output/257e074b935c33b4.deps.json b/Test/TestProject2/output/257e074b935c33b4.deps.json deleted file mode 100644 index 0c6f101..0000000 --- a/Test/TestProject2/output/257e074b935c33b4.deps.json +++ /dev/null @@ -1 +0,0 @@ -{"hashlib.__sha1": "0df65b8ed15664b0", "__sha1": "0df65b8ed15664b0", "hashlib.__md5": "19f8024d10c828e8", "__md5": "19f8024d10c828e8", "zlib.pyzlib": "1c46d554b3a3f9f3", "pyzlib": "1c46d554b3a3f9f3", "zlib.zdef": "213348433fb01cc6", "zdef": "213348433fb01cc6", "binascii": "257e074b935c33b4", "atom": "271ea3decb810db2", "zlib.zinflate": "451745df21e598af", "zinflate": "451745df21e598af", "main": "541a1ed9b8be53c8", "stdio": "6f62fe05c5ea1ceb", "hashlib.__sha512": "6ff26590374ae6fc", "__sha512": "6ff26590374ae6fc", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "zlib.zchecksum": "8ebed83a7817fa0c", "zchecksum": "8ebed83a7817fa0c", "zlib.zdeflate": "90921d009fdd674c", "zdeflate": "90921d009fdd674c", "stdlib": "90c53dd6db8d41cf", "hashlib.__init__": "96837bcc64032444", "__init__": "d63d2c2a2bd9bd2a", "hashlib": "96837bcc64032444", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "hashlib.__sha256": "c9d54a4158f7f5a8", "__sha256": "c9d54a4158f7f5a8", "viperio": "c9f4be41ca1cc2b4", "zc.config": "cfc83b830141b00e", "config": "cfc83b830141b00e", "zlib.zhuff": "d541ade6afb689a5", "zhuff": "d541ade6afb689a5", "testcheck": "dd3002730623424b", "memhub": "ee084e9fc6ee413a", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5", "zlib.__init__": "d63d2c2a2bd9bd2a", "zlib": "d63d2c2a2bd9bd2a"} \ No newline at end of file diff --git a/Test/TestProject2/output/451745df21e598af.deps.json b/Test/TestProject2/output/451745df21e598af.deps.json deleted file mode 100644 index 0c6f101..0000000 --- a/Test/TestProject2/output/451745df21e598af.deps.json +++ /dev/null @@ -1 +0,0 @@ -{"hashlib.__sha1": "0df65b8ed15664b0", "__sha1": "0df65b8ed15664b0", "hashlib.__md5": "19f8024d10c828e8", "__md5": "19f8024d10c828e8", "zlib.pyzlib": "1c46d554b3a3f9f3", "pyzlib": "1c46d554b3a3f9f3", "zlib.zdef": "213348433fb01cc6", "zdef": "213348433fb01cc6", "binascii": "257e074b935c33b4", "atom": "271ea3decb810db2", "zlib.zinflate": "451745df21e598af", "zinflate": "451745df21e598af", "main": "541a1ed9b8be53c8", "stdio": "6f62fe05c5ea1ceb", "hashlib.__sha512": "6ff26590374ae6fc", "__sha512": "6ff26590374ae6fc", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "zlib.zchecksum": "8ebed83a7817fa0c", "zchecksum": "8ebed83a7817fa0c", "zlib.zdeflate": "90921d009fdd674c", "zdeflate": "90921d009fdd674c", "stdlib": "90c53dd6db8d41cf", "hashlib.__init__": "96837bcc64032444", "__init__": "d63d2c2a2bd9bd2a", "hashlib": "96837bcc64032444", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "hashlib.__sha256": "c9d54a4158f7f5a8", "__sha256": "c9d54a4158f7f5a8", "viperio": "c9f4be41ca1cc2b4", "zc.config": "cfc83b830141b00e", "config": "cfc83b830141b00e", "zlib.zhuff": "d541ade6afb689a5", "zhuff": "d541ade6afb689a5", "testcheck": "dd3002730623424b", "memhub": "ee084e9fc6ee413a", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5", "zlib.__init__": "d63d2c2a2bd9bd2a", "zlib": "d63d2c2a2bd9bd2a"} \ No newline at end of file diff --git a/Test/TestProject2/output/541a1ed9b8be53c8.deps.json b/Test/TestProject2/output/541a1ed9b8be53c8.deps.json index 2e7e413..995dd61 100644 --- a/Test/TestProject2/output/541a1ed9b8be53c8.deps.json +++ b/Test/TestProject2/output/541a1ed9b8be53c8.deps.json @@ -1 +1 @@ -{"hashlib.__sha1": "0df65b8ed15664b0", "__sha1": "0df65b8ed15664b0", "hashlib.__md5": "19f8024d10c828e8", "__md5": "19f8024d10c828e8", "zlib.pyzlib": "1c46d554b3a3f9f3", "pyzlib": "1c46d554b3a3f9f3", "zlib.zdef": "213348433fb01cc6", "zdef": "213348433fb01cc6", "binascii": "257e074b935c33b4", "atom": "271ea3decb810db2", "zlib.zinflate": "451745df21e598af", "zinflate": "451745df21e598af", "stdio": "6f62fe05c5ea1ceb", "hashlib.__sha512": "6ff26590374ae6fc", "__sha512": "6ff26590374ae6fc", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "zlib.zchecksum": "8ebed83a7817fa0c", "zchecksum": "8ebed83a7817fa0c", "zlib.zdeflate": "90921d009fdd674c", "zdeflate": "90921d009fdd674c", "stdlib": "90c53dd6db8d41cf", "hashlib.__init__": "96837bcc64032444", "__init__": "96837bcc64032444", "hashlib": "96837bcc64032444", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "hashlib.__sha256": "c9d54a4158f7f5a8", "__sha256": "c9d54a4158f7f5a8", "viperio": "c9f4be41ca1cc2b4", "zc.config": "cfc83b830141b00e", "config": "cfc83b830141b00e", "zlib.zhuff": "d541ade6afb689a5", "zhuff": "d541ade6afb689a5", "testcheck": "dd3002730623424b", "memhub": "ee084e9fc6ee413a", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"hashlib.__sha1": "0df65b8ed15664b0", "__sha1": "0df65b8ed15664b0", "testcheck": "14d33679f7fadf1f", "hashlib.__md5": "19f8024d10c828e8", "__md5": "19f8024d10c828e8", "zlib.pyzlib": "1c46d554b3a3f9f3", "pyzlib": "1c46d554b3a3f9f3", "zlib.zdef": "213348433fb01cc6", "zdef": "213348433fb01cc6", "binascii": "257e074b935c33b4", "atom": "271ea3decb810db2", "zlib.zinflate": "451745df21e598af", "zinflate": "451745df21e598af", "stdio": "6f62fe05c5ea1ceb", "hashlib.__sha512": "6ff26590374ae6fc", "__sha512": "6ff26590374ae6fc", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "zlib.zchecksum": "8ebed83a7817fa0c", "zchecksum": "8ebed83a7817fa0c", "zlib.zdeflate": "90921d009fdd674c", "zdeflate": "90921d009fdd674c", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "hashlib.__init__": "96837bcc64032444", "__init__": "96837bcc64032444", "hashlib": "96837bcc64032444", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "hashlib.__sha256": "c9d54a4158f7f5a8", "__sha256": "c9d54a4158f7f5a8", "viperio": "c9f4be41ca1cc2b4", "zc.config": "cfc83b830141b00e", "config": "cfc83b830141b00e", "zlib.zhuff": "d541ade6afb689a5", "zhuff": "d541ade6afb689a5", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/TestProject2/output/6ff26590374ae6fc.deps.json b/Test/TestProject2/output/6ff26590374ae6fc.deps.json deleted file mode 100644 index 0c6f101..0000000 --- a/Test/TestProject2/output/6ff26590374ae6fc.deps.json +++ /dev/null @@ -1 +0,0 @@ -{"hashlib.__sha1": "0df65b8ed15664b0", "__sha1": "0df65b8ed15664b0", "hashlib.__md5": "19f8024d10c828e8", "__md5": "19f8024d10c828e8", "zlib.pyzlib": "1c46d554b3a3f9f3", "pyzlib": "1c46d554b3a3f9f3", "zlib.zdef": "213348433fb01cc6", "zdef": "213348433fb01cc6", "binascii": "257e074b935c33b4", "atom": "271ea3decb810db2", "zlib.zinflate": "451745df21e598af", "zinflate": "451745df21e598af", "main": "541a1ed9b8be53c8", "stdio": "6f62fe05c5ea1ceb", "hashlib.__sha512": "6ff26590374ae6fc", "__sha512": "6ff26590374ae6fc", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "zlib.zchecksum": "8ebed83a7817fa0c", "zchecksum": "8ebed83a7817fa0c", "zlib.zdeflate": "90921d009fdd674c", "zdeflate": "90921d009fdd674c", "stdlib": "90c53dd6db8d41cf", "hashlib.__init__": "96837bcc64032444", "__init__": "d63d2c2a2bd9bd2a", "hashlib": "96837bcc64032444", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "hashlib.__sha256": "c9d54a4158f7f5a8", "__sha256": "c9d54a4158f7f5a8", "viperio": "c9f4be41ca1cc2b4", "zc.config": "cfc83b830141b00e", "config": "cfc83b830141b00e", "zlib.zhuff": "d541ade6afb689a5", "zhuff": "d541ade6afb689a5", "testcheck": "dd3002730623424b", "memhub": "ee084e9fc6ee413a", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5", "zlib.__init__": "d63d2c2a2bd9bd2a", "zlib": "d63d2c2a2bd9bd2a"} \ No newline at end of file diff --git a/Test/TestProject2/output/8ebed83a7817fa0c.deps.json b/Test/TestProject2/output/8ebed83a7817fa0c.deps.json deleted file mode 100644 index 0c6f101..0000000 --- a/Test/TestProject2/output/8ebed83a7817fa0c.deps.json +++ /dev/null @@ -1 +0,0 @@ -{"hashlib.__sha1": "0df65b8ed15664b0", "__sha1": "0df65b8ed15664b0", "hashlib.__md5": "19f8024d10c828e8", "__md5": "19f8024d10c828e8", "zlib.pyzlib": "1c46d554b3a3f9f3", "pyzlib": "1c46d554b3a3f9f3", "zlib.zdef": "213348433fb01cc6", "zdef": "213348433fb01cc6", "binascii": "257e074b935c33b4", "atom": "271ea3decb810db2", "zlib.zinflate": "451745df21e598af", "zinflate": "451745df21e598af", "main": "541a1ed9b8be53c8", "stdio": "6f62fe05c5ea1ceb", "hashlib.__sha512": "6ff26590374ae6fc", "__sha512": "6ff26590374ae6fc", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "zlib.zchecksum": "8ebed83a7817fa0c", "zchecksum": "8ebed83a7817fa0c", "zlib.zdeflate": "90921d009fdd674c", "zdeflate": "90921d009fdd674c", "stdlib": "90c53dd6db8d41cf", "hashlib.__init__": "96837bcc64032444", "__init__": "d63d2c2a2bd9bd2a", "hashlib": "96837bcc64032444", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "hashlib.__sha256": "c9d54a4158f7f5a8", "__sha256": "c9d54a4158f7f5a8", "viperio": "c9f4be41ca1cc2b4", "zc.config": "cfc83b830141b00e", "config": "cfc83b830141b00e", "zlib.zhuff": "d541ade6afb689a5", "zhuff": "d541ade6afb689a5", "testcheck": "dd3002730623424b", "memhub": "ee084e9fc6ee413a", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5", "zlib.__init__": "d63d2c2a2bd9bd2a", "zlib": "d63d2c2a2bd9bd2a"} \ No newline at end of file diff --git a/Test/TestProject2/output/90921d009fdd674c.deps.json b/Test/TestProject2/output/90921d009fdd674c.deps.json deleted file mode 100644 index 0c6f101..0000000 --- a/Test/TestProject2/output/90921d009fdd674c.deps.json +++ /dev/null @@ -1 +0,0 @@ -{"hashlib.__sha1": "0df65b8ed15664b0", "__sha1": "0df65b8ed15664b0", "hashlib.__md5": "19f8024d10c828e8", "__md5": "19f8024d10c828e8", "zlib.pyzlib": "1c46d554b3a3f9f3", "pyzlib": "1c46d554b3a3f9f3", "zlib.zdef": "213348433fb01cc6", "zdef": "213348433fb01cc6", "binascii": "257e074b935c33b4", "atom": "271ea3decb810db2", "zlib.zinflate": "451745df21e598af", "zinflate": "451745df21e598af", "main": "541a1ed9b8be53c8", "stdio": "6f62fe05c5ea1ceb", "hashlib.__sha512": "6ff26590374ae6fc", "__sha512": "6ff26590374ae6fc", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "zlib.zchecksum": "8ebed83a7817fa0c", "zchecksum": "8ebed83a7817fa0c", "zlib.zdeflate": "90921d009fdd674c", "zdeflate": "90921d009fdd674c", "stdlib": "90c53dd6db8d41cf", "hashlib.__init__": "96837bcc64032444", "__init__": "d63d2c2a2bd9bd2a", "hashlib": "96837bcc64032444", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "hashlib.__sha256": "c9d54a4158f7f5a8", "__sha256": "c9d54a4158f7f5a8", "viperio": "c9f4be41ca1cc2b4", "zc.config": "cfc83b830141b00e", "config": "cfc83b830141b00e", "zlib.zhuff": "d541ade6afb689a5", "zhuff": "d541ade6afb689a5", "testcheck": "dd3002730623424b", "memhub": "ee084e9fc6ee413a", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5", "zlib.__init__": "d63d2c2a2bd9bd2a", "zlib": "d63d2c2a2bd9bd2a"} \ No newline at end of file diff --git a/Test/TestProject2/output/_shared_sym_includes.pickle b/Test/TestProject2/output/_shared_sym_includes.pickle deleted file mode 100644 index ce36e58..0000000 Binary files a/Test/TestProject2/output/_shared_sym_includes.pickle and /dev/null differ diff --git a/Test/TestProject2/output/c9d54a4158f7f5a8.deps.json b/Test/TestProject2/output/c9d54a4158f7f5a8.deps.json deleted file mode 100644 index 0c6f101..0000000 --- a/Test/TestProject2/output/c9d54a4158f7f5a8.deps.json +++ /dev/null @@ -1 +0,0 @@ -{"hashlib.__sha1": "0df65b8ed15664b0", "__sha1": "0df65b8ed15664b0", "hashlib.__md5": "19f8024d10c828e8", "__md5": "19f8024d10c828e8", "zlib.pyzlib": "1c46d554b3a3f9f3", "pyzlib": "1c46d554b3a3f9f3", "zlib.zdef": "213348433fb01cc6", "zdef": "213348433fb01cc6", "binascii": "257e074b935c33b4", "atom": "271ea3decb810db2", "zlib.zinflate": "451745df21e598af", "zinflate": "451745df21e598af", "main": "541a1ed9b8be53c8", "stdio": "6f62fe05c5ea1ceb", "hashlib.__sha512": "6ff26590374ae6fc", "__sha512": "6ff26590374ae6fc", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "zlib.zchecksum": "8ebed83a7817fa0c", "zchecksum": "8ebed83a7817fa0c", "zlib.zdeflate": "90921d009fdd674c", "zdeflate": "90921d009fdd674c", "stdlib": "90c53dd6db8d41cf", "hashlib.__init__": "96837bcc64032444", "__init__": "d63d2c2a2bd9bd2a", "hashlib": "96837bcc64032444", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "hashlib.__sha256": "c9d54a4158f7f5a8", "__sha256": "c9d54a4158f7f5a8", "viperio": "c9f4be41ca1cc2b4", "zc.config": "cfc83b830141b00e", "config": "cfc83b830141b00e", "zlib.zhuff": "d541ade6afb689a5", "zhuff": "d541ade6afb689a5", "testcheck": "dd3002730623424b", "memhub": "ee084e9fc6ee413a", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5", "zlib.__init__": "d63d2c2a2bd9bd2a", "zlib": "d63d2c2a2bd9bd2a"} \ No newline at end of file diff --git a/Test/TestProject2/output/cfc83b830141b00e.deps.json b/Test/TestProject2/output/cfc83b830141b00e.deps.json index 162aebe..37028d0 100644 --- a/Test/TestProject2/output/cfc83b830141b00e.deps.json +++ b/Test/TestProject2/output/cfc83b830141b00e.deps.json @@ -1 +1 @@ -{"hashlib.__sha1": "0df65b8ed15664b0", "__sha1": "0df65b8ed15664b0", "hashlib.__md5": "19f8024d10c828e8", "__md5": "19f8024d10c828e8", "zlib.pyzlib": "1c46d554b3a3f9f3", "pyzlib": "1c46d554b3a3f9f3", "zlib.zdef": "213348433fb01cc6", "zdef": "213348433fb01cc6", "binascii": "257e074b935c33b4", "atom": "271ea3decb810db2", "zlib.zinflate": "451745df21e598af", "zinflate": "451745df21e598af", "main": "541a1ed9b8be53c8", "stdio": "6f62fe05c5ea1ceb", "hashlib.__sha512": "6ff26590374ae6fc", "__sha512": "6ff26590374ae6fc", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "zlib.zchecksum": "8ebed83a7817fa0c", "zchecksum": "8ebed83a7817fa0c", "zlib.zdeflate": "90921d009fdd674c", "zdeflate": "90921d009fdd674c", "stdlib": "90c53dd6db8d41cf", "hashlib.__init__": "96837bcc64032444", "__init__": "96837bcc64032444", "hashlib": "96837bcc64032444", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "hashlib.__sha256": "c9d54a4158f7f5a8", "__sha256": "c9d54a4158f7f5a8", "viperio": "c9f4be41ca1cc2b4", "zlib.zhuff": "d541ade6afb689a5", "zhuff": "d541ade6afb689a5", "testcheck": "dd3002730623424b", "memhub": "ee084e9fc6ee413a", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"hashlib.__sha1": "0df65b8ed15664b0", "__sha1": "0df65b8ed15664b0", "testcheck": "14d33679f7fadf1f", "hashlib.__md5": "19f8024d10c828e8", "__md5": "19f8024d10c828e8", "zlib.pyzlib": "1c46d554b3a3f9f3", "pyzlib": "1c46d554b3a3f9f3", "zlib.zdef": "213348433fb01cc6", "zdef": "213348433fb01cc6", "binascii": "257e074b935c33b4", "atom": "271ea3decb810db2", "zlib.zinflate": "451745df21e598af", "zinflate": "451745df21e598af", "main": "541a1ed9b8be53c8", "stdio": "6f62fe05c5ea1ceb", "hashlib.__sha512": "6ff26590374ae6fc", "__sha512": "6ff26590374ae6fc", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "zlib.zchecksum": "8ebed83a7817fa0c", "zchecksum": "8ebed83a7817fa0c", "zlib.zdeflate": "90921d009fdd674c", "zdeflate": "90921d009fdd674c", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "hashlib.__init__": "96837bcc64032444", "__init__": "96837bcc64032444", "hashlib": "96837bcc64032444", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "hashlib.__sha256": "c9d54a4158f7f5a8", "__sha256": "c9d54a4158f7f5a8", "viperio": "c9f4be41ca1cc2b4", "zlib.zhuff": "d541ade6afb689a5", "zhuff": "d541ade6afb689a5", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/TestProject2/output/d541ade6afb689a5.deps.json b/Test/TestProject2/output/d541ade6afb689a5.deps.json deleted file mode 100644 index 0c6f101..0000000 --- a/Test/TestProject2/output/d541ade6afb689a5.deps.json +++ /dev/null @@ -1 +0,0 @@ -{"hashlib.__sha1": "0df65b8ed15664b0", "__sha1": "0df65b8ed15664b0", "hashlib.__md5": "19f8024d10c828e8", "__md5": "19f8024d10c828e8", "zlib.pyzlib": "1c46d554b3a3f9f3", "pyzlib": "1c46d554b3a3f9f3", "zlib.zdef": "213348433fb01cc6", "zdef": "213348433fb01cc6", "binascii": "257e074b935c33b4", "atom": "271ea3decb810db2", "zlib.zinflate": "451745df21e598af", "zinflate": "451745df21e598af", "main": "541a1ed9b8be53c8", "stdio": "6f62fe05c5ea1ceb", "hashlib.__sha512": "6ff26590374ae6fc", "__sha512": "6ff26590374ae6fc", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "zlib.zchecksum": "8ebed83a7817fa0c", "zchecksum": "8ebed83a7817fa0c", "zlib.zdeflate": "90921d009fdd674c", "zdeflate": "90921d009fdd674c", "stdlib": "90c53dd6db8d41cf", "hashlib.__init__": "96837bcc64032444", "__init__": "d63d2c2a2bd9bd2a", "hashlib": "96837bcc64032444", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "hashlib.__sha256": "c9d54a4158f7f5a8", "__sha256": "c9d54a4158f7f5a8", "viperio": "c9f4be41ca1cc2b4", "zc.config": "cfc83b830141b00e", "config": "cfc83b830141b00e", "zlib.zhuff": "d541ade6afb689a5", "zhuff": "d541ade6afb689a5", "testcheck": "dd3002730623424b", "memhub": "ee084e9fc6ee413a", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5", "zlib.__init__": "d63d2c2a2bd9bd2a", "zlib": "d63d2c2a2bd9bd2a"} \ No newline at end of file diff --git a/Test/TestProject2/temp/dd3002730623424b.pyi b/Test/TestProject2/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/TestProject2/temp/dd3002730623424b.pyi rename to Test/TestProject2/temp/14d33679f7fadf1f.pyi diff --git a/Test/TestProject2/temp/9474791561654346.pyi b/Test/TestProject2/temp/9474791561654346.pyi new file mode 100644 index 0000000..1f82b1e --- /dev/null +++ b/Test/TestProject2/temp/9474791561654346.pyi @@ -0,0 +1,59 @@ +""" +Auto-generated Python stub file from string.py +Module: string +""" + + +from stdint import * +import t, c + +def strcpy(dest: str, src: str) -> str: pass + +def strcat(dest: str, src: str) -> str: pass + +def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass + +def strlen(src: str) -> t.CSizeT | t.CExport: pass + +def strcmp(str1: str, str2: str) -> t.CInt: pass + +def samestr(str1: str, str2: str) -> bool: pass + +def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass + +def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass + +def strchr(s: str, cr: t.CInt) -> str: pass + +def strrchr(s: str, cr: t.CInt) -> str: pass + +def strstr(s: str, needle: str) -> str: pass + +def strspn(s: str, skip: str) -> int: pass + +def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def atoi(src: str) -> t.CInt: pass + +def atoll(src: str) -> t.CInt64T: pass + +def atof(src: str) -> t.CDouble: pass + +def split(s: str, delim: str, result: t.CArray[str]) -> int: pass + + +ascii_lowercase: t.CExtern | str +ascii_uppercase: t.CExtern | str +ascii_letters: t.CExtern | str +digits: t.CExtern | str +hexdigits: t.CExtern | str +octdigits: t.CExtern | str +punctuation: t.CExtern | str +whitespace: t.CExtern | str +printable: t.CExtern | str \ No newline at end of file diff --git a/Test/TestProject2/temp/_phase1_manifest.json b/Test/TestProject2/temp/_phase1_manifest.json index 0f76911..36df067 100644 --- a/Test/TestProject2/temp/_phase1_manifest.json +++ b/Test/TestProject2/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\TestProject2\\App\\main.py": {"sha1": "541a1ed9b8be53c8", "mtime": 1782266206.092594, "size": 881}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\TestProject2\\App\\zc\\config.py": {"sha1": "cfc83b830141b00e", "mtime": 1778402243.1661563, "size": 531}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\atom.py": {"sha1": "271ea3decb810db2", "mtime": 1782226548.693161, "size": 1290}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\binascii.py": {"sha1": "257e074b935c33b4", "mtime": 1782266199.8074288, "size": 14937}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\hashlib\\__init__.py": {"sha1": "96837bcc64032444", "mtime": 1777902641.540433, "size": 186}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\hashlib\\__md5.py": {"sha1": "19f8024d10c828e8", "mtime": 1784356818.7075372, "size": 5847}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\hashlib\\__sha1.py": {"sha1": "0df65b8ed15664b0", "mtime": 1784356827.656474, "size": 4516}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\hashlib\\__sha256.py": {"sha1": "c9d54a4158f7f5a8", "mtime": 1782266203.9352357, "size": 5332}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\hashlib\\__sha512.py": {"sha1": "6ff26590374ae6fc", "mtime": 1782266223.3380039, "size": 7162}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\memhub.py": {"sha1": "ee084e9fc6ee413a", "mtime": 1784214242.4485993, "size": 17765}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "ab6e54ba9a669f76", "mtime": 1783933178.7264287, "size": 9922}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\zlib\\pyzlib.py": {"sha1": "1c46d554b3a3f9f3", "mtime": 1783538216.7783763, "size": 26101}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\zlib\\zchecksum.py": {"sha1": "8ebed83a7817fa0c", "mtime": 1782266235.9510274, "size": 4067}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\zlib\\zdef.py": {"sha1": "213348433fb01cc6", "mtime": 1782827035.812386, "size": 8591}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\zlib\\zdeflate.py": {"sha1": "90921d009fdd674c", "mtime": 1783538197.82992, "size": 19061}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\zlib\\zhuff.py": {"sha1": "d541ade6afb689a5", "mtime": 1782827037.897873, "size": 13495}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\zlib\\zinflate.py": {"sha1": "451745df21e598af", "mtime": 1782827035.992862, "size": 18078}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\TestProject2\\App\\main.py": {"sha1": "541a1ed9b8be53c8", "mtime": 1782266206.092594, "size": 881}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\TestProject2\\App\\zc\\config.py": {"sha1": "cfc83b830141b00e", "mtime": 1778402243.1661563, "size": 531}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\atom.py": {"sha1": "271ea3decb810db2", "mtime": 1782226548.693161, "size": 1290}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\binascii.py": {"sha1": "257e074b935c33b4", "mtime": 1782266199.8074288, "size": 14937}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\hashlib\\__init__.py": {"sha1": "96837bcc64032444", "mtime": 1777902641.540433, "size": 186}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\hashlib\\__md5.py": {"sha1": "19f8024d10c828e8", "mtime": 1784356818.7075372, "size": 5847}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\hashlib\\__sha1.py": {"sha1": "0df65b8ed15664b0", "mtime": 1784356827.656474, "size": 4516}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\hashlib\\__sha256.py": {"sha1": "c9d54a4158f7f5a8", "mtime": 1782266203.9352357, "size": 5332}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\hashlib\\__sha512.py": {"sha1": "6ff26590374ae6fc", "mtime": 1782266223.3380039, "size": 7162}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\memhub.py": {"sha1": "f3560b99de458aec", "mtime": 1784375410.1873891, "size": 19458}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "9474791561654346", "mtime": 1784387475.6951904, "size": 10395}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\zlib\\pyzlib.py": {"sha1": "1c46d554b3a3f9f3", "mtime": 1783538216.7783763, "size": 26101}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\zlib\\zchecksum.py": {"sha1": "8ebed83a7817fa0c", "mtime": 1782266235.9510274, "size": 4067}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\zlib\\zdef.py": {"sha1": "213348433fb01cc6", "mtime": 1782827035.812386, "size": 8591}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\zlib\\zdeflate.py": {"sha1": "90921d009fdd674c", "mtime": 1783538197.82992, "size": 19061}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\zlib\\zhuff.py": {"sha1": "d541ade6afb689a5", "mtime": 1782827037.897873, "size": 13495}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\zlib\\zinflate.py": {"sha1": "451745df21e598af", "mtime": 1782827035.992862, "size": 18078}} \ No newline at end of file diff --git a/Test/TestProject2/temp/_sha1_map.txt b/Test/TestProject2/temp/_sha1_map.txt index 976db2f..df25906 100644 --- a/Test/TestProject2/temp/_sha1_map.txt +++ b/Test/TestProject2/temp/_sha1_map.txt @@ -1,4 +1,5 @@ 0df65b8ed15664b0:includes/hashlib\__sha1.py +14d33679f7fadf1f:includes/testcheck.py 19f8024d10c828e8:includes/hashlib\__md5.py 1c46d554b3a3f9f3:includes/zlib\pyzlib.py 213348433fb01cc6:includes/zlib\zdef.py @@ -12,13 +13,12 @@ 8ebed83a7817fa0c:includes/zlib\zchecksum.py 90921d009fdd674c:includes/zlib\zdeflate.py 90c53dd6db8d41cf:includes/stdlib.py +9474791561654346:includes/string.py 96837bcc64032444:includes/hashlib\__init__.py -ab6e54ba9a669f76:includes/string.py bbdf3bbd4c3bc28c:includes/w32\win32console.py c9d54a4158f7f5a8:includes/hashlib\__sha256.py c9f4be41ca1cc2b4:includes/viperio.py cfc83b830141b00e:zc\config.py d541ade6afb689a5:includes/zlib\zhuff.py -dd3002730623424b:includes/testcheck.py -ee084e9fc6ee413a:includes/memhub.py +f3560b99de458aec:includes/memhub.py f5522571bcce7bcb:includes/stdint.py diff --git a/Test/TestProject2/temp/_shared_sym.json b/Test/TestProject2/temp/_shared_sym.json index 7d00629..2834828 100644 Binary files a/Test/TestProject2/temp/_shared_sym.json and b/Test/TestProject2/temp/_shared_sym.json differ diff --git a/Test/TestProject2/temp/ab6e54ba9a669f76.pyi b/Test/TestProject2/temp/ab6e54ba9a669f76.pyi deleted file mode 100644 index 4fc3440..0000000 --- a/Test/TestProject2/temp/ab6e54ba9a669f76.pyi +++ /dev/null @@ -1,48 +0,0 @@ -""" -Auto-generated Python stub file from string.py -Module: string -""" - - -from stdint import * -import t, c - -def strcpy(dest: str, src: str) -> str: pass - -def strcat(dest: str, src: str) -> str: pass - -def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass - -def strlen(src: str) -> t.CSizeT | t.CExport: pass - -def strcmp(str1: str, str2: str) -> t.CInt: pass - -def samestr(str1: str, str2: str) -> bool: pass - -def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass - -def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass - -def strchr(s: str, cr: t.CInt) -> str: pass - -def strrchr(s: str, cr: t.CInt) -> str: pass - -def strstr(s: str, needle: str) -> str: pass - -def strspn(s: str, skip: str) -> int: pass - -def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def atoi(src: str) -> t.CInt: pass - -def atoll(src: str) -> t.CInt64T: pass - -def atof(src: str) -> t.CDouble: pass - -def split(s: str, delim: str, result: t.CArray[str]) -> int: pass diff --git a/Test/TestProject2/temp/ee084e9fc6ee413a.pyi b/Test/TestProject2/temp/ee084e9fc6ee413a.pyi deleted file mode 100644 index 45551ef..0000000 --- a/Test/TestProject2/temp/ee084e9fc6ee413a.pyi +++ /dev/null @@ -1,81 +0,0 @@ -""" -Auto-generated Python stub file from memhub.py -Module: memhub -""" - - -import t, c -from stdint import * -import string -import atom -import viperio - -MEMHUB_ALIGN: t.CDefine = 8 -MEMSLAB_MIN_BLOCK: t.CDefine = 16 -MEMSLAB_BITMAP_BYTES: t.CDefine = 256 -MEMBUDDY_MIN_BLOCK: t.CDefine = 32 -MEMBUDDY_MAX_ORDERS: t.CDefine = 32 -MEMBUDDY_HEADER_SIZE: t.CDefine = 8 - -def _align_up(val: t.CSizeT, align: t.CSizeT) -> t.CSizeT: pass - -def _largest_pow2_le(val: t.CSizeT) -> t.CSizeT: pass - -def _block_size_at_order(order: t.CInt) -> t.CSizeT: pass - - -@t.CVTable -class MemManager: - __provides__: list[str] = ['__memmgr__'] - base: t.CVoid | t.CPtr - size: t.CSizeT - def __init__(self: MemManager, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemManager, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemManager, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemManager) -> t.CInt: pass - def calloc(self: MemManager, count: t.CSizeT, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def realloc(self: MemManager, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def __enter__(self: MemManager) -> 'MemManager' | t.CPtr: pass - def __exit__(self: MemManager) -> t.CInt: pass - def alloc_buf(self: MemManager, capacity: t.CSizeT) -> viperio.Buf | t.CPtr: pass -class MemPool(MemManager): - offset: t.CSizeT - high_water: t.CSizeT - def __init__(self: MemPool, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemPool, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemPool, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemPool) -> t.CInt: pass -class MemSlab(MemManager): - block_size: t.CSizeT - block_count: t.CSizeT - used_count: t.CSizeT - free_list: t.CVoid | t.CPtr - alloc_map: t.CUInt8T | t.CPtr - alloc_map_size: t.CSizeT - usable: t.CVoid | t.CPtr - usable_size: t.CSizeT - def __init__(self: MemSlab, base: t.CVoid | t.CPtr, size: t.CSizeT, block_size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemSlab, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemSlab, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemSlab) -> t.CInt: pass -class MemBuddy(MemManager): - max_order: t.CInt - free_lists: t.CUInt64T | t.CPtr - lock_val: t.CVolatile | t.CInt - usable: t.CVoid | t.CPtr - usable_size: t.CSizeT - def __init__(self: MemBuddy, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def _fl_push(self: MemBuddy, order: t.CInt, block: t.CVoid | t.CPtr) -> t.CInt: pass - def _fl_pop(self: MemBuddy, order: t.CInt) -> t.CVoid | t.CPtr: pass - def _fl_find_and_remove(self: MemBuddy, order: t.CInt, target: t.CVoid | t.CPtr) -> t.CInt: pass - def _buddy_of(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CVoid | t.CPtr: pass - def _order_for_size(self: MemBuddy, size: t.CSizeT) -> t.CInt: pass - def _split_to_order(self: MemBuddy, to_order: t.CInt) -> t.CVoid | t.CPtr: pass - def _coalesce(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CInt: pass - def _is_valid_ptr(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def _lock(self: MemBuddy) -> t.CInt: pass - def _unlock(self: MemBuddy) -> t.CInt: pass - def alloc(self: MemBuddy, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemBuddy) -> t.CInt: pass - def realloc(self: MemBuddy, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass \ No newline at end of file diff --git a/Test/TestProject2/temp/f3560b99de458aec.pyi b/Test/TestProject2/temp/f3560b99de458aec.pyi new file mode 100644 index 0000000..84f0bbf --- /dev/null +++ b/Test/TestProject2/temp/f3560b99de458aec.pyi @@ -0,0 +1,86 @@ +""" +Auto-generated Python stub file from memhub.py +Module: memhub +""" + + +import t, c +from stdint import * +import string +import atom +import viperio + +MEMHUB_ALIGN: t.CDefine = 8 +MEMSLAB_MIN_BLOCK: t.CDefine = 16 +MEMSLAB_BITMAP_BYTES: t.CDefine = 256 +MEMBUDDY_MIN_BLOCK: t.CDefine = 32 +MEMBUDDY_MAX_ORDERS: t.CDefine = 32 +MEMBUDDY_HEADER_SIZE: t.CDefine = 8 + +def _align_up(val: t.CSizeT, align: t.CSizeT) -> t.CSizeT: pass + +def _largest_pow2_le(val: t.CSizeT) -> t.CSizeT: pass + +def _block_size_at_order(order: t.CInt) -> t.CSizeT: pass + + +@t.CVTable +class MemManager: + __provides__: list[str] = ['__memmgr__'] + base: t.CVoid | t.CPtr + size: t.CSizeT + def __init__(self: MemManager, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemManager, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemManager, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemManager) -> t.CInt: pass + def calloc(self: MemManager, count: t.CSizeT, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def realloc(self: MemManager, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def __enter__(self: MemManager) -> 'MemManager' | t.CPtr: pass + def __exit__(self: MemManager) -> t.CInt: pass + def alloc_buf(self: MemManager, capacity: t.CSizeT) -> viperio.Buf | t.CPtr: pass +class MemPool(MemManager): + offset: t.CSizeT + high_water: t.CSizeT + def __init__(self: MemPool, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemPool, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemPool, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemPool) -> t.CInt: pass +class MemSlab(MemManager): + block_size: t.CSizeT + block_count: t.CSizeT + used_count: t.CSizeT + free_list: t.CVoid | t.CPtr + alloc_map: t.CUInt8T | t.CPtr + alloc_map_size: t.CSizeT + usable: t.CVoid | t.CPtr + usable_size: t.CSizeT + def __init__(self: MemSlab, base: t.CVoid | t.CPtr, size: t.CSizeT, block_size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemSlab, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemSlab, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemSlab) -> t.CInt: pass +class MemBuddy(MemManager): + max_order: t.CInt + free_lists: t.CUInt64T | t.CPtr + lock_val: t.CVolatile | t.CInt + usable: t.CVoid | t.CPtr + usable_size: t.CSizeT + def __init__(self: MemBuddy, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def _fl_push(self: MemBuddy, order: t.CInt, block: t.CVoid | t.CPtr) -> t.CInt: pass + def _fl_pop(self: MemBuddy, order: t.CInt) -> t.CVoid | t.CPtr: pass + def _fl_find_and_remove(self: MemBuddy, order: t.CInt, target: t.CVoid | t.CPtr) -> t.CInt: pass + def _buddy_of(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CVoid | t.CPtr: pass + def _order_for_size(self: MemBuddy, size: t.CSizeT) -> t.CInt: pass + def _split_to_order(self: MemBuddy, to_order: t.CInt) -> t.CVoid | t.CPtr: pass + def _coalesce(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CInt: pass + def _is_valid_ptr(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def _lock(self: MemBuddy) -> t.CInt: pass + def _unlock(self: MemBuddy) -> t.CInt: pass + def alloc(self: MemBuddy, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemBuddy) -> t.CInt: pass + def realloc(self: MemBuddy, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + @property + def mem_size(self: MemBuddy) -> t.CSizeT: pass + def stats(self: MemBuddy) -> t.CSizeT: pass + def free_count(self: MemBuddy) -> t.CSizeT: pass + def self_check(self: MemBuddy) -> t.CInt: pass \ No newline at end of file diff --git a/Test/TestProject3/output/0019c939aae7f9f1.deps.json b/Test/TestProject3/output/0019c939aae7f9f1.deps.json new file mode 100644 index 0000000..2936a93 --- /dev/null +++ b/Test/TestProject3/output/0019c939aae7f9f1.deps.json @@ -0,0 +1 @@ +{"w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "testcheck": "14d33679f7fadf1f", "enumtest": "1b58766d38d05de3", "atom": "271ea3decb810db2", "vector": "285a822aa26bfbda", "definetest": "64ac83614c9bdbc6", "stdio": "6f62fe05c5ea1ceb", "stdarg": "71e0a3ffcb3ebfad", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "platmacro": "93c1d18e35d188d6", "string": "9474791561654346", "main": "b235d6477436c524", "vectortest": "b777c587cc21465a", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "fileiotest": "c01b27dbcd683245", "viperlib": "c3b259b4059f8668", "viperio": "c9f4be41ca1cc2b4", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0"} \ No newline at end of file diff --git a/Test/TestProject3/output/1b58766d38d05de3.deps.json b/Test/TestProject3/output/1b58766d38d05de3.deps.json index c04137a..5030c5a 100644 --- a/Test/TestProject3/output/1b58766d38d05de3.deps.json +++ b/Test/TestProject3/output/1b58766d38d05de3.deps.json @@ -1 +1 @@ -{"mpooltest": "0019c939aae7f9f1", "w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "atom": "271ea3decb810db2", "definetest": "64ac83614c9bdbc6", "stdio": "6f62fe05c5ea1ceb", "stdarg": "71e0a3ffcb3ebfad", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "platmacro": "93c1d18e35d188d6", "string": "ab6e54ba9a669f76", "main": "b235d6477436c524", "vectortest": "b777c587cc21465a", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "vector": "bf9813f6e3c9d351", "fileiotest": "c01b27dbcd683245", "viperlib": "c3b259b4059f8668", "viperio": "c9f4be41ca1cc2b4", "testcheck": "dd3002730623424b", "memhub": "ee084e9fc6ee413a", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0"} \ No newline at end of file +{"mpooltest": "0019c939aae7f9f1", "w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "testcheck": "14d33679f7fadf1f", "atom": "271ea3decb810db2", "vector": "285a822aa26bfbda", "definetest": "64ac83614c9bdbc6", "stdio": "6f62fe05c5ea1ceb", "stdarg": "71e0a3ffcb3ebfad", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "platmacro": "93c1d18e35d188d6", "string": "9474791561654346", "main": "b235d6477436c524", "vectortest": "b777c587cc21465a", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "fileiotest": "c01b27dbcd683245", "viperlib": "c3b259b4059f8668", "viperio": "c9f4be41ca1cc2b4", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0"} \ No newline at end of file diff --git a/Test/TestProject3/output/64ac83614c9bdbc6.deps.json b/Test/TestProject3/output/64ac83614c9bdbc6.deps.json index 55aa415..080c2a9 100644 --- a/Test/TestProject3/output/64ac83614c9bdbc6.deps.json +++ b/Test/TestProject3/output/64ac83614c9bdbc6.deps.json @@ -1 +1 @@ -{"mpooltest": "0019c939aae7f9f1", "w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "enumtest": "1b58766d38d05de3", "atom": "271ea3decb810db2", "stdio": "6f62fe05c5ea1ceb", "stdarg": "71e0a3ffcb3ebfad", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "platmacro": "93c1d18e35d188d6", "string": "ab6e54ba9a669f76", "main": "b235d6477436c524", "vectortest": "b777c587cc21465a", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "vector": "bf9813f6e3c9d351", "fileiotest": "c01b27dbcd683245", "viperlib": "c3b259b4059f8668", "viperio": "c9f4be41ca1cc2b4", "testcheck": "dd3002730623424b", "memhub": "ee084e9fc6ee413a", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0"} \ No newline at end of file +{"mpooltest": "0019c939aae7f9f1", "w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "testcheck": "14d33679f7fadf1f", "enumtest": "1b58766d38d05de3", "atom": "271ea3decb810db2", "vector": "285a822aa26bfbda", "stdio": "6f62fe05c5ea1ceb", "stdarg": "71e0a3ffcb3ebfad", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "platmacro": "93c1d18e35d188d6", "string": "9474791561654346", "main": "b235d6477436c524", "vectortest": "b777c587cc21465a", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "fileiotest": "c01b27dbcd683245", "viperlib": "c3b259b4059f8668", "viperio": "c9f4be41ca1cc2b4", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0"} \ No newline at end of file diff --git a/Test/TestProject3/output/b235d6477436c524.deps.json b/Test/TestProject3/output/b235d6477436c524.deps.json index 8bc99f3..993e7c0 100644 --- a/Test/TestProject3/output/b235d6477436c524.deps.json +++ b/Test/TestProject3/output/b235d6477436c524.deps.json @@ -1 +1 @@ -{"mpooltest": "0019c939aae7f9f1", "w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "enumtest": "1b58766d38d05de3", "atom": "271ea3decb810db2", "definetest": "64ac83614c9bdbc6", "stdio": "6f62fe05c5ea1ceb", "stdarg": "71e0a3ffcb3ebfad", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "platmacro": "93c1d18e35d188d6", "string": "ab6e54ba9a669f76", "vectortest": "b777c587cc21465a", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "vector": "bf9813f6e3c9d351", "fileiotest": "c01b27dbcd683245", "viperlib": "c3b259b4059f8668", "viperio": "c9f4be41ca1cc2b4", "testcheck": "dd3002730623424b", "memhub": "ee084e9fc6ee413a", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0"} \ No newline at end of file +{"mpooltest": "0019c939aae7f9f1", "w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "testcheck": "14d33679f7fadf1f", "enumtest": "1b58766d38d05de3", "atom": "271ea3decb810db2", "vector": "285a822aa26bfbda", "definetest": "64ac83614c9bdbc6", "stdio": "6f62fe05c5ea1ceb", "stdarg": "71e0a3ffcb3ebfad", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "platmacro": "93c1d18e35d188d6", "string": "9474791561654346", "vectortest": "b777c587cc21465a", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "fileiotest": "c01b27dbcd683245", "viperlib": "c3b259b4059f8668", "viperio": "c9f4be41ca1cc2b4", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0"} \ No newline at end of file diff --git a/Test/TestProject3/output/b777c587cc21465a.deps.json b/Test/TestProject3/output/b777c587cc21465a.deps.json index 47d27f3..eb0338c 100644 --- a/Test/TestProject3/output/b777c587cc21465a.deps.json +++ b/Test/TestProject3/output/b777c587cc21465a.deps.json @@ -1 +1 @@ -{"mpooltest": "0019c939aae7f9f1", "w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "enumtest": "1b58766d38d05de3", "atom": "271ea3decb810db2", "definetest": "64ac83614c9bdbc6", "stdio": "6f62fe05c5ea1ceb", "stdarg": "71e0a3ffcb3ebfad", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "platmacro": "93c1d18e35d188d6", "string": "ab6e54ba9a669f76", "main": "b235d6477436c524", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "vector": "bf9813f6e3c9d351", "fileiotest": "c01b27dbcd683245", "viperlib": "c3b259b4059f8668", "viperio": "c9f4be41ca1cc2b4", "testcheck": "dd3002730623424b", "memhub": "ee084e9fc6ee413a", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0"} \ No newline at end of file +{"mpooltest": "0019c939aae7f9f1", "w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "testcheck": "14d33679f7fadf1f", "enumtest": "1b58766d38d05de3", "atom": "271ea3decb810db2", "vector": "285a822aa26bfbda", "definetest": "64ac83614c9bdbc6", "stdio": "6f62fe05c5ea1ceb", "stdarg": "71e0a3ffcb3ebfad", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "platmacro": "93c1d18e35d188d6", "string": "9474791561654346", "main": "b235d6477436c524", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "fileiotest": "c01b27dbcd683245", "viperlib": "c3b259b4059f8668", "viperio": "c9f4be41ca1cc2b4", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0"} \ No newline at end of file diff --git a/Test/TestProject3/output/c01b27dbcd683245.deps.json b/Test/TestProject3/output/c01b27dbcd683245.deps.json index b74fa3d..587c9b6 100644 --- a/Test/TestProject3/output/c01b27dbcd683245.deps.json +++ b/Test/TestProject3/output/c01b27dbcd683245.deps.json @@ -1 +1 @@ -{"mpooltest": "0019c939aae7f9f1", "w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "enumtest": "1b58766d38d05de3", "atom": "271ea3decb810db2", "definetest": "64ac83614c9bdbc6", "stdio": "6f62fe05c5ea1ceb", "stdarg": "71e0a3ffcb3ebfad", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "platmacro": "93c1d18e35d188d6", "string": "ab6e54ba9a669f76", "main": "b235d6477436c524", "vectortest": "b777c587cc21465a", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "vector": "bf9813f6e3c9d351", "viperlib": "c3b259b4059f8668", "viperio": "c9f4be41ca1cc2b4", "testcheck": "dd3002730623424b", "memhub": "ee084e9fc6ee413a", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0"} \ No newline at end of file +{"mpooltest": "0019c939aae7f9f1", "w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "testcheck": "14d33679f7fadf1f", "enumtest": "1b58766d38d05de3", "atom": "271ea3decb810db2", "vector": "285a822aa26bfbda", "definetest": "64ac83614c9bdbc6", "stdio": "6f62fe05c5ea1ceb", "stdarg": "71e0a3ffcb3ebfad", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "platmacro": "93c1d18e35d188d6", "string": "9474791561654346", "main": "b235d6477436c524", "vectortest": "b777c587cc21465a", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperlib": "c3b259b4059f8668", "viperio": "c9f4be41ca1cc2b4", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0"} \ No newline at end of file diff --git a/Test/TestProject3/temp/dd3002730623424b.pyi b/Test/TestProject3/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/TestProject3/temp/dd3002730623424b.pyi rename to Test/TestProject3/temp/14d33679f7fadf1f.pyi diff --git a/.transpyc_cache/bf9813f6e3c9d351.pyi b/Test/TestProject3/temp/285a822aa26bfbda.pyi similarity index 100% rename from .transpyc_cache/bf9813f6e3c9d351.pyi rename to Test/TestProject3/temp/285a822aa26bfbda.pyi diff --git a/Test/TestProject3/temp/9474791561654346.pyi b/Test/TestProject3/temp/9474791561654346.pyi new file mode 100644 index 0000000..1f82b1e --- /dev/null +++ b/Test/TestProject3/temp/9474791561654346.pyi @@ -0,0 +1,59 @@ +""" +Auto-generated Python stub file from string.py +Module: string +""" + + +from stdint import * +import t, c + +def strcpy(dest: str, src: str) -> str: pass + +def strcat(dest: str, src: str) -> str: pass + +def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass + +def strlen(src: str) -> t.CSizeT | t.CExport: pass + +def strcmp(str1: str, str2: str) -> t.CInt: pass + +def samestr(str1: str, str2: str) -> bool: pass + +def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass + +def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass + +def strchr(s: str, cr: t.CInt) -> str: pass + +def strrchr(s: str, cr: t.CInt) -> str: pass + +def strstr(s: str, needle: str) -> str: pass + +def strspn(s: str, skip: str) -> int: pass + +def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def atoi(src: str) -> t.CInt: pass + +def atoll(src: str) -> t.CInt64T: pass + +def atof(src: str) -> t.CDouble: pass + +def split(s: str, delim: str, result: t.CArray[str]) -> int: pass + + +ascii_lowercase: t.CExtern | str +ascii_uppercase: t.CExtern | str +ascii_letters: t.CExtern | str +digits: t.CExtern | str +hexdigits: t.CExtern | str +octdigits: t.CExtern | str +punctuation: t.CExtern | str +whitespace: t.CExtern | str +printable: t.CExtern | str \ No newline at end of file diff --git a/Test/TestProject3/temp/_phase1_manifest.json b/Test/TestProject3/temp/_phase1_manifest.json index eb76b7c..42c45a8 100644 --- a/Test/TestProject3/temp/_phase1_manifest.json +++ b/Test/TestProject3/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\TestProject3\\App\\definetest.py": {"sha1": "64ac83614c9bdbc6", "mtime": 1781005527.138675, "size": 9399}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\TestProject3\\App\\enumtest.py": {"sha1": "1b58766d38d05de3", "mtime": 1781025043.7585423, "size": 2094}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\TestProject3\\App\\fileiotest.py": {"sha1": "c01b27dbcd683245", "mtime": 1781261000.2857711, "size": 12600}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\TestProject3\\App\\main.py": {"sha1": "b235d6477436c524", "mtime": 1782110387.1454024, "size": 15478}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\TestProject3\\App\\mpooltest.py": {"sha1": "0019c939aae7f9f1", "mtime": 1782828388.8033123, "size": 2789}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\TestProject3\\App\\vectortest.py": {"sha1": "b777c587cc21465a", "mtime": 1782828416.8050296, "size": 1215}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\atom.py": {"sha1": "271ea3decb810db2", "mtime": 1782226548.693161, "size": 1290}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\memhub.py": {"sha1": "ee084e9fc6ee413a", "mtime": 1784214242.4485993, "size": 17765}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\platmacro.py": {"sha1": "93c1d18e35d188d6", "mtime": 1781237231.03366, "size": 1422}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdarg.py": {"sha1": "71e0a3ffcb3ebfad", "mtime": 1781258888.113146, "size": 277}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "ab6e54ba9a669f76", "mtime": 1783933178.7264287, "size": 9922}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\vector.py": {"sha1": "bf9813f6e3c9d351", "mtime": 1782826619.9232223, "size": 2141}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperlib.py": {"sha1": "c3b259b4059f8668", "mtime": 1782821991.979496, "size": 56772}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\fileio.py": {"sha1": "0035c95a18d4f8e8", "mtime": 1783747022.686592, "size": 14147}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32file.py": {"sha1": "f6b51804a0ba8ff0", "mtime": 1782531158.744144, "size": 8424}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\TestProject3\\App\\definetest.py": {"sha1": "64ac83614c9bdbc6", "mtime": 1781005527.138675, "size": 9399}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\TestProject3\\App\\enumtest.py": {"sha1": "1b58766d38d05de3", "mtime": 1781025043.7585423, "size": 2094}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\TestProject3\\App\\fileiotest.py": {"sha1": "c01b27dbcd683245", "mtime": 1781261000.2857711, "size": 12600}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\TestProject3\\App\\main.py": {"sha1": "b235d6477436c524", "mtime": 1782110387.1454024, "size": 15478}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\TestProject3\\App\\mpooltest.py": {"sha1": "0019c939aae7f9f1", "mtime": 1782828388.8033123, "size": 2789}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\TestProject3\\App\\vectortest.py": {"sha1": "b777c587cc21465a", "mtime": 1782828416.8050296, "size": 1215}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\atom.py": {"sha1": "271ea3decb810db2", "mtime": 1782226548.693161, "size": 1290}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\memhub.py": {"sha1": "f3560b99de458aec", "mtime": 1784375410.1873891, "size": 19458}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\platmacro.py": {"sha1": "93c1d18e35d188d6", "mtime": 1781237231.03366, "size": 1422}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdarg.py": {"sha1": "71e0a3ffcb3ebfad", "mtime": 1781258888.113146, "size": 277}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "9474791561654346", "mtime": 1784387475.6951904, "size": 10395}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\vector.py": {"sha1": "285a822aa26bfbda", "mtime": 1784375432.2854693, "size": 2071}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperlib.py": {"sha1": "c3b259b4059f8668", "mtime": 1782821991.979496, "size": 56772}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\fileio.py": {"sha1": "0035c95a18d4f8e8", "mtime": 1783747022.686592, "size": 14147}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32file.py": {"sha1": "f6b51804a0ba8ff0", "mtime": 1782531158.744144, "size": 8424}} \ No newline at end of file diff --git a/Test/TestProject3/temp/_sha1_map.txt b/Test/TestProject3/temp/_sha1_map.txt index 23df6cc..eeb15a9 100644 --- a/Test/TestProject3/temp/_sha1_map.txt +++ b/Test/TestProject3/temp/_sha1_map.txt @@ -1,22 +1,22 @@ 0019c939aae7f9f1:mpooltest.py 0035c95a18d4f8e8:includes/w32\fileio.py +14d33679f7fadf1f:includes/testcheck.py 1b58766d38d05de3:enumtest.py 271ea3decb810db2:includes/atom.py +285a822aa26bfbda:includes/vector.py 64ac83614c9bdbc6:definetest.py 6f62fe05c5ea1ceb:includes/stdio.py 71e0a3ffcb3ebfad:includes/stdarg.py 7e529fe7a078cfef:includes/w32\win32base.py 90c53dd6db8d41cf:includes/stdlib.py 93c1d18e35d188d6:includes/platmacro.py -ab6e54ba9a669f76:includes/string.py +9474791561654346:includes/string.py b235d6477436c524:main.py b777c587cc21465a:vectortest.py bbdf3bbd4c3bc28c:includes/w32\win32console.py -bf9813f6e3c9d351:includes/vector.py c01b27dbcd683245:fileiotest.py c3b259b4059f8668:includes/viperlib.py c9f4be41ca1cc2b4:includes/viperio.py -dd3002730623424b:includes/testcheck.py -ee084e9fc6ee413a:includes/memhub.py +f3560b99de458aec:includes/memhub.py f5522571bcce7bcb:includes/stdint.py f6b51804a0ba8ff0:includes/w32\win32file.py diff --git a/Test/TestProject3/temp/_shared_sym.json b/Test/TestProject3/temp/_shared_sym.json index 6e2ef56..77335eb 100644 Binary files a/Test/TestProject3/temp/_shared_sym.json and b/Test/TestProject3/temp/_shared_sym.json differ diff --git a/Test/TestProject3/temp/ab6e54ba9a669f76.pyi b/Test/TestProject3/temp/ab6e54ba9a669f76.pyi deleted file mode 100644 index 4fc3440..0000000 --- a/Test/TestProject3/temp/ab6e54ba9a669f76.pyi +++ /dev/null @@ -1,48 +0,0 @@ -""" -Auto-generated Python stub file from string.py -Module: string -""" - - -from stdint import * -import t, c - -def strcpy(dest: str, src: str) -> str: pass - -def strcat(dest: str, src: str) -> str: pass - -def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass - -def strlen(src: str) -> t.CSizeT | t.CExport: pass - -def strcmp(str1: str, str2: str) -> t.CInt: pass - -def samestr(str1: str, str2: str) -> bool: pass - -def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass - -def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass - -def strchr(s: str, cr: t.CInt) -> str: pass - -def strrchr(s: str, cr: t.CInt) -> str: pass - -def strstr(s: str, needle: str) -> str: pass - -def strspn(s: str, skip: str) -> int: pass - -def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def atoi(src: str) -> t.CInt: pass - -def atoll(src: str) -> t.CInt64T: pass - -def atof(src: str) -> t.CDouble: pass - -def split(s: str, delim: str, result: t.CArray[str]) -> int: pass diff --git a/Test/TestProject3/temp/bf9813f6e3c9d351.pyi b/Test/TestProject3/temp/bf9813f6e3c9d351.pyi deleted file mode 100644 index 00d2f9f..0000000 --- a/Test/TestProject3/temp/bf9813f6e3c9d351.pyi +++ /dev/null @@ -1,24 +0,0 @@ -""" -Auto-generated Python stub file from vector.py -Module: vector -""" - - -import t, c -from stdint import * -import memhub - -class Vector[T]: - data: t.CVoid | t.CPtr - length: t.CSizeT - capacity: t.CSizeT - elem_size: t.CSizeT - pool: memhub.MemManager | t.CPtr - def __init__(self: Vector, pool: memhub.MemManager | t.CPtr, capacity: t.CSizeT, _hint: T) -> t.CInt: pass - def push(self: Vector, value: T) -> t.CInt: pass - def _grow(self: Vector) -> t.CInt: pass - def get(self: Vector, index: t.CSizeT) -> T: pass - def set(self: Vector, index: t.CSizeT, value: T) -> t.CInt: pass - def len(self: Vector) -> t.CSizeT: pass - def clear(self: Vector) -> t.CInt: pass - def free(self: Vector) -> t.CInt: pass \ No newline at end of file diff --git a/Test/TestProject3/temp/ee084e9fc6ee413a.pyi b/Test/TestProject3/temp/ee084e9fc6ee413a.pyi deleted file mode 100644 index 45551ef..0000000 --- a/Test/TestProject3/temp/ee084e9fc6ee413a.pyi +++ /dev/null @@ -1,81 +0,0 @@ -""" -Auto-generated Python stub file from memhub.py -Module: memhub -""" - - -import t, c -from stdint import * -import string -import atom -import viperio - -MEMHUB_ALIGN: t.CDefine = 8 -MEMSLAB_MIN_BLOCK: t.CDefine = 16 -MEMSLAB_BITMAP_BYTES: t.CDefine = 256 -MEMBUDDY_MIN_BLOCK: t.CDefine = 32 -MEMBUDDY_MAX_ORDERS: t.CDefine = 32 -MEMBUDDY_HEADER_SIZE: t.CDefine = 8 - -def _align_up(val: t.CSizeT, align: t.CSizeT) -> t.CSizeT: pass - -def _largest_pow2_le(val: t.CSizeT) -> t.CSizeT: pass - -def _block_size_at_order(order: t.CInt) -> t.CSizeT: pass - - -@t.CVTable -class MemManager: - __provides__: list[str] = ['__memmgr__'] - base: t.CVoid | t.CPtr - size: t.CSizeT - def __init__(self: MemManager, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemManager, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemManager, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemManager) -> t.CInt: pass - def calloc(self: MemManager, count: t.CSizeT, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def realloc(self: MemManager, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def __enter__(self: MemManager) -> 'MemManager' | t.CPtr: pass - def __exit__(self: MemManager) -> t.CInt: pass - def alloc_buf(self: MemManager, capacity: t.CSizeT) -> viperio.Buf | t.CPtr: pass -class MemPool(MemManager): - offset: t.CSizeT - high_water: t.CSizeT - def __init__(self: MemPool, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemPool, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemPool, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemPool) -> t.CInt: pass -class MemSlab(MemManager): - block_size: t.CSizeT - block_count: t.CSizeT - used_count: t.CSizeT - free_list: t.CVoid | t.CPtr - alloc_map: t.CUInt8T | t.CPtr - alloc_map_size: t.CSizeT - usable: t.CVoid | t.CPtr - usable_size: t.CSizeT - def __init__(self: MemSlab, base: t.CVoid | t.CPtr, size: t.CSizeT, block_size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemSlab, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemSlab, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemSlab) -> t.CInt: pass -class MemBuddy(MemManager): - max_order: t.CInt - free_lists: t.CUInt64T | t.CPtr - lock_val: t.CVolatile | t.CInt - usable: t.CVoid | t.CPtr - usable_size: t.CSizeT - def __init__(self: MemBuddy, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def _fl_push(self: MemBuddy, order: t.CInt, block: t.CVoid | t.CPtr) -> t.CInt: pass - def _fl_pop(self: MemBuddy, order: t.CInt) -> t.CVoid | t.CPtr: pass - def _fl_find_and_remove(self: MemBuddy, order: t.CInt, target: t.CVoid | t.CPtr) -> t.CInt: pass - def _buddy_of(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CVoid | t.CPtr: pass - def _order_for_size(self: MemBuddy, size: t.CSizeT) -> t.CInt: pass - def _split_to_order(self: MemBuddy, to_order: t.CInt) -> t.CVoid | t.CPtr: pass - def _coalesce(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CInt: pass - def _is_valid_ptr(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def _lock(self: MemBuddy) -> t.CInt: pass - def _unlock(self: MemBuddy) -> t.CInt: pass - def alloc(self: MemBuddy, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemBuddy) -> t.CInt: pass - def realloc(self: MemBuddy, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass \ No newline at end of file diff --git a/Test/TestProject3/temp/f3560b99de458aec.pyi b/Test/TestProject3/temp/f3560b99de458aec.pyi new file mode 100644 index 0000000..84f0bbf --- /dev/null +++ b/Test/TestProject3/temp/f3560b99de458aec.pyi @@ -0,0 +1,86 @@ +""" +Auto-generated Python stub file from memhub.py +Module: memhub +""" + + +import t, c +from stdint import * +import string +import atom +import viperio + +MEMHUB_ALIGN: t.CDefine = 8 +MEMSLAB_MIN_BLOCK: t.CDefine = 16 +MEMSLAB_BITMAP_BYTES: t.CDefine = 256 +MEMBUDDY_MIN_BLOCK: t.CDefine = 32 +MEMBUDDY_MAX_ORDERS: t.CDefine = 32 +MEMBUDDY_HEADER_SIZE: t.CDefine = 8 + +def _align_up(val: t.CSizeT, align: t.CSizeT) -> t.CSizeT: pass + +def _largest_pow2_le(val: t.CSizeT) -> t.CSizeT: pass + +def _block_size_at_order(order: t.CInt) -> t.CSizeT: pass + + +@t.CVTable +class MemManager: + __provides__: list[str] = ['__memmgr__'] + base: t.CVoid | t.CPtr + size: t.CSizeT + def __init__(self: MemManager, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemManager, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemManager, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemManager) -> t.CInt: pass + def calloc(self: MemManager, count: t.CSizeT, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def realloc(self: MemManager, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def __enter__(self: MemManager) -> 'MemManager' | t.CPtr: pass + def __exit__(self: MemManager) -> t.CInt: pass + def alloc_buf(self: MemManager, capacity: t.CSizeT) -> viperio.Buf | t.CPtr: pass +class MemPool(MemManager): + offset: t.CSizeT + high_water: t.CSizeT + def __init__(self: MemPool, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemPool, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemPool, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemPool) -> t.CInt: pass +class MemSlab(MemManager): + block_size: t.CSizeT + block_count: t.CSizeT + used_count: t.CSizeT + free_list: t.CVoid | t.CPtr + alloc_map: t.CUInt8T | t.CPtr + alloc_map_size: t.CSizeT + usable: t.CVoid | t.CPtr + usable_size: t.CSizeT + def __init__(self: MemSlab, base: t.CVoid | t.CPtr, size: t.CSizeT, block_size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemSlab, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemSlab, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemSlab) -> t.CInt: pass +class MemBuddy(MemManager): + max_order: t.CInt + free_lists: t.CUInt64T | t.CPtr + lock_val: t.CVolatile | t.CInt + usable: t.CVoid | t.CPtr + usable_size: t.CSizeT + def __init__(self: MemBuddy, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def _fl_push(self: MemBuddy, order: t.CInt, block: t.CVoid | t.CPtr) -> t.CInt: pass + def _fl_pop(self: MemBuddy, order: t.CInt) -> t.CVoid | t.CPtr: pass + def _fl_find_and_remove(self: MemBuddy, order: t.CInt, target: t.CVoid | t.CPtr) -> t.CInt: pass + def _buddy_of(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CVoid | t.CPtr: pass + def _order_for_size(self: MemBuddy, size: t.CSizeT) -> t.CInt: pass + def _split_to_order(self: MemBuddy, to_order: t.CInt) -> t.CVoid | t.CPtr: pass + def _coalesce(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CInt: pass + def _is_valid_ptr(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def _lock(self: MemBuddy) -> t.CInt: pass + def _unlock(self: MemBuddy) -> t.CInt: pass + def alloc(self: MemBuddy, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemBuddy) -> t.CInt: pass + def realloc(self: MemBuddy, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + @property + def mem_size(self: MemBuddy) -> t.CSizeT: pass + def stats(self: MemBuddy) -> t.CSizeT: pass + def free_count(self: MemBuddy) -> t.CSizeT: pass + def self_check(self: MemBuddy) -> t.CInt: pass \ No newline at end of file diff --git a/Test/TypeCastTest/output/78418cf2ee722f0f.deps.json b/Test/TypeCastTest/output/78418cf2ee722f0f.deps.json index 9da11e2..48c6c93 100644 --- a/Test/TypeCastTest/output/78418cf2ee722f0f.deps.json +++ b/Test/TypeCastTest/output/78418cf2ee722f0f.deps.json @@ -1 +1 @@ -{"stdio": "6f62fe05c5ea1ceb", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "testcheck": "dd3002730623424b", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"testcheck": "14d33679f7fadf1f", "stdio": "6f62fe05c5ea1ceb", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/TypeCastTest/temp/dd3002730623424b.pyi b/Test/TypeCastTest/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/TypeCastTest/temp/dd3002730623424b.pyi rename to Test/TypeCastTest/temp/14d33679f7fadf1f.pyi diff --git a/Test/TypeCastTest/temp/9474791561654346.pyi b/Test/TypeCastTest/temp/9474791561654346.pyi new file mode 100644 index 0000000..1f82b1e --- /dev/null +++ b/Test/TypeCastTest/temp/9474791561654346.pyi @@ -0,0 +1,59 @@ +""" +Auto-generated Python stub file from string.py +Module: string +""" + + +from stdint import * +import t, c + +def strcpy(dest: str, src: str) -> str: pass + +def strcat(dest: str, src: str) -> str: pass + +def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass + +def strlen(src: str) -> t.CSizeT | t.CExport: pass + +def strcmp(str1: str, str2: str) -> t.CInt: pass + +def samestr(str1: str, str2: str) -> bool: pass + +def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass + +def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass + +def strchr(s: str, cr: t.CInt) -> str: pass + +def strrchr(s: str, cr: t.CInt) -> str: pass + +def strstr(s: str, needle: str) -> str: pass + +def strspn(s: str, skip: str) -> int: pass + +def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def atoi(src: str) -> t.CInt: pass + +def atoll(src: str) -> t.CInt64T: pass + +def atof(src: str) -> t.CDouble: pass + +def split(s: str, delim: str, result: t.CArray[str]) -> int: pass + + +ascii_lowercase: t.CExtern | str +ascii_uppercase: t.CExtern | str +ascii_letters: t.CExtern | str +digits: t.CExtern | str +hexdigits: t.CExtern | str +octdigits: t.CExtern | str +punctuation: t.CExtern | str +whitespace: t.CExtern | str +printable: t.CExtern | str \ No newline at end of file diff --git a/Test/TypeCastTest/temp/_phase1_manifest.json b/Test/TypeCastTest/temp/_phase1_manifest.json index 6f5ac6e..d71d49a 100644 --- a/Test/TypeCastTest/temp/_phase1_manifest.json +++ b/Test/TypeCastTest/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\TypeCastTest\\App\\main.py": {"sha1": "78418cf2ee722f0f", "mtime": 1782109471.5646322, "size": 6566}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "ab6e54ba9a669f76", "mtime": 1783933178.7264287, "size": 9922}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32memory.py": {"sha1": "72e2d5ccb7cedcf1", "mtime": 1781200703.5389092, "size": 3142}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\TypeCastTest\\App\\main.py": {"sha1": "78418cf2ee722f0f", "mtime": 1782109471.5646322, "size": 6566}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "9474791561654346", "mtime": 1784387475.6951904, "size": 10395}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32memory.py": {"sha1": "72e2d5ccb7cedcf1", "mtime": 1781200703.5389092, "size": 3142}} \ No newline at end of file diff --git a/Test/TypeCastTest/temp/_sha1_map.txt b/Test/TypeCastTest/temp/_sha1_map.txt index cf9e2fd..8361a81 100644 --- a/Test/TypeCastTest/temp/_sha1_map.txt +++ b/Test/TypeCastTest/temp/_sha1_map.txt @@ -1,8 +1,8 @@ +14d33679f7fadf1f:includes/testcheck.py 6f62fe05c5ea1ceb:includes/stdio.py 72e2d5ccb7cedcf1:includes/w32\win32memory.py 78418cf2ee722f0f:main.py 7e529fe7a078cfef:includes/w32\win32base.py -ab6e54ba9a669f76:includes/string.py +9474791561654346:includes/string.py bbdf3bbd4c3bc28c:includes/w32\win32console.py -dd3002730623424b:includes/testcheck.py f5522571bcce7bcb:includes/stdint.py diff --git a/Test/TypeCastTest/temp/ab6e54ba9a669f76.pyi b/Test/TypeCastTest/temp/ab6e54ba9a669f76.pyi deleted file mode 100644 index 4fc3440..0000000 --- a/Test/TypeCastTest/temp/ab6e54ba9a669f76.pyi +++ /dev/null @@ -1,48 +0,0 @@ -""" -Auto-generated Python stub file from string.py -Module: string -""" - - -from stdint import * -import t, c - -def strcpy(dest: str, src: str) -> str: pass - -def strcat(dest: str, src: str) -> str: pass - -def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass - -def strlen(src: str) -> t.CSizeT | t.CExport: pass - -def strcmp(str1: str, str2: str) -> t.CInt: pass - -def samestr(str1: str, str2: str) -> bool: pass - -def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass - -def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass - -def strchr(s: str, cr: t.CInt) -> str: pass - -def strrchr(s: str, cr: t.CInt) -> str: pass - -def strstr(s: str, needle: str) -> str: pass - -def strspn(s: str, skip: str) -> int: pass - -def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def atoi(src: str) -> t.CInt: pass - -def atoll(src: str) -> t.CInt64T: pass - -def atof(src: str) -> t.CDouble: pass - -def split(s: str, delim: str, result: t.CArray[str]) -> int: pass diff --git a/Test/VRandomTest/output/e24a7f4a875f4518.deps.json b/Test/VRandomTest/output/e24a7f4a875f4518.deps.json index b129803..9e2740e 100644 --- a/Test/VRandomTest/output/e24a7f4a875f4518.deps.json +++ b/Test/VRandomTest/output/e24a7f4a875f4518.deps.json @@ -1 +1 @@ -{"vipermath": "3f7c5e78d8652535", "vrandom": "62cc01c2bb770ca3", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "testcheck": "dd3002730623424b", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"testcheck": "14d33679f7fadf1f", "vipermath": "3f7c5e78d8652535", "vrandom": "62cc01c2bb770ca3", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/VRandomTest/temp/dd3002730623424b.pyi b/Test/VRandomTest/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/VRandomTest/temp/dd3002730623424b.pyi rename to Test/VRandomTest/temp/14d33679f7fadf1f.pyi diff --git a/Test/VRandomTest/temp/_phase1_manifest.json b/Test/VRandomTest/temp/_phase1_manifest.json index 04412a6..d55d672 100644 --- a/Test/VRandomTest/temp/_phase1_manifest.json +++ b/Test/VRandomTest/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\VRandomTest\\App\\main.py": {"sha1": "e24a7f4a875f4518", "mtime": 1782109440.0645702, "size": 4476}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\vipermath.py": {"sha1": "3f7c5e78d8652535", "mtime": 1781532528.2518907, "size": 15412}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\vrandom.py": {"sha1": "62cc01c2bb770ca3", "mtime": 1782101201.2607212, "size": 12067}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\VRandomTest\\App\\main.py": {"sha1": "e24a7f4a875f4518", "mtime": 1782109440.0645702, "size": 4476}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\vipermath.py": {"sha1": "3f7c5e78d8652535", "mtime": 1781532528.2518907, "size": 15412}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\vrandom.py": {"sha1": "62cc01c2bb770ca3", "mtime": 1782101201.2607212, "size": 12067}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file diff --git a/Test/VRandomTest/temp/_sha1_map.txt b/Test/VRandomTest/temp/_sha1_map.txt index be3eecf..9a0c734 100644 --- a/Test/VRandomTest/temp/_sha1_map.txt +++ b/Test/VRandomTest/temp/_sha1_map.txt @@ -1,8 +1,8 @@ +14d33679f7fadf1f:includes/testcheck.py 3f7c5e78d8652535:includes/vipermath.py 62cc01c2bb770ca3:includes/vrandom.py 6f62fe05c5ea1ceb:includes/stdio.py 7e529fe7a078cfef:includes/w32\win32base.py bbdf3bbd4c3bc28c:includes/w32\win32console.py -dd3002730623424b:includes/testcheck.py e24a7f4a875f4518:main.py f5522571bcce7bcb:includes/stdint.py diff --git a/Test/VariadicTest/output/c1416dfae155d6e2.deps.json b/Test/VariadicTest/output/c1416dfae155d6e2.deps.json index 455dddf..8ef9b0e 100644 --- a/Test/VariadicTest/output/c1416dfae155d6e2.deps.json +++ b/Test/VariadicTest/output/c1416dfae155d6e2.deps.json @@ -1 +1 @@ -{"stdio": "6f62fe05c5ea1ceb", "stdarg": "71e0a3ffcb3ebfad", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperlib": "c3b259b4059f8668", "viperio": "c9f4be41ca1cc2b4", "testcheck": "dd3002730623424b", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"testcheck": "14d33679f7fadf1f", "stdio": "6f62fe05c5ea1ceb", "stdarg": "71e0a3ffcb3ebfad", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperlib": "c3b259b4059f8668", "viperio": "c9f4be41ca1cc2b4", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/VariadicTest/temp/dd3002730623424b.pyi b/Test/VariadicTest/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/VariadicTest/temp/dd3002730623424b.pyi rename to Test/VariadicTest/temp/14d33679f7fadf1f.pyi diff --git a/Test/VariadicTest/temp/9474791561654346.pyi b/Test/VariadicTest/temp/9474791561654346.pyi new file mode 100644 index 0000000..1f82b1e --- /dev/null +++ b/Test/VariadicTest/temp/9474791561654346.pyi @@ -0,0 +1,59 @@ +""" +Auto-generated Python stub file from string.py +Module: string +""" + + +from stdint import * +import t, c + +def strcpy(dest: str, src: str) -> str: pass + +def strcat(dest: str, src: str) -> str: pass + +def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass + +def strlen(src: str) -> t.CSizeT | t.CExport: pass + +def strcmp(str1: str, str2: str) -> t.CInt: pass + +def samestr(str1: str, str2: str) -> bool: pass + +def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass + +def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass + +def strchr(s: str, cr: t.CInt) -> str: pass + +def strrchr(s: str, cr: t.CInt) -> str: pass + +def strstr(s: str, needle: str) -> str: pass + +def strspn(s: str, skip: str) -> int: pass + +def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def atoi(src: str) -> t.CInt: pass + +def atoll(src: str) -> t.CInt64T: pass + +def atof(src: str) -> t.CDouble: pass + +def split(s: str, delim: str, result: t.CArray[str]) -> int: pass + + +ascii_lowercase: t.CExtern | str +ascii_uppercase: t.CExtern | str +ascii_letters: t.CExtern | str +digits: t.CExtern | str +hexdigits: t.CExtern | str +octdigits: t.CExtern | str +punctuation: t.CExtern | str +whitespace: t.CExtern | str +printable: t.CExtern | str \ No newline at end of file diff --git a/Test/VariadicTest/temp/_phase1_manifest.json b/Test/VariadicTest/temp/_phase1_manifest.json index 40d86de..0aef1cb 100644 --- a/Test/VariadicTest/temp/_phase1_manifest.json +++ b/Test/VariadicTest/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\VariadicTest\\App\\main.py": {"sha1": "c1416dfae155d6e2", "mtime": 1782266230.8679473, "size": 6842}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdarg.py": {"sha1": "71e0a3ffcb3ebfad", "mtime": 1781258888.113146, "size": 277}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "ab6e54ba9a669f76", "mtime": 1783933178.7264287, "size": 9922}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperlib.py": {"sha1": "c3b259b4059f8668", "mtime": 1782821991.979496, "size": 56772}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\VariadicTest\\App\\main.py": {"sha1": "c1416dfae155d6e2", "mtime": 1782266230.8679473, "size": 6842}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdarg.py": {"sha1": "71e0a3ffcb3ebfad", "mtime": 1781258888.113146, "size": 277}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "9474791561654346", "mtime": 1784387475.6951904, "size": 10395}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperlib.py": {"sha1": "c3b259b4059f8668", "mtime": 1782821991.979496, "size": 56772}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file diff --git a/Test/VariadicTest/temp/_sha1_map.txt b/Test/VariadicTest/temp/_sha1_map.txt index ac17918..cfc6252 100644 --- a/Test/VariadicTest/temp/_sha1_map.txt +++ b/Test/VariadicTest/temp/_sha1_map.txt @@ -1,10 +1,10 @@ +14d33679f7fadf1f:includes/testcheck.py 6f62fe05c5ea1ceb:includes/stdio.py 71e0a3ffcb3ebfad:includes/stdarg.py 7e529fe7a078cfef:includes/w32\win32base.py -ab6e54ba9a669f76:includes/string.py +9474791561654346:includes/string.py bbdf3bbd4c3bc28c:includes/w32\win32console.py c1416dfae155d6e2:main.py c3b259b4059f8668:includes/viperlib.py c9f4be41ca1cc2b4:includes/viperio.py -dd3002730623424b:includes/testcheck.py f5522571bcce7bcb:includes/stdint.py diff --git a/Test/VariadicTest/temp/ab6e54ba9a669f76.pyi b/Test/VariadicTest/temp/ab6e54ba9a669f76.pyi deleted file mode 100644 index 4fc3440..0000000 --- a/Test/VariadicTest/temp/ab6e54ba9a669f76.pyi +++ /dev/null @@ -1,48 +0,0 @@ -""" -Auto-generated Python stub file from string.py -Module: string -""" - - -from stdint import * -import t, c - -def strcpy(dest: str, src: str) -> str: pass - -def strcat(dest: str, src: str) -> str: pass - -def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass - -def strlen(src: str) -> t.CSizeT | t.CExport: pass - -def strcmp(str1: str, str2: str) -> t.CInt: pass - -def samestr(str1: str, str2: str) -> bool: pass - -def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass - -def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass - -def strchr(s: str, cr: t.CInt) -> str: pass - -def strrchr(s: str, cr: t.CInt) -> str: pass - -def strstr(s: str, needle: str) -> str: pass - -def strspn(s: str, skip: str) -> int: pass - -def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def atoi(src: str) -> t.CInt: pass - -def atoll(src: str) -> t.CInt64T: pass - -def atof(src: str) -> t.CDouble: pass - -def split(s: str, delim: str, result: t.CArray[str]) -> int: pass diff --git a/Test/WebTest/output/8046d45456d0b153.deps.json b/Test/WebTest/output/8046d45456d0b153.deps.json index 726d6b5..7550264 100644 --- a/Test/WebTest/output/8046d45456d0b153.deps.json +++ b/Test/WebTest/output/8046d45456d0b153.deps.json @@ -1 +1 @@ -{"atom": "271ea3decb810db2", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "platmacro": "93c1d18e35d188d6", "string": "ab6e54ba9a669f76", "requests": "b558d8d8f01f4825", "viperio": "c9f4be41ca1cc2b4", "socket": "d7e3386b828acb66", "memhub": "ee084e9fc6ee413a", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"atom": "271ea3decb810db2", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "platmacro": "93c1d18e35d188d6", "string": "9474791561654346", "requests": "b558d8d8f01f4825", "viperio": "c9f4be41ca1cc2b4", "socket": "d7e3386b828acb66", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/WebTest/temp/9474791561654346.pyi b/Test/WebTest/temp/9474791561654346.pyi new file mode 100644 index 0000000..1f82b1e --- /dev/null +++ b/Test/WebTest/temp/9474791561654346.pyi @@ -0,0 +1,59 @@ +""" +Auto-generated Python stub file from string.py +Module: string +""" + + +from stdint import * +import t, c + +def strcpy(dest: str, src: str) -> str: pass + +def strcat(dest: str, src: str) -> str: pass + +def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass + +def strlen(src: str) -> t.CSizeT | t.CExport: pass + +def strcmp(str1: str, str2: str) -> t.CInt: pass + +def samestr(str1: str, str2: str) -> bool: pass + +def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass + +def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass + +def strchr(s: str, cr: t.CInt) -> str: pass + +def strrchr(s: str, cr: t.CInt) -> str: pass + +def strstr(s: str, needle: str) -> str: pass + +def strspn(s: str, skip: str) -> int: pass + +def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def atoi(src: str) -> t.CInt: pass + +def atoll(src: str) -> t.CInt64T: pass + +def atof(src: str) -> t.CDouble: pass + +def split(s: str, delim: str, result: t.CArray[str]) -> int: pass + + +ascii_lowercase: t.CExtern | str +ascii_uppercase: t.CExtern | str +ascii_letters: t.CExtern | str +digits: t.CExtern | str +hexdigits: t.CExtern | str +octdigits: t.CExtern | str +punctuation: t.CExtern | str +whitespace: t.CExtern | str +printable: t.CExtern | str \ No newline at end of file diff --git a/Test/WebTest/temp/_phase1_manifest.json b/Test/WebTest/temp/_phase1_manifest.json index 00cb85b..2cb35c3 100644 --- a/Test/WebTest/temp/_phase1_manifest.json +++ b/Test/WebTest/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\WebTest\\App\\main.py": {"sha1": "8046d45456d0b153", "mtime": 1783055933.4493492, "size": 2570}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\atom.py": {"sha1": "271ea3decb810db2", "mtime": 1782226548.693161, "size": 1290}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\memhub.py": {"sha1": "ee084e9fc6ee413a", "mtime": 1784214242.4485993, "size": 17765}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\platmacro.py": {"sha1": "93c1d18e35d188d6", "mtime": 1781237231.03366, "size": 1422}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\requests.py": {"sha1": "b558d8d8f01f4825", "mtime": 1783055330.1315396, "size": 9850}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\socket.py": {"sha1": "d7e3386b828acb66", "mtime": 1783054980.3909142, "size": 14514}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "ab6e54ba9a669f76", "mtime": 1783933178.7264287, "size": 9922}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\winsock2.py": {"sha1": "6446627d4f07a1b5", "mtime": 1783052668.8022628, "size": 3547}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\WebTest\\App\\main.py": {"sha1": "8046d45456d0b153", "mtime": 1783055933.4493492, "size": 2570}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\atom.py": {"sha1": "271ea3decb810db2", "mtime": 1782226548.693161, "size": 1290}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\memhub.py": {"sha1": "f3560b99de458aec", "mtime": 1784375410.1873891, "size": 19458}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\platmacro.py": {"sha1": "93c1d18e35d188d6", "mtime": 1781237231.03366, "size": 1422}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\requests.py": {"sha1": "b558d8d8f01f4825", "mtime": 1783055330.1315396, "size": 9850}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\socket.py": {"sha1": "d7e3386b828acb66", "mtime": 1783054980.3909142, "size": 14514}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "9474791561654346", "mtime": 1784387475.6951904, "size": 10395}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\winsock2.py": {"sha1": "6446627d4f07a1b5", "mtime": 1783052668.8022628, "size": 3547}} \ No newline at end of file diff --git a/Test/WebTest/temp/_sha1_map.txt b/Test/WebTest/temp/_sha1_map.txt index 0da1ad9..36ee9d5 100644 --- a/Test/WebTest/temp/_sha1_map.txt +++ b/Test/WebTest/temp/_sha1_map.txt @@ -5,9 +5,9 @@ 8046d45456d0b153:main.py 90c53dd6db8d41cf:includes/stdlib.py 93c1d18e35d188d6:includes/platmacro.py -ab6e54ba9a669f76:includes/string.py +9474791561654346:includes/string.py b558d8d8f01f4825:includes/requests.py c9f4be41ca1cc2b4:includes/viperio.py d7e3386b828acb66:includes/socket.py -ee084e9fc6ee413a:includes/memhub.py +f3560b99de458aec:includes/memhub.py f5522571bcce7bcb:includes/stdint.py diff --git a/Test/WebTest/temp/ab6e54ba9a669f76.pyi b/Test/WebTest/temp/ab6e54ba9a669f76.pyi deleted file mode 100644 index 4fc3440..0000000 --- a/Test/WebTest/temp/ab6e54ba9a669f76.pyi +++ /dev/null @@ -1,48 +0,0 @@ -""" -Auto-generated Python stub file from string.py -Module: string -""" - - -from stdint import * -import t, c - -def strcpy(dest: str, src: str) -> str: pass - -def strcat(dest: str, src: str) -> str: pass - -def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass - -def strlen(src: str) -> t.CSizeT | t.CExport: pass - -def strcmp(str1: str, str2: str) -> t.CInt: pass - -def samestr(str1: str, str2: str) -> bool: pass - -def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass - -def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass - -def strchr(s: str, cr: t.CInt) -> str: pass - -def strrchr(s: str, cr: t.CInt) -> str: pass - -def strstr(s: str, needle: str) -> str: pass - -def strspn(s: str, skip: str) -> int: pass - -def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def atoi(src: str) -> t.CInt: pass - -def atoll(src: str) -> t.CInt64T: pass - -def atof(src: str) -> t.CDouble: pass - -def split(s: str, delim: str, result: t.CArray[str]) -> int: pass diff --git a/Test/WebTest/temp/ee084e9fc6ee413a.pyi b/Test/WebTest/temp/ee084e9fc6ee413a.pyi deleted file mode 100644 index 45551ef..0000000 --- a/Test/WebTest/temp/ee084e9fc6ee413a.pyi +++ /dev/null @@ -1,81 +0,0 @@ -""" -Auto-generated Python stub file from memhub.py -Module: memhub -""" - - -import t, c -from stdint import * -import string -import atom -import viperio - -MEMHUB_ALIGN: t.CDefine = 8 -MEMSLAB_MIN_BLOCK: t.CDefine = 16 -MEMSLAB_BITMAP_BYTES: t.CDefine = 256 -MEMBUDDY_MIN_BLOCK: t.CDefine = 32 -MEMBUDDY_MAX_ORDERS: t.CDefine = 32 -MEMBUDDY_HEADER_SIZE: t.CDefine = 8 - -def _align_up(val: t.CSizeT, align: t.CSizeT) -> t.CSizeT: pass - -def _largest_pow2_le(val: t.CSizeT) -> t.CSizeT: pass - -def _block_size_at_order(order: t.CInt) -> t.CSizeT: pass - - -@t.CVTable -class MemManager: - __provides__: list[str] = ['__memmgr__'] - base: t.CVoid | t.CPtr - size: t.CSizeT - def __init__(self: MemManager, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemManager, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemManager, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemManager) -> t.CInt: pass - def calloc(self: MemManager, count: t.CSizeT, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def realloc(self: MemManager, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def __enter__(self: MemManager) -> 'MemManager' | t.CPtr: pass - def __exit__(self: MemManager) -> t.CInt: pass - def alloc_buf(self: MemManager, capacity: t.CSizeT) -> viperio.Buf | t.CPtr: pass -class MemPool(MemManager): - offset: t.CSizeT - high_water: t.CSizeT - def __init__(self: MemPool, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemPool, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemPool, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemPool) -> t.CInt: pass -class MemSlab(MemManager): - block_size: t.CSizeT - block_count: t.CSizeT - used_count: t.CSizeT - free_list: t.CVoid | t.CPtr - alloc_map: t.CUInt8T | t.CPtr - alloc_map_size: t.CSizeT - usable: t.CVoid | t.CPtr - usable_size: t.CSizeT - def __init__(self: MemSlab, base: t.CVoid | t.CPtr, size: t.CSizeT, block_size: t.CSizeT) -> t.CInt: pass - def alloc(self: MemSlab, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemSlab, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemSlab) -> t.CInt: pass -class MemBuddy(MemManager): - max_order: t.CInt - free_lists: t.CUInt64T | t.CPtr - lock_val: t.CVolatile | t.CInt - usable: t.CVoid | t.CPtr - usable_size: t.CSizeT - def __init__(self: MemBuddy, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass - def _fl_push(self: MemBuddy, order: t.CInt, block: t.CVoid | t.CPtr) -> t.CInt: pass - def _fl_pop(self: MemBuddy, order: t.CInt) -> t.CVoid | t.CPtr: pass - def _fl_find_and_remove(self: MemBuddy, order: t.CInt, target: t.CVoid | t.CPtr) -> t.CInt: pass - def _buddy_of(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CVoid | t.CPtr: pass - def _order_for_size(self: MemBuddy, size: t.CSizeT) -> t.CInt: pass - def _split_to_order(self: MemBuddy, to_order: t.CInt) -> t.CVoid | t.CPtr: pass - def _coalesce(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CInt: pass - def _is_valid_ptr(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def _lock(self: MemBuddy) -> t.CInt: pass - def _unlock(self: MemBuddy) -> t.CInt: pass - def alloc(self: MemBuddy, size: t.CSizeT) -> t.CVoid | t.CPtr: pass - def free(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass - def reset(self: MemBuddy) -> t.CInt: pass - def realloc(self: MemBuddy, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass \ No newline at end of file diff --git a/Test/WebTest/temp/f3560b99de458aec.pyi b/Test/WebTest/temp/f3560b99de458aec.pyi new file mode 100644 index 0000000..84f0bbf --- /dev/null +++ b/Test/WebTest/temp/f3560b99de458aec.pyi @@ -0,0 +1,86 @@ +""" +Auto-generated Python stub file from memhub.py +Module: memhub +""" + + +import t, c +from stdint import * +import string +import atom +import viperio + +MEMHUB_ALIGN: t.CDefine = 8 +MEMSLAB_MIN_BLOCK: t.CDefine = 16 +MEMSLAB_BITMAP_BYTES: t.CDefine = 256 +MEMBUDDY_MIN_BLOCK: t.CDefine = 32 +MEMBUDDY_MAX_ORDERS: t.CDefine = 32 +MEMBUDDY_HEADER_SIZE: t.CDefine = 8 + +def _align_up(val: t.CSizeT, align: t.CSizeT) -> t.CSizeT: pass + +def _largest_pow2_le(val: t.CSizeT) -> t.CSizeT: pass + +def _block_size_at_order(order: t.CInt) -> t.CSizeT: pass + + +@t.CVTable +class MemManager: + __provides__: list[str] = ['__memmgr__'] + base: t.CVoid | t.CPtr + size: t.CSizeT + def __init__(self: MemManager, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemManager, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemManager, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemManager) -> t.CInt: pass + def calloc(self: MemManager, count: t.CSizeT, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def realloc(self: MemManager, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def __enter__(self: MemManager) -> 'MemManager' | t.CPtr: pass + def __exit__(self: MemManager) -> t.CInt: pass + def alloc_buf(self: MemManager, capacity: t.CSizeT) -> viperio.Buf | t.CPtr: pass +class MemPool(MemManager): + offset: t.CSizeT + high_water: t.CSizeT + def __init__(self: MemPool, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemPool, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemPool, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemPool) -> t.CInt: pass +class MemSlab(MemManager): + block_size: t.CSizeT + block_count: t.CSizeT + used_count: t.CSizeT + free_list: t.CVoid | t.CPtr + alloc_map: t.CUInt8T | t.CPtr + alloc_map_size: t.CSizeT + usable: t.CVoid | t.CPtr + usable_size: t.CSizeT + def __init__(self: MemSlab, base: t.CVoid | t.CPtr, size: t.CSizeT, block_size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemSlab, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemSlab, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemSlab) -> t.CInt: pass +class MemBuddy(MemManager): + max_order: t.CInt + free_lists: t.CUInt64T | t.CPtr + lock_val: t.CVolatile | t.CInt + usable: t.CVoid | t.CPtr + usable_size: t.CSizeT + def __init__(self: MemBuddy, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def _fl_push(self: MemBuddy, order: t.CInt, block: t.CVoid | t.CPtr) -> t.CInt: pass + def _fl_pop(self: MemBuddy, order: t.CInt) -> t.CVoid | t.CPtr: pass + def _fl_find_and_remove(self: MemBuddy, order: t.CInt, target: t.CVoid | t.CPtr) -> t.CInt: pass + def _buddy_of(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CVoid | t.CPtr: pass + def _order_for_size(self: MemBuddy, size: t.CSizeT) -> t.CInt: pass + def _split_to_order(self: MemBuddy, to_order: t.CInt) -> t.CVoid | t.CPtr: pass + def _coalesce(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CInt: pass + def _is_valid_ptr(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def _lock(self: MemBuddy) -> t.CInt: pass + def _unlock(self: MemBuddy) -> t.CInt: pass + def alloc(self: MemBuddy, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemBuddy) -> t.CInt: pass + def realloc(self: MemBuddy, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + @property + def mem_size(self: MemBuddy) -> t.CSizeT: pass + def stats(self: MemBuddy) -> t.CSizeT: pass + def free_count(self: MemBuddy) -> t.CSizeT: pass + def self_check(self: MemBuddy) -> t.CInt: pass \ No newline at end of file diff --git a/Test/ZlibTest/output/03b24bc1d9327958.deps.json b/Test/ZlibTest/output/03b24bc1d9327958.deps.json index 9462b24..3518b45 100644 --- a/Test/ZlibTest/output/03b24bc1d9327958.deps.json +++ b/Test/ZlibTest/output/03b24bc1d9327958.deps.json @@ -1 +1 @@ -{"__zlib.pyzlib": "0f8134f67bdaba8f", "pyzlib": "0f8134f67bdaba8f", "stdio": "6f62fe05c5ea1ceb", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "__zlib.zdeflate": "784dde8a8697b7ab", "zdeflate": "784dde8a8697b7ab", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "__zlib.zdef": "9b7d2adaae94f021", "zdef": "9b7d2adaae94f021", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "__zlib.zchecksum": "cb151b297f4ea56d", "zchecksum": "cb151b297f4ea56d", "__zlib.test_pyzlib": "d855b3e66d1d6522", "test_pyzlib": "d855b3e66d1d6522", "__zlib.zhuff": "dd19090b337e9bea", "zhuff": "dd19090b337e9bea", "testcheck": "dd3002730623424b", "__zlib.zinflate": "e445a2bb299d1b7d", "zinflate": "e445a2bb299d1b7d", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"__zlib.pyzlib": "0f8134f67bdaba8f", "pyzlib": "0f8134f67bdaba8f", "testcheck": "14d33679f7fadf1f", "stdio": "6f62fe05c5ea1ceb", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "__zlib.zdeflate": "784dde8a8697b7ab", "zdeflate": "784dde8a8697b7ab", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "__zlib.zdef": "9b7d2adaae94f021", "zdef": "9b7d2adaae94f021", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "__zlib.zchecksum": "cb151b297f4ea56d", "zchecksum": "cb151b297f4ea56d", "__zlib.test_pyzlib": "d855b3e66d1d6522", "test_pyzlib": "d855b3e66d1d6522", "__zlib.zhuff": "dd19090b337e9bea", "zhuff": "dd19090b337e9bea", "__zlib.zinflate": "e445a2bb299d1b7d", "zinflate": "e445a2bb299d1b7d", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/ZlibTest/output/0f8134f67bdaba8f.deps.json b/Test/ZlibTest/output/0f8134f67bdaba8f.deps.json new file mode 100644 index 0000000..518cf08 --- /dev/null +++ b/Test/ZlibTest/output/0f8134f67bdaba8f.deps.json @@ -0,0 +1 @@ +{"main": "03b24bc1d9327958", "testcheck": "14d33679f7fadf1f", "stdio": "6f62fe05c5ea1ceb", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "__zlib.zdeflate": "784dde8a8697b7ab", "zdeflate": "784dde8a8697b7ab", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "__zlib.zdef": "9b7d2adaae94f021", "zdef": "9b7d2adaae94f021", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "__zlib.zchecksum": "cb151b297f4ea56d", "zchecksum": "cb151b297f4ea56d", "__zlib.test_pyzlib": "d855b3e66d1d6522", "test_pyzlib": "d855b3e66d1d6522", "__zlib.zhuff": "dd19090b337e9bea", "zhuff": "dd19090b337e9bea", "__zlib.zinflate": "e445a2bb299d1b7d", "zinflate": "e445a2bb299d1b7d", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/ZlibTest/output/784dde8a8697b7ab.deps.json b/Test/ZlibTest/output/784dde8a8697b7ab.deps.json index f610c22..91fb90a 100644 --- a/Test/ZlibTest/output/784dde8a8697b7ab.deps.json +++ b/Test/ZlibTest/output/784dde8a8697b7ab.deps.json @@ -1 +1 @@ -{"main": "03b24bc1d9327958", "__zlib.pyzlib": "0f8134f67bdaba8f", "pyzlib": "0f8134f67bdaba8f", "stdio": "6f62fe05c5ea1ceb", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "__zlib.zdef": "9b7d2adaae94f021", "zdef": "9b7d2adaae94f021", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "__zlib.zchecksum": "cb151b297f4ea56d", "zchecksum": "cb151b297f4ea56d", "__zlib.test_pyzlib": "d855b3e66d1d6522", "test_pyzlib": "d855b3e66d1d6522", "__zlib.zhuff": "dd19090b337e9bea", "zhuff": "dd19090b337e9bea", "testcheck": "dd3002730623424b", "__zlib.zinflate": "e445a2bb299d1b7d", "zinflate": "e445a2bb299d1b7d", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"main": "03b24bc1d9327958", "__zlib.pyzlib": "0f8134f67bdaba8f", "pyzlib": "0f8134f67bdaba8f", "testcheck": "14d33679f7fadf1f", "stdio": "6f62fe05c5ea1ceb", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "__zlib.zdef": "9b7d2adaae94f021", "zdef": "9b7d2adaae94f021", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "__zlib.zchecksum": "cb151b297f4ea56d", "zchecksum": "cb151b297f4ea56d", "__zlib.test_pyzlib": "d855b3e66d1d6522", "test_pyzlib": "d855b3e66d1d6522", "__zlib.zhuff": "dd19090b337e9bea", "zhuff": "dd19090b337e9bea", "__zlib.zinflate": "e445a2bb299d1b7d", "zinflate": "e445a2bb299d1b7d", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/ZlibTest/output/9b7d2adaae94f021.deps.json b/Test/ZlibTest/output/9b7d2adaae94f021.deps.json index 1bf85b0..696e3b5 100644 --- a/Test/ZlibTest/output/9b7d2adaae94f021.deps.json +++ b/Test/ZlibTest/output/9b7d2adaae94f021.deps.json @@ -1 +1 @@ -{"main": "03b24bc1d9327958", "__zlib.pyzlib": "0f8134f67bdaba8f", "pyzlib": "0f8134f67bdaba8f", "stdio": "6f62fe05c5ea1ceb", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "__zlib.zdeflate": "784dde8a8697b7ab", "zdeflate": "784dde8a8697b7ab", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "__zlib.zchecksum": "cb151b297f4ea56d", "zchecksum": "cb151b297f4ea56d", "__zlib.test_pyzlib": "d855b3e66d1d6522", "test_pyzlib": "d855b3e66d1d6522", "__zlib.zhuff": "dd19090b337e9bea", "zhuff": "dd19090b337e9bea", "testcheck": "dd3002730623424b", "__zlib.zinflate": "e445a2bb299d1b7d", "zinflate": "e445a2bb299d1b7d", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"main": "03b24bc1d9327958", "__zlib.pyzlib": "0f8134f67bdaba8f", "pyzlib": "0f8134f67bdaba8f", "testcheck": "14d33679f7fadf1f", "stdio": "6f62fe05c5ea1ceb", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "__zlib.zdeflate": "784dde8a8697b7ab", "zdeflate": "784dde8a8697b7ab", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "__zlib.zchecksum": "cb151b297f4ea56d", "zchecksum": "cb151b297f4ea56d", "__zlib.test_pyzlib": "d855b3e66d1d6522", "test_pyzlib": "d855b3e66d1d6522", "__zlib.zhuff": "dd19090b337e9bea", "zhuff": "dd19090b337e9bea", "__zlib.zinflate": "e445a2bb299d1b7d", "zinflate": "e445a2bb299d1b7d", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/ZlibTest/output/cb151b297f4ea56d.deps.json b/Test/ZlibTest/output/cb151b297f4ea56d.deps.json index 1ea42be..502a389 100644 --- a/Test/ZlibTest/output/cb151b297f4ea56d.deps.json +++ b/Test/ZlibTest/output/cb151b297f4ea56d.deps.json @@ -1 +1 @@ -{"main": "03b24bc1d9327958", "__zlib.pyzlib": "0f8134f67bdaba8f", "pyzlib": "0f8134f67bdaba8f", "stdio": "6f62fe05c5ea1ceb", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "__zlib.zdeflate": "784dde8a8697b7ab", "zdeflate": "784dde8a8697b7ab", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "__zlib.zdef": "9b7d2adaae94f021", "zdef": "9b7d2adaae94f021", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "__zlib.test_pyzlib": "d855b3e66d1d6522", "test_pyzlib": "d855b3e66d1d6522", "__zlib.zhuff": "dd19090b337e9bea", "zhuff": "dd19090b337e9bea", "testcheck": "dd3002730623424b", "__zlib.zinflate": "e445a2bb299d1b7d", "zinflate": "e445a2bb299d1b7d", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"main": "03b24bc1d9327958", "__zlib.pyzlib": "0f8134f67bdaba8f", "pyzlib": "0f8134f67bdaba8f", "testcheck": "14d33679f7fadf1f", "stdio": "6f62fe05c5ea1ceb", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "__zlib.zdeflate": "784dde8a8697b7ab", "zdeflate": "784dde8a8697b7ab", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "__zlib.zdef": "9b7d2adaae94f021", "zdef": "9b7d2adaae94f021", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "__zlib.test_pyzlib": "d855b3e66d1d6522", "test_pyzlib": "d855b3e66d1d6522", "__zlib.zhuff": "dd19090b337e9bea", "zhuff": "dd19090b337e9bea", "__zlib.zinflate": "e445a2bb299d1b7d", "zinflate": "e445a2bb299d1b7d", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/ZlibTest/output/d855b3e66d1d6522.deps.json b/Test/ZlibTest/output/d855b3e66d1d6522.deps.json index 3ea635f..0147545 100644 --- a/Test/ZlibTest/output/d855b3e66d1d6522.deps.json +++ b/Test/ZlibTest/output/d855b3e66d1d6522.deps.json @@ -1 +1 @@ -{"main": "03b24bc1d9327958", "__zlib.pyzlib": "0f8134f67bdaba8f", "pyzlib": "0f8134f67bdaba8f", "stdio": "6f62fe05c5ea1ceb", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "__zlib.zdeflate": "784dde8a8697b7ab", "zdeflate": "784dde8a8697b7ab", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "__zlib.zdef": "9b7d2adaae94f021", "zdef": "9b7d2adaae94f021", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "__zlib.zchecksum": "cb151b297f4ea56d", "zchecksum": "cb151b297f4ea56d", "__zlib.zhuff": "dd19090b337e9bea", "zhuff": "dd19090b337e9bea", "testcheck": "dd3002730623424b", "__zlib.zinflate": "e445a2bb299d1b7d", "zinflate": "e445a2bb299d1b7d", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"main": "03b24bc1d9327958", "__zlib.pyzlib": "0f8134f67bdaba8f", "pyzlib": "0f8134f67bdaba8f", "testcheck": "14d33679f7fadf1f", "stdio": "6f62fe05c5ea1ceb", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "__zlib.zdeflate": "784dde8a8697b7ab", "zdeflate": "784dde8a8697b7ab", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "__zlib.zdef": "9b7d2adaae94f021", "zdef": "9b7d2adaae94f021", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "__zlib.zchecksum": "cb151b297f4ea56d", "zchecksum": "cb151b297f4ea56d", "__zlib.zhuff": "dd19090b337e9bea", "zhuff": "dd19090b337e9bea", "__zlib.zinflate": "e445a2bb299d1b7d", "zinflate": "e445a2bb299d1b7d", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/ZlibTest/output/dd19090b337e9bea.deps.json b/Test/ZlibTest/output/dd19090b337e9bea.deps.json index 257d8e6..7e37fd6 100644 --- a/Test/ZlibTest/output/dd19090b337e9bea.deps.json +++ b/Test/ZlibTest/output/dd19090b337e9bea.deps.json @@ -1 +1 @@ -{"main": "03b24bc1d9327958", "__zlib.pyzlib": "0f8134f67bdaba8f", "pyzlib": "0f8134f67bdaba8f", "stdio": "6f62fe05c5ea1ceb", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "__zlib.zdeflate": "784dde8a8697b7ab", "zdeflate": "784dde8a8697b7ab", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "__zlib.zdef": "9b7d2adaae94f021", "zdef": "9b7d2adaae94f021", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "__zlib.zchecksum": "cb151b297f4ea56d", "zchecksum": "cb151b297f4ea56d", "__zlib.test_pyzlib": "d855b3e66d1d6522", "test_pyzlib": "d855b3e66d1d6522", "testcheck": "dd3002730623424b", "__zlib.zinflate": "e445a2bb299d1b7d", "zinflate": "e445a2bb299d1b7d", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"main": "03b24bc1d9327958", "__zlib.pyzlib": "0f8134f67bdaba8f", "pyzlib": "0f8134f67bdaba8f", "testcheck": "14d33679f7fadf1f", "stdio": "6f62fe05c5ea1ceb", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "__zlib.zdeflate": "784dde8a8697b7ab", "zdeflate": "784dde8a8697b7ab", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "__zlib.zdef": "9b7d2adaae94f021", "zdef": "9b7d2adaae94f021", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "__zlib.zchecksum": "cb151b297f4ea56d", "zchecksum": "cb151b297f4ea56d", "__zlib.test_pyzlib": "d855b3e66d1d6522", "test_pyzlib": "d855b3e66d1d6522", "__zlib.zinflate": "e445a2bb299d1b7d", "zinflate": "e445a2bb299d1b7d", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/ZlibTest/output/e445a2bb299d1b7d.deps.json b/Test/ZlibTest/output/e445a2bb299d1b7d.deps.json index 66cf6da..79d0f4c 100644 --- a/Test/ZlibTest/output/e445a2bb299d1b7d.deps.json +++ b/Test/ZlibTest/output/e445a2bb299d1b7d.deps.json @@ -1 +1 @@ -{"main": "03b24bc1d9327958", "__zlib.pyzlib": "0f8134f67bdaba8f", "pyzlib": "0f8134f67bdaba8f", "stdio": "6f62fe05c5ea1ceb", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "__zlib.zdeflate": "784dde8a8697b7ab", "zdeflate": "784dde8a8697b7ab", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "__zlib.zdef": "9b7d2adaae94f021", "zdef": "9b7d2adaae94f021", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "__zlib.zchecksum": "cb151b297f4ea56d", "zchecksum": "cb151b297f4ea56d", "__zlib.test_pyzlib": "d855b3e66d1d6522", "test_pyzlib": "d855b3e66d1d6522", "__zlib.zhuff": "dd19090b337e9bea", "zhuff": "dd19090b337e9bea", "testcheck": "dd3002730623424b", "stdint": "f5522571bcce7bcb"} \ No newline at end of file +{"main": "03b24bc1d9327958", "__zlib.pyzlib": "0f8134f67bdaba8f", "pyzlib": "0f8134f67bdaba8f", "testcheck": "14d33679f7fadf1f", "stdio": "6f62fe05c5ea1ceb", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "__zlib.zdeflate": "784dde8a8697b7ab", "zdeflate": "784dde8a8697b7ab", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "__zlib.zdef": "9b7d2adaae94f021", "zdef": "9b7d2adaae94f021", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "__zlib.zchecksum": "cb151b297f4ea56d", "zchecksum": "cb151b297f4ea56d", "__zlib.test_pyzlib": "d855b3e66d1d6522", "test_pyzlib": "d855b3e66d1d6522", "__zlib.zhuff": "dd19090b337e9bea", "zhuff": "dd19090b337e9bea", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/Test/ZlibTest/temp/dd3002730623424b.pyi b/Test/ZlibTest/temp/14d33679f7fadf1f.pyi similarity index 100% rename from Test/ZlibTest/temp/dd3002730623424b.pyi rename to Test/ZlibTest/temp/14d33679f7fadf1f.pyi diff --git a/Test/ZlibTest/temp/9474791561654346.pyi b/Test/ZlibTest/temp/9474791561654346.pyi new file mode 100644 index 0000000..1f82b1e --- /dev/null +++ b/Test/ZlibTest/temp/9474791561654346.pyi @@ -0,0 +1,59 @@ +""" +Auto-generated Python stub file from string.py +Module: string +""" + + +from stdint import * +import t, c + +def strcpy(dest: str, src: str) -> str: pass + +def strcat(dest: str, src: str) -> str: pass + +def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass + +def strlen(src: str) -> t.CSizeT | t.CExport: pass + +def strcmp(str1: str, str2: str) -> t.CInt: pass + +def samestr(str1: str, str2: str) -> bool: pass + +def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass + +def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass + +def strchr(s: str, cr: t.CInt) -> str: pass + +def strrchr(s: str, cr: t.CInt) -> str: pass + +def strstr(s: str, needle: str) -> str: pass + +def strspn(s: str, skip: str) -> int: pass + +def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def atoi(src: str) -> t.CInt: pass + +def atoll(src: str) -> t.CInt64T: pass + +def atof(src: str) -> t.CDouble: pass + +def split(s: str, delim: str, result: t.CArray[str]) -> int: pass + + +ascii_lowercase: t.CExtern | str +ascii_uppercase: t.CExtern | str +ascii_letters: t.CExtern | str +digits: t.CExtern | str +hexdigits: t.CExtern | str +octdigits: t.CExtern | str +punctuation: t.CExtern | str +whitespace: t.CExtern | str +printable: t.CExtern | str \ No newline at end of file diff --git a/Test/ZlibTest/temp/_phase1_manifest.json b/Test/ZlibTest/temp/_phase1_manifest.json index d47877d..01c0966 100644 --- a/Test/ZlibTest/temp/_phase1_manifest.json +++ b/Test/ZlibTest/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\ZlibTest\\App\\__zlib\\pyzlib.py": {"sha1": "0f8134f67bdaba8f", "mtime": 1782266233.8661451, "size": 20930}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\ZlibTest\\App\\__zlib\\test_pyzlib.py": {"sha1": "d855b3e66d1d6522", "mtime": 1782407614.5315387, "size": 36204}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\ZlibTest\\App\\__zlib\\zchecksum.py": {"sha1": "cb151b297f4ea56d", "mtime": 1782266234.306909, "size": 4068}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\ZlibTest\\App\\__zlib\\zdef.py": {"sha1": "9b7d2adaae94f021", "mtime": 1782393175.830038, "size": 8195}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\ZlibTest\\App\\__zlib\\zdeflate.py": {"sha1": "784dde8a8697b7ab", "mtime": 1782396643.2488594, "size": 18977}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\ZlibTest\\App\\__zlib\\zhuff.py": {"sha1": "dd19090b337e9bea", "mtime": 1782388678.1362753, "size": 13596}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\ZlibTest\\App\\__zlib\\zinflate.py": {"sha1": "e445a2bb299d1b7d", "mtime": 1782266257.0389085, "size": 18067}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\ZlibTest\\App\\main.py": {"sha1": "03b24bc1d9327958", "mtime": 1782110043.5860827, "size": 484}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "ab6e54ba9a669f76", "mtime": 1783933178.7264287, "size": 9922}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32memory.py": {"sha1": "72e2d5ccb7cedcf1", "mtime": 1781200703.5389092, "size": 3142}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\ZlibTest\\App\\__zlib\\pyzlib.py": {"sha1": "0f8134f67bdaba8f", "mtime": 1782266233.8661451, "size": 20930}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\ZlibTest\\App\\__zlib\\test_pyzlib.py": {"sha1": "d855b3e66d1d6522", "mtime": 1782407614.5315387, "size": 36204}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\ZlibTest\\App\\__zlib\\zchecksum.py": {"sha1": "cb151b297f4ea56d", "mtime": 1782266234.306909, "size": 4068}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\ZlibTest\\App\\__zlib\\zdef.py": {"sha1": "9b7d2adaae94f021", "mtime": 1782393175.830038, "size": 8195}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\ZlibTest\\App\\__zlib\\zdeflate.py": {"sha1": "784dde8a8697b7ab", "mtime": 1782396643.2488594, "size": 18977}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\ZlibTest\\App\\__zlib\\zhuff.py": {"sha1": "dd19090b337e9bea", "mtime": 1782388678.1362753, "size": 13596}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\ZlibTest\\App\\__zlib\\zinflate.py": {"sha1": "e445a2bb299d1b7d", "mtime": 1782266257.0389085, "size": 18067}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\ZlibTest\\App\\main.py": {"sha1": "03b24bc1d9327958", "mtime": 1782110043.5860827, "size": 484}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "9474791561654346", "mtime": 1784387475.6951904, "size": 10395}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784375629.8057406, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32memory.py": {"sha1": "72e2d5ccb7cedcf1", "mtime": 1781200703.5389092, "size": 3142}} \ No newline at end of file diff --git a/Test/ZlibTest/temp/_sha1_map.txt b/Test/ZlibTest/temp/_sha1_map.txt index 161bc24..db8e459 100644 --- a/Test/ZlibTest/temp/_sha1_map.txt +++ b/Test/ZlibTest/temp/_sha1_map.txt @@ -1,16 +1,16 @@ 03b24bc1d9327958:main.py 0f8134f67bdaba8f:__zlib\pyzlib.py +14d33679f7fadf1f:includes/testcheck.py 6f62fe05c5ea1ceb:includes/stdio.py 72e2d5ccb7cedcf1:includes/w32\win32memory.py 784dde8a8697b7ab:__zlib\zdeflate.py 7e529fe7a078cfef:includes/w32\win32base.py 90c53dd6db8d41cf:includes/stdlib.py +9474791561654346:includes/string.py 9b7d2adaae94f021:__zlib\zdef.py -ab6e54ba9a669f76:includes/string.py bbdf3bbd4c3bc28c:includes/w32\win32console.py cb151b297f4ea56d:__zlib\zchecksum.py d855b3e66d1d6522:__zlib\test_pyzlib.py dd19090b337e9bea:__zlib\zhuff.py -dd3002730623424b:includes/testcheck.py e445a2bb299d1b7d:__zlib\zinflate.py f5522571bcce7bcb:includes/stdint.py diff --git a/Test/ZlibTest/temp/_shared_sym.json b/Test/ZlibTest/temp/_shared_sym.json index 6c9b319..60e47aa 100644 Binary files a/Test/ZlibTest/temp/_shared_sym.json and b/Test/ZlibTest/temp/_shared_sym.json differ diff --git a/Test/ZlibTest/temp/ab6e54ba9a669f76.pyi b/Test/ZlibTest/temp/ab6e54ba9a669f76.pyi deleted file mode 100644 index 4fc3440..0000000 --- a/Test/ZlibTest/temp/ab6e54ba9a669f76.pyi +++ /dev/null @@ -1,48 +0,0 @@ -""" -Auto-generated Python stub file from string.py -Module: string -""" - - -from stdint import * -import t, c - -def strcpy(dest: str, src: str) -> str: pass - -def strcat(dest: str, src: str) -> str: pass - -def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass - -def strlen(src: str) -> t.CSizeT | t.CExport: pass - -def strcmp(str1: str, str2: str) -> t.CInt: pass - -def samestr(str1: str, str2: str) -> bool: pass - -def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass - -def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass - -def strchr(s: str, cr: t.CInt) -> str: pass - -def strrchr(s: str, cr: t.CInt) -> str: pass - -def strstr(s: str, needle: str) -> str: pass - -def strspn(s: str, skip: str) -> int: pass - -def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass - -def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass - -def atoi(src: str) -> t.CInt: pass - -def atoll(src: str) -> t.CInt64T: pass - -def atof(src: str) -> t.CDouble: pass - -def split(s: str, delim: str, result: t.CArray[str]) -> int: pass diff --git a/TransPyV/Test/temp/dd3002730623424b.deps.txt b/TransPyV/Test/temp/14d33679f7fadf1f.deps.txt similarity index 100% rename from TransPyV/Test/temp/dd3002730623424b.deps.txt rename to TransPyV/Test/temp/14d33679f7fadf1f.deps.txt diff --git a/TransPyV/Test/temp/bf9813f6e3c9d351.deps.txt b/TransPyV/Test/temp/285a822aa26bfbda.deps.txt similarity index 100% rename from TransPyV/Test/temp/bf9813f6e3c9d351.deps.txt rename to TransPyV/Test/temp/285a822aa26bfbda.deps.txt diff --git a/TransPyV/Test/temp/_sha1_map.txt b/TransPyV/Test/temp/_sha1_map.txt index cf1f690..c019a14 100644 --- a/TransPyV/Test/temp/_sha1_map.txt +++ b/TransPyV/Test/temp/_sha1_map.txt @@ -2,12 +2,12 @@ 57288496f7c2d1ad:includes/json/__init__.py 240a9a4157959a9f:includes/json/__parser.py 20cd49775c100a38:includes/json/__writer.py -ee084e9fc6ee413a:includes/memhub.py +f3560b99de458aec:includes/memhub.py f5522571bcce7bcb:includes/stdint.py 6f62fe05c5ea1ceb:includes/stdio.py 90c53dd6db8d41cf:includes/stdlib.py ab6e54ba9a669f76:includes/string.py -dd3002730623424b:includes/testcheck.py +14d33679f7fadf1f:includes/testcheck.py c9f4be41ca1cc2b4:includes/viperio.py 7e529fe7a078cfef:includes/w32/win32base.py bbdf3bbd4c3bc28c:includes/w32/win32console.py diff --git a/TransPyV/Test/temp/ee084e9fc6ee413a.deps.txt b/TransPyV/Test/temp/f3560b99de458aec.deps.txt similarity index 100% rename from TransPyV/Test/temp/ee084e9fc6ee413a.deps.txt rename to TransPyV/Test/temp/f3560b99de458aec.deps.txt diff --git a/TransPyV/temp/_shared_sym.json b/TransPyV/temp/_shared_sym.json index 5ecd858..2fe9920 100644 Binary files a/TransPyV/temp/_shared_sym.json and b/TransPyV/temp/_shared_sym.json differ diff --git a/debug_dict_full.txt b/debug_dict_full.txt new file mode 100644 index 0000000..08af040 --- /dev/null +++ b/debug_dict_full.txt @@ -0,0 +1,83 @@ +├ INFO: 读取配置文件: Test/DictTest/project.json +├ INFO: 项目目录: D:\Users\TermiNexus\Desktop\TransPyC\Test\DictTest +├ INFO: 源目录: D:\Users\TermiNexus\Desktop\TransPyC\Test\DictTest\App +├ INFO: 临时目录: D:\Users\TermiNexus\Desktop\TransPyC\Test\DictTest\temp +├ INFO: 输出目录: D:\Users\TermiNexus\Desktop\TransPyC\Test\DictTest\output +├ INFO: 阶段: all +├ INFO: 编译器: llc -filetype=obj -relocation-model=pic +├ INFO: 目标三元组: x86_64-pc-windows-gnu +├ INFO: 数据布局: e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128 +├ INFO: output: 已清空 D:\Users\TermiNexus\Desktop\TransPyC\Test\DictTest\output +├ INFO: temp: 已清空 D:\Users\TermiNexus\Desktop\TransPyC\Test\DictTest\temp +├ INFO: 清理完成 +├ INFO: 已清除全局缓存: D:\Users\TermiNexus\Desktop\TransPyC\.transpyc_cache +├ INFO: 找到 1 个可达源文件(从入口遍历) +├ INFO: [1/1] 生成签名: main.py +├ INFO: -> b3c2b99b6f3be4c7.pyi (签名) +├ INFO: 处理 14 个被引用的 Python 库文件 +├ INFO: 生成签名: _dict.py -> e3e7b6de8d7d8b03.pyi +├ INFO: 生成签名: atom.py -> 271ea3decb810db2.pyi +├ INFO: 生成签名: json\__init__.py -> 57288496f7c2d1ad.pyi +├ INFO: 生成签名: json\__parser.py -> 240a9a4157959a9f.pyi +├ INFO: 生成签名: json\__writer.py -> 20cd49775c100a38.pyi +├ INFO: 生成签名: memhub.py -> f3560b99de458aec.pyi +├ INFO: 生成签名: stdint.py -> f5522571bcce7bcb.pyi +├ INFO: 生成签名: stdio.py -> 6f62fe05c5ea1ceb.pyi +├ INFO: 生成签名: stdlib.py -> 90c53dd6db8d41cf.pyi +├ INFO: 生成签名: string.py -> 9474791561654346.pyi +├ INFO: 生成签名: testcheck.py -> 14d33679f7fadf1f.pyi +├ INFO: 生成签名: viperio.py -> c9f4be41ca1cc2b4.pyi +├ INFO: 生成签名: w32\win32base.py -> 7e529fe7a078cfef.pyi +├ INFO: 生成签名: w32\win32console.py -> bbdf3bbd4c3bc28c.pyi +├ INFO: 结构体注册表: 24 个类型, 0 个枚举 +├ INFO: -> b3c2b99b6f3be4c7.stub.ll (声明) +├ INFO: 生成声明: _dict.py -> e3e7b6de8d7d8b03.stub.ll +├ INFO: 生成声明: atom.py -> 271ea3decb810db2.stub.ll +├ INFO: 生成声明: json\__init__.py -> 57288496f7c2d1ad.stub.ll +├ INFO: 生成声明: json\__parser.py -> 240a9a4157959a9f.stub.ll +├ INFO: 生成声明: json\__writer.py -> 20cd49775c100a38.stub.ll +├ INFO: 生成声明: memhub.py -> f3560b99de458aec.stub.ll +├ INFO: 生成声明: stdint.py -> f5522571bcce7bcb.stub.ll +├ INFO: 生成声明: stdio.py -> 6f62fe05c5ea1ceb.stub.ll +├ INFO: 生成声明: stdlib.py -> 90c53dd6db8d41cf.stub.ll +├ INFO: 生成声明: string.py -> 9474791561654346.stub.ll +├ INFO: 生成声明: testcheck.py -> 14d33679f7fadf1f.stub.ll +├ INFO: 生成声明: viperio.py -> c9f4be41ca1cc2b4.stub.ll +├ INFO: 生成声明: w32\win32base.py -> 7e529fe7a078cfef.stub.ll +├ INFO: 生成声明: w32\win32console.py -> bbdf3bbd4c3bc28c.stub.ll +├ SUCCESS: 声明接口生成到: D:\Users\TermiNexus\Desktop\TransPyC\Test\DictTest\temp +├ INFO: SHA1 映射表 (15 个文件): +├ INFO: includes.binary: 已清空 D:\Users\TermiNexus\Desktop\TransPyC\includes.binary (17 个文件) +├ INFO: 找到 1 个可达源文件(已按依赖排序) +├ INFO: 处理顺序: +├ INFO: 1. main.py +├ INFO: [缓存] 构建共享符号表数据... +├ INFO: [缓存] 共享符号表构建完成 (0.30s, 677 符号, 5 泛型模板, 1 doc 元数据) +├ INFO: +需要翻译 1 个文件 +[DEBUG find_func] FIRST lookup 'dict.__before_init__' already in self.functions +[DEBUG find_func] func.name='e3e7b6de8d7d8b03.dict.__before_init__' args=[< i8*>] +[DEBUG find_func] module_sha1='b3c2b99b6f3be4c7' + File "D:\Users\TermiNexus\Desktop\TransPyC\Projectrans.py", line 22, in + main() + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\Projectrans\Config.py", line 266, in main + trans.run() + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\Projectrans\Phase2Translator.py", line 467, in run + self._translate_file(src_path, out_path, prebuilt_ModuleSha1Map=msm) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\Projectrans\Phase2Translator.py", line 1039, in _translate_file + result = trans.Convert( + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\Shell\TransPyC.py", line 555, in Convert + code: str = self.translator.GenerateCCode(Tree, target='llvm') + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Translator\LlvmGenerator.py", line 642, in GenerateCCode + return self.GenerateLlvmDirect(Tree) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Translator\LlvmGenerator.py", line 132, in GenerateLlvmDirect + self.ImportHandler._EmitImportDeclarationsLlvm(Node, Gen) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesImports.py", line 103, in _EmitImportDeclarationsLlvm + self._EmitModuleDeclarationsLlvm(name, Gen, register_module_name=current_module) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesImports.py", line 636, in _EmitModuleDeclarationsLlvm + self._EmitExternalClassDeclLlvm(node, Gen, module_name=module_name) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesImports.py", line 1583, in _EmitExternalClassDeclLlvm + self._TryLoadStructFromStub(ClassName, Gen, source_sha1=source_sha1) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesImports.py", line 2009, in _TryLoadStructFromStub + self._TryLoadClassMembersFromPyi(class_name, stub_filename, Gen) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesImports.py", line 2058, in _TryLoadClassMembersFromPyi diff --git a/debug_dict_output.txt b/debug_dict_output.txt new file mode 100644 index 0000000..05ba769 --- /dev/null +++ b/debug_dict_output.txt @@ -0,0 +1 @@ +链接失败,立即终止编译。 diff --git a/full_log.txt b/full_log.txt new file mode 100644 index 0000000..05ba769 --- /dev/null +++ b/full_log.txt @@ -0,0 +1 @@ +链接失败,立即终止编译。 diff --git a/full_log2.txt b/full_log2.txt new file mode 100644 index 0000000..689edd5 --- /dev/null +++ b/full_log2.txt @@ -0,0 +1,378 @@ +├ INFO: 读取配置文件: Test/ZlibTest/project.json +├ INFO: 项目目录: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest +├ INFO: 源目录: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\App +├ INFO: 临时目录: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\temp +├ INFO: 输出目录: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output +├ INFO: 阶段: all +├ INFO: 编译器: llc -filetype=obj +├ INFO: 目标三元组: x86_64-pc-windows-gnu +├ INFO: 数据布局: e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128 +├ INFO: output: 已清空 D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output +├ INFO: temp: 已清空 D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\temp +├ INFO: 清理完成 +├ INFO: 已清除全局缓存: D:\Users\TermiNexus\Desktop\TransPyC\.transpyc_cache +├ INFO: 找到 8 个可达源文件(从入口遍历) +├ INFO: [1/8] 生成签名: __zlib\pyzlib.py +├ INFO: -> 0f8134f67bdaba8f.pyi (签名) +├ INFO: [2/8] 生成签名: __zlib\test_pyzlib.py +├ INFO: -> d855b3e66d1d6522.pyi (签名) +├ INFO: [3/8] 生成签名: __zlib\zchecksum.py +├ INFO: -> cb151b297f4ea56d.pyi (签名) +├ INFO: [4/8] 生成签名: __zlib\zdef.py +├ INFO: -> 9b7d2adaae94f021.pyi (签名) +├ INFO: [5/8] 生成签名: __zlib\zdeflate.py +├ INFO: -> 784dde8a8697b7ab.pyi (签名) +├ INFO: [6/8] 生成签名: __zlib\zhuff.py +├ INFO: -> dd19090b337e9bea.pyi (签名) +├ INFO: [7/8] 生成签名: __zlib\zinflate.py +├ INFO: -> e445a2bb299d1b7d.pyi (签名) +├ INFO: [8/8] 生成签名: main.py +├ INFO: -> 03b24bc1d9327958.pyi (签名) +├ INFO: 处理 8 个被引用的 Python 库文件 +├ INFO: 生成签名: stdint.py -> f5522571bcce7bcb.pyi +├ INFO: 生成签名: stdio.py -> 6f62fe05c5ea1ceb.pyi +├ INFO: 生成签名: stdlib.py -> 90c53dd6db8d41cf.pyi +├ INFO: 生成签名: string.py -> 9474791561654346.pyi +├ INFO: 生成签名: testcheck.py -> 14d33679f7fadf1f.pyi +├ INFO: 生成签名: w32\win32base.py -> 7e529fe7a078cfef.pyi +├ INFO: 生成签名: w32\win32console.py -> bbdf3bbd4c3bc28c.pyi +├ INFO: 生成签名: w32\win32memory.py -> 72e2d5ccb7cedcf1.pyi +├ INFO: 结构体注册表: 27 个类型, 0 个枚举 +├ INFO: -> 0f8134f67bdaba8f.stub.ll (声明) +├ INFO: -> d855b3e66d1d6522.stub.ll (声明) +├ INFO: -> cb151b297f4ea56d.stub.ll (声明) +├ INFO: -> 9b7d2adaae94f021.stub.ll (声明) +├ INFO: -> 784dde8a8697b7ab.stub.ll (声明) +├ INFO: -> dd19090b337e9bea.stub.ll (声明) +├ INFO: -> e445a2bb299d1b7d.stub.ll (声明) +├ INFO: -> 03b24bc1d9327958.stub.ll (声明) +├ INFO: 生成声明: stdint.py -> f5522571bcce7bcb.stub.ll +├ INFO: 生成声明: stdio.py -> 6f62fe05c5ea1ceb.stub.ll +├ INFO: 生成声明: stdlib.py -> 90c53dd6db8d41cf.stub.ll +├ INFO: 生成声明: string.py -> 9474791561654346.stub.ll +├ INFO: 生成声明: testcheck.py -> 14d33679f7fadf1f.stub.ll +├ INFO: 生成声明: w32\win32base.py -> 7e529fe7a078cfef.stub.ll +├ INFO: 生成声明: w32\win32console.py -> bbdf3bbd4c3bc28c.stub.ll +├ INFO: 生成声明: w32\win32memory.py -> 72e2d5ccb7cedcf1.stub.ll +├ SUCCESS: 声明接口生成到: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\temp +├ INFO: SHA1 映射表 (16 个文件): +├ INFO: includes.binary: 已清空 D:\Users\TermiNexus\Desktop\TransPyC\includes.binary (10 个文件) +├ INFO: 找到 8 个可达源文件(已按依赖排序) +├ INFO: 处理顺序: +├ INFO: 1. __zlib\pyzlib.py +├ INFO: 2. __zlib\test_pyzlib.py +├ INFO: 3. __zlib\zchecksum.py +├ INFO: 4. __zlib\zdef.py +├ INFO: 5. __zlib\zdeflate.py +├ INFO: 6. __zlib\zhuff.py +├ INFO: 7. __zlib\zinflate.py +├ INFO: 8. main.py +├ INFO: [缓存] 构建共享符号表数据... +├ INFO: [缓存] 共享符号表构建完成 (0.42s, 873 符号, 5 泛型模板, 8 doc 元数据) +├ INFO: +需要翻译 8 个文件 +├ INFO: 并行翻译 (workers=8) +├ INFO: 共享符号表已序列化 (423KB) +├ INFO: -> cb151b297f4ea56d.ll +├ INFO: [1/8] 完成: __zlib\zchecksum.py +[FATAL] 方法体编译失败 (.append_bytes): TypeError: Type of #1 arg mismatch: i8* != i8 +Traceback (most recent call last): + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesFunctions.py", line 1741, in _EmitFunctionLlvm + self.Trans.BodyHandler.HandleBodyLlvm(func_body) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 32, in HandleBodyLlvm + self.Trans.IfHandler._HandleIfLlvm(Node) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesIf.py", line 193, in _HandleIfLlvm + self.Trans.BodyHandler.HandleBodyLlvm(Node.body) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 30, in HandleBodyLlvm + self.Trans.AnnAssignHandler._HandleAnnAssignLlvm(Node) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesAnnAssign.py", line 289, in _HandleAnnAssignLlvm + self._HandleAnnAssignLlvmInner(Node) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesAnnAssign.py", line 487, in _HandleAnnAssignLlvmInner + InitValue = self.HandleExprLlvm(Node.value, VarType=VarType) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBase.py", line 526, in HandleExprLlvm + return self.Trans.ExprHandler.HandleExprLlvm(Node, VarType) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExpr.py", line 63, in HandleExprLlvm + return self.Trans.ExprCallHandle._HandleCallLlvm(Node) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprCall.py", line 277, in _HandleCallLlvm + return self._HandleTypedefCastLlvm(Node, FuncName) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprCall.py", line 1619, in _HandleTypedefCastLlvm + ArgVal = self.HandleExprLlvm(Node.args[0]) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBase.py", line 526, in HandleExprLlvm + return self.Trans.ExprHandler.HandleExprLlvm(Node, VarType) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExpr.py", line 63, in HandleExprLlvm + return self.Trans.ExprCallHandle._HandleCallLlvm(Node) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprCall.py", line 255, in _HandleCallLlvm + result = self.Trans.ExprBuiltinHandle._HandleBuiltinCallLlvm(Node) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprBuiltin.py", line 179, in _HandleBuiltinCallLlvm + return self._HandleReallocLlvm(Node.args) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprBuiltin.py", line 723, in _HandleReallocLlvm + result: ir.Value = Gen.builder.call(realloc_func, [ptr_val, size_val], name="realloc_result") + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Python312\Lib\site-packages\llvmlite\ir\builder.py", line 881, in call + inst = instructions.CallInstr(self.block, fn, args, name=name, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Python312\Lib\site-packages\llvmlite\ir\instructions.py", line 105, in __init__ + raise TypeError(msg) +TypeError: Type of #1 arg mismatch: i8* != i8 +├ ERROR: __zlib\pyzlib.py: Type of #1 arg mismatch: i8* != i8 + 源代码 (D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\App\__zlib\pyzlib.py, line 387): + 387 | def append_bytes(buf: BYTE | t.CPtr[t.CPtr], length: t.CSizeT | t.CPtr, cap: t.CSizeT | t.CPtr, + Type of #1 arg mismatch: i8* != i8 + 源代码 (D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\App\__zlib\pyzlib.py, line 391): + 391 | if needed > c.Deref(cap): + Type of #1 arg mismatch: i8* != i8 + 源代码 (D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\App\__zlib\pyzlib.py, line 394): + 394 | new_buf: BYTEPTR = BYTEPTR(realloc(c.Deref(buf), new_cap)) + Type of #1 arg mismatch: i8* != i8 +Traceback (most recent call last): + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\Projectrans\Phase2Translator.py", line 1039, in _translate_file + result = trans.Convert( + ^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\Shell\TransPyC.py", line 555, in Convert + code: str = self.translator.GenerateCCode(Tree, target='llvm') + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Translator\LlvmGenerator.py", line 642, in GenerateCCode + return self.GenerateLlvmDirect(Tree) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Translator\LlvmGenerator.py", line 179, in GenerateLlvmDirect + self.FunctionHandler._EmitFunctionLlvm(Node, Gen) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesFunctions.py", line 1741, in _EmitFunctionLlvm + self.Trans.BodyHandler.HandleBodyLlvm(func_body) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 32, in HandleBodyLlvm + self.Trans.IfHandler._HandleIfLlvm(Node) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesIf.py", line 193, in _HandleIfLlvm + self.Trans.BodyHandler.HandleBodyLlvm(Node.body) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 30, in HandleBodyLlvm + self.Trans.AnnAssignHandler._HandleAnnAssignLlvm(Node) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesAnnAssign.py", line 289, in _HandleAnnAssignLlvm + self._HandleAnnAssignLlvmInner(Node) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesAnnAssign.py", line 487, in _HandleAnnAssignLlvmInner + InitValue = self.HandleExprLlvm(Node.value, VarType=VarType) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBase.py", line 526, in HandleExprLlvm + return self.Trans.ExprHandler.HandleExprLlvm(Node, VarType) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExpr.py", line 63, in HandleExprLlvm + return self.Trans.ExprCallHandle._HandleCallLlvm(Node) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprCall.py", line 277, in _HandleCallLlvm + return self._HandleTypedefCastLlvm(Node, FuncName) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprCall.py", line 1619, in _HandleTypedefCastLlvm + ArgVal = self.HandleExprLlvm(Node.args[0]) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBase.py", line 526, in HandleExprLlvm + return self.Trans.ExprHandler.HandleExprLlvm(Node, VarType) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExpr.py", line 63, in HandleExprLlvm + return self.Trans.ExprCallHandle._HandleCallLlvm(Node) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprCall.py", line 255, in _HandleCallLlvm + result = self.Trans.ExprBuiltinHandle._HandleBuiltinCallLlvm(Node) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprBuiltin.py", line 179, in _HandleBuiltinCallLlvm + return self._HandleReallocLlvm(Node.args) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprBuiltin.py", line 723, in _HandleReallocLlvm + result: ir.Value = Gen.builder.call(realloc_func, [ptr_val, size_val], name="realloc_result") + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Python312\Lib\site-packages\llvmlite\ir\builder.py", line 881, in call + inst = instructions.CallInstr(self.block, fn, args, name=name, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Python312\Lib\site-packages\llvmlite\ir\instructions.py", line 105, in __init__ + raise TypeError(msg) +TypeError: Type of #1 arg mismatch: i8* != i8 + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\Projectrans\Phase2Translator.py", line 89, in _parallel_translate_worker + trans._translate_file(src_path, out_path, prebuilt_ModuleSha1Map=prebuilt_ModuleSha1Map) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\Projectrans\Phase2Translator.py", line 1055, in _translate_file + raise type(e)(enriched) from e +TypeError: Type of #1 arg mismatch: i8* != i8 + 源代码 (D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\App\__zlib\pyzlib.py, line 387): + 387 | def append_bytes(buf: BYTE | t.CPtr[t.CPtr], length: t.CSizeT | t.CPtr, cap: t.CSizeT | t.CPtr, + Type of #1 arg mismatch: i8* != i8 + 源代码 (D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\App\__zlib\pyzlib.py, line 391): + 391 | if needed > c.Deref(cap): + Type of #1 arg mismatch: i8* != i8 + 源代码 (D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\App\__zlib\pyzlib.py, line 394): + 394 | new_buf: BYTEPTR = BYTEPTR(realloc(c.Deref(buf), new_cap)) + Type of #1 arg mismatch: i8* != i8 + +├ INFO: -> dd19090b337e9bea.ll +├ INFO: [3/8] 完成: __zlib\zhuff.py +├ INFO: -> 03b24bc1d9327958.ll +├ INFO: [4/8] 完成: main.py +├ INFO: -> d855b3e66d1d6522.ll +├ INFO: [5/8] 完成: __zlib\test_pyzlib.py +├ INFO: -> 784dde8a8697b7ab.ll +├ INFO: [6/8] 完成: __zlib\zdeflate.py +├ INFO: -> e445a2bb299d1b7d.ll +├ INFO: [7/8] 完成: __zlib\zinflate.py +├ INFO: -> 9b7d2adaae94f021.ll +├ INFO: [8/8] 完成: __zlib\zdef.py +├ ERROR: +1 个文件翻译失败,继续编译 includes +├ INFO: 翻译总耗时: 2.4s +├ INFO: +[阶段二完成] .ll 文件生成到: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output +├ INFO: [includes] 发现 Python 源文件: stdio.py +├ INFO: [includes] 发现 Python 源文件: string.py +├ INFO: [includes] 发现 Python 包文件: w32\fileio.py +├ INFO: [includes] 发现 Python 包文件: w32\win32base.py +├ INFO: [includes] 发现 Python 包文件: w32\win32console.py +├ INFO: [includes] 发现 Python 包文件: w32\win32file.py +├ INFO: [includes] 发现 Python 包文件: w32\win32memory.py +├ INFO: [includes] 发现 Python 包文件: w32\win32process.py +├ INFO: [includes] 发现 Python 包文件: w32\win32sync.py +├ INFO: [includes] 发现 Python 包文件: w32\winsock2.py +├ INFO: [includes] 发现 Python 源文件: stdlib.py +├ INFO: [includes] 发现 Python 源文件: stdint.py +├ INFO: [includes] 发现 Python 源文件: testcheck.py +├ INFO: +[includes 编译] 找到 13 个 Python 源文件 +├ INFO: 跳过(声明文件): stdint.py +├ INFO: 跳过(声明文件): stdio.py +├ INFO: 跳过(声明文件): stdlib.py +├ INFO: 翻译 10 个文件 +├ INFO: -> 9474791561654346.ll +├ INFO: [1/10] 翻译完成: string.py +├ INFO: -> 7e529fe7a078cfef.ll +├ INFO: [2/10] 翻译完成: win32base.py +├ INFO: -> 06f53cc594b4ac6c.ll +├ INFO: [3/10] 翻译完成: win32sync.py +├ INFO: -> 6446627d4f07a1b5.ll +├ INFO: [4/10] 翻译完成: winsock2.py +├ INFO: -> f6b51804a0ba8ff0.ll +├ INFO: [5/10] 翻译完成: win32file.py +├ INFO: -> 067c78e9f121dce3.ll +├ INFO: [6/10] 翻译完成: win32process.py +├ INFO: -> bbdf3bbd4c3bc28c.ll +├ INFO: [7/10] 翻译完成: win32console.py +├ INFO: -> 72e2d5ccb7cedcf1.ll +├ INFO: [8/10] 翻译完成: win32memory.py +├ INFO: -> 0035c95a18d4f8e8.ll +├ INFO: [9/10] 翻译完成: fileio.py +├ INFO: -> 14d33679f7fadf1f.ll +├ INFO: [10/10] 翻译完成: testcheck.py +├ INFO: 编译 10 个 .ll 文件 +├ SUCCESS: [1/10] 编译成功: win32base.py +├ SUCCESS: [2/10] 编译成功: win32process.py +├ SUCCESS: [3/10] 编译成功: testcheck.py +├ SUCCESS: [4/10] 编译成功: win32console.py +├ SUCCESS: [5/10] 编译成功: win32file.py +├ SUCCESS: [6/10] 编译成功: win32memory.py +├ SUCCESS: [7/10] 编译成功: string.py +├ SUCCESS: [8/10] 编译成功: win32sync.py +├ SUCCESS: [9/10] 编译成功: winsock2.py +├ SUCCESS: [10/10] 编译成功: fileio.py +├ INFO: [清理] 删除 10 个过时文件 +├ INFO: +[编译] 找到 7 个 .ll 文件需要编译 +├ INFO: 并行编译 7 个文件 (workers=7) +├ SUCCESS: cb151b297f4ea56d.ll +├ SUCCESS: 03b24bc1d9327958.ll +├ SUCCESS: 784dde8a8697b7ab.ll +├ SUCCESS: dd19090b337e9bea.ll +├ SUCCESS: 9b7d2adaae94f021.ll +├ SUCCESS: e445a2bb299d1b7d.ll +├ SUCCESS: d855b3e66d1d6522.ll +├ INFO: +[链接] 找到 7 个 .obj 文件 +├ INFO: [链接] 额外库文件: 10 个 +├ INFO: - 9474791561654346.obj +├ INFO: - 7e529fe7a078cfef.obj +├ INFO: - bbdf3bbd4c3bc28c.obj +├ INFO: - 14d33679f7fadf1f.obj +├ INFO: - f6b51804a0ba8ff0.obj +├ INFO: - 0035c95a18d4f8e8.obj +├ INFO: - 72e2d5ccb7cedcf1.obj +├ INFO: - 067c78e9f121dce3.obj +├ INFO: - 06f53cc594b4ac6c.obj +├ INFO: - 6446627d4f07a1b5.obj +├ INFO: 执行: clang++ -Wl,--allow-multiple-definition -Wl,--unresolved-symbols=ignore-in-object-files -o D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\ZlibTest.exe D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\03b24bc1d9327958.obj D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\784dde8a8697b7ab.obj D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\9b7d2adaae94f021.obj D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\cb151b297f4ea56d.obj D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\dd19090b337e9bea.obj D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\e445a2bb299d1b7d.obj D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\9474791561654346.obj D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\7e529fe7a078cfef.obj D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\bbdf3bbd4c3bc28c.obj D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\14d33679f7fadf1f.obj D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\f6b51804a0ba8ff0.obj D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\0035c95a18d4f8e8.obj D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\72e2d5ccb7cedcf1.obj D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\067c78e9f121dce3.obj D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\06f53cc594b4ac6c.obj D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\6446627d4f07a1b5.obj -lmsvcrt -lucrt -lpthread -lmingwex -lkernel32 -luser32 -latomic +├ ERROR: 链接失败: D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x216): undefined reference to `0f8134f67bdaba8f.runtime_version' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x2f6): undefined reference to `0f8134f67bdaba8f.compress' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x3f4): undefined reference to `0f8134f67bdaba8f.decompress' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x525): undefined reference to `0f8134f67bdaba8f.compress' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x58c): undefined reference to `0f8134f67bdaba8f.compress' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x5e9): undefined reference to `0f8134f67bdaba8f.compress' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x646): undefined reference to `0f8134f67bdaba8f.compress' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x74e): undefined reference to `0f8134f67bdaba8f.compressobj' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x79f): undefined reference to `0f8134f67bdaba8f.Compress.compress' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x866): undefined reference to `0f8134f67bdaba8f.Compress.compress' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x931): undefined reference to `0f8134f67bdaba8f.Compress.flush' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0xa2d): undefined reference to `0f8134f67bdaba8f.decompress' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0xb2b): undefined reference to `0f8134f67bdaba8f.Compress.delete' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0xbb5): undefined reference to `0f8134f67bdaba8f.compress' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0xbdc): undefined reference to `0f8134f67bdaba8f.decompressobj' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0xc50): undefined reference to `0f8134f67bdaba8f.Decompress.decompress' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0xd58): undefined reference to `0f8134f67bdaba8f.Decompress.delete' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0xdd6): undefined reference to `0f8134f67bdaba8f.compress' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0xdfd): undefined reference to `0f8134f67bdaba8f.decompressobj' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0xe2d): undefined reference to `0f8134f67bdaba8f.Decompress.decompress' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0xeaf): undefined reference to `0f8134f67bdaba8f.Decompress.unconsumed_tail' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0xf30): undefined reference to `0f8134f67bdaba8f.Decompress.flush' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0xf99): undefined reference to `0f8134f67bdaba8f.Decompress.delete' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x1025): undefined reference to `0f8134f67bdaba8f.compress' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x10af): undefined reference to `0f8134f67bdaba8f.decompressobj' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x10dc): undefined reference to `0f8134f67bdaba8f.Decompress.decompress' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x1166): undefined reference to `0f8134f67bdaba8f.Decompress.unused_data' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x1209): undefined reference to `0f8134f67bdaba8f.Decompress.delete' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x12a6): undefined reference to `0f8134f67bdaba8f.compressobj' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x12c5): undefined reference to `0f8134f67bdaba8f.Compress.compress' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x12e0): undefined reference to `0f8134f67bdaba8f.Compress.copy' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x1327): undefined reference to `0f8134f67bdaba8f.Compress.flush' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x137b): undefined reference to `0f8134f67bdaba8f.Compress.flush' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x13ee): undefined reference to `0f8134f67bdaba8f.Compress.delete' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x13f8): undefined reference to `0f8134f67bdaba8f.Compress.delete' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x1473): undefined reference to `0f8134f67bdaba8f.compress' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x149a): undefined reference to `0f8134f67bdaba8f.decompressobj' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x14a7): undefined reference to `0f8134f67bdaba8f.Decompress.copy' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x150d): undefined reference to `0f8134f67bdaba8f.Decompress.decompress' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x1533): undefined reference to `0f8134f67bdaba8f.Decompress.decompress' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x1610): undefined reference to `0f8134f67bdaba8f.Decompress.delete' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x161a): undefined reference to `0f8134f67bdaba8f.Decompress.delete' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x1653): undefined reference to `0f8134f67bdaba8f.zlib_adler32' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x169a): undefined reference to `0f8134f67bdaba8f.zlib_adler32' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x16c2): undefined reference to `0f8134f67bdaba8f.zlib_adler32' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x1753): undefined reference to `0f8134f67bdaba8f.zlib_crc32' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x1797): undefined reference to `0f8134f67bdaba8f.zlib_crc32' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x17bf): undefined reference to `0f8134f67bdaba8f.zlib_crc32' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x186c): undefined reference to `0f8134f67bdaba8f.compress' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x190d): undefined reference to `0f8134f67bdaba8f.decompress' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x1a0e): undefined reference to `0f8134f67bdaba8f.compress' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x1a9b): undefined reference to `0f8134f67bdaba8f.decompress' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x1bf0): undefined reference to `0f8134f67bdaba8f.compress' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x1c52): undefined reference to `0f8134f67bdaba8f.decompress' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x1dce): undefined reference to `0f8134f67bdaba8f.compressobj' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x1e0e): undefined reference to `0f8134f67bdaba8f.Compress.compress' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x1e63): undefined reference to `0f8134f67bdaba8f.Compress.flush' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x1ebf): undefined reference to `0f8134f67bdaba8f.Compress.delete' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x1ef4): undefined reference to `0f8134f67bdaba8f.compressobj' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x1f0e): undefined reference to `0f8134f67bdaba8f.Compress.compress' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x1f25): undefined reference to `0f8134f67bdaba8f.Compress.flush' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x1f9a): undefined reference to `0f8134f67bdaba8f.Compress.delete' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x2eba): undefined reference to `0f8134f67bdaba8f.decompress' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x2eeb): undefined reference to `0f8134f67bdaba8f.get_error_code' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x2f02): undefined reference to `0f8134f67bdaba8f.get_error' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x2f19): undefined reference to `0f8134f67bdaba8f.get_error' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x2f46): undefined reference to `0f8134f67bdaba8f.get_error_code' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x2f68): undefined reference to `0f8134f67bdaba8f.clear_error' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x2f74): undefined reference to `0f8134f67bdaba8f.get_error_code' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x2f96): undefined reference to `0f8134f67bdaba8f.get_error_code' +D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\ZlibTest\output\d855b3e66d1d6522.obj:d855b3e66d1d6522_dso.ll:(.text+0x2f9d): undefined reference to `0f8134f67bdaba8f.get_error' +clang++: error: linker command failed with exit code 1 (use -v to see invocation) +├ ERROR: +链接失败,立即终止编译。 diff --git a/includes/hello.py b/includes/hello.py new file mode 100644 index 0000000..e4cfae4 --- /dev/null +++ b/includes/hello.py @@ -0,0 +1,5 @@ +import stdio + + +def helloworld(): + stdio.printf("Hello, world!\n") \ No newline at end of file diff --git a/includes/llvmlite/__builder.py b/includes/llvmlite/__builder.py index e5d580f..36f26d6 100644 --- a/includes/llvmlite/__builder.py +++ b/includes/llvmlite/__builder.py @@ -22,7 +22,11 @@ from .__function import Function, BasicBlock, block_append_text, function_move_b # builder.build_store(ConstInt(42), a) # r = builder.build_load(i32_ty, a) # builder.build_ret(r) +# +# 注意: 加 @t.NoVTable 以与硬编码 BUILDER_SIZE=32 保持一致 +# (所有方法均为顶层函数,无需 vtable)。 # ============================================================ +@t.NoVTable class IRBuilder: Pool: memhub.MemBuddy | t.CPtr # 内存池 Func: Function | t.CPtr # 所属函数 @@ -897,7 +901,10 @@ def build_gep_struct(builder: IRBuilder | t.CPtr, struct_ty: LLVMType | t.CPtr, # ============================================================ # PhiIncoming: phi 节点的入边 (value, block) 对 # 继承 GSListNode[PhiIncoming] 获取强类型 Next +# +# 注意: 必须加 @t.NoVTable(理由见 __function.py 的 Line 注释)。 # ============================================================ +@t.NoVTable class PhiIncoming(GSListNode[PhiIncoming]): Val: Value | t.CPtr Block: BasicBlock | t.CPtr @@ -965,7 +972,10 @@ def build_phi(builder: IRBuilder | t.CPtr, ty: LLVMType | t.CPtr, # ============================================================ # SwitchCase: switch 指令的 case 分支 +# +# 注意: 必须加 @t.NoVTable(理由见 __function.py 的 Line 注释)。 # ============================================================ +@t.NoVTable class SwitchCase(GSListNode[SwitchCase]): CaseVal: Value | t.CPtr Block: BasicBlock | t.CPtr diff --git a/includes/llvmlite/__function.py b/includes/llvmlite/__function.py index 5db70fb..508d6e6 100644 --- a/includes/llvmlite/__function.py +++ b/includes/llvmlite/__function.py @@ -13,7 +13,12 @@ from .__types import LLVMType, ParamNode, TypePrint # # 每条 LLVM IR 指令序列化为一行文本,通过链表组织。 # 继承 GSListNode[Line] 获取强类型 Next: Line|CPtr +# +# 注意: 必须加 @t.NoVTable。否则 TransPyC 为子类添加 vtable 指针(T*), +# 但完全丢失父类 GSListNode[T] 的 Next 字段,导致 struct 布局错位, +# 所有字段访问读取垃圾值(见续 XV 会话根因分析)。 # ============================================================ +@t.NoVTable class Line(GSListNode[Line]): Buf: t.CChar | t.CPtr # 行文本(NUL 结尾) Len: t.CSizeT # 文本长度(不含 NUL) @@ -25,7 +30,10 @@ class Line(GSListNode[Line]): # 持有名称 + 指令行链表 + 终止指令标志。 # 继承 GSListNode[BasicBlock] 获取强类型 Next: BasicBlock|CPtr # Lines 为 GSList[Line] 指针,提供 O(1) 追加。 +# +# 注意: 必须加 @t.NoVTable(理由同 Line)。 # ============================================================ +@t.NoVTable class BasicBlock(GSListNode[BasicBlock]): Name: t.CChar | t.CPtr # 块名(如 "entry"/"if.then") Lines: GSList[Line] | t.CPtr # 指令行链表容器(Head/Tail/Count) @@ -37,7 +45,10 @@ class BasicBlock(GSListNode[BasicBlock]): # # 继承 GSListNode[Param] 获取强类型 Next: Param|CPtr # Attrs 存储参数属性文本(如 "noundef"/"nocapture"/"readonly"),None=无属性 +# +# 注意: 必须加 @t.NoVTable(理由同 Line)。 # ============================================================ +@t.NoVTable class Param(GSListNode[Param]): Ty: LLVMType | t.CPtr # 参数类型 Name: t.CChar | t.CPtr # 参数名(如 "%0"/"%a") @@ -51,7 +62,10 @@ class Param(GSListNode[Param]): # 继承 GSListNode[Function] 获取强类型 Next: Function|CPtr # Params/Blocks 为 GSList 指针,提供 O(1) 追加。 # Attrs 存储函数级属性文本(如 "nounwind"/"noinline"),None=无属性 +# +# 注意: 必须加 @t.NoVTable(理由同 Line)。 # ============================================================ +@t.NoVTable class Function(GSListNode[Function]): Name: t.CChar | t.CPtr # 函数名 RetTy: LLVMType | t.CPtr # 返回类型 @@ -161,9 +175,12 @@ def function_move_block_to_end(func: Function | t.CPtr, block: BasicBlock | t.CP 用于解决 SSA 名非单调问题:BB 按创建顺序排列,但指令按控制流顺序生成, 导致 SSA 编号在文本输出时非单调递增,llc 报错。 在 position_at_end 时调用此函数,使 BB 顺序与 position 顺序一致。 + + 注意:必须使用 GSList[BasicBlock] 带类型参数,否则 TransPyC 创建不完整 + struct 类型,导致 blocks.Head/Tail/Count 字段访问读取垃圾值。 """ if func is None or block is None: return - blocks: GSList | t.CPtr = func.Blocks + blocks: GSList[BasicBlock] | t.CPtr = func.Blocks if blocks is None: return # 已经是 Tail,无需移动 diff --git a/includes/llvmlite/__types.py b/includes/llvmlite/__types.py index 3ac24d7..f21b383 100644 --- a/includes/llvmlite/__types.py +++ b/includes/llvmlite/__types.py @@ -10,7 +10,10 @@ from linkedlist import GSListNode # ParamNode: 函数参数类型链表节点 # 继承 GSListNode[ParamNode] 获取强类型 Next: ParamNode|CPtr # Ty 用 t.CVoid | t.CPtr 前向引用,使用时转型为 (LLVMType | t.CPtr) +# +# 注意: 必须加 @t.NoVTable(理由见 __function.py 的 Line 注释)。 # ============================================================ +@t.NoVTable class ParamNode(GSListNode[ParamNode]): Ty: t.CVoid | t.CPtr # LLVMType*(前向引用,使用时转型) diff --git a/includes/llvmlite/__values.py b/includes/llvmlite/__values.py index 4af3140..02af208 100644 --- a/includes/llvmlite/__values.py +++ b/includes/llvmlite/__values.py @@ -13,7 +13,10 @@ from .__types import LLVMType, TypePrint # 表示一个 LLVM IR 值:SSA 临时值(%0/%result)或常量字面量(42/0)。 # 每个值有类型指针、名字、是否常量标志。 # 继承 GSListNode[Value] 获取强类型 Next: Value|CPtr(值池链表) +# +# 注意: 必须加 @t.NoVTable(理由见 __function.py 的 Line 注释)。 # ============================================================ +@t.NoVTable class Value(GSListNode[Value]): Ty: LLVMType | t.CPtr # 值的类型 Name: t.CChar | t.CPtr # SSA 名("%0"/"%result")或常量文本("42"/"1.5e+00") diff --git a/includes/llvmlite/__verify.py b/includes/llvmlite/__verify.py index 2bd6d9c..6d269f8 100644 --- a/includes/llvmlite/__verify.py +++ b/includes/llvmlite/__verify.py @@ -28,7 +28,10 @@ VERIFY_ERR_PHI_NOT_FIRST: t.CDefine = 4 # ============================================================ # NameEntry: 已定义 SSA 名条目(链表节点) +# +# 注意: 必须加 @t.NoVTable(理由见 __function.py 的 Line 注释)。 # ============================================================ +@t.NoVTable class NameEntry(GSListNode[NameEntry]): Name: t.CChar | t.CPtr # SSA 名(如 "%0"/"%result") diff --git a/includes/memhub.py b/includes/memhub.py index 7b1c44a..339d97c 100644 --- a/includes/memhub.py +++ b/includes/memhub.py @@ -84,7 +84,7 @@ class MemManager: string.memset(ptr, 0, total) return ptr - def realloc(self, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: + def realloc(self, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: if ptr is None: return self.alloc(new_size) if new_size == 0: @@ -93,10 +93,7 @@ class MemManager: new_ptr: t.CVoid | t.CPtr = self.alloc(new_size) if new_ptr is None: return ptr - copy_size: t.CSizeT = old_size - if new_size < old_size: - copy_size = new_size - string.memcpy(new_ptr, ptr, copy_size) + # 基类无法追踪旧分配大小, 不复制数据; 子类可覆盖以保留数据 self.free(ptr) return new_ptr @@ -453,7 +450,7 @@ class MemBuddy(MemManager): return 1 # realloc 覆盖: 伙伴系统从块头读取旧阶数, 无需 old_size - def realloc(self, ptr: t.CVoid | t.CPtr, old_size: t.CSizeT, new_size: t.CSizeT) -> t.CVoid | t.CPtr: + def realloc(self, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: if ptr is None: return self.alloc(new_size) if new_size == 0: @@ -477,3 +474,48 @@ class MemBuddy(MemManager): string.memcpy(new_ptr, ptr, old_data_size) self.free(ptr) return new_ptr + + # === 状态查询 === + + @property + def mem_size(self) -> t.CSizeT: + # 可用区总大小(2 的幂),分配上限为 mem_size - MEMBUDDY_HEADER_SIZE + return self.usable_size + + def stats(self) -> t.CSizeT: + # 返回可用区总大小,用于状态统计 + return self.usable_size + + def free_count(self) -> t.CSizeT: + # 统计所有阶数空闲链中的块总数 + count: t.CSizeT = 0 + i: t.CInt + for i in range(MEMBUDDY_MAX_ORDERS + 1): + head_val: t.CUInt64T = self.free_lists[i] + cur: t.CVoid | t.CPtr = t.CVoid(head_val, t.CPtr) + while cur is not None: + count += 1 + cur = t.CVoid(c.Deref(t.CUInt64T(cur, t.CPtr)), t.CPtr) + return count + + def self_check(self) -> t.CInt: + # 验证伙伴分配器内部一致性,返回 0=OK,非 0=损坏 + if self.usable is None: + return 0 + i: t.CInt + for i in range(MEMBUDDY_MAX_ORDERS + 1): + head_val: t.CUInt64T = self.free_lists[i] + cur: t.CVoid | t.CPtr = t.CVoid(head_val, t.CPtr) + while cur is not None: + # 检查指针在可用区内 + if t.CUInt64T(cur) < t.CUInt64T(self.usable): + return 1 + if t.CUInt64T(cur) >= t.CUInt64T(self.usable) + self.usable_size: + return 2 + # 检查对齐:order i 的块必须按 _block_size_at_order(i) 对齐 + offset: t.CSizeT = t.CUInt64T(cur) - t.CUInt64T(self.usable) + bs: t.CSizeT = _block_size_at_order(i) + if offset % bs != 0: + return 3 + cur = t.CVoid(c.Deref(t.CUInt64T(cur, t.CPtr)), t.CPtr) + return 0 diff --git a/includes/string.py b/includes/string.py index 678191b..37c9321 100644 --- a/includes/string.py +++ b/includes/string.py @@ -39,10 +39,9 @@ def strncpy(dest: str, src: str, n: t.CSizeT) -> str: dest += 1 i += 1 # 填充剩余空间为 '\0' - while i < n: + for i in range(n): dest[0] = 0 dest += 1 - i += 1 return original_dest @@ -351,4 +350,16 @@ def split(s: str, delim: str, result: t.CArray[str]) -> int: start[0] = '\0' start += 1 result[count] = None # 结尾标记 - return count \ No newline at end of file + return count + + +ascii_lowercase: str = "abcdefghijklmnopqrstuvwxyz" +ascii_uppercase: str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" +ascii_letters: str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" + +digits: str = "0123456789" +hexdigits: str = "0123456789abcdefABCDEF" +octdigits: str = "01234567" +punctuation: str = "!\"#$%&'()*+,-./:;<=>?@[]^_`{|}~" +whitespace: str = " \t\n\r\f\v" +printable: str = "01234567890123456789abcdefABCDEF01234567!\"#$%&'()*+,-./:;<=>?@[]^_`{|}~ \t\n\r\f\v" diff --git a/includes/testcheck.py b/includes/testcheck.py index 629cc83..bd4c028 100644 --- a/includes/testcheck.py +++ b/includes/testcheck.py @@ -20,11 +20,13 @@ def begin(name: str): SetConsoleOutputCP(CP_UTF8) SetConsoleCP(CP_UTF8) stdio.printf("=== %s ===\n\n", name) + stdio.fflush(None) def section(name: str): """打印分节标题""" stdio.printf("--- %s ---\n", name) + stdio.fflush(None) def ok(msg: str): @@ -32,6 +34,7 @@ def ok(msg: str): global _pass_count _pass_count += 1 stdio.printf("PASS: %s\n", msg) + stdio.fflush(None) def fail(msg: str): @@ -39,6 +42,7 @@ def fail(msg: str): global _fail_count _fail_count += 1 stdio.printf("FAIL: %s\n", msg) + stdio.fflush(None) def check(cond: t.CInt, ok_msg: str, fail_msg: str): @@ -52,6 +56,7 @@ def check(cond: t.CInt, ok_msg: str, fail_msg: str): def info(msg: str): """打印信息消息(不计入 PASS/FAIL)""" stdio.printf("%s\n", msg) + stdio.fflush(None) def end() -> t.CInt: @@ -61,6 +66,7 @@ def end() -> t.CInt: _total_fail += _fail_count stdio.printf("\n--- Summary ---\n") stdio.printf("PASS: %d, FAIL: %d\n", _pass_count, _fail_count) + stdio.fflush(None) return _fail_count @@ -68,4 +74,5 @@ def summary() -> t.CInt: """打印所有套件的总计汇总,返回总失败数""" stdio.printf("\n=== Total Summary ===\n") stdio.printf("Total PASS: %d, Total FAIL: %d\n", _total_pass, _total_fail) + stdio.fflush(None) return _total_fail diff --git a/includes/vector.py b/includes/vector.py index 62dd751..e32a74b 100644 --- a/includes/vector.py +++ b/includes/vector.py @@ -31,9 +31,8 @@ class Vector[T](): if self.pool == None: return new_capacity: t.CSizeT = self.capacity * 2 if new_capacity == 0: new_capacity = 4 - old_size: t.CSizeT = self.capacity * self.elem_size new_size: t.CSizeT = new_capacity * self.elem_size - new_data: t.CVoid | t.CPtr = self.pool.realloc(self.data, old_size, new_size) + new_data: t.CVoid | t.CPtr = self.pool.realloc(self.data, new_size) if new_data == None: return self.data = new_data self.capacity = new_capacity diff --git a/lib/Projectrans/DeclarationGenerator.py b/lib/Projectrans/DeclarationGenerator.py index fb7f1da..e618ea0 100644 --- a/lib/Projectrans/DeclarationGenerator.py +++ b/lib/Projectrans/DeclarationGenerator.py @@ -476,6 +476,7 @@ class DeclarationGenerator: seen_member_names: set[str] = set() for base in node.bases: base_name: str | None = None + type_args: list[str] = [] if isinstance(base, ast.Attribute): base_name = base.attr elif isinstance(base, ast.Name): @@ -485,10 +486,19 @@ class DeclarationGenerator: base_name = base.value.attr elif isinstance(base.value, ast.Name): base_name = base.value.id + slice_node: ast.AST = base.slice + if isinstance(slice_node, ast.Name): + type_args.append(slice_node.id) + elif isinstance(slice_node, ast.Tuple): + for elt in slice_node.elts: + if isinstance(elt, ast.Name): + type_args.append(elt.id) if base_name and not self._is_marker_base(base_name): base_member_types: list[str] base_seen: set[str] base_member_types, base_seen = self._get_inherited_members(base_name) + if type_args: + base_member_types = self._specialize_member_types(base_member_types, type_args) for mt in base_member_types: member_types.append(mt) seen_member_names.update(base_seen) @@ -632,8 +642,124 @@ class DeclarationGenerator: decls.append(f'declare {ret_type} @"{method_name}"({param_str})') else: decls.append(f'declare {ret_type} @{method_name}({param_str})') + # 为继承但未覆写的方法生成包装声明 + # 这些声明让跨模块调用能正确解析子类包装函数的签名, + # 避免 stub 缺失导致默认 i32 返回类型 → 64 位指针截断 + decls.extend(self._generate_inherited_method_decls(node, class_name, struct_type_name)) return decls + def _generate_inherited_method_decls(self, node: ast.ClassDef, child_class_name: str, child_struct_type: str) -> list[str]: + """为继承但未覆写的方法生成包装声明 + + 在 Phase 1 stub 中声明子类继承方法的签名(与父类相同,但 self 参数为子类类型)。 + 这样测试模块翻译时能从 temp stub 中获取正确的返回类型, + 避免 Phase 2 includes 翻译滞后导致跨模块调用使用默认 i32 返回类型。 + """ + decls: list[str] = [] + # 收集子类自身定义的方法名(这些不需要生成包装,子类有自己的实现) + seen_method_names: set[str] = set() + for item in node.body: + if isinstance(item, ast.FunctionDef): + seen_method_names.add(item.name) + + # 沿继承链收集父类方法,近祖先优先 + for base in node.bases: + base_name: str | None = None + if isinstance(base, ast.Attribute): + base_name = base.attr + elif isinstance(base, ast.Name): + base_name = base.id + elif isinstance(base, ast.Subscript): + if isinstance(base.value, ast.Attribute): + base_name = base.value.attr + elif isinstance(base.value, ast.Name): + base_name = base.value.id + if not base_name or self._is_marker_base(base_name): + continue + self._CollectInheritedWrapperDecls( + base_name, child_class_name, child_struct_type, + seen_method_names, decls) + return decls + + def _CollectInheritedWrapperDecls( + self, parent_name: str, child_class_name: str, child_struct_type: str, + seen_method_names: set[str], decls: list[str]) -> None: + """递归收集父类及其祖先的方法,为未覆写的方法生成包装声明""" + # 查找父类节点:先在当前 .pyi 中查找,找不到则查跨模块类定义映射 + parent_node: ast.ClassDef | None = None + for n in ast.iter_child_nodes(self._pyi_tree): + if isinstance(n, ast.ClassDef) and n.name == parent_name: + parent_node = n + break + if parent_node is None: + parent_node = self._cross_module_class_defs.get(parent_name) + if parent_node is None: + return + + # 为父类的每个方法生成包装声明 + for item in parent_node.body: + if isinstance(item, ast.FunctionDef): + if hasattr(item, 'type_params') and item.type_params: + continue + method_name: str = item.name + # __before_init__ 只在自身类生成,不生成继承包装 + if method_name == '__before_init__': + continue + # 跳过子类已覆写的方法,以及已处理的祖先方法 + if method_name in seen_method_names: + continue + seen_method_names.add(method_name) + + # 构建包装方法名:{module_sha1}.{child_class}.{method_name} + wrapper_name: str = f'{child_class_name}.{method_name}' + if self.module_sha1: + wrapper_name = f"{self.module_sha1}.{wrapper_name}" + + # 解析返回类型(与父类方法相同) + ret_type: str = self._get_type_str(item.returns) if item.returns else 'void' + if not ret_type: + ret_type = 'void' + elif ret_type == 'i8*': + if item.returns is None: + ret_type = 'void' + + # 构建参数列表:第一个参数(self)替换为子类类型,其余与父类相同 + params: list[str] = [] + for arg_idx, arg in enumerate(item.args.args): + arg_type: str + if arg_idx == 0 and arg.arg == 'self': + arg_type = f'{child_struct_type}*' + else: + if arg.annotation: + arg_type = self._get_type_str(arg.annotation) + else: + arg_type = 'i8*' + arg_type = self._decay_array_to_ptr(arg_type) + params.append(arg_type) + + param_str: str = ', '.join(params) if params else '' + if wrapper_name[0].isdigit(): + decls.append(f'declare {ret_type} @"{wrapper_name}"({param_str})') + else: + decls.append(f'declare {ret_type} @{wrapper_name}({param_str})') + + # 递归处理祖先类 + for base in parent_node.bases: + base_name: str | None = None + if isinstance(base, ast.Attribute): + base_name = base.attr + elif isinstance(base, ast.Name): + base_name = base.id + elif isinstance(base, ast.Subscript): + if isinstance(base.value, ast.Attribute): + base_name = base.value.attr + elif isinstance(base.value, ast.Name): + base_name = base.value.id + if base_name and not self._is_marker_base(base_name): + self._CollectInheritedWrapperDecls( + base_name, child_class_name, child_struct_type, + seen_method_names, decls) + def _get_inherited_members(self, base_name: str) -> tuple[list[str], set[str]]: member_types: list[str] = [] seen_names: set[str] = set() @@ -675,6 +801,36 @@ class DeclarationGenerator: seen_names.add(stmt.targets[0].attr) return member_types, seen_names + def _specialize_member_types(self, member_types: list[str], type_args: list[str]) -> list[str]: + """将基类成员类型中的泛型参数 T 替换为具体类型参数 + + 处理泛型基类继承(如 GSListNode[BasicBlock])时,基类 _get_inherited_members + 返回的成员类型中会包含未特化的 T 引用(形式为 %"SHA1.T"*)。 + + 替换策略:使用 i8*(不透明指针)代替 T*,而非具体类型指针。 + 原因:跨模块场景中,具体类型指针的 SHA1 前缀可能与导入模块不一致, + 导致 TransPyC 类型转换失败。i8* 作为通用指针类型,可安全赋值给 + 任何 Class | t.CPtr 注解的变量,运行时行为与 T* 相同(都是指针)。 + + Args: + member_types: 基类成员类型字符串列表 + type_args: 类型参数名列表(如 ['BasicBlock']) + + Returns: + 特化后的成员类型字符串列表 + """ + if not type_args: + return member_types + result: list[str] = [] + for mt in member_types: + new_mt: str = mt + # 将 %"SHA1.T"* 替换为 i8*(不透明指针) + new_mt = re.sub(r'%"[a-f0-9]+\.T"\*', 'i8*', new_mt) + # 将 %"SHA1.T"(非指针,如 embedded struct)替换为 i8* + new_mt = re.sub(r'%"[a-f0-9]+\.T"', 'i8*', new_mt) + result.append(new_mt) + return result + def _llvm_type_size_str(self, type_str: str) -> int: """估算 LLVM 类型字符串的大小(字节),用于 REnum 变体大小比较 @@ -839,6 +995,18 @@ class DeclarationGenerator: base: str = self._get_type_str(annotation.value) if base == 'i8*' and isinstance(annotation.slice, ast.Constant): return f'[{self._get_const_int(annotation.slice)} x i8]' + # 处理 t.CPtr[Type] 语法(指向 Type 的指针) + # 例如: t.CPtr[t.CPtr] -> i8** (void**), t.CPtr[t.CInt] -> i32* (int*) + # t.CPtr[t.CPtr[t.CInt]] -> i32** (int**) + ValueIsCPtr: bool = ( + (isinstance(annotation.value, ast.Attribute) and annotation.value.attr == 'CPtr') + or (isinstance(annotation.value, ast.Name) and annotation.value.id == 'CPtr') + ) + if ValueIsCPtr and isinstance(annotation.slice, (ast.Attribute, ast.Name, ast.Subscript)): + slice_type: str = self._get_type_str(annotation.slice, embedded=True) + if slice_type and slice_type != 'void': + return f'{slice_type}*' + return 'i8*' if isinstance(annotation.slice, ast.Constant) and isinstance(annotation.slice.value, int): return f'[{annotation.slice.value} x {base}]' # 处理 t.CArray[elem_type, count] 注解 → [count x elem_type] diff --git a/lib/core/Handles/HandlesClassDef.py b/lib/core/Handles/HandlesClassDef.py index 5d58f21..349a67e 100644 --- a/lib/core/Handles/HandlesClassDef.py +++ b/lib/core/Handles/HandlesClassDef.py @@ -537,12 +537,32 @@ class ClassHandle(BaseHandle): Gen.class_members[ClassName] = inherited + Gen.class_members[ClassName] if ParentClass in Gen.class_methods: parent_methods: list = list(Gen.class_methods[ParentClass]) + # 构建子类已有方法映射(方法短名 -> 方法全名) + child_method_map: dict[str, str] = {} + for m in Gen.class_methods[ClassName]: + method_name: str = m.split('.')[-1] if '.' in m else m + child_method_map[method_name] = m + # 父类方法在前(保证 vtable 布局一致性,子类多态分派索引正确), + # 子类新增方法在后。子类覆盖的方法放在父类方法的位置(用子类实现)。 + new_methods: list = [] + covered_names: set[str] = set() for pm in parent_methods: method_name: str = pm.split('.')[-1] if '.' in pm else pm - child_method: str = f"{ClassName}.{method_name}" - if child_method not in Gen.class_methods[ClassName]: - Gen.class_methods[ClassName].append(child_method) + if method_name in child_method_map: + # 子类覆盖了父类方法 — 用子类的实现,放在父类的位置 + new_methods.append(child_method_map[method_name]) + covered_names.add(method_name) + else: + # 父类独有方法 — 子类未覆盖,注册子类包装器 + child_method: str = f"{ClassName}.{method_name}" + new_methods.append(child_method) Gen.register_method(ClassName, child_method) + # 添加子类新增方法(不在父类中的) + for m in Gen.class_methods[ClassName]: + method_name: str = m.split('.')[-1] if '.' in m else m + if method_name not in covered_names: + new_methods.append(m) + Gen.class_methods[ClassName] = new_methods # 提取首个裸字符串字面量作为结构体 __doc__ docstring if (Node.body and isinstance(Node.body[0], ast.Expr) and isinstance(Node.body[0].value, ast.Constant) @@ -666,7 +686,19 @@ class ClassHandle(BaseHandle): 例如 Label 继承 Widget.place,生成 Label.place 函数, 内部将 self 从 Label* bitcast 为 Widget*,然后调用 Widget.place。 """ - methods: list = Gen.class_methods.get(ClassName, []) + # 收集本类方法 + 沿继承链收集父类方法名 + # 原代码只遍历 class_methods[ClassName],遗漏父类独有方法(如 __enter__), + # 导致子类调用继承的方法时链接失败(undefined reference) + methods: list = list(Gen.class_methods.get(ClassName, [])) + p: str | None = Gen.class_parent.get(ClassName) if hasattr(Gen, 'class_parent') else None + while p: + parent_methods: list = Gen.class_methods.get(p, []) + for pm in parent_methods: + pm_short: str = pm.split('.')[-1] if '.' in pm else pm + # 避免重复:如果子类已覆写同名方法,不添加 + if not any(m.split('.')[-1] == pm_short for m in methods): + methods.append(pm) + p = Gen.class_parent.get(p) if not methods: return if ClassName not in Gen.structs: diff --git a/lib/core/Handles/HandlesExprBuiltin.py b/lib/core/Handles/HandlesExprBuiltin.py index 9125f36..ae09c61 100644 --- a/lib/core/Handles/HandlesExprBuiltin.py +++ b/lib/core/Handles/HandlesExprBuiltin.py @@ -792,7 +792,10 @@ class ExprBuiltinHandle(BaseHandle): elif dst.type.width > 64: dst = Gen.builder.trunc(dst, ir.IntType(64), name="trunc_memset_dst") dst = Gen.builder.inttoptr(dst, ir.PointerType(ir.IntType(8)), name="memset_dst_int2ptr") - if isinstance(val.type, ir.IntType) and val.type.width != 32: + if isinstance(val.type, ir.PointerType): + # 0 字面量被推断为 null 指针(i8*),memset 第二参数需要 i32 + val = ir.Constant(ir.IntType(32), 0) + elif isinstance(val.type, ir.IntType) and val.type.width != 32: if val.type.width < 32: val = Gen.builder.zext(val, ir.IntType(32), name="zext_memset_val") else: diff --git a/lib/core/Handles/HandlesExprCall.py b/lib/core/Handles/HandlesExprCall.py index e0fdd3c..f3f05ea 100644 --- a/lib/core/Handles/HandlesExprCall.py +++ b/lib/core/Handles/HandlesExprCall.py @@ -1872,69 +1872,180 @@ class ExprCallHandle(BaseHandle): self._check_eh_return(result, FuncName, Gen, called_func=func) return result + @staticmethod + def _has_cvtable_decorator(node: ast.ClassDef) -> bool: + """检查 ClassDef 是否有 @t.CVTable 装饰器(或 @CVTable)""" + for decorator in node.decorator_list: + if isinstance(decorator, ast.Attribute) and getattr(decorator.value, 'id', None) == 't' and decorator.attr == 'CVTable': + return True + if isinstance(decorator, ast.Call): + inner = decorator.func + if isinstance(inner, ast.Attribute) and getattr(inner.value, 'id', None) == 't' and inner.attr == 'CVTable': + return True + if isinstance(inner, ast.Name) and inner.id == 'CVTable': + return True + if isinstance(decorator, ast.Name) and decorator.id == 'CVTable': + return True + return False + + @staticmethod + def _has_novtable_decorator(node: ast.ClassDef) -> bool: + """检查 ClassDef 是否有 @t.NoVTable 装饰器""" + for decorator in node.decorator_list: + if isinstance(decorator, ast.Attribute) and getattr(decorator.value, 'id', None) == 't' and decorator.attr == 'NoVTable': + return True + if isinstance(decorator, ast.Name) and decorator.id == 'NoVTable': + return True + return False + def _try_register_vtable_ondemand(self, ClassName: str, class_sha1: str, Gen: "LlvmGeneratorMixin") -> None: """按需 vtable 注册:从 .pyi stub 检查 @t.CVTable 并注册到 vtable 集合。 - 当 vcall 决策点发现 ClassName 不在 vtable 集合中时调用。 - 读取 temp/{sha1}.pyi 文件,查找 ClassName 的 ClassDef, - 检查 @t.CVTable 装饰器,注册 vtable 和方法列表。 + 沿继承链递归收集方法,保证 vtable 布局与 prescan 的 _EmitClassLlvm 一致: + - 基类方法在前(固定索引,保证多态分派正确) + - 子类新增方法在后 + - 子类覆盖的方法放在父类的位置(用子类实现) + + 与 prescan 的 _resolve_class_flags 逻辑一致: + - 类自身有 @t.CVTable → 注册 + - 类自身有 @t.NoVTable → 不注册 + - 类继承 @t.CVTable 基类(且无 @t.NoVTable)→ 注册(自动启用 CVTable) """ try: import_handler = self.Trans.ImportHandler project_root = import_handler._find_project_root() - pyi_path = os.path.join(project_root, 'temp', f'{class_sha1}.pyi') - if not os.path.isfile(pyi_path): + struct_sha1_map = getattr(Gen, '_struct_sha1_map', {}) + + # 缓存已读取的 .pyi 文件(sha1 -> class_map) + pyi_cache: dict[str, dict[str, ast.ClassDef]] = {} + + def load_pyi(sha1: str) -> dict[str, ast.ClassDef] | None: + if sha1 in pyi_cache: + return pyi_cache[sha1] + pyi_path = os.path.join(project_root, 'temp', f'{sha1}.pyi') + if not os.path.isfile(pyi_path): + return None + with open(pyi_path, 'r', encoding='utf-8') as f: + pyi_code = f.read() + tree = ast.parse(pyi_code) + cmap: dict[str, ast.ClassDef] = {} + for node in ast.iter_child_nodes(tree): + if isinstance(node, ast.ClassDef): + cmap[node.name] = node + pyi_cache[sha1] = cmap + return cmap + + def collect_class_methods(class_name: str, sha1: str, visited: set[str]) -> tuple[list[str], bool, bool, str | None]: + """递归收集类的方法列表(基类方法在前,子类方法在后)。 + + Returns: + (methods, is_cvtable, is_novtable, parent_name) + """ + if class_name in visited: + return ([], False, False, None) + visited.add(class_name) + + class_map = load_pyi(sha1) + if class_map is None: + return ([], False, False, None) + + target_node = class_map.get(class_name) + if target_node is None: + return ([], False, False, None) + + is_cvtable = self._has_cvtable_decorator(target_node) + is_novtable = self._has_novtable_decorator(target_node) + + # 收集自身方法 + self_methods: list[str] = [] + for item in target_node.body: + if isinstance(item, ast.FunctionDef): + method_name = item.name + if method_name in ('__new__', '__init__', '__before_init__'): + continue + if method_name == '__call__': + self_methods.append(f"{class_name}.__call__") + else: + self_methods.append(f"{class_name}.{method_name}") + + # 收集基类方法 + parent_methods: list[str] = [] + parent_name: str | None = None + for base in target_node.bases: + base_name: str | None = None + if hasattr(base, 'id'): + base_name = base.id + elif hasattr(base, 'attr'): + base_name = base.attr + if not base_name or base_name in ('Object', 'CVTable', 'NoVTable', 'CStruct', 'CUnion', 'CEnum', 'REnum', 'Exception', 'Enum'): + continue + if parent_name is None: + parent_name = base_name + + # 检查同文件内的基类 + base_node = class_map.get(base_name) + if base_node is not None: + base_methods, base_cvtable, base_novtable, _ = collect_class_methods(base_name, sha1, visited) + if base_novtable: + pass # 父类是 NoVTable,不继承 vtable + elif base_cvtable: + is_cvtable = True + parent_methods.extend(base_methods) + else: + # 跨模块基类 — 查找基类的 sha1 + base_sha1 = struct_sha1_map.get(base_name) + if base_sha1: + base_methods, base_cvtable, base_novtable, _ = collect_class_methods(base_name, base_sha1, visited) + if base_novtable: + pass + elif base_cvtable: + is_cvtable = True + parent_methods.extend(base_methods) + else: + # 无法找到基类的 sha1 + if base_name in Gen._cross_module_novtable: + pass # 父类是 NoVTable,不继承 vtable + + # 合并方法列表:基类方法在前,子类方法在后 + # 子类覆盖的方法放在父类的位置 + child_method_map: dict[str, str] = {} + for m in self_methods: + mn = m.split('.')[-1] if '.' in m else m + child_method_map[mn] = m + + merged: list[str] = [] + covered_names: set[str] = set() + for pm in parent_methods: + mn = pm.split('.')[-1] if '.' in pm else pm + if mn in child_method_map: + merged.append(child_method_map[mn]) + covered_names.add(mn) + else: + # 父类独有方法 — 用子类名(虚分派时函数查找会沿继承链回退) + merged.append(f"{class_name}.{mn}") + + for m in self_methods: + mn = m.split('.')[-1] if '.' in m else m + if mn not in covered_names: + merged.append(m) + + return (merged, is_cvtable, is_novtable, parent_name) + + methods, is_cvtable, is_novtable, parent_name = collect_class_methods(ClassName, class_sha1, set()) + + if is_novtable: return - with open(pyi_path, 'r', encoding='utf-8') as f: - pyi_code = f.read() - pyi_tree = ast.parse(pyi_code) - # 查找目标 ClassDef - target_node: ast.ClassDef | None = None - for node in ast.iter_child_nodes(pyi_tree): - if isinstance(node, ast.ClassDef) and node.name == ClassName: - target_node = node - break - if target_node is None: - return - # 检查 @t.CVTable 装饰器 - is_cvtable: bool = False - for decorator in target_node.decorator_list: - if isinstance(decorator, ast.Attribute) and getattr(decorator.value, 'id', None) == 't' and decorator.attr == 'CVTable': - is_cvtable = True - break - if isinstance(decorator, ast.Call): - inner = decorator.func - if isinstance(inner, ast.Attribute) and getattr(inner.value, 'id', None) == 't' and inner.attr == 'CVTable': - is_cvtable = True - break - if isinstance(inner, ast.Name) and inner.id == 'CVTable': - is_cvtable = True - break - if isinstance(decorator, ast.Name) and decorator.id == 'CVTable': - is_cvtable = True - break if not is_cvtable: return + # 注册到 vtable 集合(共享集合) Gen._cross_module_vtable_classes.add(ClassName) Gen.class_vtable.add(ClassName) - # 预注册方法列表(与 prescan 逻辑一致) - if ClassName not in Gen.class_methods: - Gen.class_methods[ClassName] = [] - for item in target_node.body: - if isinstance(item, ast.FunctionDef): - method_name = item.name - # 构造函数不放入 vtable(避免子类与基类 vtable 大小不一致破坏多态分派) - if method_name in ('__new__', '__init__', '__before_init__'): - continue - if method_name == '__init__': - full_name = f"{ClassName}.__init__" - elif method_name == '__call__': - full_name = f"{ClassName}.__call__" - else: - full_name = f"{ClassName}.{method_name}" - if full_name not in Gen.class_methods[ClassName]: - Gen.class_methods[ClassName].append(full_name) + # 设置方法列表(与 prescan 逻辑一致:基类方法在前) + Gen.class_methods[ClassName] = methods + # 设置 class_parent(用于虚分派时的函数查找回退) + if parent_name and ClassName not in Gen.class_parent: + Gen.class_parent[ClassName] = parent_name except Exception: pass diff --git a/lib/core/Handles/HandlesFunctions.py b/lib/core/Handles/HandlesFunctions.py index b64f19c..154e15e 100644 --- a/lib/core/Handles/HandlesFunctions.py +++ b/lib/core/Handles/HandlesFunctions.py @@ -1601,6 +1601,15 @@ class FunctionHandle(BaseHandle): } if IsExternFunc or IsStateFunc: return + # 治本修复:如果函数已经有 body(blocks 不为空),跳过重复编译。 + # 否则会导致同一函数被追加第二个 entry block(llvmlite 自动重命名为 entry.1), + # 产生非法 IR:两个 entry block + 第二个 block 无前驱成为死代码。 + # 触发场景:泛型特化路径 _EmitGenericSpecialization 先调用 _EmitFunctionForwardDeclLlvm + # 再调用 _EmitFunctionLlvm,若特化在多个调用点被重复触发(如 list[str] 在 split/upper 等多处使用), + # 同一 MangledName 会进入此函数两次,第二次会重复追加 entry block。 + existing_blocks: list = getattr(func, 'blocks', []) + if existing_blocks: + return func EntryBlock = func.append_basic_block(name="entry") Gen.builder = ir.IRBuilder(EntryBlock) Gen.func = func @@ -1612,6 +1621,15 @@ class FunctionHandle(BaseHandle): # 保存当前的 var_type_info,以便函数结束时恢复 saved_var_type_info = Gen.var_type_info.copy() saved_var_type_assignments = Gen.var_type_assignments.copy() + # 治本修复:保存并清空 _local_heap_ptrs / _var_to_heap_ptr。 + # 当 with 上下文中的代码(如 s1.split(','))触发内联编译 list[str].__new__ 时, + # 若不清空,__new__ 方法会继承外层 with 的 _local_heap_ptrs(含 %call_enter 条目), + # 方法结束时 _emit_local_heap_frees 会尝试 bitcast/free %call_enter, + # 但该值在 __new__ 作用域中不存在 → llc 报错 'use of undefined value'。 + saved_local_heap_ptrs = list(Gen._local_heap_ptrs) + saved_var_to_heap_ptr = dict(Gen._var_to_heap_ptr) + Gen._local_heap_ptrs = [] + Gen._var_to_heap_ptr = {} # 函数内部定义的变量会在赋值时添加到 var_type_info 中 # 这样函数内部定义的元类型变量(如 a = t.CInt32T)就能被正确处理 for stmt in Node.body: @@ -1810,8 +1828,9 @@ class FunctionHandle(BaseHandle): Gen.var_type_info = saved_var_type_info Gen.var_type_assignments = saved_var_type_assignments Gen._stop_iter_flag_param = None - Gen._local_heap_ptrs = [] - Gen._var_to_heap_ptr = {} + # 恢复外层作用域的 _local_heap_ptrs / _var_to_heap_ptr + Gen._local_heap_ptrs = saved_local_heap_ptrs + Gen._var_to_heap_ptr = saved_var_to_heap_ptr Gen._variadic_info = None self.Trans._CurrentCpythonObjectClass = saved_cpython_class self.Trans.CurrentCReturnTypes = None diff --git a/lib/core/Handles/HandlesImports.py b/lib/core/Handles/HandlesImports.py index 55b17fd..5f21505 100644 --- a/lib/core/Handles/HandlesImports.py +++ b/lib/core/Handles/HandlesImports.py @@ -375,10 +375,22 @@ class ImportHandle(BaseHandle): SearchExtensions = ['.pyi', '.py'] sub_path_base = os.path.join(parent_dir, node.module) found_sub = False + # 治本修复:用包目录名(如 'json')而非 register_module_name(当前编译模块名,如 '_dict')。 + # 当 _dict.py 导入 json 包,递归处理 json/__init__.py 中的 `from .__parser import parse` 时, + # register_module_name='_dict' 会导致 actual_module='_dict.__parser', + # 使 _mangle_func_name 查找失败回退到 self.module_sha1,生成错误的 mangled name。 + # 包名推导优先级: + # 1. module_name(如果它在 ModuleSha1Map 中,说明是已注册的包名,如 'json') + # — 处理 sha1 命名的 .pyi 文件(parent_dir 是 temp 目录时) + # 2. os.path.basename(parent_dir)(原始路径推导,如 'json') + if module_name and module_name in Gen.ModuleSha1Map: + pkg_basename = module_name + else: + pkg_basename = os.path.basename(parent_dir) for ext in SearchExtensions: candidate = sub_path_base + ext if os.path.isfile(candidate): - actual_module = f"{register_module_name}.{node.module}" if register_module_name else node.module + actual_module = f"{pkg_basename}.{node.module}" if pkg_basename else node.module self._RegisterSubModuleSha1(candidate, actual_module, node.module, Gen) if not getattr(self.Trans, '_ImportedModules', None): self.Trans._ImportedModules = set() @@ -392,7 +404,7 @@ class ImportHandle(BaseHandle): break # SHA1 map 回退 if not found_sub: - actual_module = f"{register_module_name}.{node.module}" if register_module_name else node.module + actual_module = f"{pkg_basename}.{node.module}" if pkg_basename else node.module ModuleSha1Map = getattr(Gen, 'ModuleSha1Map', {}) target_sha1 = ModuleSha1Map.get(actual_module) or ModuleSha1Map.get(node.module) if target_sha1: @@ -413,12 +425,18 @@ class ImportHandle(BaseHandle): SearchExtensions = ['.pyi', '.py'] # Load __init__.py to make package-level names available self._LoadPackageInitForRelativeImport(mod_dir, Gen, register_module_name) + # 治本修复:用包目录名(如 'json')而非 register_module_name(当前编译模块名,如 '_dict')。 + # 同 if node.module 分支的修复逻辑。 + if module_name and module_name in Gen.ModuleSha1Map: + pkg_basename = module_name + else: + pkg_basename = os.path.basename(mod_dir) for alias in node.names: found_alias = False for ext in SearchExtensions: sub_path = os.path.join(mod_dir, alias.name + ext) if os.path.isfile(sub_path): - sub_ModulePath = f"{register_module_name}.{alias.name}" if register_module_name else alias.name + sub_ModulePath = f"{pkg_basename}.{alias.name}" if pkg_basename else alias.name if not getattr(self.Trans, '_ImportedModules', None): self.Trans._ImportedModules = set() self.Trans._ImportedModules.add(sub_ModulePath) @@ -430,7 +448,7 @@ class ImportHandle(BaseHandle): break # SHA1 map 回退 if not found_alias: - sub_ModulePath = f"{register_module_name}.{alias.name}" if register_module_name else alias.name + sub_ModulePath = f"{pkg_basename}.{alias.name}" if pkg_basename else alias.name ModuleSha1Map = getattr(Gen, 'ModuleSha1Map', {}) target_sha1 = ModuleSha1Map.get(sub_ModulePath) or ModuleSha1Map.get(alias.name) if target_sha1: @@ -1538,6 +1556,23 @@ class ImportHandle(BaseHandle): Gen.class_member_bitoffsets[ClassName] = {} if ClassName not in Gen.class_methods: Gen.class_methods[ClassName] = [] + # 先计算 source_sha1,确保首次 _TryLoadStructFromStub 调用就能使用正确的 sha1 + # 优先使用传入的 source_sha1(来自 _TryLoadClassMembersFromPyi 的直接调用, + # 当前模块未直接导入定义模块时 module_name 查找会失败,需依赖传入的 source_sha1) + if not source_sha1: + if actual_module_name and hasattr(Gen, 'ModuleSha1Map') and actual_module_name in Gen.ModuleSha1Map: + source_sha1 = Gen.ModuleSha1Map[actual_module_name] + elif module_name and hasattr(Gen, 'ModuleSha1Map') and module_name in Gen.ModuleSha1Map: + source_sha1 = Gen.ModuleSha1Map[module_name] + # 提前注册 struct:使用导入的 source_sha1 创建 opaque struct, + # 避免后续 _TryLoadStructFromStub 触发嵌套编译时,StructGen 用本地 sha1 + # 创建缺少基类字段(如 GSListNode.Next)的本地类型定义。 + Gen._get_or_create_struct(ClassName, source_sha1=source_sha1, packed=IsPacked) + # Track which module defines this class (for cross-module name mangling) + if source_sha1: + if not hasattr(Gen, 'class_sha1_map'): + Gen.class_sha1_map = {} + Gen.class_sha1_map[ClassName] = source_sha1 # --- 预扫描预注册:修复编译时序问题 --- # _TryLoadStructFromStub → _parse_llvm_type → _specialize_generic_class # 可能触发 list[str].__new__ 编译(其中调用 pool.alloc(48)), @@ -1560,24 +1595,10 @@ class ImportHandle(BaseHandle): if _has_methods_prescan and IsCVTable: Gen._cross_module_vtable_classes.add(ClassName) Gen.class_vtable.add(ClassName) - # 先计算 source_sha1,确保首次 _TryLoadStructFromStub 调用就能使用正确的 sha1 - # 优先使用传入的 source_sha1(来自 _TryLoadClassMembersFromPyi 的直接调用, - # 当前模块未直接导入定义模块时 module_name 查找会失败,需依赖传入的 source_sha1) - if not source_sha1: - if actual_module_name and hasattr(Gen, 'ModuleSha1Map') and actual_module_name in Gen.ModuleSha1Map: - source_sha1 = Gen.ModuleSha1Map[actual_module_name] - elif module_name and hasattr(Gen, 'ModuleSha1Map') and module_name in Gen.ModuleSha1Map: - source_sha1 = Gen.ModuleSha1Map[module_name] # 首次加载就传入 source_sha1,避免从其他模块的 output stub 中加载到错误的结构体定义 # (如 HandlesExprCall.py 的 output stub 中 43f27dda2e5b5923.Value 只有 5 字段, # 而正确的 aaf8ba449d1e64c1.Value 有 6 字段) self._TryLoadStructFromStub(ClassName, Gen, source_sha1=source_sha1) - # Track which module defines this class (for cross-module name mangling) - if source_sha1: - if not hasattr(Gen, 'class_sha1_map'): - Gen.class_sha1_map = {} - Gen.class_sha1_map[ClassName] = source_sha1 - Gen._get_or_create_struct(ClassName, source_sha1=source_sha1, packed=IsPacked) # 如果 _get_or_create_struct 因 sha1 冲突创建了新的 opaque struct, # 需用 source_sha1 重新加载正确的 stub body。 if source_sha1: @@ -1727,11 +1748,32 @@ class ImportHandle(BaseHandle): # 直接从 AST 提取泛型基类名(如 GSListNode[Value] -> GSListNode), # 后续继承字段展平逻辑会从 .pyi 加载该基类的字段。 if isinstance(_base.value, ast.Name): - _base_name = _base.value.id + _base_short_name: str = _base.value.id elif isinstance(_base.value, ast.Attribute): - _base_name = _base.value.attr + _base_short_name: str = _base.value.attr else: continue + # 尝试手动构造特化名并检查是否已有特化 class_members。 + # 这解决了 _ResolveGenericSlice 失败但特化已通过其他路径 + # (如 _parse_llvm_type)触发的情况。特化 class_members 中 + # 的 T 已被正确替换为具体类型(如 BasicBlock),避免使用 + # 未特化的 GSListNode 导致 T* 占位类型残留。 + _slice_name: str | None = None + if isinstance(_base.slice, ast.Name): + _slice_name = _base.slice.id + elif isinstance(_base.slice, ast.Attribute): + _slice_name = _base.slice.attr + elif isinstance(_base.slice, ast.Subscript): + # 嵌套泛型(如 GSList[GSListNode[T]]),暂不处理 + pass + _manual_spec_name: str | None = None + if _slice_name is not None: + _manual_spec_name = f"{_base_short_name}[{_slice_name}]" + if _manual_spec_name is not None and _manual_spec_name in Gen.class_members: + # 特化 class_members 已存在,直接使用(T 已被替换) + _base_name = _manual_spec_name + else: + _base_name = _base_short_name else: continue if _base_name == ClassName: @@ -1960,6 +2002,17 @@ class ImportHandle(BaseHandle): st.set_body(*elem_types) if is_packed: Gen.class_packed.add(class_name) + # 同步设置短名 struct 的 body:当存在 sha1 冲突时,_get_or_create_struct + # 返回 full_key struct,但代码可能通过短名引用旧 struct(由 setup_from_symbol_table + # 早期创建的 opaque 占位符,使用本地 sha1 前缀)。需要同步设置短名 struct + # 的 body,确保 GEP 指令能正确访问字段(修复跨模块类型定义冲突导致的 + # 字段索引错位问题)。 + short_st = Gen.structs.get(class_name) + if short_st is not None and short_st is not st and isinstance(short_st, ir.IdentifiedStructType) and short_st.is_opaque: + try: + short_st.set_body(*elem_types) + except Exception: + pass # set_body 可能因已设置而失败,忽略 except Exception as _e: if _config_mode == "strict": raise @@ -2028,48 +2081,75 @@ class ImportHandle(BaseHandle): return self.Trans._BuildScalarConstantUnified(value_node, target_type, Gen) def _LookupStubFuncType(self, func_name: str, Gen: LlvmGeneratorMixin) -> ir.FunctionType | None: - """从 stub.ll 文件中查找指定函数的 LLVM 类型""" + """从 stub.ll 文件中查找指定函数的 LLVM 类型 + + 扫描 output/ 和 temp/ 两个目录的 .stub.ll 文件。 + 关键修复:output/(Phase 2 完整结果)必须覆盖 temp/(Phase 1 不完整结果), + 否则继承包装方法(在 Phase 2 的 _generate_inherited_method_wrappers 中生成) + 将无法被解析,导致跨模块调用使用默认 i32 返回类型 → 64 位指针截断。 + """ if not getattr(self, '_stub_func_cache', None): self._stub_func_cache = {} - + ProjectRoot = self._find_project_root() temp_dir = os.path.join(ProjectRoot, 'temp') - - if not os.path.isdir(temp_dir): + output_dir = os.path.join(ProjectRoot, 'output') + + # 文件数签名:检测 stub 新增(增量编译时 output 逐步填充完整签名) + output_count = sum(1 for f in os.listdir(output_dir) if f.endswith('.stub.ll')) if os.path.isdir(output_dir) else 0 + temp_count = sum(1 for f in os.listdir(temp_dir) if f.endswith('.stub.ll')) if os.path.isdir(temp_dir) else 0 + signature = (output_count, temp_count) + if getattr(self, '_stub_func_cache_signature', None) != signature or not self._stub_func_cache: + # 签名变化或缓存为空,重建缓存 + self._stub_func_cache = {} + self._stub_func_cache_signature = signature + + if not os.path.isdir(temp_dir) and not os.path.isdir(output_dir): return None - + if func_name not in self._stub_func_cache: - for filename in os.listdir(temp_dir): - if not filename.endswith('.stub.ll'): + # 先扫描 temp/(Phase 1,不完整签名),再扫描 output/(Phase 2,完整签名)覆盖之 + # 这样 output 中存在的继承包装方法会覆盖 temp 中的同名旧声明(若有), + # 也填补 temp 中缺失的函数声明 + for scan_dir in [temp_dir, output_dir]: + if not os.path.isdir(scan_dir): continue - - stub_path = os.path.join(temp_dir, filename) - source_sha1 = filename.replace('.stub.ll', '') - try: - with open(stub_path, 'r', encoding='utf-8') as f: - content = f.read() - - for line in content.splitlines(): - stripped = line.strip() - if not stripped.startswith('declare '): - continue - - name_match = stripped.split('@', 1) - if len(name_match) < 2: - continue - - stub_func_name = name_match[1].split('(', 1)[0].strip().strip('"') - - match = re.match(r'declare\s+(.+?)\s+@("?[\w.]+"?)\s*\((.*)\)$', stripped) - if match: - stub_ret = match.group(1).strip() - stub_params = match.group(3).strip() - self._stub_func_cache[stub_func_name] = (stub_ret, stub_params, '...' in stub_params, source_sha1) - except Exception as _e: - if _config_mode == "strict": - raise - _vlog().warning(f"处理导入失败: {_e}", "Exception") + for filename in os.listdir(scan_dir): + if not filename.endswith('.stub.ll'): + continue + + stub_path = os.path.join(scan_dir, filename) + # 预检查文件存在性:os.listdir 与 open 之间文件可能被并发写入删除 + if not os.path.isfile(stub_path): + continue + source_sha1 = filename.replace('.stub.ll', '') + try: + with open(stub_path, 'r', encoding='utf-8') as f: + content = f.read() + + for line in content.splitlines(): + stripped = line.strip() + if not stripped.startswith('declare '): + continue + + name_match = stripped.split('@', 1) + if len(name_match) < 2: + continue + + stub_func_name = name_match[1].split('(', 1)[0].strip().strip('"') + + match = re.match(r'declare\s+(.+?)\s+@("?[\w.]+"?)\s*\((.*)\)$', stripped) + if match: + stub_ret = match.group(1).strip() + stub_params = match.group(3).strip() + self._stub_func_cache[stub_func_name] = (stub_ret, stub_params, '...' in stub_params, source_sha1) + except FileNotFoundError: + continue + except Exception as _e: + if _config_mode == "strict": + raise + _vlog().warning(f"处理导入失败: {_e}", "Exception") if func_name not in self._stub_func_cache: return None @@ -2110,7 +2190,8 @@ class ImportHandle(BaseHandle): def _strip_llvm_param_name(self, param_str: str) -> str: """剥离 LLVM IR 参数字符串中的参数名,仅保留类型部分""" param_str = param_str.strip() - result = re.sub(r'\s+%[\w.]+\s*$', '', param_str) + # 支持 %name 和 %"quoted.name" 两种参数名形式 + result = re.sub(r'\s+%("[^"]*"|[\w.]+)\s*$', '', param_str) return result.strip() def _parse_simple_llvm_type(self, type_str: str) -> ir.Type | None: @@ -2573,6 +2654,12 @@ class ImportHandle(BaseHandle): existing = Gen.structs.get(struct_name) if existing is not None: return existing + # 尝试用 source_sha1 前缀的全名查找 + if actual_source_sha1: + full_key = f"{actual_source_sha1}.{struct_name}" + existing_full = Gen.structs.get(full_key) + if existing_full is not None: + return existing_full return None return ir.IntType(32) diff --git a/lib/core/Handles/HandlesTypeMerge.py b/lib/core/Handles/HandlesTypeMerge.py index a3c0d93..4af492f 100644 --- a/lib/core/Handles/HandlesTypeMerge.py +++ b/lib/core/Handles/HandlesTypeMerge.py @@ -856,9 +856,10 @@ class HandlesTypeMerge(BaseHandle): if TypeItem.OriginalType: Result.OriginalType = TypeItem.OriginalType continue - # 统计 t.CPtr(CVoid + PtrCount=1) + # 统计 t.CPtr(CVoid + PtrCount>0) + # 注意: t.CPtr[t.CPtr] 的 PtrCount=2(双重指针),需要完整累加 if TypeItem.PtrCount > 0 and TypeItem.BaseType and (TypeItem.BaseType is t.CVoid or isinstance(TypeItem.BaseType, t.CVoid)): - cptr_count += 1 + cptr_count += TypeItem.PtrCount # BaseType 保持不变,只计数,后续统一累加 if TypeItem.IsRenum and TypeItem.Name: Result.IsRenum = True diff --git a/lib/core/Handles/HandlesWith.py b/lib/core/Handles/HandlesWith.py index 91bfea4..6f5d06d 100644 --- a/lib/core/Handles/HandlesWith.py +++ b/lib/core/Handles/HandlesWith.py @@ -8,6 +8,28 @@ import llvmlite.ir as ir class WithHandle(BaseHandle): + def _ResolveInheritedMethod(self, ClassName: str, MethodName: str, Gen: "Translator.LlvmGen") -> tuple[str | None, "ir.Function | None"]: + """沿继承链查找方法,返回 (定义方法的类名, 函数对象) + + 当子类未覆写 __enter__/__exit__ 等方法时,沿 Gen.class_parent 链查找父类实现。 + _generate_inherited_method_wrappers 只为 class_methods[ClassName] 中的方法生成包装, + 不包括父类独有方法,因此 with 语句需要单独处理继承查找。 + """ + # 先检查子类自身 + FullName: str = f'{ClassName}.{MethodName}' + func = Gen._find_function(FullName) if hasattr(Gen, '_find_function') else Gen.functions.get(FullName) + if func: + return (ClassName, func) + # 沿继承链查找 + p: str | None = Gen.class_parent.get(ClassName) if hasattr(Gen, 'class_parent') else None + while p: + parent_full: str = f'{p}.{MethodName}' + parent_func = Gen._find_function(parent_full) if hasattr(Gen, '_find_function') else Gen.functions.get(parent_full) + if parent_func: + return (p, parent_func) + p = Gen.class_parent.get(p) + return (None, None) + def _HandleWithLlvm(self, Node: ast.With) -> None: Gen: "Translator.LlvmGen" = self.Trans.LlvmGen for item in Node.items: @@ -60,10 +82,16 @@ class WithHandle(BaseHandle): ctx_is_var_ref: bool = isinstance(context_expr, ast.Name) enter_result: ir.Value | None = None if ClassName: - EnterFuncName: str = f'{ClassName}.__enter__' - if EnterFuncName in Gen.functions: + # 沿继承链查找 __enter__(子类可能未覆写,使用父类实现) + enter_class, enter_func = self._ResolveInheritedMethod(ClassName, '__enter__', Gen) + if enter_func is not None: ctx_Loaded: ir.Value = Gen._load(ctx_alloca, name="__with_ctx") - enter_call: ir.CallInstr = Gen.builder.call(Gen.functions[EnterFuncName], [ctx_Loaded], name="call_enter") + # 父类方法需要 self 为父类指针类型,bitcast 子类指针 + if enter_class != ClassName and enter_class in Gen.structs: + parent_ptr_type = ir.PointerType(Gen.structs[enter_class]) + if ctx_Loaded.type != parent_ptr_type: + ctx_Loaded = Gen.builder.bitcast(ctx_Loaded, parent_ptr_type, name="cast_enter_self") + enter_call: ir.CallInstr = Gen.builder.call(enter_func, [ctx_Loaded], name="call_enter") enter_result = enter_call if isinstance(enter_call.type, ir.PointerType): pointee: ir.Type = enter_call.type.pointee @@ -139,10 +167,16 @@ class WithHandle(BaseHandle): if Gen._with_provides_stack: Gen._with_provides_stack.pop() if ClassName: - ExitFuncName: str = f'{ClassName}.__exit__' - if ExitFuncName in Gen.functions: + # 沿继承链查找 __exit__(子类可能未覆写,使用父类实现) + exit_class, exit_func = self._ResolveInheritedMethod(ClassName, '__exit__', Gen) + if exit_func is not None: ctx_Loaded: ir.Value = Gen._load(ctx_alloca, name="__with_ctx") - Gen.builder.call(Gen.functions[ExitFuncName], [ctx_Loaded], name="call_exit") + # 父类方法需要 self 为父类指针类型,bitcast 子类指针 + if exit_class != ClassName and exit_class in Gen.structs: + parent_ptr_type = ir.PointerType(Gen.structs[exit_class]) + if ctx_Loaded.type != parent_ptr_type: + ctx_Loaded = Gen.builder.bitcast(ctx_Loaded, parent_ptr_type, name="cast_exit_self") + Gen.builder.call(exit_func, [ctx_Loaded], name="call_exit") Gen._unregister_local_heap_ptr(original_ctx_val) if ctx_val is not original_ctx_val: Gen._unregister_local_heap_ptr(ctx_val) diff --git a/lib/core/LLVMCG/BaseGen.py b/lib/core/LLVMCG/BaseGen.py index 8689680..cd0b890 100644 --- a/lib/core/LLVMCG/BaseGen.py +++ b/lib/core/LLVMCG/BaseGen.py @@ -389,12 +389,24 @@ class BaseGenMixin: return int(llvm_str[1:]) # 4. 特殊名称(非整数类型,但需要标记为 typedef 以跳过 opaque 定义) + # 注意:如果 name 已注册为 struct(用户定义了同名 class,如 includes/_dict.py 中的 dict), + # 则不应视为 typedef,应返回 None 让调用方走 struct 创建路径。 + # 解决时序问题:_parse_llvm_declare 从 stub.ll 解析时 dict 可能尚未注册到 Gen.structs, + # 但 SymbolTable 在 .pyi 解析阶段已就绪,可通过 is_struct 检查区分 class 和 typedef。 _SPECIAL_TYPEDEFS: set[str] = { 'typedef', 'CType', 'CVolatile', 'CEnum', 'CUnion', 'CStruct', 'enum', 'REnum', 'renum', 'list', 'dict', 'tuple', 'set', 'str', 'bytes', 'array', 'type', 'CArray', } if name in _SPECIAL_TYPEDEFS: + if name in self.structs: + return None # 已注册为 struct,不视为 typedef + if self.SymbolTable is not None: + try: + if self.SymbolTable.is_struct(name): + return None # SymbolTable 中标记为 struct,不视为 typedef + except Exception: + pass return 0 # 标记为 typedef,但位宽为 0(非整数) return None diff --git a/lib/core/LLVMCG/StructGen.py b/lib/core/LLVMCG/StructGen.py index 3ab012a..13098bb 100644 --- a/lib/core/LLVMCG/StructGen.py +++ b/lib/core/LLVMCG/StructGen.py @@ -248,7 +248,15 @@ class StructGenMixin: if is_packed: self.structs[ClassName].packed = True continue - mangled_name: str = self._mangle_name(ClassName) + # 修复跨模块类型定义冲突:如果类是从其他模块导入的(已在 class_sha1_map 注册), + # 必须使用导入的 source_sha1 作为前缀,而非本地模块的 sha1。 + # 否则会创建缺少基类字段(如 GSListNode.Next)的本地类型定义, + # 导致字段索引错位 → 访问违规崩溃。 + _imported_sha1: str = self.class_sha1_map.get(ClassName, '') + if _imported_sha1: + mangled_name: str = f"{_imported_sha1}.{ClassName}" + else: + mangled_name: str = self._mangle_name(ClassName) struct_type: ir.IdentifiedStructType = ir.IdentifiedStructType(self.module, mangled_name, packed=is_packed) self.structs[ClassName] = struct_type @@ -361,7 +369,18 @@ class StructGenMixin: _vtable_first_ok: bool = True if _has_vtable_precheck and len(existing_st.elements) > 0: _vtable_first_ok = isinstance(existing_st.elements[0], ir.PointerType) - if len(existing_st.elements) >= _expected_count_pre and _vtable_first_ok: + # 检测 T* 占位类型(未特化的泛型类型参数)。 + # 当 struct 包含 T* 字段时(如 BasicBlock 继承 GSListNode[BasicBlock] 但 stub 未特化), + # 说明 stub 使用了未特化的基类,需清除重新生成。 + _has_t_placeholder_pre: bool = False + for _elem_pre in existing_st.elements: + if isinstance(_elem_pre, ir.PointerType) and isinstance(_elem_pre.pointee, ir.IdentifiedStructType): + _pname_pre: str = _elem_pre.pointee.name + _short_pre: str = _pname_pre.rsplit('.', 1)[-1] if '.' in _pname_pre else _pname_pre + if _short_pre == 'T': + _has_t_placeholder_pre = True + break + if len(existing_st.elements) >= _expected_count_pre and _vtable_first_ok and not _has_t_placeholder_pre: if ClassName in self.class_packed and not existing_st.packed: existing_st.packed = True continue @@ -438,7 +457,12 @@ class StructGenMixin: # 由 _TryLoadStructFromStub 设置完整 body。 member_types = [] else: - member_types = [ir.IntType(8)] + # 无 vtable 且 class_members 为空:常见于 register_method 早期 + # 调用 _generate_structs(此时 class_members[ClassName]=[] 但尚未 + # 填充实际字段)。保持 opaque,避免 set_body(*[i8]) 永久损坏 struct + # (llvmlite 的 set_body 只能调用一次)。后续 _generate_structs 调用 + # 会从 class_members 或 stub 设置正确 body。 + member_types = [] # 获取之前创建的 struct 并设置成员 struct_type: ir.IdentifiedStructType = self.structs[ClassName] @@ -454,10 +478,26 @@ class StructGenMixin: import_handler: Any = self._import_handler_ref if import_handler is not None and ClassName not in self._classes_in_progress: try: - import_handler._TryLoadStructFromStub(ClassName, self) + # 传入 source_sha1 确保从正确的 stub 文件加载完整定义 + _src_sha1: str = self.class_sha1_map.get(ClassName, '') + import_handler._TryLoadStructFromStub(ClassName, self, source_sha1=_src_sha1 or None) except Exception: pass struct_type = self.structs.get(ClassName, struct_type) + # 检测 stub body 中的 T* 占位类型(未特化的泛型类型参数)。 + # 若 stub 使用了未特化的基类(如 GSListNode 而非 GSListNode[BasicBlock]), + # 清除 _elements 让 set_body 用正确的 class_members 重新设置。 + if struct_type.elements is not None and member_types: + _has_t_placeholder_post: bool = False + for _elem_post in struct_type.elements: + if isinstance(_elem_post, ir.PointerType) and isinstance(_elem_post.pointee, ir.IdentifiedStructType): + _pname_post: str = _elem_post.pointee.name + _short_post: str = _pname_post.rsplit('.', 1)[-1] if '.' in _pname_post else _pname_post + if _short_post == 'T': + _has_t_placeholder_post = True + break + if _has_t_placeholder_post: + struct_type._elements = None if struct_type.elements is None: # 防御性检查:member_types 为空时不调用 set_body。 # set_body(*[]) 会设置 elements=() 使 is_opaque=False, @@ -485,18 +525,20 @@ class StructGenMixin: # _shared_class_vtable 和 _shared_cross_module_vtable,导致 class_vtable 与 # _cross_module_vtable_classes 内容相同,无法用以区分本模块类与跨模块类。 # _generate_structs 会为所有 class_methods 的类创建空 struct type,导致 self.structs - # 也包含所有类。唯一可靠的过滤条件是 self.functions:_EmitClassLlvm 在本函数之前 - # 调用(LlvmGenerator.py L178-182),本模块定义的类方法已加入 self.functions; - # import 声明的跨模块类方法也在 self.functions 中。若 self.functions 中没有任何 - # 以 "{ClassName}." 开头的键,说明本模块既未定义也未导入该类的方法,虚表会保持 - # 全 null,虚表分派时调用 null 指针引发段错误。此时应跳过虚表创建,让链接器 - # 从定义该类的模块解析虚表符号。 + # 也包含所有类。过滤条件是 self.functions:只考虑本模块定义的函数(define,有函数体), + # 跳过跨模块的 declare(无函数体)。跨模块类的 declare 通过 HandlesImports 加入 + # self.functions(短名如 "MemManager.alloc"),但其 is_declaration=True。 + # 若只存在 declare 而无 define,说明本模块未定义该类,虚表应由定义模块创建。 + # vtable linkage='internal',跨模块调用通过对象的 vtable 指针(首字段)完成分派, + # 不依赖本模块的 vtable 全局变量。 has_local_method: bool = False prefix: str = f"{ClassName}." - for func_name in self.functions: + for func_name, func_obj in self.functions.items(): if func_name.startswith(prefix): - has_local_method = True - break + # 跳过跨模块的 declare(无函数体),只考虑本模块定义的函数 + if not getattr(func_obj, 'is_declaration', False): + has_local_method = True + break if not has_local_method: continue VtableType: ir.ArrayType = ir.ArrayType(ir.PointerType(ir.IntType(8)), len(methods)) diff --git a/lib/includes/t.py b/lib/includes/t.py index 2e1486d..bf1f894 100644 --- a/lib/includes/t.py +++ b/lib/includes/t.py @@ -3,7 +3,7 @@ from __future__ import annotations import sys import types -from typing import Any, ClassVar, Optional, TypeVar, Generic, TypeAlias +from typing import Any, ClassVar, Optional, TypeVar, Generic, TypeAlias, Callable from lib.constants.config import mode as _ConfigMode from lib.core.VLogger import get_logger as _vlog diff --git a/regression_output.txt b/regression_output.txt new file mode 100644 index 0000000..270fed7 --- /dev/null +++ b/regression_output.txt @@ -0,0 +1,1710 @@ +====================================================================== +TransPyC 回归测试 +====================================================================== + +发现 45 个测试项目 + +====================================================================== +阶段一:编译所有项目 +====================================================================== +[1/45] 编译 ArgparseTest ... 通过 (7.9s) +[2/45] 编译 AstTest ... 失败 (42.8s) +[3/45] 编译 BuddyTest ... 通过 (8.0s) +[4/45] 编译 BuiltinDecoratorTest ... 通过 (5.9s) +[5/45] 编译 CPythonTest ... 通过 (8.8s) +[6/45] 编译 ClosureTest ... 通过 (5.0s) +[7/45] 编译 ClosureTest2 ... 通过 (5.4s) +[8/45] 编译 DecoratorMarkerTest ... 通过 (5.2s) +[9/45] 编译 DecoratorTest ... 通过 (6.8s) +[10/45] 编译 DictTest ... 失败 (10.9s) +[11/45] 编译 DocTest ... 通过 (5.6s) +[12/45] 编译 EdgeCaseTest ... 通过 (3.9s) +[13/45] 编译 EqTest ... 通过 (3.9s) +[14/45] 编译 FakeDuckTest ... 失败 (7.2s) +[15/45] 编译 ForAndLoopTest ... 通过 (5.0s) +[16/45] 编译 FormatStringTest ... 通过 (4.4s) +[17/45] 编译 FuncTest ... 通过 (4.7s) +[18/45] 编译 GenericTest ... 通过 (4.4s) +[19/45] 编译 GenericTest2 ... 通过 (4.8s) +[20/45] 编译 HashTableTest ... 通过 (5.1s) +[21/45] 编译 IterTest ... 通过 (4.8s) +[22/45] 编译 JsonTest ... 失败 (6.6s) +[23/45] 编译 LLvmLiteTest ... 通过 (21.8s) +[24/45] 编译 ListTest ... 通过 (4.2s) +[25/45] 编译 LoopTest ... 通过 (4.4s) +[26/45] 编译 MemhubTest ... 通过 (4.5s) +[27/45] 编译 NewAstTest ... 通过 (24.1s) +[28/45] 编译 NoVTableTest ... 通过 (3.5s) +[29/45] 编译 PointerTest ... 通过 (4.3s) +[30/45] 编译 ShortCircuitTest ... 通过 (4.9s) +[31/45] 编译 SimdTest ... 失败 (13.1s) +[32/45] 编译 SprintfTest ... 通过 (4.8s) +[33/45] 编译 StringIterTest ... 通过 (4.8s) +[34/45] 编译 StringTest ... 通过 (4.6s) +[35/45] 编译 StructTest ... 通过 (4.9s) +[36/45] 编译 SysLibTest ... 通过 (9.7s) +[37/45] 编译 TestFBProject ... 通过 (4.5s) +[38/45] 编译 TestProject ... 失败 (14.8s) +[39/45] 编译 TestProject2 ... 失败 (12.1s) +[40/45] 编译 TestProject3 ... 通过 (12.0s) +[41/45] 编译 TypeCastTest ... 通过 (8.1s) +[42/45] 编译 VRandomTest ... 通过 (9.5s) +[43/45] 编译 VariadicTest ... 通过 (7.8s) +[44/45] 编译 WebTest ... 通过 (9.4s) +[45/45] 编译 ZlibTest ... 通过 (10.0s) + +编译阶段: 通过 38, 失败 7 + +====================================================================== +阶段二:运行所有可执行文件 +====================================================================== +找到 38 个可执行文件 + + ArgparseTest: 通过 + BuddyTest: 通过 + BuiltinDecoratorTest: 通过 + CPythonTest: 通过 + ClosureTest: 通过 + ClosureTest2: 通过 + DecoratorMarkerTest: 通过 + DecoratorTest: 通过 + DocTest: 通过 + EdgeCaseTest: 通过 + EqTest: 通过 + ForAndLoopTest: 通过 + FormatStringTest: 通过 + FuncTest: 通过 + GenericTest: 通过 + GenericTest2: 通过 + HashTableTest: 通过 + IterTest: 通过 + LLvmLiteTest: 失败 + ListTest: 通过 + LoopTest: 通过 + MemhubTest: 通过 + NewAstTest: 通过 + NoVTableTest: 通过 + PointerTest: 通过 + ShortCircuitTest: 通过 + SprintfTest: 通过 + StringIterTest: 通过 + StringTest: 通过 + StructTest: 失败 + SysLibTest: 通过 + TestFBProject: 通过 + TestProject3: 通过 + TypeCastTest: 通过 + VRandomTest: 通过 + VariadicTest: 通过 + WebTest: 通过 + ZlibTest: 通过 + +运行阶段: 通过 36, 失败 2 + +====================================================================== +回归测试报告 +====================================================================== +总计: 45 通过: 36 失败: 9 + +---------------------------------------------------------------------- +失败项目详情: +---------------------------------------------------------------------- + +【AstTest】编译失败 + ... (省略前 4 行) ... + ├ INFO: 输出目录: D:\Users\TermiNexus\Desktop\TransPyC\Test\AstTest\output + ├ INFO: 阶段: all + ├ INFO: 编译器: llc -filetype=obj -relocation-model=pic + ├ INFO: 目标三元组: x86_64-pc-windows-gnu + ├ INFO: 数据布局: e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128 + ├ INFO: output: 已清空 D:\Users\TermiNexus\Desktop\TransPyC\Test\AstTest\output + ├ INFO: temp: 已清空 D:\Users\TermiNexus\Desktop\TransPyC\Test\AstTest\temp + ├ INFO: 清理完成 + ├ INFO: 找到 1 个可达源文件(从入口遍历) + ├ INFO: [1/1] 生成签名: main.py + ├ INFO: -> 0853acdbdfc9b27c.pyi (签名) + ├ INFO: 处理 24 个被引用的 Python 库文件 + ├ INFO: 生成签名: ast\__init__.py -> 34548789d646f432.pyi + ├ INFO: 生成签名: ast\astaux.py -> 4337fb260448bbe2.pyi + ├ INFO: 生成签名: ast\base.py -> 5dab8cb390496d22.pyi + ├ INFO: 生成签名: ast\exprs.py -> 47767b5026a8ee15.pyi + ├ INFO: 生成签名: ast\lexer.py -> 0c212981c180e7fb.pyi + ├ INFO: 生成签名: ast\match.py -> 4dd6b3f1427d1cc5.pyi + ├ INFO: 生成签名: ast\parser.py -> ee52c08239684346.pyi + ├ INFO: 生成签名: ast\stmts.py -> 657e182b27c2a022.pyi + ├ INFO: 生成签名: ast\tokens.py -> b547ac4f380bddb6.pyi + ├ INFO: 缓存命中(全局): atom.py -> 271ea3decb810db2.pyi + ├ INFO: 缓存命中(全局): memhub.py -> f3560b99de458aec.pyi + ├ INFO: 生成签名: platmacro.py -> 93c1d18e35d188d6.pyi + ├ INFO: 生成签名: posix.py -> 6503c97dde0c79c4.pyi + ├ INFO: 生成签名: stdarg.py -> 71e0a3ffcb3ebfad.pyi + ├ INFO: 缓存命中(全局): stdint.py -> f5522571bcce7bcb.pyi + ├ INFO: 缓存命中(全局): stdio.py -> 6f62fe05c5ea1ceb.pyi + ├ INFO: 缓存命中(全局): stdlib.py -> 90c53dd6db8d41cf.pyi + ├ INFO: 缓存命中(全局): string.py -> 9474791561654346.pyi + ├ INFO: 生成签名: sys.py -> b5a965302cded36b.pyi + ├ INFO: 缓存命中(全局): viperio.py -> c9f4be41ca1cc2b4.pyi + ├ INFO: 生成签名: viperlib.py -> c3b259b4059f8668.pyi + ├ INFO: 缓存命中(全局): w32\win32base.py -> 7e529fe7a078cfef.pyi + ├ INFO: 缓存命中(全局): w32\win32console.py -> bbdf3bbd4c3bc28c.pyi + ├ INFO: 缓存命中(全局): w32\win32process.py -> 067c78e9f121dce3.pyi + ├ INFO: 结构体注册表: 103 个类型, 7 个枚举 + ├ INFO: -> 0853acdbdfc9b27c.stub.ll (声明) + ├ INFO: 生成声明: ast\__init__.py -> 34548789d646f432.stub.ll + ├ INFO: 生成声明: ast\astaux.py -> 4337fb260448bbe2.stub.ll + ├ INFO: 生成声明: ast\base.py -> 5dab8cb390496d22.stub.ll + ├ INFO: 生成声明: ast\exprs.py -> 47767b5026a8ee15.stub.ll + ├ INFO: 生成声明: ast\lexer.py -> 0c212981c180e7fb.stub.ll + ├ INFO: 生成声明: ast\match.py -> 4dd6b3f1427d1cc5.stub.ll + ├ INFO: 生成声明: ast\parser.py -> ee52c08239684346.stub.ll + ├ INFO: 生成声明: ast\stmts.py -> 657e182b27c2a022.stub.ll + ├ INFO: 生成声明: ast\tokens.py -> b547ac4f380bddb6.stub.ll + ├ INFO: 缓存命中(全局): atom.py -> 271ea3decb810db2.stub.ll + ├ INFO: 缓存命中(全局): memhub.py -> f3560b99de458aec.stub.ll + ├ INFO: 生成声明: platmacro.py -> 93c1d18e35d188d6.stub.ll + ├ INFO: 生成声明: posix.py -> 6503c97dde0c79c4.stub.ll + ├ INFO: 生成声明: stdarg.py -> 71e0a3ffcb3ebfad.stub.ll + ├ INFO: 缓存命中(全局): stdint.py -> f5522571bcce7bcb.stub.ll + ├ INFO: 缓存命中(全局): stdio.py -> 6f62fe05c5ea1ceb.stub.ll + ├ INFO: 缓存命中(全局): stdlib.py -> 90c53dd6db8d41cf.stub.ll + ├ INFO: 缓存命中(全局): string.py -> 9474791561654346.stub.ll + ├ INFO: 生成声明: sys.py -> b5a965302cded36b.stub.ll + ├ INFO: 缓存命中(全局): viperio.py -> c9f4be41ca1cc2b4.stub.ll + ├ INFO: 生成声明: viperlib.py -> c3b259b4059f8668.stub.ll + ├ INFO: 缓存命中(全局): w32\win32base.py -> 7e529fe7a078cfef.stub.ll + ├ INFO: 缓存命中(全局): w32\win32console.py -> bbdf3bbd4c3bc28c.stub.ll + ├ INFO: 生成声明: w32\win32process.py -> 067c78e9f121dce3.stub.ll + ├ SUCCESS: 声明接口生成到: D:\Users\TermiNexus\Desktop\TransPyC\Test\AstTest\temp + ├ INFO: SHA1 映射表 (25 个文件): + ├ INFO: 找到 1 个可达源文件(已按依赖排序) + ├ INFO: 处理顺序: + ├ INFO: 1. main.py + ├ INFO: 过滤旧文件: stub 29->25, sig 42->25 + ├ INFO: [缓存] 构建共享符号表数据... + ├ INFO: [缓存] 共享符号表构建完成 (0.72s, 2373 符号, 5 泛型模板, 10 doc 元数据) + ├ INFO: + 需要翻译 1 个文件 + ├ INFO: -> 0853acdbdfc9b27c.ll + ├ INFO: [1/1] main.py (2.2s) + ├ INFO: 翻译总耗时: 2.2s + ├ INFO: + [阶段二完成] .ll 文件生成到: D:\Users\TermiNexus\Desktop\TransPyC\Test\AstTest\output + ├ INFO: [includes] 发现 Python 源文件: stdint.py + ├ INFO: [includes] 发现 Python 源文件: sys.py + ├ INFO: [includes] 发现 Python 源文件: string.py + ├ INFO: [includes] 发现 Python 包文件: w32\fileio.py + ├ INFO: [includes] 发现 Python 包文件: w32\win32base.py + ├ INFO: [includes] 发现 Python 包文件: w32\win32console.py + ├ INFO: [includes] 发现 Python 包文件: w32\win32file.py + ├ INFO: [includes] 发现 Python 包文件: w32\win32memory.py + ├ INFO: [includes] 发现 Python 包文件: w32\win32process.py + ├ INFO: [includes] 发现 Python 包文件: w32\win32sync.py + ├ INFO: [includes] 发现 Python 包文件: w32\winsock2.py + ├ INFO: [includes] 发现 Python 包文件: ast\astaux.py + ├ INFO: [includes] 发现 Python 包文件: ast\base.py + ├ INFO: [includes] 发现 Python 包文件: ast\exprs.py + ├ INFO: [includes] 发现 Python 包文件: ast\lexer.py + ├ INFO: [includes] 发现 Python 包文件: ast\match.py + ├ INFO: [includes] 发现 Python 包文件: ast\parser.py + ├ INFO: [includes] 发现 Python 包文件: ast\stmts.py + ├ INFO: [includes] 发现 Python 包文件: ast\tokens.py + ├ INFO: [includes] 发现 Python 包文件: ast\__init__.py + ├ INFO: [includes] 发现 Python 源文件: memhub.py + ├ INFO: [includes] 发现 Python 源文件: stdio.py + ├ INFO: [includes] 发现 Python 源文件: stdlib.py + ├ INFO: [includes] 发现间接依赖: platmacro.py + ├ INFO: [includes] 发现间接依赖: posix.py + ├ INFO: [includes] 发现间接依赖: viperlib.py + ├ INFO: [includes] 发现间接依赖: viperio.py + ├ INFO: [includes] 发现间接依赖: stdarg.py + ├ INFO: [includes] 发现间接依赖: atom.py + ├ INFO: + [includes 编译] 找到 29 个 Python 源文件 + ├ INFO: 跳过(预编译): atom.py -> 271ea3decb810db2.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(声明文件): platmacro.py + ├ INFO: 跳过(声明文件): stdarg.py + ├ INFO: 跳过(声明文件): stdint.py + ├ INFO: 跳过(声明文件): stdio.py + ├ INFO: 跳过(声明文件): stdlib.py + ├ INFO: 跳过(预编译): string.py -> 9474791561654346.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(预编译): viperio.py -> c9f4be41ca1cc2b4.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(预编译): memhub.py -> f3560b99de458aec.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(预编译): win32base.py -> 7e529fe7a078cfef.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(预编译): win32console.py -> bbdf3bbd4c3bc28c.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 翻译 18 个文件 + ├ INFO: -> 6503c97dde0c79c4.ll + ├ INFO: [1/18] 翻译完成: posix.py + ├ INFO: -> b547ac4f380bddb6.ll + ├ INFO: [2/18] 翻译完成: tokens.py + ├ INFO: -> 06f53cc594b4ac6c.ll + ├ INFO: [3/18] 翻译完成: win32sync.py + ├ INFO: -> 067c78e9f121dce3.ll + ├ INFO: [4/18] 翻译完成: win32process.py + ├ INFO: -> 6446627d4f07a1b5.ll + ├ INFO: [5/18] 翻译完成: winsock2.py + ├ INFO: -> 72e2d5ccb7cedcf1.ll + ├ INFO: [6/18] 翻译完成: win32memory.py + ├ INFO: -> f6b51804a0ba8ff0.ll + ├ INFO: [7/18] 翻译完成: win32file.py + ├ INFO: -> b5a965302cded36b.ll + ├ INFO: [8/18] 翻译完成: sys.py + ├ INFO: -> 0c212981c180e7fb.ll + ├ INFO: [9/18] 翻译完成: lexer.py + ├ INFO: -> c3b259b4059f8668.ll + ├ INFO: [10/18] 翻译完成: viperlib.py + ├ INFO: -> 0035c95a18d4f8e8.ll + ├ INFO: [11/18] 翻译完成: fileio.py + ├ INFO: -> 5dab8cb390496d22.ll + ├ INFO: [12/18] 翻译完成: base.py + ├ WARN: HandlesBase: 忽略异常 'NoneType' object is not subscriptable + ├ INFO: -> 4dd6b3f1427d1cc5.ll + ├ INFO: [13/18] 翻译完成: match.py + ├ INFO: -> 4337fb260448bbe2.ll + ├ INFO: [14/18] 翻译完成: astaux.py + ├ INFO: -> 657e182b27c2a022.ll + ├ INFO: [15/18] 翻译完成: stmts.py + ├ INFO: -> 47767b5026a8ee15.ll + ├ INFO: [16/18] 翻译完成: exprs.py + ├ WARN: HandlesBase: 忽略异常 'NoneType' object is not subscriptable + ├ INFO: -> ee52c08239684346.ll + ├ INFO: [17/18] 翻译完成: parser.py + ├ WARN: HandlesBase: 忽略异常 'NoneType' object is not subscriptable + ├ INFO: -> 34548789d646f432.ll + ├ INFO: [18/18] 翻译完成: __init__.py + ├ INFO: 编译 18 个 .ll 文件 + ├ SUCCESS: [1/18] 编译成功: posix.py + ├ SUCCESS: [2/18] 编译成功: astaux.py + ├ SUCCESS: [3/18] 编译成功: lexer.py + ├ SUCCESS: [4/18] 编译成功: base.py + ├ SUCCESS: [5/18] 编译成功: tokens.py + ├ SUCCESS: [6/18] 编译成功: match.py + ├ WARN: [7/18] 编译失败: stmts.py: llc.exe: error: llc.exe: D:\Users\TermiNexus\Desktop\TransPyC\Test\AstTest\output\657e182b27c2a022_dso.ll:4476:1: error: expected instruction opcode + } + ^ + ├ WARN: [8/18] 编译失败: parser.py: llc.exe: error: llc.exe: D:\Users\TermiNexus\Desktop\TransPyC\Test\AstTest\output\ee52c08239684346_dso.ll:4282:1: error: expected instruction opcode + } + ^ + ├ WARN: [9/18] 编译失败: __init__.py: llc.exe: error: llc.exe: D:\Users\TermiNexus\Desktop\TransPyC\Test\AstTest\output\34548789d646f432_dso.ll:1865:1: error: expected instruction opcode + } + ^ + ├ SUCCESS: [10/18] 编译成功: viperlib.py + ├ SUCCESS: [11/18] 编译成功: exprs.py + ├ SUCCESS: [12/18] 编译成功: win32memory.py + ├ SUCCESS: [13/18] 编译成功: fileio.py + ├ SUCCESS: [14/18] 编译成功: win32file.py + ├ SUCCESS: [15/18] 编译成功: sys.py + ├ SUCCESS: [16/18] 编译成功: win32process.py + ├ SUCCESS: [17/18] 编译成功: win32sync.py + ├ SUCCESS: [18/18] 编译成功: winsock2.py + ├ WARN: 保留失败文件以便调试: D:\Users\TermiNexus\Desktop\TransPyC\Test\AstTest\output\657e182b27c2a022.ll + ├ WARN: 保留失败文件以便调试: D:\Users\TermiNexus\Desktop\TransPyC\Test\AstTest\output\ee52c08239684346.ll + ├ WARN: 保留失败文件以便调试: D:\Users\TermiNexus\Desktop\TransPyC\Test\AstTest\output\34548789d646f432.ll + ├ ERROR: + includes 文件编译失败 + [FATAL] 方法体编译失败 (list[str].append): TypeError: 'NoneType' object is not subscriptable + Traceback (most recent call last): + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesFunctions.py", line 1741, in _EmitFunctionLlvm + self.Trans.BodyHandler.HandleBodyLlvm(func_body) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 32, in HandleBodyLlvm + self.Trans.IfHandler._HandleIfLlvm(Node) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesIf.py", line 193, in _HandleIfLlvm + self.Trans.BodyHandler.HandleBodyLlvm(Node.body) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 30, in HandleBodyLlvm + self.Trans.AnnAssignHandler._HandleAnnAssignLlvm(Node) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesAnnAssign.py", line 289, in _HandleAnnAssignLlvm + self._HandleAnnAssignLlvmInner(Node) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesAnnAssign.py", line 487, in _HandleAnnAssignLlvmInner + InitValue = self.HandleExprLlvm(Node.value, VarType=VarType) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBase.py", line 526, in HandleExprLlvm + return self.Trans.ExprHandler.HandleExprLlvm(Node, VarType) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExpr.py", line 63, in HandleExprLlvm + return self.Trans.ExprCallHandle._HandleCallLlvm(Node) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprCall.py", line 490, in _HandleCallLlvm + return self._HandleMethodCallLlvm(Node) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprCall.py", line 2509, in _HandleMethodCallLlvm + VtableSlotPtr = Gen.builder.gep(ObjVal, [ir.Constant(ir.IntType(32), 0), ir.Constant(ir.IntType(32), 0)], name=f"vtable_slot_{ClassName}") + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Python312\Lib\site-packages\llvmlite\ir\builder.py", line 927, in gep + instr = instructions.GEPInstr(self.block, ptr, indices, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Python312\Lib\site-packages\llvmlite\ir\instructions.py", line 563, in __init__ + lasttyp, typ = typ, typ.gep(i) + ^^^^^^^^^^ + File "D:\Python312\Lib\site-packages\llvmlite\ir\types.py", line 633, in gep + return self.elements[i.constant] + ~~~~~~~~~~~~~^^^^^^^^^^^^ + TypeError: 'NoneType' object is not subscriptable + [FATAL] 方法体编译失败 (list[str].append): TypeError: 'NoneType' object is not subscriptable + Traceback (most recent call last): + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesFunctions.py", line 1741, in _EmitFunctionLlvm + self.Trans.BodyHandler.HandleBodyLlvm(func_body) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 32, in HandleBodyLlvm + self.Trans.IfHandler._HandleIfLlvm(Node) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesIf.py", line 193, in _HandleIfLlvm + self.Trans.BodyHandler.HandleBodyLlvm(Node.body) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 30, in HandleBodyLlvm + self.Trans.AnnAssignHandler._HandleAnnAssignLlvm(Node) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesAnnAssign.py", line 289, in _HandleAnnAssignLlvm + self._HandleAnnAssignLlvmInner(Node) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesAnnAssign.py", line 487, in _HandleAnnAssignLlvmInner + InitValue = self.HandleExprLlvm(Node.value, VarType=VarType) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBase.py", line 526, in HandleExprLlvm + return self.Trans.ExprHandler.HandleExprLlvm(Node, VarType) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExpr.py", line 63, in HandleExprLlvm + return self.Trans.ExprCallHandle._HandleCallLlvm(Node) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprCall.py", line 490, in _HandleCallLlvm + return self._HandleMethodCallLlvm(Node) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprCall.py", line 2509, in _HandleMethodCallLlvm + VtableSlotPtr = Gen.builder.gep(ObjVal, [ir.Constant(ir.IntType(32), 0), ir.Constant(ir.IntType(32), 0)], name=f"vtable_slot_{ClassName}") + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Python312\Lib\site-packages\llvmlite\ir\builder.py", line 927, in gep + instr = instructions.GEPInstr(self.block, ptr, indices, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Python312\Lib\site-packages\llvmlite\ir\instructions.py", line 563, in __init__ + lasttyp, typ = typ, typ.gep(i) + ^^^^^^^^^^ + File "D:\Python312\Lib\site-packages\llvmlite\ir\types.py", line 633, in gep + return self.elements[i.constant] + ~~~~~~~~~~~~~^^^^^^^^^^^^ + TypeError: 'NoneType' object is not subscriptable + [FATAL] 方法体编译失败 (list[str].append): TypeError: 'NoneType' object is not subscriptable + Traceback (most recent call last): + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesFunctions.py", line 1741, in _EmitFunctionLlvm + self.Trans.BodyHandler.HandleBodyLlvm(func_body) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 32, in HandleBodyLlvm + self.Trans.IfHandler._HandleIfLlvm(Node) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesIf.py", line 193, in _HandleIfLlvm + self.Trans.BodyHandler.HandleBodyLlvm(Node.body) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 30, in HandleBodyLlvm + self.Trans.AnnAssignHandler._HandleAnnAssignLlvm(Node) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesAnnAssign.py", line 289, in _HandleAnnAssignLlvm + self._HandleAnnAssignLlvmInner(Node) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesAnnAssign.py", line 487, in _HandleAnnAssignLlvmInner + InitValue = self.HandleExprLlvm(Node.value, VarType=VarType) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBase.py", line 526, in HandleExprLlvm + return self.Trans.ExprHandler.HandleExprLlvm(Node, VarType) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExpr.py", line 63, in HandleExprLlvm + return self.Trans.ExprCallHandle._HandleCallLlvm(Node) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprCall.py", line 490, in _HandleCallLlvm + return self._HandleMethodCallLlvm(Node) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprCall.py", line 2509, in _HandleMethodCallLlvm + VtableSlotPtr = Gen.builder.gep(ObjVal, [ir.Constant(ir.IntType(32), 0), ir.Constant(ir.IntType(32), 0)], name=f"vtable_slot_{ClassName}") + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Python312\Lib\site-packages\llvmlite\ir\builder.py", line 927, in gep + instr = instructions.GEPInstr(self.block, ptr, indices, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Python312\Lib\site-packages\llvmlite\ir\instructions.py", line 563, in __init__ + lasttyp, typ = typ, typ.gep(i) + ^^^^^^^^^^ + File "D:\Python312\Lib\site-packages\llvmlite\ir\types.py", line 633, in gep + return self.elements[i.constant] + ~~~~~~~~~~~~~^^^^^^^^^^^^ + TypeError: 'NoneType' object is not subscriptable + +【DictTest】编译失败 + ├ INFO: 读取配置文件: D:\Users\TermiNexus\Desktop\TransPyC\Test\DictTest\project.json + ├ INFO: 项目目录: D:\Users\TermiNexus\Desktop\TransPyC\Test\DictTest + ├ INFO: 源目录: D:\Users\TermiNexus\Desktop\TransPyC\Test\DictTest\App + ├ INFO: 临时目录: D:\Users\TermiNexus\Desktop\TransPyC\Test\DictTest\temp + ├ INFO: 输出目录: D:\Users\TermiNexus\Desktop\TransPyC\Test\DictTest\output + ├ INFO: 阶段: all + ├ INFO: 编译器: llc -filetype=obj -relocation-model=pic + ├ INFO: 目标三元组: x86_64-pc-windows-gnu + ├ INFO: 数据布局: e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128 + ├ INFO: output: 已清空 D:\Users\TermiNexus\Desktop\TransPyC\Test\DictTest\output + ├ INFO: temp: 已清空 D:\Users\TermiNexus\Desktop\TransPyC\Test\DictTest\temp + ├ INFO: 清理完成 + ├ INFO: 找到 1 个可达源文件(从入口遍历) + ├ INFO: [1/1] 生成签名: main.py + ├ INFO: -> b3c2b99b6f3be4c7.pyi (签名) + ├ INFO: 处理 14 个被引用的 Python 库文件 + ├ INFO: 生成签名: _dict.py -> e3e7b6de8d7d8b03.pyi + ├ INFO: 缓存命中(全局): atom.py -> 271ea3decb810db2.pyi + ├ INFO: 生成签名: json\__init__.py -> 57288496f7c2d1ad.pyi + ├ INFO: 生成签名: json\__parser.py -> 240a9a4157959a9f.pyi + ├ INFO: 生成签名: json\__writer.py -> 20cd49775c100a38.pyi + ├ INFO: 缓存命中(全局): memhub.py -> f3560b99de458aec.pyi + ├ INFO: 缓存命中(全局): stdint.py -> f5522571bcce7bcb.pyi + ├ INFO: 缓存命中(全局): stdio.py -> 6f62fe05c5ea1ceb.pyi + ├ INFO: 缓存命中(全局): stdlib.py -> 90c53dd6db8d41cf.pyi + ├ INFO: 缓存命中(全局): string.py -> 9474791561654346.pyi + ├ INFO: 缓存命中(全局): testcheck.py -> 14d33679f7fadf1f.pyi + ├ INFO: 缓存命中(全局): viperio.py -> c9f4be41ca1cc2b4.pyi + ├ INFO: 缓存命中(全局): w32\win32base.py -> 7e529fe7a078cfef.pyi + ├ INFO: 缓存命中(全局): w32\win32console.py -> bbdf3bbd4c3bc28c.pyi + ├ INFO: 结构体注册表: 24 个类型, 0 个枚举 + ├ INFO: -> b3c2b99b6f3be4c7.stub.ll (声明) + ├ INFO: 生成声明: _dict.py -> e3e7b6de8d7d8b03.stub.ll + ├ INFO: 缓存命中(全局): atom.py -> 271ea3decb810db2.stub.ll + ├ INFO: 生成声明: json\__init__.py -> 57288496f7c2d1ad.stub.ll + ├ INFO: 生成声明: json\__parser.py -> 240a9a4157959a9f.stub.ll + ├ INFO: 生成声明: json\__writer.py -> 20cd49775c100a38.stub.ll + ├ INFO: 缓存命中(全局): memhub.py -> f3560b99de458aec.stub.ll + ├ INFO: 缓存命中(全局): stdint.py -> f5522571bcce7bcb.stub.ll + ├ INFO: 缓存命中(全局): stdio.py -> 6f62fe05c5ea1ceb.stub.ll + ├ INFO: 缓存命中(全局): stdlib.py -> 90c53dd6db8d41cf.stub.ll + ├ INFO: 缓存命中(全局): string.py -> 9474791561654346.stub.ll + ├ INFO: 缓存命中(全局): testcheck.py -> 14d33679f7fadf1f.stub.ll + ├ INFO: 缓存命中(全局): viperio.py -> c9f4be41ca1cc2b4.stub.ll + ├ INFO: 缓存命中(全局): w32\win32base.py -> 7e529fe7a078cfef.stub.ll + ├ INFO: 缓存命中(全局): w32\win32console.py -> bbdf3bbd4c3bc28c.stub.ll + ├ SUCCESS: 声明接口生成到: D:\Users\TermiNexus\Desktop\TransPyC\Test\DictTest\temp + ├ INFO: SHA1 映射表 (15 个文件): + ├ INFO: 找到 1 个可达源文件(已按依赖排序) + ├ INFO: 处理顺序: + ├ INFO: 1. main.py + ├ INFO: 过滤旧文件: stub 34->15, sig 56->15 + ├ INFO: [缓存] 构建共享符号表数据... + ├ INFO: [缓存] 共享符号表构建完成 (0.53s, 677 符号, 5 泛型模板, 20 doc 元数据) + ├ INFO: + 需要翻译 1 个文件 + ├ ERROR: main.py: Type of #1 arg mismatch: i8* != %"e3e7b6de8d7d8b03.dict"* + 源代码 (D:\Users\TermiNexus\Desktop\TransPyC\Test\DictTest\App\main.py, line 14): + 14 | w32.win32console.SetConsoleOutputCP(65001) + Type of #1 arg mismatch: i8* != %"e3e7b6de8d7d8b03.dict"* + 源代码 (D:\Users\TermiNexus\Desktop\TransPyC\Test\DictTest\App\main.py, line 26): + 26 | d.set_int("beta", 20) + Type of #1 arg mismatch: i8* != %"e3e7b6de8d7d8b03.dict"* + ├ INFO: 翻译总耗时: 1.2s + ├ INFO: + [阶段二完成] .ll 文件生成到: D:\Users\TermiNexus\Desktop\TransPyC\Test\DictTest\output + ├ INFO: [includes] 发现 Python 包文件: w32\fileio.py + ├ INFO: [includes] 发现 Python 包文件: w32\win32base.py + ├ INFO: [includes] 发现 Python 包文件: w32\win32console.py + ├ INFO: [includes] 发现 Python 包文件: w32\win32file.py + ├ INFO: [includes] 发现 Python 包文件: w32\win32memory.py + ├ INFO: [includes] 发现 Python 包文件: w32\win32process.py + ├ INFO: [includes] 发现 Python 包文件: w32\win32sync.py + ├ INFO: [includes] 发现 Python 包文件: w32\winsock2.py + ├ INFO: [includes] 发现 Python 源文件: string.py + ├ INFO: [includes] 发现 Python 源文件: testcheck.py + ├ INFO: [includes] 发现 Python 源文件: stdlib.py + ├ INFO: [includes] 发现 Python 源文件: memhub.py + ├ INFO: [includes] 发现 Python 源文件: _dict.py + ├ INFO: [includes] 发现 Python 源文件: stdio.py + ├ INFO: [includes] 发现 Python 源文件: stdint.py + ├ INFO: [includes] 发现 Python 包文件: json\__init__.py + ├ INFO: [includes] 发现 Python 包文件: json\__parser.py + ├ INFO: [includes] 发现 Python 包文件: json\__writer.py + ├ INFO: [includes] 发现间接依赖: atom.py + ├ INFO: [includes] 发现间接依赖: viperio.py + ├ INFO: + [includes 编译] 找到 20 个 Python 源文件 + ├ INFO: 跳过(预编译): atom.py -> 271ea3decb810db2.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(声明文件): stdint.py + ├ INFO: 跳过(声明文件): stdio.py + ├ INFO: 跳过(声明文件): stdlib.py + ├ INFO: 跳过(预编译): string.py -> 9474791561654346.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(预编译): viperio.py -> c9f4be41ca1cc2b4.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(预编译): memhub.py -> f3560b99de458aec.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(预编译): win32base.py -> 7e529fe7a078cfef.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(预编译): win32console.py -> bbdf3bbd4c3bc28c.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(预编译): testcheck.py -> 14d33679f7fadf1f.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(预编译): win32file.py -> f6b51804a0ba8ff0.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(预编译): fileio.py -> 0035c95a18d4f8e8.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(预编译): win32memory.py -> 72e2d5ccb7cedcf1.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(预编译): win32process.py -> 067c78e9f121dce3.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(预编译): win32sync.py -> 06f53cc594b4ac6c.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(预编译): winsock2.py -> 6446627d4f07a1b5.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 翻译 4 个文件 + ├ INFO: -> e3e7b6de8d7d8b03.ll + ├ INFO: [1/4] 翻译完成: _dict.py + ├ INFO: -> 20cd49775c100a38.ll + ├ INFO: [2/4] 翻译完成: __writer.py + ├ INFO: -> 240a9a4157959a9f.ll + ├ INFO: [3/4] 翻译完成: __parser.py + ├ INFO: -> 57288496f7c2d1ad.ll + ├ INFO: [4/4] 翻译完成: __init__.py + ├ INFO: 编译 4 个 .ll 文件 + ├ SUCCESS: [1/4] 编译成功: __writer.py + ├ SUCCESS: [2/4] 编译成功: __init__.py + ├ SUCCESS: [3/4] 编译成功: __parser.py + ├ SUCCESS: [4/4] 编译成功: _dict.py + ├ INFO: [清理] 删除 4 个过时文件 + ├ INFO: [编译] 无 .ll 文件需要重新编译 + ├ INFO: + [链接] 找到 0 个 .obj 文件 + ├ INFO: [链接] 额外库文件: 17 个 + ├ INFO: - 271ea3decb810db2.x86_64-pc-windows-gnu.pic.obj + ├ INFO: - 9474791561654346.x86_64-pc-windows-gnu.pic.obj + ├ INFO: - c9f4be41ca1cc2b4.x86_64-pc-windows-gnu.pic.obj + ├ INFO: - f3560b99de458aec.x86_64-pc-windows-gnu.pic.obj + ├ INFO: - 7e529fe7a078cfef.x86_64-pc-windows-gnu.pic.obj + ├ INFO: - bbdf3bbd4c3bc28c.x86_64-pc-windows-gnu.pic.obj + ├ INFO: - 14d33679f7fadf1f.x86_64-pc-windows-gnu.pic.obj + ├ INFO: - f6b51804a0ba8ff0.x86_64-pc-windows-gnu.pic.obj + ├ INFO: - 0035c95a18d4f8e8.x86_64-pc-windows-gnu.pic.obj + ├ INFO: - 72e2d5ccb7cedcf1.x86_64-pc-windows-gnu.pic.obj + ├ INFO: - 067c78e9f121dce3.x86_64-pc-windows-gnu.pic.obj + ├ INFO: - 06f53cc594b4ac6c.x86_64-pc-windows-gnu.pic.obj + ├ INFO: - 6446627d4f07a1b5.x86_64-pc-windows-gnu.pic.obj + ├ INFO: - e3e7b6de8d7d8b03.obj + ├ INFO: - 240a9a4157959a9f.obj + ├ INFO: - 20cd49775c100a38.obj + ├ INFO: - 57288496f7c2d1ad.obj + ├ INFO: 执行: clang++ -Wl,--allow-multiple-definition -o D:\Users\TermiNexus\Desktop\TransPyC\Test\DictTest\output\DictTest.exe D:\Users\TermiNexus\Desktop\TransPyC\includes.binary\271ea3decb810db2.x86_64-pc-windows-gnu.pic.obj D:\Users\TermiNexus\Desktop\TransPyC\includes.binary\9474791561654346.x86_64-pc-windows-gnu.pic.obj D:\Users\TermiNexus\Desktop\TransPyC\includes.binary\c9f4be41ca1cc2b4.x86_64-pc-windows-gnu.pic.obj D:\Users\TermiNexus\Desktop\TransPyC\includes.binary\f3560b99de458aec.x86_64-pc-windows-gnu.pic.obj D:\Users\TermiNexus\Desktop\TransPyC\includes.binary\7e529fe7a078cfef.x86_64-pc-windows-gnu.pic.obj D:\Users\TermiNexus\Desktop\TransPyC\includes.binary\bbdf3bbd4c3bc28c.x86_64-pc-windows-gnu.pic.obj D:\Users\TermiNexus\Desktop\TransPyC\includes.binary\14d33679f7fadf1f.x86_64-pc-windows-gnu.pic.obj D:\Users\TermiNexus\Desktop\TransPyC\includes.binary\f6b51804a0ba8ff0.x86_64-pc-windows-gnu.pic.obj D:\Users\TermiNexus\Desktop\TransPyC\includes.binary\0035c95a18d4f8e8.x86_64-pc-windows-gnu.pic.obj D:\Users\TermiNexus\Desktop\TransPyC\includes.binary\72e2d5ccb7cedcf1.x86_64-pc-windows-gnu.pic.obj D:\Users\TermiNexus\Desktop\TransPyC\includes.binary\067c78e9f121dce3.x86_64-pc-windows-gnu.pic.obj D:\Users\TermiNexus\Desktop\TransPyC\includes.binary\06f53cc594b4ac6c.x86_64-pc-windows-gnu.pic.obj D:\Users\TermiNexus\Desktop\TransPyC\includes.binary\6446627d4f07a1b5.x86_64-pc-windows-gnu.pic.obj D:\Users\TermiNexus\Desktop\TransPyC\Test\DictTest\output\e3e7b6de8d7d8b03.obj D:\Users\TermiNexus\Desktop\TransPyC\Test\DictTest\output\240a9a4157959a9f.obj D:\Users\TermiNexus\Desktop\TransPyC\Test\DictTest\output\20cd49775c100a38.obj D:\Users\TermiNexus\Desktop\TransPyC\Test\DictTest\output\57288496f7c2d1ad.obj -lmsvcrt -lucrt -lpthread -lmingwex -lkernel32 + ├ ERROR: 链接失败: D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\DictTest\output\e3e7b6de8d7d8b03.obj:e3e7b6de8d7d8b03_dso.ll:(.text+0xa64): undefined reference to `e3e7b6de8d7d8b03.write' + D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\DictTest\output\e3e7b6de8d7d8b03.obj:e3e7b6de8d7d8b03_dso.ll:(.text+0xa8a): undefined reference to `e3e7b6de8d7d8b03.parse' + D:/msys64/mingw64/bin/ld: D:/msys64/mingw64/lib/libmingw32.a(lib64_libmingw32_a-crtexewin.o): in function `main': + D:/W/B/src/mingw-w64/mingw-w64-crt/crt/crtexewin.c:62:(.text.startup+0xb6): undefined reference to `WinMain' + clang++: error: linker command failed with exit code 1 (use -v to see invocation) + ├ ERROR: + 链接失败,立即终止编译。 + [FATAL] 方法体编译失败 (.main): TypeError: Type of #1 arg mismatch: i8* != %"e3e7b6de8d7d8b03.dict"* + Traceback (most recent call last): + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesFunctions.py", line 1741, in _EmitFunctionLlvm + self.Trans.BodyHandler.HandleBodyLlvm(func_body) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 30, in HandleBodyLlvm + self.Trans.AnnAssignHandler._HandleAnnAssignLlvm(Node) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesAnnAssign.py", line 289, in _HandleAnnAssignLlvm + self._HandleAnnAssignLlvmInner(Node) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesAnnAssign.py", line 487, in _HandleAnnAssignLlvmInner + InitValue = self.HandleExprLlvm(Node.value, VarType=VarType) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBase.py", line 526, in HandleExprLlvm + return self.Trans.ExprHandler.HandleExprLlvm(Node, VarType) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExpr.py", line 63, in HandleExprLlvm + return self.Trans.ExprCallHandle._HandleCallLlvm(Node) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprCall.py", line 281, in _HandleCallLlvm + return self._HandleClassNewLlvm(Node, FuncName) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprCall.py", line 3456, in _HandleClassNewLlvm + Gen.builder.call(NewFunc, [result], name=f"before_init_{ClassName}") + File "D:\Python312\Lib\site-packages\llvmlite\ir\builder.py", line 881, in call + inst = instructions.CallInstr(self.block, fn, args, name=name, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Python312\Lib\site-packages\llvmlite\ir\instructions.py", line 105, in __init__ + raise TypeError(msg) + TypeError: Type of #1 arg mismatch: i8* != %"e3e7b6de8d7d8b03.dict"* + Traceback (most recent call last): + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\Projectrans\Phase2Translator.py", line 1039, in _translate_file + result = trans.Convert( + ^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\Shell\TransPyC.py", line 555, in Convert + code: str = self.translator.GenerateCCode(Tree, target='llvm') + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Translator\LlvmGenerator.py", line 642, in GenerateCCode + return self.GenerateLlvmDirect(Tree) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Translator\LlvmGenerator.py", line 179, in GenerateLlvmDirect + self.FunctionHandler._EmitFunctionLlvm(Node, Gen) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesFunctions.py", line 1741, in _EmitFunctionLlvm + self.Trans.BodyHandler.HandleBodyLlvm(func_body) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 30, in HandleBodyLlvm + self.Trans.AnnAssignHandler._HandleAnnAssignLlvm(Node) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesAnnAssign.py", line 289, in _HandleAnnAssignLlvm + self._HandleAnnAssignLlvmInner(Node) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesAnnAssign.py", line 487, in _HandleAnnAssignLlvmInner + InitValue = self.HandleExprLlvm(Node.value, VarType=VarType) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBase.py", line 526, in HandleExprLlvm + return self.Trans.ExprHandler.HandleExprLlvm(Node, VarType) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExpr.py", line 63, in HandleExprLlvm + return self.Trans.ExprCallHandle._HandleCallLlvm(Node) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprCall.py", line 281, in _HandleCallLlvm + return self._HandleClassNewLlvm(Node, FuncName) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprCall.py", line 3456, in _HandleClassNewLlvm + Gen.builder.call(NewFunc, [result], name=f"before_init_{ClassName}") + File "D:\Python312\Lib\site-packages\llvmlite\ir\builder.py", line 881, in call + inst = instructions.CallInstr(self.block, fn, args, name=name, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Python312\Lib\site-packages\llvmlite\ir\instructions.py", line 105, in __init__ + raise TypeError(msg) + TypeError: Type of #1 arg mismatch: i8* != %"e3e7b6de8d7d8b03.dict"* + + The above exception was the direct cause of the following exception: + + Traceback (most recent call last): + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\Projectrans\Phase2Translator.py", line 467, in run + self._translate_file(src_path, out_path, prebuilt_ModuleSha1Map=msm) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\Projectrans\Phase2Translator.py", line 1055, in _translate_file + raise type(e)(enriched) from e + TypeError: Type of #1 arg mismatch: i8* != %"e3e7b6de8d7d8b03.dict"* + 源代码 (D:\Users\TermiNexus\Desktop\TransPyC\Test\DictTest\App\main.py, line 14): + 14 | w32.win32console.SetConsoleOutputCP(65001) + Type of #1 arg mismatch: i8* != %"e3e7b6de8d7d8b03.dict"* + 源代码 (D:\Users\TermiNexus\Desktop\TransPyC\Test\DictTest\App\main.py, line 26): + 26 | d.set_int("beta", 20) + Type of #1 arg mismatch: i8* != %"e3e7b6de8d7d8b03.dict"* + +【FakeDuckTest】编译失败 + ├ INFO: 读取配置文件: D:\Users\TermiNexus\Desktop\TransPyC\Test\FakeDuckTest\project.json + ├ INFO: 项目目录: D:\Users\TermiNexus\Desktop\TransPyC\Test\FakeDuckTest + ├ INFO: 源目录: D:\Users\TermiNexus\Desktop\TransPyC\Test\FakeDuckTest\App + ├ INFO: 临时目录: D:\Users\TermiNexus\Desktop\TransPyC\Test\FakeDuckTest\temp + ├ INFO: 输出目录: D:\Users\TermiNexus\Desktop\TransPyC\Test\FakeDuckTest\output + ├ INFO: 阶段: all + ├ INFO: 编译器: llc -filetype=obj -relocation-model=pic + ├ INFO: 目标三元组: x86_64-pc-windows-gnu + ├ INFO: 数据布局: e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128 + ├ INFO: output: 已清空 D:\Users\TermiNexus\Desktop\TransPyC\Test\FakeDuckTest\output + ├ INFO: temp: 已清空 D:\Users\TermiNexus\Desktop\TransPyC\Test\FakeDuckTest\temp + ├ INFO: 清理完成 + ├ INFO: 找到 1 个可达源文件(从入口遍历) + ├ INFO: [1/1] 生成签名: main.py + ├ INFO: -> 48352329f97d0858.pyi (签名) + ├ INFO: 处理 14 个被引用的 Python 库文件 + ├ INFO: 生成签名: _fakeduck.py -> 79b337e5ea8951e2.pyi + ├ INFO: 生成签名: _list.py -> f2ecbf8ced20575c.pyi + ├ INFO: 生成签名: _withcontent.py -> 5b2e220c5bae60c9.pyi + ├ INFO: 缓存命中(全局): atom.py -> 271ea3decb810db2.pyi + ├ INFO: 缓存命中(全局): memhub.py -> f3560b99de458aec.pyi + ├ INFO: 缓存命中(全局): stdint.py -> f5522571bcce7bcb.pyi + ├ INFO: 缓存命中(全局): stdio.py -> 6f62fe05c5ea1ceb.pyi + ├ INFO: 缓存命中(全局): stdlib.py -> 90c53dd6db8d41cf.pyi + ├ INFO: 缓存命中(全局): string.py -> 9474791561654346.pyi + ├ INFO: 缓存命中(全局): testcheck.py -> 14d33679f7fadf1f.pyi + ├ INFO: 缓存命中(全局): viperio.py -> c9f4be41ca1cc2b4.pyi + ├ INFO: 缓存命中(全局): w32\win32base.py -> 7e529fe7a078cfef.pyi + ├ INFO: 缓存命中(全局): w32\win32console.py -> bbdf3bbd4c3bc28c.pyi + ├ INFO: 缓存命中(全局): w32\win32process.py -> 067c78e9f121dce3.pyi + ├ INFO: 结构体注册表: 28 个类型, 0 个枚举 + ├ INFO: -> 48352329f97d0858.stub.ll (声明) + ├ INFO: 生成声明: _fakeduck.py -> 79b337e5ea8951e2.stub.ll + ├ INFO: 生成声明: _list.py -> f2ecbf8ced20575c.stub.ll + ├ INFO: 生成声明: _withcontent.py -> 5b2e220c5bae60c9.stub.ll + ├ INFO: 缓存命中(全局): atom.py -> 271ea3decb810db2.stub.ll + ├ INFO: 缓存命中(全局): memhub.py -> f3560b99de458aec.stub.ll + ├ INFO: 缓存命中(全局): stdint.py -> f5522571bcce7bcb.stub.ll + ├ INFO: 缓存命中(全局): stdio.py -> 6f62fe05c5ea1ceb.stub.ll + ├ INFO: 缓存命中(全局): stdlib.py -> 90c53dd6db8d41cf.stub.ll + ├ INFO: 缓存命中(全局): string.py -> 9474791561654346.stub.ll + ├ INFO: 缓存命中(全局): testcheck.py -> 14d33679f7fadf1f.stub.ll + ├ INFO: 缓存命中(全局): viperio.py -> c9f4be41ca1cc2b4.stub.ll + ├ INFO: 缓存命中(全局): w32\win32base.py -> 7e529fe7a078cfef.stub.ll + ├ INFO: 缓存命中(全局): w32\win32console.py -> bbdf3bbd4c3bc28c.stub.ll + ├ INFO: 缓存命中(全局): w32\win32process.py -> 067c78e9f121dce3.stub.ll + ├ SUCCESS: 声明接口生成到: D:\Users\TermiNexus\Desktop\TransPyC\Test\FakeDuckTest\temp + ├ INFO: SHA1 映射表 (15 个文件): + ├ INFO: 找到 1 个可达源文件(已按依赖排序) + ├ INFO: 处理顺序: + ├ INFO: 1. main.py + ├ INFO: 过滤旧文件: stub 37->15, sig 64->15 + ├ INFO: [缓存] 构建共享符号表数据... + ├ INFO: [缓存] 共享符号表构建完成 (0.21s, 725 符号, 5 泛型模板, 25 doc 元数据) + ├ INFO: + 需要翻译 1 个文件 + ├ INFO: -> 48352329f97d0858.ll + ├ INFO: [1/1] main.py (0.7s) + ├ INFO: 翻译总耗时: 0.7s + ├ INFO: + [阶段二完成] .ll 文件生成到: D:\Users\TermiNexus\Desktop\TransPyC\Test\FakeDuckTest\output + ├ INFO: [includes] 发现 Python 源文件: stdlib.py + ├ INFO: [includes] 发现 Python 源文件: _fakeduck.py + ├ INFO: [includes] 发现 Python 源文件: memhub.py + ├ INFO: [includes] 发现 Python 源文件: _list.py + ├ INFO: [includes] 发现 Python 源文件: testcheck.py + ├ INFO: [includes] 发现 Python 源文件: stdint.py + ├ INFO: [includes] 发现 Python 源文件: string.py + ├ INFO: [includes] 发现 Python 源文件: _withcontent.py + ├ INFO: [includes] 发现 Python 包文件: w32\fileio.py + ├ INFO: [includes] 发现 Python 包文件: w32\win32base.py + ├ INFO: [includes] 发现 Python 包文件: w32\win32console.py + ├ INFO: [includes] 发现 Python 包文件: w32\win32file.py + ├ INFO: [includes] 发现 Python 包文件: w32\win32memory.py + ├ INFO: [includes] 发现 Python 包文件: w32\win32process.py + ├ INFO: [includes] 发现 Python 包文件: w32\win32sync.py + ├ INFO: [includes] 发现 Python 包文件: w32\winsock2.py + ├ INFO: [includes] 发现 Python 源文件: stdio.py + ├ INFO: [includes] 发现间接依赖: atom.py + ├ INFO: [includes] 发现间接依赖: viperio.py + ├ INFO: + [includes 编译] 找到 19 个 Python 源文件 + ├ INFO: 跳过(预编译): atom.py -> 271ea3decb810db2.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(声明文件): stdint.py + ├ INFO: 跳过(声明文件): stdio.py + ├ INFO: 跳过(声明文件): stdlib.py + ├ INFO: 跳过(预编译): string.py -> 9474791561654346.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(预编译): viperio.py -> c9f4be41ca1cc2b4.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(预编译): memhub.py -> f3560b99de458aec.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(预编译): win32base.py -> 7e529fe7a078cfef.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(预编译): win32console.py -> bbdf3bbd4c3bc28c.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(预编译): testcheck.py -> 14d33679f7fadf1f.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(预编译): win32file.py -> f6b51804a0ba8ff0.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(预编译): fileio.py -> 0035c95a18d4f8e8.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(预编译): win32memory.py -> 72e2d5ccb7cedcf1.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(预编译): win32process.py -> 067c78e9f121dce3.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(预编译): win32sync.py -> 06f53cc594b4ac6c.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(预编译): winsock2.py -> 6446627d4f07a1b5.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 翻译 3 个文件 + ├ INFO: -> f2ecbf8ced20575c.ll + ├ INFO: [1/3] 翻译完成: _list.py + ├ INFO: -> 5b2e220c5bae60c9.ll + ├ INFO: [2/3] 翻译完成: _withcontent.py + ├ INFO: -> 79b337e5ea8951e2.ll + ├ INFO: [3/3] 翻译完成: _fakeduck.py + ├ INFO: 编译 3 个 .ll 文件 + ├ SUCCESS: [1/3] 编译成功: _list.py + ├ SUCCESS: [2/3] 编译成功: _withcontent.py + ├ SUCCESS: [3/3] 编译成功: _fakeduck.py + ├ INFO: [清理] 删除 3 个过时文件 + ├ INFO: + [编译] 找到 1 个 .ll 文件需要编译 + ├ INFO: 并行编译 1 个文件 (workers=1) + ├ ERROR: 48352329f97d0858.ll: llc.exe: error: llc.exe: D:\Users\TermiNexus\Desktop\TransPyC\Test\FakeDuckTest\output\48352329f97d0858_dso.ll:3065:62: error: use of undefined value '%call_enter' + %local_free_cast = bitcast %"f3560b99de458aec.MemManager"* %call_enter to i8* + ^ + ├ ERROR: + 1 个文件编译失败 + +【JsonTest】编译失败 + ├ INFO: 读取配置文件: D:\Users\TermiNexus\Desktop\TransPyC\Test\JsonTest\project.json + ├ INFO: 项目目录: D:\Users\TermiNexus\Desktop\TransPyC\Test\JsonTest + ├ INFO: 源目录: D:\Users\TermiNexus\Desktop\TransPyC\Test\JsonTest\App + ├ INFO: 临时目录: D:\Users\TermiNexus\Desktop\TransPyC\Test\JsonTest\temp + ├ INFO: 输出目录: D:\Users\TermiNexus\Desktop\TransPyC\Test\JsonTest\output + ├ INFO: 阶段: all + ├ INFO: 编译器: llc -filetype=obj -relocation-model=pic + ├ INFO: 目标三元组: x86_64-pc-windows-gnu + ├ INFO: 数据布局: e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128 + ├ INFO: output: 已清空 D:\Users\TermiNexus\Desktop\TransPyC\Test\JsonTest\output + ├ INFO: temp: 已清空 D:\Users\TermiNexus\Desktop\TransPyC\Test\JsonTest\temp + ├ INFO: 清理完成 + ├ INFO: 找到 1 个可达源文件(从入口遍历) + ├ INFO: [1/1] 生成签名: main.py + ├ INFO: -> 8a97754e9e3c2b9a.pyi (签名) + ├ INFO: 处理 13 个被引用的 Python 库文件 + ├ INFO: 缓存命中(全局): atom.py -> 271ea3decb810db2.pyi + ├ INFO: 缓存命中(全局): json\__init__.py -> 57288496f7c2d1ad.pyi + ├ INFO: 缓存命中(全局): json\__parser.py -> 240a9a4157959a9f.pyi + ├ INFO: 缓存命中(全局): json\__writer.py -> 20cd49775c100a38.pyi + ├ INFO: 缓存命中(全局): memhub.py -> f3560b99de458aec.pyi + ├ INFO: 缓存命中(全局): stdint.py -> f5522571bcce7bcb.pyi + ├ INFO: 缓存命中(全局): stdio.py -> 6f62fe05c5ea1ceb.pyi + ├ INFO: 缓存命中(全局): string.py -> 9474791561654346.pyi + ├ INFO: 缓存命中(全局): testcheck.py -> 14d33679f7fadf1f.pyi + ├ INFO: 缓存命中(全局): viperio.py -> c9f4be41ca1cc2b4.pyi + ├ INFO: 缓存命中(全局): w32\win32base.py -> 7e529fe7a078cfef.pyi + ├ INFO: 缓存命中(全局): w32\win32console.py -> bbdf3bbd4c3bc28c.pyi + ├ INFO: 缓存命中(全局): w32\win32memory.py -> 72e2d5ccb7cedcf1.pyi + ├ INFO: 结构体注册表: 24 个类型, 0 个枚举 + ├ INFO: -> 8a97754e9e3c2b9a.stub.ll (声明) + ├ INFO: 缓存命中(全局): atom.py -> 271ea3decb810db2.stub.ll + ├ INFO: 缓存命中(全局): json\__init__.py -> 57288496f7c2d1ad.stub.ll + ├ INFO: 缓存命中(全局): json\__parser.py -> 240a9a4157959a9f.stub.ll + ├ INFO: 缓存命中(全局): json\__writer.py -> 20cd49775c100a38.stub.ll + ├ INFO: 缓存命中(全局): memhub.py -> f3560b99de458aec.stub.ll + ├ INFO: 缓存命中(全局): stdint.py -> f5522571bcce7bcb.stub.ll + ├ INFO: 缓存命中(全局): stdio.py -> 6f62fe05c5ea1ceb.stub.ll + ├ INFO: 缓存命中(全局): string.py -> 9474791561654346.stub.ll + ├ INFO: 缓存命中(全局): testcheck.py -> 14d33679f7fadf1f.stub.ll + ├ INFO: 缓存命中(全局): viperio.py -> c9f4be41ca1cc2b4.stub.ll + ├ INFO: 缓存命中(全局): w32\win32base.py -> 7e529fe7a078cfef.stub.ll + ├ INFO: 缓存命中(全局): w32\win32console.py -> bbdf3bbd4c3bc28c.stub.ll + ├ INFO: 缓存命中(全局): w32\win32memory.py -> 72e2d5ccb7cedcf1.stub.ll + ├ SUCCESS: 声明接口生成到: D:\Users\TermiNexus\Desktop\TransPyC\Test\JsonTest\temp + ├ INFO: SHA1 映射表 (14 个文件): + ├ INFO: 找到 1 个可达源文件(已按依赖排序) + ├ INFO: 处理顺序: + ├ INFO: 1. main.py + ├ INFO: 过滤旧文件: stub 38->14, sig 73->14 + ├ INFO: [缓存] 构建共享符号表数据... + ├ INFO: [缓存] 共享符号表构建完成 (0.26s, 756 符号, 5 泛型模板, 33 doc 元数据) + ├ INFO: + 需要翻译 1 个文件 + ├ INFO: -> 8a97754e9e3c2b9a.ll + ├ INFO: [1/1] main.py (0.9s) + ├ INFO: 翻译总耗时: 0.9s + ├ INFO: + [阶段二完成] .ll 文件生成到: D:\Users\TermiNexus\Desktop\TransPyC\Test\JsonTest\output + ├ INFO: [includes] 发现 Python 包文件: json\__init__.py + ├ INFO: [includes] 发现 Python 包文件: json\__parser.py + ├ INFO: [includes] 发现 Python 包文件: json\__writer.py + ├ INFO: [includes] 发现 Python 源文件: testcheck.py + ├ INFO: [includes] 发现 Python 包文件: w32\fileio.py + ├ INFO: [includes] 发现 Python 包文件: w32\win32base.py + ├ INFO: [includes] 发现 Python 包文件: w32\win32console.py + ├ INFO: [includes] 发现 Python 包文件: w32\win32file.py + ├ INFO: [includes] 发现 Python 包文件: w32\win32memory.py + ├ INFO: [includes] 发现 Python 包文件: w32\win32process.py + ├ INFO: [includes] 发现 Python 包文件: w32\win32sync.py + ├ INFO: [includes] 发现 Python 包文件: w32\winsock2.py + ├ INFO: [includes] 发现 Python 源文件: memhub.py + ├ INFO: [includes] 发现 Python 源文件: string.py + ├ INFO: [includes] 发现 Python 源文件: stdint.py + ├ INFO: [includes] 发现 Python 源文件: stdio.py + ├ INFO: [includes] 发现间接依赖: viperio.py + ├ INFO: [includes] 发现间接依赖: atom.py + ├ INFO: + [includes 编译] 找到 18 个 Python 源文件 + ├ INFO: 跳过(预编译): atom.py -> 271ea3decb810db2.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(声明文件): stdint.py + ├ INFO: 跳过(声明文件): stdio.py + ├ INFO: 跳过(预编译): string.py -> 9474791561654346.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(预编译): viperio.py -> c9f4be41ca1cc2b4.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(预编译): memhub.py -> f3560b99de458aec.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(预编译): __parser.py -> 240a9a4157959a9f.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(预编译): __writer.py -> 20cd49775c100a38.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(预编译): __init__.py -> 57288496f7c2d1ad.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(预编译): win32base.py -> 7e529fe7a078cfef.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(预编译): win32console.py -> bbdf3bbd4c3bc28c.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(预编译): testcheck.py -> 14d33679f7fadf1f.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(预编译): win32file.py -> f6b51804a0ba8ff0.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(预编译): fileio.py -> 0035c95a18d4f8e8.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(预编译): win32memory.py -> 72e2d5ccb7cedcf1.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(预编译): win32process.py -> 067c78e9f121dce3.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(预编译): win32sync.py -> 06f53cc594b4ac6c.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 跳过(预编译): winsock2.py -> 6446627d4f07a1b5.x86_64-pc-windows-gnu.pic.obj + ├ INFO: + [编译] 找到 1 个 .ll 文件需要编译 + ├ INFO: 并行编译 1 个文件 (workers=1) + ├ SUCCESS: 8a97754e9e3c2b9a.ll + ├ INFO: + [链接] 找到 1 个 .obj 文件 + ├ INFO: [链接] 额外库文件: 16 个 + ├ INFO: - 271ea3decb810db2.x86_64-pc-windows-gnu.pic.obj + ├ INFO: - 9474791561654346.x86_64-pc-windows-gnu.pic.obj + ├ INFO: - c9f4be41ca1cc2b4.x86_64-pc-windows-gnu.pic.obj + ├ INFO: - f3560b99de458aec.x86_64-pc-windows-gnu.pic.obj + ├ INFO: - 240a9a4157959a9f.x86_64-pc-windows-gnu.pic.obj + ├ INFO: - 20cd49775c100a38.x86_64-pc-windows-gnu.pic.obj + ├ INFO: - 57288496f7c2d1ad.x86_64-pc-windows-gnu.pic.obj + ├ INFO: - 7e529fe7a078cfef.x86_64-pc-windows-gnu.pic.obj + ├ INFO: - bbdf3bbd4c3bc28c.x86_64-pc-windows-gnu.pic.obj + ├ INFO: - 14d33679f7fadf1f.x86_64-pc-windows-gnu.pic.obj + ├ INFO: - f6b51804a0ba8ff0.x86_64-pc-windows-gnu.pic.obj + ├ INFO: - 0035c95a18d4f8e8.x86_64-pc-windows-gnu.pic.obj + ├ INFO: - 72e2d5ccb7cedcf1.x86_64-pc-windows-gnu.pic.obj + ├ INFO: - 067c78e9f121dce3.x86_64-pc-windows-gnu.pic.obj + ├ INFO: - 06f53cc594b4ac6c.x86_64-pc-windows-gnu.pic.obj + ├ INFO: - 6446627d4f07a1b5.x86_64-pc-windows-gnu.pic.obj + ├ INFO: 执行: clang++ -Wl,--allow-multiple-definition -Wl,--unresolved-symbols=ignore-in-object-files -o D:\Users\TermiNexus\Desktop\TransPyC\Test\JsonTest\output\JsonTest.exe D:\Users\TermiNexus\Desktop\TransPyC\Test\JsonTest\output\8a97754e9e3c2b9a.obj D:\Users\TermiNexus\Desktop\TransPyC\includes.binary\271ea3decb810db2.x86_64-pc-windows-gnu.pic.obj D:\Users\TermiNexus\Desktop\TransPyC\includes.binary\9474791561654346.x86_64-pc-windows-gnu.pic.obj D:\Users\TermiNexus\Desktop\TransPyC\includes.binary\c9f4be41ca1cc2b4.x86_64-pc-windows-gnu.pic.obj D:\Users\TermiNexus\Desktop\TransPyC\includes.binary\f3560b99de458aec.x86_64-pc-windows-gnu.pic.obj D:\Users\TermiNexus\Desktop\TransPyC\includes.binary\240a9a4157959a9f.x86_64-pc-windows-gnu.pic.obj D:\Users\TermiNexus\Desktop\TransPyC\includes.binary\20cd49775c100a38.x86_64-pc-windows-gnu.pic.obj D:\Users\TermiNexus\Desktop\TransPyC\includes.binary\57288496f7c2d1ad.x86_64-pc-windows-gnu.pic.obj D:\Users\TermiNexus\Desktop\TransPyC\includes.binary\7e529fe7a078cfef.x86_64-pc-windows-gnu.pic.obj D:\Users\TermiNexus\Desktop\TransPyC\includes.binary\bbdf3bbd4c3bc28c.x86_64-pc-windows-gnu.pic.obj D:\Users\TermiNexus\Desktop\TransPyC\includes.binary\14d33679f7fadf1f.x86_64-pc-windows-gnu.pic.obj D:\Users\TermiNexus\Desktop\TransPyC\includes.binary\f6b51804a0ba8ff0.x86_64-pc-windows-gnu.pic.obj D:\Users\TermiNexus\Desktop\TransPyC\includes.binary\0035c95a18d4f8e8.x86_64-pc-windows-gnu.pic.obj D:\Users\TermiNexus\Desktop\TransPyC\includes.binary\72e2d5ccb7cedcf1.x86_64-pc-windows-gnu.pic.obj D:\Users\TermiNexus\Desktop\TransPyC\includes.binary\067c78e9f121dce3.x86_64-pc-windows-gnu.pic.obj D:\Users\TermiNexus\Desktop\TransPyC\includes.binary\06f53cc594b4ac6c.x86_64-pc-windows-gnu.pic.obj D:\Users\TermiNexus\Desktop\TransPyC\includes.binary\6446627d4f07a1b5.x86_64-pc-windows-gnu.pic.obj -lmsvcrt -lucrt -lpthread -lmingwex -lkernel32 -luser32 -latomic + ├ ERROR: 链接失败: D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\JsonTest\output\8a97754e9e3c2b9a.obj:8a97754e9e3c2b9a_dso.ll:(.text+0x5f6): undefined reference to `8a97754e9e3c2b9a.parse' + D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\JsonTest\output\8a97754e9e3c2b9a.obj:8a97754e9e3c2b9a_dso.ll:(.text+0x652): undefined reference to `8a97754e9e3c2b9a.parse' + D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\JsonTest\output\8a97754e9e3c2b9a.obj:8a97754e9e3c2b9a_dso.ll:(.text+0x68e): undefined reference to `8a97754e9e3c2b9a.parse' + D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\JsonTest\output\8a97754e9e3c2b9a.obj:8a97754e9e3c2b9a_dso.ll:(.text+0x70e): undefined reference to `8a97754e9e3c2b9a.parse' + D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\JsonTest\output\8a97754e9e3c2b9a.obj:8a97754e9e3c2b9a_dso.ll:(.text+0x778): undefined reference to `8a97754e9e3c2b9a.parse' + D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\JsonTest\output\8a97754e9e3c2b9a.obj:8a97754e9e3c2b9a_dso.ll:(.text+0x7cc): more undefined references to `8a97754e9e3c2b9a.parse' follow + D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\JsonTest\output\8a97754e9e3c2b9a.obj:8a97754e9e3c2b9a_dso.ll:(.text+0xa2f): undefined reference to `8a97754e9e3c2b9a.write' + D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\JsonTest\output\8a97754e9e3c2b9a.obj:8a97754e9e3c2b9a_dso.ll:(.text+0xa86): undefined reference to `8a97754e9e3c2b9a.write' + D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\JsonTest\output\8a97754e9e3c2b9a.obj:8a97754e9e3c2b9a_dso.ll:(.text+0xad8): undefined reference to `8a97754e9e3c2b9a.write' + D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\JsonTest\output\8a97754e9e3c2b9a.obj:8a97754e9e3c2b9a_dso.ll:(.text+0xb2a): undefined reference to `8a97754e9e3c2b9a.write' + D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\JsonTest\output\8a97754e9e3c2b9a.obj:8a97754e9e3c2b9a_dso.ll:(.text+0xb7a): undefined reference to `8a97754e9e3c2b9a.write' + D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\JsonTest\output\8a97754e9e3c2b9a.obj:8a97754e9e3c2b9a_dso.ll:(.text+0xc3c): more undefined references to `8a97754e9e3c2b9a.write' follow + D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\JsonTest\output\8a97754e9e3c2b9a.obj:8a97754e9e3c2b9a_dso.ll:(.text+0xd57): undefined reference to `8a97754e9e3c2b9a.parse' + D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\JsonTest\output\8a97754e9e3c2b9a.obj:8a97754e9e3c2b9a_dso.ll:(.text+0x1178): undefined reference to `8a97754e9e3c2b9a.parse' + D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\JsonTest\output\8a97754e9e3c2b9a.obj:8a97754e9e3c2b9a_dso.ll:(.text+0x1222): undefined reference to `8a97754e9e3c2b9a.parse' + D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\JsonTest\output\8a97754e9e3c2b9a.obj:8a97754e9e3c2b9a_dso.ll:(.text+0x1292): undefined reference to `8a97754e9e3c2b9a.parse' + D:/msys64/mingw64/bin/ld: D:\Users\TermiNexus\Desktop\TransPyC\Test\JsonTest\output\8a97754e9e3c2b9a.obj:8a97754e9e3c2b9a_dso.ll:(.text+0x1302): undefined reference to `8a97754e9e3c2b9a.parse' + clang++: error: linker command failed with exit code 1 (use -v to see invocation) + ├ ERROR: + 链接失败,立即终止编译。 + +【SimdTest】编译失败 + ├ INFO: 读取配置文件: D:\Users\TermiNexus\Desktop\TransPyC\Test\SimdTest\project.json + ├ INFO: 项目目录: D:\Users\TermiNexus\Desktop\TransPyC\Test\SimdTest + ├ INFO: 源目录: D:\Users\TermiNexus\Desktop\TransPyC\Test\SimdTest\App + ├ INFO: 临时目录: D:\Users\TermiNexus\Desktop\TransPyC\Test\SimdTest\temp + ├ INFO: 输出目录: D:\Users\TermiNexus\Desktop\TransPyC\Test\SimdTest\output + ├ INFO: 阶段: all + ├ INFO: 编译器: llc -filetype=obj + ├ INFO: 目标三元组: x86_64-pc-windows-gnu + ├ INFO: 数据布局: e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128 + ├ INFO: output: 已清空 D:\Users\TermiNexus\Desktop\TransPyC\Test\SimdTest\output + ├ INFO: temp: 已清空 D:\Users\TermiNexus\Desktop\TransPyC\Test\SimdTest\temp + ├ INFO: 清理完成 + ├ INFO: 找到 1 个可达源文件(从入口遍历) + ├ INFO: [1/1] 生成签名: main.py + ├ INFO: -> 2fcb6780db4d937f.pyi (签名) + ├ INFO: 处理 13 个被引用的 Python 库文件 + ├ INFO: 缓存命中(全局): atom.py -> 271ea3decb810db2.pyi + ├ INFO: 缓存命中(全局): memhub.py -> f3560b99de458aec.pyi + ├ INFO: 生成签名: numpy\__init__.py -> c3a6aed1f1fb8b1e.pyi + ├ INFO: 缓存命中(全局): stdint.py -> f5522571bcce7bcb.pyi + ├ INFO: 缓存命中(全局): stdio.py -> 6f62fe05c5ea1ceb.pyi + ├ INFO: 缓存命中(全局): stdlib.py -> 90c53dd6db8d41cf.pyi + ├ INFO: 缓存命中(全局): string.py -> 9474791561654346.pyi + ├ INFO: 缓存命中(全局): testcheck.py -> 14d33679f7fadf1f.pyi + ├ INFO: 缓存命中(全局): viperio.py -> c9f4be41ca1cc2b4.pyi + ├ INFO: 生成签名: vipermath.py -> 3f7c5e78d8652535.pyi + ├ INFO: 生成签名: vipersimd.py -> c24f25b14b4bbd0a.pyi + ├ INFO: 缓存命中(全局): w32\win32base.py -> 7e529fe7a078cfef.pyi + ├ INFO: 缓存命中(全局): w32\win32console.py -> bbdf3bbd4c3bc28c.pyi + ├ INFO: 结构体注册表: 23 个类型, 0 个枚举 + ├ INFO: -> 2fcb6780db4d937f.stub.ll (声明) + ├ INFO: 缓存命中(全局): atom.py -> 271ea3decb810db2.stub.ll + ├ INFO: 缓存命中(全局): memhub.py -> f3560b99de458aec.stub.ll + ├ INFO: 生成声明: numpy\__init__.py -> c3a6aed1f1fb8b1e.stub.ll + ├ INFO: 缓存命中(全局): stdint.py -> f5522571bcce7bcb.stub.ll + ├ INFO: 缓存命中(全局): stdio.py -> 6f62fe05c5ea1ceb.stub.ll + ├ INFO: 缓存命中(全局): stdlib.py -> 90c53dd6db8d41cf.stub.ll + ├ INFO: 缓存命中(全局): string.py -> 9474791561654346.stub.ll + ├ INFO: 缓存命中(全局): testcheck.py -> 14d33679f7fadf1f.stub.ll + ├ INFO: 缓存命中(全局): viperio.py -> c9f4be41ca1cc2b4.stub.ll + ├ INFO: 生成声明: vipermath.py -> 3f7c5e78d8652535.stub.ll + ├ INFO: 生成声明: vipersimd.py -> c24f25b14b4bbd0a.stub.ll + ├ INFO: 缓存命中(全局): w32\win32base.py -> 7e529fe7a078cfef.stub.ll + ├ INFO: 缓存命中(全局): w32\win32console.py -> bbdf3bbd4c3bc28c.stub.ll + ├ SUCCESS: 声明接口生成到: D:\Users\TermiNexus\Desktop\TransPyC\Test\SimdTest\temp + ├ INFO: SHA1 映射表 (14 个文件): + ├ INFO: 找到 1 个可达源文件(已按依赖排序) + ├ INFO: 处理顺序: + ├ INFO: 1. main.py + ├ INFO: 过滤旧文件: stub 49->14, sig 93->14 + ├ INFO: [缓存] 构建共享符号表数据... + ├ INFO: [缓存] 共享符号表构建完成 (0.41s, 1038 符号, 5 泛型模板, 42 doc 元数据) + ├ INFO: + 需要翻译 1 个文件 + ├ WARN: HandlesImports: 忽略异常 Undefined function: 'printf' + ├ WARN: HandlesImports: 忽略异常 Undefined function: 'printf' + ├ WARN: HandlesImports: 忽略异常 Undefined function: 'printf' + ├ WARN: HandlesImports: 忽略异常 Undefined function: 'CUnsignedChar' + ├ INFO: -> 2fcb6780db4d937f.ll + ├ INFO: [1/1] main.py (3.2s) + ├ INFO: 翻译总耗时: 3.2s + ├ INFO: + [阶段二完成] .ll 文件生成到: D:\Users\TermiNexus\Desktop\TransPyC\Test\SimdTest\output + ├ INFO: [includes] 发现 Python 源文件: stdlib.py + ├ INFO: [includes] 发现 Python 源文件: memhub.py + ├ INFO: [includes] 发现 Python 源文件: vipersimd.py + ├ INFO: [includes] 发现 Python 源文件: stdio.py + ├ INFO: [includes] 发现 Python 源文件: stdint.py + ├ INFO: [includes] 发现 Python 源文件: testcheck.py + ├ INFO: [includes] 发现 Python 包文件: numpy\__init__.py + ├ INFO: [includes] 发现间接依赖: string.py + ├ INFO: [includes] 发现间接依赖: atom.py + ├ INFO: [includes] 发现间接依赖: viperio.py + ├ INFO: [includes] 发现间接依赖: w32\win32console.py + ├ INFO: [includes] 发现间接依赖: w32\win32base.py + ├ INFO: [includes] 发现间接依赖: vipermath.py + ├ INFO: + [includes 编译] 找到 13 个 Python 源文件 + ├ INFO: 跳过(声明文件): stdint.py + ├ INFO: 跳过(声明文件): stdio.py + ├ INFO: 跳过(声明文件): stdlib.py + ├ INFO: 跳过(预编译): string.py -> 9474791561654346.x86_64-pc-windows-gnu.static.obj + ├ INFO: 跳过(预编译): win32base.py -> 7e529fe7a078cfef.x86_64-pc-windows-gnu.static.obj + ├ INFO: 跳过(预编译): win32console.py -> bbdf3bbd4c3bc28c.x86_64-pc-windows-gnu.static.obj + ├ INFO: 跳过(预编译): testcheck.py -> 14d33679f7fadf1f.x86_64-pc-windows-gnu.static.obj + ├ INFO: 翻译 6 个文件 + ├ INFO: -> 271ea3decb810db2.ll + ├ INFO: [1/6] 翻译完成: atom.py + ├ INFO: -> c9f4be41ca1cc2b4.ll + ├ INFO: [2/6] 翻译完成: viperio.py + ├ INFO: -> c24f25b14b4bbd0a.ll + ├ INFO: [3/6] 翻译完成: vipersimd.py + ├ INFO: -> 3f7c5e78d8652535.ll + ├ INFO: [4/6] 翻译完成: vipermath.py + ├ INFO: -> f3560b99de458aec.ll + ├ INFO: [5/6] 翻译完成: memhub.py + ├ INFO: -> c3a6aed1f1fb8b1e.ll + ├ INFO: [6/6] 翻译完成: __init__.py + ├ INFO: 编译 6 个 .ll 文件 + ├ SUCCESS: [1/6] 编译成功: atom.py + ├ SUCCESS: [2/6] 编译成功: viperio.py + ├ SUCCESS: [3/6] 编译成功: vipersimd.py + ├ SUCCESS: [4/6] 编译成功: memhub.py + ├ SUCCESS: [5/6] 编译成功: vipermath.py + ├ SUCCESS: [6/6] 编译成功: __init__.py + ├ INFO: [清理] 删除 6 个过时文件 + ├ INFO: + [编译] 找到 1 个 .ll 文件需要编译 + ├ INFO: 并行编译 1 个文件 (workers=1) + ├ ERROR: 2fcb6780db4d937f.ll: llc.exe: error: llc.exe: D:\Users\TermiNexus\Desktop\TransPyC\Test\SimdTest\output\2fcb6780db4d937f_dso.ll:1934:1: error: expected instruction opcode + endif: + ^ + ├ ERROR: + 1 个文件编译失败 + [FATAL] 方法体编译失败 (ndarray[double].print_arr): Exception: Undefined function: 'printf' + Traceback (most recent call last): + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesFunctions.py", line 1741, in _EmitFunctionLlvm + self.Trans.BodyHandler.HandleBodyLlvm(func_body) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 32, in HandleBodyLlvm + self.Trans.IfHandler._HandleIfLlvm(Node) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesIf.py", line 193, in _HandleIfLlvm + self.Trans.BodyHandler.HandleBodyLlvm(Node.body) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 22, in HandleBodyLlvm + self.HandleExprLlvm(Node.value) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 77, in HandleExprLlvm + return self.Trans.ExprHandler.HandleExprLlvm(Node, VarType) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExpr.py", line 63, in HandleExprLlvm + return self.Trans.ExprCallHandle._HandleCallLlvm(Node) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprCall.py", line 352, in _HandleCallLlvm + raise Exception(f"Undefined function: '{FuncName}'") + Exception: Undefined function: 'printf' + [FATAL] 方法体编译失败 (ndarray[float].print_arr): Exception: Undefined function: 'printf' + Traceback (most recent call last): + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesFunctions.py", line 1741, in _EmitFunctionLlvm + self.Trans.BodyHandler.HandleBodyLlvm(func_body) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 32, in HandleBodyLlvm + self.Trans.IfHandler._HandleIfLlvm(Node) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesIf.py", line 193, in _HandleIfLlvm + self.Trans.BodyHandler.HandleBodyLlvm(Node.body) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 22, in HandleBodyLlvm + self.HandleExprLlvm(Node.value) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 77, in HandleExprLlvm + return self.Trans.ExprHandler.HandleExprLlvm(Node, VarType) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExpr.py", line 63, in HandleExprLlvm + return self.Trans.ExprCallHandle._HandleCallLlvm(Node) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprCall.py", line 352, in _HandleCallLlvm + raise Exception(f"Undefined function: '{FuncName}'") + Exception: Undefined function: 'printf' + [FATAL] 方法体编译失败 (ndarray[int].print_arr): Exception: Undefined function: 'printf' + Traceback (most recent call last): + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesFunctions.py", line 1741, in _EmitFunctionLlvm + self.Trans.BodyHandler.HandleBodyLlvm(func_body) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 32, in HandleBodyLlvm + self.Trans.IfHandler._HandleIfLlvm(Node) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesIf.py", line 193, in _HandleIfLlvm + self.Trans.BodyHandler.HandleBodyLlvm(Node.body) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 22, in HandleBodyLlvm + self.HandleExprLlvm(Node.value) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 77, in HandleExprLlvm + return self.Trans.ExprHandler.HandleExprLlvm(Node, VarType) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExpr.py", line 63, in HandleExprLlvm + return self.Trans.ExprCallHandle._HandleCallLlvm(Node) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprCall.py", line 352, in _HandleCallLlvm + raise Exception(f"Undefined function: '{FuncName}'") + Exception: Undefined function: 'printf' + [FATAL] 方法体编译失败 (ndarray[i32].print_arr): Exception: Undefined function: 'printf' + Traceback (most recent call last): + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesFunctions.py", line 1741, in _EmitFunctionLlvm + self.Trans.BodyHandler.HandleBodyLlvm(func_body) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 32, in HandleBodyLlvm + self.Trans.IfHandler._HandleIfLlvm(Node) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesIf.py", line 193, in _HandleIfLlvm + self.Trans.BodyHandler.HandleBodyLlvm(Node.body) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 22, in HandleBodyLlvm + self.HandleExprLlvm(Node.value) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 77, in HandleExprLlvm + return self.Trans.ExprHandler.HandleExprLlvm(Node, VarType) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExpr.py", line 63, in HandleExprLlvm + return self.Trans.ExprCallHandle._HandleCallLlvm(Node) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprCall.py", line 352, in _HandleCallLlvm + raise Exception(f"Undefined function: '{FuncName}'") + Exception: Undefined function: 'printf' + [FATAL] 方法体编译失败 (ndarray[i8].sum): Exception: Undefined function: 'CUnsignedChar' + Traceback (most recent call last): + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesFunctions.py", line 1741, in _EmitFunctionLlvm + self.Trans.BodyHandler.HandleBodyLlvm(func_body) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 30, in HandleBodyLlvm + self.Trans.AnnAssignHandler._HandleAnnAssignLlvm(Node) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesAnnAssign.py", line 289, in _HandleAnnAssignLlvm + self._HandleAnnAssignLlvmInner(Node) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesAnnAssign.py", line 487, in _HandleAnnAssignLlvmInner + InitValue = self.HandleExprLlvm(Node.value, VarType=VarType) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBase.py", line 526, in HandleExprLlvm + return self.Trans.ExprHandler.HandleExprLlvm(Node, VarType) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExpr.py", line 63, in HandleExprLlvm + return self.Trans.ExprCallHandle._HandleCallLlvm(Node) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprCall.py", line 352, in _HandleCallLlvm + raise Exception(f"Undefined function: '{FuncName}'") + Exception: Undefined function: 'CUnsignedChar' + [FATAL] 方法体编译失败 (ndarray[i8].sum): Exception: Undefined function: 'CUnsignedChar' + Traceback (most recent call last): + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesFunctions.py", line 1741, in _EmitFunctionLlvm + self.Trans.BodyHandler.HandleBodyLlvm(func_body) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 30, in HandleBodyLlvm + self.Trans.AnnAssignHandler._HandleAnnAssignLlvm(Node) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesAnnAssign.py", line 289, in _HandleAnnAssignLlvm + self._HandleAnnAssignLlvmInner(Node) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesAnnAssign.py", line 487, in _HandleAnnAssignLlvmInner + InitValue = self.HandleExprLlvm(Node.value, VarType=VarType) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBase.py", line 526, in HandleExprLlvm + return self.Trans.ExprHandler.HandleExprLlvm(Node, VarType) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExpr.py", line 63, in HandleExprLlvm + return self.Trans.ExprCallHandle._HandleCallLlvm(Node) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprCall.py", line 352, in _HandleCallLlvm + raise Exception(f"Undefined function: '{FuncName}'") + Exception: Undefined function: 'CUnsignedChar' + +【TestProject】编译失败 + ├ INFO: 读取配置文件: D:\Users\TermiNexus\Desktop\TransPyC\Test\TestProject\project.json + ├ INFO: 项目目录: D:\Users\TermiNexus\Desktop\TransPyC\Test\TestProject + ├ INFO: 源目录: D:\Users\TermiNexus\Desktop\TransPyC\Test\TestProject\App + ├ INFO: 临时目录: D:\Users\TermiNexus\Desktop\TransPyC\Test\TestProject\temp + ├ INFO: 输出目录: D:\Users\TermiNexus\Desktop\TransPyC\Test\TestProject\output + ├ INFO: 阶段: all + ├ INFO: 编译器: llc -filetype=obj + ├ INFO: 目标三元组: x86_64-pc-windows-gnu + ├ INFO: 数据布局: e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128 + ├ INFO: output: 已清空 D:\Users\TermiNexus\Desktop\TransPyC\Test\TestProject\output + ├ INFO: temp: 已清空 D:\Users\TermiNexus\Desktop\TransPyC\Test\TestProject\temp + ├ INFO: 清理完成 + ├ INFO: 找到 7 个可达源文件(从入口遍历) + ├ INFO: [1/7] 生成签名: config.py + ├ INFO: -> 8e0d8fdba991b3b4.pyi (签名) + ├ INFO: [2/7] 生成签名: main.py + ├ INFO: -> 49cae05490a513cb.pyi (签名) + ├ INFO: [3/7] 生成签名: test_numpy.py + ├ INFO: -> 3cd87018ba1e76bc.pyi (签名) + ├ INFO: [4/7] 生成签名: zc\class_test.py + ├ INFO: -> e5fb16127bce8f68.pyi (签名) + ├ INFO: [5/7] 生成签名: zc\config.py + ├ INFO: -> cfc83b830141b00e.pyi (签名) + ├ INFO: [6/7] 生成签名: zc\logic_test.py + ├ INFO: -> faec3233d98371da.pyi (签名) + ├ INFO: [7/7] 生成签名: zc\test.py + ├ INFO: -> 75583f20a922ab2e.pyi (签名) + ├ INFO: 处理 12 个被引用的 Python 库文件 + ├ INFO: 缓存命中(全局): atom.py -> 271ea3decb810db2.pyi + ├ INFO: 缓存命中(全局): memhub.py -> f3560b99de458aec.pyi + ├ INFO: 缓存命中(全局): numpy\__init__.py -> c3a6aed1f1fb8b1e.pyi + ├ INFO: 缓存命中(全局): stdint.py -> f5522571bcce7bcb.pyi + ├ INFO: 缓存命中(全局): stdio.py -> 6f62fe05c5ea1ceb.pyi + ├ INFO: 缓存命中(全局): stdlib.py -> 90c53dd6db8d41cf.pyi + ├ INFO: 缓存命中(全局): string.py -> 9474791561654346.pyi + ├ INFO: 缓存命中(全局): testcheck.py -> 14d33679f7fadf1f.pyi + ├ INFO: 缓存命中(全局): viperio.py -> c9f4be41ca1cc2b4.pyi + ├ INFO: 缓存命中(全局): vipermath.py -> 3f7c5e78d8652535.pyi + ├ INFO: 缓存命中(全局): w32\win32base.py -> 7e529fe7a078cfef.pyi + ├ INFO: 缓存命中(全局): w32\win32console.py -> bbdf3bbd4c3bc28c.pyi + ├ INFO: 结构体注册表: 30 个类型, 1 个枚举 + ├ INFO: -> 8e0d8fdba991b3b4.stub.ll (声明) + ├ INFO: -> 49cae05490a513cb.stub.ll (声明) + ├ INFO: -> 3cd87018ba1e76bc.stub.ll (声明) + ├ INFO: -> e5fb16127bce8f68.stub.ll (声明) + ├ INFO: -> cfc83b830141b00e.stub.ll (声明) + ├ INFO: -> faec3233d98371da.stub.ll (声明) + ├ INFO: -> 75583f20a922ab2e.stub.ll (声明) + ├ INFO: 缓存命中(全局): atom.py -> 271ea3decb810db2.stub.ll + ├ INFO: 缓存命中(全局): memhub.py -> f3560b99de458aec.stub.ll + ├ INFO: 缓存命中(全局): numpy\__init__.py -> c3a6aed1f1fb8b1e.stub.ll + ├ INFO: 缓存命中(全局): stdint.py -> f5522571bcce7bcb.stub.ll + ├ INFO: 缓存命中(全局): stdio.py -> 6f62fe05c5ea1ceb.stub.ll + ├ INFO: 缓存命中(全局): stdlib.py -> 90c53dd6db8d41cf.stub.ll + ├ INFO: 缓存命中(全局): string.py -> 9474791561654346.stub.ll + ├ INFO: 缓存命中(全局): testcheck.py -> 14d33679f7fadf1f.stub.ll + ├ INFO: 缓存命中(全局): viperio.py -> c9f4be41ca1cc2b4.stub.ll + ├ INFO: 缓存命中(全局): vipermath.py -> 3f7c5e78d8652535.stub.ll + ├ INFO: 缓存命中(全局): w32\win32base.py -> 7e529fe7a078cfef.stub.ll + ├ INFO: 缓存命中(全局): w32\win32console.py -> bbdf3bbd4c3bc28c.stub.ll + ├ SUCCESS: 声明接口生成到: D:\Users\TermiNexus\Desktop\TransPyC\Test\TestProject\temp + ├ INFO: SHA1 映射表 (19 个文件): + ├ INFO: 找到 7 个可达源文件(已按依赖排序) + ├ INFO: 处理顺序: + ├ INFO: 1. config.py + ├ INFO: 2. test_numpy.py + ├ INFO: 3. zc\class_test.py + ├ INFO: 4. zc\config.py + ├ INFO: 5. zc\logic_test.py + ├ INFO: 6. zc\test.py + ├ INFO: 7. main.py + ├ INFO: 过滤旧文件: stub 63->19, sig 114->19 + ├ INFO: [缓存] 构建共享符号表数据... + ├ INFO: [缓存] 共享符号表构建完成 (0.52s, 1199 符号, 5 泛型模板, 57 doc 元数据) + ├ INFO: + 需要翻译 7 个文件 + ├ INFO: 并行翻译 (workers=7) + ├ INFO: 共享符号表已序列化 (541KB) + ├ INFO: -> 8e0d8fdba991b3b4.ll + ├ INFO: [1/7] 完成: config.py + ├ INFO: -> cfc83b830141b00e.ll + ├ INFO: [2/7] 完成: zc\config.py + ├ INFO: -> e5fb16127bce8f68.ll + ├ INFO: [3/7] 完成: zc\class_test.py + ├ INFO: -> faec3233d98371da.ll + ├ INFO: [4/7] 完成: zc\logic_test.py + ├ INFO: -> 75583f20a922ab2e.ll + ├ INFO: [5/7] 完成: zc\test.py + ├ INFO: -> 49cae05490a513cb.ll + ├ INFO: [6/7] 完成: main.py + ├ WARN: HandlesImports: 忽略异常 Undefined function: 'printf' + ├ WARN: HandlesImports: 忽略异常 Undefined function: 'printf' + ├ WARN: HandlesImports: 忽略异常 Undefined function: 'printf' + ├ WARN: HandlesImports: 忽略异常 Undefined function: 'CUnsignedChar' + ├ INFO: -> 3cd87018ba1e76bc.ll + ├ INFO: [7/7] 完成: test_numpy.py + ├ INFO: 翻译总耗时: 8.2s + ├ INFO: + [阶段二完成] .ll 文件生成到: D:\Users\TermiNexus\Desktop\TransPyC\Test\TestProject\output + ├ INFO: [includes] 发现 Python 源文件: testcheck.py + ├ INFO: [includes] 发现 Python 源文件: vipermath.py + ├ INFO: [includes] 发现 Python 源文件: stdint.py + ├ INFO: [includes] 发现 Python 包文件: numpy\__init__.py + ├ INFO: [includes] 发现 Python 源文件: stdlib.py + ├ INFO: [includes] 发现 Python 源文件: string.py + ├ INFO: [includes] 发现 Python 源文件: stdio.py + ├ INFO: [includes] 发现 Python 源文件: memhub.py + ├ INFO: [includes] 发现间接依赖: w32\win32console.py + ├ INFO: [includes] 发现间接依赖: w32\win32base.py + ├ INFO: [includes] 发现间接依赖: atom.py + ├ INFO: [includes] 发现间接依赖: viperio.py + ├ INFO: + [includes 编译] 找到 12 个 Python 源文件 + ├ INFO: 跳过(预编译): atom.py -> 271ea3decb810db2.x86_64-pc-windows-gnu.static.obj + ├ INFO: 跳过(声明文件): stdint.py + ├ INFO: 跳过(声明文件): stdio.py + ├ INFO: 跳过(声明文件): stdlib.py + ├ INFO: 跳过(预编译): string.py -> 9474791561654346.x86_64-pc-windows-gnu.static.obj + ├ INFO: 跳过(预编译): viperio.py -> c9f4be41ca1cc2b4.x86_64-pc-windows-gnu.static.obj + ├ INFO: 跳过(预编译): memhub.py -> f3560b99de458aec.x86_64-pc-windows-gnu.static.obj + ├ INFO: 跳过(预编译): vipermath.py -> 3f7c5e78d8652535.x86_64-pc-windows-gnu.static.obj + ├ INFO: 跳过(预编译): __init__.py -> c3a6aed1f1fb8b1e.x86_64-pc-windows-gnu.static.obj + ├ INFO: 跳过(预编译): win32base.py -> 7e529fe7a078cfef.x86_64-pc-windows-gnu.static.obj + ├ INFO: 跳过(预编译): win32console.py -> bbdf3bbd4c3bc28c.x86_64-pc-windows-gnu.static.obj + ├ INFO: 跳过(预编译): testcheck.py -> 14d33679f7fadf1f.x86_64-pc-windows-gnu.static.obj + ├ INFO: + [编译] 找到 7 个 .ll 文件需要编译 + ├ INFO: 并行编译 7 个文件 (workers=7) + ├ SUCCESS: 8e0d8fdba991b3b4.ll + ├ SUCCESS: 49cae05490a513cb.ll + ├ ERROR: 3cd87018ba1e76bc.ll: llc.exe: error: llc.exe: D:\Users\TermiNexus\Desktop\TransPyC\Test\TestProject\output\3cd87018ba1e76bc_dso.ll:1761:1: error: expected instruction opcode + endif: + ^ + ├ SUCCESS: e5fb16127bce8f68.ll + ├ SUCCESS: cfc83b830141b00e.ll + ├ SUCCESS: 75583f20a922ab2e.ll + ├ SUCCESS: faec3233d98371da.ll + ├ ERROR: + 1 个文件编译失败 + [FATAL] 方法体编译失败 (ndarray[double].print_arr): Exception: Undefined function: 'printf' + Traceback (most recent call last): + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesFunctions.py", line 1741, in _EmitFunctionLlvm + self.Trans.BodyHandler.HandleBodyLlvm(func_body) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 32, in HandleBodyLlvm + self.Trans.IfHandler._HandleIfLlvm(Node) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesIf.py", line 193, in _HandleIfLlvm + self.Trans.BodyHandler.HandleBodyLlvm(Node.body) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 22, in HandleBodyLlvm + self.HandleExprLlvm(Node.value) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 77, in HandleExprLlvm + return self.Trans.ExprHandler.HandleExprLlvm(Node, VarType) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExpr.py", line 63, in HandleExprLlvm + return self.Trans.ExprCallHandle._HandleCallLlvm(Node) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprCall.py", line 352, in _HandleCallLlvm + raise Exception(f"Undefined function: '{FuncName}'") + Exception: Undefined function: 'printf' + [FATAL] 方法体编译失败 (ndarray[float].print_arr): Exception: Undefined function: 'printf' + Traceback (most recent call last): + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesFunctions.py", line 1741, in _EmitFunctionLlvm + self.Trans.BodyHandler.HandleBodyLlvm(func_body) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 32, in HandleBodyLlvm + self.Trans.IfHandler._HandleIfLlvm(Node) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesIf.py", line 193, in _HandleIfLlvm + self.Trans.BodyHandler.HandleBodyLlvm(Node.body) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 22, in HandleBodyLlvm + self.HandleExprLlvm(Node.value) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 77, in HandleExprLlvm + return self.Trans.ExprHandler.HandleExprLlvm(Node, VarType) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExpr.py", line 63, in HandleExprLlvm + return self.Trans.ExprCallHandle._HandleCallLlvm(Node) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprCall.py", line 352, in _HandleCallLlvm + raise Exception(f"Undefined function: '{FuncName}'") + Exception: Undefined function: 'printf' + [FATAL] 方法体编译失败 (ndarray[int].print_arr): Exception: Undefined function: 'printf' + Traceback (most recent call last): + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesFunctions.py", line 1741, in _EmitFunctionLlvm + self.Trans.BodyHandler.HandleBodyLlvm(func_body) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 32, in HandleBodyLlvm + self.Trans.IfHandler._HandleIfLlvm(Node) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesIf.py", line 193, in _HandleIfLlvm + self.Trans.BodyHandler.HandleBodyLlvm(Node.body) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 22, in HandleBodyLlvm + self.HandleExprLlvm(Node.value) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 77, in HandleExprLlvm + return self.Trans.ExprHandler.HandleExprLlvm(Node, VarType) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExpr.py", line 63, in HandleExprLlvm + return self.Trans.ExprCallHandle._HandleCallLlvm(Node) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprCall.py", line 352, in _HandleCallLlvm + raise Exception(f"Undefined function: '{FuncName}'") + Exception: Undefined function: 'printf' + [FATAL] 方法体编译失败 (ndarray[i32].print_arr): Exception: Undefined function: 'printf' + Traceback (most recent call last): + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesFunctions.py", line 1741, in _EmitFunctionLlvm + self.Trans.BodyHandler.HandleBodyLlvm(func_body) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 32, in HandleBodyLlvm + self.Trans.IfHandler._HandleIfLlvm(Node) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesIf.py", line 193, in _HandleIfLlvm + self.Trans.BodyHandler.HandleBodyLlvm(Node.body) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 22, in HandleBodyLlvm + self.HandleExprLlvm(Node.value) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 77, in HandleExprLlvm + return self.Trans.ExprHandler.HandleExprLlvm(Node, VarType) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExpr.py", line 63, in HandleExprLlvm + return self.Trans.ExprCallHandle._HandleCallLlvm(Node) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprCall.py", line 352, in _HandleCallLlvm + raise Exception(f"Undefined function: '{FuncName}'") + Exception: Undefined function: 'printf' + [FATAL] 方法体编译失败 (ndarray[i8].sum): Exception: Undefined function: 'CUnsignedChar' + Traceback (most recent call last): + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesFunctions.py", line 1741, in _EmitFunctionLlvm + self.Trans.BodyHandler.HandleBodyLlvm(func_body) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 30, in HandleBodyLlvm + self.Trans.AnnAssignHandler._HandleAnnAssignLlvm(Node) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesAnnAssign.py", line 289, in _HandleAnnAssignLlvm + self._HandleAnnAssignLlvmInner(Node) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesAnnAssign.py", line 487, in _HandleAnnAssignLlvmInner + InitValue = self.HandleExprLlvm(Node.value, VarType=VarType) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBase.py", line 526, in HandleExprLlvm + return self.Trans.ExprHandler.HandleExprLlvm(Node, VarType) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExpr.py", line 63, in HandleExprLlvm + return self.Trans.ExprCallHandle._HandleCallLlvm(Node) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprCall.py", line 352, in _HandleCallLlvm + raise Exception(f"Undefined function: '{FuncName}'") + Exception: Undefined function: 'CUnsignedChar' + [FATAL] 方法体编译失败 (ndarray[i8].sum): Exception: Undefined function: 'CUnsignedChar' + Traceback (most recent call last): + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesFunctions.py", line 1741, in _EmitFunctionLlvm + self.Trans.BodyHandler.HandleBodyLlvm(func_body) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 30, in HandleBodyLlvm + self.Trans.AnnAssignHandler._HandleAnnAssignLlvm(Node) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesAnnAssign.py", line 289, in _HandleAnnAssignLlvm + self._HandleAnnAssignLlvmInner(Node) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesAnnAssign.py", line 487, in _HandleAnnAssignLlvmInner + InitValue = self.HandleExprLlvm(Node.value, VarType=VarType) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBase.py", line 526, in HandleExprLlvm + return self.Trans.ExprHandler.HandleExprLlvm(Node, VarType) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExpr.py", line 63, in HandleExprLlvm + return self.Trans.ExprCallHandle._HandleCallLlvm(Node) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprCall.py", line 352, in _HandleCallLlvm + raise Exception(f"Undefined function: '{FuncName}'") + Exception: Undefined function: 'CUnsignedChar' + +【TestProject2】编译失败 + ... (省略前 17 行) ... + ├ INFO: 处理 22 个被引用的 Python 库文件 + ├ INFO: 缓存命中(全局): atom.py -> 271ea3decb810db2.pyi + ├ INFO: 生成签名: binascii.py -> 257e074b935c33b4.pyi + ├ INFO: 生成签名: hashlib\__init__.py -> 96837bcc64032444.pyi + ├ INFO: 生成签名: hashlib\__md5.py -> 19f8024d10c828e8.pyi + ├ INFO: 生成签名: hashlib\__sha1.py -> 0df65b8ed15664b0.pyi + ├ INFO: 生成签名: hashlib\__sha256.py -> c9d54a4158f7f5a8.pyi + ├ INFO: 生成签名: hashlib\__sha512.py -> 6ff26590374ae6fc.pyi + ├ INFO: 缓存命中(全局): memhub.py -> f3560b99de458aec.pyi + ├ INFO: 缓存命中(全局): stdint.py -> f5522571bcce7bcb.pyi + ├ INFO: 缓存命中(全局): stdio.py -> 6f62fe05c5ea1ceb.pyi + ├ INFO: 缓存命中(全局): stdlib.py -> 90c53dd6db8d41cf.pyi + ├ INFO: 缓存命中(全局): string.py -> 9474791561654346.pyi + ├ INFO: 缓存命中(全局): testcheck.py -> 14d33679f7fadf1f.pyi + ├ INFO: 缓存命中(全局): viperio.py -> c9f4be41ca1cc2b4.pyi + ├ INFO: 缓存命中(全局): w32\win32base.py -> 7e529fe7a078cfef.pyi + ├ INFO: 缓存命中(全局): w32\win32console.py -> bbdf3bbd4c3bc28c.pyi + ├ INFO: 生成签名: zlib\pyzlib.py -> 1c46d554b3a3f9f3.pyi + ├ INFO: 生成签名: zlib\zchecksum.py -> 8ebed83a7817fa0c.pyi + ├ INFO: 生成签名: zlib\zdef.py -> 213348433fb01cc6.pyi + ├ INFO: 生成签名: zlib\zdeflate.py -> 90921d009fdd674c.pyi + ├ INFO: 生成签名: zlib\zhuff.py -> d541ade6afb689a5.pyi + ├ INFO: 生成签名: zlib\zinflate.py -> 451745df21e598af.pyi + ├ INFO: 结构体注册表: 35 个类型, 0 个枚举 + ├ INFO: -> 541a1ed9b8be53c8.stub.ll (声明) + ├ INFO: -> cfc83b830141b00e.stub.ll (声明) + ├ INFO: 缓存命中(全局): atom.py -> 271ea3decb810db2.stub.ll + ├ INFO: 生成声明: binascii.py -> 257e074b935c33b4.stub.ll + ├ INFO: 生成声明: hashlib\__init__.py -> 96837bcc64032444.stub.ll + ├ INFO: 生成声明: hashlib\__md5.py -> 19f8024d10c828e8.stub.ll + ├ INFO: 生成声明: hashlib\__sha1.py -> 0df65b8ed15664b0.stub.ll + ├ INFO: 生成声明: hashlib\__sha256.py -> c9d54a4158f7f5a8.stub.ll + ├ INFO: 生成声明: hashlib\__sha512.py -> 6ff26590374ae6fc.stub.ll + ├ INFO: 缓存命中(全局): memhub.py -> f3560b99de458aec.stub.ll + ├ INFO: 缓存命中(全局): stdint.py -> f5522571bcce7bcb.stub.ll + ├ INFO: 缓存命中(全局): stdio.py -> 6f62fe05c5ea1ceb.stub.ll + ├ INFO: 缓存命中(全局): stdlib.py -> 90c53dd6db8d41cf.stub.ll + ├ INFO: 缓存命中(全局): string.py -> 9474791561654346.stub.ll + ├ INFO: 缓存命中(全局): testcheck.py -> 14d33679f7fadf1f.stub.ll + ├ INFO: 缓存命中(全局): viperio.py -> c9f4be41ca1cc2b4.stub.ll + ├ INFO: 缓存命中(全局): w32\win32base.py -> 7e529fe7a078cfef.stub.ll + ├ INFO: 缓存命中(全局): w32\win32console.py -> bbdf3bbd4c3bc28c.stub.ll + ├ INFO: 生成声明: zlib\pyzlib.py -> 1c46d554b3a3f9f3.stub.ll + ├ INFO: 生成声明: zlib\zchecksum.py -> 8ebed83a7817fa0c.stub.ll + ├ INFO: 生成声明: zlib\zdef.py -> 213348433fb01cc6.stub.ll + ├ INFO: 生成声明: zlib\zdeflate.py -> 90921d009fdd674c.stub.ll + ├ INFO: 生成声明: zlib\zhuff.py -> d541ade6afb689a5.stub.ll + ├ INFO: 生成声明: zlib\zinflate.py -> 451745df21e598af.stub.ll + ├ SUCCESS: 声明接口生成到: D:\Users\TermiNexus\Desktop\TransPyC\Test\TestProject2\temp + ├ INFO: SHA1 映射表 (24 个文件): + ├ INFO: 找到 2 个可达源文件(已按依赖排序) + ├ INFO: 处理顺序: + ├ INFO: 1. main.py + ├ INFO: 2. zc\config.py + ├ INFO: 过滤旧文件: stub 70->24, sig 127->24 + ├ INFO: [缓存] 构建共享符号表数据... + ├ INFO: [缓存] 共享符号表构建完成 (0.65s, 951 符号, 5 泛型模板, 58 doc 元数据) + ├ INFO: + 需要翻译 2 个文件 + ├ INFO: 并行翻译 (workers=2) + ├ INFO: 共享符号表已序列化 (451KB) + ├ INFO: -> cfc83b830141b00e.ll + ├ INFO: [1/2] 完成: zc\config.py + ├ INFO: -> 541a1ed9b8be53c8.ll + ├ INFO: [2/2] 完成: main.py + ├ INFO: 翻译总耗时: 0.9s + ├ INFO: + [阶段二完成] .ll 文件生成到: D:\Users\TermiNexus\Desktop\TransPyC\Test\TestProject2\output + ├ INFO: [includes] 发现 Python 包文件: w32\fileio.py + ├ INFO: [includes] 发现 Python 包文件: w32\win32base.py + ├ INFO: [includes] 发现 Python 包文件: w32\win32console.py + ├ INFO: [includes] 发现 Python 包文件: w32\win32file.py + ├ INFO: [includes] 发现 Python 包文件: w32\win32memory.py + ├ INFO: [includes] 发现 Python 包文件: w32\win32process.py + ├ INFO: [includes] 发现 Python 包文件: w32\win32sync.py + ├ INFO: [includes] 发现 Python 包文件: w32\winsock2.py + ├ INFO: [includes] 发现 Python 源文件: stdint.py + ├ INFO: [includes] 发现 Python 源文件: testcheck.py + ├ INFO: [includes] 发现 Python 包文件: zlib\pyzlib.py + ├ INFO: [includes] 发现 Python 包文件: zlib\zchecksum.py + ├ INFO: [includes] 发现 Python 包文件: zlib\zdef.py + ├ INFO: [includes] 发现 Python 包文件: zlib\zdeflate.py + ├ INFO: [includes] 发现 Python 包文件: zlib\zhuff.py + ├ INFO: [includes] 发现 Python 包文件: zlib\zinflate.py + ├ INFO: [includes] 发现 Python 包文件: zlib\__init__.py + ├ INFO: [includes] 发现 Python 包文件: hashlib\__init__.py + ├ INFO: [includes] 发现 Python 包文件: hashlib\__md5.py + ├ INFO: [includes] 发现 Python 包文件: hashlib\__sha1.py + ├ INFO: [includes] 发现 Python 包文件: hashlib\__sha256.py + ├ INFO: [includes] 发现 Python 包文件: hashlib\__sha512.py + ├ INFO: [includes] 发现 Python 源文件: binascii.py + ├ INFO: [includes] 发现间接依赖: stdio.py + ├ INFO: [includes] 发现间接依赖: stdlib.py + ├ INFO: [includes] 发现间接依赖: string.py + ├ INFO: [includes] 发现间接依赖: memhub.py + ├ INFO: [includes] 发现间接依赖: atom.py + ├ INFO: [includes] 发现间接依赖: viperio.py + ├ INFO: + [includes 编译] 找到 29 个 Python 源文件 + ├ INFO: 跳过(预编译): atom.py -> 271ea3decb810db2.x86_64-pc-windows-gnu.static.obj + ├ INFO: 跳过(声明文件): stdint.py + ├ INFO: 跳过(声明文件): stdio.py + ├ INFO: 跳过(声明文件): stdlib.py + ├ INFO: 跳过(预编译): string.py -> 9474791561654346.x86_64-pc-windows-gnu.static.obj + ├ INFO: 跳过(声明文件): __init__.py + ├ INFO: 跳过(预编译): viperio.py -> c9f4be41ca1cc2b4.x86_64-pc-windows-gnu.static.obj + ├ INFO: 跳过(预编译): memhub.py -> f3560b99de458aec.x86_64-pc-windows-gnu.static.obj + ├ INFO: 跳过(预编译): win32base.py -> 7e529fe7a078cfef.x86_64-pc-windows-gnu.static.obj + ├ INFO: 跳过(预编译): win32console.py -> bbdf3bbd4c3bc28c.x86_64-pc-windows-gnu.static.obj + ├ INFO: 跳过(预编译): testcheck.py -> 14d33679f7fadf1f.x86_64-pc-windows-gnu.static.obj + ├ INFO: 跳过(预编译): win32file.py -> f6b51804a0ba8ff0.x86_64-pc-windows-gnu.static.obj + ├ INFO: 跳过(预编译): fileio.py -> 0035c95a18d4f8e8.x86_64-pc-windows-gnu.static.obj + ├ INFO: 跳过(预编译): win32memory.py -> 72e2d5ccb7cedcf1.x86_64-pc-windows-gnu.static.obj + ├ INFO: 跳过(预编译): win32process.py -> 067c78e9f121dce3.x86_64-pc-windows-gnu.static.obj + ├ INFO: 跳过(预编译): win32sync.py -> 06f53cc594b4ac6c.x86_64-pc-windows-gnu.static.obj + ├ INFO: 跳过(预编译): winsock2.py -> 6446627d4f07a1b5.x86_64-pc-windows-gnu.static.obj + ├ INFO: 跳过(声明文件): __init__.py + ├ INFO: 翻译 11 个文件 + ├ INFO: -> c9d54a4158f7f5a8.ll + ├ INFO: [1/11] 翻译完成: __sha256.py + ├ INFO: -> 257e074b935c33b4.ll + ├ INFO: [2/11] 翻译完成: binascii.py + ├ ERROR: __sha512.py: Type of #2 arg mismatch: i8* != i32 + 源代码 (D:\Users\TermiNexus\Desktop\TransPyC\includes\hashlib\__sha512.py, line 48): + 48 | memset(self, 0, sha512.__sizeof__()) + Type of #2 arg mismatch: i8* != i32 + Traceback (most recent call last): + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\Projectrans\Phase2Translator.py", line 1039, in _translate_file + result = trans.Convert( + ^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\Shell\TransPyC.py", line 555, in Convert + code: str = self.translator.GenerateCCode(Tree, target='llvm') + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Translator\LlvmGenerator.py", line 642, in GenerateCCode + return self.GenerateLlvmDirect(Tree) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Translator\LlvmGenerator.py", line 164, in GenerateLlvmDirect + self.ClassHandler._EmitClassLlvm(Node, Gen) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesClassDef.py", line 675, in _EmitClassLlvm + self.Trans.FunctionHandler._EmitFunctionLlvm(item, Gen, ClassName=ClassName) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesFunctions.py", line 1741, in _EmitFunctionLlvm + self.Trans.BodyHandler.HandleBodyLlvm(func_body) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 22, in HandleBodyLlvm + self.HandleExprLlvm(Node.value) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 77, in HandleExprLlvm + return self.Trans.ExprHandler.HandleExprLlvm(Node, VarType) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExpr.py", line 63, in HandleExprLlvm + return self.Trans.ExprCallHandle._HandleCallLlvm(Node) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprCall.py", line 255, in _HandleCallLlvm + result = self.Trans.ExprBuiltinHandle._HandleBuiltinCallLlvm(Node) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprBuiltin.py", line 185, in _HandleBuiltinCallLlvm + return self._HandleMemsetLlvm(Node.args) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprBuiltin.py", line 804, in _HandleMemsetLlvm + Gen.builder.call(memset_func, [dst, val, size], name="memset_call") + File "D:\Python312\Lib\site-packages\llvmlite\ir\builder.py", line 881, in call + inst = instructions.CallInstr(self.block, fn, args, name=name, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Python312\Lib\site-packages\llvmlite\ir\instructions.py", line 105, in __init__ + raise TypeError(msg) + TypeError: Type of #2 arg mismatch: i8* != i32 + + The above exception was the direct cause of the following exception: + + Traceback (most recent call last): + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\Projectrans\Phase2Translator.py", line 89, in _parallel_translate_worker + trans._translate_file(src_path, out_path, prebuilt_ModuleSha1Map=prebuilt_ModuleSha1Map) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\Projectrans\Phase2Translator.py", line 1055, in _translate_file + raise type(e)(enriched) from e + TypeError: Type of #2 arg mismatch: i8* != i32 + 源代码 (D:\Users\TermiNexus\Desktop\TransPyC\includes\hashlib\__sha512.py, line 48): + 48 | memset(self, 0, sha512.__sizeof__()) + Type of #2 arg mismatch: i8* != i32 + + ├ INFO: -> 19f8024d10c828e8.ll + ├ INFO: [4/11] 翻译完成: __md5.py + ├ INFO: -> 0df65b8ed15664b0.ll + ├ INFO: [5/11] 翻译完成: __sha1.py + ├ INFO: -> 8ebed83a7817fa0c.ll + ├ INFO: [6/11] 翻译完成: zchecksum.py + ├ INFO: -> 213348433fb01cc6.ll + ├ INFO: [7/11] 翻译完成: zdef.py + ├ ERROR: zhuff.py: Type of #2 arg mismatch: i8* != i32 + 源代码 (D:\Users\TermiNexus\Desktop\TransPyC\includes\zlib\zhuff.py, line 32): + 32 | memset(bl_count, 0, bl_count.__sizeof__()) + Type of #2 arg mismatch: i8* != i32 + Traceback (most recent call last): + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\Projectrans\Phase2Translator.py", line 1039, in _translate_file + result = trans.Convert( + ^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\Shell\TransPyC.py", line 555, in Convert + code: str = self.translator.GenerateCCode(Tree, target='llvm') + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Translator\LlvmGenerator.py", line 642, in GenerateCCode + return self.GenerateLlvmDirect(Tree) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Translator\LlvmGenerator.py", line 164, in GenerateLlvmDirect + self.ClassHandler._EmitClassLlvm(Node, Gen) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesClassDef.py", line 675, in _EmitClassLlvm + self.Trans.FunctionHandler._EmitFunctionLlvm(item, Gen, ClassName=ClassName) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesFunctions.py", line 1741, in _EmitFunctionLlvm + self.Trans.BodyHandler.HandleBodyLlvm(func_body) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 22, in HandleBodyLlvm + self.HandleExprLlvm(Node.value) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 77, in HandleExprLlvm + return self.Trans.ExprHandler.HandleExprLlvm(Node, VarType) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExpr.py", line 63, in HandleExprLlvm + return self.Trans.ExprCallHandle._HandleCallLlvm(Node) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprCall.py", line 255, in _HandleCallLlvm + result = self.Trans.ExprBuiltinHandle._HandleBuiltinCallLlvm(Node) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprBuiltin.py", line 185, in _HandleBuiltinCallLlvm + return self._HandleMemsetLlvm(Node.args) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprBuiltin.py", line 804, in _HandleMemsetLlvm + Gen.builder.call(memset_func, [dst, val, size], name="memset_call") + File "D:\Python312\Lib\site-packages\llvmlite\ir\builder.py", line 881, in call + inst = instructions.CallInstr(self.block, fn, args, name=name, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Python312\Lib\site-packages\llvmlite\ir\instructions.py", line 105, in __init__ + raise TypeError(msg) + TypeError: Type of #2 arg mismatch: i8* != i32 + + The above exception was the direct cause of the following exception: + + Traceback (most recent call last): + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\Projectrans\Phase2Translator.py", line 89, in _parallel_translate_worker + trans._translate_file(src_path, out_path, prebuilt_ModuleSha1Map=prebuilt_ModuleSha1Map) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\Projectrans\Phase2Translator.py", line 1055, in _translate_file + raise type(e)(enriched) from e + TypeError: Type of #2 arg mismatch: i8* != i32 + 源代码 (D:\Users\TermiNexus\Desktop\TransPyC\includes\zlib\zhuff.py, line 32): + 32 | memset(bl_count, 0, bl_count.__sizeof__()) + Type of #2 arg mismatch: i8* != i32 + + ├ INFO: -> 451745df21e598af.ll + ├ INFO: [9/11] 翻译完成: zinflate.py + ├ INFO: -> 90921d009fdd674c.ll + ├ INFO: [10/11] 翻译完成: zdeflate.py + ├ INFO: -> 1c46d554b3a3f9f3.ll + ├ INFO: [11/11] 翻译完成: pyzlib.py + ├ ERROR: + 2 个 include 文件翻译失败 + [FATAL] 方法体编译失败 (sha512.__init__): TypeError: Type of #2 arg mismatch: i8* != i32 + Traceback (most recent call last): + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesFunctions.py", line 1741, in _EmitFunctionLlvm + self.Trans.BodyHandler.HandleBodyLlvm(func_body) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 22, in HandleBodyLlvm + self.HandleExprLlvm(Node.value) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 77, in HandleExprLlvm + return self.Trans.ExprHandler.HandleExprLlvm(Node, VarType) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExpr.py", line 63, in HandleExprLlvm + return self.Trans.ExprCallHandle._HandleCallLlvm(Node) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprCall.py", line 255, in _HandleCallLlvm + result = self.Trans.ExprBuiltinHandle._HandleBuiltinCallLlvm(Node) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprBuiltin.py", line 185, in _HandleBuiltinCallLlvm + return self._HandleMemsetLlvm(Node.args) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprBuiltin.py", line 804, in _HandleMemsetLlvm + Gen.builder.call(memset_func, [dst, val, size], name="memset_call") + File "D:\Python312\Lib\site-packages\llvmlite\ir\builder.py", line 881, in call + inst = instructions.CallInstr(self.block, fn, args, name=name, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Python312\Lib\site-packages\llvmlite\ir\instructions.py", line 105, in __init__ + raise TypeError(msg) + TypeError: Type of #2 arg mismatch: i8* != i32 + [FATAL] 方法体编译失败 (zhuff_tree.build_codes): TypeError: Type of #2 arg mismatch: i8* != i32 + Traceback (most recent call last): + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesFunctions.py", line 1741, in _EmitFunctionLlvm + self.Trans.BodyHandler.HandleBodyLlvm(func_body) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 22, in HandleBodyLlvm + self.HandleExprLlvm(Node.value) + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesBody.py", line 77, in HandleExprLlvm + return self.Trans.ExprHandler.HandleExprLlvm(Node, VarType) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExpr.py", line 63, in HandleExprLlvm + return self.Trans.ExprCallHandle._HandleCallLlvm(Node) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprCall.py", line 255, in _HandleCallLlvm + result = self.Trans.ExprBuiltinHandle._HandleBuiltinCallLlvm(Node) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprBuiltin.py", line 185, in _HandleBuiltinCallLlvm + return self._HandleMemsetLlvm(Node.args) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Users\TermiNexus\Desktop\TransPyC\lib\core\Handles\HandlesExprBuiltin.py", line 804, in _HandleMemsetLlvm + Gen.builder.call(memset_func, [dst, val, size], name="memset_call") + File "D:\Python312\Lib\site-packages\llvmlite\ir\builder.py", line 881, in call + inst = instructions.CallInstr(self.block, fn, args, name=name, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Python312\Lib\site-packages\llvmlite\ir\instructions.py", line 105, in __init__ + raise TypeError(msg) + TypeError: Type of #2 arg mismatch: i8* != i32 + +【LLvmLiteTest】运行失败 (编译耗时 21.8s) + [运行] LLvmLiteTest.exe: 退出码 3221225477 + +【StructTest】运行失败 (编译耗时 4.9s) + [运行] StructTest.exe: 退出码 3221225477 + +====================================================================== +有 9 个测试失败,请检查上方详情。 +====================================================================== diff --git a/test_inherited_decls.py b/test_inherited_decls.py new file mode 100644 index 0000000..11cf4fb --- /dev/null +++ b/test_inherited_decls.py @@ -0,0 +1,67 @@ +import ast +import sys +sys.path.insert(0, 'd:\\Users\\TermiNexus\\Desktop\\TransPyC') + +from lib.Projectrans.DeclarationGenerator import DeclarationGenerator +from lib.includes import t + +# 读取 memhub.pyi +with open('d:\\Users\\TermiNexus\\Desktop\\TransPyC\\.transpyc_cache\\f3560b99de458aec.pyi', 'r', encoding='utf-8') as f: + pyi_content = f.read() + +tree = ast.parse(pyi_content) + +# 查找 MemBuddy 类 +mem_buddy_node = None +mem_manager_node = None +for node in ast.iter_child_nodes(tree): + if isinstance(node, ast.ClassDef): + if node.name == 'MemBuddy': + mem_buddy_node = node + elif node.name == 'MemManager': + mem_manager_node = node + +print(f"Found MemBuddy: {mem_buddy_node is not None}") +print(f"Found MemManager: {mem_manager_node is not None}") + +if mem_buddy_node: + print(f"\nMemBuddy bases: {[ast.dump(b) for b in mem_buddy_node.bases]}") + print(f"MemBuddy methods: {[item.name for item in mem_buddy_node.body if isinstance(item, ast.FunctionDef)]}") + +if mem_manager_node: + print(f"\nMemManager methods: {[item.name for item in mem_manager_node.body if isinstance(item, ast.FunctionDef)]}") + +# 创建 DeclarationGenerator 实例 +decl_gen = DeclarationGenerator( + struct_names={'MemManager', 'MemBuddy', 'MemPool', 'MemSlab'}, + enum_names=set(), + module_sha1='f3560b99de458aec', + struct_sha1_map={'MemManager': 'f3560b99de458aec', 'MemBuddy': 'f3560b99de458aec'}, + class_def_map={'MemManager': mem_manager_node, 'MemBuddy': mem_buddy_node} +) + +# 设置 _pyi_tree +decl_gen._pyi_tree = tree + +# 构建 _t_alias_map +decl_gen._t_alias_map = {} +for node in ast.iter_child_nodes(tree): + if isinstance(node, ast.ImportFrom): + if node.module in ('t', 'c'): + for alias in node.names: + name = alias.name + asname = alias.asname or name + t_cls = getattr(t, name, None) + if isinstance(t_cls, type): + decl_gen._t_alias_map[asname] = t_cls + +# 测试 _is_marker_base +print(f"\n_is_marker_base('MemManager'): {decl_gen._is_marker_base('MemManager')}") + +# 测试 _generate_inherited_method_decls +if mem_buddy_node: + struct_type_name = '%"f3560b99de458aec.MemBuddy"' + decls = decl_gen._generate_inherited_method_decls(mem_buddy_node, 'MemBuddy', struct_type_name) + print(f"\nInherited method decls ({len(decls)}):") + for d in decls: + print(f" {d}") diff --git a/thistest/App/benchmark_main.py b/thistest/App/benchmark_main.py index c27abd9..4576fa8 100644 --- a/thistest/App/benchmark_main.py +++ b/thistest/App/benchmark_main.py @@ -1,14 +1,53 @@ import w32.win32console as w32cmd +import viperstring as string +import memhub +import stdlib +import stdio +import hello import this import t, c - pagecode: t.CDefine = 65001 +def add(x: int, y: int): return x + y +def minus(x: int, y: int): return x - y + @t.CExport def main() -> int: w32cmd.SetConsoleOutputCP(pagecode) w32cmd.SetConsoleCP(pagecode) print("你好,世界") - this.this() - return 0 \ No newline at end of file + # this.this() + hello.helloworld() + + #p: bytes = stdlib.malloc(1024) + #hub = memhub.MemSlab(p, 1024) + #p1: bytes = hub.alloc(10) + #p2: bytes = hub.alloc(10) + #string.memset(p1, 0, 10) + #string.memset(p2, 0, 10) + #string.memcpy(p2, "11111111111111111\0", 13+5) + #print(p1) + #print(p2) + #print(t.CUInt64T(p2) - t.CUInt64T(p1)) + + func_p: t.Callable[[int, int], int] = add + print(func_p(66, 4)) + func_p = minus + print(func_p(66, 6)) + + fp: t.Callable[[int, int], int] = t.CUInt64T(func_p) + print(fp(67, 7)) + + #ppp: int = 1 + #while ppp: + # ppp += 1 + #print(ppp) + + #lower_est: t.CUInt64T = 0 + #lower_est -= 1 + #print(lower_est) + + pass + + return 0 diff --git a/thistest/output/0035c95a18d4f8e8.deps.json b/thistest/output/0035c95a18d4f8e8.deps.json deleted file mode 100644 index 6b8ffc5..0000000 --- a/thistest/output/0035c95a18d4f8e8.deps.json +++ /dev/null @@ -1 +0,0 @@ -{"stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "this": "a7bc8c01684c0001", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "benchmark_main": "c1371d3dc6b676c2", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5"} \ No newline at end of file diff --git a/thistest/output/067c78e9f121dce3.deps.json b/thistest/output/067c78e9f121dce3.deps.json deleted file mode 100644 index 215ffb4..0000000 --- a/thistest/output/067c78e9f121dce3.deps.json +++ /dev/null @@ -1 +0,0 @@ -{"w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "stdint": "f5522571bcce7bcb", "benchmark_main": "f71cf01f35e2325a", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "203a3999d5300163", "fileio": "203a3999d5300163", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c"} \ No newline at end of file diff --git a/thistest/output/06f53cc594b4ac6c.deps.json b/thistest/output/06f53cc594b4ac6c.deps.json deleted file mode 100644 index 215ffb4..0000000 --- a/thistest/output/06f53cc594b4ac6c.deps.json +++ /dev/null @@ -1 +0,0 @@ -{"w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "stdint": "f5522571bcce7bcb", "benchmark_main": "f71cf01f35e2325a", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "203a3999d5300163", "fileio": "203a3999d5300163", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c"} \ No newline at end of file diff --git a/thistest/output/6166aecc7fa7ad65.deps.json b/thistest/output/6166aecc7fa7ad65.deps.json new file mode 100644 index 0000000..af7e25e --- /dev/null +++ b/thistest/output/6166aecc7fa7ad65.deps.json @@ -0,0 +1 @@ +{"atom": "271ea3decb810db2", "viperstring": "3624cfde3c5cb6cb", "hello": "6166aecc7fa7ad65", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "benchmark_main": "8c37156d7b67c1f5", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "this": "a7bc8c01684c0001", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperio": "c9f4be41ca1cc2b4", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5"} \ No newline at end of file diff --git a/thistest/output/6446627d4f07a1b5.deps.json b/thistest/output/6446627d4f07a1b5.deps.json deleted file mode 100644 index 6b8ffc5..0000000 --- a/thistest/output/6446627d4f07a1b5.deps.json +++ /dev/null @@ -1 +0,0 @@ -{"stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "this": "a7bc8c01684c0001", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "benchmark_main": "c1371d3dc6b676c2", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5"} \ No newline at end of file diff --git a/thistest/output/72e2d5ccb7cedcf1.deps.json b/thistest/output/72e2d5ccb7cedcf1.deps.json deleted file mode 100644 index 215ffb4..0000000 --- a/thistest/output/72e2d5ccb7cedcf1.deps.json +++ /dev/null @@ -1 +0,0 @@ -{"w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "stdint": "f5522571bcce7bcb", "benchmark_main": "f71cf01f35e2325a", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "203a3999d5300163", "fileio": "203a3999d5300163", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c"} \ No newline at end of file diff --git a/thistest/output/7e529fe7a078cfef.deps.json b/thistest/output/7e529fe7a078cfef.deps.json deleted file mode 100644 index 215ffb4..0000000 --- a/thistest/output/7e529fe7a078cfef.deps.json +++ /dev/null @@ -1 +0,0 @@ -{"w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "stdint": "f5522571bcce7bcb", "benchmark_main": "f71cf01f35e2325a", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "203a3999d5300163", "fileio": "203a3999d5300163", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c"} \ No newline at end of file diff --git a/thistest/output/8c37156d7b67c1f5.deps.json b/thistest/output/8c37156d7b67c1f5.deps.json new file mode 100644 index 0000000..b233fb4 --- /dev/null +++ b/thistest/output/8c37156d7b67c1f5.deps.json @@ -0,0 +1 @@ +{"atom": "271ea3decb810db2", "viperstring": "3624cfde3c5cb6cb", "hello": "6166aecc7fa7ad65", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "this": "a7bc8c01684c0001", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperio": "c9f4be41ca1cc2b4", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb", "viperstring.string": "9474791561654346"} \ No newline at end of file diff --git a/thistest/output/_shared_sym_includes.pickle b/thistest/output/_shared_sym_includes.pickle index 634f1e1..6646a1d 100644 Binary files a/thistest/output/_shared_sym_includes.pickle and b/thistest/output/_shared_sym_includes.pickle differ diff --git a/thistest/output/a7bc8c01684c0001.deps.json b/thistest/output/a7bc8c01684c0001.deps.json index 6b8ffc5..af7e25e 100644 --- a/thistest/output/a7bc8c01684c0001.deps.json +++ b/thistest/output/a7bc8c01684c0001.deps.json @@ -1 +1 @@ -{"stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "this": "a7bc8c01684c0001", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "benchmark_main": "c1371d3dc6b676c2", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5"} \ No newline at end of file +{"atom": "271ea3decb810db2", "viperstring": "3624cfde3c5cb6cb", "hello": "6166aecc7fa7ad65", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "benchmark_main": "8c37156d7b67c1f5", "stdlib": "90c53dd6db8d41cf", "string": "9474791561654346", "this": "a7bc8c01684c0001", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperio": "c9f4be41ca1cc2b4", "memhub": "f3560b99de458aec", "stdint": "f5522571bcce7bcb", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "0035c95a18d4f8e8", "fileio": "0035c95a18d4f8e8", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5"} \ No newline at end of file diff --git a/thistest/output/bbdf3bbd4c3bc28c.deps.json b/thistest/output/bbdf3bbd4c3bc28c.deps.json deleted file mode 100644 index 215ffb4..0000000 --- a/thistest/output/bbdf3bbd4c3bc28c.deps.json +++ /dev/null @@ -1 +0,0 @@ -{"w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "stdint": "f5522571bcce7bcb", "benchmark_main": "f71cf01f35e2325a", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "203a3999d5300163", "fileio": "203a3999d5300163", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c"} \ No newline at end of file diff --git a/thistest/output/c1371d3dc6b676c2.deps.json b/thistest/output/c1371d3dc6b676c2.deps.json deleted file mode 100644 index d8aa459..0000000 --- a/thistest/output/c1371d3dc6b676c2.deps.json +++ /dev/null @@ -1 +0,0 @@ -{"stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "this": "a7bc8c01684c0001", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "stdint": "f5522571bcce7bcb"} \ No newline at end of file diff --git a/thistest/output/f6b51804a0ba8ff0.deps.json b/thistest/output/f6b51804a0ba8ff0.deps.json deleted file mode 100644 index 215ffb4..0000000 --- a/thistest/output/f6b51804a0ba8ff0.deps.json +++ /dev/null @@ -1 +0,0 @@ -{"w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "stdint": "f5522571bcce7bcb", "benchmark_main": "f71cf01f35e2325a", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "203a3999d5300163", "fileio": "203a3999d5300163", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c"} \ No newline at end of file diff --git a/thistest/temp/153805db5704f3e0.pyi b/thistest/temp/153805db5704f3e0.pyi deleted file mode 100644 index a00afbc..0000000 --- a/thistest/temp/153805db5704f3e0.pyi +++ /dev/null @@ -1,11 +0,0 @@ -""" -Auto-generated Python stub file from this.py -Module: this -""" - - -import stdio, t, c - -s: t.CExtern | str - -def this() -> t.CInt: pass diff --git a/thistest/temp/203a3999d5300163.pyi b/thistest/temp/203a3999d5300163.pyi deleted file mode 100644 index a0c57dc..0000000 --- a/thistest/temp/203a3999d5300163.pyi +++ /dev/null @@ -1,80 +0,0 @@ -""" -Auto-generated Python stub file from w32.fileio.py -Module: w32.fileio -""" - - -import t, c -from stdint import * -import w32.win32base -import w32.win32file - -class MODE(t.CEnum): - R = 0 - W = 1 - A = 2 - RP = 3 - WP = 4 - AP = 5 - X = 6 - XP = 7 -class FRESULT(t.CEnum): - OK = 0 - ERR = -1 - ERR_CLOSED = -2 - ERR_PERM = -3 - ERR_IO = -4 - ERR_NOTFOUND = -5 - -SEEK_SET: t.CDefine = 0 -SEEK_CUR: t.CDefine = 1 -SEEK_END: t.CDefine = 2 -INVALID_SET_FILE_POINTER: t.CDefine = -1 -SHARE_READ: t.CDefine = 0x00000001 -SHARE_WRITE: t.CDefine = 0x00000002 -SHARE_DELETE: t.CDefine = 0x00000004 - -class File: - handle: w32.win32base.HANDLE - closed: bool - can_read: bool - can_write: bool - is_append: bool - _share_mode: ULONG - def __init__(self: File, filename: str, mode: ULONG, share: ULONG) -> t.CInt: pass - def __enter__(self: File) -> 'File' | t.CPtr: pass - def __exit__(self: File) -> t.CInt: pass - def read(self: File, buf: bytes, count: ULONG) -> LONG: pass - def write(self: File, buf: bytes, count: ULONG) -> LONG: pass - def write_str(self: File, s: str) -> LONG: pass - def seek(self: File, offset: LONG, origin: ULONG) -> LONG: pass - def tell(self: File) -> LONG: pass - def close(self: File) -> LONG: pass - def flush(self: File) -> LONG: pass - def size(self: File) -> LONGLONG: pass - def readline(self: File, buf: bytes, max_count: ULONG) -> LONG: pass - def read_all(self: File, buf: bytes, max_count: ULONG) -> LONG: pass -class FileW: - handle: w32.win32base.HANDLE - closed: bool - can_read: bool - can_write: bool - is_append: bool - _share_mode: ULONG - def __init__(self: FileW, filename: w32.win32base.LPCWSTR, mode: ULONG, share: ULONG) -> t.CInt: pass - def __enter__(self: FileW) -> 'FileW' | t.CPtr: pass - def __exit__(self: FileW) -> t.CInt: pass - def read(self: FileW, buf: bytes, count: ULONG) -> LONG: pass - def write(self: FileW, buf: bytes, count: ULONG) -> LONG: pass - def write_str(self: FileW, s: str) -> LONG: pass - def seek(self: FileW, offset: LONG, origin: ULONG) -> LONG: pass - def tell(self: FileW) -> LONG: pass - def close(self: FileW) -> LONG: pass - def flush(self: FileW) -> LONG: pass - def size(self: FileW) -> LONGLONG: pass - def readline(self: FileW, buf: bytes, max_count: ULONG) -> LONG: pass - def read_all(self: FileW, buf: bytes, max_count: ULONG) -> LONG: pass - -def open(filename: str, mode: ULONG, share: ULONG) -> File | t.CPtr: pass - -def openw(filename: LPCWSTR, mode: ULONG, share: ULONG) -> FileW | t.CPtr: pass diff --git a/thistest/temp/271ea3decb810db2.pyi b/thistest/temp/271ea3decb810db2.pyi new file mode 100644 index 0000000..3d637bf --- /dev/null +++ b/thistest/temp/271ea3decb810db2.pyi @@ -0,0 +1,26 @@ +""" +Auto-generated Python stub file from atom.py +Module: atom +""" + + +import t, c + +ATOMIC_RELAXED: t.CDefine = 0 +ATOMIC_CONSUME: t.CDefine = 1 +ATOMIC_ACQUIRE: t.CDefine = 2 +ATOMIC_RELEASE: t.CDefine = 3 +ATOMIC_ACQ_REL: t.CDefine = 4 +ATOMIC_SEQ_CST: t.CDefine = 5 + +def __atomic_test_and_set(ptr: t.CUInt64T | t.CPtr, order: t.CInt) -> t.CBool: pass + +def __atomic_clear(ptr: t.CUInt64T | t.CPtr, order: t.CInt) -> t.CVoid: pass + +def __atomic_thread_fence(order: t.CInt) -> t.CVoid: pass + +def __atomic_signal_fence(order: t.CInt) -> t.CVoid: pass + +def __atomic_always_lock_free(size: t.CSizeT, ptr: t.CVoid | t.CPtr) -> t.CBool: pass + +def __atomic_is_lock_free(size: t.CSizeT, ptr: t.CVoid | t.CPtr) -> t.CBool: pass diff --git a/thistest/temp/28d30831dd445f0f.pyi b/thistest/temp/28d30831dd445f0f.pyi deleted file mode 100644 index a00afbc..0000000 --- a/thistest/temp/28d30831dd445f0f.pyi +++ /dev/null @@ -1,11 +0,0 @@ -""" -Auto-generated Python stub file from this.py -Module: this -""" - - -import stdio, t, c - -s: t.CExtern | str - -def this() -> t.CInt: pass diff --git a/thistest/temp/2db2d238d218d3d8.pyi b/thistest/temp/2db2d238d218d3d8.pyi deleted file mode 100644 index d78cb7d..0000000 --- a/thistest/temp/2db2d238d218d3d8.pyi +++ /dev/null @@ -1,9 +0,0 @@ -""" -Auto-generated Python stub file from this.py -Module: this -""" - - -import stdio, t, c - -def this() -> t.CInt: pass diff --git a/thistest/temp/2df45af226a48b4b.pyi b/thistest/temp/2df45af226a48b4b.pyi deleted file mode 100644 index a00afbc..0000000 --- a/thistest/temp/2df45af226a48b4b.pyi +++ /dev/null @@ -1,11 +0,0 @@ -""" -Auto-generated Python stub file from this.py -Module: this -""" - - -import stdio, t, c - -s: t.CExtern | str - -def this() -> t.CInt: pass diff --git a/thistest/temp/3624cfde3c5cb6cb.pyi b/thistest/temp/3624cfde3c5cb6cb.pyi new file mode 100644 index 0000000..cf49077 --- /dev/null +++ b/thistest/temp/3624cfde3c5cb6cb.pyi @@ -0,0 +1,10 @@ +""" +Auto-generated Python stub file from viperstring.py +Module: viperstring +""" + +import t +import c + + +from .string import * \ No newline at end of file diff --git a/thistest/temp/6166aecc7fa7ad65.pyi b/thistest/temp/6166aecc7fa7ad65.pyi new file mode 100644 index 0000000..65d4528 --- /dev/null +++ b/thistest/temp/6166aecc7fa7ad65.pyi @@ -0,0 +1,12 @@ +""" +Auto-generated Python stub file from hello.py +Module: hello +""" + +import t +import c + + +import stdio + +def helloworld() -> t.CInt: pass diff --git a/thistest/temp/77dcdc6020d63dc5.pyi b/thistest/temp/77dcdc6020d63dc5.pyi deleted file mode 100644 index a00afbc..0000000 --- a/thistest/temp/77dcdc6020d63dc5.pyi +++ /dev/null @@ -1,11 +0,0 @@ -""" -Auto-generated Python stub file from this.py -Module: this -""" - - -import stdio, t, c - -s: t.CExtern | str - -def this() -> t.CInt: pass diff --git a/thistest/temp/81d55b73067644b3.doc.json b/thistest/temp/81d55b73067644b3.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/thistest/temp/81d55b73067644b3.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/thistest/temp/81d55b73067644b3.pyi b/thistest/temp/81d55b73067644b3.pyi deleted file mode 100644 index a51320e..0000000 --- a/thistest/temp/81d55b73067644b3.pyi +++ /dev/null @@ -1,14 +0,0 @@ -""" -Auto-generated Python stub file from benchmark_main.py -Module: benchmark_main -""" - - -import w32.win32console as w32cmd -import this -import t, c - -pagecode: t.CDefine = 65001 - -@t.CExport -def main() -> int: pass diff --git a/thistest/temp/86df096a4b57c422.pyi b/thistest/temp/86df096a4b57c422.pyi deleted file mode 100644 index a00afbc..0000000 --- a/thistest/temp/86df096a4b57c422.pyi +++ /dev/null @@ -1,11 +0,0 @@ -""" -Auto-generated Python stub file from this.py -Module: this -""" - - -import stdio, t, c - -s: t.CExtern | str - -def this() -> t.CInt: pass diff --git a/thistest/temp/87f45d9188e9d92f.pyi b/thistest/temp/87f45d9188e9d92f.pyi deleted file mode 100644 index a00afbc..0000000 --- a/thistest/temp/87f45d9188e9d92f.pyi +++ /dev/null @@ -1,11 +0,0 @@ -""" -Auto-generated Python stub file from this.py -Module: this -""" - - -import stdio, t, c - -s: t.CExtern | str - -def this() -> t.CInt: pass diff --git a/.transpyc_cache/067f811511854c88.doc.json b/thistest/temp/8c37156d7b67c1f5.doc.json similarity index 100% rename from .transpyc_cache/067f811511854c88.doc.json rename to thistest/temp/8c37156d7b67c1f5.doc.json diff --git a/thistest/temp/c1371d3dc6b676c2.pyi b/thistest/temp/8c37156d7b67c1f5.pyi similarity index 55% rename from thistest/temp/c1371d3dc6b676c2.pyi rename to thistest/temp/8c37156d7b67c1f5.pyi index a51320e..7aef927 100644 --- a/thistest/temp/c1371d3dc6b676c2.pyi +++ b/thistest/temp/8c37156d7b67c1f5.pyi @@ -5,10 +5,19 @@ Module: benchmark_main import w32.win32console as w32cmd +import viperstring as string +import memhub +import stdlib +import stdio +import hello import this import t, c pagecode: t.CDefine = 65001 +def add(x: int, y: int) -> t.CInt: pass + +def minus(x: int, y: int) -> t.CInt: pass + @t.CExport def main() -> int: pass diff --git a/thistest/temp/90c53dd6db8d41cf.pyi b/thistest/temp/90c53dd6db8d41cf.pyi new file mode 100644 index 0000000..98359ba --- /dev/null +++ b/thistest/temp/90c53dd6db8d41cf.pyi @@ -0,0 +1,20 @@ +""" +Auto-generated Python stub file from stdlib.py +Module: stdlib +""" + +import c + + +from stdint import * +import t + +def malloc(size: t.CSizeT) -> t.CVoid | t.CPtr | t.State: pass + +def calloc(nmemb: t.CSizeT, size: t.CSizeT) -> t.CVoid | t.CPtr | t.State: pass + +def realloc(p: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CVoid | t.CPtr | t.State: pass + +def free(p: t.CVoid | t.CPtr) -> t.State: pass + +def system(cmd: t.CConst | t.CChar | t.CPtr) -> INT | t.State: pass diff --git a/thistest/temp/9474791561654346.pyi b/thistest/temp/9474791561654346.pyi new file mode 100644 index 0000000..1f82b1e --- /dev/null +++ b/thistest/temp/9474791561654346.pyi @@ -0,0 +1,59 @@ +""" +Auto-generated Python stub file from string.py +Module: string +""" + + +from stdint import * +import t, c + +def strcpy(dest: str, src: str) -> str: pass + +def strcat(dest: str, src: str) -> str: pass + +def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass + +def strlen(src: str) -> t.CSizeT | t.CExport: pass + +def strcmp(str1: str, str2: str) -> t.CInt: pass + +def samestr(str1: str, str2: str) -> bool: pass + +def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass + +def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass + +def strchr(s: str, cr: t.CInt) -> str: pass + +def strrchr(s: str, cr: t.CInt) -> str: pass + +def strstr(s: str, needle: str) -> str: pass + +def strspn(s: str, skip: str) -> int: pass + +def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass + +def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass + +def atoi(src: str) -> t.CInt: pass + +def atoll(src: str) -> t.CInt64T: pass + +def atof(src: str) -> t.CDouble: pass + +def split(s: str, delim: str, result: t.CArray[str]) -> int: pass + + +ascii_lowercase: t.CExtern | str +ascii_uppercase: t.CExtern | str +ascii_letters: t.CExtern | str +digits: t.CExtern | str +hexdigits: t.CExtern | str +octdigits: t.CExtern | str +punctuation: t.CExtern | str +whitespace: t.CExtern | str +printable: t.CExtern | str \ No newline at end of file diff --git a/thistest/temp/9664af47f66007d8.pyi b/thistest/temp/9664af47f66007d8.pyi deleted file mode 100644 index a00afbc..0000000 --- a/thistest/temp/9664af47f66007d8.pyi +++ /dev/null @@ -1,11 +0,0 @@ -""" -Auto-generated Python stub file from this.py -Module: this -""" - - -import stdio, t, c - -s: t.CExtern | str - -def this() -> t.CInt: pass diff --git a/thistest/temp/98028bc8b755b5f0.pyi b/thistest/temp/98028bc8b755b5f0.pyi deleted file mode 100644 index a00afbc..0000000 --- a/thistest/temp/98028bc8b755b5f0.pyi +++ /dev/null @@ -1,11 +0,0 @@ -""" -Auto-generated Python stub file from this.py -Module: this -""" - - -import stdio, t, c - -s: t.CExtern | str - -def this() -> t.CInt: pass diff --git a/thistest/temp/9db454840b9dbfe8.pyi b/thistest/temp/9db454840b9dbfe8.pyi deleted file mode 100644 index a00afbc..0000000 --- a/thistest/temp/9db454840b9dbfe8.pyi +++ /dev/null @@ -1,11 +0,0 @@ -""" -Auto-generated Python stub file from this.py -Module: this -""" - - -import stdio, t, c - -s: t.CExtern | str - -def this() -> t.CInt: pass diff --git a/thistest/temp/_phase1_manifest.json b/thistest/temp/_phase1_manifest.json index 0a89b99..9594612 100644 --- a/thistest/temp/_phase1_manifest.json +++ b/thistest/temp/_phase1_manifest.json @@ -1 +1 @@ -{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\BenchmarkProject\\App\\benchmark_main.py": {"sha1": "f71cf01f35e2325a", "mtime": 1782991404.519475, "size": 233}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}, "d:\\Users\\TermiNexus\\Desktop\\TransPyC\\thistest\\App\\benchmark_main.py": {"sha1": "c1371d3dc6b676c2", "mtime": 1784107847.4885626, "size": 263}, "d:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "d:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "d:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}, "d:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "d:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\this.py": {"sha1": "a7bc8c01684c0001", "mtime": 1784109007.4091208, "size": 1345}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\thistest\\App\\benchmark_main.py": {"sha1": "c1371d3dc6b676c2", "mtime": 1784107847.4885626, "size": 263}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\this.py": {"sha1": "a7bc8c01684c0001", "mtime": 1784109007.4091208, "size": 1345}} \ No newline at end of file +{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\thistest\\App\\benchmark_main.py": {"sha1": "8c37156d7b67c1f5", "mtime": 1784430860.3193777, "size": 1144}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\atom.py": {"sha1": "271ea3decb810db2", "mtime": 1782226548.693161, "size": 1290}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\hello.py": {"sha1": "6166aecc7fa7ad65", "mtime": 1784387694.4150121, "size": 72}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\memhub.py": {"sha1": "f3560b99de458aec", "mtime": 1784375410.1873891, "size": 19458}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "9474791561654346", "mtime": 1784387475.6951904, "size": 10395}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\this.py": {"sha1": "a7bc8c01684c0001", "mtime": 1784109007.4091208, "size": 1345}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperstring.py": {"sha1": "3624cfde3c5cb6cb", "mtime": 1778930749.052393, "size": 23}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}} \ No newline at end of file diff --git a/thistest/temp/_sha1_map.txt b/thistest/temp/_sha1_map.txt index c553a6a..eba7030 100644 --- a/thistest/temp/_sha1_map.txt +++ b/thistest/temp/_sha1_map.txt @@ -1,6 +1,13 @@ +271ea3decb810db2:includes/atom.py +3624cfde3c5cb6cb:includes/viperstring.py +6166aecc7fa7ad65:includes/hello.py 6f62fe05c5ea1ceb:includes/stdio.py 7e529fe7a078cfef:includes/w32\win32base.py +8c37156d7b67c1f5:benchmark_main.py +90c53dd6db8d41cf:includes/stdlib.py +9474791561654346:includes/string.py a7bc8c01684c0001:includes/this.py bbdf3bbd4c3bc28c:includes/w32\win32console.py -c1371d3dc6b676c2:benchmark_main.py +c9f4be41ca1cc2b4:includes/viperio.py +f3560b99de458aec:includes/memhub.py f5522571bcce7bcb:includes/stdint.py diff --git a/thistest/temp/a642413df3ed705a.pyi b/thistest/temp/a642413df3ed705a.pyi deleted file mode 100644 index a00afbc..0000000 --- a/thistest/temp/a642413df3ed705a.pyi +++ /dev/null @@ -1,11 +0,0 @@ -""" -Auto-generated Python stub file from this.py -Module: this -""" - - -import stdio, t, c - -s: t.CExtern | str - -def this() -> t.CInt: pass diff --git a/thistest/temp/bbc118f202878cbe.pyi b/thistest/temp/bbc118f202878cbe.pyi deleted file mode 100644 index a00afbc..0000000 --- a/thistest/temp/bbc118f202878cbe.pyi +++ /dev/null @@ -1,11 +0,0 @@ -""" -Auto-generated Python stub file from this.py -Module: this -""" - - -import stdio, t, c - -s: t.CExtern | str - -def this() -> t.CInt: pass diff --git a/thistest/temp/bc52093344ff9400.pyi b/thistest/temp/bc52093344ff9400.pyi deleted file mode 100644 index a00afbc..0000000 --- a/thistest/temp/bc52093344ff9400.pyi +++ /dev/null @@ -1,11 +0,0 @@ -""" -Auto-generated Python stub file from this.py -Module: this -""" - - -import stdio, t, c - -s: t.CExtern | str - -def this() -> t.CInt: pass diff --git a/thistest/temp/c1371d3dc6b676c2.doc.json b/thistest/temp/c1371d3dc6b676c2.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/thistest/temp/c1371d3dc6b676c2.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/thistest/temp/c38e082ec6d38c8e.pyi b/thistest/temp/c38e082ec6d38c8e.pyi deleted file mode 100644 index a00afbc..0000000 --- a/thistest/temp/c38e082ec6d38c8e.pyi +++ /dev/null @@ -1,11 +0,0 @@ -""" -Auto-generated Python stub file from this.py -Module: this -""" - - -import stdio, t, c - -s: t.CExtern | str - -def this() -> t.CInt: pass diff --git a/thistest/temp/c9f4be41ca1cc2b4.pyi b/thistest/temp/c9f4be41ca1cc2b4.pyi new file mode 100644 index 0000000..fdbd7ec --- /dev/null +++ b/thistest/temp/c9f4be41ca1cc2b4.pyi @@ -0,0 +1,22 @@ +""" +Auto-generated Python stub file from viperio.py +Module: viperio +""" + + +import t, c +from stdint import * + +class Buf: + data: t.CChar | t.CPtr + length: t.CSizeT + capacity: t.CSizeT + owned: bool + def __init__(self: Buf, data: t.CChar | t.CPtr, capacity: t.CSizeT, length: t.CSizeT, owned: bool) -> t.CInt: pass + def clear(self: Buf) -> t.CInt: pass + def write(self: Buf, src: t.CChar | t.CPtr, count: t.CSizeT) -> t.CSizeT: pass + def cstr(self: Buf) -> t.CChar | t.CPtr: pass + def reset(self: Buf) -> t.CInt: pass + def __enter__(self: Buf) -> 'Buf' | t.CPtr: pass + def __exit__(self: Buf) -> t.CInt: pass + def free(self: Buf) -> t.CInt: pass \ No newline at end of file diff --git a/thistest/temp/e907dcfbc2e1b32b.pyi b/thistest/temp/e907dcfbc2e1b32b.pyi deleted file mode 100644 index a00afbc..0000000 --- a/thistest/temp/e907dcfbc2e1b32b.pyi +++ /dev/null @@ -1,11 +0,0 @@ -""" -Auto-generated Python stub file from this.py -Module: this -""" - - -import stdio, t, c - -s: t.CExtern | str - -def this() -> t.CInt: pass diff --git a/thistest/temp/f3560b99de458aec.pyi b/thistest/temp/f3560b99de458aec.pyi new file mode 100644 index 0000000..84f0bbf --- /dev/null +++ b/thistest/temp/f3560b99de458aec.pyi @@ -0,0 +1,86 @@ +""" +Auto-generated Python stub file from memhub.py +Module: memhub +""" + + +import t, c +from stdint import * +import string +import atom +import viperio + +MEMHUB_ALIGN: t.CDefine = 8 +MEMSLAB_MIN_BLOCK: t.CDefine = 16 +MEMSLAB_BITMAP_BYTES: t.CDefine = 256 +MEMBUDDY_MIN_BLOCK: t.CDefine = 32 +MEMBUDDY_MAX_ORDERS: t.CDefine = 32 +MEMBUDDY_HEADER_SIZE: t.CDefine = 8 + +def _align_up(val: t.CSizeT, align: t.CSizeT) -> t.CSizeT: pass + +def _largest_pow2_le(val: t.CSizeT) -> t.CSizeT: pass + +def _block_size_at_order(order: t.CInt) -> t.CSizeT: pass + + +@t.CVTable +class MemManager: + __provides__: list[str] = ['__memmgr__'] + base: t.CVoid | t.CPtr + size: t.CSizeT + def __init__(self: MemManager, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemManager, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemManager, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemManager) -> t.CInt: pass + def calloc(self: MemManager, count: t.CSizeT, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def realloc(self: MemManager, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def __enter__(self: MemManager) -> 'MemManager' | t.CPtr: pass + def __exit__(self: MemManager) -> t.CInt: pass + def alloc_buf(self: MemManager, capacity: t.CSizeT) -> viperio.Buf | t.CPtr: pass +class MemPool(MemManager): + offset: t.CSizeT + high_water: t.CSizeT + def __init__(self: MemPool, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemPool, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemPool, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemPool) -> t.CInt: pass +class MemSlab(MemManager): + block_size: t.CSizeT + block_count: t.CSizeT + used_count: t.CSizeT + free_list: t.CVoid | t.CPtr + alloc_map: t.CUInt8T | t.CPtr + alloc_map_size: t.CSizeT + usable: t.CVoid | t.CPtr + usable_size: t.CSizeT + def __init__(self: MemSlab, base: t.CVoid | t.CPtr, size: t.CSizeT, block_size: t.CSizeT) -> t.CInt: pass + def alloc(self: MemSlab, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemSlab, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemSlab) -> t.CInt: pass +class MemBuddy(MemManager): + max_order: t.CInt + free_lists: t.CUInt64T | t.CPtr + lock_val: t.CVolatile | t.CInt + usable: t.CVoid | t.CPtr + usable_size: t.CSizeT + def __init__(self: MemBuddy, base: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CInt: pass + def _fl_push(self: MemBuddy, order: t.CInt, block: t.CVoid | t.CPtr) -> t.CInt: pass + def _fl_pop(self: MemBuddy, order: t.CInt) -> t.CVoid | t.CPtr: pass + def _fl_find_and_remove(self: MemBuddy, order: t.CInt, target: t.CVoid | t.CPtr) -> t.CInt: pass + def _buddy_of(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CVoid | t.CPtr: pass + def _order_for_size(self: MemBuddy, size: t.CSizeT) -> t.CInt: pass + def _split_to_order(self: MemBuddy, to_order: t.CInt) -> t.CVoid | t.CPtr: pass + def _coalesce(self: MemBuddy, block: t.CVoid | t.CPtr, order: t.CInt) -> t.CInt: pass + def _is_valid_ptr(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def _lock(self: MemBuddy) -> t.CInt: pass + def _unlock(self: MemBuddy) -> t.CInt: pass + def alloc(self: MemBuddy, size: t.CSizeT) -> t.CVoid | t.CPtr: pass + def free(self: MemBuddy, ptr: t.CVoid | t.CPtr) -> t.CInt: pass + def reset(self: MemBuddy) -> t.CInt: pass + def realloc(self: MemBuddy, ptr: t.CVoid | t.CPtr, new_size: t.CSizeT) -> t.CVoid | t.CPtr: pass + @property + def mem_size(self: MemBuddy) -> t.CSizeT: pass + def stats(self: MemBuddy) -> t.CSizeT: pass + def free_count(self: MemBuddy) -> t.CSizeT: pass + def self_check(self: MemBuddy) -> t.CInt: pass \ No newline at end of file diff --git a/thistest/temp/f69ce03954b469e7.pyi b/thistest/temp/f69ce03954b469e7.pyi deleted file mode 100644 index a00afbc..0000000 --- a/thistest/temp/f69ce03954b469e7.pyi +++ /dev/null @@ -1,11 +0,0 @@ -""" -Auto-generated Python stub file from this.py -Module: this -""" - - -import stdio, t, c - -s: t.CExtern | str - -def this() -> t.CInt: pass diff --git a/thistest/temp/f6d5ab5251ee8b21.pyi b/thistest/temp/f6d5ab5251ee8b21.pyi deleted file mode 100644 index a00afbc..0000000 --- a/thistest/temp/f6d5ab5251ee8b21.pyi +++ /dev/null @@ -1,11 +0,0 @@ -""" -Auto-generated Python stub file from this.py -Module: this -""" - - -import stdio, t, c - -s: t.CExtern | str - -def this() -> t.CInt: pass diff --git a/thistest/temp/f71cf01f35e2325a.doc.json b/thistest/temp/f71cf01f35e2325a.doc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/thistest/temp/f71cf01f35e2325a.doc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/thistest/temp/f71cf01f35e2325a.pyi b/thistest/temp/f71cf01f35e2325a.pyi deleted file mode 100644 index d500571..0000000 --- a/thistest/temp/f71cf01f35e2325a.pyi +++ /dev/null @@ -1,13 +0,0 @@ -""" -Auto-generated Python stub file from benchmark_main.py -Module: benchmark_main -""" - - -import w32.win32console as w32cmd -import t, c - -pagecode: t.CDefine = 65001 - -@t.CExport -def main() -> int: pass