Files

46 lines
1.4 KiB
Plaintext

import lib.core.Gen.GenTypes as GenTypes
import lib.core.Gen.Generator as Generator
from stdint import *
import memhub
import mlirlite
# BaseGenMixin - generator base (state container).
novirtual class BaseGenMixin:
"""Generator state container (base)."""
# Memory / IR state
Gen: Generator.Generator*
Pool: memhub.MemBuddy* # Memory pool
Module: mlirlite.LLVMModule* # Current LLVM module
Builder: mlirlite.IRBuilder* # Current IRBuilder
# Symbol / function tables
SymTab: GenTypes.SymbolTable*
Funcs: GenTypes.FuncEntry*
FuncCount: int
# Import / module info
ImportedModules: str
FromImports: str
ModuleSha1: str
# Current translation context
CurFunc: mlirlite.Function*
CurBuilder: mlirlite.IRBuilder*
CurClassName: str
def InitBaseGen(self, pool: memhub.MemBuddy*) -> int:
"""Initialize generator state to defaults; called from subclass constructors."""
if self is None: return 1
self.Pool = pool
self.Module = None
self.Builder = None
self.SymTab = None
self.Funcs = None
self.FuncCount = 0
self.ImportedModules = None
self.FromImports = None
self.ModuleSha1 = None
self.CurFunc = None
self.CurBuilder = None
self.CurClassName = None
return 0