"""
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
