"""
Auto-generated Python stub file from lib.core.Handles.HandlesClassDef.py
Module: lib.core.Handles.HandlesClassDef
"""


import t, c
from stdint import *
import ast
import llvmlite
import memhub
import string
import stdio
import viperlib
import lib.core.Handles.HandlesTranslator as HT
import lib.core.Handles.HandlesType as HandlesType
import lib.core.Handles.HandlesStruct as HandlesStruct
import lib.core.Handles.HandlesEnum as HandlesEnum

ENUM_MEMBER_MAX_LOCAL: t.CDefine = 64

def _is_cenum_base(base_node: ast.AST | t.CPtr) -> int: pass

def _is_enum_class(cd: ast.ClassDef | t.CPtr) -> int: pass

def _is_cunion_base(base_node: ast.AST | t.CPtr) -> int: pass

def _is_union_class(cd: ast.ClassDef | t.CPtr) -> int: pass


_MARKER_BASES: t.CDefine = 8

def _has_decorator(decorator_list: list[ast.AST | t.CPtr] | t.CPtr, deco_name: str) -> int: pass

def _is_marker_base(base_name: str) -> int: pass

def _get_base_name(base_node: ast.AST | t.CPtr) -> str: pass

def _get_parent_class(cd: ast.ClassDef | t.CPtr) -> str: pass

def _has_any_func_cvtable(cd: ast.ClassDef | t.CPtr) -> int: pass

def _should_method_be_virtual(cd: ast.ClassDef | t.CPtr, fd: ast.FunctionDef | t.CPtr, trans: HT.Translator | t.CPtr) -> int: pass

def _detect_vtable_status(cd: ast.ClassDef | t.CPtr, trans: HT.Translator | t.CPtr) -> int: pass

def _resolve_enum_member_type(pool: memhub.MemBuddy | t.CPtr, ann_node: ast.AST | t.CPtr, imported_modules: str, from_imports: str) -> llvmlite.LLVMType | t.CPtr: pass

def _is_state_annotation(node: ast.AST | t.CPtr) -> int: pass

def _extract_int_value(node: ast.AST | t.CPtr) -> t.CInt64T: pass

def _translate_enum_def(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr) -> int: pass

def _get_type_size(ty: llvmlite.LLVMType | t.CPtr) -> int: pass

def _translate_union_def(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr) -> int: pass


_generic_class_names: t.CExtern | list[str] | t.CPtr
_generic_class_nodes: t.CExtern | list[ast.ClassDef | t.CPtr] | t.CPtr

def _is_generic_class(cd: ast.ClassDef | t.CPtr) -> int: pass

def _register_generic_template(pool: memhub.MemBuddy | t.CPtr, cd: ast.ClassDef | t.CPtr) -> t.CInt: pass

def _find_generic_template(class_name: str) -> ast.ClassDef | t.CPtr: pass

def _mangle_generic_class_name(pool: memhub.MemBuddy | t.CPtr, class_name: str, type_args: list[str] | t.CPtr) -> str: pass

def _clone_annotation(pool: memhub.MemBuddy | t.CPtr, node: ast.AST | t.CPtr, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.AST | t.CPtr: pass

def _clone_arguments(pool: memhub.MemBuddy | t.CPtr, args: ast.AST | t.CPtr, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.AST | t.CPtr: pass

def _clone_classdef_for_spec(pool: memhub.MemBuddy | t.CPtr, cd: ast.ClassDef | t.CPtr, spec_name: str, tp_names: list[str] | t.CPtr, type_args: list[str] | t.CPtr) -> ast.ClassDef | t.CPtr: pass


_spec_keys: t.CExtern | list[str] | t.CPtr
_spec_names: t.CExtern | list[str] | t.CPtr

def _find_cached_spec(spec_key: str) -> str: pass

def _cache_spec(pool: memhub.MemBuddy | t.CPtr, spec_key: str, spec_name: str) -> t.CInt: pass

def _specialize_generic_class(trans: HT.Translator | t.CPtr, class_name: str, type_args: list[str] | t.CPtr) -> str: pass

def translate_class_def(trans: HT.Translator | t.CPtr, node: ast.AST | t.CPtr) -> int: pass


VTBL_METHOD_MAX: t.CDefine = 32

def _vtable_strcat(dst: t.CChar | t.CPtr, dst_size: t.CSizeT, src: t.CChar | t.CPtr) -> t.CInt: pass

def _vtable_name_needs_quote(name: str) -> int: pass

def _format_func_type_str(pool: memhub.MemBuddy | t.CPtr, buf: t.CChar | t.CPtr, buf_size: t.CSizeT, func: llvmlite.Function | t.CPtr) -> int: pass

def _generate_vtable(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr, class_name: str) -> int: pass

def _translate_oop_methods(trans: HT.Translator | t.CPtr, cd: ast.ClassDef | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass

def _translate_method(trans: HT.Translator | t.CPtr, fd: ast.FunctionDef | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass

def _generate_before_init(trans: HT.Translator | t.CPtr, struct_ty: llvmlite.LLVMType | t.CPtr, class_name: str) -> int: pass
