"""
Auto-generated Python stub file from ast.base.py
Module: ast.base
"""


import t, c
from stdint import *
import memhub
import string
import viperlib
from .tokens import TokOp

class ASTKind(t.CEnum):
    Module: t.State
    FunctionDef: t.State
    ClassDef: t.State
    Assign: t.State
    If: t.State
    For: t.State
    While: t.State
    Return: t.State
    Expr: t.State
    Name: t.State
    Constant: t.State
    BinOp: t.State
    UnaryOp: t.State
    Call: t.State
    Compare: t.State
    Expression: t.State
    Interactive: t.State
    FunctionType: t.State
    Delete: t.State
    AugAssign: t.State
    AnnAssign: t.State
    With: t.State
    Raise: t.State
    Try: t.State
    Assert: t.State
    Global: t.State
    Nonlocal: t.State
    Pass: t.State
    Break: t.State
    Continue: t.State
    Import: t.State
    ImportFrom: t.State
    Match: t.State
    BoolOp: t.State
    Lambda: t.State
    IfExp: t.State
    Dict: t.State
    Set: t.State
    ListComp: t.State
    SetComp: t.State
    DictComp: t.State
    GeneratorExp: t.State
    Await: t.State
    Yield: t.State
    YieldFrom: t.State
    FormattedValue: t.State
    JoinedStr: t.State
    Attribute: t.State
    Subscript: t.State
    Starred: t.State
    List: t.State
    Tuple: t.State
    Slice: t.State
    NamedExpr: t.State
    ExceptHandler: t.State
    Arguments: t.State
    Arg: t.State
    Keyword: t.State
    Alias: t.State
    WithItem: t.State
    Comprehension: t.State
    OpNode: t.State
    MatchCase: t.State
    MatchValue: t.State
    MatchSingleton: t.State
    MatchSequence: t.State
    MatchMapping: t.State
    MatchClass: t.State
    MatchStar: t.State
    MatchAs: t.State
    MatchOr: t.State
class ASTCtx(t.CEnum):
    Load: t.State
    Store: t.State
    Del: t.State
class OpKind(t.CEnum):
    Add: t.State
    Sub: t.State
    Mult: t.State
    MatMult: t.State
    Div: t.State
    Mod: t.State
    Pow: t.State
    LShift: t.State
    RShift: t.State
    BitOr: t.State
    BitXor: t.State
    BitAnd: t.State
    FloorDiv: t.State
    And: t.State
    Or: t.State
    Eq: t.State
    Ne: t.State
    Lt: t.State
    Le: t.State
    Gt: t.State
    Ge: t.State
    Is: t.State
    IsNot: t.State
    In: t.State
    NotIn: t.State
    Not: t.State
    UAdd: t.State
    USub: t.State
    Invert: t.State
    NoneOp: t.State

CONST_INT: t.CDefine = 1
CONST_FLOAT: t.CDefine = 2
CONST_STR: t.CDefine = 3
CONST_BOOL: t.CDefine = 4
CONST_NONE: t.CDefine = 5
FLAG_IS_ASYNC: t.CDefine = 1
FLAG_SIMPLE: t.CDefine = 2
FLAG_HAS_STAR: t.CDefine = 4

class ASTFlag(t.CEnum):
    IsAsync: t.State
    Simple: t.State
    HasStar: t.State

def _copy_str(pool: memhub.MemManager | t.CPtr, src: str) -> str: pass

def _set_pos(node: AST | t.CPtr, lineno: t.CInt, col_offset: t.CInt, end_lineno: t.CInt, end_col_offset: t.CInt) -> t.CInt: pass

def _inherit_pos(node: AST | t.CPtr, ref: AST | t.CPtr) -> t.CInt: pass

def _init_ast(node: AST | t.CPtr, pool: memhub.MemManager | t.CPtr, lineno: t.CInt, col: t.CInt) -> t.CInt: pass

def _set_parent_list(lst: list[AST | t.CPtr] | t.CPtr, parent: AST | t.CPtr) -> t.CInt: pass

def _append_child(lst: list[AST | t.CPtr] | t.CPtr, node: AST | t.CPtr, pool: memhub.MemManager | t.CPtr) -> t.CInt: pass

def _binop_from_op(op_id: t.CInt) -> t.CInt: pass

def _augop_from_op(op_id: t.CInt) -> t.CInt: pass

def _cmpop_from_op(op_id: t.CInt) -> t.CInt: pass

def _emit(buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT, text: str) -> t.CSizeT: pass

def _emit_str(buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT, text: str) -> t.CSizeT: pass

def _emit_int(buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT, val: t.CInt64T) -> t.CSizeT: pass

def _op_name(op: t.CInt) -> str: pass

def _dump_list(lst: list[AST | t.CPtr] | t.CPtr, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass

def _dump_op_list(lst: t.CPtr, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass


@t.CVTable
class AST:
    parent: AST | t.CPtr
    pool: memhub.MemManager | t.CPtr
    lineno: t.CInt
    col_offset: t.CInt
    end_lineno: t.CInt
    end_col_offset: t.CInt
    children: list[AST | t.CPtr] | t.CPtr
    def kind(self: AST) -> t.CInt: pass
    def type_name(self: AST) -> str: pass
    def dump(self: AST, buf: t.CChar | t.CPtr, size: t.CSizeT, pos: t.CSizeT) -> t.CSizeT: pass
    def accept(self: AST, visitor: t.CPtr) -> t.CInt: pass
    def append(self: AST, node: AST | t.CPtr) -> t.CInt: pass

def dump(node: AST | t.CPtr, buf: t.CChar | t.CPtr, size: t.CSizeT) -> t.CInt: pass
