# LLVM 代码生成器主类
# 通过 Mixin 模式组合各功能模块，保持向后兼容的导入路径
#
# 拆分后的模块位于 lib/core/LLVMCG/ 目录下：
# - BaseGen.py: __init__、平台解析、名称修饰、函数查找
# - TypeConvert.py: 类型转换（CType -> LLVM IR）
# - StructGen.py: 结构体生成（struct/vtable）
# - MemoryOps.py: 内存操作（alloca/Load/store）
# - ExprGen.py: 表达式生成（常量、二元运算、返回）
# - FuncGen.py: 函数处理（参数调整、成员偏移）
# - VaArg.py: 变长参数处理
from __future__ import annotations

from lib.core.LLVMCG.BaseGen     import BaseGenMixin
from lib.core.LLVMCG.TypeConvert import TypeConvertMixin
from lib.core.LLVMCG.StructGen   import StructGenMixin
from lib.core.LLVMCG.MemoryOps   import MemoryOpsMixin
from lib.core.LLVMCG.ExprGen     import ExprGenMixin
from lib.core.LLVMCG.FuncGen     import FuncGenMixin
from lib.core.LLVMCG.VaArg       import VaArgMixin

# from lib.core.Translator.LlvmGenerator import LlvmGeneratorMixin


class LlvmCodeGenerator(
    BaseGenMixin,
    TypeConvertMixin,
    StructGenMixin,
    MemoryOpsMixin,
    ExprGenMixin,
    FuncGenMixin,
    VaArgMixin,
):
    """LLVM IR 代码生成器

    通过 Mixin 模式组合各功能模块。
    实际方法实现分布在 lib/core/LLVMCG/ 下的各模块中。
    """
    #builder: ir.IRBuilder = None
    #_Trans: LlvmGeneratorMixin = None
    pass


# 向后兼容：重新导出常量和辅助类
__all__: list[str] = ['LlvmCodeGenerator', 'VaArgInstruction']
