- @t.NoVTable class X → novirtual class X
- t.CDefine = N → define N
- rawptr[X]、X | t.CPtr → X*
- t.CPtr → rawptr(裸指针标记)
- t.Callable[...] → callable[...]
- 去掉 if/elif 条件的行续反斜杠(改单行写法)
- w32.win32file.X → win32file.X(已 import as)
- core/__init__.vp 去掉未使用的 import t, c / from stdint import *
涉及:CompilerFactory、IncludesScanner、Repl、core/__init__、
Gen/Call/{CallGenBase,CallGenCBuiltin,CallGenCall,CallGenDispatch,CallGenLeafKit}、
Gen/Class/ClassGenGeneric。
35 lines
1.3 KiB
Plaintext
35 lines
1.3 KiB
Plaintext
import t, c
|
|
import memhub
|
|
|
|
|
|
# ============================================================
|
|
# CompilerFactory - 编译器结构体工厂(对齐 TPC Translator 装配模式)
|
|
# ============================================================
|
|
novirtual class CompilerFactory:
|
|
"""编译器结构体工厂(持有主池/永久池等共享对象)"""
|
|
Pool: memhub.MemBuddy* # 主内存池(瞬时数据,mark/reset 回收)
|
|
PermPool: memhub.MemBuddy* # 永久内存池(持久数据,从不 reset)
|
|
|
|
# ---- REnum 变体注册表(编译期单例持有,与 perm_pool 的 struct entry 同寿命)----
|
|
RenumClassNames: sizet*
|
|
RenumClassVariantCounts: sizet*
|
|
RenumVariantNames: sizet*
|
|
RenumVariantTags: sizet*
|
|
RenumClassCount: int
|
|
|
|
# ---- REnum 变体字段别名表(同上,必须同寿命;_bind_variant_fields 查字段真实类型)----
|
|
RenumAliasClass: sizet*
|
|
RenumAliasField: sizet*
|
|
RenumAliasIndex: sizet*
|
|
RenumAliasTy: sizet*
|
|
RenumAliasVariant: sizet*
|
|
RenumAliasCount: int
|
|
|
|
def __init__(self, pool: memhub.MemBuddy*, perm_pool: memhub.MemBuddy*):
|
|
if self is None: return
|
|
self.Pool = pool
|
|
self.PermPool = perm_pool
|
|
|
|
# 全局工厂单例
|
|
factory: CompilerFactory* = None
|