# This file was automatically generated by SWIG (https://www.swig.org).
# Version 4.4.0
#
# Do not make changes to this file unless you know what you are doing - modify
# the SWIG interface file instead.

from sys import version_info as _swig_python_version_info
# Import the low-level C/C++ module
if getattr(globals().get("__spec__"), "parent", None) or __package__ or "." in __name__:
    from . import _buddy
else:
    import _buddy

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

_swig_new_instance_method = _buddy.SWIG_PyInstanceMethod_New
_swig_new_static_method = _buddy.SWIG_PyStaticMethod_New

def _swig_repr(self):
    try:
        strthis = "proxy of " + self.this.__repr__()
    except __builtin__.Exception:
        strthis = ""
    return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)


def _swig_setattr_nondynamic_instance_variable(set):
    def set_instance_attr(self, name, value):
        if name == "this":
            set(self, name, value)
        elif name == "thisown":
            self.this.own(value)
        elif hasattr(self, name) and isinstance(getattr(type(self), name), property):
            set(self, name, value)
        else:
            raise AttributeError("You cannot add instance attributes to %s" % self)
    return set_instance_attr


def _swig_setattr_nondynamic_class_variable(set):
    def set_class_attr(cls, name, value):
        if hasattr(cls, name) and not isinstance(getattr(cls, name), property):
            set(cls, name, value)
        else:
            raise AttributeError("You cannot add class attributes to %s" % cls)
    return set_class_attr


def _swig_add_metaclass(metaclass):
    """Class decorator for adding a metaclass to a SWIG wrapped class - a slimmed down version of six.add_metaclass"""
    def wrapper(cls):
        return metaclass(cls.__name__, cls.__bases__, cls.__dict__.copy())
    return wrapper


class _SwigNonDynamicMeta(type):
    """Meta class to enforce nondynamic attributes (no new attributes) for a class"""
    __setattr__ = _swig_setattr_nondynamic_class_variable(type.__setattr__)


class SwigPyIterator_buddy(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _buddy.delete_SwigPyIterator_buddy
    value = _swig_new_instance_method(_buddy.SwigPyIterator_buddy_value)
    incr = _swig_new_instance_method(_buddy.SwigPyIterator_buddy_incr)
    decr = _swig_new_instance_method(_buddy.SwigPyIterator_buddy_decr)
    distance = _swig_new_instance_method(_buddy.SwigPyIterator_buddy_distance)
    equal = _swig_new_instance_method(_buddy.SwigPyIterator_buddy_equal)
    copy = _swig_new_instance_method(_buddy.SwigPyIterator_buddy_copy)
    next = _swig_new_instance_method(_buddy.SwigPyIterator_buddy_next)
    __next__ = _swig_new_instance_method(_buddy.SwigPyIterator_buddy___next__)
    previous = _swig_new_instance_method(_buddy.SwigPyIterator_buddy_previous)
    advance = _swig_new_instance_method(_buddy.SwigPyIterator_buddy_advance)
    __eq__ = _swig_new_instance_method(_buddy.SwigPyIterator_buddy___eq__)
    __ne__ = _swig_new_instance_method(_buddy.SwigPyIterator_buddy___ne__)
    __iadd__ = _swig_new_instance_method(_buddy.SwigPyIterator_buddy___iadd__)
    __isub__ = _swig_new_instance_method(_buddy.SwigPyIterator_buddy___isub__)
    __add__ = _swig_new_instance_method(_buddy.SwigPyIterator_buddy___add__)
    __sub__ = _swig_new_instance_method(_buddy.SwigPyIterator_buddy___sub__)
    def __iter__(self):
        return self

# Register SwigPyIterator_buddy in _buddy:
_buddy.SwigPyIterator_buddy_swigregister(SwigPyIterator_buddy)
class const_int_ptr(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, ptr):
        _buddy.const_int_ptr_swiginit(self, _buddy.new_const_int_ptr(ptr))
    ptr = property(_buddy.const_int_ptr_ptr_get, _buddy.const_int_ptr_ptr_set)
    __getitem__ = _swig_new_instance_method(_buddy.const_int_ptr___getitem__)
    __swig_destroy__ = _buddy.delete_const_int_ptr

# Register const_int_ptr in _buddy:
_buddy.const_int_ptr_swigregister(const_int_ptr)
class bdd(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    id = _swig_new_instance_method(_buddy.bdd_id)
    __cmp__ = _swig_new_instance_method(_buddy.bdd___cmp__)
    __le__ = _swig_new_instance_method(_buddy.bdd___le__)
    __lt__ = _swig_new_instance_method(_buddy.bdd___lt__)
    __eq__ = _swig_new_instance_method(_buddy.bdd___eq__)
    __ne__ = _swig_new_instance_method(_buddy.bdd___ne__)
    __ge__ = _swig_new_instance_method(_buddy.bdd___ge__)
    __gt__ = _swig_new_instance_method(_buddy.bdd___gt__)
    __hash__ = _swig_new_instance_method(_buddy.bdd___hash__)
    __str__ = _swig_new_instance_method(_buddy.bdd___str__)
    __and__ = _swig_new_instance_method(_buddy.bdd___and__)
    __xor__ = _swig_new_instance_method(_buddy.bdd___xor__)
    __or__ = _swig_new_instance_method(_buddy.bdd___or__)
    __rshift__ = _swig_new_instance_method(_buddy.bdd___rshift__)
    __lshift__ = _swig_new_instance_method(_buddy.bdd___lshift__)
    __sub__ = _swig_new_instance_method(_buddy.bdd___sub__)
    __neg__ = _swig_new_instance_method(_buddy.bdd___neg__)

    def __init__(self):
        _buddy.bdd_swiginit(self, _buddy.new_bdd())
    __swig_destroy__ = _buddy.delete_bdd

# Register bdd in _buddy:
_buddy.bdd_swigregister(bdd)
bdd_init = _buddy.bdd_init
bdd_done = _buddy.bdd_done
bdd_setvarnum = _buddy.bdd_setvarnum
bdd_extvarnum = _buddy.bdd_extvarnum
bdd_isrunning = _buddy.bdd_isrunning
bdd_setmaxnodenum = _buddy.bdd_setmaxnodenum
bdd_setmaxincrease = _buddy.bdd_setmaxincrease
bdd_setminfreenodes = _buddy.bdd_setminfreenodes
bdd_getnodenum = _buddy.bdd_getnodenum
bdd_getallocnum = _buddy.bdd_getallocnum
bdd_versionstr = _buddy.bdd_versionstr
bdd_versionnum = _buddy.bdd_versionnum
bdd_fprintstat = _buddy.bdd_fprintstat
bdd_printstat = _buddy.bdd_printstat
bdd_errstring = _buddy.bdd_errstring
bdd_clear_error = _buddy.bdd_clear_error
bdd_ithvar = _buddy.bdd_ithvar
bdd_nithvar = _buddy.bdd_nithvar
bdd_terminal = _buddy.bdd_terminal
bdd_is_terminal = _buddy.bdd_is_terminal
bdd_get_terminal = _buddy.bdd_get_terminal
bdd_var = _buddy.bdd_var
bdd_level = _buddy.bdd_level
bdd_low = _buddy.bdd_low
bdd_high = _buddy.bdd_high
bdd_scanset = _buddy.bdd_scanset
bdd_makeset = _buddy.bdd_makeset
bdd_setbddpair = _buddy.bdd_setbddpair
bdd_replace = _buddy.bdd_replace
bdd_compose = _buddy.bdd_compose
bdd_veccompose = _buddy.bdd_veccompose
bdd_restrict = _buddy.bdd_restrict
bdd_constrain = _buddy.bdd_constrain
bdd_simplify = _buddy.bdd_simplify
bdd_ibuildcube = _buddy.bdd_ibuildcube
bdd_not = _buddy.bdd_not
bdd_apply = _buddy.bdd_apply
bdd_and = _buddy.bdd_and
bdd_or = _buddy.bdd_or
bdd_xor = _buddy.bdd_xor
bdd_imp = _buddy.bdd_imp
bdd_biimp = _buddy.bdd_biimp
bdd_setxor = _buddy.bdd_setxor
bdd_implies = _buddy.bdd_implies
bdd_ite = _buddy.bdd_ite
bdd_exist = _buddy.bdd_exist
bdd_existcomp = _buddy.bdd_existcomp
bdd_forall = _buddy.bdd_forall
bdd_forallcomp = _buddy.bdd_forallcomp
bdd_unique = _buddy.bdd_unique
bdd_uniquecomp = _buddy.bdd_uniquecomp
bdd_appex = _buddy.bdd_appex
bdd_appexcomp = _buddy.bdd_appexcomp
bdd_appall = _buddy.bdd_appall
bdd_appallcomp = _buddy.bdd_appallcomp
bdd_appuni = _buddy.bdd_appuni
bdd_appunicomp = _buddy.bdd_appunicomp
bdd_support = _buddy.bdd_support
bdd_satone = _buddy.bdd_satone
bdd_satoneset = _buddy.bdd_satoneset
bdd_fullsatone = _buddy.bdd_fullsatone
bdd_allsat = _buddy.bdd_allsat
bdd_satcount = _buddy.bdd_satcount
bdd_satcountset = _buddy.bdd_satcountset
bdd_satcountln = _buddy.bdd_satcountln
bdd_satcountlnset = _buddy.bdd_satcountlnset
bdd_nodecount = _buddy.bdd_nodecount
bdd_varprofile = _buddy.bdd_varprofile
bdd_pathcount = _buddy.bdd_pathcount
bdd_have_common_assignment = _buddy.bdd_have_common_assignment
bdd_is_cube = _buddy.bdd_is_cube
bdd_fprinttable = _buddy.bdd_fprinttable
bdd_printtable = _buddy.bdd_printtable
bdd_fprintset = _buddy.bdd_fprintset
bdd_printset = _buddy.bdd_printset
bdd_printdot = _buddy.bdd_printdot
bdd_fprintdot = _buddy.bdd_fprintdot
bdd_fnprintdot = _buddy.bdd_fnprintdot
bdd_fnsave = _buddy.bdd_fnsave
bdd_save = _buddy.bdd_save
bdd_fnload = _buddy.bdd_fnload
bdd_load = _buddy.bdd_load
bdd_addvarblock = _buddy.bdd_addvarblock
bddop_and = _buddy.bddop_and
bddop_xor = _buddy.bddop_xor
bddop_or = _buddy.bddop_or
bddop_nand = _buddy.bddop_nand
bddop_nor = _buddy.bddop_nor
bddop_imp = _buddy.bddop_imp
bddop_biimp = _buddy.bddop_biimp
bddop_diff = _buddy.bddop_diff
bddop_less = _buddy.bddop_less
bddop_invimp = _buddy.bddop_invimp
BDD_REORDER_NONE = _buddy.BDD_REORDER_NONE
BDD_REORDER_WIN2 = _buddy.BDD_REORDER_WIN2
BDD_REORDER_WIN2ITE = _buddy.BDD_REORDER_WIN2ITE
BDD_REORDER_SIFT = _buddy.BDD_REORDER_SIFT
BDD_REORDER_SIFTITE = _buddy.BDD_REORDER_SIFTITE
BDD_REORDER_WIN3 = _buddy.BDD_REORDER_WIN3
BDD_REORDER_WIN3ITE = _buddy.BDD_REORDER_WIN3ITE
BDD_REORDER_RANDOM = _buddy.BDD_REORDER_RANDOM
fdd_extdomain = _buddy.fdd_extdomain
fdd_overlapdomain = _buddy.fdd_overlapdomain
fdd_clearall = _buddy.fdd_clearall
fdd_domainnum = _buddy.fdd_domainnum
fdd_domainsize = _buddy.fdd_domainsize
fdd_varnum = _buddy.fdd_varnum
fdd_vars = _buddy.fdd_vars
fdd_ithvar = _buddy.fdd_ithvar
fdd_scanvar = _buddy.fdd_scanvar
fdd_scanallvar = _buddy.fdd_scanallvar
fdd_ithset = _buddy.fdd_ithset
fdd_domain = _buddy.fdd_domain
fdd_equals = _buddy.fdd_equals
fdd_printset = _buddy.fdd_printset
fdd_fprintset = _buddy.fdd_fprintset
fdd_scanset = _buddy.fdd_scanset
fdd_makeset = _buddy.fdd_makeset
fdd_intaddvarblock = _buddy.fdd_intaddvarblock
fdd_setpair = _buddy.fdd_setpair
fdd_setpairs = _buddy.fdd_setpairs
bvec_copy = _buddy.bvec_copy
bvec_true = _buddy.bvec_true
bvec_false = _buddy.bvec_false
bvec_con = _buddy.bvec_con
bvec_var = _buddy.bvec_var
bvec_varfdd = _buddy.bvec_varfdd
bvec_varvec = _buddy.bvec_varvec
bvec_coerce = _buddy.bvec_coerce
bvec_isconst = _buddy.bvec_isconst
bvec_val = _buddy.bvec_val
bvec_map1 = _buddy.bvec_map1
bvec_map2 = _buddy.bvec_map2
bvec_map3 = _buddy.bvec_map3
bvec_add = _buddy.bvec_add
bvec_sub = _buddy.bvec_sub
bvec_mulfixed = _buddy.bvec_mulfixed
bvec_mul = _buddy.bvec_mul
bvec_divfixed = _buddy.bvec_divfixed
bvec_div = _buddy.bvec_div
bvec_ite = _buddy.bvec_ite
bvec_shlfixed = _buddy.bvec_shlfixed
bvec_shl = _buddy.bvec_shl
bvec_shrfixed = _buddy.bvec_shrfixed
bvec_shr = _buddy.bvec_shr
bvec_lth = _buddy.bvec_lth
bvec_lte = _buddy.bvec_lte
bvec_gth = _buddy.bvec_gth
bvec_gte = _buddy.bvec_gte
bvec_equ = _buddy.bvec_equ
bvec_neq = _buddy.bvec_neq
class bvec(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _buddy.bvec_swiginit(self, _buddy.new_bvec(*args))
    __swig_destroy__ = _buddy.delete_bvec
    set = _swig_new_instance_method(_buddy.bvec_set)
    bitnum = _swig_new_instance_method(_buddy.bvec_bitnum)
    empty = _swig_new_instance_method(_buddy.bvec_empty)
    __and__ = _swig_new_instance_method(_buddy.bvec___and__)
    __xor__ = _swig_new_instance_method(_buddy.bvec___xor__)
    __or__ = _swig_new_instance_method(_buddy.bvec___or__)
    __lshift__ = _swig_new_instance_method(_buddy.bvec___lshift__)
    __rshift__ = _swig_new_instance_method(_buddy.bvec___rshift__)
    __add__ = _swig_new_instance_method(_buddy.bvec___add__)
    __sub__ = _swig_new_instance_method(_buddy.bvec___sub__)
    __mul__ = _swig_new_instance_method(_buddy.bvec___mul__)
    __lt__ = _swig_new_instance_method(_buddy.bvec___lt__)
    __le__ = _swig_new_instance_method(_buddy.bvec___le__)
    __gt__ = _swig_new_instance_method(_buddy.bvec___gt__)
    __ge__ = _swig_new_instance_method(_buddy.bvec___ge__)
    __eq__ = _swig_new_instance_method(_buddy.bvec___eq__)
    __ne__ = _swig_new_instance_method(_buddy.bvec___ne__)
    __str__ = _swig_new_instance_method(_buddy.bvec___str__)
    __getitem__ = _swig_new_instance_method(_buddy.bvec___getitem__)

# Register bvec in _buddy:
_buddy.bvec_swigregister(bvec)
cvar = _buddy.cvar
bddfalse = cvar.bddfalse
bddtrue = cvar.bddtrue

class minterms_of(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, fun, vars):
        _buddy.minterms_of_swiginit(self, _buddy.new_minterms_of(fun, vars))
    __swig_destroy__ = _buddy.delete_minterms_of
    begin = _swig_new_instance_method(_buddy.minterms_of_begin)
    end = _swig_new_instance_method(_buddy.minterms_of_end)
    done = _swig_new_instance_method(_buddy.minterms_of_done)
    __ref__ = _swig_new_instance_method(_buddy.minterms_of___ref__)
    __iter__ = _swig_new_instance_method(_buddy.minterms_of___iter__)

# Register minterms_of in _buddy:
_buddy.minterms_of_swigregister(minterms_of)

