# This file was automatically generated by SWIG (http://www.swig.org).
# Version 3.0.10
#
# 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
if _swig_python_version_info >= (2, 7, 0):
    def swig_import_helper():
        import importlib
        pkg = __name__.rpartition('.')[0]
        mname = '.'.join((pkg, '_bdd')).lstrip('.')
        try:
            return importlib.import_module(mname)
        except ImportError:
            return importlib.import_module('_bdd')
    _bdd = swig_import_helper()
    del swig_import_helper
elif _swig_python_version_info >= (2, 6, 0):
    def swig_import_helper():
        from os.path import dirname
        import imp
        fp = None
        try:
            fp, pathname, description = imp.find_module('_bdd', [dirname(__file__)])
        except ImportError:
            import _bdd
            return _bdd
        if fp is not None:
            try:
                _mod = imp.load_module('_bdd', fp, pathname, description)
            finally:
                fp.close()
            return _mod
    _bdd = swig_import_helper()
    del swig_import_helper
else:
    import _bdd
del _swig_python_version_info
try:
    _swig_property = property
except NameError:
    pass  # Python < 2.2 doesn't have 'property'.

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

def _swig_setattr_nondynamic(self, class_type, name, value, static=1):
    if (name == "thisown"):
        return self.this.own(value)
    if (name == "this"):
        if type(value).__name__ == 'SwigPyObject':
            self.__dict__[name] = value
            return
    method = class_type.__swig_setmethods__.get(name, None)
    if method:
        return method(self, value)
    if (not static):
        if _newclass:
            object.__setattr__(self, name, value)
        else:
            self.__dict__[name] = value
    else:
        raise AttributeError("You cannot add attributes to %s" % self)


def _swig_setattr(self, class_type, name, value):
    return _swig_setattr_nondynamic(self, class_type, name, value, 0)


def _swig_getattr(self, class_type, name):
    if (name == "thisown"):
        return self.this.own()
    method = class_type.__swig_getmethods__.get(name, None)
    if method:
        return method(self)
    raise AttributeError("'%s' object has no attribute '%s'" % (class_type.__name__, name))


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,)

try:
    _object = object
    _newclass = 1
except __builtin__.Exception:
    class _object:
        pass
    _newclass = 0

PRIuPTR = _bdd.PRIuPTR
PRIdPTR = _bdd.PRIdPTR
LLU = _bdd.LLU
LLO = _bdd.LLO
LLX = _bdd.LLX
false = _bdd.false
true = _bdd.true
OUTCOME_GENERIC_ERROR = _bdd.OUTCOME_GENERIC_ERROR
OUTCOME_PARSER_ERROR = _bdd.OUTCOME_PARSER_ERROR
OUTCOME_SYNTAX_ERROR = _bdd.OUTCOME_SYNTAX_ERROR
OUTCOME_FILE_ERROR = _bdd.OUTCOME_FILE_ERROR
OUTCOME_SUCCESS_REQUIRED_HELP = _bdd.OUTCOME_SUCCESS_REQUIRED_HELP
OUTCOME_SUCCESS = _bdd.OUTCOME_SUCCESS
TRANS_IMAGE_FORWARD_STATE = _bdd.TRANS_IMAGE_FORWARD_STATE
TRANS_IMAGE_FORWARD_STATE_INPUT = _bdd.TRANS_IMAGE_FORWARD_STATE_INPUT
TRANS_IMAGE_BACKWARD_STATE = _bdd.TRANS_IMAGE_BACKWARD_STATE
TRANS_IMAGE_BACKWARD_STATE_INPUT = _bdd.TRANS_IMAGE_BACKWARD_STATE_INPUT

def BddTrans_create(dd_manager: 'DdManager *', clusters_bdd: 'ClusterList_ptr const', state_vars_cube: 'bdd_ptr', input_vars_cube: 'bdd_ptr', next_state_vars_cube: 'bdd_ptr', trans_type: 'TransType const', cl_options: 'ClusterOptions_ptr const') -> "BddTrans_ptr":
    """BddTrans_create(DdManager * dd_manager, ClusterList_ptr const clusters_bdd, bdd_ptr state_vars_cube, bdd_ptr input_vars_cube, bdd_ptr next_state_vars_cube, TransType const trans_type, ClusterOptions_ptr const cl_options) -> BddTrans_ptr"""
    return _bdd.BddTrans_create(dd_manager, clusters_bdd, state_vars_cube, input_vars_cube, next_state_vars_cube, trans_type, cl_options)

def BddTrans_generic_create(transition: 'void *', copy: 'void *(*)(void *)', destroy: 'void (*)(void *)', compute_image: 'bdd_ptr (*)(void *,bdd_ptr,TransImageKind)', compute_k_image: 'bdd_ptr (*)(void *,bdd_ptr,int,TransImageKind)', get_monolithic_bdd: 'bdd_ptr (*)(void *)', synchronous_product: 'void (*)(void *,void *const)', print_short_info: 'void (*)(void *,FILE *)') -> "BddTrans_ptr":
    """BddTrans_generic_create(void * transition, void *(*)(void *) copy, void (*)(void *) destroy, bdd_ptr (*)(void *,bdd_ptr,TransImageKind) compute_image, bdd_ptr (*)(void *,bdd_ptr,int,TransImageKind) compute_k_image, bdd_ptr (*)(void *) get_monolithic_bdd, void (*)(void *,void *const) synchronous_product, void (*)(void *,FILE *) print_short_info) -> BddTrans_ptr"""
    return _bdd.BddTrans_generic_create(transition, copy, destroy, compute_image, compute_k_image, get_monolithic_bdd, synchronous_product, print_short_info)

def BddTrans_apply_synchronous_product(arg1: 'BddTrans_ptr', other: 'BddTrans_ptr const') -> "void":
    """BddTrans_apply_synchronous_product(BddTrans_ptr arg1, BddTrans_ptr const other)"""
    return _bdd.BddTrans_apply_synchronous_product(arg1, other)

def BddTrans_get_monolithic_bdd(arg1: 'BddTrans_ptr const') -> "bdd_ptr":
    """BddTrans_get_monolithic_bdd(BddTrans_ptr const arg1) -> bdd_ptr"""
    return _bdd.BddTrans_get_monolithic_bdd(arg1)

def BddTrans_get_forward_image_state(arg1: 'BddTrans_ptr const', s: 'bdd_ptr') -> "bdd_ptr":
    """BddTrans_get_forward_image_state(BddTrans_ptr const arg1, bdd_ptr s) -> bdd_ptr"""
    return _bdd.BddTrans_get_forward_image_state(arg1, s)

def BddTrans_get_forward_image_state_input(arg1: 'BddTrans_ptr const', s: 'bdd_ptr') -> "bdd_ptr":
    """BddTrans_get_forward_image_state_input(BddTrans_ptr const arg1, bdd_ptr s) -> bdd_ptr"""
    return _bdd.BddTrans_get_forward_image_state_input(arg1, s)

def BddTrans_get_backward_image_state(arg1: 'BddTrans_ptr const', s: 'bdd_ptr') -> "bdd_ptr":
    """BddTrans_get_backward_image_state(BddTrans_ptr const arg1, bdd_ptr s) -> bdd_ptr"""
    return _bdd.BddTrans_get_backward_image_state(arg1, s)

def BddTrans_get_backward_image_state_input(arg1: 'BddTrans_ptr const', s: 'bdd_ptr') -> "bdd_ptr":
    """BddTrans_get_backward_image_state_input(BddTrans_ptr const arg1, bdd_ptr s) -> bdd_ptr"""
    return _bdd.BddTrans_get_backward_image_state_input(arg1, s)

def BddTrans_get_k_forward_image_state(arg1: 'BddTrans_ptr const', s: 'bdd_ptr', k: 'int') -> "bdd_ptr":
    """BddTrans_get_k_forward_image_state(BddTrans_ptr const arg1, bdd_ptr s, int k) -> bdd_ptr"""
    return _bdd.BddTrans_get_k_forward_image_state(arg1, s, k)

def BddTrans_get_k_forward_image_state_input(arg1: 'BddTrans_ptr const', s: 'bdd_ptr', k: 'int') -> "bdd_ptr":
    """BddTrans_get_k_forward_image_state_input(BddTrans_ptr const arg1, bdd_ptr s, int k) -> bdd_ptr"""
    return _bdd.BddTrans_get_k_forward_image_state_input(arg1, s, k)

def BddTrans_get_k_backward_image_state(arg1: 'BddTrans_ptr const', s: 'bdd_ptr', k: 'int') -> "bdd_ptr":
    """BddTrans_get_k_backward_image_state(BddTrans_ptr const arg1, bdd_ptr s, int k) -> bdd_ptr"""
    return _bdd.BddTrans_get_k_backward_image_state(arg1, s, k)

def BddTrans_get_k_backward_image_state_input(arg1: 'BddTrans_ptr const', s: 'bdd_ptr', k: 'int') -> "bdd_ptr":
    """BddTrans_get_k_backward_image_state_input(BddTrans_ptr const arg1, bdd_ptr s, int k) -> bdd_ptr"""
    return _bdd.BddTrans_get_k_backward_image_state_input(arg1, s, k)

def BddTrans_print_short_info(arg1: 'BddTrans_ptr const', file: 'FILE *') -> "void":
    """BddTrans_print_short_info(BddTrans_ptr const arg1, FILE * file)"""
    return _bdd.BddTrans_print_short_info(arg1, file)

def Cluster_create(dd: 'DdManager *') -> "Cluster_ptr":
    """Cluster_create(DdManager * dd) -> Cluster_ptr"""
    return _bdd.Cluster_create(dd)

def Cluster_is_equal(arg1: 'Cluster_ptr const', other: 'Cluster_ptr const') -> "boolean":
    """Cluster_is_equal(Cluster_ptr const arg1, Cluster_ptr const other) -> boolean"""
    return _bdd.Cluster_is_equal(arg1, other)

def Cluster_get_trans(arg1: 'Cluster_ptr const') -> "bdd_ptr":
    """Cluster_get_trans(Cluster_ptr const arg1) -> bdd_ptr"""
    return _bdd.Cluster_get_trans(arg1)

def Cluster_set_trans(arg1: 'Cluster_ptr', dd: 'DdManager *', current: 'bdd_ptr') -> "void":
    """Cluster_set_trans(Cluster_ptr arg1, DdManager * dd, bdd_ptr current)"""
    return _bdd.Cluster_set_trans(arg1, dd, current)

def Cluster_get_quantification_state_input(arg1: 'Cluster_ptr const') -> "bdd_ptr":
    """Cluster_get_quantification_state_input(Cluster_ptr const arg1) -> bdd_ptr"""
    return _bdd.Cluster_get_quantification_state_input(arg1)

def Cluster_set_quantification_state_input(arg1: 'Cluster_ptr', dd: 'DdManager *', new_val: 'bdd_ptr') -> "void":
    """Cluster_set_quantification_state_input(Cluster_ptr arg1, DdManager * dd, bdd_ptr new_val)"""
    return _bdd.Cluster_set_quantification_state_input(arg1, dd, new_val)

def Cluster_get_quantification_state(arg1: 'Cluster_ptr const') -> "bdd_ptr":
    """Cluster_get_quantification_state(Cluster_ptr const arg1) -> bdd_ptr"""
    return _bdd.Cluster_get_quantification_state(arg1)

def Cluster_set_quantification_state(arg1: 'Cluster_ptr', dd: 'DdManager *', new_val: 'bdd_ptr') -> "void":
    """Cluster_set_quantification_state(Cluster_ptr arg1, DdManager * dd, bdd_ptr new_val)"""
    return _bdd.Cluster_set_quantification_state(arg1, dd, new_val)

def ClusterIwls95_create(dd: 'DdManager *', trans_options: 'ClusterOptions_ptr const', v_c: 'double const', w_c: 'double const', x_c: 'double const', y_c: 'double const', z_c: 'double const', min_c: 'double const', max_c: 'double const') -> "ClusterIwls95_ptr":
    """ClusterIwls95_create(DdManager * dd, ClusterOptions_ptr const trans_options, double const v_c, double const w_c, double const x_c, double const y_c, double const z_c, double const min_c, double const max_c) -> ClusterIwls95_ptr"""
    return _bdd.ClusterIwls95_create(dd, trans_options, v_c, w_c, x_c, y_c, z_c, min_c, max_c)

def ClusterIwls95_get_benefit(arg1: 'ClusterIwls95_ptr const') -> "double":
    """ClusterIwls95_get_benefit(ClusterIwls95_ptr const arg1) -> double"""
    return _bdd.ClusterIwls95_get_benefit(arg1)

def ClusterList_create(dd: 'DdManager *') -> "ClusterList_ptr":
    """ClusterList_create(DdManager * dd) -> ClusterList_ptr"""
    return _bdd.ClusterList_create(dd)

def ClusterList_destroy(arg1: 'ClusterList_ptr') -> "void":
    """ClusterList_destroy(ClusterList_ptr arg1)"""
    return _bdd.ClusterList_destroy(arg1)

def ClusterList_copy(arg1: 'ClusterList_ptr const') -> "ClusterList_ptr":
    """ClusterList_copy(ClusterList_ptr const arg1) -> ClusterList_ptr"""
    return _bdd.ClusterList_copy(arg1)

def ClusterList_begin(arg1: 'ClusterList_ptr const') -> "ClusterListIterator_ptr":
    """ClusterList_begin(ClusterList_ptr const arg1) -> ClusterListIterator_ptr"""
    return _bdd.ClusterList_begin(arg1)

def ClusterList_get_cluster(arg1: 'ClusterList_ptr const', iter: 'ClusterListIterator_ptr const') -> "Cluster_ptr":
    """ClusterList_get_cluster(ClusterList_ptr const arg1, ClusterListIterator_ptr const iter) -> Cluster_ptr"""
    return _bdd.ClusterList_get_cluster(arg1, iter)

def ClusterList_set_cluster(arg1: 'ClusterList_ptr', iter: 'ClusterListIterator_ptr const', cluster: 'Cluster_ptr') -> "void":
    """ClusterList_set_cluster(ClusterList_ptr arg1, ClusterListIterator_ptr const iter, Cluster_ptr cluster)"""
    return _bdd.ClusterList_set_cluster(arg1, iter, cluster)

def ClusterList_length(arg1: 'ClusterList_ptr const') -> "int":
    """ClusterList_length(ClusterList_ptr const arg1) -> int"""
    return _bdd.ClusterList_length(arg1)

def ClusterList_prepend_cluster(arg1: 'ClusterList_ptr', cluster: 'Cluster_ptr') -> "void":
    """ClusterList_prepend_cluster(ClusterList_ptr arg1, Cluster_ptr cluster)"""
    return _bdd.ClusterList_prepend_cluster(arg1, cluster)

def ClusterList_append_cluster(arg1: 'ClusterList_ptr', cluster: 'Cluster_ptr') -> "void":
    """ClusterList_append_cluster(ClusterList_ptr arg1, Cluster_ptr cluster)"""
    return _bdd.ClusterList_append_cluster(arg1, cluster)

def ClusterListIterator_next(arg1: 'ClusterListIterator_ptr const') -> "ClusterListIterator_ptr":
    """ClusterListIterator_next(ClusterListIterator_ptr const arg1) -> ClusterListIterator_ptr"""
    return _bdd.ClusterListIterator_next(arg1)

def ClusterListIterator_is_end(arg1: 'ClusterListIterator_ptr const') -> "boolean":
    """ClusterListIterator_is_end(ClusterListIterator_ptr const arg1) -> boolean"""
    return _bdd.ClusterListIterator_is_end(arg1)

def ClusterList_reverse(arg1: 'ClusterList_ptr') -> "void":
    """ClusterList_reverse(ClusterList_ptr arg1)"""
    return _bdd.ClusterList_reverse(arg1)

def ClusterList_remove_cluster(arg1: 'ClusterList_ptr', cluster: 'Cluster_ptr') -> "int":
    """ClusterList_remove_cluster(ClusterList_ptr arg1, Cluster_ptr cluster) -> int"""
    return _bdd.ClusterList_remove_cluster(arg1, cluster)

def ClusterList_apply_monolithic(arg1: 'ClusterList_ptr const') -> "ClusterList_ptr":
    """ClusterList_apply_monolithic(ClusterList_ptr const arg1) -> ClusterList_ptr"""
    return _bdd.ClusterList_apply_monolithic(arg1)

def ClusterList_apply_threshold(arg1: 'ClusterList_ptr const', cl_options: 'ClusterOptions_ptr const') -> "ClusterList_ptr":
    """ClusterList_apply_threshold(ClusterList_ptr const arg1, ClusterOptions_ptr const cl_options) -> ClusterList_ptr"""
    return _bdd.ClusterList_apply_threshold(arg1, cl_options)

def ClusterList_apply_iwls95_partition(arg1: 'ClusterList_ptr const', state_vars_cube: 'bdd_ptr', input_vars_cube: 'bdd_ptr', next_state_vars_cube: 'bdd_ptr', cl_options: 'ClusterOptions_ptr const') -> "ClusterList_ptr":
    """ClusterList_apply_iwls95_partition(ClusterList_ptr const arg1, bdd_ptr state_vars_cube, bdd_ptr input_vars_cube, bdd_ptr next_state_vars_cube, ClusterOptions_ptr const cl_options) -> ClusterList_ptr"""
    return _bdd.ClusterList_apply_iwls95_partition(arg1, state_vars_cube, input_vars_cube, next_state_vars_cube, cl_options)

def ClusterList_apply_synchronous_product(arg1: 'ClusterList_ptr', other: 'ClusterList_ptr const') -> "void":
    """ClusterList_apply_synchronous_product(ClusterList_ptr arg1, ClusterList_ptr const other)"""
    return _bdd.ClusterList_apply_synchronous_product(arg1, other)

def ClusterList_get_monolithic_bdd(arg1: 'ClusterList_ptr const') -> "bdd_ptr":
    """ClusterList_get_monolithic_bdd(ClusterList_ptr const arg1) -> bdd_ptr"""
    return _bdd.ClusterList_get_monolithic_bdd(arg1)

def ClusterList_get_clusters_cube(arg1: 'ClusterList_ptr const') -> "bdd_ptr":
    """ClusterList_get_clusters_cube(ClusterList_ptr const arg1) -> bdd_ptr"""
    return _bdd.ClusterList_get_clusters_cube(arg1)

def ClusterList_build_schedule(arg1: 'ClusterList_ptr', state_vars_cube: 'bdd_ptr', input_vars_cube: 'bdd_ptr') -> "void":
    """ClusterList_build_schedule(ClusterList_ptr arg1, bdd_ptr state_vars_cube, bdd_ptr input_vars_cube)"""
    return _bdd.ClusterList_build_schedule(arg1, state_vars_cube, input_vars_cube)

def ClusterList_get_image_state(arg1: 'ClusterList_ptr const', s: 'bdd_ptr') -> "bdd_ptr":
    """ClusterList_get_image_state(ClusterList_ptr const arg1, bdd_ptr s) -> bdd_ptr"""
    return _bdd.ClusterList_get_image_state(arg1, s)

def ClusterList_get_image_state_input(arg1: 'ClusterList_ptr const', s: 'bdd_ptr') -> "bdd_ptr":
    """ClusterList_get_image_state_input(ClusterList_ptr const arg1, bdd_ptr s) -> bdd_ptr"""
    return _bdd.ClusterList_get_image_state_input(arg1, s)

def ClusterList_get_k_image_state(arg1: 'ClusterList_ptr const', s: 'bdd_ptr', k: 'int') -> "bdd_ptr":
    """ClusterList_get_k_image_state(ClusterList_ptr const arg1, bdd_ptr s, int k) -> bdd_ptr"""
    return _bdd.ClusterList_get_k_image_state(arg1, s, k)

def ClusterList_get_k_image_state_input(arg1: 'ClusterList_ptr const', s: 'bdd_ptr', k: 'int') -> "bdd_ptr":
    """ClusterList_get_k_image_state_input(ClusterList_ptr const arg1, bdd_ptr s, int k) -> bdd_ptr"""
    return _bdd.ClusterList_get_k_image_state_input(arg1, s, k)

def ClusterList_print_short_info(arg1: 'ClusterList_ptr const', file: 'FILE *') -> "void":
    """ClusterList_print_short_info(ClusterList_ptr const arg1, FILE * file)"""
    return _bdd.ClusterList_print_short_info(arg1, file)

def ClusterList_check_equality(arg1: 'ClusterList_ptr const', other: 'ClusterList_ptr const') -> "boolean":
    """ClusterList_check_equality(ClusterList_ptr const arg1, ClusterList_ptr const other) -> boolean"""
    return _bdd.ClusterList_check_equality(arg1, other)

def ClusterList_check_schedule(arg1: 'ClusterList_ptr const') -> "boolean":
    """ClusterList_check_schedule(ClusterList_ptr const arg1) -> boolean"""
    return _bdd.ClusterList_check_schedule(arg1)

def ClusterOptions_create(options: 'OptsHandler_ptr') -> "ClusterOptions_ptr":
    """ClusterOptions_create(OptsHandler_ptr options) -> ClusterOptions_ptr"""
    return _bdd.ClusterOptions_create(options)

def ClusterOptions_destroy(arg1: 'ClusterOptions_ptr') -> "void":
    """ClusterOptions_destroy(ClusterOptions_ptr arg1)"""
    return _bdd.ClusterOptions_destroy(arg1)

def ClusterOptions_get_threshold(arg1: 'ClusterOptions_ptr const') -> "int":
    """ClusterOptions_get_threshold(ClusterOptions_ptr const arg1) -> int"""
    return _bdd.ClusterOptions_get_threshold(arg1)

def ClusterOptions_is_affinity(arg1: 'ClusterOptions_ptr const') -> "boolean":
    """ClusterOptions_is_affinity(ClusterOptions_ptr const arg1) -> boolean"""
    return _bdd.ClusterOptions_is_affinity(arg1)

def ClusterOptions_clusters_appended(arg1: 'ClusterOptions_ptr const') -> "boolean":
    """ClusterOptions_clusters_appended(ClusterOptions_ptr const arg1) -> boolean"""
    return _bdd.ClusterOptions_clusters_appended(arg1)

def ClusterOptions_is_iwls95_preorder(arg1: 'ClusterOptions_ptr const') -> "boolean":
    """ClusterOptions_is_iwls95_preorder(ClusterOptions_ptr const arg1) -> boolean"""
    return _bdd.ClusterOptions_is_iwls95_preorder(arg1)

def ClusterOptions_get_cluster_size(arg1: 'ClusterOptions_ptr const') -> "int":
    """ClusterOptions_get_cluster_size(ClusterOptions_ptr const arg1) -> int"""
    return _bdd.ClusterOptions_get_cluster_size(arg1)

def ClusterOptions_get_w1(arg1: 'ClusterOptions_ptr const') -> "int":
    """ClusterOptions_get_w1(ClusterOptions_ptr const arg1) -> int"""
    return _bdd.ClusterOptions_get_w1(arg1)

def ClusterOptions_get_w2(arg1: 'ClusterOptions_ptr const') -> "int":
    """ClusterOptions_get_w2(ClusterOptions_ptr const arg1) -> int"""
    return _bdd.ClusterOptions_get_w2(arg1)

def ClusterOptions_get_w3(arg1: 'ClusterOptions_ptr const') -> "int":
    """ClusterOptions_get_w3(ClusterOptions_ptr const arg1) -> int"""
    return _bdd.ClusterOptions_get_w3(arg1)

def ClusterOptions_get_w4(arg1: 'ClusterOptions_ptr const') -> "int":
    """ClusterOptions_get_w4(ClusterOptions_ptr const arg1) -> int"""
    return _bdd.ClusterOptions_get_w4(arg1)

def ClusterOptions_print(arg1: 'ClusterOptions_ptr const', file: 'FILE *') -> "void":
    """ClusterOptions_print(ClusterOptions_ptr const arg1, FILE * file)"""
    return _bdd.ClusterOptions_print(arg1, file)

def BddTrans_copy(trans: 'BddTrans_ptr const') -> "BddTrans_ptr":
    """BddTrans_copy(BddTrans_ptr const trans) -> BddTrans_ptr"""
    return _bdd.BddTrans_copy(trans)

def BddTrans_free(trans: 'BddTrans_ptr') -> "void":
    """BddTrans_free(BddTrans_ptr trans)"""
    return _bdd.BddTrans_free(trans)
# This file is compatible with both classic and new-style classes.


