# This file was automatically generated by SWIG (https://www.swig.org).
# Version 4.4.1
#
# 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 _pyrogen_swig
else:
    import _pyrogen_swig

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

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(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__ = _pyrogen_swig.delete_SwigPyIterator

    def value(self):
        return _pyrogen_swig.SwigPyIterator_value(self)

    def incr(self, n=1):
        return _pyrogen_swig.SwigPyIterator_incr(self, n)

    def decr(self, n=1):
        return _pyrogen_swig.SwigPyIterator_decr(self, n)

    def distance(self, x):
        return _pyrogen_swig.SwigPyIterator_distance(self, x)

    def equal(self, x):
        return _pyrogen_swig.SwigPyIterator_equal(self, x)

    def copy(self):
        return _pyrogen_swig.SwigPyIterator_copy(self)

    def next(self):
        return _pyrogen_swig.SwigPyIterator_next(self)

    def __next__(self):
        return _pyrogen_swig.SwigPyIterator___next__(self)

    def previous(self):
        return _pyrogen_swig.SwigPyIterator_previous(self)

    def advance(self, n):
        return _pyrogen_swig.SwigPyIterator_advance(self, n)

    def __eq__(self, x):
        return _pyrogen_swig.SwigPyIterator___eq__(self, x)

    def __ne__(self, x):
        return _pyrogen_swig.SwigPyIterator___ne__(self, x)

    def __iadd__(self, n):
        return _pyrogen_swig.SwigPyIterator___iadd__(self, n)

    def __isub__(self, n):
        return _pyrogen_swig.SwigPyIterator___isub__(self, n)

    def __add__(self, n):
        return _pyrogen_swig.SwigPyIterator___add__(self, n)

    def __sub__(self, *args):
        return _pyrogen_swig.SwigPyIterator___sub__(self, *args)
    def __iter__(self):
        return self

# Register SwigPyIterator in _pyrogen_swig:
_pyrogen_swig.SwigPyIterator_swigregister(SwigPyIterator)
class vectori(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def iterator(self):
        return _pyrogen_swig.vectori_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __nonzero__(self):
        return _pyrogen_swig.vectori___nonzero__(self)

    def __bool__(self):
        return _pyrogen_swig.vectori___bool__(self)

    def __len__(self):
        return _pyrogen_swig.vectori___len__(self)

    def __getslice__(self, i, j):
        return _pyrogen_swig.vectori___getslice__(self, i, j)

    def __setslice__(self, *args):
        return _pyrogen_swig.vectori___setslice__(self, *args)

    def __delslice__(self, i, j):
        return _pyrogen_swig.vectori___delslice__(self, i, j)

    def __delitem__(self, *args):
        return _pyrogen_swig.vectori___delitem__(self, *args)

    def __getitem__(self, *args):
        return _pyrogen_swig.vectori___getitem__(self, *args)

    def __setitem__(self, *args):
        return _pyrogen_swig.vectori___setitem__(self, *args)

    def pop(self):
        return _pyrogen_swig.vectori_pop(self)

    def append(self, x):
        return _pyrogen_swig.vectori_append(self, x)

    def empty(self):
        return _pyrogen_swig.vectori_empty(self)

    def size(self):
        return _pyrogen_swig.vectori_size(self)

    def swap(self, v):
        return _pyrogen_swig.vectori_swap(self, v)

    def begin(self):
        return _pyrogen_swig.vectori_begin(self)

    def end(self):
        return _pyrogen_swig.vectori_end(self)

    def rbegin(self):
        return _pyrogen_swig.vectori_rbegin(self)

    def rend(self):
        return _pyrogen_swig.vectori_rend(self)

    def clear(self):
        return _pyrogen_swig.vectori_clear(self)

    def get_allocator(self):
        return _pyrogen_swig.vectori_get_allocator(self)

    def pop_back(self):
        return _pyrogen_swig.vectori_pop_back(self)

    def erase(self, *args):
        return _pyrogen_swig.vectori_erase(self, *args)

    def __init__(self, *args):
        _pyrogen_swig.vectori_swiginit(self, _pyrogen_swig.new_vectori(*args))

    def push_back(self, x):
        return _pyrogen_swig.vectori_push_back(self, x)

    def front(self):
        return _pyrogen_swig.vectori_front(self)

    def back(self):
        return _pyrogen_swig.vectori_back(self)

    def assign(self, n, x):
        return _pyrogen_swig.vectori_assign(self, n, x)

    def resize(self, *args):
        return _pyrogen_swig.vectori_resize(self, *args)

    def insert(self, *args):
        return _pyrogen_swig.vectori_insert(self, *args)

    def reserve(self, n):
        return _pyrogen_swig.vectori_reserve(self, n)

    def capacity(self):
        return _pyrogen_swig.vectori_capacity(self)
    __swig_destroy__ = _pyrogen_swig.delete_vectori

# Register vectori in _pyrogen_swig:
_pyrogen_swig.vectori_swigregister(vectori)
class vectors(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def iterator(self):
        return _pyrogen_swig.vectors_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __nonzero__(self):
        return _pyrogen_swig.vectors___nonzero__(self)

    def __bool__(self):
        return _pyrogen_swig.vectors___bool__(self)

    def __len__(self):
        return _pyrogen_swig.vectors___len__(self)

    def __getslice__(self, i, j):
        return _pyrogen_swig.vectors___getslice__(self, i, j)

    def __setslice__(self, *args):
        return _pyrogen_swig.vectors___setslice__(self, *args)

    def __delslice__(self, i, j):
        return _pyrogen_swig.vectors___delslice__(self, i, j)

    def __delitem__(self, *args):
        return _pyrogen_swig.vectors___delitem__(self, *args)

    def __getitem__(self, *args):
        return _pyrogen_swig.vectors___getitem__(self, *args)

    def __setitem__(self, *args):
        return _pyrogen_swig.vectors___setitem__(self, *args)

    def pop(self):
        return _pyrogen_swig.vectors_pop(self)

    def append(self, x):
        return _pyrogen_swig.vectors_append(self, x)

    def empty(self):
        return _pyrogen_swig.vectors_empty(self)

    def size(self):
        return _pyrogen_swig.vectors_size(self)

    def swap(self, v):
        return _pyrogen_swig.vectors_swap(self, v)

    def begin(self):
        return _pyrogen_swig.vectors_begin(self)

    def end(self):
        return _pyrogen_swig.vectors_end(self)

    def rbegin(self):
        return _pyrogen_swig.vectors_rbegin(self)

    def rend(self):
        return _pyrogen_swig.vectors_rend(self)

    def clear(self):
        return _pyrogen_swig.vectors_clear(self)

    def get_allocator(self):
        return _pyrogen_swig.vectors_get_allocator(self)

    def pop_back(self):
        return _pyrogen_swig.vectors_pop_back(self)

    def erase(self, *args):
        return _pyrogen_swig.vectors_erase(self, *args)

    def __init__(self, *args):
        _pyrogen_swig.vectors_swiginit(self, _pyrogen_swig.new_vectors(*args))

    def push_back(self, x):
        return _pyrogen_swig.vectors_push_back(self, x)

    def front(self):
        return _pyrogen_swig.vectors_front(self)

    def back(self):
        return _pyrogen_swig.vectors_back(self)

    def assign(self, n, x):
        return _pyrogen_swig.vectors_assign(self, n, x)

    def resize(self, *args):
        return _pyrogen_swig.vectors_resize(self, *args)

    def insert(self, *args):
        return _pyrogen_swig.vectors_insert(self, *args)

    def reserve(self, n):
        return _pyrogen_swig.vectors_reserve(self, n)

    def capacity(self):
        return _pyrogen_swig.vectors_capacity(self)
    __swig_destroy__ = _pyrogen_swig.delete_vectors

# Register vectors in _pyrogen_swig:
_pyrogen_swig.vectors_swigregister(vectors)
class quartet_set(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):
        _pyrogen_swig.quartet_set_swiginit(self, _pyrogen_swig.new_quartet_set(*args))
    idx = property(_pyrogen_swig.quartet_set_idx_get, _pyrogen_swig.quartet_set_idx_set)
    __swig_destroy__ = _pyrogen_swig.delete_quartet_set

# Register quartet_set in _pyrogen_swig:
_pyrogen_swig.quartet_set_swigregister(quartet_set)
class indexed_name_and_rank_t(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    atom_index = property(_pyrogen_swig.indexed_name_and_rank_t_atom_index_get, _pyrogen_swig.indexed_name_and_rank_t_atom_index_set)
    cip_rank = property(_pyrogen_swig.indexed_name_and_rank_t_cip_rank_get, _pyrogen_swig.indexed_name_and_rank_t_cip_rank_set)
    atom_name = property(_pyrogen_swig.indexed_name_and_rank_t_atom_name_get, _pyrogen_swig.indexed_name_and_rank_t_atom_name_set)

    def __init__(self, i, r, n):
        _pyrogen_swig.indexed_name_and_rank_t_swiginit(self, _pyrogen_swig.new_indexed_name_and_rank_t(i, r, n))

    def __lt__(self, o):
        return _pyrogen_swig.indexed_name_and_rank_t___lt__(self, o)
    __swig_destroy__ = _pyrogen_swig.delete_indexed_name_and_rank_t

# Register indexed_name_and_rank_t in _pyrogen_swig:
_pyrogen_swig.indexed_name_and_rank_t_swigregister(indexed_name_and_rank_t)

def get_volume_sign_from_coordinates(mol, idx_chiral_centre_atom, neighb_names_and_ranks):
    return _pyrogen_swig.get_volume_sign_from_coordinates(mol, idx_chiral_centre_atom, neighb_names_and_ranks)

def mogul_out_to_mmcif_dict(mogul_file_name, comp_id, compound_name, atom_names, n_atoms_all, n_atoms_non_hydrogen, bond_order_restraints_py, mmcif_out_file_name, quartet_planes, quartet_hydrogen_planes):
    return _pyrogen_swig.mogul_out_to_mmcif_dict(mogul_file_name, comp_id, compound_name, atom_names, n_atoms_all, n_atoms_non_hydrogen, bond_order_restraints_py, mmcif_out_file_name, quartet_planes, quartet_hydrogen_planes)

def mogul_out_to_mmcif_dict_by_mol(mogul_file_name, comp_id, compound_name, rdkit_mol, bond_order_restraints_py, mmcif_out_file_name, quartet_planes, quartet_hydrogen_planes, replace_with_mmff_b_a_restraints=True):
    return _pyrogen_swig.mogul_out_to_mmcif_dict_by_mol(mogul_file_name, comp_id, compound_name, rdkit_mol, bond_order_restraints_py, mmcif_out_file_name, quartet_planes, quartet_hydrogen_planes, replace_with_mmff_b_a_restraints)

def mmcif_dict_from_mol(comp_id, compound_name, rdkit_mol, do_minimization, mmcif_out_file_name, quartet_planes, quartet_hydrogen_planes, replace_with_mmff_b_a_restraints=True):
    return _pyrogen_swig.mmcif_dict_from_mol(comp_id, compound_name, rdkit_mol, do_minimization, mmcif_out_file_name, quartet_planes, quartet_hydrogen_planes, replace_with_mmff_b_a_restraints)

def mmcif_dict_from_mol_using_energy_lib(*args):
    return _pyrogen_swig.mmcif_dict_from_mol_using_energy_lib(*args)

def regularize(rdkit_mol, restraints_py, res_name):
    return _pyrogen_swig.regularize(rdkit_mol, restraints_py, res_name)

def regularize_and_write_pdb(rdkit_mol, restraints_py, res_name, pdb_file_name):
    return _pyrogen_swig.regularize_and_write_pdb(rdkit_mol, restraints_py, res_name, pdb_file_name)

def write_pdb_from_mol(rdkit_mol_py, res_name, file_name):
    return _pyrogen_swig.write_pdb_from_mol(rdkit_mol_py, res_name, file_name)

def types_from_mmcif_dictionary(file_name):
    return _pyrogen_swig.types_from_mmcif_dictionary(file_name)

def test_tuple():
    return _pyrogen_swig.test_tuple()

def match_restraints_to_dictionaries(restraints_in, template_comp_id_list, template_cif_dict_file_names):
    return _pyrogen_swig.match_restraints_to_dictionaries(restraints_in, template_comp_id_list, template_cif_dict_file_names)

def write_restraints(*args):
    return _pyrogen_swig.write_restraints(*args)

