Files
ViperC/App/lib/core/CompilerFactory.vp
T

36 lines
1.4 KiB
Plaintext

import t, c
import memhub
# ============================================================
# CompilerFactory - 编译器结构体工厂(对齐 TPC Translator 装配模式)
# ============================================================
@t.NoVTable
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: rawptr[CompilerFactory] = None